REST API¶
Примечание
Для получения доступа к REST API необходим токен. Получение токена описано во вкладке с дополнительной информацией.
VDI server API¶
Предоставляет API для управления виртуальными рабочими столами (VDI).
Информация о модуле¶
Подробная информация о модуле.
Запрос¶
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/info | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
version (Optional) | body | string | Номер версии модуля. |
license (Optional) | body | string | Информация о лицензии. |
Пример получения информации о модуле в JSON формате:
{
"info": {
"license": {
"created_at": 1538141220,
"expire_at": 1545955200,
"module_package": "tionix_vdi_server",
"name": "Laboratoria",
"product": "TIONIX.VDIServer",
"surrogate_name": "TIONIX.VDIServer",
"unique_id": "07-002-decf3c6c893561752802",
"verified": true
},
"version": "1.35.1.dev38"
}
}
VDI проекты¶
Действия с VDI проектами.
Создание нового VDI проекта с заданными параметрами.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
name | body | string | Имя проекта, уникальное в рамках домена. |
enabled (Optional) | body | bool | Состояние проекта (включен/выключен). |
description (Optional) | body | string | Описание проекта. |
parent_id (Optional) | body | string | Идентификатор родительского проекта/домена. |
is_domain (Optional) | body | string | Флаг, указывающий возможность использовать проект в качестве домена. |
tags (Optional) | body | string | Список тэгов проекта. |
domain_id (Optional) | body | string | Идентификатор домена проекта. |
flavor_id | body | string | Идентификатор типа виртуальных машин проекта. |
image_id | body | string | Идентификатор образа виртуальных машин проекта. |
operation_mode (Optional) | body | string | Режим работы VDI машин проекта. Возможные значения:
|
network_id (Optional) | body | string | Идентификатор сети проекта. |
availability_zone (Optional) | body | string | Зона доступности проекта. |
instance_init_script (Optional) | body | string | Скрипт, закодированный в формате base64. Исполняется при создании всех VDI машин проекта. |
min_reserve_vm (Optional) | body | integer | Минимальное количество резервных виртуальных машин в проекте. По умолчанию: None. |
instance_name_pattern (Optional) | body | string | Шаблон имен виртуальных машин. |
Пример запроса:¶
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"project":{"name": "test_proj","enabled": "True","description":"Test Project_2","parent_id":"37e51ab4c5134e5198788d1f6afe5b8b","domain_id":"37e51ab4c5134e5198788d1f6afe5b8b","flavor_id": "25a8679f-582a-4f7c-b9c2-286a60bedb76","image_id": "bdd277be-ebf3-4ff7-8c05-c6f20cbddd61","network_id": "39523179-37b5-4fd7-bf14-a1f7134a6b1f","operation_mode": "2", "availability_zone": "nova"}}' http://controller:9364/v1/projects/ | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор проекта. |
Пример результата в JSON формате:
{
"project": {
"id": "d394da7c4d0747bd879e0e865222b3d9",
}
}
Изменение параметров VDI проекта.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
project_id | path | string | Идентификатор проекта. |
name (Optional) | body | string | Имя проекта, уникальное в рамках домена. |
enabled (Optional) | body | bool | Состояние проекта (включен/выключен). |
description (Optional) | body | string | Описание проекта. |
domain_id (Optional) | body | string | Идентификатор домена проекта. |
tags (Optional) | body | string | Список тэгов проекта. |
flavor_id (Optional) | body | string | Идентификатор типа виртуальных машин проекта. |
image_id (Optional) | body | string | Идентификатор образа виртуальных машин проекта. |
network_id (Optional) | body | string | Идентификатор сети проекта. |
availability_zone (Optional) | body | string | Зона доступности проекта. |
instance_init_script (Optional) | body | string | Скрипт, закодированный в формате base64. Исполняется при создании всех VDI машин проекта. |
min_reserve_vm (Optional) | body | integer | Минимальное количество резервных виртуальных машин в проекте. По умолчанию: None. |
instance_name_pattern (Optional) | body | string | Шаблон имен виртуальных машин. |
Пример запроса:¶
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"project":{"name": "new name","enabled": "False","description":"Test Project_2","flavor_id": "25a8679f-582a-4f7c-b9c2-286a60bedb76","image_id": "bdd277be-ebf3-4ff7-8c05-c6f20cbddd61","network_id": "39523179-37b5-4fd7-bf14-a1f7134a6b1f", "availability_zone": "nova", "instance_init_script": "IyEvYmluL3NoCmVjaG8gJ0hlbGxvIGZyb20gdGhlIGRldiB0ZWFtISc="}}' http://controller:9364/v1/projects/5f62c4da73f34e869d9a3e8ab79b147a | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор проекта. |
flavor_id (Optional) | body | string | Идентификатор типа виртуальных машин проекта. |
image_id (Optional) | body | string | Идентификатор образа виртуальных машин проекта. |
network_id (Optional) | body | string | Идентификатор сети проекта. |
availability_zone (Optional) | body | string | Зона доступности проекта. |
operation_mode (Optional) | body | string | Режим работы VDI машин проекта. Возможные значения:
|
instance_init_script (Optional) | body | string | Скрипт, закодированный в формате base64. Исполняется при создании всех VDI машин проекта. |
instance_name_pattern (Optional) | body | string | Шаблон имен виртуальных машин. |
Пример результата в JSON формате:
{
"project": {
"id": "d394da7c4d0747bd879e0e865222b3d9",
"image_id": "bdd277be-ebf3-4ff7-8c05-c6f20cbddd61",
"flavor_id": "25a8679f-582a-4f7c-b9c2-286a60bedb76",
"network_id": "39523179-37b5-4fd7-bf14-a1f7134a6b1f",
"availability_zone": "nova",
"operation_mode": "1",
"instance_init_script": "IyEvYmluL3NoCmVjaG8gJ0hlbGxvIGZyb20gdGhlIGRldiB0ZWFtISc="
}
}
Получение списка VDI проектов (тенантов).
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
name (Optional) | body | string | Имя проекта, уникальное в рамках домена. |
enabled (Optional) | body | bool | Состояние проекта (включен/выключен). |
domain (Optional) | body | string | Доменное имя проекта. |
user (Optional) | body | string | Идентификатор пользователя. |
operation_mode (Optional) | body | string | Режим работы VDI машин проекта. Возможные значения:
|
with_os_object (Optional) | path | bool | Параметр, позволяющий расширять ответ объектом os_project , содержащим атрибуты проекта OpenStack. |
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/projects/ | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор проекта. |
image_id (Optional) | body | string | Идентификатор образа виртуальных машин проекта. |
flavor_id (Optional) | body | string | Идентификатор типа виртуальных машин проекта. |
network_id (Optional) | body | string | Идентификатор сети проекта. |
availability_zone (Optional) | body | string | Зона доступности проекта. |
operation_mode (Optional) | body | string | Режим работы VDI машин проекта. Возможные значения:
|
os_project (Optional) | body | object | Проект OpenStack. |
Пример результата в JSON формате:
{
"projects": [
{
"id": "d394da7c4d0747bd879e0e865222b3d9",
"image_id": "d91232fa-14ad-4e41-980a-d82dc9ea3929",
"flavor_id": "0972fadc-6f8d-415a-b4cb-d4a0992b2370",
"network_id": "2506940c-22f9-4b81-a865-9aa6e7d7cba3",
"availability_zone": "nova",
"operation_mode": "1"
},
{
"id": "37e51ab4c5134e5198788d1f6afe5b8b",
"image_id": "747488c2-5aa6-4d92-a982-e0319bee70e1",
"flavor_id": "fc77978d-02fb-4a53-b839-313abb7343c3",
"network_id": "d57e3c66-69bb-46d3-af75-28c41ed1076f",
"availability_zone": "nova",
"operation_mode": "2"
}
]
}
Получение подробной информации о VDI проекте.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
project_id | path | string | Идентификатор проекта. |
with_os_object (Optional) | path | bool | Параметр, позволяющий расширять ответ объектом os_project , содержащим атрибуты проекта OpenStack. |
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" "http://controller:9364/v1/projects/$project_id?with_os_object=true" | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор проекта. |
image_id (Optional) | body | string | Идентификатор образа виртуальных машин проекта. |
flavor_id (Optional) | body | string | Идентификатор типа виртуальных машин проекта. |
network_id (Optional) | body | string | Идентификатор сети проекта. |
availability_zone (Optional) | body | string | Зона доступности проекта. |
operation_mode (Optional) | body | string | Режим работы VDI машин проекта. Возможные значения:
|
instance_init_script (Optional) | body | string | Скрипт, закодированный в формате base64. Исполняется при создании всех VDI машин проекта. |
min_reserve_vm (Optional) | body | integer | Минимальное количество резервных виртуальных машин в проекте. По умолчанию: None. |
instance_name_pattern (Optional) | body | string | Шаблон имен виртуальных машин. |
os_project (Optional) | body | object | Проект OpenStack. |
Пример результата в JSON формате:
{
"project": {
"availability_zone": "",
"flavor_id": "41f2e2b1-d806-4688-8814-d4bedd6aee20",
"id": "c445f25f8c7e48a99ee7985309ed6954",
"image_id": "1e56ddcc-4d8d-42a1-8650-8a496c498e8c",
"instance_init_script": null,
"network_id": "3bff4756-aed7-4603-8fec-cfbe83654f14",
"operation_mode": "1",
"os_project": {
"availability_zone": "",
"description": "",
"domain_id": "default",
"enabled": true,
"flavor_id": "41f2e2b1-d806-4688-8814-d4bedd6aee20",
"id": "c445f25f8c7e48a99ee7985309ed6954",
"image_id": "1e56ddcc-4d8d-42a1-8650-8a496c498e8c",
"is_domain": false,
"links": {
"self": "http://dev-cnt7q-ovs-02.stand.loc:5000/v3/projects/c445f25f8c7e48a99ee7985309ed6954"
},
"name": "0745ee8b21a949fab34cd2d05265234c_horizon_tnx_tenan",
"network_id": "3bff4756-aed7-4603-8fec-cfbe83654f14",
"operation_mode": "1",
"parent_id": "default",
"project_type": "VDI",
"tags": [
"vdi"
]
}
}
}
Получение шаблона имен VDI машин по умолчанию из конфигурационного файла. Используется при создании VDI проекта.
Параметры запроса:¶
Запрос не имеет параметров.
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" "http://controller:9364/v1/projects/actions/get-instance-name-pattern" | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
instance_name_pattern (Optional) | body | string | Шаблон имен виртуальных машин. |
Пример результата в JSON формате:
{
"instance_name_pattern": "vdi-**"
}
Виртуальные VDI машины¶
Действия с виртуальными VDI машинами.
Создание новой виртуальной машины с типом VDI
.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
name (Optional) | body | string | Имя виртуальной машины. Максимальная длина имени VDI машины не должна превышать 245 символов. |
count (Optional) | body | integer | Количество созданных виртуальных машин. |
description (Optional) | body | string | Описание виртуальной машины. |
users (Optional) | body | array | Пользователи виртуальной VDI машины. |
groups (Optional) | body | array | Группы пользователей виртуальной машины. |
Пример запроса:¶
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"server":{"name": "test_vm", "count": 1,"description":"Test VDI vm"}}' http://controller:9364/v1/servers/ | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор виртуальной машины. |
reservation_id (Optional) | body | string | Reservation ID созданных виртуальных машин. |
Пример результата в JSON формате:
{
"servers": [
{
"id": "2506940c-22f9-4b81-a865-9aa6e7d7cba3",
},
{
"id": "0972fadc-6f8d-415a-b4cb-d4a0992b2370",
},
],
"reservation_id": "r-vd4o1bvy"
}
Изменение параметров VDI машины.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
server_id | path | string | Идентификатор виртуальной машины. |
users (Optional) | body | array | Пользователи виртуальной VDI машины. |
groups (Optional) | body | array | Группы пользователей виртуальной машины. |
Пример запроса:¶
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"server":{"users": ["d91232fa-14ad-4e41-980a-d82dc9ea3929", "0972fadc-6f8d-415a-b4cb-d4a0992b2370"], "groups": ["d57e3c66-69bb-46d3-af75-28c41ed1076f"]}}' http://controller:9364/v1/servers/254ba49f-584b-419d-9e86-afe9aa8a122e | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
users (Optional) | body | array | Пользователи виртуальной VDI машины. |
groups (Optional) | body | array | Группы пользователей виртуальной машины. |
Пример результата в JSON формате:
{
"server": {
"users": ["d91232fa-14ad-4e41-980a-d82dc9ea3929",
"0972fadc-6f8d-415a-b4cb-d4a0992b2370"],
"groups": ["d57e3c66-69bb-46d3-af75-28c41ed1076f"]
}
}
Получение списка VDI машин.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
project_id (Optional) | body | string | Идентификатор проекта. |
group (Optional) | body | string | Группа пользователей виртуальной машины. |
user (Optional) | body | string | Пользователь виртуальной VDI машины. |
with_os_object (Optional) | path | bool | Параметр, позволяющий расширять ответ объектом os_server , содержащим атрибуты виртуальной машины OpenStack. |
Параметры, поддерживающие модификаторы: project_id
.
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/servers/ | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор виртуальной машины. |
users (Optional) | body | array | Пользователи виртуальной VDI машины. |
groups (Optional) | body | array | Группы пользователей виртуальной машины. |
os_server (Optional) | body | object | Виртуальная машина OpenStack. |
Пример результата в JSON формате:
{
"servers": [
{
"id": "2506940c-22f9-4b81-a865-9aa6e7d7cba3",
"users": ["0972fadc-6f8d-415a-b4cb-d4a0992b2370"],
"groups": [],
},
{
"id": "0972fadc-6f8d-415a-b4cb-d4a0992b2370",
"users": ["2506940c-22f9-4b81-a865-9aa6e7d7cba3",
"747488c2-5aa6-4d92-a982-e0319bee70e1"],
"groups": ["d91232fa-14ad-4e41-980a-d82dc9ea3929"],
}
]
}
Получение подробной информации о VDI машине.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
server_id | path | string | Идентификатор виртуальной машины. |
with_os_object (Optional) | path | bool | Параметр, позволяющий расширять ответ объектом os_server , содержащим атрибуты виртуальной машины OpenStack. |
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" "http://controller:9364/v1/servers/$server_id?with_os_object=true" | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор виртуальной машины. |
users (Optional) | body | array | Пользователи виртуальной VDI машины. |
groups (Optional) | body | array | Группы пользователей виртуальной машины. |
os_server (Optional) | body | object | Виртуальная машина OpenStack. |
Пример результата в JSON формате:
{
"server": {
"groups": [
"4a2fa50aad544c81ae23dfb22a871755"
],
"id": "7ad6183a-817e-47c7-b848-741fdfbecc40",
"os_server": {
"OS-DCF:diskConfig": "MANUAL",
"OS-EXT-AZ:availability_zone": "test",
"OS-EXT-SRV-ATTR:host": null,
"OS-EXT-SRV-ATTR:hostname": "d2a83cd9-8ba7-4807-a29e-f59e11b7e49a-2",
"OS-EXT-SRV-ATTR:hypervisor_hostname": null,
"OS-EXT-SRV-ATTR:instance_name": "instance-00000009",
"OS-EXT-SRV-ATTR:kernel_id": "",
"OS-EXT-SRV-ATTR:launch_index": 1,
"OS-EXT-SRV-ATTR:ramdisk_id": "",
"OS-EXT-SRV-ATTR:reservation_id": "r-sr4oac5f",
"OS-EXT-SRV-ATTR:root_device_name": "/dev/vda",
"OS-EXT-SRV-ATTR:user_data": null,
"OS-EXT-STS:power_state": 0,
"OS-EXT-STS:task_state": null,
"OS-EXT-STS:vm_state": "active",
"OS-SRV-USG:launched_at": null,
"OS-SRV-USG:terminated_at": null,
"accessIPv4": "",
"accessIPv6": "",
"addresses": {},
"config_drive": "",
"created": "2018-12-17T12:25:04Z",
"description": null,
"flavor": {
"disk": 0,
"ephemeral": 0,
"extra_specs": {},
"original_name": "c1_r1G_d0",
"ram": 1024,
"swap": 0,
"vcpus": 1
},
"hostId": "",
"host_status": "",
"id": "7ad6183a-817e-47c7-b848-741fdfbecc40",
"image": {
"id": "d0bed70d-560d-48cd-bd20-0b1818545d39",
"links": [
{
"href": "http://dev-cnt7q-ovs-02.stand.loc:8774/ce1eaa969dd74cf0a33fe222f087533c/images/d0bed70d-560d-48cd-bd20-0b1818545d39",
"rel": "bookmark"
}
]
},
"key_name": null,
"links": [
{
"href": "http://dev-cnt7q-ovs-02.stand.loc:8774/v2.1/ce1eaa969dd74cf0a33fe222f087533c/servers/7ad6183a-817e-47c7-b848-741fdfbecc40",
"rel": "self"
},
{
"href": "http://dev-cnt7q-ovs-02.stand.loc:8774/ce1eaa969dd74cf0a33fe222f087533c/servers/7ad6183a-817e-47c7-b848-741fdfbecc40",
"rel": "bookmark"
}
],
"locked": false,
"metadata": {},
"name": "d2a83cd9-8ba7-4807-a29e-f59e11b7e49a-2",
"os-extended-volumes:volumes_attached": [],
"progress": 0,
"status": "ACTIVE",
"tags": [
"vdi"
],
"tenant_id": "184e540c7dc74df9ba31df50e1c3daf5",
"updated": "2018-12-17T12:43:06Z",
"user_id": "cf5910a0ff0c43158c82f86a2b974b55"
},
"users": [
"47aa3ba7eb48459bac24c5929f49a3c3"
]
}
}
Пользователи и группы пользователей VDI машин¶
Управление пользователями и группами пользователей VDI машин.
Назначение пользователей VDI машине. Вся информация о назначениях пользователей и их отмене сохраняется в базе данных.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
server_id | path | string | Идентификатор виртуальной машины. |
users | body | array | Пользователи виртуальной VDI машины. |
Пример запроса:¶
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"users": ["d91232fa-14ad-4e41-980a-d82dc9ea3929", "2506940c-22f9-4b81-a865-9aa6e7d7cba3"]}' http://controller:9364/v1/servers/246bc0c0-6f82-4343-8d9e-9c1ef706a3d0/users/
Эта операция не имеет содержания ответа.
Назначение групп пользователей VDI машине. Вся информация о назначениях групп и их отмене сохраняется в базе данных.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
server_id | path | string | Идентификатор виртуальной машины. |
groups | body | array | Группы пользователей виртуальной машины. |
Пример запроса:¶
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"groups": ["d91232fa-14ad-4e41-980a-d82dc9ea3929", "2506940c-22f9-4b81-a865-9aa6e7d7cba3"]}' http://controller:9364/v1/servers/246bc0c0-6f82-4343-8d9e-9c1ef706a3d0/groups/
Эта операция не имеет содержания ответа.
Назначение пользователя VDI машинам. Вся информация о назначениях пользователей и их отмене сохраняется в базе данных.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user_id | path | string | Идентификатор пользователя. |
servers | body | array | Виртуальные VDI машины пользователя. |
Пример запроса:¶
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"servers": ["d91232fa-14ad-4e41-980a-d82dc9ea3929", "2506940c-22f9-4b81-a865-9aa6e7d7cba3"]}' http://controller:9364/v1/users/246bc0c0-6f82-4343-8d9e-9c1ef706a3d0/servers/
Эта операция не имеет содержания ответа.
Назначение группы пользователей VDI машинам. Вся информация о назначениях групп и их отмене сохраняется в базе данных.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
group_id | path | string | Идентификатор группы пользователей. |
servers | body | array | Виртуальные машины группы пользователей. |
Пример запроса:¶
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"servers": ["d91232fa-14ad-4e41-980a-d82dc9ea3929", "2506940c-22f9-4b81-a865-9aa6e7d7cba3"]}' http://controller:9364/v1/groups/246bc0c0-6f82-4343-8d9e-9c1ef706a3d0/servers/
Эта операция не имеет содержания ответа.
Получение списка пользователей VDI машины.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
server_id | body | string | Идентификатор виртуальной машины. |
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/servers/2506940c-22f9-4b81-a865-9aa6e7d7cba3/users/ | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор пользователя. |
Пример результата в JSON формате:
{
"users": [
{"id": "0972fadc-6f8d-415a-b4cb-d4a0992b2370"},
{"id": "2506940c-22f9-4b81-a865-9aa6e7d7cba3"},
{"id": "747488c2-5aa6-4d92-a982-e0319bee70e1"}
]
}
Получение списка групп пользователей VDI машины.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
server_id | body | string | Идентификатор виртуальной машины. |
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/servers/2506940c-22f9-4b81-a865-9aa6e7d7cba3/groups/ | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id (Optional) | body | string | Идентификатор группы пользователей. |
Пример результата в JSON формате:
{
"groups": [
{"id": "0972fadc-6f8d-415a-b4cb-d4a0992b2370"},
{"id": "2506940c-22f9-4b81-a865-9aa6e7d7cba3"},
{"id": "747488c2-5aa6-4d92-a982-e0319bee70e1"}
]
}
Снятие назначения пользователей VDI машинам.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
server_id | path | string | Идентификатор виртуальной машины. |
user_id | path | string | Идентификатор пользователя. |
Пример запроса:¶
curl -X DELETE -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/servers/0972fadc-6f8d-415a-b4cb-d4a0992b2370/users/747488c2-5aa6-4d92-a982-e0319bee70e1
Эта операция не имеет содержания ответа.
Снятие назначения групп пользователей VDI машинам.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
server_id | path | string | Идентификатор виртуальной машины. |
group_id | path | string | Идентификатор группы пользователей. |
Пример запроса:¶
curl -X DELETE -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/servers/0972fadc-6f8d-415a-b4cb-d4a0992b2370/groups/747488c2-5aa6-4d92-a982-e0319bee70e1
Эта операция не имеет содержания ответа.
Плавающие IP-адреса¶
Действия с плавающими IP-адресами.
Получение списка всех пользователей, для которых назначены плавающие IP-адреса.
Запрос¶
Параметры запроса:¶
Запрос не имеет параметров.
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/users/ | python -m json.tool
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id | body | string | Идентификатор пользователя. |
floating_ip_id | body | string | Идентификатор плавающего IP-адреса. |
Пример результата в JSON формате:
{
"users": [
{
"id": "56d88dd0a3ab4c4c8d1d15534352d7de",
"floating_ip_id": "c3bdc5ba-cdff-49d0-b84c-ac9329ab1410"
}
]
}
Получение пользователя, на которого назначен плавающий IP-адрес.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user_id | path | string | Идентификатор пользователя. |
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/users/$user_id | python -m json.tool
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
id | body | string | Идентификатор пользователя. |
floating_ip_id (Optional) | body | string | Идентификатор плавающего IP-адреса. |
Пример результата в JSON формате:
{
"user": [
{
"id": "56d88dd0a3ab4c4c8d1d15534352d7de",
"floating_ip_id": "c3bdc5ba-cdff-49d0-b84c-ac9329ab1410"
}
]
}
Назначение плавающего IP-адреса пользователю.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user_id | path | string | Идентификатор пользователя. |
floating_ip_id | body | string | Идентификатор плавающего IP-адреса. |
Пример запроса:¶
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/users/$user_id/floating-ip -d '{"floating_ip_id": "c3bdc5ba-cdff-49d0-b84c-ac9329ab1410"}'
Эта операция не имеет содержания ответа.
Обновление назначения плавающего IP-адреса пользователю.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user_id | path | string | Идентификатор пользователя. |
floating_ip_id | body | string | Идентификатор плавающего IP-адреса. |
Пример запроса:¶
curl -X PUT -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/users/$user_id/floating-ip -d '{"floating_ip_id": "c3bdc5ba-cdff-49d0-b84c-ac9329ab1410"}'
Эта операция не имеет содержания ответа.
Снятие назначения плавающего IP-адреса пользователю.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user_id | path | string | Идентификатор пользователя. |
Пример запроса:¶
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9364/v1/users/$user_id/floating-ip
Эта операция не имеет содержания ответа.
Сессии¶
Действия с сессиями.
Получение списка сессий.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user_id (Optional) | body | string | Идентификатор пользователя. |
user_name (Optional) | body | string | Имя пользователя. |
instance_id (Optional) | body | string | Идентификатор виртуальной машины. |
instance_name (Optional) | body | string | Имя виртуальной машины. |
project_id (Optional) | body | string | Идентификатор проекта. |
connection_type (Optional) | body | string | Тип подключения. Возможные значения:
|
last (Optional) | body | bool | Дополнительный параметр, указывающий необходимость вывода только последних сессий виртуальных машин. |
Параметры, поддерживающие модификаторы: user_id
, user_name
, instance_id
.
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/sessions/ | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
instance_id (Optional) | body | string | Идентификатор виртуальной машины. |
session_id (Optional) | body | string | Идентификатор сессии. |
user_id (Optional) | body | string | Идентификатор пользователя. |
user_name (Optional) | body | string | Имя пользователя. |
connection_type (Optional) | body | string | Тип подключения. Возможные значения:
|
closed_at (Optional) | body | string | Дата и время закрытия сессии. |
client_ip (Optional) | body | string | IP-адрес клиента. |
client_os (Optional) | body | string | Операционная система клиента. |
client_info (Optional) | body | string | Информация о клиенте. |
created_at (Optional) | body | string | Время создания сессии. |
Пример результата в JSON формате:
{
"sessions": [
{
"instance_id": "e3afefea-7dfe-4754-8607-fb3f45b0fe07",
"session_id": "11fa220f-9f88-406a-ba79-0acbba83c32b",
"user_id": "56d88dd0a3ab4c4c8d1d15534352d7de",
"user_name": "admin",
"connection": "web",
"closed_at": null,
"client_ip": "192.168.0.2",
"client_os": "Ubuntu 16.04",
"client_info": "TIONIX.VDIclient 1.4.0"
"created_at": "2018-10-31T12:59:43"
}
]
}
Получение количества сессий.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user_id (Optional) | body | string | Идентификатор пользователя. |
user_name (Optional) | body | string | Имя пользователя. |
instance_id (Optional) | body | string | Идентификатор виртуальной машины. |
instance_name (Optional) | body | string | Имя виртуальной машины. |
project_id (Optional) | body | string | Идентификатор проекта. |
connection_type (Optional) | body | string | Тип подключения. Возможные значения:
|
last (Optional) | body | bool | Дополнительный параметр, указывающий необходимость вывода только последних сессий виртуальных машин. |
Пример запроса:¶
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/sessions/count | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
count (Optional) | body | integer | Количество объектов. |
Пример результата в JSON формате:
{
"count": 5
}
Добавление новой сессии.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
conn_type (Optional) | body | string | Тип подключения. Возможные значения:
|
instance_id | body | string | Идентификатор виртуальной машины. |
client_ip (Optional) | body | string | IP-адрес клиента. |
client_os (Optional) | body | string | Операционная система клиента. |
client_info (Optional) | body | string | Информация о клиенте. |
Пример запроса:¶
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"session": {"instance_id": "8735df50-6e08-462e-b091-1552f8588fd4", "conn_type": "web"}}' http://controller:9364/v1/sessions/ | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
instance_id (Optional) | body | string | Идентификатор виртуальной машины. |
user_id (Optional) | body | string | Идентификатор пользователя. |
user_name (Optional) | body | string | Имя пользователя. |
connection_type (Optional) | body | string | Тип подключения. Возможные значения:
|
closed_at (Optional) | body | string | Дата и время закрытия сессии. |
client_ip (Optional) | body | string | IP-адрес клиента. |
client_os (Optional) | body | string | Операционная система клиента. |
client_info (Optional) | body | string | Информация о клиенте. |
created_at (Optional) | body | string | Время создания сессии. |
Пример результата в JSON формате:
{
"session": {
"instance_id": "e3afefea-7dfe-4754-8607-fb3f45b0fe07",
"user_id": "56d88dd0a3ab4c4c8d1d15534352d7de",
"user_name": "admin",
"connection": "web",
"closed_at": null,
"client_ip": "192.168.0.2",
"client_os": "Ubuntu 16.04",
"client_info": "TIONIX.VDIclient 1.4.0",
"created_at": "2018-10-31T12:59:43"
}
}
VDI broker API¶
Виртуальные VDI машины¶
Интерфейс предоставляет возможность подключения к виртуальной VDI машине.
Примечание
Для аутентификации используется протокол HTTP authentication со схемой Basic, логин и пароль передаются в заголовке.
Получение ID асинхронной задачи получения адреса виртуальной машины для подключения.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user | body | string | Имя пользователя. |
password | body | string | Пароль пользователя. |
user_domain_name | body | string | Доменное имя пользователя. |
auth_tenant (Optional) | body | string | Имя проекта, уникальное в рамках домена. |
project_domain_name (Optional) | body | string | Доменное имя проекта. |
ip_address (Optional) | body | string | IP-адрес для создания правил группы безопасности виртуальной машины. |
conn_type (Optional) | body | string | Тип подключения. Возможные значения:
|
os (Optional) | body | string | Операционная система клиента. |
client (Optional) | body | string | Информация о клиенте. |
Пример запроса:¶
curl -i -X POST -H "Content-Type: application/json" http://controller:9365/v1/request-vm/ -d '{"user": "vdi", "password": "rR0666&4", "user_domain_name": "default"}' | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
X-Auth-Token | header | string | Токен аутентификации. |
request_id | body | string | Идентификатор запроса. |
Пример результата в JSON формате:
...
X-Auth-Token: eyJhbGciOiJIUzUxMiIsImV4cCI6MTU4MjI5MzczNSwiaWF0IjoxNTgyMjkwMTM1fQ.eyJ1c2VyX2lkIjoiNmU4NzM2NDgwMjBjNDE1NWIzMjI3NGI0NGEwOGM3NDciLCJkb21haW4iOiJkZWZhdWx0IiwidXNlcl9uYW1lIjoidXNlcjEzNiIsInNjb3BlIjpbMl19.Bij8NYgK8gOJfXuIKSvsPicSn4iAeKwu1mFDdmHFwf-bXOz8mW6bLtnwnckzEv-bTV0V-Vm22RPtv7_Z_Q4H-A
...
{
"request_id": "fe8775d4-1ac0-4224-9fec-93151e0bfc43"
}
Получение IP виртуальной машины по ID асинхронной задачи.
Примечание
Используйте токен аутентификации из результата запроса на получение ID асинхронной задачи получения адреса виртуальной машины для подключения.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
request | body | string | Идентификатор запроса. |
Пример запроса:¶
curl -X POST -H "Authorization: Bearer $token" -H "Content-Type: application/json" http://controller:9365/v1/get-vm/ -d '{"request": "req-48a56205-f4b5-4c05-8c64-30342a7e1cee"}' | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
status | body | string | Статус запроса. |
message | body | string | Сообщение запроса. |
id | body | string | Идентификатор виртуальной машины. |
vm_state | body | string | Состояние виртуальной машины. |
ip | body | string | IP-адрес виртуальной машины. |
progress | body | integer | Состояние прогресса создания виртуальной машины. Проставляется службой nova. |
task_state | body | string | Состояние задачи. |
Пример результата в JSON формате:
{
"status": "completed",
"message": null,
"server": {
"status": "ACTIVE",
"vm_state": "active",
"ip": "192.168.1.13",
"progress": 0,
"task_state": null,
"id": "c14d27cd-799e-4317-a430-af7c877703cf"
}
}
Описание ошибок обращений к VDI server¶
В случае ошибки сервер вернет ответ со статусом HTTP 400, который будет содержать объект error
со следующими параметрами:
code
- код ошибки;message
- краткое описание ошибки;data
- дополнительная информация об ошибке.
Перечень кодов ошибок с описанием¶
Код ошибки | Описание на английском | Сообщение в VDI клиенте на английском | Описание на русском | Сообщение в VDI клиенте на русском |
---|---|---|---|---|
1 | Unexpected error occurred.
|
Unexpected error occurred. Please contact system administrator.
|
Произошла непредвиденная ошибка.
|
Произошла непредвиденная ошибка. Обратитесь к системному администратору.
|
2 | License expired.
|
License of VDI server {cloud_url} got out. Please contact system administrator.
|
Истек срок действия лицензии.
|
Срок лицензии модуля VDI сервер {cloud_url} истек. Обратитесь к системному администратору.
|
3 | Asynchronous task of getting an instance failed.
|
–
|
Ошибка при выполнении асинхронной задачи получения виртуальной машины.
|
–
|
4 | Failed to start asynchronous task of getting an instance.
|
–
|
Не удалось запустить асинхронную задачу получения виртуальной машины.
|
–
|
5 | No available VDI project in the specified domain found.
|
No available VDI project found. Please contact system administrator.
|
Нет доступных VDI проектов для пользователя в указанном домене.
|
Нет ни одного доступного VDI проекта. Обратитесь к системному администратору.
|
6 | Authentication error.
|
Invalid credentials. Please contact system administrator.
|
Ошибка аутентификации.
|
Неправильные учётные данные. Обратитесь к системному администратору.
|
7 | Password expired.
|
The password needs to be changed.
|
Истек срок действия пароля.
|
Необходимо изменить пароль.
|
8 | The specified project is not VDI.
|
Not a VDI project: {project_name}.
|
Указанный проект не является VDI проектом.
|
Проект {project_name} не является VDI проектом.
|
9 | Invalid request body.
|
–
|
Неверное тело запроса.
|
–
|
10 | Unable to find an instance obtain request by given ID.
|
–
|
Не удалось найти запрос на получение виртуальной машины по указанному ID.
|
–
|
11 | Forbidden to obtain an instance request.
|
–
|
Нет доступа к указанному запросу на получение виртуальной машины.
|
–
|
12 | Project quota exceeded.
|
Quota exceeded for VDI project "{project_name}". Please contact system administrator.
|
Превышена квота проекта.
|
Превышена квота для VDI проекта "{project_name}". Обратитесь к системному администратору.
|
13 | Instance creation failed.
|
Unable to create instance in project {project_name}. Please contact system administrator.
|
Не удалось создать новую виртуальную машину.
|
Не удалось создать виртуальную машину в проекте {project_name}. Обратитесь к системному администратору.
|
14 | No instances found in the specified project.
|
No instance found in project {project_name}. Please contact system administrator.
|
Нет доступных виртуальных машин в указанном проекте.
|
Не найдена виртуальная машина в проекте {project_name}. Обратитесь к системному администратору.
|
15 | Specified domain not found.
|
Domain {domain_name} not found.
|
Указанный домен не найден.
|
Домен {domain_name} не найден.
|
16 | Specified user not found.
|
User {user_name} not found in domain {domain_name}.
|
Указанный пользователь не найден.
|
Пользователь {user_name} не найден в домене {domain_name}.
|
17 | Instance is in an invalid state.
|
Instance with id {instance_id} is in invalid state: {instance_status}. Please contact system administrator.
|
Виртуальная машина находится в необрабатываемом статусе.
|
Виртуальная машина с ID {instance_id} находится в некорректном состоянии: {instance_status}. Обратитесь к системному администратору.
|
18 | Unable to obtain an instance IP address.
|
Unable to get IP address of instance with id {instance_id}. Please contact system administrator.
|
Не удалось получить IP-адрес виртуальной машины.
|
Не удалось получить IP-адрес виртуальной машины с ID {instance_id}. Обратитесь к системному администратору.
|
19 | Password expiration warning.
|
Password expires in {seconds} seconds and needs to be changed.
|
Предупреждение о том, что пароль скоро истечёт.
|
Ваш пароль истекает через {seconds} секунд, измените его.
|
20 | Warning that amount of authentications with current password is limited.
|
Password expired, {attempts} grace logins remain.
|
Предупреждение о том, что осталось ограниченое число аутентификаций с использование текущего пароля.
|
Срок вашего пароля истек, осталось {attempts} попытки для входа.
|
21 | Authentication server is not available.
|
Authentication server is not available. Please contact system administrator.
|
Недоступен сервер аутентификации.
|
Сервер аутентификации недоступен. Обратитесь к системному администратору.
|
22 | Kerberos script file is not available because of it does not exist or it has wrong permissions.
|
Couldn't change password because of the KERBEROS.script_path file doesn't exist or it's unaccessible. Please contact system administrator.
|
Файл скрипта для изменения пароля в Kerberos недоступен по причнине того, что он не найден или неверные права доступа.
|
Не удалось изменить пароль в связи с отсутствием файла KERBEROS.script_path или прав для его запуска. Обратитесь к системному администратору.
|
23 | Error while password change process, so script returned 1
|
Couldn't change password because of an error while change password process execution. Please contact system administrator.
|
Ошибка во время выполнения скрипта изменения пароля, скрипт вернул код 1.
|
Не удалось изменить пароль в связи с ошибкой во время запуска процесса смены пароля. Обратитесь к системному администратору.
|
24 | Auth token is not valid.
|
Unexpected error occurred. Please contact system administrator.
|
Токен авторизации недействителен.
|
Произошла непредвиденная ошибка. Обратитесь к системному администратору.
|
25 | Failed to process asynchronous task of getting an instance.
|
–
|
Не удалось выполнить асинхронную задачу получения виртуальной машины.
|
–
|
26 | Request doesn't match current Web Guard settings.
|
Invalid settings of Web Guard. Please contact system administrator.
|
Запрос не соответствует текущим настройкам Web Guard.
|
Неправильные настройки Web Guard.Обратитесь к системному администратору.
|
Пример ошибки в JSON формате:
{
"error": {
"message": "Quota exceeded for VDI project \"c70379f3-e905-431f-b3b4-d0820e225edf\".",
"code": 12,
"data": {
"project_name": "c70379f3-e905-431f-b3b4-d0820e225edf"
}
}
}
Пароли¶
Управление паролями.
Изменение пароля пользователя.
Запрос¶
Параметры запроса:¶
Name | In | Type | Description |
---|---|---|---|
user | body | string | Имя пользователя. |
user_domain_name | body | string | Доменное имя пользователя. |
password | body | string | Пароль пользователя. |
new_password | body | string | Новый пароль пользователя. |
Пример запроса:¶
curl -X POST -H "Authorization: Bearer $token" -H "Content-Type: application/json" http://controller:9365/v1/change-password/ -d '{"user": "demo", "user_domain_name": "default", "password": "123456", "new_password": "Qdr4H2d5bn01"}' | python -m json.tool
Ответ¶
Параметры ответа:¶
Name | In | Type | Description |
---|---|---|---|
message | body | string | Сообщение. |
Пример результата в JSON формате:
{
"message": "Password successfully changed for user \'admin\'"
}