docs(plan): финализировать план + запрос на ревью Опуса
This commit is contained in:
+31
-50
@@ -131,53 +131,35 @@ idle-гейт (`waitForInstanceIdle`) уже стоит выше — не тро
|
||||
|
||||
---
|
||||
|
||||
## Шаг 8. YAML-разметка в `generated/dev/resources_yaml/`
|
||||
## Шаг 8. YAML-разметка (источник-канон) в `TOOLS/yaml-generator`
|
||||
|
||||
`19_vc_org.yaml` (modify 207, modifier ip_space):
|
||||
```yaml
|
||||
- name: modify
|
||||
id: 207
|
||||
kind: modifier
|
||||
modifier: ip_space
|
||||
delete_strategy: error
|
||||
idempotency: check_before_run
|
||||
Источник-канон — реестр исключений `serviceSpecificModifiers` в
|
||||
`TOOLS/yaml-generator/main.go` (Ключ — имя сервиса → имя modifier).
|
||||
`generated/dev` перегенерируется — туда НЕ вносить вручную.
|
||||
|
||||
Контракт в `lib.OperationSpec` (алиас в обоих генераторах), значит yaml-generator
|
||||
должен проставлять флаги при маршале. Расширить реестр со `map[string]string`
|
||||
до структуры, несущей: `ModifierName`, `DeleteStrategy`, `Idempotency`,
|
||||
`DeleteParams []struct{Code,Value}`:
|
||||
|
||||
```go
|
||||
type modifierException struct {
|
||||
ModifierName string
|
||||
DeleteStrategy string // noop_warn | inverse | error
|
||||
Idempotency string // none | check_before_run
|
||||
DeleteParams []deleteParam // только для inverse
|
||||
}
|
||||
type deleteParam struct { Code, Value string }
|
||||
|
||||
var serviceSpecificModifiers = map[string]modifierException{
|
||||
"vc_org": {ModifierName: "ip_space", DeleteStrategy: "error", Idempotency: "check_before_run"},
|
||||
"vc_nsxt": {ModifierName: "network", DeleteStrategy: "inverse",
|
||||
DeleteParams: []deleteParam{{"needEnableAVI", "false"}}},
|
||||
}
|
||||
```
|
||||
|
||||
`22_vc_nsxt.yaml` (modify 111, modifier network):
|
||||
```yaml
|
||||
- name: modify
|
||||
id: 111
|
||||
kind: modifier
|
||||
modifier: network
|
||||
delete_strategy: inverse
|
||||
delete_params:
|
||||
- code: needEnableAVI
|
||||
value: "false"
|
||||
```
|
||||
|
||||
ВАЖНО: `generated/dev` — gitignored/генерируемый. Канон YAML — в yaml-generator
|
||||
(источник из API), поэтому разметку `delete_strategy`/`idempotency` надо вносить в
|
||||
**источник** (механизм исключений yaml-generator, а не в generated), иначе перегенерация
|
||||
её сотрёт. Уточнить: где живёт источник правил модификаторов (registry исключений).
|
||||
|
||||
---
|
||||
|
||||
## Шаг 9. Тесты
|
||||
|
||||
`provider/internal/core/` — unit:
|
||||
- `modifierDesiredEqualsCurrent`: совпадение/расхождение по bool/int/map-fixed/array-map-fixed;
|
||||
- досылка: live→default→skip (integer>0 без дефолта не шлёт `"0"`).
|
||||
|
||||
`TOOLS/resource-generator` — unit:
|
||||
- `ValidateSpec`: неизвестный enum, inverse без delete_params, delete_params.code вне params.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 10. Сборка и заливка
|
||||
|
||||
- `go build ./...` + `go vet ./...` по всем 5 модулям;
|
||||
- подать сборку `TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev`
|
||||
(bump версии отдельным коммитом).
|
||||
В цикле над ops (там, где `Kind="modifier"`): проставить `op.DeleteStrategy`,
|
||||
`op.Idempotency`, `op.DeleteParams`.
|
||||
|
||||
---
|
||||
|
||||
@@ -188,15 +170,14 @@ idle-гейт (`waitForInstanceIdle`) уже стоит выше — не тро
|
||||
3. `refactor(gen): шаблон modifier — reconcile, без CompactParams, ID identity, Delete стратегия`
|
||||
4. `refactor(core): вынести JSON-эквивалентность в jsonutil`
|
||||
5. `feat(core): modifierDesiredEqualsCurrent + флаг idempotent`
|
||||
6. `feat(yaml): разметка ip_space/network`
|
||||
6. `feat(yaml): реестр исключений модификаторов (delete_strategy/idempotency)`
|
||||
7. `test(core,gen): unit-кейсы`
|
||||
8. `chore(dev): bump версии`
|
||||
|
||||
---
|
||||
|
||||
## Открытый вопрос (блокирует шаг 8)
|
||||
## Открытый вопрос — закрыт
|
||||
|
||||
**Где живёт источник-канон YAML модификаторов** (не `generated/dev`)? Разметку
|
||||
`delete_strategy`/`idempotency` надо вносить в источник, а не в сгенерированный файл,
|
||||
иначе перегенерация (`01_generate_yamls.sh`) сотрёт. Нужно найти механизм
|
||||
(yaml-generator exceptions / registry), где держать эти флаги.
|
||||
Источник-канон — реестр `serviceSpecificModifiers` в `TOOLS/yaml-generator/main.go`.
|
||||
Разметка `delete_strategy`/`idempotency` расширяет этот реестр, а НЕ правится вручную
|
||||
в `generated/dev`.
|
||||
|
||||
Reference in New Issue
Block a user