docs: правки по ревью (канонизация, destroy-семантика) + статус выполнения

This commit is contained in:
Repinoid
2026-09-24 10:52:51 +03:00
parent 1236c59e18
commit ed4493c0ee
2 changed files with 16 additions and 11 deletions
@@ -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`.
@@ -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