🖥 Стенды
Вы находитесь на стенде {{ current_stand }}
{% for s in stands_list %}
{{ s.id }}
{{ s.count }} сервисов
→
{% endfor %}
Что такое Polygon?
Polygon — это эмулятор REST API облачной платформы Nubes для интеграционных тестов. Он полностью повторяет контракты реального API: сервисы, инстансы, операции, параметры, валидацию — но работает без реальной инфраструктуры, в памяти, с мгновенным откликом.
Зачем нужен
- Тестировать создание/изменение/удаление инстансов без реальных ресурсов
- Отлаживать UI автодеплоя (
app-autotest) на мок-данных - Писать интеграционные тесты с детерминированным состоянием
- Проверять краевые случаи (ошибки валидации, сбои операций)
Как устроен
- Flask 3.0 + gunicorn, 1 воркер (состояние в памяти)
- Конфигурация сервисов — из YAML (генерируется из STANDS)
- Все операции — синхронные, с настраиваемой задержкой
- Управляемый сброс состояния через
/_mock/reset
Как использовать
1. Получить список сервисов
curl -s {{ endpoint }}/api/v1/svc/services | python3 -m json.tool
2. Создать инстанс
curl -s -X POST {{ endpoint }}/api/v1/svc/instances \
-H "Content-Type: application/json" \
-d '{"serviceId": "s3", "displayName": "my-bucket"}' | python3 -m json.tool
3. Заполнить параметры и запустить операцию
# Установить параметры операции
curl -s -X POST {{ endpoint }}/api/v1/svc/instanceOperationCfsParams/<opUid>
# Запустить операцию (create/modify/delete)
curl -s -X POST {{ endpoint }}/api/v1/svc/instanceOperations/<opUid>/run
4. Сбросить состояние
curl -s -X POST {{ endpoint }}/api/v1/svc/_mock/reset
Подсказка: используйте переменную окружения
POLYGON_ENDPOINT={{ endpoint }}
в app-autotest — и все операции пойдут через полигон
вместо реального API.
API эндпоинты
| Метод | Путь | Описание |
|---|---|---|
| GET | /health | Healthcheck |
| GET | /api/v1/svc/services | Список сервисов |
| GET | /api/v1/svc/services/<id> | Детали сервиса |
| GET | /api/v1/svc/instances | Список инстансов |
| GET | /api/v1/svc/instances/<uid> | Детали инстанса |
| POST | /api/v1/svc/instances | Создать инстанс |
| GET | /api/v1/svc/instanceOperations | Список операций |
| POST | /api/v1/svc/instanceOperations/<uid>/run | Запустить операцию |
| GET | /api/v1/svc/instanceOperations/<uid>/status | Статус операции |
| POST | /api/v1/svc/_mock/reset | Сброс состояния |
| GET | /api/v1/svc/_mock/state | Дамп состояния |
| POST | /api/v1/svc/_mock/delay/<s> | Задать задержку |
| POST | /api/v1/svc/_mock/fail-next | Следующая операция упадёт |
Загруженные сервисы ({{ svc_count }})
| ID | Название | Операций | CfsParams | StateParams | StateOut |
|---|---|---|---|---|---|
{{ svc.id }} |
{{ svc.display_name }} | {{ svc.op_count }} | {% if svc.has_cfs %}{% else %}{% endif %} | {% if svc.has_state %}{% else %}{% endif %} | {% if svc.has_out %}{% else %}{% endif %} |