Диски виртуальной машины


Возможные операции:


Получение списка всех дисков

URL: /api/cvds/v1/storages/
Метод: GET
Результат: JSON

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

curl -XGET https://panel.netangels.ru/api/cvds/v1/storages/ \
    --header 'Authorization: Token sDZfdN8MhD4fnWVE6xyX'

Пример успешного ответа:

{
    "count": 20, 
    "next": "https://panel.netangels.ru/api/cvds/v1/storages/?page=2", 
    "previous": null, 
    "results": [
        {
            "id": 491, 
            "name": "az_st_922a224a", 
            "size": 5, 
            "state": "active", 
            "storage_id": "az_st_922a224a", 
            "type": "vg", 
            "vm": 267
        }, 
        {
            "id": 521, 
            "name": "az_st_5f07e01a", 
            "size": 5, 
            "state": "active", 
            "storage_id": "az_st_5f07e01a", 
            "type": "vg", 
            "vm": 298
        }, 
        ... 
        {
            "id": 563, 
            "name": "az_st_57d6c0e5", 
            "size": 5, 
            "state": "building", 
            "storage_id": "az_st_57d6c0e5", 
            "type": "vg", 
            "vm": 336
        }
    ]
}

Получение информации по диску

URL: /api/cvds/v1/storages/<id>/
Метод: GET
Результат: JSON

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

curl -XGET https://panel.netangels.ru/api/cvds/v1/storages/562/ \
    --header 'Authorization: Token sDZfdN8MhD4fnWVE6xyX'

Пример успешного ответа:

{
    "id": 562, 
    "name": "az_st_36ce03a6", 
    "size": 5, 
    "state": "building", 
    "storage_id": "az_st_36ce03a6", 
    "type": "vg", 
    "vm": 335
}

Описание полей:

  • name - название диска
  • storage_id - уникальный идентификатор диска
  • state - состояние диска:
    • pending - в ожидании
    • building - в процессе создания
    • active - ресурс активен
    • stopped - остановлен
    • blocked - ресурс заблокирован
    • error - ошибка
  • type - тип диска:
    • vg - диск стандартной скорости SAS
    • vgssd - быстрый диск SSD
  • size - размер диска (в Гб)
  • vm - идентификатор ВМ

Изменение параметров диска

URL: /api/cvds/v1/storages/<id>/
Метод: PATCH
Результат: JSON

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

Параметры запроса:

  • type - желаемый тип диска:
    • vg - диск стандартной скорости SAS
    • vgssd - быстрый диск SSD
  • size - желаемый размер диска (в Гб). Значение должно быть кратно 5. Существуют ограничения:
    • SAS от 5 до 250 Гб
    • SSD от 5 до 80 Гб

Увеличение размера диска

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

curl -XPATCH https://panel.netangels.ru/api/cvds/v1/storages/599/ \
    --header "Authorization: Token Ba9n7SJgWl42moL1cfds" \
    -d 'type=vg' \
    -d 'size=10'

Пример успешного ответа:

{
  "id": 599,
  "name": "az_st_d7efa6f3",
  "storage_id": "az_st_d7efa6f3",
  "state": "active",
  "type": "vg",
  "size": 10,
  "vm": null
}

Смена типа диска или уменьшение размера

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

curl -XPATCH https://panel.netangels.ru/api/cvds/v1/storages/599/ \
    --header "Authorization: Token Ba9n7SJgWl42moL1cfds" \
    -d 'type=vgssd' \
    -d 'size=5'

Пример успешного ответа:

{
  "id": 600,
  "name": "az_st_a37b9055",
  "storage_id": "az_st_a37b9055",
  "state": "building",
  "type": "vgssd",
  "size": 5,
  "vm": null
}

При успешном изменении HTTP-код будет 201 (CREATED), а заголовок Location содержит ссылку на новый ресурс диска:

Location: https://panel.netangels.ru/api/cvds/v1/storages/600/

По этой ссылке можно отслеживать процесс изменения диска.
Когда поле state станет active, то это будет означать успешное создание.

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

2/минуту

Относительное увеличение диска

URL: /api/cvds/v1/storages/<id>/resize/up/
Метод: PATCH
Результат: JSON

Метод позволяет увеличить размер диска относительно текущего.

Параметры запроса:

  • delta - желаемая величиа увеличения (в Гб). Значение должно быть кратно 5.
    При отсутствии параметра значение по умолчанию равно 5 Гб.

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

curl -XPATCH https://panel.netangels.ru/api/cvds/v1/storages/599/resize/up/ \
    --header "Authorization: Token Ba9n7SJgWl42moL1cfds" \
    -d 'delta=10'

Пример успешного ответа:

{
  "id": 599,
  "name": "az_st_d7efa6f3",
  "storage_id": "az_st_d7efa6f3",
  "state": "active",
  "type": "vg",
  "size": 20,
  "vm": null
}

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

2/минуту

Фильтрация по vm

URL: /api/cvds/v1/storages/?vm=<vm_id>
Метод: GET
Результат: JSON

Параметры запроса:

  • vm - идентификатор ВМ, возможно указывать поля id и vm_id

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

curl -XGET https://panel.netangels.ru/api/cvds/v1/storages/?vm=az_vm_dcf4a74b \
    --header 'Authorization: Token sDZfdN8MhD4fnWVE6xyX'

Пример успешного ответа:

{
    "count": 1, 
    "next": null, 
    "previous": null, 
    "results": [
        {
            "id": 527, 
            "name": "az_st_30c9e387", 
            "size": 5, 
            "state": "active", 
            "storage_id": "az_st_30c9e387", 
            "type": "vg", 
            "vm": 304
        }
    ]
}