feat(yaml): реестр исключений модификаторов (delete_strategy/idempotency/delete_params)
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user