4.1 KiB
4.1 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:
- 🔴 Reverse для SNAT подтверждён: обратный payload = тот же
modifyсipSpaceName="no-needed"(UI реально так отправлял). Значит delete SNAT-модификатора можно реализовать не как no-op. - ❌ Де-аллокация IP в org (reverse) в HAR НЕ записана — есть только добавление. Payload удаления/уменьшения не подтверждён.
Побочные факты
- У
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фигурирует и в стейте.
Что ещё нужно выяснить из UI (открытые вопросы)
- 🔴 Де-аллокация IP в org: записать HAR при удалении ipSpace / уменьшении count → какой payload (count=0? опустить элемент? отдельная операция?).
- 🔴
no-neededvs"": в HAR оба варианта для выключенного SNAT. Какой канонический для «выключено»? - 🟡
valueListу ipSpaceName: динамический (текущие ipSpace org) или фиксированный? Проверить до/после добавления ipSpace. - 🟡 Имя ipSpace: свободный ввод или выбор из списка? Есть ли ограничения/уникальность?
- 🟡 Полное удаление ipSpace (не уменьшение count) и что UI делает при destroy Edge с включённым SNAT.