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