4.5 KiB
4.5 KiB
Архитектура Autotest — полный обзор
v1.1.44, 2026-07-30
Назначение
Платформа для тестирования Nubes Cloud API — ручное и автоматизированное создание/изменение/удаление инстансов любых сервисов (PostgreSQL, Redis, S3, Kafka, ~35 сервисов).
Развёртывание
- Платформа: Nubes pythonk8s (managed Flask + gunicorn)
- URL:
https://atest.pythonk8s.dev.nubes.ru/ - БД: PostgreSQL 17 (Zalando Operator), autotest
- Репозиторий:
/home/naeel/nubes/autotest/app-autotest - Родительский репо:
/home/naeel/nubes/autotest
Ключевые файлы
Бэкенд (Flask)
| Файл | Назначение |
|---|---|
site/app.py |
Точка входа, регистрация blueprint'ов, VERSION |
site/routes/api_test.py |
Основной: POST /api/test, GET /api/params, поллинг, _finish_op |
site/routes/main.py |
GET /, /api/operations/{svc_id} |
site/routes/api.py |
LEGACY эндпоинты (будет удалён) |
site/api/http_client.py |
HTTP-клиент Nubes API (GET/POST/raw_delete) |
site/api/auth.py |
Токены, get_client, get_stand |
site/operations/get_params.py |
get_params_with_current_values, _normalize_value_list, state.out |
site/operations/get_instances.py |
GET /instances с пагинацией |
site/operations/get_services.py |
GET /services, /services/{id} |
site/operations/service_list.py |
Загрузка services_{stand}.txt |
site/operations/tracker.py |
fcntl.flock файловый трекер инстансов |
site/db/pool.py |
psycopg2 ThreadedConnectionPool (lazy-init) |
site/db/init_db.py |
CREATE TABLE runs + миграции |
site/db/save_run.py |
INSERT в runs (16 колонок) |
site/runner.py |
LEGACY runner (будет удалён) |
site/config.yaml |
LEGACY конфиг (будет удалён) |
Фронтенд (vanilla JS)
| Файл | Назначение |
|---|---|
site/templates/index.html |
Jinja2 шаблон, CSS, window.APP |
site/static/app.js |
Весь фронтенд (460 строк) |
site/static/style.css |
Доп. стили |
Конфиги
| Файл | Назначение |
|---|---|
site/config/services_test.txt |
Список сервисов TEST (комментировать # для исключения) |
site/config/services_dev.txt |
Список сервисов DEV |
requirements.txt |
Python-зависимости |
CREATE flow (9 шагов Nubes API)
- POST /instances
- POST /instanceOperations {operation:"create"}
- GET /instanceOperations/{opUid}?fields=cfsParams
- resolveRefSvcParamValues
- POST /instanceOperationCfsParams (пользовательские)
- POST /instanceOperationCfsParams (required+default)
- GET /validate-cfs
- POST /run
- Поллинг dtFinish
Фронтенд — глобальное состояние
svcInstances — кеш инстансов
selectedInst — UID выбранного
selectedOp — {opId, opName, svcId}
pollTimer — setInterval поллинга
currentSvcId — ID сервиса
currentSvcName — имя сервиса
currentSvcShort— краткое имя (redis, postgres)
busy — блокировка параллельных операций
План развития (MVP сценариев)
Файлы: /home/naeel/nubes/autotest/TASKS/3007.md (требования), /home/naeel/nubes/autotest/DOCS/sol-answers.md (решения)
- Багфиксы аудита
- Удалить legacy (api.py, runner.py, config.yaml)
- Сервисные токены для сценариев
- YAML-сценарии + валидатор
- scenario_runs таблица + runner
- UI: сворачиваемая секция «Сценарии»
Документация
/home/naeel/nubes/autotest/DOCS/terraform-operations-full-logic.md— эталонный Nubes API flow/home/naeel/nubes/autotest/DOCS/sol-answers.md— ответы на 14 вопросов по архитектуре/home/naeel/nubes/autotest/DOCS/questions-to-sol.md— 14 вопросов к Sol/home/naeel/nubes/autotest/app-autotest/DOCS/sonnet-final-audit.md— финальный аудит Соннета/home/naeel/nubes/autotest/HISTORY/2026-07-29-session.md— хронология правок