Виртуальные машины


Базовый 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 Гб

Опциональные:

Для установки некоторых специальных образов (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 секунд.

Создание ВМ на основе существующего диска

Обязательные параметры запроса:

Опциональные:

  • 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"
}

Существует ограничение на количество запросов

2/минуту

Список

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"
        }
    ]
}

Существует ограничение на количество запросов

200/минуту

Получение информации по отдельной ВМ

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

Метод позволяет изменять параметры виртуальной машины.

Изменяемые параметры ВМ:

Пример запроса:

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"
}

Существует ограничение на количество запросов

50/минуту

Перезагрузка

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 - удалить связанные диски