3.6 KiB
3.6 KiB
polygon v0.2.0
Эмулятор REST API облачной платформы Nubes для интеграционных тестов app-autotest.
Отдельный managed-сервис на Nubes pythonk8s: polygon.pythonk8s.dev.nubes.ru.
Притворяется реальным Nubes API (префикс /api/v1/svc).
Архитектура
polygon/
├── requirements.txt # Flask>=3.0, gunicorn>=21.2, PyYAML>=6.0
├── tests/
│ ├── test_converter.py # 10 юнит-тестов from_stands.py
│ └── test_state_machine.py # 9 юнит-тестов state_machine.py
└── site/
├── app.py # Flask (17 эндпоинтов)
├── mock_state.py # MockState: instances, operations, op_params
├── state_machine.py # apply_effect() — мутация состояния
├── config_loader.py # загрузка services/*.yaml
├── from_stands.py # конвертер STANDS YAML → polygon config
└── services/ # 37 YAML-конфигов (сгенерированы)
⛔ Ровно 1 gunicorn-воркер. Состояние в памяти, не shared.
Запуск
# Локально
cd site && python app.py # порт 5000
# Тесты
pytest tests/ -v # 19 тестов
# Генерация конфигов из STANDS YAML
cd site && python from_stands.py <STANDS_DIR> services/
API (17 эндпоинтов)
| Метод | Путь | Назначение |
|---|---|---|
| GET | /health |
Healthcheck |
| GET | / |
HTML с версией |
| GET | /api/v1/svc/services |
Список сервисов |
| GET | /api/v1/svc/services/<id> |
Операции сервиса |
| GET | /api/v1/svc/instances |
Пагинация |
| GET | /api/v1/svc/instances/<uid> |
Инстанс + state |
| POST | /api/v1/svc/instances |
Создать → 201 + Location |
| GET | /api/v1/svc/instanceOperations/default/<id> |
cfsParams |
| POST | /api/v1/svc/instanceOperations |
Создать операцию → 201 + Location |
| GET | /api/v1/svc/instanceOperations/<uid> |
Статус + cfsParams |
| POST | /api/v1/svc/instanceOperationCfsParams |
param → value |
| GET | /api/v1/svc/instanceOperations/<uid>/validate-cfs |
200, пустое тело |
| POST | /api/v1/svc/instanceOperations/<uid>/run |
Выполнить |
| POST | /api/v1/svc/_mock/reset |
Сброс |
| GET | /api/v1/svc/_mock/state |
Отладка: состояние |
| GET | /api/v1/svc/_mock/services |
Отладка: сервисы |
| POST | /api/v1/svc/_mock/delay/<s> |
MOCK_OP_DELAY |
Переменные окружения
| Переменная | По умолчанию | Описание |
|---|---|---|
MOCK_OP_DELAY |
0.1 |
Задержка операции в секундах |
WEB_CONCURRENCY |
1 |
⛔ Не менять — ровно 1 воркер |
Деплой
- Репозиторий:
https://gitea.services.ngcloud.ru/forcloud/polygon.git - URL:
https://polygon.pythonk8s.dev.nubes.ru/ - Nubes pythonk8s managed service
Связанные документы
- DOCS/polygon-plan.md — план реализации
- polygon-docs/sonnet-code-review-prompt.md — промпт code review
- polygon-docs/tf-provider-refs.md — ссылки на генератор YAML