Appearance
OpenUDS REST API Guide
Библиотека для работы с REST API
В качестве практического примера работы c API может быть задействована следующая библиотека:
https://gitflic.ru/project/alexdebugger/hostvmlib
Автор библиотеки: alexdebugger
Точка входа API
http(s)://{hostname|IPv4}/uds/rest/
где {hostname|IPv4}
- IPv4 адрес или FQDN брокера OpenUDS
Далее по тексту запросы к API указываются в формате:
HTTP метод /api/endpoint
Например:
POST /auth/login
Это означает, что для запроса необходимо использовать метод HTTP POST
, URI запроса в таком случае будет выглядеть как:
http(s)://{hostname|IPv4}/uds/rest/auth/login
Аутентификация
Аутентификация пользователя:
POST /auth/login
Параметры тела запроса:
auth
- имя аутентификатора, тип: stringusername
- имя пользователя, тип: stringpassword
- пароль пользователя, тип: string
Пример ответа в случае успешной аутентификации:
{'result': 'ok', 'token': 'token_value', 'version': '3.0.0', 'scrambler': 'scrambler_value'}
Пример ответа в случае неуспешной аутентификации:
{'result': 'error', 'token': None, 'version': '3.0.0', 'error': 'Invalid credentials'}
Важно: значение параметра
token
используется в качестве значения HTTP заголовкаX-Auth-Token
, передаваемого во всех последующих запросах к API в рамках текущей сессии.
Завершение сессии:
GET /auth/logout
Сервис-провайдеры
Запрос текущей конфигурации
Получение списка провайдеров:
GET /providers
Получение параметров провайдера:
GET /providers/{provider_id}
Получение списка всех созданных базовых сервисов по сервис-провайдерам:
GET /providers/allservices
Получение базовых сервисов провайдера:
GET /providers/{provider_id}/services
Получение параметров базового сервиса:
GET /providers/{provider_id}/services/{service_id}
Параметры path
{provider_id}
- id сервис-провайдера
{service_id}
- id базового сервиса
Примеры
Пример ответа с параметрами провайдера:
{
'id': '90e05812-dc8b-5279-a512-1aae638b3b21',
'name': 'static',
'tags': [],
'services_count': 1,
'user_services_count': 2,
'maintenance_mode': False,
'offers': [
{
'name': 'Static Multiple IP',
'type': 'IPMachinesService',
'description': 'This service provides access to POWERED-ON Machines by IP',
'icon': ''
},
{
'name': 'Static Single IP',
'type': 'IPSingleMachineService',
'description': 'This service provides access to POWERED-ON Machine by IP',
'icon': ''
}
],
'type': 'PhysicalMachinesServiceProvider',
'type_name': 'Static IP Machines Provider',
'comments': '',
'permission': 96,
'config': ''
}
Пример ответа с параметрами базового сервиса:
{
'id': 'afaba279-0f65-5b77-9140-12ec4cf2ff1b',
'name': 'multiple',
'tags': [],
'comments': '',
'type': 'IPMachinesService',
'type_name': 'Static Multiple IP',
'proxy_id': '-1',
'proxy': '',
'deployed_services_count': 1,
'user_services_count': 2,
'maintenance_mode': False,
'permission': 96,
'info': {
'icon': '',
'needs_publication': False,
'max_deployed': -1,
'uses_cache': False,
'uses_cache_l2': False,
'cache_tooltip': 'None',
'cache_tooltip_l2': 'None',
'needs_manager': False,
'allowedProtocols': ['rdp', 'rgs', 'vnc', 'nx', 'x11', 'x2go', 'pcoip', 'nicedcv', 'other'],
'servicesTypeProvided': ['vdi'],
'must_assign_manually': False,
'can_reset': False,
'can_list_assignables': True
},
'ipList': ['10.1.141.74', '10.1.141.75'],
'token': '',
'port': '0',
'skipTimeOnFailure': '0',
'maxSessionForMachine': '0',
'lockByExternalAccess': False
}
Создание провайдера
Создание провайдера:
PUT /providers
Параметры тела запроса
Обязательные:
name
- имя сервис-провайдера, тип: string
type
- тип сервис-провайдера, тип: string
Допустимые значения параметра type
:
oVirtPlatform
- сервис-провайдер oVirtopenGnsysPlatform
- сервис-провайдер OpenGnsysopenNebulaPlatform
- сервис-провайдер OpenNebulaopenStackPlatform
- сервис-провайдер OpenStack(legacy)openStackPlatformNew
- сервис-провайдер OpenStackPhysicalMachinesServiceProvider
- сервис-провайдер Static IPProxmoxPlatform
- сервис-провайдер ProxmoxRDSProvider
- сервис-провайдер RDSXenPlatform
- сервис-провайдер XenServer
Важно: в зависимости от выбранного типа провайдера, список дополнительно требуемых параметров будет отличаться. Описание см. в приложении.
Необязательные:
comments
- комментарии для сервис-провайдера, тип: string
tags
- тэги для сервис-провайдера, тип: list of strings
Создание базового сервиса провайдера
Создание базового сервиса провайдера:
PUT /providers/{provider_id}/services
Параметры path
{provider_id}
- id сервис-провайдера
Параметры тела запроса
Обязательные:
name
- имя базового сервиса, тип: string
type
, data_type
- тип базового сервиса, тип: string
Допустимые значения параметров type
, data_type
:
openGnsysMachine
- базовый сервис провайдера OpenGnsysProxmoxLinkedService
- базовый сервис провайдера ProxmoxoVirtLinkedService
- базовый сервис провайдера oVirtXenLinkedService
- базовый сервис провайдера XenServeropenNebulaLiveService
- базовый сервис провайдера OpenNebulaopenStackLiveService
- базовый сервис провайдера OpenStack и OpenStack(legacy)IPMachinesService
- базовый сервис Static Multiple IP провайдера Static IPIPSingleMachineService
- базовый сервис Static Single IP провайдера Static IPRemoteSessionService
- базовый сервис Session провайдера RDSRemoteAppManagedService
- базовый сервис RemoteApp провайдера RDS
Важно: в зависимости от выбранного типа базового сервиса, список дополнительно требуемых параметров будет отличаться. Описание см. в приложении.
Необязательные:
comments
- комментарии для базового сервиса, тип: string
tags
- тэги для базового сервиса, тип: list of strings
Аутентификаторы, группы и пользователи
Запрос текущей конфигурации
Получение списка аутентификаторов:
GET /authenticators
Получение параметров аутентификатора:
GET /authenticators/{auth_id}
Получение списка созданных в аутентификаторе групп:
GET /authenticators/{auth_id}/groups
Получение параметров группы аутентификатора:
GET /authenticators/{auth_id}/groups/{group_id}
Получение списка созданных в аутентификаторе пользователей:
GET /authenticators/{auth_id}/users
Получение параметров пользователя:
GET /authenticators/{auth_id}/users/{user_id}
Получение списка пользователей группы:
GET /authenticators/{auth_id}/groups/{group_id}/users
Параметры path
{auth_id}
- id аутентификатора
{group_id}
- id группы
{user_id}
- id пользователя
Примеры
Пример ответа с параметрами аутентификатора (Active Directory):
{
'numeric_id': 14,
'id': 'ac0702cd-cb63-5ea1-b6a6-ae3d5adff46d',
'name': 'dc1',
'tags': [],
'comments': '',
'priority': 2,
'visible': True,
'small_name': 'dc1',
'users_count': 1,
'type': 'ActiveDirectoryAuthenticator',
'type_name': 'Active Directory Authenticator',
'type_info': {
'canSearchUsers': True,
'canSearchGroups': True,
'needsPassword': False,
'userNameLabel': 'User name',
'groupNameLabel': 'Group name',
'passwordLabel': 'Password',
'canCreateUsers': True,
'isExternal': True
},
'permission': 96,
'host': '10.1.1.1',
'ssl': False,
'username': 'user@domain.local',
'password': 'password',
'timeout': '10',
'ldapBase': 'dc=domain,dc=local',
'groupBase': '',
'defaultDomain': '',
'nestedGroups': False
}
Пример ответа с параметрами группы:
{
'id': '71326643-3aba-5f20-9717-a09c44a5540a',
'name': 'Domain Admins',
'comments': '',
'state': 'A',
'type': 'group',
'meta_if_any': False,
'pools': ['d1bd5dff-5287-5afd-9444-493a3528a535']
}
Пример ответа с параметрами пользователя:
{
'name': 'vdiuser',
'real_name': 'vdiuser',
'comments': '',
'state': 'A',
'staff_member': False,
'is_admin': False,
'last_access': 1603712668,
'parent': None,
'id': 'e954f545-4870-5da2-8a95-271c0e930d3f',
'role': 'User'
}
Создание нового аутентификатора
Создание нового аутентификатора:
PUT /authenticators
Параметры тела запроса
name
- имя аутентификатора, тип: string
small_name
- метка, тип: string
tags
- тэги для этого элемента, тип: list of strings
comments
- комментарии для этого элемента, тип: string
priority
- приоритет аутентификатора, тип: integer
visible
- видимость аутентификатора, тип: boolean
data_type
- тип аутентификатора, тип: string
Допустимые значения параметра data_type
:
ActiveDirectoryAuthenticator
- аутентификатор Active DirectoryInternalDBAuth
- аутентификатор Internal DatabaseSimpleLdapAuthenticator
- аутентификатор Simple LDAPRegexLdapAuthenticator
- аутентификатор Regex LDAPSAML20Authenticator
- аутентификатор SAMLRadiusAuthenticator
- аутентификатор RadiusIPAuth
- аутентификатор IP
Важно: в зависимости от выбранного типа аутентификатора, список дополнительно требуемых параметров будет отличаться. Описание см. в приложении.
Создание группы аутентификатора
Создание группы аутентификатора:
PUT /authenticators/{auth_id}/groups
Параметры path
{auth_id}
- id аутентификатора
Параметры тела запроса
type
- тип группы, тип: string
Допустимые значения параметра type
:
group
- группаmeta
- метагруппа
name
- имя группы, тип: string
comments
- комментарии для этого элемента, тип: string
state
- статус группы, тип: string. При создании используйте статус A
(Active). Перечень остальных значений параметра state
см. в приложении.
meta_if_any
- режим сопоставления, тип: boolean. Значение, отличное от False
, учитывается только для групп типа meta
.
pools
- список id сервис-пулов, в которые добавлена группа, тип: list of strings
Создание пользователя аутентификатора
Создание пользователя аутентификатора:
PUT /authenticators/{auth_id}/users
Параметры path
{auth_id}
- id аутентификатора
Параметры тела запроса
name
имя пользователя - , тип: string
real_name
- реальное имя пользователя, тип: string
comments
- комментарии для этого элемента, тип: string
state
- статус пользователя, тип: string. При создании используйте статус A
(Active). Перечень остальных значений параметра state
см. в приложении.
staff_member
- признак наличия полномочий типа "Оператор", тип: boolean. Дополнительно см. параметр role
.
is_admin
- признак наличия полномочий типа "Администратор", тип: boolean. Дополнительно см. параметр role
.
groups
- список id групп, в которые добавлен пользователь, тип: list of strings
role
- роль пользователя, тип: string
Допустимые значения параметра role
:
admin
- администратор. Значения параметровis_admin
иstaff_member
должны быть установлены вTrue
.staff
- оператор. Значение параметраis_admin
должно быть установлено вFalse
, параметраstaff_member
- вTrue
.user
- пользователь. Значения параметровis_admin
иstaff_member
должны быть установлены вFalse
.
Менеджеры ОС
Запрос текущей конфигурации
Получение списка менеджеров ОС:
GET /osmanagers
Примеры
Пример ответа со списком менеджеров ОС:
[
{'id': '6a2c5205-b888-5e7b-83eb-8fc32787e718', 'name': 'Linux', 'tags': [], 'deployed_count': 6, 'type': 'LinuxManager', 'type_name': 'Linux OS Manager', 'servicesTypes': ['vdi'], 'comments': '', 'permission': 96},
{'id': '05dc012f-1ab8-51f4-9fce-b321f5945b64', 'name': 'WinBasic', 'tags': [], 'deployed_count': 1, 'type': 'WindowsManager', 'type_name': 'Windows Basic OS Manager', 'servicesTypes': ['vdi'], 'comments': '', 'permission': 96}
]
Транспорты
Запрос текущей конфигурации
Получение списка созданных транспортов:
GET /transports
Получение параметров транспорта:
GET /transports/{transport_id}
Параметры path
{transport_id}
- id транспорта
Примеры
Пример ответа с параметрами транспорта (RDP direct):
{
'id': 'b925c748-c3cc-585e-a8ec-9d7dd3a2c649',
'name': 'rdp-direct',
'tags': [],
'comments': '',
'priority': 1,
'nets_positive': True,
'label': '',
'networks': [],
'allowed_oss': [],
'pools': [{'id': '4302fdcb-a692-5262-93d0-ab460bbd1f84'}, {'id': 'd1bd5dff-5287-5afd-9444-493a3528a535'}],
'pools_count': 2,
'deployed_count': 2,
'type': 'RDPTransport',
'type_name': 'RDP',
'protocol': 'rdp',
'permission': 96,
'useEmptyCreds': False,
'fixedName': '',
'fixedPassword': '',
'withoutDomain': False,
'fixedDomain': '',
'allowSmartcards': False,
'allowPrinters': False,
'allowDrives': False,
'enforceDrives': '',
'allowSerials': False,
'allowClipboard': True,
'allowAudio': True,
'allowWebcam': False,
'usbRedirection': False,
'wallpaper': False,
'multimon': False,
'aero': False,
'smooth': True,
'showConnectionBar': True,
'credssp': True,
'rdpPort': '3389',
'screenSize': '-1x-1',
'colorDepth': '24',
'alsa': False,
'multimedia': False,
'printerString': '',
'smartcardString': '',
'customParameters': '/sec:tls',
'allowMacMSRDC': False,
'customParametersMAC': ''
}
Создание нового транспорта
Создание нового транспорта:
PUT /transports
Параметры тела запроса
name
- имя транспорта, тип: string
tags
- тэги для этого элемента, тип: list of strings
comments
- комментарии для этого элемента, тип: string
priority
- приоритет транспорта, тип: integer
nets_positive
- сетевой доступ, тип: boolean
label
- метка, тип: string
networks
- список id сетей, ассоциированных с транспортом, тип: list of strings
allowed_oss
- список разрешенных устройств, тип: list of strings
Перечень значений параметра allowed_oss
(допустимо указывать несколько значений, либо передать пустую строку(без ограничений по устройствам)):
WindowsPhone
Android
Linux
Windows
iPad
iPhone
Macintosh
ChromeOS
WYSE
pools
- список id сервис-пулов, в которые добавлен транспорт, тип: list of strings
type
- тип транспорта, тип: string
Допустимые значения параметра type
:
RDPTransport
- транспорт RDP directTSRDPTransport
- транспорт RDP tunnelRATransport
- транспорт RemoteApp directTRATransport
- транспорт RemoteApp tunnelHTML5RDPTransport
- транспорт HTML5 RDPHTML5RATransport
- транспорт HTML5 RemoteAppPCoIPTransport
- транспорт PCoIP Cloud AccessSPICETransport
- транспорт SPICE directTSSPICETransport
- транспорт SPICE tunnelURLTransport
- транспорт URL LauncherX2GOTransport
- транспорт X2Go directTX2GOTransport
- транспорт X2Go tunnel
Важно: в зависимости от выбранного типа транспорта, список дополнительно требуемых параметров будет отличаться. Описание см. в приложении.
Добавление сетей
Добавление сетей в транспорт:
PUT /transports/{transport_id}/networks
Параметры path
{transport_id}
- id транспорта
Параметры тела запроса
Обязательные:
id
- id добавляемой сети, тип: string
Сервис-пулы
Запрос текущей конфигурации
Получение списка сервис-пулов и их параметров:
GET /servicespools/overview
Получение параметров пула:
GET /servicespools/{pool_id}
Получение списка групп, добавленных в пул:
GET /servicespools/{pool_id}/groups
Получение списка транспортов, добавленных в пул:
GET /servicespools/{pool_id}/transports
Получение списка сервисов пула (тонких клонов, виртуальных машин, и т.д.), назначенных пользователям (закрепленных за ними):
GET /servicespools/{pool_id}/services
Получение списка сервисов пула, находящихся в кэше (развернутые, но не назначенные пользователям экземпляры):
GET /servicespools/{pool_id}/cache
Получение списка назначаемых сервисов:
GET /servicespools/{pool_id}/listAssignables
Параметры path
{pool_id}
- id пула
Примеры
Пример ответа с параметрами пула:
{
'id': 'd1bd5dff-5287-5afd-9444-493a3528a535',
'name': 'static-mult',
'short_name': '',
'tags': [],
'parent': 'multiple',
'parent_type': 'IPMachinesService',
'comments': '',
'state': 'A',
'thumb': '',
'account': '',
'account_id': None,
'service_id': 'afaba279-0f65-5b77-9140-12ec4cf2ff1b',
'provider_id': '90e05812-dc8b-5279-a512-1aae638b3b21',
'image_id': None,
'initial_srvs': 0,
'cache_l1_srvs': 0,
'cache_l2_srvs': 0,
'max_srvs': 0,
'show_transports': True,
'visible': True,
'allow_users_remove': False,
'allow_users_reset': False,
'ignores_unused': False,
'fallbackAccess': 'ALLOW',
'meta_member': [],
'calendar_message': '',
'user_services_count': 1,
'user_services_in_preparation': 0,
'restrained': False,
'permission': 96,
'info': {
'icon': '',
'needs_publication': False,
'max_deployed': -1,
'uses_cache': False,
'uses_cache_l2': False,
'cache_tooltip': 'None',
'cache_tooltip_l2': 'None',
'needs_manager': False,
'allowedProtocols': ['rdp', 'rgs', 'vnc', 'nx', 'x11', 'x2go', 'pcoip', 'nicedcv', 'other'],
'servicesTypeProvided': ['vdi'],
'must_assign_manually': False,
'can_reset': False,
'can_list_assignables': True
},
'pool_group_id': None,
'pool_group_name': 'Default',
'pool_group_thumb': '',
'usage': '100%'
}
Пример ответа со списком добавленных в пул групп:
[
{
'id': '71326643-3aba-5f20-9717-a09c44a5540a',
'auth_id': 'ac0702cd-cb63-5ea1-b6a6-ae3d5adff46d',
'name': 'Domain Admins',
'group_name': 'Domain Admins@dc1',
'comments': '',
'state': 'A',
'type': 'group',
'auth_name': 'dc1'
},
{
'id': '19b400ab-db2b-5fc7-9d7e-1e3662df594b',
'auth_id': '750f3742-f761-5fc6-b4cc-7115bc66404b',
'name': 'vdigroup',
'group_name': 'vdigroup@int',
'comments': '',
'state': 'A',
'type': 'group',
'auth_name': 'int'
},
{
'id': 'de14df32-69d8-5add-96c5-be758f2ca49c',
'auth_id': '750f3742-f761-5fc6-b4cc-7115bc66404b',
'name': 'vdigroup1',
'group_name': 'vdigroup1@int',
'comments': '',
'state': 'A',
'type': 'group',
'auth_name': 'int'
}
]
Пример ответа со списком добавленных в пул транспортов:
[
{
'id': 'b925c748-c3cc-585e-a8ec-9d7dd3a2c649',
'name': 'rdp-direct',
'type': {
'name': 'RDP',
'type': 'RDPTransport',
'description': 'RDP Protocol. Direct connection.',
'icon': '',
'group': 'Direct'
},
'comments': '',
'priority': 1,
'trans_type': 'RDP'
},
{
'id': 'c532143e-86be-500b-9236-a449825403b2',
'name': 'x2go-direct',
'type': {
'name': 'X2Go',
'type': 'X2GOTransport',
'description': 'X2Go access (Experimental). Direct connection.',
'icon': '',
'group': 'Direct'
},
'comments': '',
'priority': 2,
'trans_type': 'X2Go'
}
]
Пример ответа со списком назначенных пользователям сервисов пула:
[
{
'id': 'b1931a7d-3a2c-5d8a-9d8f-d517188ac5eb',
'id_deployed_service': 'd1bd5dff-5287-5afd-9444-493a3528a535',
'unique_id': '10.1.141.74',
'friendly_name': '10.1.141.74',
'state': 'U',
'os_state': 'U',
'state_date': 1707128501,
'creation_date': 1707128500,
'revision': '',
'ip': '10.1.141.74',
'actor_version': 'unknown',
'owner': 'vdiuser@int',
'owner_info': {'auth_id': '750f3742-f761-5fc6-b4cc-7115bc66404b', 'user_id': '0f489bb0-9f70-5ee8-bb09-a30458d69fef'},
'in_use': True,
'in_use_date': 1707128500,
'source_host': 'hostname',
'source_ip': '10.1.44.13'
},
{
'id': '9599b697-8b4e-5ca1-98f8-88aff03a227d',
'id_deployed_service':
'd1bd5dff-5287-5afd-9444-493a3528a535',
'unique_id': '10.1.141.76',
'friendly_name': '10.1.141.76',
'state': 'U',
'os_state': 'U',
'state_date': 1707985180,
'creation_date': 1707985180,
'revision': '',
'ip': '10.1.141.76',
'actor_version': 'unknown',
'owner': 'adm@openuds.local@dc1',
'owner_info': {'auth_id': 'ac0702cd-cb63-5ea1-b6a6-ae3d5adff46d', 'user_id': '7c2aec6f-3824-5a8b-8a80-0bb5e6ddbea9'},
'in_use': True,
'in_use_date': 1707985180,
'source_host': '',
'source_ip': ''
}
]
Пример ответа со списком сервисов в кэше:
[
{
'id': 'b2b9c5ba-0943-58f3-ba06-05b0c2738028',
'id_deployed_service': '9a801202-eb99-5f75-9137-c64aad365e1f',
'unique_id': '52:54:00:00:00:01',
'friendly_name': 'vdi3-alt-00',
'state': 'U',
'os_state': 'U',
'state_date': 1631271805,
'creation_date': 1631271750,
'revision': 3,
'ip': '10.1.2.13',
'actor_version': '2.2.0',
'cache_level': 1
}
]
Создание сервис-пула
Создание нового пула:
PUT /servicespools
Параметры тела запроса
name
- имя пула, тип: string
service_id
- id базового сервиса, тип: string
osmanager_id
- id менеджера ОС, тип: string. При создании пула на основе сервиса, не использующего менеджер ОС (например Static IP), используйте значение None
.
short_name
- короткое имя, тип: string
comments
- комментарии для этого элемента, тип: string
tags
- тэги для этого элемента, тип: list of strings
image_id
- id изображения для пула, тип: string. Для изображения по умолчанию используйте значение -1
.
pool_group_id
- id группы пулов, тип: string. Для группы по умолчанию используйте значение -1
.
visible
- видимость пула, тип: boolean
calendar_message
- сообщение при ограничении доступа по календарю, тип: string
allow_users_remove
- разрешить удаление пользователями, тип: boolean
allow_users_reset
- разрешить сброс пользователями, тип: boolean
ignores_unused
- игнорировать неиспользуемые, тип: boolean
show_transports
- показать транспорты, тип: boolean
account_id
- учет использования, тип: string. Для настройки по умолчанию используйте значение -1
.
initial_srvs
- первоначально доступные сервисы, тип: integer. При создании пула на основе сервиса, не использующего менеджер ОС (например Static IP), используйте значение 0
.
cache_l1_srvs
- сервисы, хранящиеся в кэше, тип: integer. При создании пула на основе сервиса, не использующего менеджер ОС (например Static IP), используйте значение 0
.
cache_l2_srvs
- сервисы, хранящиеся в L2 кэше, тип: integer. При создании пула на основе сервиса, не использующего менеджер ОС (например Static IP), используйте значение 0
.
max_srvs
- максимальное количество предоставляемых сервисов, тип: integer. При создании пула на основе сервиса, не использующего менеджер ОС (например Static IP), используйте значение 0
.
Примеры
Пример выдачи:
[
{
'id': 'ee27235f-59c3-5407-b897-d1c9a7ed84e0',
'name': 'AltLinux',
'tags': [],
'comments': '',
'type': 'oVirtLinkedService',
'type_name': 'oVirt/RHEV Linked Clone',
'proxy_id': '-1',
'proxy': '',
'deployed_services_count': 2,
'user_services_count': 2,
'maintenance_mode': False,
'permission': 96,
'info': {'icon': '...', 'needs_publication': True, 'max_deployed': -1, 'uses_cache': True, 'uses_cache_l2': True, 'cache_tooltip': 'Number of desired machines to keep running waiting for a user', 'cache_tooltip_l2': 'Number of desired machines to keep suspended waiting for use', 'needs_manager': True, 'allowedProtocols': ['rdp', 'rgs', 'vnc', 'nx', 'x11', 'x2go', 'pcoip', 'other', 'spice'], 'servicesTypeProvided': ['vdi'], 'must_assign_manually': False, 'can_reset': True, 'can_list_assignables': False}
},
...
]
Изменение конфигурации сервис-пула
Изменение параметров пула:
PUT /servicespools/{pool_id}
Параметры path
pool_id
- id сервис-пула
Параметры тела запроса
name
- имя пула, тип: string
short_name
- короткое имя, тип: string
comments
- комментарии для этого элемента, тип: string
tags
- тэги для этого элемента, тип: list of strings
image_id
- id изображения для пула, тип: string. Для изображения по умолчанию используйте значение -1
.
pool_group_id
- id группы пулов, тип: string. Для группы по умолчанию используйте значение -1
.
visible
- видимость пула, тип: boolean
calendar_message
- сообщение при ограничении доступа по календарю, тип: string
allow_users_remove
- разрешить удаление пользователями, тип: boolean
allow_users_reset
- разрешить сброс пользователями, тип: boolean
ignores_unused
- игнорировать неиспользуемые, тип: boolean
show_transports
- показать транспорты, тип: boolean
account_id
- учет использования, тип: string. Для настройки по умолчанию используйте значение -1
.
initial_srvs
- первоначально доступные сервисы, тип: integer. Для пула на основе сервиса, не использующего менеджер ОС (например Static IP), значение параметра равно 0
и не модифицируется.
cache_l1_srvs
- сервисы, хранящиеся в кэше, тип: integer. Для пула на основе сервиса, не использующего менеджер ОС (например Static IP), значение параметра равно 0
и не модифицируется.
cache_l2_srvs
- сервисы, хранящиеся в L2 кэше, тип: integer. Для пула на основе сервиса, не использующего менеджер ОС (например Static IP), значение параметра равно 0
и не модифицируется.
max_srvs
- максимальное количество предоставляемых сервисов, тип: integer. Для пула на основе сервиса, не использующего менеджер ОС (например Static IP), значение параметра равно 0
и не модифицируется.
Удаление сервис-пула
Удаление сервис-пула:
DELETE /servicespools/{pool_id}
Параметры path
pool_id
- id сервис-пула
Добавление группы в сервис-пул
Добавление в пул группы доступа:
PUT /servicespools/{pool_id}/groups
Параметры path
pool_id
- id сервис-пула
Параметры тела запроса
id
- id группы, тип: string
Добавление транспорта в сервис-пул
Добавление транспорта в сервис-пул:
PUT /servicespools/{pool_id}/transports
Параметры path
pool_id
- id сервис-пула
Параметры тела запроса
id
- id транспорта, тип: string
Публикация сервисов пула
Публикация сервисов пула:
GET /servicespools/{pool_id}/publications/publish
Параметры path
pool_id
- id сервис-пула
В случае успешного запуска процесса публикации возвращается ответ ok
.
Назначение сервисов
Назначить пользователю экземпляр сервиса пула:
GET /servicespools/{pool_id}/createFromAssignable
! - доступно только для сервисов, поддерживающих ручное назначение пользователям (Static IP провайдер - Multiple IP сервис)
Параметры path
{pool_id}
- id сервис-пула
Параметры тела запроса
user_id
- id пользователя, тип: string
assignable_id
- id назначаемого сервиса пула, тип: string
Для получения assignable_id
необходимо запросить список назначаемых сервисов пула, см. соответствующий метод в разделе Сервис-пулы / Запрос текущей конфигурации
.
Разрешения объектов
Запрос текущей конфигурации
Получение разрешений объекта системы:
GET /permissions/{cls}/{uuid}
Параметры path
{cls}
- класс объекта (сервис-провайдер, аутентификатор, транспорт, сервис-пул и т.д.)
Допустимые значения параметра cls
:
providers
service
authenticators
osmanagers
transports
networks
servicespools
calendars
metapools
accounts
{uuid}
- id объекта
Примеры
Пример ответа со списком разрешений для сервис-провайдера:
[
{
'id': '4b409ec8-b5e5-5eae-a4f1-34b701c50bbc',
'type': 'group',
'auth': '750f3742-f761-5fc6-b4cc-7115bc66404b',
'auth_name': 'int',
'entity_id': '19b400ab-db2b-5fc7-9d7e-1e3662df594b',
'entity_name': 'vdigroup',
'perm': 64,
'perm_name': 'Manage'
},
{
'id': '84c4535d-4823-56c4-be5c-6c79ec779a69',
'type': 'user',
'auth': '750f3742-f761-5fc6-b4cc-7115bc66404b',
'auth_name': 'int',
'entity_id': '0f489bb0-9f70-5ee8-bb09-a30458d69fef',
'entity_name': 'vdiuser',
'perm': 32,
'perm_name': 'Read'
}
]
Добавление разрешений
Добавить разрешения для объекта:
PUT /permissions/{cls}/{uuid}/{perm_type}/add/{entity_id}
Параметры path
{cls}
- класс объекта (сервис-провайдер, аутентификатор, транспорт, сервис-пул и т.д.)
Допустимые значения параметра cls
:
providers
service
authenticators
osmanagers
transports
networks
servicespools
calendars
metapools
accounts
{uuid}
- id объекта
{perm_type}
- тип выдаваемого разрешения, на пользователя или на группу
Допустимые значения параметра perm_type
:
users
groups
{entity_id}
- id пользователя или группы (в зависимости от типа разрешения)
Параметры тела запроса
perm
- выдаваемое разрешение, тип: string
Допустимые значения параметра perm
:
1
- чтение2
- управление
Системные настройки
Запрос текущей конфигурации
Получение конфигурации системы:
GET /config
Пользователи и сервисы
Важно: действия выполняются в контексте учетной записи пользователя, от имени которой был сделан REST API запрос.
Получение списка доступных пользователю сервисов и транспортов:
GET /connection
Проверка возможности подключения для указанного сервиса и транспорта, привязка пользователя к экземпляру сервиса:
GET /connection/{service_id}/{transport_id}
Параметры path
{service_id}
- id сервиса
{uuid}
- id транспорта
Примеры
Пример ответа со списком доступных пользователю сервисов и транспортов:
{
'id': 'F904ad90d-5f84-51ce-8510-840e57014fa9', - id сервиса
...
'name': 'Xubuntu', - имя сервиса
...
'transports': [
{
'id': 'c0d8ac20-4f2b-516c-bf62-8ce7f50a3113', - id транспорта
'name': 'spice', - имя транспорта
...
}
],
...
}
Пример ответа в случае успешной проверки возможности подключения для указанного сервиса и транспорта:
{
'result': 'ok',
...
}
Приложение
Статус объектов
Перечень всех возможных статусов объектов VDI (параметр state
). Не все объекты поддерживают все статусы.
'A' - Active
'B' - Blocked
'C' - Canceled
'E' - Error
'F' - Finished
'H' - Balancing
'I' - Inactive
'J' - Too many preparing services
'K' - Canceling
'L' - Waiting publication
'M' - Removing
'P' - In preparation
'R' - Removable
'S' - Removed
'T' - Restrained
'U' - Valid
'W' - Running
'X' - Waiting execution
'Y' - In maintenance
'Z' - Waiting OS
'V' - Meta member
Параметры провайдеров и базовых сервисов
PhysicalMachinesServiceProvider
Необязательные:
config
- расширенная конфигурация, тип: string
IPMachinesService
ipList
- список серверов, тип: list of strings
token
- токен сервиса, тип: string
port
- порт для проверки соединения, тип: integer
skipTimeOnFailure
- интервал между проверками соединения при неудаче, тип: integer
maxSessionForMachine
- максимальная продолжительность сеанса, в часах, тип: integer
lockByExternalAccess
- блокировать машину при внешнем доступе, тип: boolean
proxy_id
- id прокси, тип: string. Если отсутствует, используйте значение -1
.
Параметры аутентификаторов
ActiveDirectoryAuthenticator
host
- IP или FQDN сервера AD, тип: string
username
- имя пользователя, тип: string
password
- пароль, тип: string
ldapBase
- база поиска, тип: string
ssl
- использовать SSL, тип: string. Допустимые значения: true
, false
.
timeout
- таймаут подключения, тип: string
groupBase
- база поиска для групп, тип: string
defaultDomain
- домен по умолчанию, тип: string
nestedGroups
- получить вложенные группы, тип: string. Допустимые значения: true
, false
.
InternalDBAuth
differentForEachHost
- разные пользователи для каждого хоста, тип: string. Допустимые значения: true
, false
.
reverseDns
- обратный DNS, тип: string. Допустимые значения: true
, false
.
acceptProxy
- разрешить прокси, тип: string. Допустимые значения: true
, false
.
RegexLdapAuthenticator
host
- адрес или имя LDAP сервера, тип: string
username
- имя пользователя, тип: string
password
- пароль, тип: string
ldapBase
- база поиска, тип: string
port
- порт LDAP сервера, тип: string
ssl
- использовать SSL, тип: string. Допустимые значения: true
, false
.
timeout
- таймаут подключения, тип: string
userClass
- класс для пользователей LDAP, тип: string
userIdAttr
- атрибут идентификатора пользователя, тип: string
groupNameAttr
- атрибуты имени группы, тип: string
userNameAttr
- атрибут имени пользователя, тип: string
altClass
- альтернативный класс для поиска групп, тип: string
SimpleLdapAuthenticator
host
- адрес или имя LDAP сервера, тип: string
username
- имя пользователя, тип: string
password
- пароль, тип: string
ldapBase
- база поиска, тип: string
port
- порт LDAP сервера, тип: string
ssl
- использовать SSL, тип: string. Допустимые значения: true
, false
.
timeout
- таймаут подключения, тип: string
userClass
- класс для пользователей LDAP, тип: string
groupClass
- класс для групп LDAP, тип: string
userIdAttr
- атрибут идентификатора пользователя, тип: string
groupIdAttr
- атрибут идентификатора группы, тип: string
memberAttr
- атрибут членства в группе, тип: string
userNameAttr
- атрибут имени пользователя, тип: string
SAML20Authenticator
privateKey
- приватный ключ, тип: string
serverCertificate
- сертификат, тип: string
idpMetadata
- метаданные IDP, тип: string
userNameAttr
- атрибут имени пользователя, тип: string
groupNameAttr
- атрибуты имени группы, тип: string
realNameAttr
- атрибуты реального имени пользователя, тип: string
entityID
- идентификатор SP, тип: string
usePassword
- использовать пароль, тип: string. Допустимые значения: true
, false
.
pwdAttr
- атрибут пароля, тип: string
Параметры транспортов
RDPTransport
useEmptyCreds
- пропустить данные аккаунта, тип: string. Допустимые значения: true
, false
.
fixedName
- имя пользователя, тип: string
fixedPassword
- пароль, тип: string
withoutDomain
- без домена, тип: string. Допустимые значения: true
, false
.
fixedDomain
- домен, тип: string
allowSmartcards
- разрешить смарткарты, тип: string. Допустимые значения: true
, false
.
allowPrinters
- разрешить принтеры, тип: string. Допустимые значения: true
, false
.
allowDrives
- политика локальных дисков, тип: string. Допустимые значения: true
- allow any, dynamic
- allow PnP, false
- allow none.
enforceDrives
- принудительное подключение дисков, тип: string
allowSerials
- разрешить серийные порты, тип: string. Допустимые значения: true
, false
.
allowClipboard
- включить буфер обмена, тип: string. Допустимые значения: true
, false
.
allowAudio
- включить звук, тип: string. Допустимые значения: true
, false
.
allowWebcam
- включить веб-камеру, тип: string. Допустимые значения: true
, false
.
usbRedirection
- проброс USB, тип: string.
Допустимые значения параметра usbRedirection
:
true
- Allow allfalse
- Allow none{ca3e7ab9-b4c3-4ae6-8251-579ef933890f}
- Cameras{4d36e967-e325-11ce-bfc1-08002be10318}
- Disk Drives{4d36e979-e325-11ce-bfc1-08002be10318}
- Printers{50dd5230-ba8a-11d1-bf5d-0000f805f530}
- Smartcards{745a17a0-74d3-11d0-b6fe-00a0c90f57da}
- HIDs
wallpaper
- обои/темы, тип: string. Допустимые значения: true
, false
.
multimon
- несколько мониторов, тип: string. Допустимые значения: true
, false
.
aero
- разрешить композицию рабочего стола, тип: string. Допустимые значения: true
, false
.
smooth
- сглаживание шрифтов, тип: string. Допустимые значения: true
, false
.
showConnectionBar
- панель подключения, тип: string. Допустимые значения: true
, false
.
credssp
- поддержка Credssp, тип: string. Допустимые значения: true
, false
.
rdpPort
- порт RDP, тип: string
screenSize
- размер экрана, тип: string. Для полноэкранного режима используйте значение -1x-1
colorDepth
- глубина цвета, тип: string
alsa
- использовать Alsa, тип: string. Допустимые значения: true
, false
.
multimedia
- оптимизация видеопотока, тип: string. Допустимые значения: true
, false
.
printerString
- строка принтера, тип: string
smartcardString
- строка Smartcard, тип: string
customParameters
- дополнительные параметры Linux, тип: string
allowMacMSRDC
- разрешить клиент Microsoft RDP, тип: string. Допустимые значения: true
, false
.
customParametersMAC
- дополнительные параметры MacOS, тип: string
TSRDPTransport
tunnelServer
- туннельный сервер, тип: string
tunnelWait
- время ожидания туннеля, тип: string
verifyCertificate
- проверка SSL-сертификата, тип: string. Допустимые значения: true
, false
.
! Остальные параметры аналогичны типу транспорта RDPTransport
.
RATransport
fixedApp
- алиас приложения, тип: string
! Остальные параметры аналогичны типу транспорта RDPTransport
.
TRATransport
fixedApp
- алиас приложения, тип: string
! Остальные параметры аналогичны типу транспорта TSRDPTransport
.
HTML5RDPTransport
guacamoleServer
- туннельный сервер, тип: string
useGlyptodonTunnel
- использовать туннель Glyptodon Enterprise, тип: string. Допустимые значения: true
, false
.
useEmptyCreds
- пропустить данные аккаунта, тип: string. Допустимые значения: true
, false
.
fixedName
- имя пользователя, тип: string
fixedPassword
- пароль, тип: string
withoutDomain
- без домена, тип: string. Допустимые значения: true
, false
.
fixedDomain
- домен, тип: string
wallpaper
- показать обои, тип: string. Допустимые значения: true
, false
.
desktopComp
- разрешить композицию рабочего стола, тип: string. Допустимые значения: true
, false
.
smooth
- сглаживание шрифтов, тип: string. Допустимые значения: true
, false
.
enableAudio
- включить аудио, тип: string. Допустимые значения: true
, false
.
enableAudioInput
- включить микрофон, тип: string. Допустимые значения: true
, false
.
enablePrinting
- включить печать, тип: string. Допустимые значения: true
, false
.
enableFileSharing
- обмен файлами, тип: string. Допустимые значения: true
, false
.
Допустимые значения параметра enableFileSharing
:
false
- Disable file sharingdown
- Allow download onlyup
- Allow upload onlytrue
- Enable file sharing
enableClipboard
- буфер обмена, тип: string
Допустимые значения параметра enableClipboard
:
disabled
- Disable clipboarddis-copy
- Disable copy from remotedis-paste
- Disable paste to remoteenabled
- Enable clipboard
serverLayout
- раскладка, тип: string. Значение по умолчанию (default): -
ticketValidity
- срок действия тикета, тип: string
forceNewWindow
- открывать в новом окне, тип: string. Допустимые значения: true
, false
.
Допустимые значения параметра forceNewWindow
:
false
- Open every connection on the same window, but keeps UDS windowtrue
- Force every connection to be opened on a new windowoverwrite
- Override UDS window and replace it with the connection
security
- безопасность, тип: string
Допустимые значения параметра security
:
any
- Any (Allow the server to choose the type of auth)rdp
- RDP (Standard RDP encryption. Should be supported by all servers)nla
- NLA (Network Layer authentication. Requires VALID username&password, or connection will fail)nla-ext
- NLA extended (Network Layer authentication. Requires VALID username&password, or connection will fail)tls
- TLS (Transport Security Layer encryption)
rdpPort
- порт RDP, тип: string
customGEPath
- контекстный путь Glyptodon Enterprise, тип: string
HTML5RATransport
guacamoleServer
- туннельный сервер, тип: string
useEmptyCreds
- пропустить данные аккаунта, тип: string. Допустимые значения: true
, false
.
fixedName
- имя пользователя, тип: string
fixedPassword
- пароль, тип: string
withoutDomain
- без домена, тип: string. Допустимые значения: true
, false
.
fixedDomain
- домен, тип: string
fixedApp
- алиас приложения, тип: string
wallpaper
- показать обои, тип: string. Допустимые значения: true
, false
.
desktopComp
- разрешить композицию рабочего стола, тип: string. Допустимые значения: true
, false
.
smooth
- сглаживание шрифтов, тип: string. Допустимые значения: true
, false
.
enableAudio
- включить аудио, тип: string. Допустимые значения: true
, false
.
enableAudioInput
- включить микрофон, тип: string. Допустимые значения: true
, false
.
enablePrinting
- включить печать, тип: string. Допустимые значения: true
, false
.
enableFileSharing
- обмен файлами, тип: string. Допустимые значения: true
, false
.
Допустимые значения параметра enableFileSharing
:
false
- Disable file sharingdown
- Allow download onlyup
- Allow upload onlytrue
- Enable file sharing
enableClipboard
- буфер обмена, тип: string
Допустимые значения параметра enableClipboard
:
disabled
- Disable clipboarddis-copy
- Disable copy from remotedis-paste
- Disable paste to remoteenabled
- Enable clipboard
serverLayout
- раскладка, тип: string. Значение по умолчанию (default): -
ticketValidity
- срок действия тикета, тип: string
forceNewWindow
- открывать в новом окне, тип: string. Допустимые значения: true
, false
.
Допустимые значения параметра forceNewWindow
:
false
- Open every connection on the same window, but keeps UDS windowtrue
- Force every connection to be opened on a new windowoverwrite
- Override UDS window and replace it with the connection
security
- безопасность, тип: string
Допустимые значения параметра security
:
any
- Any (Allow the server to choose the type of auth)rdp
- RDP (Standard RDP encryption. Should be supported by all servers)nla
- NLA (Network Layer authentication. Requires VALID username&password, or connection will fail)nla-ext
- NLA extended (Network Layer authentication. Requires VALID username&password, or connection will fail)tls
- TLS (Transport Security Layer encryption)
rdpPort
- порт RDP, тип: string
PCoIPTransport
fixedName
- имя пользователя, тип: string
fixedPassword
- пароль, тип: string
fixedDomain
- домен, тип: string
SPICETransport
serverCertificate
- сертификат, тип: string
fullScreen
- полноэкранный режим, тип: string. Допустимые значения: true
, false
.
usbShare
- включить USB, тип: string. Допустимые значения: true
, false
.
autoNewUsbShare
- автоподключение новых USB устройств, тип: string. Допустимые значения: true
, false
.
smartCardRedirect
- перенаправление смарт-карты, тип: string. Допустимые значения: true
, false
.
TSSPICETransport
tunnelServer
- туннельный сервер, тип: string
tunnelWait
- время ожидания туннеля, тип: string
verifyCertificate
- проверка SSL-сертификата, тип: string. Допустимые значения: true
, false
.
! Остальные параметры аналогичны типу транспорта SPICETransport
.
URLTransport
urlPattern
- шаблон URL, тип: string
forceNewWindow
- открывать в новом окне, тип: string. Допустимые значения: true
, false
.
X2GOTransport
fixedName
- имя пользователя, тип: string
screenSize
- размер экрана, тип: string. Для полноэкранного режима используйте значение F
desktopType
- рабочий стол, тип: string
Допустимые значения параметра desktopType
:
XFCE
- XfceMATE
- MateLXDE
- LxdeGNOME
- Gnome (see docs)KDE
- Kde (see docs)gnome-session-cinnamon
- Cinnamon 1.4 (see docs)gnome-session-cinnamon2d
- Cinnamon 2.2 (see docs)UDSVAPP
- UDS vAPP
customCmd
- строка vAPP, тип: string
sound
- включить звук, тип: string. Допустимые значения: true
, false
.
exports
- перенаправить домашнюю папку, тип: string. Допустимые значения: true
, false
.
speed
- скорость, тип: string
Допустимые значения параметра speed
:
0
- MODEM1
- ISDN2
- ADSL3
- WAN4
- LAN
soundType
- звук, тип: string
Допустимые значения параметра soundType
:
pulse
- Pulseesd
- ESD
keyboardLayout
- клавиатура, тип: string
pack
- метод сжатия, тип: string. Значение по умолчанию: 16m-jpeg
quality
- качество, тип: string
TX2GOTransport
tunnelServer
- туннельный сервер, тип: string
tunnelWait
- время ожидания туннеля, тип: string
verifyCertificate
- проверка SSL-сертификата, тип: string. Допустимые значения: true
, false
.
! Остальные параметры аналогичны типу транспорта X2GOTransport
.