Данный микросервис используя публичный API Vscale, может создавать и удалять группу серверов.
- Python 3.8
- FastAPI 0.63.0
- Database: PostgreSQL
-
Перейти в папку проекта
Скопировать файл .example.env в .env и установить необходимые значения для переменных окружения -
Запустить сборку приложения с использованием docker-compose
vova@MacBook-Pro-Vladimir vscale % docker-compose build- Запустить приложение и инстанс бд
vova@MacBook-Pro-Vladimir vscale % docker-compose up -d- Применить миграции
Для того чтобы применить миграции необходимо войти в контейнер с приложением (app) в интерактивном режиме и выполнить следующие команды
vova@MacBook-Pro-Vladimir vscale % docker exec -it vscale_app_1 bash
root@fc2abdddebd9:/code# alembic upgrade headПосле выполнения этих действий приложение будет доступно по адресу, указанному в переменных окружения.
По адресу http://<%host%>:<%port%>/docs находится авто генерируемый сваггер файл
Patter: /v1/servers/
Method: GET
Возвращает список всех существующих на данный момент серверов
Пример запроса:
curl -X 'GET' \
'http://0.0.0.0:8000/v1/servers/' \
-H 'accept: application/json'Patter: /v1/servers/
Method: POST
Принимает список из конфигураций серверов и создает их в vscale. В случае если один из
серверов не создался, то все созданные сервера будут удалены
Пример запроса:
curl -X 'POST' \
'http://0.0.0.0:8000/v1/servers/' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '[
{
"make_from": "ubuntu_18.04_64_001_master",
"rplan": "medium",
"do_start": false,
"name": "New-Test-1",
"password": "secr",
"location": "spb0"
},
{
"make_from": "ubuntu_18.04_64_001_master",
"rplan": "medium",
"do_start": false,
"name": "New-Test-2",
"password": "secr",
"location": "spb0"
}
]'Patter: /v1/servers/
Method: DELETE
Удаляются все ранее созданные сервера
Пример запроса:
curl -X 'DELETE' \
'http://0.0.0.0:8000/v1/servers/' \
-H 'accept: application/json'Patter: /v1/servers/bulk
Method: POST
Создание множества серверов с одной и той же конфигурацией. Количество создаваемых
серверов передается в query param и является обязательным
Пример запроса:
curl -X 'POST' \
'http://0.0.0.0:8000/v1/servers/bulk?count=3' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"make_from": "ubuntu_18.04_64_001_master",
"rplan": "medium",
"do_start": false,
"name": "New-Test-1",
"password": "secr",
"location": "spb0"
}'