REST API

Примечание

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


RS server API

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

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

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

GET
/v1/info
Получение подробной информации о модуле.
Запрос
Пример запроса:
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": "rs_server",
            "name": "Laboratoria",
            "product": "RSserver",
            "surrogate_name": "RSserver",
            "unique_id": "07-002-decf3c6c893561752802",
            "verified": true
        },
        "version": "0.1.0"
    }
}

TRS проекты

Действия с TRS проектами.

POST
/v1/projects/
Создание TRS проекта.

Создание нового TRS проекта с заданными параметрами.

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

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

Режим работы TRS машин проекта. Возможные значения:

  • 1 - Standard/Стандартный;

  • 2 - Simultaneous/Совместный.

network_id (Optional)

body

string

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

availability_zone (Optional)

body

string

Зона доступности проекта.

instance_init_script (Optional)

body

string

Скрипт, закодированный в формате base64. Исполняется при создании всех TRS машин проекта.

min_reserve_vm (Optional)

body

integer

Минимальное количество резервных виртуальных машин в проекте. По умолчанию: None.

instance_name_pattern (Optional)

body

string

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

user_volume_enabled (Optional)

body

string

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

volume_size (Optional)

body

int

Размер диска.

volume_type_id (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",
   }
}
PUT
/v1/projects/{project_id}
Редактирование TRS проекта.

Изменение параметров TRS проекта.

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

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. Исполняется при создании всех TRS машин проекта.

min_reserve_vm (Optional)

body

integer

Минимальное количество резервных виртуальных машин в проекте. По умолчанию: None.

instance_name_pattern (Optional)

body

string

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

user_volume_enabled (Optional)

body

string

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

volume_size (Optional)

body

int

Размер диска.

volume_type_id (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

Режим работы TRS машин проекта. Возможные значения:

  • 1 - Standard/Стандартный;

  • 2 - Simultaneous/Совместный.

instance_init_script (Optional)

body

string

Скрипт, закодированный в формате base64. Исполняется при создании всех TRS машин проекта.

user_volume_enabled (Optional)

body

string

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

volume_size (Optional)

body

int

Размер диска.

volume_type_id (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=",
        "user_volume_enabled": true,
        "volume_size": 1,
        "volume_type_id": null
   }
}
GET
/v1/projects/
Получение списка TRS проектов.

Получение списка TRS проектов (тенантов).

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

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

Режим работы TRS машин проекта. Возможные значения:

  • 1 - Standard/Стандартный;

  • 2 - Simultaneous/Совместный.

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

Режим работы TRS машин проекта. Возможные значения:

  • 1 - Standard/Стандартный;

  • 2 - Simultaneous/Совместный.

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",
            "user_volume_enabled": true,
            "volume_size": 1,
            "volume_type_id": null
        },
        {
            "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",
            "user_volume_enabled": true,
            "volume_size": 1,
            "volume_type_id": null
        }
    ]
}
GET
/v1/projects/{project_id}
Получение подробной информации о TRS проекте.

Получение подробной информации о TRS проекте.

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

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

Режим работы TRS машин проекта. Возможные значения:

  • 1 - Standard/Стандартный;

  • 2 - Simultaneous/Совместный.

instance_init_script (Optional)

body

string

Скрипт, закодированный в формате base64. Исполняется при создании всех TRS машин проекта.

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",
        "user_volume_enabled": true,
        "volume_size": 1,
        "volume_type_id": null,
        "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",
            "network_id": "3bff4756-aed7-4603-8fec-cfbe83654f14",
            "operation_mode": "1",
            "parent_id": "default",
            "project_type": "TRS",
            "tags": [
                "trs"
            ]
        }
    }
}
GET
/v1/projects/actions/get-settings
Получение значений по умолчанию.

Получение значений по умолчанию для TRS проектов из конфигурационного файла: шаблон имен TRS машин, зона доступности.

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

Запрос не имеет параметров.

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

Name

In

Type

Description

instance_name_pattern (Optional)

body

string

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

default_availability_zone (Optional)

body

string

Зона доступности по умолчанию.

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

{
  "project_settings": {
    "instance_name_pattern": "trs-**",
    "default_availability_zone": "nova"
  }
}
GET
/v1/projects/{project_id}/statistics
Получение статистики TRS проекта.

Получение статистики TRS проекта.

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

Name

In

Type

Description

project_id

path

string

Идентификатор проекта.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" "http://controller:9364/v1/projects/$project_id/statistics" | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

created_servers (Optional)

body

string

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

active_servers (Optional)

body

string

Количество активных виртуальных машин.

error_servers (Optional)

body

string

Количество виртуальных машин в статусе error.

created_trs_servers (Optional)

body

string

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

active_trs_servers (Optional)

body

string

Количество активных виртуальных TRS машин.

error_trs_servers (Optional)

body

string

Количество виртуальных TRS машин в статусе error.

free_trs_servers (Optional)

body

string

Количество свободных виртуальных TRS машин (нет ассоциированных пользователей).

occupied_trs_servers (Optional)

body

string

Количество занятых виртуальных TRS машин.

simultaneous_trs_servers (Optional)

body

string

Количество виртуальных TRS машин, для которых ассоциировано больше одного пользователя.

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

{
    "statistics": {
        "created_servers": 10,
        "active_servers": 8,
        "error_servers": 1,
        "created_trs_servers": 10,
        "active_trs_servers": 8,
        "error_trs_servers": 1,
        "free_trs_servers": 2,
        "occupied_trs_servers": 8,
        "simultaneous_trs_servers": 4
    }
}
POST
/v1/projects/{project_id}/actions/auto-allocate-users
Автоматическое распределение свободных виртуальных машин.

Автоматическое распределение свободных виртуальных машин проекта пользователям.

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

Name

In

Type

Description

project_id

path

string

Идентификатор проекта.

with_os_object (Optional)

path

bool

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

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" http://controller:9364/v1/projects/db172307fd47470ca0cf254427d22f14/actions/auto-allocate-users
Ответ
Параметры ответа:

Name

In

Type

Description

task_id (Optional)

body

string

ID задачи в celery.

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

{
    "task_id": "7c8fbc6c-468d-4afb-a292-e70a3d475edc"
}

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

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

POST
/v1/servers/
Создание TRS машины.

Создание новой виртуальной машины с типом TRS.

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

Name

In

Type

Description

name

body

string

Имя виртуальной машины. Максимальная длина имени TRS машины не должна превышать 245 символов.

count (Optional)

body

integer

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

description (Optional)

body

string

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

users (Optional)

body

array

Пользователи виртуальной TRS машины.

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 TRS 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"
}
PUT
/v1/servers/{server_id}
Редактирование TRS машины.

Изменение параметров TRS машины.

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

Name

In

Type

Description

server_id

path

string

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

users (Optional)

body

array

Пользователи виртуальной TRS машины.

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

id

body

string

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

project_id

body

string

Идентификатор проекта.

assigned

body

string

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

users (Optional)

body

array

Пользователи виртуальной TRS машины.

groups (Optional)

body

array

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

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

{
    "server": {
        "id": "2506940c-22f9-4b81-a865-9aa6e7d7cba3",
        "project_id": "3005d0d44cf84c7cbcb1ad1be83fba8f",
        "assigned": true,
        "users": ["d91232fa-14ad-4e41-980a-d82dc9ea3929",
                  "0972fadc-6f8d-415a-b4cb-d4a0992b2370"],
        "groups": ["d57e3c66-69bb-46d3-af75-28c41ed1076f"]
    }
}
GET
/v1/servers/
Получение списка TRS машин.

Получение списка TRS машин.

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

Name

In

Type

Description

project_id (Optional)

path

string

Идентификатор проекта.

assigned (Optional)

path

string

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

group (Optional)

path

string

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

user (Optional)

path

string

Пользователь виртуальной TRS машины.

with_os_object (Optional)

path

bool

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

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

Пример запроса:
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

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

project_id

body

string

Идентификатор проекта.

assigned

body

string

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

users (Optional)

body

array

Пользователи виртуальной TRS машины.

groups (Optional)

body

array

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

os_server (Optional)

body

object

Виртуальная машина OpenStack.

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

{
    "servers": [
        {
            "id": "2506940c-22f9-4b81-a865-9aa6e7d7cba3",
            "project_id": "3005d0d44cf84c7cbcb1ad1be83fba8f",
            "assigned": true,
            "users": ["0972fadc-6f8d-415a-b4cb-d4a0992b2370"],
            "groups": [],
        },
        {
            "id": "0972fadc-6f8d-415a-b4cb-d4a0992b2370",
            "project_id": "3005d0d44cf84c7cbcb1ad1be83fba8f",
            "assigned": true,
            "users": ["2506940c-22f9-4b81-a865-9aa6e7d7cba3",
                      "747488c2-5aa6-4d92-a982-e0319bee70e1"],
            "groups": ["d91232fa-14ad-4e41-980a-d82dc9ea3929"],
        }
    ]
}
GET
/v1/servers/{server_id}
Получение подробной информации о TRS машине.

Получение подробной информации о TRS машине.

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

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

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

project_id

body

string

Идентификатор проекта.

assigned

body

string

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

users (Optional)

body

array

Пользователи виртуальной TRS машины.

groups (Optional)

body

array

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

os_server (Optional)

body

object

Виртуальная машина OpenStack.

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

{
    "server": {
        "groups": [
            "4a2fa50aad544c81ae23dfb22a871755"
        ],
        "id": "7ad6183a-817e-47c7-b848-741fdfbecc40",
        "project_id": "184e540c7dc74df9ba31df50e1c3daf5",
        "assigned": true,
        "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": [
                "trs"
            ],
            "tenant_id": "184e540c7dc74df9ba31df50e1c3daf5",
            "updated": "2018-12-17T12:43:06Z",
            "user_id": "cf5910a0ff0c43158c82f86a2b974b55"
        },
        "users": [
            "47aa3ba7eb48459bac24c5929f49a3c3"
        ]
    }
}

Пользователи и группы пользователей TRS машин

Управление пользователями и группами пользователей TRS машин.

POST
/v1/servers/{server_id}/users/
Назначение пользователей TRS машине.

Назначение пользователей TRS машине. Вся информация о назначениях пользователей и их отмене сохраняется в базе данных.

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

Name

In

Type

Description

server_id

path

string

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

users

body

array

Пользователи виртуальной TRS машины.

Пример запроса:
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/

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

POST
/v1/servers/{server_id}/groups/
Назначение групп пользователей TRS машине.

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

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

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/

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

POST
/v1/users/{user_id}/servers/
Назначение пользователя TRS машинам.

Назначение пользователя TRS машинам. Вся информация о назначениях пользователей и их отмене сохраняется в базе данных.

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

Name

In

Type

Description

user_id

path

string

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

servers

body

array

Виртуальные TRS машины пользователя.

Пример запроса:
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/

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

POST
/v1/groups/{group_id}/servers/
Назначение группы пользователей TRS машинам.

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

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

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/

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

GET
/v1/users/{user_id}/servers/
Получение списка TRS машин пользователя.

Получение списка TRS машин пользователя.

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

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/bd4a97119113445e8d3ce323051b945d/servers/ | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

instance_id

body

string

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

project_id (Optional)

body

string

Идентификатор проекта.

project_name (Optional)

body

string

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

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

{
    "servers": [
        {
            "instance_id": "64946d43-6bec-4a34-898c-25b67426e3e4",
            "project_id": "10145e7899324f03bef44502e316bf96",
            "project_name": "fdd89303-1e16-4dfa-a48a-3d8de47f550a"
        },
        {
            "instance_id": "937a0e68-98f7-474f-b2ed-f2b6ab121579",
            "project_id": "10145e7899324f03bef44502e316bf96",
            "project_name": "fdd89303-1e16-4dfa-a48a-3d8de47f550a"
        }
    ]
}
GET
/v1/servers/{server_id}/users/
Получение списка пользователей TRS машины.

Получение списка пользователей TRS машины.

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

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"}
             ]
}
GET
/v1/servers/{server_id}/groups/
Получение списка групп пользователей TRS машины.

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

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

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"}
             ]
}
DELETE
/v1/servers/{server_id}/users/{user_id}
Снятие назначения пользователей TRS машинам.

Снятие назначения пользователей TRS машинам.

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

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

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

DELETE
/v1/servers/{server_id}/groups/{group_id}
Снятие назначения групп пользователей TRS машины.

Снятие назначения групп пользователей TRS машинам.

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

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-адресами.

GET
/v1/users/
Получение списка пользователей с назначенным плавающим 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"
        }
    ]
}
GET
/v1/users/{user_id}
Получение пользователя с назначенным плавающим IP-адресом.

Получение пользователя, на которого назначен плавающий 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"
        }
    ]
}
POST
/v1/users/{user_id}/floating-ip
Назначение плавающего IP-адреса пользователю.

Назначение плавающего 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"}'

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

PUT
/v1/users/{user_id}/floating-ip
Обновление назначения плавающего IP-адреса пользователю.

Обновление назначения плавающего 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"}'

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

DELETE
/v1/users/{user_id}/floating-ip
Снятие назначения плавающего IP-адреса пользователю.

Снятие назначения плавающего 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

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

Сессии

Действия с сессиями.

GET
/v1/sessions/
Получение списка сессий.

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

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

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

Тип подключения. Возможные значения:

  • web - подключение через веб клиент;

  • ssh - подключение через консоль;

  • client - подключение через приложение RSclient.

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

body

string

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

user_id (Optional)

body

string

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

user_name (Optional)

body

string

Имя пользователя.

connection_type (Optional)

body

string

Тип подключения. Возможные значения:

  • web - подключение через веб клиент;

  • ssh - подключение через консоль;

  • client - подключение через приложение RSclient.

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": "RSclient 0.1.0"
            "created_at": "2018-10-31T12:59:43"
        }
    ]
}
GET
/v1/sessions/{session_id}
Получение подробной информации о сессии.
Запрос
Параметры запроса:

Name

In

Type

Description

session_id

body

string

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

Пример запроса:
curl -X GET \
  -H "X-Auth-Token: $token" \
  -H "Content-Type: application/json" \
  "http://controller:9364/v1/sessions/0d4afd9a-03f0-4e54-ac95-e75ae63da36f"
Ответ
Параметры ответа:

Name

In

Type

Description

client_info (Optional)

body

string

Информация о клиенте.

client_ip (Optional)

body

string

IP-адрес клиента.

client_os (Optional)

body

string

Операционная система клиента.

closed_at (Optional)

body

string

Дата и время закрытия сессии.

connection_type (Optional)

body

string

Тип подключения. Возможные значения:

  • web - подключение через веб клиент;

  • ssh - подключение через консоль;

  • client - подключение через приложение RSclient.

created_at (Optional)

body

string

Время создания сессии.

instance_id (Optional)

body

string

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

session_id

body

string

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

user_id (Optional)

body

string

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

user_name (Optional)

body

string

Имя пользователя.

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

{
    "session": {
        "client_info": "RSclient 2.4.0",
        "client_ip": "192.168.0.2",
        "client_os": "astra 1.7_x86-64",
        "closed_at": null,
        "connection_type": "client",
        "created_at": "2025-04-30T11:44:43",
        "instance_id": "30bf8c2f-4ab2-4e6f-892c-383b5ea2bd7e",
        "session_id": "0d4afd9a-03f0-4e54-ac95-e75ae63da36f",
        "user_id": "56d88dd0a3ab4c4c8d1d15534352d7de",
        "user_name": "admin"
    }
}
GET
/v1/sessions/count
Получение количества сессий.

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

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

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

Тип подключения. Возможные значения:

  • web - подключение через веб клиент;

  • ssh - подключение через консоль;

  • client - подключение через приложение RSclient.

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
}
POST
/v1/sessions/
Добавление сессии.

Добавление новой сессии.

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

Name

In

Type

Description

conn_type (Optional)

body

string

Тип подключения. Возможные значения:

  • web - подключение через веб клиент;

  • ssh - подключение через консоль;

  • client - подключение через приложение RSclient.

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

Тип подключения. Возможные значения:

  • web - подключение через веб клиент;

  • ssh - подключение через консоль;

  • client - подключение через приложение RSclient.

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": "RSclient 0.1.0",
        "created_at": "2018-10-31T12:59:43"
    }
}
POST
/v1/sessions/{session_id}/actions/send-message
Отправка сообщения пользователю.
Запрос
Параметры запроса:

Name

In

Type

Description

session_id

body

string

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

message

body

string

Текст сообщения для отправки пользователю.

Пример запроса:
curl -X POST \
    -H "X-Auth-Token: $token" \
    -H "Content-Type: application/json" \
    -d '{"message": "Пожалуйста, сохраните работу. Виртуальная машина будет перезапущена."}' \
    "http://controller:9364/v1/sessions/0d4afd9a-03f0-4e54-ac95-e75ae63da36f/actions/send-message"
Ответ
Параметры ответа:

Name

In

Type

Description

task_id

body

string

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

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

{
    "task_id": "a51fb16e-5f3e-4f06-a8f7-a055fd7acf25"
}
POST
/v1/sessions/{session_id}/actions/send-script
Отправка скрипта пользователю.
Запрос
Параметры запроса:

Name

In

Type

Description

session_id

body

string

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

script

body

string

Содержимое скрипта.

timeout

body

integer

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

Пример запроса:
curl -X POST \
    -H "X-Auth-Token: $token" \
    -H "Content-Type: application/json" \
    -d '{"script": "echo Hello World", "timeout": 30}' \
    "http://controller:9364/v1/sessions/0d4afd9a-03f0-4e54-ac95-e75ae63da36f/actions/send-script"
Ответ
Параметры ответа:

Name

In

Type

Description

task_id

body

string

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

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

{
    "task_id": "a51fb16e-5f3e-4f06-a8f7-a055fd7acf25"
}

Назначение дисков пользователю

Назначение дисков пользователю.

GET
/v1/volume-assignments/
Получение списка назначений.

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

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

Name

In

Type

Description

user_id (Optional)

path

string

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

project_id (Optional)

path

string

Идентификатор проекта.

volume_id (Optional)

path

string

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

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

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

Name

In

Type

Description

id

body

string

Идентификатор назначения диска.

user_id

body

string

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

project_id

body

string

Идентификатор проекта.

volume_id

body

string

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

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

{
    "volume-assignments": [
        {
            "id": 5,
            "project_id": "3005d0d44cf84c7cbcb1ad1be83fba8f",
            "user_id": "c72a1b62a8194426a0e4c40a4b4d77a0",
            "volume_id": "c8327ff2-eb85-4495-ab68-df4aa36d7ae0"
        },
        {
            "id": 10,
            "project_id": "3005d0d44cf84c7cbcb1ad1be83fba8f",
            "user_id": "7ac2f8179b174f7bb5a34d9646e856ef",
            "volume_id": "2f1a653b-2f5a-499c-a2b9-2a893b855504"
        }
    ]
}
GET
/v1/volume-assignments/{assignment_id}
Получение информации о назначении.

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

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

Name

In

Type

Description

assignment_id

path

string

Идентификатор назначения диска.

Пример запроса:
curl -X GET -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/volume-assignments/5 | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

string

Идентификатор назначения диска.

user_id

body

string

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

project_id

body

string

Идентификатор проекта.

volume_id

body

string

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

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

{
    "volume-assignment": {
        "id": 5,
        "project_id": "3005d0d44cf84c7cbcb1ad1be83fba8f",
        "user_id": "c72a1b62a8194426a0e4c40a4b4d77a0",
        "volume_id": "c8327ff2-eb85-4495-ab68-df4aa36d7ae0"
    }
}
POST
/v1/volume-assignments/
Создание назначения диска пользователю.

Создание назначения диска пользователю.

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

Name

In

Type

Description

user_id

body

string

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

project_id

body

string

Идентификатор проекта.

volume_id

body

string

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

Пример запроса:
curl -X POST -H "X-Auth-Token: $token" -H "Content-Type: application/json" http://controller:9364/v1/volume-assignments/ -d '{"user_id": "c72a1b62a8194426a0e4c40a4b4d77a0", "project_id": "3005d0d44cf84c7cbcb1ad1be83fba8f", "volume_id": "c8327ff2-eb85-4495-ab68-df4aa36d7ae0"}'
Ответ
Параметры ответа:

Name

In

Type

Description

id

body

string

Идентификатор назначения диска.

user_id

body

string

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

project_id

body

string

Идентификатор проекта.

volume_id

body

string

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

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

{
    "volume-assignment": {
        "id": 5,
        "project_id": "3005d0d44cf84c7cbcb1ad1be83fba8f",
        "user_id": "c72a1b62a8194426a0e4c40a4b4d77a0",
        "volume_id": "c8327ff2-eb85-4495-ab68-df4aa36d7ae0"
    }
}
DELETE
/v1/volume-assignments/{assignment_id}
Удаление назначения диска пользователю.

Удаление назначения диска пользователю.

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

Name

In

Type

Description

assignment_id

path

string

Идентификатор назначения диска.

Пример запроса:
curl -X DELETE -H "X-Auth-Token: $token" http://controller:9364/v1/volume-assignments/5

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

TRS broker API

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

Интерфейс предоставляет возможность подключения к виртуальной TRS машине.

POST
/v1/request-vm/
Получение ID задачи получения виртуальной TRS машины.

Получение 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

Тип подключения. Возможные значения:

  • web - подключение через веб клиент;

  • ssh - подключение через консоль;

  • client - подключение через приложение RSclient.

os (Optional)

body

string

Операционная система клиента.

client (Optional)

body

string

Информация о клиенте.

Параметры запроса c токеном авторизации:

Name

In

Type

Description

token

body

string

Токен аутентификации.

auth_tenant (Optional)

body

string

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

project_domain_name (Optional)

body

string

Имя домена проекта.

ip_address (Optional)

body

string

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

conn_type (Optional)

body

string

Тип подключения. Возможные значения:

  • web - подключение через веб клиент;

  • ssh - подключение через консоль;

  • client - подключение через приложение RSclient.

os (Optional)

body

string

Операционная система клиента.

client (Optional)

body

string

Информация о клиенте.

Пример запроса:
curl -X POST -H "Content-Type: application/json" http://controller:9365/v1/request-vm/ -d '{"user": "trs", "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 формате:

{
    "request_id": "fe8775d4-1ac0-4224-9fec-93151e0bfc43"
}
POST
/v1/get-vm/
Получение IP-адреса виртуальной TRS машины по ID задачи.

Получение IP виртуальной машины по 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"
    }
}
POST
/v1/get-projects/
Получение списка TRS проектов пользователя.

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

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

Name

In

Type

Description

user

body

string

Имя пользователя.

password

body

string

Пароль пользователя.

user_domain_name

body

string

Доменное имя пользователя.

Пример запроса:
curl -X POST -H "Authorization: Bearer $token" -H "Content-Type: application/json" http://controller:9365/v1/get-projects/ -d '{"user": "trs", "password": "rR0666&4", "user_domain_name": "default"}' | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

projects

body

array

Список проектов, доступных пользователю.

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

{
    "projects": [
        "trs_project1",
        "trs_project2",
        "trs_project3"
    ]
}
POST
/v1/server-remove-user/
Отвязка пользователя от TRS машины.

Отвязка пользователя от TRS машины.

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

Name

In

Type

Description

user

body

string

Имя пользователя.

password

body

string

Пароль пользователя.

user_domain_name

body

string

Доменное имя пользователя.

instance_id

body

string

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

Пример запроса:
curl -X POST -H "Authorization: Bearer $token" -H "Content-Type: application/json" http://controller:9365/v1/server-remove-user/ -d '{"user": "trs", "password": "rR0666&4", "user_domain_name": "default", "instance_id": "11"}' | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

message

body

string

Сообщение.

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

{
    "message": "User with user_id = 1 was deleted from instance with instance_id = 11"
}
POST
/v1/delete-vm/
Удаление TRS машины.

Удаление TRS машины.

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

Name

In

Type

Description

user

body

string

Имя пользователя.

password

body

string

Пароль пользователя.

user_domain_name

body

string

Доменное имя пользователя.

instance_id

body

string

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

project_name

body

string

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

Пример запроса:
curl -X POST -H "Authorization: Bearer $token" -H "Content-Type: application/json" http://controller:9365/v1/delete-vm/ -d '{"user": "trs", "password": "rR0666&4", "user_domain_name": "default", "instance_id": "11", "project_name": "a123"}' | python -m json.tool
Ответ
Параметры ответа:

Name

In

Type

Description

message

body

string

Сообщение.

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

{
    "message": "Instance with instance_id = 11 was deleted"
}

Описание ошибок обращений к TRS server

В случае ошибки сервер вернет ответ со статусом HTTP 400, который будет содержать объект error со следующими параметрами:

  • code - код ошибки;

  • message - краткое описание ошибки;

  • data - дополнительная информация об ошибке.

Перечень кодов ошибок с описанием

Код ошибки

Описание на английском

Сообщение в RS клиенте на английском

Описание на русском

Сообщение в RS клиенте на русском

1

Session renewal failed.
Unexpected error occurred. Please contact system administrator.
Не удалось обновить сессию.
Произошла непредвиденная ошибка. Обратитесь к системному администратору.

2

License expired.
License of RS server {cloud_url} got out. Please contact system administrator.
Истек срок действия лицензии.
Срок лицензии модуля RS сервер {cloud_url} истек. Обратитесь к системному администратору.

3

Asynchronous task of getting an instance failed.
–
Ошибка при выполнении асинхронной задачи получения виртуальной машины.
–

4

Failed to start asynchronous task of getting an instance.
–
Не удалось запустить асинхронную задачу получения виртуальной машины.
–

5

No available TRS project in the specified domain found.
No available TRS project found. Please contact system administrator.
Нет доступных TRS проектов для пользователя в указанном домене.
Нет ни одного доступного TRS проекта. Обратитесь к системному администратору.

6

Authentication error.
Invalid credentials. Please contact system administrator.
Ошибка аутентификации.
Неправильные учётные данные. Обратитесь к системному администратору.

7

Password expired.
The password needs to be changed.
Истек срок действия пароля.
Необходимо изменить пароль.

8

The specified project is not TRS.
Not a TRS project: {project_name}.
Указанный проект не является TRS проектом.
Проект {project_name} не является TRS проектом.

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 TRS project "{project_name}". Please contact system administrator.
Превышена квота проекта.
Превышена квота для TRS проекта "{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.Обратитесь к системному администратору.

27

OTP is required for authentication.
–
Для аутентификации требуется код OTP.
–

28

VDI Profiles were enabled but not found for specified TRS-project.
–
Отсутствует VDI Profile для выбранного TRS-проекта.
–

29

Session not found in Redis.
–
Сессия не найдена в Redis.
–

31

Session Invalid Status.
–
Неверное значение статуса.
–

32

Session Already Closed.
–
Сессия уже закрыта.
–

33

Token Expired Error.
–
Токен аутентификации истек.
–

Пример ошибки в JSON формате:

{
    "error": {
        "message": "Quota exceeded for TRS project \"c70379f3-e905-431f-b3b4-d0820e225edf\".",
        "code": 12,
        "data": {
            "project_name": "c70379f3-e905-431f-b3b4-d0820e225edf"
        }
    }
}

Пароли

Управление паролями.

POST
/v1/change-password/
Изменение пароля пользователя.

Изменение пароля пользователя.

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

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

Задачи в celery

Информация о задачах в celery.

GET
/v1/tasks/
Получение списка ID последних задач.

Получение списка ID последних задач celery.

Запрос
Пример запроса:
curl -X GET -H "X-Auth-Token: $token" http://controller:9364/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:9364/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"
}

Подробное описание кодов ответа на запросы доступно во вкладке с дополнительной информацией.