# Код-ревью: модификаторы (kind: modifier) в универсальном провайдере ## Контекст terraform-provider-nubes (universal). Операции с `kind: modifier` генерируются как отдельные TF-ресурсы и запускают операцию `modify`, передавая параметры **по коду** (`vIPConfigure`, `needEnableAVI`...), а не по числовому id. Актуальные модификаторы: - `nubes_vc_org_ip_space` (vc_org.ip_space, modify 207) — выделение внешних IP (`vIPConfigure`). - `nubes_vc_nsxt_network` (vc_nsxt.network, modify 111) — сеть/SNAT Edge. ## Ключевые файлы - генератор: `TOOLS/resource-generator/internal/templates/modifier.go`, `internal/loader/loader.go` (LoadSpecs → GenModifier), `internal/writers/writers.go` (WriteModifierResource) - рантайм: `provider/internal/resources_core/crud.go` (RunOperationByCodeWithTimeout) - клиент: `provider/internal/core/client.go` (RunInstanceOperationUniversalByCode) - сгенерированное: `generated/dev/go/19_vc_org_ip_space_modifier.go`, `22_vc_nsxt_network_modifier.go`, `registry.go` ## Известная проблема (уже диагностирована — НЕ ревьюить) `GET /instanceOperations/{opUid}?fields=cfsParams` падает 500 (`getResourceRealmConfig` Struct→string) на проблемных инстансах. Fallback на `/instanceOperations/default/{opId}` планируется отдельно. ## Задание — короткий код-ревью 1. Корректность жизненного цикла modifier-ресурса: Create/Update/Read/Delete, идемпотентность, refresh из API. 2. Реального Delete нет (destroy не откатывает операцию) — это ожидаемо? Подводные камни при повторном apply. 3. Риски передачи параметров по коду (code → id) в `RunInstanceOperationUniversalByCode`. 4. ТОП-3 самых критичных замечания именно по модификаторам. Ответ — кратко, тезисно, без кода-простыней.