2.3 KiB
2.3 KiB
Код-ревью: модификаторы (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} планируется отдельно.
Задание — короткий код-ревью
- Корректность жизненного цикла modifier-ресурса: Create/Update/Read/Delete, идемпотентность, refresh из API.
- Реального Delete нет (destroy не откатывает операцию) — это ожидаемо? Подводные камни при повторном apply.
- Риски передачи параметров по коду (code → id) в
RunInstanceOperationUniversalByCode. - ТОП-3 самых критичных замечания именно по модификаторам.
Ответ — кратко, тезисно, без кода-простыней.