docs(uuid-case): зафиксировать фактический механизм сохранения регистра
- core/refsvc.go: комментарий ссылался на несуществующий блок 'Restore user-provided casing' в instance.go. Факт: ref_svc исключены из read-back (InputField только при RefSvcId==0), UUID внутри JSON нормализуются при отправке (BuildJSON -> LowercaseUUIDsInText). - docs/60_strategy/terraform_case_sensitivity_fix.md: §4 помечен как историческая справка (подхода originalVappUid в коде нет); актуальные §10-§11. Проверено: go build ./... OK; go test ./internal/... -short -> PASS.
This commit is contained in:
@@ -90,6 +90,16 @@ schema.StringAttribute{
|
|||||||
|
|
||||||
## 4. Правильное решение
|
## 4. Правильное решение
|
||||||
|
|
||||||
|
> ⚠️ **Историческая справка (пометка 2026-09-30).** Описанный ниже подход «Restore user-provided
|
||||||
|
> casing» (`originalVappUid` в шаблоне `instance.go`) в текущем коде **отсутствует**.
|
||||||
|
> Фактическая реализация регистра UUID:
|
||||||
|
> 1. ref_svc-атрибуты **исключены из read-back**: шаблон `instance.go` добавляет `InputField` только
|
||||||
|
> при `eq .RefSvcId 0`, поэтому в state остаётся регистр из config;
|
||||||
|
> 2. UUID-подстроки **внутри JSON** нормализуются при отправке
|
||||||
|
> (`resources_core.BuildJSON` → `jsonutil.LowercaseUUIDsInText`).
|
||||||
|
>
|
||||||
|
> Разделы §10–§11 ниже — актуальные. Раздел 4 оставлен как история разбора.
|
||||||
|
|
||||||
**Источник истины**: plan = config = "6214BA32-..." (регистр пользователя, неизменен)
|
**Источник истины**: plan = config = "6214BA32-..." (регистр пользователя, неизменен)
|
||||||
**Задача**: state после apply тоже должен быть "6214BA32-..."
|
**Задача**: state после apply тоже должен быть "6214BA32-..."
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,12 @@ import (
|
|||||||
// указанного сервиса.
|
// указанного сервиса.
|
||||||
//
|
//
|
||||||
// ВАЖНО (uuid-case, 2026-03): API облака возвращает UUID всегда в нижнем регистре.
|
// ВАЖНО (uuid-case, 2026-03): API облака возвращает UUID всегда в нижнем регистре.
|
||||||
// Для отправки в API нормализуем к lowercase, но в state сохраняем регистр
|
// Для отправки в API нормализуем к lowercase. В state регистр пользователя сохраняется
|
||||||
// пользователя (см. шаблон instance.go, блоки "Restore user-provided casing").
|
// потому, что ref_svc-атрибуты ИСКЛЮЧЕНЫ из read-back (шаблон instance.go добавляет
|
||||||
|
// InputField только при `eq .RefSvcId 0`), а UUID-подстроки ВНУТРИ JSON нормализуются
|
||||||
|
// при отправке (`resources_core.BuildJSON` -> `jsonutil.LowercaseUUIDsInText`).
|
||||||
|
// (Блока "Restore user-provided casing" в instance.go нет — он описан только в доке
|
||||||
|
// docs/60_strategy/terraform_case_sensitivity_fix.md как исторический подход.)
|
||||||
|
|
||||||
func (c *UniversalClient) resolveRefSvcParamValues(ctx context.Context, opParams []universalCfsParam, params map[int]string) (map[int]string, error) {
|
func (c *UniversalClient) resolveRefSvcParamValues(ctx context.Context, opParams []universalCfsParam, params map[int]string) (map[int]string, error) {
|
||||||
if len(params) == 0 || len(opParams) == 0 {
|
if len(params) == 0 || len(opParams) == 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user