v0.5.0: 3 стенда — изоляция состояния, WSGI middleware, OpenAPI server selector, POLYGON_STANDS env

- loader.py: STANDS dict, get_services/get_ops_index per stand, POLYGON_STANDS env
- mock_state.py: get_state(stand_id) — ленивая инициализация
- app.py: StandMiddleware — перезапись PATH_INFO до Flask-роутинга
- Все роуты: LocalProxy(state), LocalProxy(SERVICES/OPS_INDEX) через g.stand_id
- openapi.py: _build_servers() — по одному серверу на стенд
- services/stand{1,2,3}/ — 37 YAML на стенд из STANDS/dev и STANDS/test
- tests/test_api.py: +4 multi-stand теста (изоляция, fail-next, OpenAPI servers)
- Обратная совместимость: /api/v1/svc/... → стенд по умолчанию
This commit is contained in:
2026-08-01 20:10:19 +04:00
parent 11f98738d0
commit 58d54f2a95
122 changed files with 25223 additions and 76 deletions
+92
View File
@@ -0,0 +1,92 @@
name: dnsrecord
service_id: 111
service_display_name: DNS запись
service_short_name: dnsrecord
service_man: Необходима DNS зона, в которой будет создана DNS запись.<br/>Выберите <br/>* Зону в которой будет создана запись<br/>* Тип записи<br/>* Имя записи<br/>* Значение записи
lifecycle:
suspendOnDestroyDefault: false
adoptExistingOnCreateDefault: false
operations:
- svcOperationId: 45
operation: create
kind: instance
action: create
- svcOperationId: 46
operation: delete
kind: instance
action: delete
- svcOperationId: 90
operation: modify
kind: instance
action: modify
- svcOperationId: 408
operation: reconcile
kind: action
action: reconcile
stateOut: {}
cfsParams:
- svcOperationCfsParamId: 75
svcOperationCfsParam: zoneUid
dataType: uuid
isRequired: true
defaultValue: ''
isModifiable: false
- svcOperationCfsParamId: 76
svcOperationCfsParam: recordType
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
valueList:
- A
- AAAA
- CNAME
- MX
- PTR
- SOA
- SRV
- TXT
- LUA
- NS
- SSHFP
- svcOperationCfsParamId: 77
svcOperationCfsParam: recordName
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
- svcOperationCfsParamId: 78
svcOperationCfsParam: recordInput
dataType: string
isRequired: true
defaultValue: ''
isModifiable: true
- svcOperationCfsParamId: 450
svcOperationCfsParam: recordTTL
dataType: integer > 0
isRequired: true
defaultValue: '3600'
isModifiable: false
- svcOperationCfsParamId: 256
svcOperationCfsParam: recordInput
dataType: string
isRequired: true
defaultValue: ''
isModifiable: true
cfsParamsByOp:
45:
- 75
- 76
- 77
- 78
- 450
46: []
90:
- 256
408: []
stateParams:
zoneUid: ''
recordType: ''
recordName: ''
recordInput: ''
recordTTL: '3600'