6.9 KiB
6.9 KiB
HAR-разбор: SNAT / ipSpace / модификации (dev)
Дата: 2026-09-22. Источник: /home/naeel/TF/tf_provider/HAR/*.har (записи UI на dev-стенде, 2026-09-20).
Релевантные файлы: edge_.har (SNAT/Edge), ipSpace0.har, org_enough_.har, org_not_enough_.har, org0.har.
Поток modify в реальном API
POST /api/v1/svc/instanceOperations—{"instanceUid":"...","operation":"modify"}→ возвращаетinstanceOperationUid.POST /api/v1/svc/instanceOperationCfsParams— по одному запросу на параметр:{"paramValue":"...","instanceOperationUid":"...","svcOperationCfsParamId":NNN}.GET /svc/instanceOperations/{id}/validate-cfsPOST /svc/instanceOperations/{id}/run- Поллинг
GET /svc/instanceOperations/{id}.
Найденные payload-и
| Операция | param id | код | значение из HAR |
|---|---|---|---|
| edge modify | 368 | needEnableAVI |
false / true |
| edge modify | 369 | virtualServicesCount |
1 / 2 |
| edge modify | 856 | qosProfile |
QoS-100Mbit |
| edge modify | 372 | ipSpaceName |
no-needed / "" |
| edge modify | 1112 | routedNetConfiguration |
{"mainDns":"81.22.46.22","secondDns":"185.247.187.77","ipAddrPool":"10.10.102.0/24"} |
| org modify | 662 | vIPConfigure |
[{"name":"internet-ipv4-v1","count":"3"}] |
Ответы на открытые вопросы
- Тумблера «Выделить VIP для SNAT» в API НЕТ. SNAT управляется целиком через
ipSpaceName(param 372). ЕгоvalueList(из метаданных в HAR):no-needed, internet-antiddos-v1, internet-no-antiddos-v1, ...— то естьno-neededэто легальное значение «SNAT не нужен».- Включить SNAT:
ipSpaceName = <имя ipSpace из org>. - Выключить:
ipSpaceName = "no-needed".
- Включить SNAT:
- ✅ Каноническое «SNAT выключен» =
no-needed. Подтверждено: в UI (Edge → Modify → поле «ip Space для VIP», параметрipSpaceName) текущее значение показывается какno-needed. Reverse для SNAT =modifyсipSpaceName="no-needed"→ delete SNAT-модификатора можно реализовать не как no-op. (""изipSpace0.har— не каноническое, а промежуточное состояние.) - 🟡 Де-аллокация IP в org — попытка зафиксирована (
org2.har, 2026-09-22): UI отправилmodifyсvIPConfigure=[{"name":"internet-ipv4-v1","count":"2"}](count уменьшен с 3 до 2). HTTP-ошибки НЕТ, но операция осталась вisPending:true— не выполнилась (согласуется с ограничением ниже). Вывод: payload де-аллокации = ТА ЖЕ структураvIPConfigure, только меньшеcount(не отдельная операция). Точная семантика «удалить совсем» (count=0или опустить элемент) не подтверждена. 🔴 Ограничение (подтверждено): уменьшить/удалить ipSpace вvcOrgнельзя, пока существуют дочерние инстансы (VDC/Edge/кластер). Следствие: reverse возможен только ПОСЛЕ уничтожения детей → порядок destroy критичен:кластер → SNAT-модификатор (no-needed) → org IP de-alloc → edge → vdc → org. Чтобы снять payload «удалить совсем», нужен чистый org без детей (или плановый teardown).
Побочные факты
- У
ipSpaceName(372) в API естьvalueList, но в нашем YAML его нет → проверить, тянет ли генераторvalueList(возможно, он динамический: имена ipSpace конкретной org). - Имя ipSpace в живом примере —
internet-ipv4-v1(не произвольное). qosProfile(856) UI всегда шлёт какQoS-100Mbit.routedNetConfigurationпередаётся JSON-строкой.- В состоянии org:
"vip":{"no-needed":{},"internet-ipv4-v1":{"count":4}}—no-neededфигурирует и в стейте.
Наблюдения на возможно сломанном Edge (2026-09-22, nsx_WZ03709-saas-wmfop5be)
⚠️ ВАЖНО: этот Edge, судя по всему, в сломанном состоянии (devops-проблема). Ошибки ниже НЕ считать универсальными правилами API — перепроверить на здоровом Edge.
modify14:40:52 → «ipSpace '' не найден на https://sandbox.nubes.ru» — при пустомipSpaceNameбэкенд отклонил запрос. ❓ Возможно, следствие сломанного Edge, не правило.modify14:43:44 → «Insufficient rule blocks» при попытке снять «Включить ALB». ❓ Возможно, застрявшие VS/SE Group, не правило.delete(2 раза) → FORBIDDEN «Cannot delete SE Group assignment … since there are Virtual Services». ❓ Возможно, застрявшие VS, не правило.
Что остаётся надёжным (из API-метаданных, НЕ из этих ошибок):
valueListуipSpaceNameсодержитno-needed(+ имена ipSpace) — из описания параметра.- UI показывает
no-neededкак текущее значение при выключенном SNAT.
Что ещё нужно выяснить из UI (открытые вопросы)
- 🔴 Де-аллокация IP в org — пока НЕ снять: UI/бэкенд не даёт удалить ipSpace, пока есть дочерние инстансы (подтверждено 2026-09-22). Нужен чистый org или плановый teardown. Гипотеза payload —
vIPConfigure=[](unverified). - ✅ Имя ipSpace — выбор ИЗ СПИСКА (подтверждено UI). Свободного ввода нет → список динамический (текущие ipSpace org +
no-needed). Следствие для провайдера:ip_space_nameв SNAT-модификаторе должен браться из computed-вывода org-модификатора, а не быть свободной строкой. - 🟡 Полное удаление ipSpace и поведение при destroy Edge с включённым SNAT — на будущее (блокировано п.1).