Files
tf_provider/prompt_for_opus_modifiers_review.md
T

2.3 KiB
Raw Blame History

Код-ревью: модификаторы (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 самых критичных замечания именно по модификаторам.

Ответ — кратко, тезисно, без кода-простыней.