REST API

Примечание

Для получения доступа к REST API необходим токен. Получение токена описано во вкладке с дополнительной информацией.


CloudManager API

Позволяет управлять узлами, предоставляет дополнительную информацию, используемую в модуле CloudManager.

Информация о модуле

Подробная информация о модуле.

GET
/v1/info
Получение подробной информации о модуле.
Запрос
Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/info | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

license (Optional)

body

object

Информация о лицензии модуля.

version

body

string

Версия модуля.

Пример получения информации о модуле в JSON формате:

{
    "info": {
        "license": {
            "created_at": 1538141220,
            "expire_at": 1545955200,
            "module_package": "cloud_manager",
            "name": "TestLicense",
            "product": "CloudManager",
            "surrogate_name": "CloudManager",
            "unique_id": "04-002-4b21d15097656c2c0834",
            "verified": true
        },
        "version": "2.0"
    }
}

Виртуальные машины и вычислительные узлы

Действия над виртуальными машинами и вычислительными узлами.

POST
/v1/hosts/{host_name}/actions/evacuate
Эвакуация виртуальных машин с вычислительного узла.

Эвакуация всех виртуальных машин с вычислительного узла.

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

Name

In

Type

Description

host_name

path

string

Имя узла. Обязательный параметр.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/hosts/$host_name/actions/evacuate
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
POST
/v1/hosts/{host_name}/actions/shutdown
Выключение вычислительного узла.

Выключение вычислительного узла с попыткой переноса запущенных виртуальных машин.

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

Name

In

Type

Description

host_name

path

string

Имя узла. Обязательный параметр.

allow_off_vm (Optional)

body

bool

Дополнительный параметр, разрешает жесткую миграцию виртуальной машины в случае отказа живой миграции.

allow_evacuate (Optional)

body

bool

Дополнительный параметр, разрешает эвакуацию виртуальной машины в случае отказа живой миграции.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"allow_off_vm": true, "allow_evacuate": true}' http://controller:9362/v1/hosts/$host_name/actions/shutdown
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
POST
/v1/hosts/{host_name}/actions/decommission
Вывод вычислительного узла из эксплуатации.

Вывод вычислительного узла из эксплуатации с попыткой переноса запущенных виртуальных машин.

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

Name

In

Type

Description

host_name

path

string

Имя узла. Обязательный параметр.

allow_live_migrate (Optional)

body

bool

Дополнительный параметр, разрешает живую миграцию виртуальной машины.

allow_migrate (Optional)

body

bool

Дополнительный параметр, разрешает жесткую миграцию виртуальной машины в случае отказа живой миграции.

allow_evacuate (Optional)

body

bool

Дополнительный параметр, разрешает эвакуацию виртуальной машины в случае отказа живой миграции.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"allow_live_migrate": true, "allow_migrate": true, "allow_evacuate": true}' http://controller:9362/v1/hosts/$host_name/actions/decommission
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
POST
/v1/hosts/actions/restart
Перезапуск вычислительных узлов.

Выполнение перезапуска вычислительных узлов с предварительной миграцией виртуальных машин.

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

Name

In

Type

Description

hosts

body

list

Имена вычислительных узлов.

in_sequence (Optional)

body

bool

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

allow_off_vm (Optional)

body

bool

Дополнительный параметр, разрешает жесткую миграцию виртуальной машины в случае отказа живой миграции.

allow_evacuate (Optional)

body

bool

Дополнительный параметр, разрешает эвакуацию виртуальной машины в случае отказа живой миграции.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"hosts": ["mnode1.develop.stand.loc", "mnode2.develop.stand.loc"], "allow_off_vm": true, "allow_evacuate": true, "in_sequence": true}' http://controller:9362/v1/hosts/actions/restart
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
POST
/v1/servers/{server_id}/actions/balance
Балансировка виртуальной машины на первый узел, удовлетворяющий условиям.

Балансировка виртуальной машины на другой узел.

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

Name

In

Type

Description

server_id

path

string

Идентификатор виртуальной машины.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/servers/$server_id/actions/balance

Эта операция не имеет содержания ответа.

POST
/v1/servers/{server_id}/actions/recover
Восстановление виртуальной машины со сбросом состояния.

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

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

Name

In

Type

Description

server_id

path

string

Идентификатор виртуальной машины.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/servers/$server_id/actions/recover
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
POST
/v1/servers/{server_id}/actions/repair
Восстановление виртуальной машины.

Выполнение попытки восстановления виртуальной машины.

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

Name

In

Type

Description

server_id

path

string

Идентификатор виртуальной машины.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/servers/$server_id/actions/repair
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
POST
/v1/servers/{server_id}/actions/reset-reboot
Сброс состояния виртуальной машины с возможностью перезагрузки.

Выполнение попытки сброса состояния виртуальной машины с перезагрузкой.

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

Name

In

Type

Description

server_id

path

string

Идентификатор виртуальной машины.

reboot (Optional)

body

bool

Дополнительный параметр, позволяет выполнять перезагрузку после сброса состояния.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"reboot": true}' http://controller:9362/v1/servers/$server_id/actions/reset-reboot

Эта операция не имеет содержания ответа.

POST
/v1/servers/{server_id}/actions/wakeup
Пробуждение виртуальной машины.

Выполнение попытки пробуждения виртуальной машины.

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

Name

In

Type

Description

server_id

path

string

Идентификатор виртуальной машины.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/servers/$server_id/actions/wakeup

Эта операция не имеет содержания ответа.

POST
/v1/servers/{server_id}/actions/clone
Полное клонирование виртуальной машины.

Выполнение полного клонирования виртуальной машины с копированием подключенных дисков.

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

Name

In

Type

Description

server_id

path

string

Идентификатор виртуальной машины.

count (Optional)

body

integer

Количество клонов.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"count": 2}' http://controller:9362/v1/servers/$server_id/actions/clone
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
GET
/v1/system_metadata/{instance_uuid}
Получение метаданных.

Получение метаданных виртуальной машины.

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

Name

In

Type

Description

instance_uuid

path

string

Идентификатор виртуальной машины.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" $controller:9362/v1/system_metadata/45bb8680-c070-4080-be45-ec4d2312eda8 | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

metadata (Optional)

body

string

Метаданные. Пример: {"metadata": {"cpu_benchmark": "test"}}. Возможные ключи метаданных:

  • cpu_benchmark.

Пример результата в JSON формате:

{
    "metadata": {
        "image_base_image_ref": "f0576590-ad14-4963-a47d-4fd17b6ddb80",
        "image_container_format": "bare",
        "image_disk_format": "qcow2",
        "image_min_disk": "10",
        "image_min_ram": "0"
    }
}
PUT
/v1/system_metadata/{instance_uuid}
Обновление метаданных.

Обновление метаданных виртуальной машины.

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

Name

In

Type

Description

instance_uuid

path

string

Идентификатор виртуальной машины.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"image_min_ram": "1", "image_min_disk": "10", "image_disk_format": "qcow2", "image_container_format": "bare", "image_base_image_ref": "f0576590-ad14-4963-a47d-4fd17b6ddb80"}' $controller:9362/v1/system_metadata/45bb8680-c070-4080-be45-ec4d2312eda8

Эта операция не имеет содержания ответа.

DELETE
/v1/system_metadata/{instance_uuid}/removed/
Удаление метаданных.

Удаление метаданных виртуальной машины.

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

Name

In

Type

Description

instance_uuid

path

string

Идентификатор виртуальной машины.

removed

path

string

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

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" $controller:9362/v1/system_metadata/45bb8680-c070-4080-be45-ec4d2312eda8/removed/image_min_disk | python -m json.tool

Эта операция не имеет содержания ответа.

Классы узла

Действия с классами узлов.

GET
/v1/node-classes/
Получение списка классов узла.

Получение списка классов узла.

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

Name

In

Type

Description

id (Optional)

path

integer

Идентификатор класса узла.

name (Optional)

path

string

Имя класса узла.

offset (Optional)

path

integer

Номер позиции для получения данных.

limit (Optional)

path

integer

Ограничение количества получаемых данных.

Параметры, поддерживающие модификаторы: id, name.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/node-classes/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор класса узла.

name

body

string

Имя класса узла.

node_types

body

list

Список типов узла.

is_default

body

bool

Параметр, обозначающий, является ли класс классом узла по умолчанию.

Пример результата в JSON формате:

{
    "node_classes": [
        {
            "id": 1,
            "is_default": true,
            "name": "hypervisor",
            "node_types": [
                {
                    "id": 1,
                    "name": ""
                },
                {
                    "id": 2,
                    "name": "QEMU"
                },
                {
                    "id": 3,
                    "name": "KVM"
                },
                {
                    "id": 4,
                    "name": "Docker"
                },
                {
                    "id": 5,
                    "name": "Xen"
                },
                {
                    "id": 6,
                    "name": "VMware"
                },
                {
                    "id": 7,
                    "name": "HyperV"
                }
            ]
        },
        {
            "id": 2,
            "is_default": false,
            "name": "Storage host",
            "node_types": [
                {
                    "id": 8,
                    "name": ""
                },
                {
                    "id": 9,
                    "name": "Ceph"
                },
                {
                    "id": 10,
                    "name": "mdraid"
                },
                {
                    "id": 11,
                    "name": "bcashed"
                },
                {
                    "id": 12,
                    "name": "GlusterFS"
                },
                {
                    "id": 13,
                    "name": "Sheepdog"
                }
            ]
        },
        {
            "id": 3,
            "is_default": false,
            "name": "Network host",
            "node_types": [
                {
                    "id": 14,
                    "name": ""
                },
                {
                    "id": 15,
                    "name": "Network node"
                },
                {
                    "id": 16,
                    "name": "Commutator"
                },
                {
                    "id": 17,
                    "name": "Router"
                }
            ]
        },
        {
            "id": 4,
            "is_default": false,
            "name": "Server",
            "node_types": [
                {
                    "id": 18,
                    "name": ""
                },
                {
                    "id": 19,
                    "name": "Controller node"
                },
                {
                    "id": 20,
                    "name": "PXE"
                },
                {
                    "id": 21,
                    "name": "DHCP"
                },
                {
                    "id": 22,
                    "name": "DNS"
                },
                {
                    "id": 23,
                    "name": "NTP"
                }
            ]
        }
    ]
}
GET
/v1/node-classes/count
Получение количества классов узла.

Получение количества классов узла.

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

Name

In

Type

Description

id (Optional)

path

integer

Идентификатор класса узла.

name (Optional)

path

string

Имя класса узла.

Параметры, поддерживающие модификаторы: id, name.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/node-classes/count | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

count

body

integer

Количество объектов.

Пример результата в JSON формате:

{
    "count": 4
}
POST
/v1/node-classes/
Создание класса узла.

Создание нового класса узла.

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

Name

In

Type

Description

name

body

string

Имя класса узла.

node_types (Optional)

body

list

Список типов узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"node_class": {"name": "test_class", "node_types": ["type1", "type2"]}}' http://controller:9362/v1/node-classes/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор класса узла.

name

body

string

Имя класса узла.

node_types

body

list

Список типов узла.

is_default

body

bool

Параметр, обозначающий, является ли класс классом узла по умолчанию.

Пример результата в JSON формате:

{
    "node_class": {
        "id": 8,
        "is_default": false,
        "name": "test_class",
        "node_types": [
            {
                "id": 27,
                "name": "type1"
            },
            {
                "id": 28,
                "name": "type2"
            }
        ]
    }
}
GET
/v1/node-classes/{class_id}
Получение информации о классе узла.

Получение информации о классе узла.

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

Name

In

Type

Description

class_id

path

integer

Идентификатор класса узла.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/node-classes/$class_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор класса узла.

name

body

string

Имя класса узла.

node_types

body

list

Список типов узла.

is_default

body

bool

Параметр, обозначающий, является ли класс классом узла по умолчанию.

Пример результата в JSON формате:

{
    "node_class": {
        "id": 8,
        "is_default": false,
        "name": "test_class",
        "node_types": [
            {
                "id": 27,
                "name": "type1"
            },
            {
                "id": 28,
                "name": "type2"
            }
        ]
    }
}
PUT
/v1/node-classes/{class_id}
Редактирование класса узла.

Редактирование существующего класса узла.

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

Name

In

Type

Description

class_id

path

integer

Идентификатор класса узла.

name (Optional)

body

string

Имя класса узла.

node_types (Optional)

body

list

Список типов узла.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"node_class": {"name": "test_class_renamed"}}' http://controller:9362/v1/node-classes/$class_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор класса узла.

name

body

string

Имя класса узла.

node_types

body

list

Список типов узла.

is_default

body

bool

Параметр, обозначающий, является ли класс классом узла по умолчанию.

Пример результата в JSON формате:

{
    "node_class": {
        "id": 8,
        "is_default": false,
        "name": "test_class_renamed",
        "node_types": [
            {
                "id": 27,
                "name": "type1"
            },
            {
                "id": 28,
                "name": "type2"
            }
        ]
    }
}
DELETE
/v1/node-classes/{class_id}
Удаление класса узла.

Удаление существующего класса узла.

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

Name

In

Type

Description

class_id

path

integer

Идентификатор класса узла.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/node-classes/$class_id

Эта операция не имеет содержания ответа.

GET
/v1/node-classes/{class_id}/types/
Получение списка типов класса узла.

Получение списка типов класса узла.

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

Name

In

Type

Description

class_id

path

integer

Идентификатор класса узла.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/node-classes/$class_id/types/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор типа класса узла.

name

body

string

Имя типа класса узла.

Пример результата в JSON формате:

{
    "node_types": [
        {
            "id": 27,
            "name": "type1"
        },
        {
            "id": 28,
            "name": "type2"
        }
    ]
}
POST
/v1/node-classes/{class_id}/types/
Создание нового типа для класса узла.

Создание нового типа для существующего класса узла.

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

Name

In

Type

Description

class_id

path

integer

Идентификатор класса узла.

name (Optional)

body

string

Имя типа класса узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"node_type": {"name": "new_type"}}' http://controller:9362/v1/node-classes/$class_id/types/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор типа класса узла.

name

body

string

Имя типа класса узла.

Пример результата в JSON формате:

{
    "node_type": {
        "id": 29,
        "name": "new_type"
    }
}
PUT
/v1/node-classes/{class_id}/types/{type_id}
Изменение типа класса узла.

Изменение типа существующего класса узла.

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

Name

In

Type

Description

class_id

path

integer

Идентификатор класса узла.

type_id (Optional)

body

integer

Идентификатор типа класса узла.

name (Optional)

body

string

Имя типа класса узла.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"node_type": {"name": "type_renamed"}}' http://controller:9362/v1/node-classes/$class_id/types/$type_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор типа класса узла.

name

body

string

Имя типа класса узла.

Пример результата в JSON формате:

{
    "node_type": {
        "id": 29,
        "name": "type_renamed"
    }
}
DELETE
/v1/node-classes/{class_id}/types/{type_id}
Удаление типа класса узла.

Удаление типа существующего класса узла.

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

Name

In

Type

Description

class_id

path

integer

Идентификатор класса узла.

type_id

path

integer

Идентификатор типа класса узла.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/node-classes/$class_id/types/$type_id

Эта операция не имеет содержания ответа.

PXE образы узлов

Позволяет управлять PXE образами узлов.

GET
/v1/node-images/
Получение списка PXE образов.

Получение списка PXE образов.

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

Name

In

Type

Description

id (Optional)

path

integer

Идентификатор PXE образа.

created_at (Optional)

path

string

Дата и время создания объекта.

image_name (Optional)

path

string

Имя PXE образа.

offset (Optional)

path

integer

Номер позиции для получения данных.

limit (Optional)

path

integer

Ограничение количества получаемых данных.

Параметры, поддерживающие модификаторы: id, image_name, created_at.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/node-images/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор PXE образа.

created_at

body

string

Дата и время создания объекта.

image_name

body

string

Имя PXE образа.

file_data

body

string

Содержимое PXE образа.

Пример получения списка PXE образов в JSON формате:

{
    "node_images": [
        {
            "created_at": "2018-10-15T12:59:50",
            "file_data": "default vesamenu.c32\naprompt 1\ntimeout 30\nlabel ubuntu 14.04\nmenu label CENTER COMPUTE NODE DEFAULT\nkernel vmlinuz\nappend initrd=dracut root=192.168.100.1:/mnt/rootfs biosdevname=0 ip=eth0:on ip=eth1:on bond=bond0:eth0,eth1:mode=6 ip=bond0:dhcp ro",
            "id": 1,
            "image_name": "default"
        }
    ]
}
GET
/v1/node-images/count
Получение количества PXE образов.

Получение количества PXE образов.

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

Name

In

Type

Description

id

path

integer

Идентификатор PXE образа.

created_at (Optional)

path

string

Дата и время создания объекта.

image_name (Optional)

path

string

Имя PXE образа.

offset (Optional)

path

integer

Номер позиции для получения данных.

limit (Optional)

path

integer

Ограничение количества получаемых данных.

Параметры, поддерживающие модификаторы: id, image_name, created_at.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/node-images/count | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

count

body

integer

Количество объектов.

Пример получения количества PXE образов в JSON формате:

{
    "count": 1
}
GET
/v1/node-images/{image_id}
Получение информации о PXE образе.

Получение информации о PXE образе.

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

Name

In

Type

Description

image_id

path

integer

Идентификатор PXE образа.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/node-images/$image_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

created_at

body

string

Дата и время создания объекта.

file_data

body

string

Содержимое PXE образа.

id

body

integer

Идентификатор PXE образа.

image_name

body

string

Имя PXE образа.

Пример получения информации об указанном PXE образе в JSON формате:

{
    "node_image": {
        "created_at": "2018-10-15T12:59:50",
        "file_data": "default vesamenu.c32\naprompt 1\ntimeout 30\nlabel ubuntu 14.04\nmenu label CENTER COMPUTE NODE DEFAULT\nkernel vmlinuz\nappend initrd=dracut root=192.168.100.1:/mnt/rootfs biosdevname=0 ip=eth0:on ip=eth1:on bond=bond0:eth0,eth1:mode=6 ip=bond0:dhcp ro",
        "id": 1,
        "image_name": "default"
    }
}
POST
/v1/node-images/
Создание PXE образа.

Создание PXE образа.

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

Name

In

Type

Description

image_name

body

string

Имя PXE образа.

file_data

body

string

Содержимое PXE образа.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"node_image":{"image_name": "test_image", "file_data": "root=test"}}' http://controller:9362/v1/node-images/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

created_at

body

string

Дата и время создания объекта.

file_data

body

string

Содержимое PXE образа.

id

body

integer

Идентификатор PXE образа.

image_name

body

string

Имя PXE образа.

Пример результата в JSON формате:

{
    "node_image": {
        "created_at": "2018-10-24T09:36:40",
        "file_data": "root=test",
        "id": 2,
        "image_name": "test_image"
    }
}
DELETE
/v1/node-images/{image_id}
Удаление PXE образа.

Удаление PXE образа.

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

Name

In

Type

Description

id

path

integer

Идентификатор PXE образа.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/node-images/$image_id

Эта операция не имеет содержания ответа.

Средства управления питанием

Позволяет управлять средствами управления питанием, предоставляет дополнительную информацию, используемую в модуле CloudManager.

GET
/v1/power-controls/
Получение списка средств управления питанием.

Получение списка средств управления питанием.

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

Name

In

Type

Description

id (Optional)

path

integer

Идентификатор средства управления питанием.

created_at (Optional)

path

string

Дата и время создания объекта.

title (Optional)

path

string

Наименование средства управления питанием.

control_type (Optional)

path

string

Тип средства.

protocol_type (Optional)

path

string

Тип протокола.

host (Optional)

path

string

Имя хоста или IP-адрес средства управления питанием.

port_number (Optional)

path

string

Номер порта.

offset (Optional)

path

integer

Номер позиции для получения данных.

limit (Optional)

path

integer

Ограничение количества получаемых данных.

Параметры, поддерживающие модификаторы: id, created_at, title, control_type, protocol_type, host, port_number.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/power-controls/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор средства управления питанием.

time_created

body

string

Дата и время создания объекта.

time_updated

body

string

Дата и время изменения объекта.

title

body

string

Наименование средства управления питанием.

control_type

body

string

Тип средства.

protocol_type

body

string

Тип протокола.

host

body

string

Имя хоста или IP-адрес средства управления питанием.

login

body

string

Логин для подключения к средству управления питанием.

port_number

body

string

Номер порта.

coils_count

body

integer

Общее количество выходных портов.

used_coils_count

body

integer

Количество используемых выходных портов.

coil_map

body

object

Карты выходных портов.

Пример результата в JSON формате:

{
    "power_controls": [
        {
            "coil_map": {
                "1": {
                    "is_default": true,
                    "is_initialized": true,
                    "node_id": 1,
                    "node_name": "mnode1.dev-cnt7q-ovs-02.stand.loc",
                    "power_control_port": "1",
                    "power_state": "power_on"
                }
            },
            "coils_count": 1,
            "control_type": "SupermicroRackDevice",
            "host": "10.35.17.30",
            "id": 1,
            "login": "ADMIN",
            "port_number": 623,
            "protocol_type": "ipmi",
            "time_created": "2018-10-17T12:18:35",
            "time_updated": null,
            "title": "test",
            "used_coils_count": 1
        },
        {
            "coil_map": {
                "1": {
                    "is_default": true,
                    "is_initialized": true,
                    "node_id": 2,
                    "node_name": "mnode2.dev-cnt7q-ovs-02.stand.loc",
                    "power_control_port": "1",
                    "power_state": "power_on"
                }
            },
            "coils_count": 1,
            "control_type": "SupermicroRackDevice",
            "host": "10.35.17.31",
            "id": 2,
            "login": "ADMIN",
            "port_number": 623,
            "protocol_type": "ipmi",
            "time_created": "2018-10-18T07:37:48",
            "time_updated": null,
            "title": "test 2",
            "used_coils_count": 1
        }
    ]
}
GET
/v1/power-controls/count
Получение количества средств управления питанием.

Получение количества средств управления питанием.

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

Name

In

Type

Description

id (Optional)

path

integer

Идентификатор средства управления питанием.

created_at (Optional)

path

string

Дата и время создания объекта.

title (Optional)

path

string

Наименование средства управления питанием.

control_type (Optional)

path

string

Тип средства.

protocol_type (Optional)

path

string

Тип протокола.

host (Optional)

path

string

Имя хоста или IP-адрес средства управления питанием.

port_number (Optional)

path

string

Номер порта.

Параметры, поддерживающие модификаторы: id, created_at, title, control_type, protocol_type, host, port_number.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/power-controls/count | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

count

body

integer

Количество объектов.

Пример результата в JSON формате:

{
    "count": 2
}
POST
/v1/power-controls/
Создание средства управления питанием.

Создание средства управления питанием.

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

Name

In

Type

Description

control_type

body

string

Тип средства.

protocol_type

body

string

Тип протокола.

host

body

string

Имя хоста или IP-адрес средства управления питанием.

port_number

body

string

Номер порта.

title (Optional)

body

string

Наименование средства управления питанием.

login (Optional)

body

string

Логин для подключения к средству управления питанием.

password (Optional)

body

string

Пароль для подключения к средству управления питанием.

ssh_key (Optional)

body

string

Приватный ключ для подключения к средству управления питанием, зашифрованный алгоритмом RSA. Поддерживается только средствами типа SshDevice.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"power_control": {"control_type": "SupermicroRackDevice", "protocol_type": "ipmi", "host": "10.35.17.33", "port_number": 623, "login": "ADMIN", "password": "PASSWORD"}}' http://controller:9362/v1/power-controls/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор средства управления питанием.

time_created

body

string

Дата и время создания объекта.

time_updated

body

string

Дата и время изменения объекта.

title

body

string

Наименование средства управления питанием.

control_type

body

string

Тип средства.

protocol_type

body

string

Тип протокола.

host

body

string

Имя хоста или IP-адрес средства управления питанием.

login

body

string

Логин для подключения к средству управления питанием.

port_number

body

string

Номер порта.

coils_count

body

integer

Общее количество выходных портов.

used_coils_count

body

integer

Количество используемых выходных портов.

coil_map

body

object

Карты выходных портов.

Пример результата в JSON формате:

{
    "power_control": {
        "coil_map": {
            "1": null
        },
        "coils_count": 1,
        "control_type": "SupermicroRackDevice",
        "host": "10.35.17.33",
        "id": 3,
        "login": "ADMIN",
        "port_number": 623,
        "protocol_type": "ipmi",
        "time_created": "2018-10-24T12:12:02",
        "time_updated": null,
        "title": "ipmi://SupermicroRackDevice@10.35.17.33:623",
        "used_coils_count": 0
    }
}
GET
/v1/power-controls/{power_control_id}
Получение информации о средстве управления питанием.
Запрос
Параметры запроса:

Name

In

Type

Description

power_control_id

path

integer

Идентификатор средства управления питанием.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/power-controls/$power_control_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор средства управления питанием.

time_created

body

string

Дата и время создания объекта.

time_updated

body

string

Дата и время изменения объекта.

title

body

string

Наименование средства управления питанием.

control_type

body

string

Тип средства.

protocol_type

body

string

Тип протокола.

host

body

string

Имя хоста или IP-адрес средства управления питанием.

login

body

string

Логин для подключения к средству управления питанием.

port_number

body

string

Номер порта.

coils_count

body

integer

Общее количество выходных портов.

used_coils_count

body

integer

Количество используемых выходных портов.

coil_map

body

object

Карты выходных портов.

Пример результата в JSON формате:

{
    "power_control": {
        "coil_map": {
            "1": null
        },
        "coils_count": 1,
        "control_type": "SupermicroRackDevice",
        "host": "10.35.17.33",
        "id": 3,
        "login": "ADMIN",
        "port_number": 623,
        "protocol_type": "ipmi",
        "time_created": "2018-10-24T12:12:02",
        "time_updated": null,
        "title": "ipmi://SupermicroRackDevice@10.35.17.33:623",
        "used_coils_count": 0
    }
}
DELETE
/v1/power-controls/{power_control_id}
Удаление средства управления питанием.

Удаление средства управления питанием.

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

Name

In

Type

Description

power_control_id

path

integer

Идентификатор средства управления питанием.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/power-controls/$power_control_id

Эта операция не имеет содержания ответа.

PUT
/v1/power-controls/{power_control_id}
Обновление параметров средства управления питанием.

Обновление параметров средства управления питанием.

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

Name

In

Type

Description

power_control_id

path

integer

Идентификатор средства управления питанием.

control_type (Optional)

body

string

Тип средства.

protocol_type (Optional)

body

string

Тип протокола.

host (Optional)

body

string

Имя хоста или IP-адрес средства управления питанием.

port_number (Optional)

body

string

Номер порта.

title (Optional)

body

string

Наименование средства управления питанием.

login (Optional)

body

string

Логин для подключения к средству управления питанием.

password (Optional)

body

string

Пароль для подключения к средству управления питанием.

ssh_key (Optional)

body

string

Приватный ключ для подключения к средству управления питанием, зашифрованный алгоритмом RSA. Поддерживается только средствами типа SshDevice.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"power_control": {"title": "test_power_control"}}' http://controller:9362/v1/power-controls/$power_control_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор средства управления питанием.

time_created

body

string

Дата и время создания объекта.

time_updated

body

string

Дата и время изменения объекта.

title

body

string

Наименование средства управления питанием.

control_type

body

string

Тип средства.

protocol_type

body

string

Тип протокола.

host

body

string

Имя хоста или IP-адрес средства управления питанием.

login

body

string

Логин для подключения к средству управления питанием.

port_number

body

string

Номер порта.

coils_count

body

integer

Общее количество выходных портов.

used_coils_count

body

integer

Количество используемых выходных портов.

coil_map

body

object

Карты выходных портов.

Пример результата в JSON формате:

{
    "power_control": {
        "coil_map": {
            "1": null
        },
        "coils_count": 1,
        "control_type": "SupermicroRackDevice",
        "host": "10.35.17.33",
        "id": 3,
        "login": "ADMIN",
        "port_number": 623,
        "protocol_type": "ipmi",
        "time_created": "2018-10-24T12:12:02",
        "time_updated": "Wed, 24 Oct 2018 12:42:34 GMT",
        "title": "test_power_control",
        "used_coils_count": 0
    }
}
GET
/v1/power-controls/types
Получение списка типов средств управления питанием.

Получение списка доступных типов средств управления питанием.

Запрос
Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/power-controls/types | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

types

body

list

Список поддерживаемых типов средств управления питанием.

Пример результата в JSON формате:

{
    "types": [
        [
            "ET7067",
            "modbus"
        ],
        [
            "DaenetIP2",
            "snmp"
        ],
        [
            "DaenetIP2_ACPI",
            "snmp"
        ],
        [
            "SshDevice",
            "ssh"
        ],
        [
            "IntelAMT",
            "intel_amt"
        ],
        [
            "SupermicroRackDevice",
            "ipmi"
        ]
    ]
}
GET
/v1/power-controls/protocols
Получение списка поддерживаемых протоколов средств управления питанием.

Получение списка поддерживаемых протоколов средств управления питанием.

Запрос
Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/power-controls/protocols | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

protocols

body

list

Список поддерживаемых протоколов средств управления питанием.

Пример результата в JSON формате:

{
    "protocols": [
        "modbus",
        "ipmi",
        "snmp",
        "ssh",
        "intel_amt"
    ]
}
POST
/v1/power-controls/{power_control_id}/actions/power-off
Отключение выходного порта средства управления питанием.

Отключение выходного порта средства управления питанием.

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

Name

In

Type

Description

power_control_id

path

integer

Идентификатор средства управления питанием.

coil

body

integer

Выходной порт средства управления питанием.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"coil": 1}' http://controller:9362/v1/power-controls/$power_control_id/actions/power-off

Эта операция не имеет содержания ответа.

POST
/v1/power-controls/{power_control_id}/actions/power-on
Включение выходного порта средства управления питанием.

Включение выходного порта средства управления питанием.

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

Name

In

Type

Description

power_control_id

path

integer

Идентификатор средства управления питанием.

coil

body

integer

Выходной порт средства управления питанием.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"coil": 1}' http://controller:9362/v1/power-controls/$power_control_id/actions/power-on

Эта операция не имеет содержания ответа.

GET
/v1/power-controls/{power_control_id}/nodes
Получение списка узлов, привязанных к средству управления питанием.

Получение списка узлов, привязанных к средству управления питанием.

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

Name

In

Type

Description

power_control_id

path

integer

Идентификатор средства управления питанием.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/power-controls/$power_control_id/nodes | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

nodes

body

list

Список узлов.

Пример результата в JSON формате:

{
    "nodes": [
        {
            "active": true,
            "condition": 0,
            "controller_id": null,
            "controller_login": null,
            "controller_password": null,
            "controller_type": null,
            "cpu_amount": null,
            "description": null,
            "dtc_number": 1,
            "hdd_gb": null,
            "hypervisor_id": "2239c611-523c-44d2-9feb-2c6905fbb5c8",
            "id": 1,
            "image": {
                "id": 1,
                "name": "default"
            },
            "inventory_code": null,
            "ip_addresses": ["10.35.222.11"],
            "is_controller": false,
            "is_reserved": false,
            "mac_address": null,
            "name": "mnode1.dev-cnt7q-ovs-02.stand.loc",
            "node_class": {
                "id": 1,
                "is_default": true,
                "name": "hypervisor",
                "node_types": [
                    {
                        "id": 1,
                        "name": ""
                    },
                    {
                        "id": 2,
                        "name": "QEMU"
                    },
                    {
                        "id": 3,
                        "name": "KVM"
                    },
                    {
                        "id": 4,
                        "name": "Docker"
                    },
                    {
                        "id": 5,
                        "name": "Xen"
                    },
                    {
                        "id": 6,
                        "name": "VMware"
                    },
                    {
                        "id": 7,
                        "name": "HyperV"
                    }
                ]
            },
            "cloud_managers": [
                {
                    "is_default": true,
                    "is_initialized": true,
                    "power_control_id": 1,
                    "control_type": "SupermicroRackDevice",
                    "power_control_title": "test",
                    "power_control_port": "1",
                    "protocol_type": "ipmi"
                }
            ],
            "node_type": {
                "id": 2,
                "name": "QEMU"
            },
            "owner": null,
            "power_state": "power_on",
            "rack_number": null,
            "ram_mb": null,
            "row_number": null,
            "title": "\u0442\u0435\u0441\u04422",
            "unit_number": null
        }
    ]
}

Узлы

Позволяет управлять узлами на физическом уровне, предоставляет дополнительную информацию, используемую в модуле CloudManager.

GET
/v1/nodes/
Получение списка узлов.

Получение списка узлов.

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

Name

In

Type

Description

id (Optional)

path

integer

Идентификатор узла.

image_id (Optional)

path

integer

Идентификатор образа узла.

node_class_id (Optional)

path

integer

Идентификатор класса узла.

node_type_id (Optional)

path

integer

Идентификатор типа класса узла.

hypervisor_id (Optional)

path

string

Идентификатор вычислительного узла в OpenStack.

name (Optional)

path

string

Имя узла.

controller_id (Optional)

path

string

Идентификатор виртуального контроллера, к которому привязан узел.

controller_type (Optional)

path

string

Тип виртуального контроллера.

description (Optional)

path

string

Описание узла.

dtc_number (Optional)

path

integer

Номер дата-центра. Может принимать значения от 1 до 99.

unit_number (Optional)

path

integer

Место в стойке. Может принимать значения от 1 до 99.

rack_number (Optional)

path

integer

Номер стойки. Может принимать значения от 1 до 99.

row_number (Optional)

path

integer

Номер ряда стоек. Может принимать значения от 1 до 99.

cpu_amount (Optional)

path

integer

Количество процессоров. Может принимать значения от 0 до 99.

ram_mb (Optional)

path

integer

Объём оперативной памяти (МБ).

hdd_gb (Optional)

path

integer

Объем жесткого диска (ГБ).

mac_address (Optional)

path

string

MAC-адреса узла.

title (Optional)

path

string

Наименование узла.

is_reserved (Optional)

path

bool

Флаг, который указывает, зарезервирован ли узел. По умолчанию: False.

is_controller (Optional)

path

bool

Флаг, который указывает, является ли узел контроллером. По умолчанию: False.

inventory_code (Optional)

path

integer

Инвентарный номер.

power_state (Optional)

path

string

Состояние питания. Возможные значения

  • power_off;

  • power_on.

owner (Optional)

path

string

Имя пользователя, создавшего узел.

active (Optional)

path

bool

Флаг, который указывает, является ли узел активным. По умолчанию: True.

condition (Optional)

path

integer

Состояние узла. Возможные значения:

  • 0 - Out of service (Выведен);

  • 1 - Enable (Включен);

  • 2 - Disable (Выключен);

  • 3 - Alarm (Аварийный);

  • 4 - Reserved (Резервный).

По умолчанию: 0.

offset (Optional)

path

integer

Номер позиции для получения данных.

limit (Optional)

path

integer

Ограничение количества получаемых данных.

with_os_object (Optional)

path

bool

Параметр, позволяющий расширять узлы класса hypervisor объектом os_hypervisor, содержащим атрибуты вычислительного узла OpenStack.

with_hwinfo (Optional)

path

bool

Параметр, позволяющий расширять узлы класса hypervisor объектом hwinfo, содержащим сведения об аппаратном обеспечении и топологии вычислительного узла OpenStack.

Параметры, поддерживающие модификаторы: id, image_id, node_class_id, node_type_id, hypervisor_id, name, controller_id, controller_type, description, dtc_number, unit_number, rack_number, row_number, cpu_amount, ram_mb, hdd_gb, mac_address, title, is_reserved, is_controller, inventory_code, power_state, owner, active, condition.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

active

body

bool

Флаг, который указывает, является ли узел активным. По умолчанию: True.

condition

body

integer

Состояние узла. Возможные значения:

  • 0 - Out of service (Выведен);

  • 1 - Enable (Включен);

  • 2 - Disable (Выключен);

  • 3 - Alarm (Аварийный);

  • 4 - Reserved (Резервный).

По умолчанию: 0.

controller_id

body

string

Идентификатор виртуального контроллера, к которому привязан узел.

controller_type

body

string

Тип виртуального контроллера.

cpu_amount

body

integer

Количество процессоров. Может принимать значения от 0 до 99.

cpu_allocation_ratio

body

float

Допустимое превышение CPU.

description

body

string

Описание узла.

dtc_number

body

integer

Номер дата-центра. Может принимать значения от 1 до 99.

hdd_gb

body

integer

Объем жесткого диска (ГБ).

hypervisor_id

body

string

Идентификатор вычислительного узла в OpenStack.

id

body

integer

Идентификатор узла.

image

body

object

PXE образ узла.

inventory_code

body

integer

Инвентарный номер.

ip_addresses (Optional)

body

list

Список IP-адресов узла. Пример: {"ip_addresses": ["127.0.0.1", "192.168.0.15"]}.

is_controller

body

bool

Флаг, который указывает, является ли узел контроллером. По умолчанию: False.

is_reserved

body

bool

Флаг, который указывает, зарезервирован ли узел. По умолчанию: False.

mac_address

body

string

MAC-адреса узла.

name

body

string

Имя узла.

node_class (Optional)

body

object

Класс узла.

node_type (Optional)

body

object

Тип класса узла.

node_controls

body

list

Список средств управления питанием узла.

owner

body

string

Имя пользователя, создавшего узел.

power_state

body

string

Состояние питания. Возможные значения

  • power_off;

  • power_on.

rack_number

body

integer

Номер стойки. Может принимать значения от 1 до 99.

ram_mb

body

integer

Объём оперативной памяти (МБ).

ram_allocation_ratio

body

float

Допустимое превышение RAM.

row_number

body

integer

Номер ряда стоек. Может принимать значения от 1 до 99.

title

body

string

Наименование узла.

unit_number

body

integer

Место в стойке. Может принимать значения от 1 до 99.

os_hypervisor (Optional)

body

object

Вычислительный узел OpenStack.

hwinfo (Optional)

body

object

Сведения об аппаратном обеспечении и топологии вычислительного узла OpenStack.

availability_storages (Optional)

body

array

Список хранилищ проверки доступности.

Пример результата в JSON формате:

{
    "nodes": [
        {
            "active": true,
            "condition": 0,
            "controller_id": null,
            "controller_type": null,
            "cpu_amount": null,
            "cpu_allocation_ratio": 16.0,
            "description": null,
            "dtc_number": 1,
            "hdd_gb": null,
            "hypervisor_id": "2239c611-523c-44d2-9feb-2c6905fbb5c8",
            "id": 1,
            "image": {
                "id": 1,
                "name": "default"
            },
            "inventory_code": null,
            "ip_addresses": ["10.35.222.11"],
            "is_controller": false,
            "is_reserved": false,
            "mac_address": null,
            "name": "mnode1.dev-cnt7q-ovs-02.stand.loc",
            "node_class": {
                "id": 1,
                "is_default": true,
                "name": "hypervisor"
            },
            "node_controls": [
                {
                    "is_default": true,
                    "is_initialized": true,
                    "power_control_id": 1,
                    "control_type": "SupermicroRackDevice",
                    "power_control_title": "test",
                    "power_control_port": "1",
                    "protocol_type": "ipmi"
                }
            ],
            "node_type": {
                "id": 2,
                "name": "QEMU"
            },
            "owner": null,
            "power_state": "power_on",
            "rack_number": null,
            "ram_mb": null,
            "ram_allocation_ratio": 1.5,
            "row_number": null,
            "title": "\u0442\u0435\u0441\u04422",
            "unit_number": null
        },
        {
            "active": true,
            "condition": 0,
            "controller_id": null,
            "controller_type": null,
            "cpu_amount": null,
            "description": null,
            "dtc_number": null,
            "hdd_gb": null,
            "hypervisor_id": "1b9d6e64-53b2-4097-a302-96d7b4a4e055",
            "id": 2,
            "image": {
                "id": 1,
                "name": "default"
            },
            "inventory_code": null,
            "ip_addresses": ["10.35.222.12"],
            "is_controller": false,
            "is_reserved": false,
            "mac_address": null,
            "name": "mnode2.dev-cnt7q-ovs-02.stand.loc",
            "node_class": {
                "id": 1,
                "is_default": true,
                "name": "hypervisor"
            },
            "node_controls": [
                {
                    "is_default": true,
                    "is_initialized": true,
                    "power_control_id": 2,
                    "control_type": "SupermicroRackDevice",
                    "power_control_title": "test 2",
                    "power_control_port": "1",
                    "protocol_type": "ipmi"
                }
            ],
            "node_type": {
                "id": 2,
                "name": "QEMU"
            },
            "owner": null,
            "power_state": "power_on",
            "rack_number": null,
            "ram_mb": null,
            "row_number": null,
            "title": null,
            "unit_number": null
        }
    ]
}
GET
/v1/nodes/count
Получение количества узлов.

Получение количества узлов.

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

Name

In

Type

Description

id (Optional)

path

integer

Идентификатор узла.

image_id (Optional)

path

integer

Идентификатор образа узла.

node_class_id (Optional)

path

integer

Идентификатор класса узла.

node_type_id (Optional)

path

integer

Идентификатор типа класса узла.

hypervisor_id (Optional)

path

string

Идентификатор вычислительного узла в OpenStack.

name (Optional)

path

string

Имя узла.

controller_id (Optional)

path

string

Идентификатор виртуального контроллера, к которому привязан узел.

controller_type (Optional)

path

string

Тип виртуального контроллера.

description (Optional)

path

string

Описание узла.

dtc_number (Optional)

path

integer

Номер дата-центра. Может принимать значения от 1 до 99.

unit_number (Optional)

path

integer

Место в стойке. Может принимать значения от 1 до 99.

rack_number (Optional)

path

integer

Номер стойки. Может принимать значения от 1 до 99.

row_number (Optional)

path

integer

Номер ряда стоек. Может принимать значения от 1 до 99.

cpu_amount (Optional)

path

integer

Количество процессоров. Может принимать значения от 0 до 99.

ram_mb (Optional)

path

integer

Объём оперативной памяти (МБ).

hdd_gb (Optional)

path

integer

Объем жесткого диска (ГБ).

mac_address (Optional)

path

string

MAC-адреса узла.

title (Optional)

path

string

Наименование узла.

is_reserved (Optional)

path

bool

Флаг, который указывает, зарезервирован ли узел. По умолчанию: False.

is_controller (Optional)

path

bool

Флаг, который указывает, является ли узел контроллером. По умолчанию: False.

inventory_code (Optional)

path

integer

Инвентарный номер.

power_state (Optional)

path

string

Состояние питания. Возможные значения

  • power_off;

  • power_on.

owner (Optional)

path

string

Имя пользователя, создавшего узел.

active (Optional)

path

bool

Флаг, который указывает, является ли узел активным. По умолчанию: True.

condition (Optional)

path

integer

Состояние узла. Возможные значения:

  • 0 - Out of service (Выведен);

  • 1 - Enable (Включен);

  • 2 - Disable (Выключен);

  • 3 - Alarm (Аварийный);

  • 4 - Reserved (Резервный).

По умолчанию: 0.

Параметры, поддерживающие модификаторы: id, image_id, node_class_id, node_type_id, hypervisor_id, name, controller_id, controller_type, description, dtc_number, unit_number, rack_number, row_number, cpu_amount, ram_mb, hdd_gb, mac_address, title, is_reserved, is_controller, inventory_code, power_state, owner, active, condition.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/count | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

count

body

integer

Количество объектов.

Пример результата в JSON формате:

{
    "count": 2
}
GET
/v1/nodes/{node_id}
Получение информации об узле.

Получение информации об узле.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

with_os_object (Optional)

path

bool

Параметр, позволяющий расширять узлы класса hypervisor объектом os_hypervisor, содержащим атрибуты вычислительного узла OpenStack.

with_hwinfo (Optional)

path

bool

Параметр, позволяющий расширять узлы класса hypervisor объектом hwinfo, содержащим сведения об аппаратном обеспечении и топологии вычислительного узла OpenStack.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" "http://controller:9362/v1/nodes/$node_id?with_os_object=true" | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

active

body

bool

Флаг, который указывает, является ли узел активным. По умолчанию: True.

condition

body

integer

Состояние узла. Возможные значения:

  • 0 - Out of service (Выведен);

  • 1 - Enable (Включен);

  • 2 - Disable (Выключен);

  • 3 - Alarm (Аварийный);

  • 4 - Reserved (Резервный).

По умолчанию: 0.

controller_id

body

string

Идентификатор виртуального контроллера, к которому привязан узел.

controller_type

body

string

Тип виртуального контроллера.

cpu_amount

body

integer

Количество процессоров. Может принимать значения от 0 до 99.

description

body

string

Описание узла.

dtc_number

body

integer

Номер дата-центра. Может принимать значения от 1 до 99.

hdd_gb

body

integer

Объем жесткого диска (ГБ).

hypervisor_id

body

string

Идентификатор вычислительного узла в OpenStack.

id

body

integer

Идентификатор узла.

image

body

object

PXE образ узла.

inventory_code

body

integer

Инвентарный номер.

ip_addresses (Optional)

body

list

Список IP-адресов узла. Пример: {"ip_addresses": ["127.0.0.1", "192.168.0.15"]}.

is_controller

body

bool

Флаг, который указывает, является ли узел контроллером. По умолчанию: False.

is_reserved

body

bool

Флаг, который указывает, зарезервирован ли узел. По умолчанию: False.

mac_address

body

string

MAC-адреса узла.

name

body

string

Имя узла.

node_class (Optional)

body

object

Класс узла.

node_controls

body

list

Список средств управления питанием узла.

node_type (Optional)

body

object

Тип класса узла.

owner

body

string

Имя пользователя, создавшего узел.

power_state

body

string

Состояние питания. Возможные значения

  • power_off;

  • power_on.

rack_number

body

integer

Номер стойки. Может принимать значения от 1 до 99.

ram_mb

body

integer

Объём оперативной памяти (МБ).

row_number

body

integer

Номер ряда стоек. Может принимать значения от 1 до 99.

title

body

string

Наименование узла.

unit_number

body

integer

Место в стойке. Может принимать значения от 1 до 99.

os_hypervisor (Optional)

body

object

Вычислительный узел OpenStack.

hwinfo (Optional)

body

object

Сведения об аппаратном обеспечении и топологии вычислительного узла OpenStack.

availability_storages (Optional)

body

array

Список хранилищ проверки доступности.

nas (Optional)

body

string

Подключенные СХД узлы.

Пример результата в JSON формате:

{
    "node": {
        "active": true,
        "condition": 0,
        "controller_id": null,
        "controller_type": null,
        "cpu_amount": null,
        "description": "",
        "dtc_number": null,
        "hdd_gb": null,
        "hypervisor_id": "f5501bd3-d69a-41fc-bcc1-91f512f2313a",
        "id": 1,
        "image": {
            "id": 1,
            "name": "default"
        },
        "inventory_code": "UU",
        "ip_addresses": [
            "10.35.222.12"
        ],
        "is_controller": false,
        "is_reserved": true,
        "mac_address": null,
        "name": "mnode2.dev-cnt7q-ovs-02.stand.loc",
        "nas": {
            "mnode1.dev-cnt7q-ovs-02.stand.loc": ["iqn.2010-10.org.openstack:volume-9ce44bf8-f981-45b8-8ef4-8120f4761420"]
        },
        "node_class": {
            "id": 1,
            "is_default": true,
            "name": "hypervisor"
        },
        "node_controls": [
            {
                "control_type": "SupermicroRackDevice",
                "is_default": false,
                "is_initialized": true,
                "power_control_id": 1,
                "power_control_port": "1",
                "power_control_title": "namety",
                "protocol_type": "ipmi"
            },
            {
                "control_type": "SupermicroRackDevice",
                "is_default": true,
                "is_initialized": true,
                "power_control_id": 3,
                "power_control_port": "1",
                "power_control_title": "name2",
                "protocol_type": "ipmi"
            }
        ],
        "node_type": {
            "id": 2,
            "name": "QEMU"
        },
        "os_hypervisor": {
            "cpu_info": {
                "arch": "x86_64",
                "features": [
                    "pge",
                    "avx",
                    "xsaveopt",
                    "clflush",
                    "sep",
                    "rtm",
                    "tsc_adjust",
                    "tsc-deadline",
                    "invpcid",
                    "tsc",
                    "fsgsbase",
                    "xsave",
                    "smap",
                    "vmx",
                    "erms",
                    "hle",
                    "cmov",
                    "smep",
                    "fpu",
                    "pat",
                    "arat",
                    "lm",
                    "msr",
                    "adx",
                    "3dnowprefetch",
                    "nx",
                    "fxsr",
                    "syscall",
                    "sse4.1",
                    "pae",
                    "sse4.2",
                    "pclmuldq",
                    "pcid",
                    "fma",
                    "vme",
                    "mmx",
                    "osxsave",
                    "cx8",
                    "mce",
                    "de",
                    "aes",
                    "mca",
                    "pse",
                    "lahf_lm",
                    "abm",
                    "rdseed",
                    "popcnt",
                    "pdpe1gb",
                    "apic",
                    "sse",
                    "f16c",
                    "pni",
                    "rdtscp",
                    "avx2",
                    "sse2",
                    "ss",
                    "hypervisor",
                    "bmi1",
                    "bmi2",
                    "ssse3",
                    "cx16",
                    "pse36",
                    "mtrr",
                    "movbe",
                    "rdrand",
                    "x2apic"
                ],
                "model": "Broadwell",
                "topology": {
                    "cells": 1,
                    "cores": 1,
                    "sockets": 2,
                    "threads": 1
                },
                "vendor": "Intel"
            },
            "current_workload": 0,
            "disk_available_least": 80,
            "free_disk_gb": 99,
            "free_ram_mb": 3583,
            "host_ip": "10.35.222.12",
            "hypervisor_hostname": "mnode2.dev-cnt7q-ovs-02.stand.loc",
            "hypervisor_type": "QEMU",
            "hypervisor_version": 2012000,
            "id": "f5501bd3-d69a-41fc-bcc1-91f512f2313a",
            "local_gb": 99,
            "local_gb_used": 0,
            "memory_mb": 4095,
            "memory_mb_used": 512,
            "running_vms": 0,
            "service": {
                "disabled_reason": null,
                "host": "mnode2.dev-cnt7q-ovs-02.stand.loc",
                "id": "bd8c4cd2-909e-4be8-b324-6bf8a7c528bb"
            },
            "state": "up",
            "status": "enabled",
            "vcpus": 2,
            "vcpus_used": 0
        },
        "owner": null,
        "power_state": "power_off",
        "rack_number": null,
        "ram_mb": null,
        "row_number": null,
        "title": null,
        "unit_number": null
    }
}
POST
/v1/nodes/
Создание узла.

Создание узла.

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

Name

In

Type

Description

created_at (Optional)

body

string

Дата и время создания объекта.

image_id (Optional)

body

integer

Идентификатор образа узла.

node_class_id (Optional)

body

integer

Идентификатор класса узла.

node_type_id (Optional)

body

integer

Идентификатор типа класса узла.

ip_addresses (Optional)

body

list

Список IP-адресов узла. Пример: {"ip_addresses": ["127.0.0.1", "192.168.0.15"]}.

hypervisor_id (Optional)

body

string

Идентификатор вычислительного узла в OpenStack.

name (Optional)

body

string

Имя узла.

controller_id (Optional)

body

string

Идентификатор виртуального контроллера, к которому привязан узел.

controller_type (Optional)

body

string

Тип виртуального контроллера.

description (Optional)

body

string

Описание узла.

dtc_number (Optional)

body

integer

Номер дата-центра. Может принимать значения от 1 до 99.

unit_number (Optional)

body

integer

Место в стойке. Может принимать значения от 1 до 99.

rack_number (Optional)

body

integer

Номер стойки. Может принимать значения от 1 до 99.

row_number (Optional)

body

integer

Номер ряда стоек. Может принимать значения от 1 до 99.

cpu_amount (Optional)

body

integer

Количество процессоров. Может принимать значения от 0 до 99.

ram_mb (Optional)

body

integer

Объём оперативной памяти (МБ).

hdd_gb (Optional)

body

integer

Объем жесткого диска (ГБ).

mac_address (Optional)

body

string

MAC-адреса узла.

title (Optional)

body

string

Наименование узла.

is_reserved (Optional)

body

bool

Флаг, который указывает, зарезервирован ли узел. По умолчанию: False.

is_controller (Optional)

body

bool

Флаг, который указывает, является ли узел контроллером. По умолчанию: False.

inventory_code (Optional)

body

integer

Инвентарный номер.

power_state (Optional)

body

string

Состояние питания. Возможные значения

  • power_off;

  • power_on.

owner (Optional)

body

string

Имя пользователя, создавшего узел.

active (Optional)

body

bool

Флаг, который указывает, является ли узел активным. По умолчанию: True.

condition (Optional)

body

integer

Состояние узла. Возможные значения:

  • 0 - Out of service (Выведен);

  • 1 - Enable (Включен);

  • 2 - Disable (Выключен);

  • 3 - Alarm (Аварийный);

  • 4 - Reserved (Резервный).

По умолчанию: 0.

metadata (Optional)

body

string

Метаданные. Пример: {"metadata": {"cpu_benchmark": "test"}}. Возможные ключи метаданных:

  • cpu_benchmark.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"node": {"name": "test-node", "ip_addresses": ["10.35.22.11"]}}' http://controller:9362/v1/nodes/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор узла.

created_at

body

string

Дата и время создания объекта.

image_id

body

integer

Идентификатор образа узла.

node_class (Optional)

body

object

Класс узла.

node_type (Optional)

body

object

Тип класса узла.

hypervisor_id

body

string

Идентификатор вычислительного узла в OpenStack.

name

body

string

Имя узла.

controller_id

body

string

Идентификатор виртуального контроллера, к которому привязан узел.

controller_type

body

string

Тип виртуального контроллера.

description

body

string

Описание узла.

dtc_number

body

integer

Номер дата-центра. Может принимать значения от 1 до 99.

unit_number

body

integer

Место в стойке. Может принимать значения от 1 до 99.

rack_number

body

integer

Номер стойки. Может принимать значения от 1 до 99.

row_number

body

integer

Номер ряда стоек. Может принимать значения от 1 до 99.

cpu_amount

body

integer

Количество процессоров. Может принимать значения от 0 до 99.

ram_mb

body

integer

Объём оперативной памяти (МБ).

hdd_gb

body

integer

Объем жесткого диска (ГБ).

mac_address

body

string

MAC-адреса узла.

title

body

string

Наименование узла.

is_reserved

body

bool

Флаг, который указывает, зарезервирован ли узел. По умолчанию: False.

is_controller

body

bool

Флаг, который указывает, является ли узел контроллером. По умолчанию: False.

inventory_code

body

integer

Инвентарный номер.

power_state

body

string

Состояние питания. Возможные значения

  • power_off;

  • power_on.

owner

body

string

Имя пользователя, создавшего узел.

active

body

bool

Флаг, который указывает, является ли узел активным. По умолчанию: True.

condition

body

integer

Состояние узла. Возможные значения:

  • 0 - Out of service (Выведен);

  • 1 - Enable (Включен);

  • 2 - Disable (Выключен);

  • 3 - Alarm (Аварийный);

  • 4 - Reserved (Резервный).

По умолчанию: 0.

metadata (Optional)

body

string

Метаданные. Пример: {"metadata": {"cpu_benchmark": "test"}}. Возможные ключи метаданных:

  • cpu_benchmark.

Пример результата в JSON формате:

{
    "node": {
        "active": true,
        "condition": 0,
        "controller_id": null,
        "controller_type": null,
        "cpu_amount": null,
        "description": null,
        "dtc_number": null,
        "hdd_gb": null,
        "hypervisor_id": null,
        "id": 4,
        "image": {
            "id": 1,
            "name": "default"
        },
        "inventory_code": null,
        "ip_addresses": ["10.35.22.11"],
        "is_controller": false,
        "is_reserved": false,
        "mac_address": null,
        "name": "test-node",
        "node_class": {
            "id": 1,
            "is_default": true,
            "name": "hypervisor"
        },
        "node_type": {
            "id": 1,
            "name": ""
        },
        "owner": null,
        "power_state": null,
        "rack_number": null,
        "ram_mb": null,
        "row_number": null,
        "title": null,
        "unit_number": null
    }
}
PUT
/v1/nodes/{node_id}
Обновление параметров гипервизора.

Обновление параметров гипервизора.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

created_at (Optional)

body

string

Дата и время создания объекта.

image_id (Optional)

body

integer

Идентификатор образа узла.

node_class_id (Optional)

body

integer

Идентификатор класса узла.

node_type_id (Optional)

body

integer

Идентификатор типа класса узла.

hypervisor_id (Optional)

body

string

Идентификатор вычислительного узла в OpenStack.

name (Optional)

body

string

Имя узла.

controller_id (Optional)

body

string

Идентификатор виртуального контроллера, к которому привязан узел.

controller_type (Optional)

body

string

Тип виртуального контроллера.

description (Optional)

body

string

Описание узла.

dtc_number (Optional)

body

integer

Номер дата-центра. Может принимать значения от 1 до 99.

unit_number (Optional)

body

integer

Место в стойке. Может принимать значения от 1 до 99.

rack_number (Optional)

body

integer

Номер стойки. Может принимать значения от 1 до 99.

row_number (Optional)

body

integer

Номер ряда стоек. Может принимать значения от 1 до 99.

cpu_amount (Optional)

body

integer

Количество процессоров. Может принимать значения от 0 до 99.

ram_mb (Optional)

body

integer

Объём оперативной памяти (МБ).

hdd_gb (Optional)

body

integer

Объем жесткого диска (ГБ).

mac_address (Optional)

body

string

MAC-адреса узла.

title (Optional)

body

string

Наименование узла.

is_reserved (Optional)

body

bool

Флаг, который указывает, зарезервирован ли узел. По умолчанию: False.

is_controller (Optional)

body

bool

Флаг, который указывает, является ли узел контроллером. По умолчанию: False.

inventory_code (Optional)

body

integer

Инвентарный номер.

power_state (Optional)

body

string

Состояние питания. Возможные значения

  • power_off;

  • power_on.

owner (Optional)

body

string

Имя пользователя, создавшего узел.

active (Optional)

body

bool

Флаг, который указывает, является ли узел активным. По умолчанию: True.

condition (Optional)

body

integer

Состояние узла. Возможные значения:

  • 0 - Out of service (Выведен);

  • 1 - Enable (Включен);

  • 2 - Disable (Выключен);

  • 3 - Alarm (Аварийный);

  • 4 - Reserved (Резервный).

По умолчанию: 0.

metadata (Optional)

body

string

Метаданные. Пример: {"metadata": {"cpu_benchmark": "test"}}. Возможные ключи метаданных:

  • cpu_benchmark.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"node": {"title": "node title"}}' http://controller:9362/v1/nodes/$node_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор узла.

created_at

body

string

Дата и время создания объекта.

image_id

body

integer

Идентификатор образа узла.

node_class (Optional)

body

object

Класс узла.

node_type (Optional)

body

object

Тип класса узла.

hypervisor_id

body

string

Идентификатор вычислительного узла в OpenStack.

name

body

string

Имя узла.

controller_id

body

string

Идентификатор виртуального контроллера, к которому привязан узел.

controller_type

body

string

Тип виртуального контроллера.

description

body

string

Описание узла.

dtc_number

body

integer

Номер дата-центра. Может принимать значения от 1 до 99.

unit_number

body

integer

Место в стойке. Может принимать значения от 1 до 99.

rack_number

body

integer

Номер стойки. Может принимать значения от 1 до 99.

row_number

body

integer

Номер ряда стоек. Может принимать значения от 1 до 99.

cpu_amount

body

integer

Количество процессоров. Может принимать значения от 0 до 99.

ram_mb

body

integer

Объём оперативной памяти (МБ).

hdd_gb

body

integer

Объем жесткого диска (ГБ).

mac_address

body

string

MAC-адреса узла.

title

body

string

Наименование узла.

is_reserved

body

bool

Флаг, который указывает, зарезервирован ли узел. По умолчанию: False.

is_controller

body

bool

Флаг, который указывает, является ли узел контроллером. По умолчанию: False.

inventory_code

body

integer

Инвентарный номер.

power_state

body

string

Состояние питания. Возможные значения

  • power_off;

  • power_on.

owner

body

string

Имя пользователя, создавшего узел.

active

body

bool

Флаг, который указывает, является ли узел активным. По умолчанию: True.

condition

body

integer

Состояние узла. Возможные значения:

  • 0 - Out of service (Выведен);

  • 1 - Enable (Включен);

  • 2 - Disable (Выключен);

  • 3 - Alarm (Аварийный);

  • 4 - Reserved (Резервный).

По умолчанию: 0.

metadata (Optional)

body

string

Метаданные. Пример: {"metadata": {"cpu_benchmark": "test"}}. Возможные ключи метаданных:

  • cpu_benchmark.

availability_storages (Optional)

body

array

Список хранилищ проверки доступности.

Пример результата в JSON формате:

{
    "node": {
        "active": true,
        "condition": 0,
        "controller_id": null,
        "controller_type": null,
        "cpu_amount": null,
        "description": null,
        "dtc_number": null,
        "hdd_gb": null,
        "hypervisor_id": null,
        "id": 4,
        "image": {
            "id": 1,
            "name": "default"
        },
        "inventory_code": null,
        "ip_addresses": ["10.35.22.11"],
        "is_controller": false,
        "is_reserved": false,
        "mac_address": null,
        "name": "test-node",
        "node_class": {
            "id": 1,
            "is_default": true,
            "name": "hypervisor"
        },
        "node_type": {
            "id": 1,
            "name": ""
        },
        "owner": null,
        "power_state": null,
        "rack_number": null,
        "ram_mb": null,
        "row_number": null,
        "title": "node title",
        "unit_number": null
    }
}
DELETE
/v1/nodes/{node_id}
Удаление узла.

Удаление узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/assign-image
Назначение PXE образа узлу.

Назначение PXE образа узлу.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

image_id

body

integer

Идентификатор PXE образа.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"image_id": 2}' http://controller:9362/v1/nodes/$node_id/actions/assign-image

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/power-off
Отключение питания узла.

Отключение питания узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/actions/power-off

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/power-on
Включение питания узла.

Включение питания узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/actions/power-on

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/reset
Перезапуск узла.

Перезапуск узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/actions/reset

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/reserve
Перевод узла в резерв.

Перевод узла в резерв.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

is_reserved

body

bool

Флаг, отвечающий за перевод узла в резерв. true для перевода узла в резерв, false для вывода из резерва.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"is_reserved": true}'  http://controller:9362/v1/nodes/$node_id/actions/reserve

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/enable-snmp
Включение SNMP для узла.

Включение SNMP для узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/enable-snmp

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/disable-snmp
Выключение SNMP для узла.

Выключение SNMP для узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/disable-snmp

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/enable-ssh
Включение SSH для узла.

Включение SSH для узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/enable-ssh

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/disable-ssh
Выключение SSH для узла.

Выключение SSH для узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/disable-ssh

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/enable-nodesafe
Включение режима NodeSafe для узла.

Включение режима NodeSafe для узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/enable-nodesafe

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/disable-nodesafe
Выключение режима NodeSafe для узла.

Выключение режима NodeSafe для узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/disable-nodesafe

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/enable-dcc
Включение динамического конфигурирования компонентов для узла.

Примечание

При создании узла по умолчанию режим включен.

Включение режима динамического конфигурирования компонентов для узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/enable-dcc

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/disable-dcc
Выключение динамического конфигурирования компонентов для узла.

Примечание

При создании узла по умолчанию режим включен.

Выключение динамического конфигурирования компонентов для узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/disable-dcc

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/set-cpu-mode
Настройка типа процессора виртуальных машин вычислительного узла.

Настройка типа процессора виртуальных машин вычислительного узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

cpu_emulation_mode

body

string

Режим эмуляции процессора. Принимает значения:

  • null;

  • host-passthrough;

  • host-model;

  • custom.

cpu_model (Optional)

body

string

Эмулируемая модель процессора.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"cpu_emulation_mode": "host-passthrough"}'  http://controller:9362/v1/nodes/$node_id/actions/set-cpu-mode

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/setup-log-redirection
Настройка перенаправления логов вычислительного узла.

Настройка перенаправления логов вычислительного узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

log_redirection_hostname

body

string

Доменное имя или IP-адрес сервера, куда производится перенаправление логирования.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"log_redirection_hostname": "10.10.10.10"}'  http://controller:9362/v1/nodes/$node_id/actions/setup-log-redirection

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/disable-log-redirection
Отключение перенаправления логов вычислительного узла.

Отключение перенаправления логов вычислительного узла.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/actions/disable-log-redirection

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/update-system
Запуск обновления системы на вычислительном узле.

Запуск обновления системы на вычислительном узле.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/actions/update-system

Эта операция не имеет содержания ответа.

GET
/v1/nodes/{node_id}/power-actions/
Получение списка действий над узлом.

Получение списка действий над узлом.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/power-actions/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор действия.

action

body

string

Тип действия.

node_id

body

integer

Идентификатор узла.

start_time

body

string

Время старта действия.

user_name

body

string

Имя пользователя, совершившего действие.

Пример результата в JSON формате:

{
    "power_actions": [
        {
            "action": "reset",
            "id": 1,
            "node_id": 1,
            "start_time": "2018-10-25T06:31:36",
            "user_name": "admin"
        }
    ]
}
GET
/v1/nodes/{node_id}/power-actions/{power_action_id}
Получение информации о действии над узлом.

Получение информации о действии над узлом.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

power_action_id

path

integer

Идентификатор действия.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/power-actions/$power_action_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор действия.

action

body

string

Тип действия.

node_id

body

integer

Идентификатор узла.

start_time

body

string

Время старта действия.

user_name

body

string

Имя пользователя, совершившего действие.

Пример результата в JSON формате:

{
    "power_action": {
        "action": "reset",
        "id": 1,
        "node_id": 1,
        "start_time": "2018-10-25T06:31:36",
        "user_name": "admin"
    }
}
GET
/v1/nodes/{node_id}/power-controls/
Получение списка назначенных на узел средств управления питанием.

Получение списка назначенных на узел средств управления питанием.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/power-controls/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

is_default

body

bool

Флаг, который указывает, является ли средство управления питанием средством по умолчанию.

is_initialized

body

bool

Флаг, который указывает, инициализировано ли средство управления питанием.

power_control_id

body

integer

Идентификатор средства управления питанием.

control_type

body

string

Тип средства.

power_control_title

body

string

Наименование средства управления питанием.

protocol_type

body

string

Тип протокола.

Пример результата в JSON формате:

{
    "power_controls": [
        {
            "is_default": true,
            "is_initialized": true,
            "power_control_id": 1,
            "control_type": "SupermicroRackDevice",
            "power_control_title": "test",
            "power_control_port": "1",
            "protocol_type": "ipmi"
        }
    ]
}
POST
/v1/nodes/{node_id}/power-controls/
Назначение на узел средства управления питанием.

Назначение на узел средства управления питанием.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

is_default (Optional)

body

bool

Флаг, который указывает, является ли средство управления питанием средством по умолчанию.

power_control_id

body

integer

Идентификатор средства управления питанием.

power_control_port

body

string

Номер порта средства управления питанием.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"power_control_id": 1, "power_control_port": 1}' http://controller:9362/v1/nodes/$node_id/power-controls/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

is_default

body

bool

Флаг, который указывает, является ли средство управления питанием средством по умолчанию.

is_initialized

body

bool

Флаг, который указывает, инициализировано ли средство управления питанием.

power_control_id

body

integer

Идентификатор средства управления питанием.

control_type

body

string

Тип средства.

power_control_title

body

string

Наименование средства управления питанием.

protocol_type

body

string

Тип протокола.

power_control_port

body

string

Номер порта средства управления питанием.

Пример результата в JSON формате:

{
    "power_control": {
        "is_default": false,
        "is_initialized": true,
        "power_control_id": 1,
        "control_type": "SupermicroRackDevice",
        "power_control_title": "test",
        "power_control_port": "1",
        "protocol_type": "ipmi"
    }
}
GET
/v1/nodes/{node_id}/power-controls/{power_control_id}
Получение информации о назначенном на узел средстве управления питанием.

Получение информации о назначенном на узел средстве управления питанием.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

power_control_id

path

integer

Идентификатор средства управления питанием.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/power-controls/$power_control_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

is_default

body

bool

Флаг, который указывает, является ли средство управления питанием средством по умолчанию.

is_initialized

body

bool

Флаг, который указывает, инициализировано ли средство управления питанием.

power_control_id

body

integer

Идентификатор средства управления питанием.

control_type

body

string

Тип средства.

power_control_title

body

string

Наименование средства управления питанием.

protocol_type

body

string

Тип протокола.

power_control_port

body

string

Номер порта средства управления питанием.

Пример результата в JSON формате:

{
    "power_control": {
        "is_default": false,
        "is_initialized": true,
        "power_control_id": 1,
        "control_type": "SupermicroRackDevice",
        "power_control_title": "test",
        "power_control_port": "1",
        "protocol_type": "ipmi"
    }
}
PUT
/v1/nodes/{node_id}/power-controls/{power_control_id}
Обновление параметров назначенного на узел средства управления питанием.

Обновление параметров назначенного на узел средства управления питанием.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

power_control_id

path

integer

Идентификатор средства управления питанием.

is_default (Optional)

body

bool

Флаг, который указывает, является ли средство управления питанием средством по умолчанию.

power_control_port (Optional)

body

string

Номер порта средства управления питанием.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"is_default": true}'  http://controller:9362/v1/nodes/$node_id/power-controls/$power_control_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

is_default

body

bool

Флаг, который указывает, является ли средство управления питанием средством по умолчанию.

is_initialized

body

bool

Флаг, который указывает, инициализировано ли средство управления питанием.

power_control_id

body

integer

Идентификатор средства управления питанием.

control_type

body

string

Тип средства.

power_control_title

body

string

Наименование средства управления питанием.

protocol_type

body

string

Тип протокола.

power_control_port

body

string

Номер порта средства управления питанием.

Пример результата в JSON формате:

{
    "power_control": {
        "is_default": true,
        "is_initialized": true,
        "power_control_id": 1,
        "control_type": "SupermicroRackDevice",
        "power_control_title": "test",
        "power_control_port": "1",
        "protocol_type": "ipmi"
    }
}
DELETE
/v1/nodes/{node_id}/power-controls/{power_control_id}
Снятие назначения средства управления питанием на узел.

Снятие назначения средства управления питанием на узел.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

power_control_id

path

integer

Идентификатор средства управления питанием.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/power-controls/$power_control_id

Эта операция не имеет содержания ответа.

POST
/v1/nodes/actions/attach
Привязка узлов к виртуальному контроллеру.

Привязка узлов к виртуальному контроллеру.

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

Name

In

Type

Description

controller_uuid

body

string

Идентификатор виртуального контроллера, к которому привязан узел.

hostnames

body

list

Список имен узлов.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"controller_uuid": "2eec580b-12f8-4518-bf79-3dc5529617da", "hostnames": ["mnode2.dev.stand.loc"]}' http://controller:9362/v1/nodes/actions/attach | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
POST
/v1/nodes/actions/detach
Отвязка узлов от виртуального контроллера.

Отвязка узлов от виртуального контроллера.

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

Name

In

Type

Description

controller_uuid

body

string

Идентификатор виртуального контроллера, к которому привязан узел.

hostnames

body

list

Список имен узлов.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"controller_uuid": "2eec580b-12f8-4518-bf79-3dc5529617da", "hostnames": ["mnode2.dev.stand.loc"]}' http://controller:9362/v1/nodes/actions/detach | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}
POST
/v1/nodes/actions/reset
Перезапуск узлов.

Перезапуск узлов.

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

Name

In

Type

Description

node_ids

body

list

Идентификаторы узлов.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"node_ids": [1, 2]}' http://controller:9362/v1/nodes/actions/reset | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

success

body

list

Список узлов, которые были успешно перезапущены.

failed

body

list

Список узлов, которые не удалось перезапустить.

Пример результата в JSON формате:

{
    "failed": [],
    "success": [
        1,
        2
    ]
}
POST
/v1/nodes/{availability_storage_id}/availability-storages/
Назначение узла хранилищам проверки доступности.

Назначение узла хранилищам проверки доступности. Ранее созданные назначения не удаляются.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

availability_storages

body

array

Список идентификаторов хранилища проверки доступности.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"availability_storages": [1]}' http://controller:9362/v1/nodes/$node_id/availability-storages/

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{availability_storage_id}/availability-storages/
Переназначение узла хранилищам проверки доступности.

Переназначение узла хранилищам проверки доступности. Ранее созданные назначения не удаляются.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

availability_storages

body

array

Список идентификаторов хранилища проверки доступности.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"availability_storages": [1]}' http://controller:9362/v1/nodes/$node_id/availability-storages/

Эта операция не имеет содержания ответа.

DELETE
/v1/nodes/{node_id}/availability-storages/{availability_storage_id}
Удаление назначения хранилища проверки доступности узлам.

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

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

availability_storage_id

path

integer

Идентификатор хранилища проверки доступности.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/nodes/$node_id/availability-storages/$availability_storage_id | python -m json.tool

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/discovery-nas
Опрос СХД.

Опрос СХД для получения доступных дисков.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

storage_id

body

integer

ID СХД.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"storage_id": 50}' http://controller:9362/v1/nodes/$node_id/actions/discovery-nas | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

targets

body

dict

Список имен дисков СХД для подключения к узлу.

Пример результата в JSON формате:

{
    "targets": {
        "10.40.38.2": [
            "volume-887880f7-9e54-4f81-8d32-3e0b7a9b1c5c",
            "volume-99361e45-6e50-45fc-9236-08108b2c7add",
            "volume-f28e9c36-beed-4ce6-b30a-d2f2a8952734"
        ]
    }
}
POST
/v1/nodes/{node_id}/actions/attach-targets
Подключение дисков к узлу.

Подключение диска СХД к узлу.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

targets

body

dict

Список имен дисков СХД для подключения к узлу.

vendor (Optional)

body

string

Производитель СХД.

product (Optional)

body

string

Модель СХД.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"targets": {"10.40.38.2": ["volume-887880f7-9e54-4f81-8d32-3e0b7a9b1c5c"]}}' http://controller:9362/v1/nodes/$node_id/actions/attach-targets | python -m json.tool

Эта операция не имеет содержания ответа.

POST
/v1/nodes/{node_id}/actions/repair-locks
Восстановление блокировок.

Запуск восстановления блокировок дисков на узле.

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

Name

In

Type

Description

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/nodes/$node_id/actions/repair-locks | python -m json.tool

Эта операция не имеет содержания ответа.

POST
/v1/nodes/actions/balance
Балансировка нагрузки узлов

Запуск балансировки нагрузки на узлах.

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

Name

In

Type

Description

nodes (Optional)

body

list

Список ID узлов.

aggregates (Optional)

body

list

Список ID агрегаторов.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"nodes": ["44d751bb-cadc-485f-8188-39e55f573173", "bd6e2f96-7739-409b-b508-9c8d85ae98b5"]}' http://controller:9362/v1/nodes/actions/balance | python -m json.tool

Эта операция не имеет содержания ответа.

DRS

Позволяет запускать аудит возможности балансировки виртуальных машин на узлах в рамках агрегаторов узлов.

POST
/v1/aggregates/{aggregate_id}/actions/execute-audit
Запуск аудита возможности балансировки.

Запуск аудита возможности балансировки.

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

Name

In

Type

Description

aggregate_id

path

string

Идентификатор агрегатора узлов.

auto_apply (Optional)

body

bool

Дополнительный параметр, разрешает автоматическое применение результата аудита.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9362/v1/aggregates/{aggregate_id}/actions/execute-audit
Параметры ответа:

Name

In

Type

Description

id

body

string

Идентификатор аудита.

status

body

string

Статус аудита.

Пример результата в JSON формате:

{
    "audit": {
        "id": 99,
        "status": "DONE"
    }
}
POST
/v1/aggregates/{aggregate_id}/actions/apply-audit
Применение результата аудита.

Применение результата аудита.

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

Name

In

Type

Description

aggregate_id

path

string

Идентификатор агрегатора узлов.

audit_id

body

string

Идентификатор аудита.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"audit_id": 99}'  http://controller:9362/v1/aggregates/{aggregate_id}/actions/apply-audit

Эта операция не имеет содержания ответа.

POST
/v1/aggregates/{aggregate_id}/actions/get-audit-status
Получение статуса аудита.

Получение статуса аудита.

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

Name

In

Type

Description

aggregate_id

path

string

Идентификатор агрегатора узлов.

audit_id

body

string

Идентификатор аудита.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"audit_id": 99}' http://controller:9362/v1/aggregates/{aggregate_id}/actions/get-audit-status
Параметры ответа:

Name

In

Type

Description

id

body

string

Идентификатор аудита.

status

body

string

Статус аудита.

Пример результата в JSON формате:

{
    "audit": {
        "id": 99,
        "status": "DONE"
    }
}

Блочное хранилище Cinder

Позволяет управлять блочным хранилищем на основе LVM.

Примечание

Для корректной работы требуется настроенная служба agent с типом control на узлах со службой cinder-volume и nova-compute.

GET
/v1/volume-backends/
Получение списка хранилищ.

Получение списка хранилищ.

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

Name

In

Type

Description

volume_backend_name (Optional)

path

string

Имя бэкенда блочного хранилища.

host (Optional)

path

string

Имя узла блочного хранилища.

vg_name (Optional)

path

string

Имя группы логических томов.

offset (Optional)

path

integer

Номер позиции для получения данных.

limit (Optional)

path

integer

Ограничение количества получаемых данных.

Параметры, поддерживающие модификаторы: volume_backend_name, host, vg_name.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/volume-backends/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

volume_backend_name

body

string

Имя бэкенда блочного хранилища.

host

body

string

Имя узла блочного хранилища.

vg_name

body

string

Имя группы логических томов.

protocol

body

string

Протокол взаимодействия в системах хранения данных.

free_size

body

string

Размер свободного места хранилища, ГБ.

total_size

body

string

Общий размер хранилища, ГБ.

logical_volumes

body

array

Список логических томов.

physical_volumes

body

array

Список физических томов.

Пример ответа в JSON формате:

[
    {
        "volume_backend_name": "sanlock",
        "host": "volume2.sanlock.stand.loc",
        "vg_name": "vol",
        "protocol": "iscsi",
        "free_size": "136.75",
        "total_size": "138",
        "logical_volumes": [
            {
                "lv_name": "volume-cfae37a3-6e8f-4bc8-862e-85db07ff429f",
                "vg_name": "vol",
                "lv_attr": "-wi-------",
                "lv_size": "1,00g",
                "lv_uuid": "XSOJgt-6xDf-mTWA-NG7q-MyR7-MheT-e39yp3",
                "mirror_count": "1",
                "devices": [
                    {
                        "pv": "/dev/mapper/mpathb",
                        "seg_size": "1,00g"
                    }
                ]
            }
        ],
        "physical_volumes": [
            {
                "pv_name": "/dev/mapper/mpathb",
                "vg_name": "vol",
                "pv_attr": "a--",
                "pv_size": "46,00g",
                "pv_free": "44,75g"
            },
            {
                "pv_name": "/dev/mapper/mpathc",
                "vg_name": "vol",
                "pv_attr": "a--",
                "pv_size": "46,00g",
                "pv_free": "46,00g"
            },
            {
                "pv_name": "/dev/mapper/mpathd",
                "vg_name": "vol",
                "pv_attr": "a--",
                "pv_size": "46,00g",
                "pv_free": "46,00g"
            }
        ],
    }
]
GET
/v1/volumes/{volume_id}
Получение информации о логическом томе.

Получение информации о логическом томе.

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

Name

In

Type

Description

volume_id

body

string

Идентификатор диска Cinder.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token"  http://controller:9362/v1/volumes/cfae37a3-6e8f-4bc8-862e-85db07ff429f | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

volume_id

body

string

Идентификатор диска Cinder.

volume_backend_name

body

string

Имя бэкенда блочного хранилища.

host

body

string

Имя узла блочного хранилища.

logical_volume

body

object

Логический том.

thin_enabled

body

bool

Флаг, который указывает, является ли том тонким.

lock_hosts

body

array

Список узлов, на которых установлена блокировка тома.

lock_exclusive

body

bool

Флаг, который указывает, является ли блокировка эксклюзивной.

Пример ответа в JSON формате:

{
    "volume": {
        "volume_id": "cfae37a3-6e8f-4bc8-862e-85db07ff429f",
        "volume_backend_name": "sanlock",
        "host": "volume2.sanlock.stand.loc",
        "thin_enabled": true,
        "logical_volume": {
            {
                "lv_name": "volume-cfae37a3-6e8f-4bc8-862e-85db07ff429f",
                "vg_name": "vol",
                "lv_attr": "-wi-------",
                "lv_uuid": "XSOJgt-6xDf-mTWA-NG7q-MyR7-MheT-e39yp3",
                "mirror_count": "1",
                "lv_size": "1,00g",
                "lv_status": null,
                "devices": [
                    {
                        "pv": "/dev/mapper/mpathb",
                        "seg_size": "1,00g"
                    }
                ]
            }
        },
        "lock_hosts": ["volume2.sanlock.stand.loc"],
        lock_exclusive: true
    }
}
GET
/v1/volumes/
Получение информации о логических томах.

Получение информации о логических томах.

Запрос
Пример запроса:
curl -X GET -H "X-Auth-Token: $token"  http://controller:9362/v1/volumes/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

volume_id

body

string

Идентификатор диска Cinder.

volume_backend_name

body

string

Имя бэкенда блочного хранилища.

host

body

string

Имя узла блочного хранилища.

logical_volume

body

object

Логический том.

thin_enabled

body

bool

Флаг, который указывает, является ли том тонким.

Пример ответа в JSON формате:

{
    "volumes": [
        {
            "volume_id": "cfae37a3-6e8f-4bc8-862e-85db07ff429f",
            "volume_backend_name": "sanlock",
            "host": "volume2.sanlock.stand.loc",
            "thin_enabled": true,
            "logical_volume": {
                {
                    "lv_name": "volume-cfae37a3-6e8f-4bc8-862e-85db07ff429f",
                    "vg_name": "vol",
                    "lv_attr": "-wi-------",
                    "lv_uuid": "XSOJgt-6xDf-mTWA-NG7q-MyR7-MheT-e39yp3",
                    "mirror_count": "1",
                    "lv_size": "1,00g",
                    "lv_status": null,
                    "devices": [
                        {
                            "pv": "/dev/mapper/mpathb",
                            "seg_size": "1,00g"
                        }
                    ]
                }
            }
        }
    ]
}
POST
/v1/volumes/{volume_id}/actions/mirror
Зеркалирование тома.

Конвертация тома в зеркалированный том.

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

Name

In

Type

Description

volume_id

path

string

Идентификатор диска Cinder.

mirror_count

body

integer

Количество копий диска. 0 для отключения зеркалирования.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"mirror_count": 1}' http://controller:9362/v1/volumes/cfae37a3-6e8f-4bc8-862e-85db07ff429f/actions/mirror

Эта операция не имеет содержания ответа.

POST
/v1/volumes/{volume_id}/actions/pv-migrate
Миграция диска между физическими томами.

Миграция диска между физическими томами.

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

Name

In

Type

Description

volume_id

path

string

Идентификатор диска Cinder.

source_pv

body

string

Исходный физический том.

dest_pv (Optional)

body

string

Целевой физический том.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"source_pv": "/dev/mapper/mpathb", "dest_pv": "/dev/mapper/mpathc"}' http://controller:9362/v1/volumes/cfae37a3-6e8f-4bc8-862e-85db07ff429f/actions/pv-migrate

Эта операция не имеет содержания ответа.

Хранилища проверки доступности

Действия с хранилищами проверки доступности.

GET
/v1/availability-storages/
Получение списка хранилищ проверки доступности.

Получение списка хранилищ проверки доступности.

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

Name

In

Type

Description

availability_storage_id (Optional)

path

integer

Идентификатор хранилища проверки доступности.

name (Optional)

path

string

Имя хранилища проверки доступности.

offset (Optional)

path

integer

Номер позиции для получения данных.

limit (Optional)

path

integer

Ограничение количества получаемых данных.

Параметры, поддерживающие модификаторы: id, name.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/availability-storages/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор хранилища проверки доступности.

name

body

string

Имя хранилища проверки доступности.

compute_path

body

string

Путь хранилища проверки доступности на вычислительном узле.

controller_path

body

string

Путь хранилища проверки доступности на управляющем узле.

nodes (Optional)

body

string

Список узлов, которым назначено хранилище проверки доступности.

Пример результата в JSON формате:

{
    "availability_storages": [
        {
            "id": 1,
            "name": "storage1",
            "compute_path": "/tmp/",
            "controller_path": "/tmp/",
            "nodes": []
        }
    ]
}
GET
/v1/availability-storages/count
Получение количества хранилищ проверки доступности.

Получение количества хранилищ проверки доступности.

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

Name

In

Type

Description

availability_storage_id (Optional)

path

integer

Идентификатор хранилища проверки доступности.

name (Optional)

path

string

Имя хранилища проверки доступности.

Параметры, поддерживающие модификаторы: id, name.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/availability-storages/count | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

count

body

integer

Количество объектов.

Пример результата в JSON формате:

{
    "count": 4
}
POST
/v1/availability-storages/
Создание хранилища проверки доступности.

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

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

Name

In

Type

Description

name

body

string

Имя хранилища проверки доступности.

compute_path

body

string

Путь хранилища проверки доступности на вычислительном узле.

controller_path

body

string

Путь хранилища проверки доступности на управляющем узле.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"availability_storage": {"name": "storage1", "compute_path": "/tmp/", "controller_path": "/tmp/"}}' http://controller:9362/v1/availability-storages/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

integer

Идентификатор хранилища проверки доступности.

name

body

string

Имя хранилища проверки доступности.

compute_path

body

string

Путь хранилища проверки доступности на вычислительном узле.

controller_path

body

string

Путь хранилища проверки доступности на управляющем узле.

nodes (Optional)

body

string

Список узлов, которым назначено хранилище проверки доступности.

Пример результата в JSON формате:

{
    "availability_storage": {
        "id": 1,
        "name": "storage1",
        "compute_path": "/tmp/",
        "controller_path": "/tmp/",
        "nodes": []
    }
}
GET
/v1/availability-storages/{availability_storage_id}
Получение информации о хранилище проверки доступности.

Получение информации о хранилище проверки доступности.

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

Name

In

Type

Description

availability_storage_id

path

integer

Идентификатор хранилища проверки доступности.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/availability-storages/$availability_storage_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

availability_storage_id

path

integer

Идентификатор хранилища проверки доступности.

name

body

string

Имя хранилища проверки доступности.

compute_path

body

string

Путь хранилища проверки доступности на вычислительном узле.

controller_path

body

string

Путь хранилища проверки доступности на управляющем узле.

nodes (Optional)

body

string

Список узлов, которым назначено хранилище проверки доступности.

Пример результата в JSON формате:

{
    "availability_storage": {
        "id": 1,
        "name": "storage1",
        "compute_path": "/tmp/",
        "controller_path": "/tmp/",
        "nodes": []
    }
}
PUT
/v1/availability-storages/{availability_storage_id}
Редактирование хранилища проверки доступности.

Редактирование существующего хранилища проверки доступности.

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

Name

In

Type

Description

availability_storage_id

path

integer

Идентификатор хранилища проверки доступности.

name

body

string

Имя хранилища проверки доступности.

compute_path

body

string

Путь хранилища проверки доступности на вычислительном узле.

controller_path

body

string

Путь хранилища проверки доступности на управляющем узле.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"availability_storage": {"name": "storage2"}}' http://controller:9362/v1/availability-storages/$availability_storage_id | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

path

integer

Идентификатор хранилища проверки доступности.

name

body

string

Имя хранилища проверки доступности.

compute_path

body

string

Путь хранилища проверки доступности на вычислительном узле.

controller_path

body

string

Путь хранилища проверки доступности на управляющем узле.

nodes (Optional)

body

string

Список узлов, которым назначено хранилище проверки доступности.

Пример результата в JSON формате:

{
    "availability_storage": {
        "id": 1,
        "name": "storage2",
        "compute_path": "/tmp/",
        "controller_path": "/tmp/",
        "nodes": []
    }
}
DELETE
/v1/availability-storages/{availability_storage_id}
Удаление хранилища проверки доступности.

Удаление существующего хранилища проверки доступности.

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

Name

In

Type

Description

availability_storage_id

path

integer

Идентификатор хранилища проверки доступности.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/availability-storages/$availability_storage_id

Эта операция не имеет содержания ответа.

POST
/v1/availability-storages/{availability_storage_id}/nodes/
Назначение хранилища проверки доступности узлам.

Назначение хранилища проверки доступности узлам. Ранее созданные назначения не удаляются.

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

Name

In

Type

Description

availability_storage_id

path

integer

Идентификатор хранилища проверки доступности.

nodes

body

array

Список идентификаторов узлов.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"nodes": [1]}' http://controller:9362/v1/availability-storages/$availability_storage_id/nodes/

Эта операция не имеет содержания ответа.

PUT
/v1/availability-storages/{availability_storage_id}/nodes/
Переназначение хранилища проверки доступности узлам.

Переназначение хранилища проверки доступности узлам. Ранее созданные назначения удаляются.

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

Name

In

Type

Description

availability_storage_id

path

integer

Идентификатор хранилища проверки доступности.

nodes

body

array

Список идентификаторов узлов.

Пример запроса:
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"nodes": [2]}' http://controller:9362/v1/availability-storages/$availability_storage_id/nodes/

Эта операция не имеет содержания ответа.

DELETE
/v1/availability-storages/{availability_storage_id}/nodes/{node_id}
Удаление назначения хранилища проверки доступности узлам.

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

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

Name

In

Type

Description

availability_storage_id

path

integer

Идентификатор хранилища проверки доступности.

node_id

path

integer

Идентификатор узла.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9362/v1/availability-storages/$availability_storage_id/nodes/$node_id

Эта операция не имеет содержания ответа.

Задачи в celery

Информация о задачах в celery.

GET
/v1/tasks/
Получение списка ID последних задач.

Получение списка ID последних задач celery.

Запрос
Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/tasks
Ответ
Параметры ответа:

Name

In

Type

Description

task_id

body

string

ID задачи в celery.

Пример результата в JSON формате:

{
    "tasks":[
        "3519adaf-7669-499e-88eb-8f05f64514e2",
        "013b9778-1d39-4b18-a06c-2780b67e1091",
        "31c71e8a-26cd-4b8e-a4c5-9181d578616f",
        "3e720334-7533-43b7-a079-24ea84b7a8a0",
        "8869de12-3f44-4b96-a20e-80a03dd575a3",
        "641de831-95b2-43ba-8fd5-7822ee5d6445",
        "f0204f11-8e59-410a-8108-a73212c5439a",
        "3b8eff74-55b1-4eb8-80e2-adf8472fc968",
        "93e30a3c-117b-4e05-990d-4ff46ac5ac84",
        "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
    ]
}
GET
/v1/tasks/{task_id}
Получение информации о задаче.

Получение информации о задачи в celery по ID.

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

Name

In

Type

Description

task_id

body

string

ID задачи в celery.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/tasks/$task_id
Ответ
Параметры ответа:

Name

In

Type

Description

status

body

string

Статус задачи.

name (Optional)

body

string

Имя задачи в celery.

traceback (Optional)

body

string

Traceback ошибки при выполнении задачи.

result (Optional)

body

string

Результат задачи.

Пример результата в JSON формате:

{
    "status":"SUCCESS"
}

Домены

Действия с доменами.

POST
/domains/actions/get-store
Получение способа хранения домена.

Получение способа хранения домена.

Запрос
Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/domains/actions/get-store
Ответ
Параметры ответа:

Name

In

Type

Description

store

body

string

Способ хранения домена.

Пример получения информации о способе хранения домена в JSON формате:

{
    "store": "file"
}
POST
/v1/domains/{domain_id}/actions/configure
Загрузка конфигурации домена.

Загрузка конфигурации домена в базу данных.

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

Name

In

Type

Description

domain_id

body

string

ID домена.

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9362/v1/domains/$domain_id/actions/configure

Эта операция не имеет содержания ответа.

GET
/v1/domains/totp-allowed
Информация о возможности отправки одноразовых паролей.

Получение информации из конфигурации о возможности отправки одноразовых паролей.

Запрос
Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9362/v1/domains/totp-allowed | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

totp_allowed

body

bool

Возможность отправки одноразовых паролей.

Пример результата в JSON формате:

{
    "totp_allowed": "true"
}

Флейворы

Действия с флейорами.

GET
/v1/flavors/{instance_id}
Получение доступных флейворов для иснтанса .

Получение доступных флейворов для иснтанса.

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

Name

In

Type

Description

instance_uuid

body

string

Идентификатор виртуальной машины.

Пример запроса:
curl -X GET  -H "X-Auth-Token: $token" http://controller:9362/v1/flavors/$instance_uuid
Ответ
Параметры ответа:

Name

In

Type

Description

flavors

body

list

Список объектов :term:` флэйвор виртуальной машины <Flavor/Флэйвор>` доступных для виртуальной машины.

Пример получения информации о доступных флэйворах в JSON формате:

{
    "flavors": [
    {
      "OS-FLV-DISABLED:disabled": false,
      "OS-FLV-EXT-DATA:ephemeral": 0,
      "description": null,
      "disk": 0,
      "extra_specs": {},
      "id": "008c4bb5-ae4a-46e0-bbe4-2159a97a924b",
      "links": [
      {
      "href": "http://dev-ast17t-ovs-01.stand.loc:8774/v2.1/bc5ba9df1d7c4faea6092cf59a5272a5/flavors/008c4bb5-ae4a-46e0-bbe4-2159a97a924b",
      "rel": "self"
      },
      {
      "href": "http://dev-ast17t-ovs-01.stand.loc:8774/bc5ba9df1d7c4faea6092cf59a5272a5/flavors/008c4bb5-ae4a-46e0-bbe4-2159a97a924b",
      "rel": "bookmark"
      }
      ],
      "name": "c1_r128_d0",
      "os-flavor-access:is_public": true,
      "ram": 128,
      "rxtx_factor": 1,
      "swap": 0,
      "vcpus": 1
      }
    ]
}
POST
/v1/flavors/{instance_id}
Изменнение флэйвора инстанса.

Изменнение флейвора инстанса.

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

Name

In

Type

Description

instance_uuid

body

string

Идентификатор виртуальной машины.

flavor_id

body

list

ID :term:` флэйвор виртуальной машины <Flavor/Флэйвор>`

Пример запроса:
curl -X POST  -H "X-Auth-Token: $token"  -H "Content-Type: application/json" -d '{"flavor_id": "id"}' http://controller:9362/v1/flavors/$instance_uuid
Ответ
Параметры ответа:

Name

In

Type

Description

status

body

string

Статус операции

Пример получения информации об успешности измененния флейвора :

{

'status': 'UPDATED'

}

Подробное описание кодов ответа на запросы доступно во вкладке с дополнительной информацией.