Виртуальные машины
Базовый URL: /api/cvds/v1/vms/
Возможные операции:
- Создание
- Список
- Получение информации по отдельной ВМ
- Изменение
- Включение/Выключение
- Перезагрузка
- Удаление
Создание
URL: /api/cvds/v1/vms/
Метод: POST
Результат: JSON
Создание новой ВМ
Обязательные параметры запроса:
type
- параметр тарифа ВМ из списка тарифовarch
- параметр архитектуры ВМ из списка образовimage
- id образа ВМ из списка образовstorage_type
- тип диска:- vg - диск стандартной скорости SAS
- vgssd - быстрый диск SSD
storage_size
- желаемый размер диска (в Гб). Значение должно быть кратно 5. Существуют ограничения:- SAS от 5 до 250 Гб
- SSD от 5 до 80 Гб
Опциональные:
keypair
- id SSH-ключа из списка ключей
Для установки некоторых специальных образов (WordPress, Joomla, MODx, Redmine, GitLab) необходимо передавать дополнительные параметры из списка образов.
Пример запроса:
curl -vX POST https://panel.netangels.ru/api/cvds/v1/vms/ \
--header "Authorization: Token Zd4gON8ghKn7rD2ltbYl" \
-d 'type=tiny' \
-d 'arch=32' \
-d 'image=5' \
-d 'storage_type=vg' \
-d 'storage_size=5' \
-d 'keypair=10'
Пример успешного ответа:
{
"ip": "192.168.202.148",
"users": [
{
"root": "duszoptjm4xxx"
}
]
}
Описание полей:
ip
- IP созданной ВМusers
- список пар логин/пароль для ВМ
Возможные HTTP-коды возврата:
- 201 (CREATED) - ВМ создается, статус создания можно отслеживать
- 400 (BAD REQUEST) - данные в запросе имеют неверный формат или отсутствуют обязательные параметры
Этот метод является асинхронным, поскольку процедура создания виртуальной машины занимает некоторое время.
При успешном создании HTTP-код будет 201 (CREATED), а заголовок Location
содержит ссылку на ресурс ВМ:
Location: https://panel.netangels.ru/api/cvds/v1/vms/340/
По этой ссылке можно отслеживать процесс создания ВМ.
Когда поле state
станет active
, то это будет означать успешное создание.
Рекомендуется проверять состояние виртуальной машины не чаще чем раз в 30 секунд.
Создание ВМ на основе существующего диска
Обязательные параметры запроса:
type
- параметр тарифа ВМ из списка тарифовstorage
- id диска из списка дисков
Опциональные:
storage_copy_origin
- если этот параметр передан, то новая ВМ будет создана с копией диска.
Пример запроса:
curl -XPOST https://panel.netangels.ru/api/cvds/v1/vms/ \
--header "Authorization: Token Zd4gON8ghKn7rD2ltbYl" \
-d 'type=tiny' \
-d 'storage=587'
Пример успешного ответа:
{
"ip": "192.168.202.191"
}
Создание ВМ на основе существующего диска c созданием копии диска
Данный метод создает копию диска переданного в параметре storage
. Виртуальная машина будет создана на основе копии диска.
Важно!
Процесс создании копии диска занимает некоторое время.
Пример запроса:
curl -XPOST https://panel.netangels.ru/api/cvds/v1/vms/ \
--header "Authorization: Token rscteuq40witrc5ROpcF" \
-d 'type=tiny' \
-d 'storage=587' \
-d 'storage_copy_origin=true'
Пример успешного ответа:
{
"ip": "192.168.202.191"
}
Существует ограничение на количество запросов
Список
URL: /api/cvds/v1/vms/
Метод: GET
Результат: JSON
Пример запроса:
curl -XGET https://panel.netangels.ru/api/cvds/v1/vms/ \
--header 'Authorization: Token sDZfdN8MhD4fnWVE6xyX'
Пример успешного ответа:
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 304,
"ips": [
{
"id": 397,
"ipvalue": "192.168.202.219"
}
],
"memsize": 512,
"monitoring_enabled": false,
"name": "tt34",
"ncpu": 1,
"ssh_keys": [],
"state": "active",
"storages": [
527
],
"type": "tiny",
"vm_id": "az_vm_dcf4a74b"
},
{
"id": 312,
"ips": [
{
"id": 405,
"ipvalue": "192.168.202.199"
}
],
"memsize": 512,
"monitoring_enabled": false,
"name": "ttt_globals_2",
"ncpu": 1,
"ssh_keys": [],
"state": "active",
"storages": [
535
],
"type": "tiny",
"vm_id": "az_vm_d6721e9b"
},
...
{
"id": 360,
"ips": [
{
"id": 452,
"ipvalue": "192.168.202.218"
}
],
"memsize": 512,
"monitoring_enabled": false,
"name": "az_vm_7f379b5e",
"ncpu": 1,
"ssh_keys": [
10
],
"state": "active",
"storages": [
585
],
"type": "tiny",
"vm_id": "az_vm_7f379b5e"
}
]
}
Существует ограничение на количество запросов
Получение информации по отдельной ВМ
URL: /api/cvds/v1/vms/<id>/
Метод: GET
Результат: JSON
Пример запроса:
curl -XGET https://panel.netangels.ru/api/cvds/v1/vms/360/ \
--header 'Authorization: Token sDZfdN8MhD4fnWVE6xyX'
Пример успешного ответа:
{
"id": 360,
"ips": [
{
"id": 452,
"ipvalue": "192.168.202.218"
}
],
"memsize": 512,
"monitoring_enabled": false,
"name": "az_vm_7f379b5e",
"ncpu": 1,
"ssh_keys": [
10
],
"state": "active",
"storages": [
585
],
"type": "tiny",
"vm_id": "az_vm_7f379b5e"
}
Описание полей:
vm_id
- уникальный идентификатор ВМname
- название ВМtype
,ncpu
,memsize
- параметры тарифа ВМ из списка тарифовstate
- состояние ВМ:- pending - в ожидании
- building - в процессе создания
- active - включена
- stopped - остановлена
- blocked - ресурс заблокирован
- error - ошибка
monitoring_enabled
- флаг показывает состояние услуги мониторингаips
- список идентификаторов и значений IP адресов подключенных к ВМstorages
- список идентификаторов дисков подключенных к ВМssh_keys
- список идентификаторов SSH-ключей
Изменение ВМ
URL: /api/cvds/v1/vms/<id>/
Метод: PATCH
Результат: JSON
Метод позволяет изменять параметры виртуальной машины.
Изменяемые параметры ВМ:
name
- новое название ВМtype
- тариф для ВМ (полеname
) из списка тарифов
Пример запроса:
curl -XPATCH https://panel.netangels.ru/api/cvds/v1/vms/360/ \
--header "Authorization: Token 0PaWQwO4YV559P9Cskdk" \
-d 'type=small'
Пример успешного ответа:
{
"id": 360,
"ips": [
{
"id": 452,
"ipvalue": "192.168.202.218"
}
],
"memsize": 1024,
"monitoring_enabled": false,
"name": "az_vm_7f379b5e",
"ncpu": 2,
"ssh_keys": [
10
],
"state": "active",
"storages": [
585
],
"type": "small",
"vm_id": "az_vm_7f379b5e"
}
Включение/Выключение
Включать возможно только ВМ в состоянии stopped
, а выключать в состоянии active
URL: /api/cvds/v1/vms/<id>/start/
и /api/cvds/v1/vms/<id>/stop/
Метод: POST
Результат: JSON
Пример запроса:
curl -XPOST https://panel.netangels.ru/api/cvds/v1/vms/304/start/ \
--header "Authorization: Token Zd4gON8ghKn7rD2ltbYl"
Пример успешного ответа:
{
"id": 304,
"ips": [
397
],
"memsize": 512,
"monitoring_enabled": false,
"name": "tt34",
"ncpu": 1,
"state": "stopped",
"storages": [
527
],
"type": "tiny",
"vm_id": "az_vm_dcf4a74b"
}
Существует ограничение на количество запросов
Перезагрузка
URL: /api/cvds/v1/vms/<id>/reboot/soft/
и /api/cvds/v1/vms/<id>/reboot/hard/
Метод: POST
Результат: JSON
Пример запроса:
curl -XPOST https://panel.netangels.ru/api/cvds/v1/vms/304/reboot/soft/ \
--header "Authorization: Token Zd4gON8ghKn7rD2ltbYl"
Пример успешного ответа:
{
"id": 304,
"ips": [
397
],
"memsize": 512,
"monitoring_enabled": false,
"name": "tt34",
"ncpu": 1,
"state": "active",
"storages": [
527
],
"type": "tiny",
"vm_id": "az_vm_dcf4a74b"
}
Удаление
URL: /api/cvds/v1/vms/<id>/
Метод: DELETE
Результат: JSON
Пример запроса:
curl -XDELETE https://panel.netangels.ru/api/cvds/v1/vms/343/ \
--header "Authorization: Token Zd4gON8ghKn7rD2ltbYl" \
-d "delete_storages=true"
При успешном запросе сервер вернет HTTP-код 204 (NO CONTENT)
Описание полей:
delete_storages
- удалить связанные диски