Перейти к основному содержимому

13.5.11 VDI agent

Методы

agent-info-get

Метод получения информации об актуальной версии агента гостевой ОС и источников, откуда можно скачать бинарные файлы.

Запрос:

{
"jsonrpc": "2.0",
"method": "agent-info-get",
"id": "20e97ea9-4310-4a18-a621-9a425644d001"
}

Успешный ответ:

{
"jsonrpc": "2.0",
"id": "20e97ea9-4310-4a18-a621-9a425644d001",
"result": {
"code": 1,
"data": {
"linux_x86_64_release_sources": [
"http://198.18.2.6/agent/releases/latest/linux_x86_64/vstack_agent"
],
"version": "1.0.0-dev.1.test.6",
"win_x86_64_release_sources": [
"http://198.18.2.6/agent/releases/latest/win_x86_64/vstack_agent.exe"
]
}
}
}

agent-info-set

Метод изменения информации об актуальной версии агента гостевой ОС и источников, откуда можно скачать бинарные файлы.

Все параметры являются опциональными, но обязательно должен быть указан хотя бы один из параметров. linux_x86_64_release_sources и win_x86_64_release_sources должны содержать внутри ссылки на источники.

Запрос:

{
"jsonrpc": "2.0",
"method": "agent-info-set",
"params": {
"linux_x86_64_release_sources": [
"http://198.18.2.6/agent/releases/latest/linux_x86_64/vstack_agent"
],
"version": "1.0.0-dev.1.test.6",
"win_x86_64_release_sources": [
"http://198.18.2.6/agent/releases/latest/win_x86_64/vstack_agent.exe"
]
},
"id": "b34457ea-6221-4ad8-bd68-1f23a6ae1fd8"
}

Успешный ответ:

{
"jsonrpc": "2.0",
"id": "b34457ea-6221-4ad8-bd68-1f23a6ae1fd8",
"result": {
"code": 1,
"message": "Updated"
}
}

desktop-agent-get

Метод для получения информации об агенте, установленном внутри гостевой ОС, виртуального рабочего стола.

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

  • id — идентификатор виртуального рабочего стола.

Параметры ответа:

  • bootstrap_completedtrue, если агент успешно прошёл фазу регистрации в брокере в текущем запуске;
  • status->id — идентификатор статуса агента;
  • status->context — может содержать текстовое сообщение относительно последнего статуса (например, текст ошибки при статусе Starting Failed);
  • status->modified — время последнего изменения статуса;
  • version— версия агента.

Запрос:

{
"jsonrpc": "2.0",
"method": "desktop-agent-get",
"params": {
"id": 567
},
"id": "a440a390-5d90-479f-aa4d-2e4c4398d153"
}

Успешный ответ (агент был запущен):

{
"jsonrpc": "2.0",
"id": "a440a390-5d90-479f-aa4d-2e4c4398d153",
"result": {
"code": 1,
"data": {
"bootstrap_completed": true,
"status": {
"context": null,
"id": 3,
"modified": 1755172746
},
"version": "1.0.0"
}
}
}

Успешный ответ (агент не был запущен):

{
"jsonrpc": "2.0",
"id": "a440a390-5d90-479f-aa4d-2e4c4398d153",
"result": {
"code": 1,
"data": {},
"message": "vStack Agent is offline. Please start the desktop or wait a moment"
}
}

desktop-agent-statuses

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

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

  • id — идентификатор виртуального рабочего стола.

Запрос:

{
"jsonrpc": "2.0",
"method": "desktop-agent-statuses",
"params": {
"id": 567
},
"id": "a440a390-5d90-479f-aa4d-2e4c4398d153"
}

Успешный ответ (агент был запущен):

{
"jsonrpc": "2.0",
"id": "a440a390-5d90-479f-aa4d-2e4c4398d153",
"result": {
"code": 1,
"data": {
"1": "Starting",
"101": "Start Failed",
"102": "Update Failed",
"2": "Updating",
"3": "Ready"
}
}
}

Успешный ответ (агент не был запущен):

{
"jsonrpc": "2.0",
"id": "a440a390-5d90-479f-aa4d-2e4c4398d153",
"result": {
"code": 1,
"data": {},
"message": "vStack Agent is offline. Please start the desktop or wait a moment"
}
}

desktop-agent-sessions-state

Метод получения информации об актуальных сессиях на десктопе, тайм-ауте бездействия, ограничений протоколов, действий при завершении сессии:

`sessions`: {
"1570": { // id сессии
"id": 1570, // id сессии
"last_active": "2025-09-25T10:13:24.466424534Z", // время последней активности со статусом сессии: изменялся `locked` или сессия создана, нужен для того, чтобы рассчитать, через сколько десктоп выключится
"locked": false, // активная сессия или залоченная, Locked = true говорит о том, что соединение с сессией было разорвано или экран на десктопе заблокировали, нужно для `inactive_timeout`
"protocol": "RDP" // Название протокола, через которое клиент подключился
}
}
"inactive_timeout": { // Время, через которое десктоп выключится при определённых обстоятельствах
"nanos": 0,
"secs": 300
},
"max_per_protocol": { // Информативное поле, отображающее, сколько клиентов может быть подключено через определённый протокол
"RDP": 2
},

Принцип работы inactive_timeout:

inactive_timeout должен выключить десктоп, но при соблюдении нескольких условий:

  • Отсчет времени идёт для каждой сессии отдельно, как только она стала "locked": true.
  • После указанного времени сессия будет удалена и если сессий больше нет — десктоп выключится, иначе просто эта сессия удалится.

Запрос:

{
"jsonrpc": "2.0",
"method": "desktop-agent-sessions-state",
"params": {
"id": 5421
},
"id": "80017342-21a9-4eca-8529-774ccbe845a0"
}

Успешный ответ:

{
"jsonrpc": "2.0",
"id": "80017342-21a9-4eca-8529-774ccbe845a0",
"result": {
"code": 1,
"data": {
"state": {
"inactive_timeout": {
"nanos": 0,
"secs": 300
},
"max_per_protocol": {
"RDP": 2
},
"on_logoff_action": "shutdown",
"sessions": {
"1570": {
"id": 1570,
"last_active": "2025-09-25T10:13:24.466424534Z",
"locked": false,
"protocol": "RDP"
}
}
}
}
}
}