5.7 KiB
Общая информация
Alfa Cloud — серверный API, который предоставляет доступ к управлению контейнерами и конфигурацией облаков Alfa с поддержкой нескольких облачных серверов.
Данный документ нужен для разработки полноценного фронтенда управления контейнерами.
Все запросы должны производиться только из админки Mol. Метод авторизации каждого запроса - Basic Auth (обычный логин и пароль). Учётные данные можно менять регулярно, для этого существует специальный запрос. Учётные данные НЕ синхронизированы с основными учётными данными MOL (и для безопасности и отсутствия необходимости синхронизации всех юзеров. Нужен только главный админ).
В данном API в тестовом режиме будет использоваться спецификация JSON:API для унификации серверных ответов.
Точки подключения:
GET:
/servers — получить список активных серверов (для разворачивания новых клиентов)
/servers/{id} — получить подробную информацию о сервере
(TODO: с параметрами мониторинга и нагрузкой в реальном времени)
/clients — получить список контейнеров клиентов со всеми подробностями (поддерживается пагинация). С флагом доступностью контейнера. На фронте можно сделать прямой переход на облако клиента.
/clients/{id}/demo_enable - применение таблиц демо-данных (demo seeder)
/clients/{id}/demo_disable - удаление демо-данных (demo inverse seeder)
/clients/{id}/maintain_enable - включить страницу "Техническое обслуживание" у клиента
/clients/{id}/maintain_disable - отключить страницу "Техническое обслуживание"
/clients/{id}/send_success - отправить письмо клиенту с успешной регистрацией облака с логином и паролем
/clients/{id}/send_expire - отправить письмо клиенту о скором истечении использования (можно/нужно автоматизировать)
/clients/{id}/expire_dates_history - история изменения продлений дат пользователя
POST:
/servers/create — создать сервер в БД
/clients/create — создать клиента - после проверки сразу вернётся id
во время создания нужно таймером опрашивать
/clients/{id}/create_log и получать актуальный лог о создании контейнера. За окончание создания отвечает статус "completed" => "ok | error".
/clients/owner_password — задать новый пароль администратора лаборатории
TODO: перенос данных клиента с одного сервера на другой
TODO: /cloud_admin_password - задать пароль для подключения к API
PUT | PATCH:
/servers/{id} — изменить информацию о сервере
/clients/{id} — редактировать данные клиента (кроме пароля администратора лабы)
/clients/{id}/expire_date - обновление крайней даты использования системы
DELETE
/clients/{id} — редкая функция — запуск очистки пользовательских конфигов с серверов
/servers/{id} – не реализовано, да и пока что не надо. Тут нужно просто удаление информации о сервере из БД.
Команды менеджмента контейнеров и деплоя (GET)
/containers/avialable
/servers/{id}/reboot_server - перезапуск сервера
/clients/{id}/reboot - попытка перезапуска контейнера пользователя
/clients/deploy - пересоздание конфигов и перезапуск серверного кластера
/clients/{id}/create_log - Лог создания контейнера
/containers/build_dev - переключение кода на ветку dev, сборка контейнера
/containers/build_prod
/clients/{id}/migrate
/clients/migrate_all
/clients/{id}/switch
/clients/switch_all
TODO: Добавить таблицу с настройками облака в каждую пользовательскую таблицу!
- Проверка на уровне системы настройки "Техническое обслуживание" и показ блокирующей страницы
- Проверка на крайнюю дату использования и блокировка системы.
- Проверка на показ быстрого старта при запуске
- Проверка на краткий туториал