fix(provider): нормализация регистра UUID при отправке map-fixed JSON в API
- resources_core.BuildJSON оборачивает результат в jsonutil.LowercaseUUIDsInText: платформа сравнивает регистр UUID при create, а ресурсы отдают id в UPPERCASE (nsxtUid/vdcUid) -> без нормализации create Штурвала падал 'Edge не развёрнут в указанном vDC' (обнаружено на провайдере 2.0.23 из-под Windows). - Одна точка покрывает все map-fixed-параметры (create/modify/redeploy), регенерация не требуется. - Документация: HISTORY/2026-09-30, docs/60_strategy/terraform_case_sensitivity_fix.md §11, NOTES/30_analysis/ARCHITECTURE_NEW.md §6.5, docs/help/architecture-and-methods.md §7. Не выпущено: версия не поднималась, релиз/регенерация не выполнялись.
This commit is contained in:
@@ -145,6 +145,27 @@ go build -o terraform-provider-nubes
|
||||
- Генератор может создавать «разбитые» snake_case для CamelCase (например `resource_c_p_u`).
|
||||
- Это ожидаемо, но если критично — нужен отдельный маппинг (по согласованию).
|
||||
|
||||
### 6.5 Регистр UUID в JSON-параметрах (map-fixed) — ОБЯЗАТЕЛЬНО ЗНАТЬ
|
||||
|
||||
- Платформа хранит UUID в lowercase, но **сравнивает регистр при create**. Ресурс
|
||||
`nubes_vc_nsxt` отдаёт `id` в UPPERCASE → `startupConfiguration.vdcUid/nsxtUid`
|
||||
в верхнем регистре → ошибка «Edge не развёрнут в указанном vDC».
|
||||
- **Нормализация нужна в ДВУХ разных местах, и они не взаимозаменяемы:**
|
||||
1. **Сравнение** (план vs state, adopt/suspend/resume, modifier-compare, диагностика) —
|
||||
`jsonutil.LowercaseUUIDsInText` внутри `JSONStringsEquivalent`, `JsonNormalize()`,
|
||||
`ParamsMatchForResume`, `normalizeCompareValue`.
|
||||
2. **Отправка в API** — единственная точка: `resources_core.BuildJSON`
|
||||
(`provider/internal/resources_core/helpers.go`), её вызывает генератор
|
||||
(`NestedJSONExpr` в `templates/instance.go`: Create / Modify / Redeploy).
|
||||
С 30.09 результат оборачивается в `LowercaseUUIDsInText(...)`.
|
||||
- ⛔ **Не «лечить» это в HCL** (`lower(...)` в конфиге стенда) — это костыль, который
|
||||
существовал только потому, что путь отправки не нормализовал UUID. Он ломался при
|
||||
работе из-под Windows на провайдере `2.0.23`.
|
||||
- Детали, аудит всех мест и границы применимости: `docs/60_strategy/terraform_case_sensitivity_fix.md`
|
||||
(§10 — регистр при сравнении, §11 — регистр при отправке).
|
||||
- Не покрыто: скалярные UUID в `normalizeUniversalValueV6` (дефолты create / досылка modify)
|
||||
и валидация ref-параметров внутри JSON при adopt — см. §11 и HISTORY/2026-09-30.
|
||||
|
||||
---
|
||||
|
||||
## 7) Проверенная цепочка (dummy)
|
||||
|
||||
Reference in New Issue
Block a user