diff --git a/NOTES/20_prompts/prompt_for_opus_review_modify_resources_2026-09-24.md b/NOTES/20_prompts/prompt_for_opus_review_modify_resources_2026-09-24.md index 803a484..a6f0f70 100644 --- a/NOTES/20_prompts/prompt_for_opus_review_modify_resources_2026-09-24.md +++ b/NOTES/20_prompts/prompt_for_opus_review_modify_resources_2026-09-24.md @@ -808,15 +808,14 @@ func (m jsonNormalizePlanModifier) PlanModifyString(_ context.Context, req planm (только destroy) — **задокументировать** в описании атрибута. - Раздел 3 (риски живой платформы) без прогона не закрывается — остаётся открытым. -## Требуется сделать (по итогам ревью) — ЖДЁТ КОМАНДЫ +## Требуется сделать (по итогам ревью) — ВЫПОЛНЕНО (коммиты `ba6c4f5`, `4b497e6`, `1236c59`) -1. Заменить `JsonNormalize()` на канонизирующий plan-modifier (`parse → formatVipConfigure`) — закрывает - баг порядка ключей (в т.ч. для `jsonencode`). -2. Убрать запись `null` в `Required`-атрибуты (`vip_configure`, `ip_space_name`) — хранить конфиг-значение - либо сменить на `Optional`. -3. `Delete`: ошибки API → `AddError`; warning оставить только для отсутствующего родителя. -4. `setSnat`: вместо тихой подмены — валидация пустой строки. -5. Документировать: «снять всё» через `vip_configure` нельзя, только `destroy`. -6. Поправить `TestFormatVipConfigure_Canonical` (и добавить тест на канонизацию `jsonencode`-формы - `count,name`). -7. Требуется новый релиз провайдера (2.0.19) с повторной заливкой в `nubes-dev`. +1. ✅ Заменить `JsonNormalize()` на канонизирующий plan-modifier (`parse → formatVipConfigure`) — + закрывает баг порядка ключей (в т.ч. для `jsonencode`). +2. ✅ Убрать запись `null` в `Required`-атрибуты (`vip_configure`, `ip_space_name`) — при пустом live + сохраняется текущее значение state (проверка «что отправили — то и в state»). +3. ✅ `Delete`: ошибки API → `AddError`; warning оставлен только для отсутствующего родителя. +4. ✅ `setSnat`: вместо тихой подмены — валидация пустой строки. +5. ✅ Задокументировано: «снять всё» через `vip_configure` нельзя, только `destroy`. +6. ✅ Поправлены/добавлены тесты канонизации (`jsonencode`-форма, пробелы, `[{}]`, невалидный JSON). +7. ⏳ Новый релиз провайдера (2.0.19) с повторной заливкой в `nubes-dev`. diff --git a/docs/curated/modifiers/org_ip_and_snat.md b/docs/curated/modifiers/org_ip_and_snat.md index b79cee0..b3a0155 100644 --- a/docs/curated/modifiers/org_ip_and_snat.md +++ b/docs/curated/modifiers/org_ip_and_snat.md @@ -16,6 +16,12 @@ | `vip_configure` | string (JSON), обязательный | Массив аллокаций: `[{"name":"internet-ipv4-v1","count":"3"}]`. `count` — строка | | `keep_on_destroy` | bool, по умолчанию `false` | Не снимать квоту при `destroy` | +Порядок ключей и форматирование не важны — значение канонизируется при планировании +(важно потому, что `jsonencode` сортирует ключи по алфавиту). + +Снять аллокацию через `vip_configure` **нельзя** (пустой массив отклоняется): для этого удали ресурс — +тогда отправится обратный `modify` с `count = "0"`. + ```hcl resource "nubes_vc_org_ip_allocation" "this" { org_uid = var.org_uid