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
+119
View File
@@ -0,0 +1,119 @@
name: s3
service_id: 12
service_display_name: S3 Object Storage
service_short_name: s3
service_man: Руководство доступно по ссылке:<br/>https://docs.s3.msk-1.ngcloud.ru/s3/s3.description.html
lifecycle:
suspendOnDestroyDefault: true
adoptExistingOnCreateDefault: false
operations:
- svcOperationId: 1
operation: create
kind: instance
action: create
- svcOperationId: 6
operation: create_sub_user
kind: subresource
action: create
- svcOperationId: 5
operation: delete
kind: instance
action: delete
- svcOperationId: 7
operation: delete_sub_user
kind: subresource
action: delete
- svcOperationId: 4
operation: modify
kind: instance
action: modify
- svcOperationId: 407
operation: reconcile
kind: action
action: reconcile
- svcOperationId: 3
operation: resume
kind: instance
action: resume
- svcOperationId: 2
operation: suspend
kind: instance
action: suspend
stateOut:
sub_users: {}
cfsParams:
- svcOperationCfsParamId: 163
svcOperationCfsParam: resourceRealm
dataType: string
isRequired: true
defaultValue: ceph.tst.nubes.ru
isModifiable: false
valueList:
- ceph.tst.nubes.ru
- svcOperationCfsParamId: 320
svcOperationCfsParam: displayName
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
- svcOperationCfsParamId: 60
svcOperationCfsParam: subUserName
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
- svcOperationCfsParamId: 61
svcOperationCfsParam: subUserAccess
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
valueList:
- read
- write
- readwrite
- full
- svcOperationCfsParamId: 63
svcOperationCfsParam: subUserName
dataType: string
isRequired: true
defaultValue: ''
isModifiable: true
- svcOperationCfsParamId: 50
svcOperationCfsParam: maxSizeGbPerUser
dataType: integer > 0
isRequired: false
defaultValue: ''
isModifiable: true
- svcOperationCfsParamId: 51
svcOperationCfsParam: maxObjectsPerBucket
dataType: integer > 0
isRequired: false
defaultValue: ''
isModifiable: true
- svcOperationCfsParamId: 52
svcOperationCfsParam: maxBucketsPerUser
dataType: integer > 0
isRequired: false
defaultValue: ''
isModifiable: true
cfsParamsByOp:
1:
- 163
- 320
6:
- 60
- 61
5: []
7:
- 63
4:
- 50
- 51
- 52
407: []
3: []
2: []
stateParams:
resourceRealm: ceph.tst.nubes.ru
displayName: ''