feat(lib): delete_strategy/idempotency/delete_params в OperationSpec (+DeleteParam)
This commit is contained in:
@@ -209,9 +209,9 @@ var serviceSpecificModifiers = map[string]modifierException{
|
||||
|
||||
## Решения, нуждающиеся в подтверждении (из ревью)
|
||||
|
||||
1. **ID=identity → миграция state.** Смена формата заставит Terraform replace уже
|
||||
задеплоенных модификаторов. Предлагаю: НЕ менять формат ID (оставить
|
||||
`uid:operation:modifier`), а idempotency обеспечить pre-check, не трогая ID.
|
||||
1. **ID=identity → РЕШЕНО: формат ID НЕ меняем** (оставить `uid:operation:modifier`).
|
||||
Смена формата форснёт replace у задеплоенных модификаторов и вызовет баг E.
|
||||
Идемпотентность — через pre-check, не через ID. Шаг 4.3 отменён (ID остаётся как есть).
|
||||
2. **`error` + replace.** Пользователь не сможет заменить error-модификатор.
|
||||
Предлагаю: оставить `error` только для «чистого» destroy, документировать запрет replace.
|
||||
3. **Разметка по default** — `ip_space`: `delete_strategy=error`, `idempotency=check_before_run`;
|
||||
|
||||
+16
-1
@@ -44,7 +44,22 @@ type OperationSpec struct {
|
||||
Modifier string `yaml:"modifier,omitempty"`
|
||||
Subresource string `yaml:"subresource,omitempty"`
|
||||
Man string `yaml:"man,omitempty"`
|
||||
Params []ParamSpec `yaml:"params"`
|
||||
// DeleteStrategy — стратегия Delete для modifier-операций: noop_warn | inverse | error.
|
||||
// Пусто → noop_warn (remove из state + AddWarning).
|
||||
DeleteStrategy string `yaml:"delete_strategy,omitempty"`
|
||||
// Idempotency — pre-check перед run для modifier: none | check_before_run.
|
||||
// Пусто → none.
|
||||
Idempotency string `yaml:"idempotency,omitempty"`
|
||||
// DeleteParams — обратные значения (wire-строки) только при delete_strategy: inverse.
|
||||
DeleteParams []DeleteParam `yaml:"delete_params,omitempty"`
|
||||
Params []ParamSpec `yaml:"params"`
|
||||
}
|
||||
|
||||
// DeleteParam — обратное значение параметра для inverse-Delete.
|
||||
// Value — финальная wire-строка (для bool "false", для json готовый JSON).
|
||||
type DeleteParam struct {
|
||||
Code string `yaml:"code"`
|
||||
Value string `yaml:"value"`
|
||||
}
|
||||
|
||||
// ParamSpec — параметр операции.
|
||||
|
||||
Reference in New Issue
Block a user