Files
tf_provider/prompt_for_opus_modifier_null_bug.md
T

2.7 KiB
Raw Blame History

Баг: modify-модификатор сбрасывает create-поля в дефолт (needEnableAVI true→false)

Симптом

nubes_vc_nsxt_network (modifier vc_nsxt.network, modify 111) после create Edge с needEnableAVI=true, virtualServicesCount=3 сбрасывает needEnableAVI на платформе обратно в false.

Подтверждено по API (cfsParams операций)

Create Edge (op 0c169353):

  • 340 needEnableAVI = true
  • 341 virtualServicesCount = 3

Modify (SNAT-модификатор, op d14a149e):

  • 368 needEnableAVI = null
  • 369 virtualServicesCount = null
  • 856 qosProfile = null
  • 372 ipSpaceName = internet-ipv4-v1
  • 1112 routedNetConfiguration = {...}

Итоговый state.params Edge: needEnableAVI = false.

Гипотеза

Модификатор строится через resources_core.CompactParams, который выбрасывает пустые Optional-поля. Бэкенд для modify трактует пропущенный/null параметр как «сбросить в дефолт» (false/0), а не «оставить как есть». Итог: modify с частичным payload затирает create-поля.

Файлы

  • provider/internal/core/client.go — RunInstanceOperationUniversalByCode (отправка params), normalizeUniversalValueV6
  • provider/internal/resources_core/crud.go — RunOperationByCodeWithTimeout, CompactParams
  • генератор: TOOLS/resource-generator/internal/templates/modifier.go, internal/writers/writers.go (WriteModifierResource)
  • сгенерированное: generated/dev/go/22_vc_nsxt_network_modifier.go
  • YAML: generated/dev/resources_yaml/22_vc_nsxt.yaml (modify 111, поля is_modifiable)

Задание

Определить каноническое поведение:

  1. Должен ли modify слать все параметры операции (полный payload, включая необязательные с их текущими значениями), или допустимо слать только переданные?
  2. Где правильнее чинить: в генераторе (шаблоне modifier), в CompactParams, или в RunInstanceOperationUniversalByCode (досылать дефолты/текущие значения незаданных полей)?
  3. Есть ли риск, что «досылать дефолты» сломает другие модификаторы (напр. vc_org.ip_space)?

Ответ кратко, тезисно, с указанием конкретной строки/места фикса.