Files
SergObsidian/WORK & PROJECTS/Mol/Серверы/Alfa cloud readme.md
2025-03-01 20:27:41 +05:00

84 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### Общая информация
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)
```
/servers/{id}/images - список доступных образов на сервере (для переключения или создания пользователя)
/servers/{id}/reboot_server - перезапуск сервера
/clients/{id}/reboot - попытка перезапуска контейнера пользователя
/clients/deploy - пересоздание конфигов и перезапуск серверного кластера
/clients/{id}/create_log - Лог создания контейнера
/containers/build_dev - получение кода из ветки dev, сборка фронта и нового образа
/containers/build_prod - получение кода из ветки master, сборка нового образа
/containers/prune - удалить неиспользуемые версии образов (images prune -a)
/clients/{id}/switch - переключить клиента на образ другой версии
/clients/switch_all - переключить всех клиентов на образ другой версии
/clients/{id}/migrate - запустить обновление БД клиента (artisan migrate)
/clients/migrate_all - запустить обновление БД у всех клиентов
/clients/move_to - переместить клиента на другой сервер
/clients/{id}/copy_to - установить окружение клиента и БД (только на stage-сервер)
```
Идеи:
- Получать количество пользователей в системе для общего списка систем
- При билде образов автоматически вычислять версию и приписывать -dev или -master
### TODO: Добавить таблицу с настройками облака в каждую пользовательскую таблицу!
- Проверка на уровне системы настройки "Техническое обслуживание" и показ блокирующей страницы
- Проверка на крайнюю дату использования и блокировка системы.
- Проверка на показ “турбостарта” при запуске
- Проверка на вопрос “краткого туториала”