polygon v{{ version }} 📋 Swagger
Работает · Сервисов: {{ svc_count }} · Инстансов: {{ inst_count }} · Задержка: {{ delay }}s

Что такое 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/healthHealthcheck
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 }})

{% for svc in svc_list %} {% endfor %}
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 %}