feat(yaml): реестр исключений модификаторов (delete_strategy/idempotency/delete_params)

This commit is contained in:
Repinoid
2026-09-22 21:17:09 +03:00
parent 6b0378cc0d
commit 6a722e49cf
+29 -6
View File
@@ -17,10 +17,12 @@ import (
"yaml-generator/internal/normalize"
"yaml-generator/internal/spec"
"yaml-generator/internal/types"
"tf-tools/lib"
)
// serviceSpecificModifiers — реестр исключений (ДАННЫЕ, не логика).
// Ключ — стабильное имя сервиса (как в YAML), значение — имя modifier-ресурса,
// Ключ — стабильное имя сервиса (как в YAML), значение — конфиг modifier-ресурса,
// который генерируется для его операции modify (отложенный modify над инстансом).
//
// ЧТО: операция modify сервиса помечается kind=modifier + modifier=<имя>.
@@ -29,11 +31,29 @@ import (
// выполнять в том же ресурсе инстанса (чередующаяся зависимость).
// ГДЕ: TOOLS/ARCHITECTURE.md, раздел «Реестр исключений».
//
// DeleteStrategy / Idempotency — поведение модификатора (см. PLAN_modifier_redesign.md).
// DeleteParams — обратные значения (wire-строки) только для DeleteStrategy==inverse.
//
// Добавлять только здесь. Grep-гейт TOOLS/scripts/check_hardcoded_service_ids.sh
// запрещает сравнения svc.ID == N вне этого файла.
var serviceSpecificModifiers = map[string]string{
"vc_org": "ip_space",
"vc_nsxt": "network",
type modifierException struct {
ModifierName string
DeleteStrategy string // noop_warn | inverse | error
Idempotency string // none | check_before_run
DeleteParams []lib.DeleteParam
}
var serviceSpecificModifiers = map[string]modifierException{
"vc_org": {
ModifierName: "ip_space",
DeleteStrategy: "error",
Idempotency: "check_before_run",
},
"vc_nsxt": {
ModifierName: "network",
DeleteStrategy: "inverse",
DeleteParams: []lib.DeleteParam{{Code: "needEnableAVI", Value: "false"}},
},
}
func main() {
@@ -92,9 +112,12 @@ func main() {
if !strings.EqualFold(ops[idx].Action, "modify") {
continue
}
if modName, ok := serviceSpecificModifiers[name]; ok {
if modCfg, ok := serviceSpecificModifiers[name]; ok {
ops[idx].Kind = "modifier"
ops[idx].Modifier = modName
ops[idx].Modifier = modCfg.ModifierName
ops[idx].DeleteStrategy = modCfg.DeleteStrategy
ops[idx].Idempotency = modCfg.Idempotency
ops[idx].DeleteParams = modCfg.DeleteParams
}
}