Примеры использования ADCM API v2

Содержание

Эта страница содержит описание некоторых HTTP-запросов, которые поддерживаются ADCM API v2.

В случае если запрос возвращает список, разделенный на страницы, ответ будет содержать параметры, описанные ниже.

Параметры JSON-объекта при разделении ответа на страницы
Параметр Тип Описание

count

integer

Количество элементов

next

string

Ссылка на следующую страницу (или null, если текущая страница является последней)

previous

string

Ссылка на предыдущую страницу (или null, если текущая страница является первой)

results

array of objects

Список, содержащий постраничную информацию об объектах в соответствии с выполненным запросом

Получение токена доступа

POST /api/v2/token/ HTTP/1.1

Этот запрос создает токен, позволяющий пользователю получить доступ к защищенным конечным точкам (endpoint) ADCM API v2.

Параметры JSON-объекта запроса
Параметр Тип Описание

username

string

Имя пользователя (учетной записи)

password

string

Пароль учетной записи

Параметры JSON-объекта ответа
Параметр Тип Описание

token

string

Токен доступа

Пример запроса

POST /api/v2/token/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "username": "admin",
  "password": "admin"
}

Пример ответа

HTTP 200 OK
Allow: POST
Content-Type: application/json
Vary: Accept

{
  "token": "884ecc261b81563811451ed01dd45859998d893a"
}

Загрузка бандла

POST /api/v2/bundles/ HTTP/1.1

Этот запрос загружает новый бандл в ADCM.

Параметры multipart/form-data запроса
Параметр Тип Описание

file

file (binary)

Файл бандла

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

name

string

Название бандла

displayName

string

Отображаемое название бандла

version

string

Версия бандла

edition

string

Издание бандла

mainPrototype

object

Объект прототипа бандла

uploadTime

string

Время загрузки бандла

signatureStatus

string

Статус подписи бандла. Возможные значения: valid, invalid, absent

Пример запроса

POST /api/v2/bundles/ HTTP/1.1
Content-Type: multipart/form-data
Accept: application/json

file: (binary)

Пример ответа

HTTP 201 Created
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 21,
  "name": "SSH Common",
  "displayName": "SSH Common",
  "version": "2.9-dev",
  "edition": "community",
  "mainPrototype": {
    "id": 437,
    "name": "SSH Common",
    "displayName": "SSH Common",
    "description": "Simple ssh hosts",
    "type": "provider",
    "license": {
      "status": "absent",
      "text": null
    },
    "version": "2.9-dev"
  },
  "uploadTime": "2023-12-06T12:20:09.553497Z",
  "signatureStatus": "absent"
}

Принятие лицензионного соглашения

POST /api/v2/prototypes/<prototypeId>/license/accept/ HTTP/1.1

Этот запрос принимает лицензионное соглашение для указанного прототипа.

Пример запроса

POST /api/v2/prototypes/5/license/accept/ HTTP/1.1

Пример ответа

HTTP 200 OK

Список прототипов

GET /api/v2/prototypes/ HTTP/1.1

Этот запрос возвращает список всех прототипов в ADCM. Добавьте тип объекта ADCM в конце запроса, чтобы увидеть только прототипы этого типа. Для ответа поддерживается постраничный вывод.

Параметры results JSON-объекта
Параметр Тип Описание

id

integer

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

name

string

Название прототипа

displayName

string

Отображаемое название прототипа

description

string

Описание прототипа

type

string

Тип прототипа

bundle

object

Объект бандла

license

object

Объект лицензии прототипа

version

string

Версия прототипа

Пример запроса

GET /api/v2/prototypes/?type=provider HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 331,
      "name": "Yandex Compute VM Provider",
      "displayName": "Yandex Compute VM Provider",
      "description": "Manage Yandex Compute Cloud VMs",
      "type": "provider",
      "bundle": {
        "id": 11,
        "edition": "community"
      },
      "license": {
        "status": "absent",
        "text": null
      },
      "version": "3.4-1"
    }
  ]
}

Создание хостпровайдера

POST /api/v2/hostproviders/ HTTP/1.1

Этот запрос создает новый хостпровайдер. Вы можете увидеть все идентификаторы прототипов хостпровайдеров по адресу http://<IP_address>:8000/api/v2/prototypes/?type=provider, используя IP-адрес хоста, на котором запущен контейнер ADCM.

Параметры JSON-объекта запроса
Параметр Тип Описание

prototypeId

integer

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

name

string

Название хостпровайдера

description

string

Описание хостпровайдера

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор хостпровайдера

name

string

Имя хостпровайдера

state

string

Состояние хостпровайдера

multiState

array of string

Список расширенных состояний хостпровайдера

prototype

object

Объект прототипа хостпровайдера

description

string

Описание хостпровайдера

concerns

array of objects

Список пунктов, требующих внимания или действий

isUpgradable

boolean

Флаг, указывающий на наличие обновления для хостпровайдера

mainInfo

string

Основная информация о хостпровайдере

Пример запроса

POST /api/v2/hostproviders/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "prototypeId": 132,
  "name": "new test hostprovider",
  "description": ""
}

Пример ответа

HTTP 201 Created
Allow: GET, POST
Content-Type: application/json
Vary: Accept

{
  "id": 2,
  "name": "new test hostprovider",
  "state": "created",
  "multiState": [],
  "prototype": {
    "id": 132,
    "name": "VMware vCloud Director",
    "displayName": "VMware vCloud Director",
    "version": "1.1.0-1"
  },
  "description": "",
  "concerns": [],
  "isUpgradable": false,
  "mainInfo": null
}

Список хостпровайдеров

GET /api/v2/hostproviders/ HTTP/1.1

Этот запрос возвращает список всех хостпровайдеров, существующих в ADCM. Для ответа поддерживается постраничный вывод.

Параметры results JSON-объекта
Параметр Тип Описание

id

integer

Идентификатор хостпровайдера

name

string

Имя хостпровайдера

state

string

Состояние хостпровайдера

multiState

array of string

Список расширенных состояний хостпровайдера

prototype

object

Объект прототипа хостпровайдера

description

string

Описание хостпровайдера

concerns

array of objects

Список пунктов, требующих внимания или действий

isUpgradable

boolean

Флаг, указывающий на наличие обновления для хостпровайдера

mainInfo

string

Основная информация о хостпровайдере

Пример запроса

GET /api/v2/hostproviders/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 4,
      "name": "test hostprovider",
      "state": "created",
      "multiState": [],
      "prototype": {
        "id": 331,
        "name": "Yandex Compute VM Provider",
        "displayName": "Yandex Compute VM Provider",
        "version": "3.4-1"
      },
      "description": "",
      "concerns": [],
      "isUpgradable": false,
      "mainInfo": null
    }
  ]
}

Создание хоста

POST /api/v2/hosts/ HTTP/1.1

Этот запрос создает новый хост.

Параметры JSON-объекта запроса
Параметр Тип Описание

hostproviderId

integer

Идентификатор хостпровайдера

name

string

Название хоста

clusterId

integer

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

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

name

string

Название хоста

description

string

Описание хоста

state

string

Состояние хоста

status

string

Статус хоста. Возможные значения: up, down

hostprovider

object

Объект хостпровайдера

prototype

object

Объект прототипа

concerns

array of objects

Список пунктов, требующих внимания или действий

isMaintenanceModeAvailable

boolean

Флаг доступности включения режима обслуживания для хоста

maintenanceMode

string

Состояние режима обслуживания. Возможные значения: on, off

multiState

array of string

Список расширенных состояний хоста

cluster

object

Объект кластера

components

array of objects

Список объектов компонентов хоста

Пример запроса

POST /api/v2/hosts/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "name": "my test host",
  "hostproviderId": 4,
  "clusterId": 9
}

Пример ответа

HTTP 201 Created
Allow: GET, POST
Content-Type: application/json
Vary: Accept

{
  "id": 8,
  "name": "test",
  "description": "",
  "state": "created",
  "status": "down",
  "hostprovider": {
    "id": 4,
    "name": "test hostprovider",
    "displayName": "test hostprovider"
  },
  "prototype": {
    "id": 332,
    "name": "Yandex Compute VM",
    "displayName": "Yandex Compute VM",
    "version": "3.4-1"
  },
  "concerns": [],
  "isMaintenanceModeAvailable": false,
  "maintenanceMode": "off",
  "multiState": [],
  "cluster": {
    "id": 9,
    "name": "ADH"
  },
  "components": []
}

Список хостов

GET /api/v2/hosts/ HTTP/1.1

Этот запрос возвращает список всех хостов, существующих в ADCM. Если вы хотите увидеть детальную информацию об отдельном хосте, добавьте к запросу идентификатор хоста:

GET /api/v2/hosts/<hostId>/ HTTP/1.1

Для ответа поддерживается постраничный вывод.

Параметры results JSON-объекта
Параметр Тип Описание

id

integer

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

name

string

Название хоста

description

string

Описание хоста

state

string

Состояние хоста

status

string

Статус хоста. Возможные значения: up, down

hostprovider

object

Объект хостпровайдера

prototype

object

Объект прототипа

concerns

array of objects

Список пунктов, требующих внимания или действий

isMaintenanceModeAvailable

boolean

Флаг доступности включения режима обслуживания для хоста

maintenanceMode

string

Состояние режима обслуживания. Возможные значения: on, off

multiState

array of string

Список расширенных состояний хоста

cluster

object

Объект кластера

components

array of objects

Список объектов компонентов

Пример запроса

GET /api/v2/hosts/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 8,
      "name": "bds-adbc",
      "description": "",
      "state": "running",
      "status": "down",
      "hostprovider": {
        "id": 2,
        "name": "Yandex",
        "displayName": "Yandex"
      },
      "prototype": {
        "id": 26,
        "name": "Yandex Compute VM",
        "displayName": "Yandex Compute VM",
        "version": "3.7-1"
      },
      "concerns": [],
      "isMaintenanceModeAvailable": false,
      "maintenanceMode": "off",
      "multiState": [],
      "cluster": {
        "id": 2,
        "name": "Test ADB cluster"
      },
      "components": [
        {
          "id": 18,
          "name": "server",
          "displayName": "ADBM server"
        },
        {
          "id": 17,
          "name": "server",
          "displayName": "ADB Control server"
        }
      ]
    }
  ]
}

Удаление хоста

DELETE /api/v2/hosts/<hostId>/ HTTP/1.1

Этот запрос удаляет указанный хост. Вы можете удалить только хост, не принадлежащий какому-либо кластеру.

Пример запроса

DELETE /api/v2/hosts/1/ HTTP/1.1

Пример ответа

HTTP 204 No Content

Создание кластера

POST /api/v2/clusters/ HTTP/1.1

Этот запрос создает новый кластер. Вы можете увидеть все идентификаторы прототипов кластеров по адресу http://<IP_address>:8000/api/v2/prototypes/?type=cluster, используя IP-адрес хоста, на котором запущен контейнер ADCM.

Параметры JSON-объекта запроса
Параметр Тип Описание

prototypeId

integer

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

name

string

Название кластера

description

string

Описание кластера

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

name

string

Название кластера

description

string

Описание кластера

state

string

Состояние кластера

multiState

array of string

Список расширенных состояний кластера

status

string

Статус кластера. Возможные значения: up, down

prototype

object

Объект прототипа кластера

concerns

array of objects

Список пунктов, требующих внимания или действий

isUpgradable

boolean

Флаг, указывающий на наличие обновления для кластера

mainInfo

string

Основная информация о кластере

Пример запроса

POST /api/v2/clusters/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "name": "test",
  "prototypeId": 264,
  "description": "test cluster"
}

Пример ответа

HTTP 201 Created
Allow: GET, POST
Content-Type: application/json
Vary: Accept

{
  "id": 10,
  "name": "test",
  "description": "test cluster",
  "state": "created",
  "multiState": [],
  "status": "down",
  "prototype": {
    "id": 264,
    "name": "hadoop",
    "displayName": "Hadoop",
    "version": "2.1.10_b1-1"
  },
  "concerns": [],
  "isUpgradable": false,
  "mainInfo": "<p>Documentation: <a href=https://docs.arenadata.io/adh/>https://docs.arenadata.io/adh/</a></p>\n"
}

Изменение названия и описания кластера

PATCH /api/v2/clusters/<clusterId>/ HTTP/1.1

Этот запрос позволяет изменить название и описание указанного кластера.

Параметры JSON-объекта запроса
Параметр Тип Описание

name

string

Название кластера. Ограничение на длину строки: 2—​150 символов

description

string

Описание кластера

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

name

string

Название кластера. Ограничение на длину строки: 2—​150 символов

description

string

Описание кластера

state

string

Состояние кластера

multiState

array of string

Список расширенных состояний кластера

status

string

Статус кластера. Возможные значения: up, down

prototype

object

Объект прототипа кластера

concerns

array of objects

Список пунктов, требующих внимания или действий

isUpgradable

boolean

Флаг, указывающий на наличие обновления для кластера

mainInfo

string

Основная информация о кластере

Пример запроса

PATCH /api/v2/clusters/73/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "name": "Test ADB cluster",
  "description": "Example"
}

Пример ответа

HTTP 200 OK
Allow: GET, PATCH, DELETE, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 73,
  "name": "Test ADB cluster",
  "description": "Example",
  "state": "created",
  "multiState": [],
  "status": "down",
  "prototype": {
    "id": 47,
    "name": "ADB",
    "displayName": "ADB",
    "version": "6.26.0_arenadata53_b1-1"
  },
  "concerns": [
    {
      "id": 1845,
      "type": "issue",
      "reason": {
        "message": "${source} has an issue with host-component mapping",
        "placeholder": {
          "source": {
            "name": "Test ADB cluster",
            "type": "cluster_mapping",
            "params": {
              "clusterId": 73
            }
          }
        }
      },
      "isBlocking": true,
      "cause": "host-component",
      "owner": {
        "id": 73,
        "type": "cluster"
      }
    }
  ],
  "isUpgradable": false,
  "mainInfo": "The main goal of ADB bundle is an easy and fast installation and managing of Arenadata Database with Arenadata Cluster Manager. ADB bundle consists of ADB, time synchronization and the monitoring client services. These services can be installed either on cloud or bare metal hosts (depending on host bundles you choose). After installation Arenadatabase cluster will be available for psql connect on port 5432 of the master host address.\n"
}

Список кластеров

GET /api/v2/clusters/ HTTP/1.1

Этот запрос возвращает список всех кластеров, существующих в ADCM. Если вы хотите увидеть детальную информацию об отдельном кластере, добавьте к запросу идентификатор кластера:

GET /api/v2/clusters/<clusterId>/ HTTP/1.1

Для ответа поддерживается постраничный вывод.

Параметры results JSON-объекта
Параметр Тип Описание

id

integer

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

name

string

Название кластера

description

string

Описание кластера

state

string

Состояние кластера

multiState

array of string

Список расширенных состояний кластера

status

string

Статус кластера. Возможные значения: up, down

prototype

object

Объект прототипа кластера

concerns

array of objects

Список пунктов, требующих внимания или действий

isUpgradable

boolean

Флаг, указывающий на наличие обновления для кластера

mainInfo

string

Основная информация о кластере

Пример запроса

GET /api/v2/clusters/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 9,
      "name": "ADH",
      "description": "",
      "state": "created",
      "multiState": [],
      "status": "down",
      "prototype": {
        "id": 264,
        "name": "hadoop",
        "displayName": "Hadoop",
        "version": "2.1.10_b1-1"
      },
      "concerns": [],
      "isUpgradable": false,
      "mainInfo": "<p>Documentation: <a href=https://docs.arenadata.io/adh/>https://docs.arenadata.io/adh/</a></p>\n"
    },
    {
      "id": 10,
      "name": "test",
      "description": "test cluster",
      "state": "created",
      "multiState": [],
      "status": "down",
      "prototype": {
        "id": 264,
        "name": "hadoop",
        "displayName": "Hadoop",
        "version": "2.1.10_b1-1"
      },
      "concerns": [],
      "isUpgradable": false,
      "mainInfo": "<p>Documentation: <a href=https://docs.arenadata.io/adh/>https://docs.arenadata.io/adh/</a></p>\n"
    }
  ]
}

Удаление кластера

DELETE /api/v2/clusters/<clusterId>/ HTTP/1.1

Этот запрос удаляет указанный кластер.

Пример запроса

DELETE /api/v2/clusters/3/ HTTP/1.1

Пример ответа

HTTP 204 No Content

Добавление сервиса

POST /api/v2/clusters/<clusterId>/services/ HTTP/1.1

Этот запрос добавляет сервис в указанный кластер. Обязателен идентификатор прототипа сервиса. Вы можете просмотреть идентификаторы всех прототипов сервисов по адресу http://<IP_address>:8000/api/v2/prototypes/?type=service, где <IP_address> — IP-адрес хоста, на котором запущен контейнер ADCM.

Параметры элементов JSON-массива запроса
Параметр Тип Описание

prototypeId

integer

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

Параметры элементов JSON-массива ответа
Параметр Тип Описание

id

integer

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

name

string

Название сервиса

description

string

Описание сервиса

displayName

string

Отображаемое название сервиса

prototype

object

Объект прототипа сервиса

cluster

object

Объект кластера

status

string

Статус сервиса

state

string

Состояние сервиса

multiState

array of string

Список расширенных состояний сервиса

concerns

array of objects

Список пунктов, требующих внимания или действий

isMaintenanceModeAvailable

boolean

Флаг доступности режима обслуживания для сервиса

maintenanceMode

string

Состояние режима обслуживания. Возможные значения: on, off

mainInfo

string

Основная информация о сервисе

Пример запроса

POST /api/v2/clusters/2/services/ HTTP/1.1
Content-Type: application/json
Accept: application/json

[
  {
    "prototypeId": 278
  }
]

Пример ответа

HTTP 201 Created
Allow: GET, POST
Content-Type: application/json
Vary: Accept

[
  {
    "id": 15,
    "name": "zookeeper",
    "description": "",
    "displayName": "Zookeeper",
    "prototype": {
      "id": 278,
      "name": "zookeeper",
      "displayName": "Zookeeper",
      "version": "3.5.10"
    },
    "cluster": {
      "id": 10,
      "name": "test"
    },
    "status": "up",
    "state": "created",
    "multiState": [],
    "concerns": [
      {
        "id": 64,
        "reason": {
          "message": "${source} has an issue with host-component mapping",
          "placeholder": {
            "source": {
              "type": "cluster",
              "name": "test",
              "params": {
                "clusterId": 10
              }
            }
          }
        },
        "isBlocking": true,
        "cause": "host-component"
      }
    ],
    "isMaintenanceModeAvailable": false,
    "maintenanceMode": "off",
    "mainInfo": null
  }
]

Список сервисов

GET /api/v2/clusters/<clusterId>/services/ HTTP/1.1

Этот запрос возвращает список всех сервисов, добавленных в указанный кластер. Если вы хотите увидеть детальную информацию об отдельном сервисе, добавьте к запросу идентификатор сервиса:

GET /api/v2/clusters/<clusterId>/services/<serviceId>/ HTTP/1.1

Для ответа поддерживается постраничный вывод.

Параметры results JSON-объекта
Параметр Тип Описание

id

integer

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

name

string

Название сервиса

description

string

Описание сервиса

displayName

string

Отображаемое название сервиса

prototype

object

Объект прототипа сервиса

cluster

object

Объект кластера

status

string

Статус сервиса

state

string

Состояние сервиса

multiState

array of string

Список расширенных состояний сервиса

concerns

array of objects

Список пунктов, требующих внимания или действий

isMaintenanceModeAvailable

boolean

Флаг доступности режима обслуживания для сервиса

maintenanceMode

string

Состояние режима обслуживания. Возможные значения: on, off

mainInfo

string

Основная информация о сервисе

Пример запроса

GET /api/v2/clusters/2/services/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 15,
      "name": "zookeeper",
      "description": "",
      "displayName": "Zookeeper",
      "prototype": {
        "id": 278,
        "name": "zookeeper",
        "displayName": "Zookeeper",
        "version": "3.5.10"
      },
      "cluster": {
        "id": 10,
        "name": "test"
      },
      "status": "up",
      "state": "created",
      "multiState": [],
      "concerns": [
        {
          "id": 64,
          "reason": {
            "message": "${source} has an issue with host-component mapping",
            "placeholder": {
              "source": {
                "type": "cluster",
                "name": "test",
                "params": {
                  "clusterId": 10
                }
              }
            }
          },
          "isBlocking": true,
          "cause": "host-component"
        }
      ],
      "isMaintenanceModeAvailable": false,
      "maintenanceMode": "off",
      "mainInfo": "<div style=\"width:600px\">\n<p>Centralized service for maintaining configuration\ninformation, naming, providing distributed synchronization,\nand providing group services.</p>\n</div>\n"
    }
  ]
}

Удаление сервиса

DELETE /api/v2/clusters/<clusterId>/services/<serviceId>/ HTTP/1.1

Этот запрос удаляет сервис из указанного кластера. Удаление может быть недоступно, если компоненты сервиса распределены по хостам.

Пример запроса

DELETE /api/v2/clusters/3/services/1/ HTTP/1.1

Пример ответа

HTTP 204 No Content

Добавление хоста в кластер

POST /api/v2/clusters/<clusterId>/hosts/ HTTP/1.1

Этот запрос добавляет хост в указанный кластер. Обязателен идентификатор хоста.

Параметры элементов JSON-массива запроса
Параметр Тип Описание

hostId

integer

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

Параметры элементов JSON-массива ответа
Параметр Тип Описание

id

integer

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

name

string

Название хоста

description

string

Описание хоста

state

string

Состояние хоста

status

string

Статус хоста. Возможные значения: up, down

hostprovider

object

Объект хостпровайдера

prototype

object

Объект прототипа хоста

concerns

array of objects

Список пунктов, требующих внимания или действий

isMaintenanceModeAvailable

boolean

Флаг доступности режима обслуживания для хоста

maintenanceMode

string

Состояние режима обслуживания. Возможные значения: on, off

multiState

array of string

Список расширенных состояний хоста

cluster

object

Объект кластера

components

array of objects

Список объектов компонентов

Пример запроса

POST /api/v2/clusters/10/hosts/ HTTP/1.1
Content-Type: application/json
Accept: application/json

[
  {
    "hostId": 8
  }
]

Пример ответа

HTTP 201 Created
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
  {
    "id": 8,
    "name": "test",
    "description": "",
    "state": "created",
    "status": "down",
    "hostprovider": {
      "id": 4,
      "name": "test hostprovider",
      "displayName": "test hostprovider"
    },
    "prototype": {
      "id": 332,
      "name": "Yandex Compute VM",
      "displayName": "Yandex Compute VM",
      "version": "3.4-1"
    },
    "concerns": [],
    "isMaintenanceModeAvailable": false,
    "maintenanceMode": "off",
    "multiState": [],
    "cluster": {
      "id": 10,
      "name": "test"
    },
    "components": []
  }
]

Удаление хоста из кластера

DELETE /api/v2/clusters/<clusterId>/hosts/<hostId>/ HTTP/1.1

Этот запрос отсоединяет указанный хост от указанного кластера.

Пример запроса

DELETE /api/v2/clusters/3/hosts/6/ HTTP/1.1

Пример ответа

HTTP 204 No Content

Список версий конфигурации

GET /api/v2/hostproviders/<hostproviderId>/configs/ HTTP/1.1
GET /api/v2/hosts/<hostId>/configs/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/configs/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/configs/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/configs/ HTTP/1.1

Эти запросы возвращают список версий конфигурации хостпровайдера, хоста, кластера, сервиса или компонента соответственно. Если вы хотите посмотреть подробную информацию о конфигурации объекта (список конфигурационных параметров и их значений), укажите в запросе идентификатор версии конфигурации, например (для кластера):

GET /api/v2/clusters/<clusterId>/configs/<configId>/ HTTP/1.1

Для ответа поддерживается постраничный вывод.

Параметры results JSON-объекта
Параметр Тип Описание

id

integer

Идентификатор версии конфигурации

isCurrent

boolean

Определяет, является ли версия конфигурации текущей версией

creationTime

string

Дата и время создания версии конфигурации

description

string

Описание версии конфигурации

Пример запроса

GET /api/v2/clusters/27/configs/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "count": 3,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 1349,
      "isCurrent": true,
      "creationTime": "2025-08-01T12:02:34.188737Z",
      "description": "upgrade"
    },
    {
      "id": 1338,
      "isCurrent": false,
      "creationTime": "2025-07-28T16:21:12.037662Z",
      "description": "ansible update"
    },
    {
      "id": 1332,
      "isCurrent": false,
      "creationTime": "2025-07-28T16:06:40.193811Z",
      "description": "init"
    }
  ]
}

Создание версии конфигурации

POST /api/v2/hostproviders/<hostproviderId>/configs/ HTTP/1.1
POST /api/v2/hosts/<hostId>/configs/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/configs/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/services/<serviceId>/configs/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/configs/ HTTP/1.1

Эти запросы создают новую версию конфигурации хостпровайдера, хоста, кластера, сервиса или компонента соответственно.

Параметры JSON-объекта запроса
Параметр Тип Описание

config

object

Список конфигурационных параметров и их значений

adcmMeta

object

Возможность активировать или деактивировать секцию настроек (конфигурационных параметров) в дереве конфигурации

description

string

Описание версии конфигурации

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор версии конфигурации

isCurrent

boolean

Определяет, является ли версия конфигурации текущей версией

creationTime

string

Дата и время создания версии конфигурации

config

object

Список конфигурационных параметров и их значений

adcmMeta

object

Возможность активировать или деактивировать секцию настроек (конфигурационных параметров) в дереве конфигурации

description

string

Описание версии конфигурации

Пример запроса

POST /api/v2/clusters/27/services/105/configs/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "config": {
    "__main_info": "<p style=\"font-size:16px; \">\n<a href=\"https://arenadata.tech/en/products/arenadata-db/\" target=\"_blank\">\nArenadata DB (ADB)</a> is a distributed database based on using MPP\n(massively parallel processing) principle. It takes its origin\nfrom Pivotal's Greenplum database.</p><p style=\"font-size:16px; \">JDBC URL:  jdbc:postgresql://10.92.38.37:5432</p>\n<p style=\"font-size:16px; \">SSL: disabled</p>\n",
    "components": {
      "adb": "{\"logs\": [{\"type\": \"search_and_archive_directories\", \"paths\": [\"*/master/gpseg*/pg_log\", \"*/mirror/gpseg*/pg_log\", \"*/primary/gpseg*/pg_log\", \"/home/*/gpAdminLogs\", \"/home/*/arenadata_configs/operation_log\"]}]}"
    },
    "Main": {
      "dbname": "adb",
      "enable_mirroring": true,
      "madlib": false,
      "postgis": false,
      "autocoredump": false,
      "diskquota": false,
      "plpython3": false
    },
    "Advanced": {
      "num_segments_per_host": 4,
      "segment_datadirs": {
        "/data1": ""
      },
      "segment_nobarrier": false,
      "master_datadir": "/data1",
      "master_mount_storage": false,
      "master_server_storage": null,
      "master_nobarrier": false,
      "config_dir": "arenadata_configs",
      "sysctl_params": "[[\"kernel.core_uses_pid\", \"1\"], [\"kernel.shmmni\", \"4096\"], [\"kernel.sem\", \"250 2048000 200 8192\"], [\"kernel.msgmnb\", \"65536\"], [\"kernel.msgmax\", \"65536\"], [\"kernel.msgmni\", \"2048\"], [\"net.ipv4.tcp_syncookies\", \"1\"], [\"net.ipv4.conf.default.accept_source_route\", \"0\"], [\"net.ipv4.tcp_max_syn_backlog\", \"4096\"], [\"net.ipv4.conf.all.arp_filter\", \"1\"], [\"net.ipv4.ip_local_port_range\", \"10000 65535\"], [\"net.ipv4.ipfrag_high_thresh\", \"41943040\"], [\"net.ipv4.ipfrag_low_thresh\", \"31457280\"], [\"net.ipv4.ipfrag_time\", \"60\"], [\"net.core.netdev_max_backlog\", \"10000\"], [\"net.core.rmem_max\", \"2097152\"], [\"net.core.wmem_max\", \"2097152\"], [\"vm.overcommit_memory\", \"2\"], [\"vm.overcommit_ratio\", \"95\"], [\"vm.swappiness\", \"10\"], [\"vm.zone_reclaim_mode\", \"0\"], [\"vm.dirty_expire_centisecs\", \"500\"], [\"vm.dirty_writeback_centisecs\", \"100\"], [\"vm.dirty_background_ratio\", \"0\"], [\"vm.dirty_ratio\", \"0\"], [\"vm.dirty_background_bytes\", \"1610612736\"], [\"vm.dirty_bytes\", \"4294967296\"], [\"kernel.core_pipe_limit\", \"0\"]]",
      "system_user_gid": 2042,
      "system_user_name": "gpadmin",
      "system_user_uid": 2042,
      "disable_firewall": true,
      "edit_hosts": true,
      "instrument_shmem_size": 5120,
      "max_scan_on_shmem": 300
    },
    "ic_proxy_properties": {
      "gp_interconnect_type": "udpifc",
      "ic_proxy_addresses_auto_discovery": true,
      "ic_proxy_port_delta": 52000,
      "ic_proxy_check": false,
      "ic_proxy_gp_interconnect_proxy_addresses": null
    },
    "use_dedicated_network": {
      "cluster_subnet": null
    },
    "adb_ident_serv": {
      "adb_ident_default_deny_policy": true
    },
    "gpperfmon": {
      "gpperfmon_authentication_type": "md5"
    },
    "Crontab": {
      "crontab_tasks": [
        "0 1 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/run_sql_to_gpssh.sh\" \"$PATH_ARENADATA_CONFIGS/gzip_pg_log.sql\" \\ >> \"$PATH_ARENADATA_CONFIGS/gzip_pg_log.log\" 2>&1",
        "0 2 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" vacuum_system_db",
        "0 3 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" remove_orphaned_temp_schemas",
        "0 6 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" vacuum --timelimit 240",
        "0 11 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" analyze --timelimit 240",
        "0 21 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" collect_table_stats",
        "4 */8 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" vacuum_analyze_pg_catalog",
        "0 1 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/gzip_gpadmin_log.sh\" >> \"$PATH_ARENADATA_CONFIGS/gzip_gpadmin_log.log\" 2>&1"
      ],
      "delete_operation_log_after": 30
    },
    "ssl": {
      "ssl_ciphers": [
        "HIGH",
        "MEDIUM",
        "+3DES",
        "!aNULL"
      ],
      "server_certificate_file": null,
      "server_private_key_file": null,
      "root_certificate_file": null,
      "server_crl_list_file": null,
      "ssl_pg_hba_customs": null
    },
    "LDAP": {
      "ldap_type": "MSAD",
      "ldap_uri": null,
      "ldap_basedn": null,
      "ldap_groups_basedn": null,
      "ldap_users_filter": "(&(|(objectClass=person)(objectClass=inetOrgPerson))(cn=*))",
      "ldap_groups_filter": "(&(|(objectClass=group)(objectClass=groupofnames)(objectClass=groupOfUniqueNames))(cn=*))",
      "ldap_login": null,
      "ldap_password": null,
      "ldap_login_lowercase": false,
      "ldap_group_lowercase": false,
      "sync_interval": "0 * * * *"
    },
    "pg_hba_customs": "host\tall\t\t        alice\t\t    10.92.38.0/24\t\t            pam pamservice=postgresql\nhost\tadb\t\t        new_user\t\t       10.92.41.35/32\t\t   trust "
  },
  "adcmMeta": {
    "/use_dedicated_network": {
      "isActive": false
    },
    "/adb_ident_serv": {
      "isActive": false
    },
    "/gpperfmon": {
      "isActive": true
    },
    "/Crontab": {
      "isActive": true
    },
    "/ssl": {
      "isActive": false
    },
    "/LDAP": {
      "isActive": false
    }
  },
  "description": "update"
}

Пример ответа

HTTP 201 Created
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 1357,
  "isCurrent": true,
  "creationTime": "2025-08-07T10:59:17.110045Z",
  "config": {
    "__main_info": "<p style=\"font-size:16px; \">\n<a href=\"https://arenadata.tech/en/products/arenadata-db/\" target=\"_blank\">\nArenadata DB (ADB)</a> is a distributed database based on using MPP\n(massively parallel processing) principle. It takes its origin\nfrom Pivotal's Greenplum database.</p><p style=\"font-size:16px; \">JDBC URL:  jdbc:postgresql://10.92.38.37:5432</p>\n<p style=\"font-size:16px; \">SSL: disabled</p>\n",
    "components": {
      "adb": "{\"logs\": [{\"type\": \"search_and_archive_directories\", \"paths\": [\"*/master/gpseg*/pg_log\", \"*/mirror/gpseg*/pg_log\", \"*/primary/gpseg*/pg_log\", \"/home/*/gpAdminLogs\", \"/home/*/arenadata_configs/operation_log\"]}]}"
    },
    "Main": {
      "dbname": "adb",
      "enable_mirroring": true,
      "madlib": false,
      "postgis": false,
      "autocoredump": false,
      "diskquota": false,
      "plpython3": false
    },
    "Advanced": {
      "num_segments_per_host": 4,
      "segment_datadirs": {
        "/data1": ""
      },
      "segment_nobarrier": false,
      "master_datadir": "/data1",
      "master_mount_storage": false,
      "master_server_storage": null,
      "master_nobarrier": false,
      "config_dir": "arenadata_configs",
      "sysctl_params": "[[\"kernel.core_uses_pid\", \"1\"], [\"kernel.shmmni\", \"4096\"], [\"kernel.sem\", \"250 2048000 200 8192\"], [\"kernel.msgmnb\", \"65536\"], [\"kernel.msgmax\", \"65536\"], [\"kernel.msgmni\", \"2048\"], [\"net.ipv4.tcp_syncookies\", \"1\"], [\"net.ipv4.conf.default.accept_source_route\", \"0\"], [\"net.ipv4.tcp_max_syn_backlog\", \"4096\"], [\"net.ipv4.conf.all.arp_filter\", \"1\"], [\"net.ipv4.ip_local_port_range\", \"10000 65535\"], [\"net.ipv4.ipfrag_high_thresh\", \"41943040\"], [\"net.ipv4.ipfrag_low_thresh\", \"31457280\"], [\"net.ipv4.ipfrag_time\", \"60\"], [\"net.core.netdev_max_backlog\", \"10000\"], [\"net.core.rmem_max\", \"2097152\"], [\"net.core.wmem_max\", \"2097152\"], [\"vm.overcommit_memory\", \"2\"], [\"vm.overcommit_ratio\", \"95\"], [\"vm.swappiness\", \"10\"], [\"vm.zone_reclaim_mode\", \"0\"], [\"vm.dirty_expire_centisecs\", \"500\"], [\"vm.dirty_writeback_centisecs\", \"100\"], [\"vm.dirty_background_ratio\", \"0\"], [\"vm.dirty_ratio\", \"0\"], [\"vm.dirty_background_bytes\", \"1610612736\"], [\"vm.dirty_bytes\", \"4294967296\"], [\"kernel.core_pipe_limit\", \"0\"]]",
      "system_user_gid": 2042,
      "system_user_name": "gpadmin",
      "system_user_uid": 2042,
      "disable_firewall": true,
      "edit_hosts": true,
      "instrument_shmem_size": 5120,
      "max_scan_on_shmem": 300
    },
    "ic_proxy_properties": {
      "gp_interconnect_type": "udpifc",
      "ic_proxy_addresses_auto_discovery": true,
      "ic_proxy_port_delta": 52000,
      "ic_proxy_check": false,
      "ic_proxy_gp_interconnect_proxy_addresses": null
    },
    "use_dedicated_network": {
      "cluster_subnet": null
    },
    "adb_ident_serv": {
      "adb_ident_default_deny_policy": true
    },
    "gpperfmon": {
      "gpperfmon_authentication_type": "md5"
    },
    "Crontab": {
      "crontab_tasks": [
        "0 1 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/run_sql_to_gpssh.sh\" \"$PATH_ARENADATA_CONFIGS/gzip_pg_log.sql\" \\ >> \"$PATH_ARENADATA_CONFIGS/gzip_pg_log.log\" 2>&1",
        "0 2 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" vacuum_system_db",
        "0 3 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" remove_orphaned_temp_schemas",
        "0 6 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" vacuum --timelimit 240",
        "0 11 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" analyze --timelimit 240",
        "0 21 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" collect_table_stats",
        "4 */8 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/operation.py\" vacuum_analyze_pg_catalog",
        "0 1 * * * . \"$PROFILE\" && \"$PATH_ARENADATA_CONFIGS/gzip_gpadmin_log.sh\" >> \"$PATH_ARENADATA_CONFIGS/gzip_gpadmin_log.log\" 2>&1"
      ],
      "delete_operation_log_after": 30
    },
    "ssl": {
      "ssl_ciphers": [
        "HIGH",
        "MEDIUM",
        "+3DES",
        "!aNULL"
      ],
      "server_certificate_file": null,
      "server_private_key_file": null,
      "root_certificate_file": null,
      "server_crl_list_file": null,
      "ssl_pg_hba_customs": null
    },
    "LDAP": {
      "ldap_type": "MSAD",
      "ldap_uri": null,
      "ldap_basedn": null,
      "ldap_groups_basedn": null,
      "ldap_users_filter": "(&(|(objectClass=person)(objectClass=inetOrgPerson))(cn=*))",
      "ldap_groups_filter": "(&(|(objectClass=group)(objectClass=groupofnames)(objectClass=groupOfUniqueNames))(cn=*))",
      "ldap_login": null,
      "ldap_password": null,
      "ldap_login_lowercase": false,
      "ldap_group_lowercase": false,
      "sync_interval": "0 * * * *"
    },
    "pg_hba_customs": "host\tall\t\t        alice\t\t    10.92.38.0/24\t\t            pam pamservice=postgresql\nhost\tadb\t\t        new_user\t\t       10.92.41.35/32\t\t   trust "
  },
  "adcmMeta": {
    "/use_dedicated_network": {
      "isActive": false
    },
    "/adb_ident_serv": {
      "isActive": false
    },
    "/gpperfmon": {
      "isActive": true
    },
    "/Crontab": {
      "isActive": true
    },
    "/ssl": {
      "isActive": false
    },
    "/LDAP": {
      "isActive": false
    }
  },
  "description": "update"
}

Распределение компонентов на хостах

POST /api/v2/clusters/<clusterId>/mapping/ HTTP/1.1

Этот запрос позволяет добавить компоненты на существующие хосты и сохранить их распределение (host-component mapping). Укажите компоненты, которые должны быть добавлены на указанные хосты. Если распределение компонентов на хостах для кластера уже существовало, чтобы сохранить новое распределение, нужно скопировать и еще раз отправить все предшествующие записи.

Параметры JSON-объекта запроса
Параметр Тип Описание

hostId

integer

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

componentId

integer

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

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор записи распределения компонента на хосте

hostId

integer

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

componentId

integer

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

Пример запроса

POST /api/v2/clusters/3/mapping/ HTTP/1.1
Content-Type: application/json
Accept: application/json

[
  {
    "hostId": 2,
    "componentId": 2
  }
]

Пример ответа

HTTP 201 Created
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
  {
    "id": 1,
    "hostId": 2,
    "componentId": 2
  }
]

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

GET /api/v2/clusters/<clusterId>/mapping/ HTTP/1.1

Этот запрос возвращает текущее распределение компонентов на хостах (если оно существует) для указанного кластера. Порядок вывода не гарантируется.

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор записи распределения компонента на хосте

hostId

integer

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

componentId

integer

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

Пример запроса

GET /api/v2/clusters/8/mapping/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
  {
    "id": 3,
    "hostId": 4,
    "componentId": 33
  }
]

Список action

GET /api/v2/clusters/<clusterId>/actions/ HTTP/1.1

Этот запрос возвращает список всех action кластера. Чтобы получить подробную информацию об отдельном action, укажите его идентификатор в пути запроса:

GET /api/v2/clusters/<clusterId>/actions/<actionId>/ HTTP/1.1

Хостпровайдеры, хосты и сервисы также содержат action, доступ к которым осуществляется аналогичным образом.

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор action

name

string

Название action

displayName

string

Отображаемое название action

startImpossibleReason

string

Причина, по которой запуск action невозможен

Пример запроса

GET /api/v2/clusters/5/actions/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
  {
    "id": 4,
    "name": "install",
    "displayName": "Install",
    "startImpossibleReason": null
  },
  {
    "id": 9,
    "name": "hadoop_2.1.10_b1-1_community_upgrade_2.1.10_b1_community_2.1.8_b3_strict_false-2.1.10_b1-1_strict_false_editions-community_state_available-installed_faulty_installed_created_state_on_success-upgradable",
    "displayName": "Upgrade: 2.1.10_b1 community",
    "startImpossibleReason": null
  }
]

Создание процесса (flow) выполнения action

ПРИМЕЧАНИЕ
Для действий (action), реализованных в виде интерактивного пошагового сценария (Wizard), необходимо предварительно создать процесс (flow).
POST /api/v2/clusters/<clusterId>/actions/<actionId>/processes/ HTTP/1.1

Этот запрос создает процесс выполнения действия, реализованного в виде Wizard. Процесс содержит информацию об этапах (stage), шагах (step) и текущем состоянии выполнения action.

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

state

string

Состояние процесса. Возможные значения: created, broken, completed

currentStep

integer или null

Идентификатор текущего активного шага процесса. Если шаг отсутствует или все шаги завершены, возвращается null

createdAt

string

Дата и время создания процесса

stages

array of objects

Список этапов процесса. Каждый этап содержит поля name (название этапа), displayName (отображаемое название) и steps (список шагов этапа)

syncKey

string

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

Пример запроса

POST /api/v2/clusters/23/actions/2500/processes/ HTTP/1.1

Пример ответа

HTTP 201 Created
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 3,
  "state": "created",
  "currentStep": 7,
  "createdAt": "2026-01-29T12:39:35.681034Z",
  "stages": [
    {
      "name": "manage_ssl_stage",
      "displayName": "Manage SSL",
      "steps": [
        {
          "id": 7,
          "state": "created",
          "name": "configure_ssl",
          "displayName": "Configure SSL",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "manage_kerberos",
      "displayName": "Manage Kerberos",
      "steps": [
        {
          "id": 8,
          "state": "created",
          "name": "configure_kerberos",
          "displayName": "Configure Kerberos",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "general_options",
      "displayName": "General options",
      "steps": [
        {
          "id": 9,
          "state": "created",
          "name": "general_options",
          "displayName": "General options",
          "type": "configuration"
        }
      ]
    }
  ],
  "syncKey": "5381f555-9343-455d-8f05-657cba6226b4"
}

Получение информации о процессе (flow) action

GET /api/v2/clusters/<clusterId>/actions/<actionId>/processes/<processId>/ HTTP/1.1

Этот запрос возвращает текущее состояние уже созданного процесса, а также структуру его этапов и шагов. Используется для продолжения выполнения action, реализованных в виде интерактивного пошагового сценария (Wizard).

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

state

string

Состояние процесса. Возможные значения: created, broken, completed

currentStep

integer или null

Идентификатор текущего активного шага процесса. Если шаг отсутствует или все шаги завершены, возвращается null

createdAt

string

Дата и время создания процесса

stages

array of objects

Список этапов процесса. Каждый этап содержит поля name (название этапа), displayName (отображаемое название) и steps (список шагов этапа)

syncKey

string

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

Пример запроса

GET /api/v2/clusters/23/actions/2500/processes/3/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 3,
  "state": "created",
  "currentStep": 7,
  "createdAt": "2026-01-29T12:39:35.681034Z",
  "stages": [
    {
      "name": "manage_ssl_stage",
      "displayName": "Manage SSL",
      "steps": [
        {
          "id": 7,
          "state": "created",
          "name": "configure_ssl",
          "displayName": "Configure SSL",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "manage_kerberos",
      "displayName": "Manage Kerberos",
      "steps": [
        {
          "id": 8,
          "state": "created",
          "name": "configure_kerberos",
          "displayName": "Configure Kerberos",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "general_options",
      "displayName": "General options",
      "steps": [
        {
          "id": 9,
          "state": "created",
          "name": "general_options",
          "displayName": "General options",
          "type": "configuration"
        }
      ]
    }
  ],
  "syncKey": "5381f555-9343-455d-8f05-657cba6226b4"
}

Получение информации о шаге процесса (flow) action

GET /api/v2/clusters/<clusterId>/actions/<actionId>/processes/<processId>/steps/<stepId>/ HTTP/1.1

Этот запрос возвращает текущее состояние указанного шага процесса (flow) action, реализованного в виде интерактивного пошагового сценария (Wizard).

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор шага

displayName

string

Отображаемое название шага

name

string

Название шага

type

string

Тип шага

state

string

Состояние шага. Возможные значения: created, running, completed, broken, skipped

configuration

object or null

Объект с данными конфигурации шага (присутствует только для шагов типа configuration)

Пример запроса

GET /api/v2/clusters/15/actions/984/processes/2/steps/7/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 7,
  "displayName": "Configure encryption",
  "name": "configure_encryption",
  "type": "configuration",
  "state": "completed",
  "configuration": {
    "configSchema": {
      "title": "Configuration",
      "description": "",
      "readOnly": false,
      "type": "object",
      "properties": {
        "creds_encryption": {
          "title": "Credential encryption",
          "description": "",
          "readOnly": false,
          "default": {},
          "adcmMeta": {
            "isAdvanced": false,
            "isInvisible": false,
            "isSecret": false,
            "activation": null,
            "synchronization": null,
            "stringExtra": null,
            "enumExtra": null
          },
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "credstore_password": {
              "oneOf": [
                {
                  "title": "Credstore password configure_encryption",
                  "description": "Encryption provider password. Must be at least 6 symbols",
                  "readOnly": false,
                  "default": null,
                  "adcmMeta": {
                    "isAdvanced": false,
                    "isInvisible": false,
                    "isSecret": true,
                    "activation": null,
                    "synchronization": null,
                    "stringExtra": {
                      "isMultiline": false
                    },
                    "enumExtra": null
                  },
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "credstore_password_opts": {
              "title": "Credstore options",
              "description": "The way to store encryption provider password, if required",
              "readOnly": false,
              "default": null,
              "adcmMeta": {
                "isAdvanced": false,
                "isInvisible": false,
                "isSecret": false,
                "activation": null,
                "synchronization": null,
                "stringExtra": {
                  "isMultiline": false
                },
                "enumExtra": null
              },
              "enum": [
                "password in the environment",
                "password-file",
                "no password"
              ]
            }
          },
          "required": [
            "credstore_password",
            "credstore_password_opts"
          ]
        }
      },
      "required": [
        "creds_encryption"
      ],
      "additionalProperties": false,
      "adcmMeta": {
        "isAdvanced": false,
        "isInvisible": false,
        "activation": null,
        "synchronization": null,
        "nullValue": null,
        "isSecret": false,
        "stringExtra": null,
        "enumExtra": null
      },
      "$schema": "https://json-schema.org/draft/2020-12/schema"
    },
    "adcmMeta": {},
    "config": {
      "creds_encryption": {
        "credstore_password": null,
        "credstore_password_opts": "password-file"
      }
    }
  }
}

Подтверждение выполнения шага процесса (flow) action

ПРИМЕЧАНИЕ
Операции подтверждения выполнения шага, пропуска выполнения шага, отмены внесенных изменений и завершения процесса используют одну и ту же конечную точку. Тип выполняемой операции определяется значением поля method (submit_step, skip_step, reset_step, complete) в теле запроса.
POST /api/v2/clusters/<clusterId>/actions/<actionId>/processes/<processId>/operation/ HTTP/1.1

Этот запрос подтверждает выполнение шага процесса (flow) и запускает связанную задачу (job) для action, реализованного в виде интерактивного пошагового сценария (Wizard). Запрос отправляется, когда в веб-интерфейсе ADCM пользователь нажимает кнопку Next step.

Параметры JSON-объекта запроса
Параметр Тип Описание

method

string

Тип операции, применяемой к шагу процесса. Значение для данного запроса: submit_step

params

object

Объект с входными параметрами для выполнения операции над шагом

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

state

string

Состояние процесса. Возможные значения: created, broken, completed

currentStep

integer или null

Идентификатор текущего активного шага процесса. При завершении всех шагов возвращается null

createdAt

string

Дата и время создания процесса

stages

array of objects

Список этапов процесса. Каждый этап содержит поля name (название этапа), displayName (отображаемое название) и steps (список шагов этапа)

syncKey

string

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

Пример запроса

POST /api/v2/clusters/10/actions/942/processes/17/operation/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "method": "submit_step",
  "params": {
    "stepId": 53,
    "processSyncKey": "75b5ee6d-12af-43ab-a13f-8faf90b75348",
    "configuration": {
      "adcmMeta": {
        "/ssl_config": {
          "isActive": false
        }
      },
      "config": {
        "ssl_config": {
          "tls_version": "TLSv1.2",
          "keystore_path": "/etc/ssl/keystore.jks",
          "truststore_path": "/etc/ssl/truststore.jks",
          "keystore_password": "$ANSIBLE_VAULT;1.1;AES256\n<encrypted_vault_secret>",
          "truststore_password": "$ANSIBLE_VAULT;1.1;AES256\n<encrypted_vault_secret>",
          "force_rewrite_ssl_parameters": false
        }
      }
    }
  }
}

Пример ответа

HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 17,
  "state": "created",
  "currentStep": 54,
  "createdAt": "2026-08-11T11:31:36.001830Z",
  "stages": [
    {
      "name": "manage_ssl_stage",
      "description": "",
      "displayName": "Manage SSL",
      "steps": [
        {
          "id": 53,
          "state": "completed",
          "name": "configure_ssl",
          "description": "",
          "displayName": "Configure SSL",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "manage_kerberos",
      "description": "",
      "displayName": "Manage Kerberos",
      "steps": [
        {
          "id": 54,
          "state": "created",
          "name": "configure_kerberos",
          "description": "",
          "displayName": "Configure Kerberos",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "general_options",
      "description": "",
      "displayName": "General options",
      "steps": [
        {
          "id": 55,
          "state": "created",
          "name": "general_options",
          "description": "",
          "displayName": "General options",
          "type": "configuration"
        }
      ]
    }
  ],
  "syncKey": "65730a42-638d-4116-b43d-fe86733c2826"
}

Пропуск выполнения шага процесса (flow) action

ПРИМЕЧАНИЕ
Операции подтверждения выполнения шага, пропуска выполнения шага, отмены внесенных изменений и завершения процесса используют одну и ту же конечную точку. Тип выполняемой операции определяется значением поля method (submit_step, skip_step, reset_step, complete) в теле запроса.
POST /api/v2/clusters/<clusterId>/actions/<actionId>/processes/<processId>/operation/ HTTP/1.1

Этот запрос пропускает выполнение текущего шага процесса (flow) action, реализованного в виде интерактивного пошагового сценария (Wizard), без применения изменений и переводит процесс к следующему шагу. Запрос отправляется, когда в веб-интерфейсе ADCM пользователь нажимает кнопку Next step на необязательном шаге.

ВАЖНО
Операция skip_step применима только к необязательным шагам (required: false) типа operation. Шаги типа configuration и распределения компонентов на хостах (mapping) пропустить нельзя.
Параметры JSON-объекта запроса
Параметр Тип Описание

method

string

Тип операции, применяемой к шагу процесса. Значение для данного запроса: skip_step

params

object

Объект с входными параметрами для выполнения операции над шагом

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

state

string

Состояние процесса. Возможные значения: created, broken, completed

currentStep

integer или null

Идентификатор текущего активного шага процесса. При завершении всех шагов возвращается null

createdAt

string

Дата и время создания процесса

stages

array of objects

Список этапов процесса. Каждый этап содержит поля name (название этапа), displayName (отображаемое название) и steps (список шагов этапа)

syncKey

string

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

Пример запроса

POST /api/v2/clusters/1/actions/7/processes/4/operation/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "method": "skip_step",
  "params": {
    "stepId": 15,
    "processSyncKey": "899c6f5e-75c3-4b5e-ad62-ab32f84397ec"
  }
}

Пример ответа

HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 4,
  "state": "created",
  "currentStep": 16,
  "createdAt": "2026-08-11T12:34:12.192669Z",
  "stages": [
    {
      "name": "first_stage",
      "description": "",
      "displayName": "First stage",
      "steps": [
        {
          "id": 13,
          "state": "completed",
          "name": "stage1_step1",
          "description": "",
          "displayName": "Configuration",
          "type": "configuration"
        },
        {
          "id": 14,
          "state": "completed",
          "name": "apply_config",
          "description": "",
          "displayName": "Apply configuration",
          "type": "operation"
        },
        {
          "id": 15,
          "state": "skipped",
          "name": "apply_config_optional",
          "description": "You can easily skip this step!",
          "displayName": "Apply optional parameters",
          "type": "operation"
        }
      ]
    },
    {
      "name": "second_stage",
      "description": "",
      "displayName": "Second stage",
      "steps": [
        {
          "id": 16,
          "state": "created",
          "name": "stage2_step1",
          "description": "",
          "displayName": "Stage2.Step1",
          "type": "operation"
        }
      ]
    }
  ],
  "syncKey": "52e52d78-a486-4d01-80c3-db660be61581"
}

Отмена внесенных изменений шага процесса (flow) action

ПРИМЕЧАНИЕ
Операции подтверждения выполнения шага, пропуска выполнения шага, отмены внесенных изменений и завершения процесса используют одну и ту же конечную точку. Тип выполняемой операции определяется значением поля method (submit_step, skip_step, reset_step, complete) в теле запроса.
POST /api/v2/clusters/<clusterId>/actions/<actionId>/processes/<processId>/operation/ HTTP/1.1

Этот запрос отменяет изменения шага процесса (flow) action, реализованного в виде интерактивного пошагового сценария (Wizard), и возвращает шаг в исходное состояние. Запрос отправляется, когда в веб-интерфейсе ADCM пользователь нажимает кнопку Discard changes.

Параметры JSON-объекта запроса
Параметр Тип Описание

method

string

Тип операции, применяемой к шагу процесса. Значение для данного запроса: reset_step

params

object

Объект с входными параметрами для выполнения операции над шагом

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

state

string

Состояние процесса

currentStep

integer или null

Идентификатор текущего активного шага процесса. Если шаг отсутствует или все шаги завершены, возвращается null

createdAt

string

Дата и время создания процесса

stages

array of objects

Список этапов процесса. Каждый этап содержит поля name (название этапа), displayName (отображаемое название) и steps (список шагов этапа)

syncKey

string

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

Пример запроса

POST /api/v2/clusters/15/actions/984/processes/6/operation/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "method": "reset_step",
  "params": {
    "stepId": 29,
    "processSyncKey": "f93edb1b-858c-4a7a-9286-d4d88fdd7146"
  }
}

Пример ответа

HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 6,
  "state": "created",
  "currentStep": 26,
  "createdAt": "2026-02-16T10:31:35.784582Z",
  "stages": [
    {
      "name": "manage_ssl_stage",
      "displayName": "Manage SSL",
      "steps": [
        {
          "id": 26,
          "state": "created",
          "name": "configure_ssl",
          "displayName": "Configure SSL",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "manage_encryption_stage",
      "displayName": "Manage encryption",
      "steps": [
        {
          "id": 27,
          "state": "created",
          "name": "configure_encryption",
          "displayName": "Configure encryption",
          "type": "configuration"
        },
        {
          "id": 28,
          "state": "created",
          "name": "check_encryption",
          "displayName": "Validate configuration",
          "type": "operation"
        }
      ]
    },
    {
      "name": "save_stage",
      "displayName": "Save configuration",
      "steps": [
        {
          "id": 29,
          "state": "created",
          "name": "configuration",
          "displayName": "Config",
          "type": "configuration"
        },
        {
          "id": 30,
          "state": "created",
          "name": "save_configuration",
          "displayName": "Save configuration",
          "type": "operation"
        }
      ]
    }
  ],
  "syncKey": "13c9b76f-ea82-45e4-b6df-c2d8826f632e"
}

Завершение процесса (flow) action

ПРИМЕЧАНИЕ
Операции подтверждения выполнения шага, пропуска выполнения шага, отмены внесенных изменений и завершения процесса используют одну и ту же конечную точку. Тип выполняемой операции определяется значением поля method (submit_step, skip_step, reset_step, complete) в теле запроса.
POST /api/v2/clusters/<clusterId>/actions/<actionId>/processes/<processId>/operation/ HTTP/1.1

Этот запрос выполняет завершение указанного процесса (flow) action, реализованного в виде интерактивного пошагового сценария (Wizard). Используется, когда в веб-интерфейсе ADCM пользователь нажимает кнопку Run.

Параметры JSON-объекта запроса
Параметр Тип Описание

method

string

Тип операции, применяемой к процессу. Значение для данного запроса: complete

params

object

Объект с входными параметрами для выполнения операции над шагом

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

state

string

Состояние процесса. Возможные значения: created, broken, completed

currentStep

integer или null

Идентификатор текущего активного шага процесса. При завершении всех шагов возвращается null

createdAt

string

Дата и время создания процесса

stages

array of objects

Список этапов процесса. Каждый этап содержит поля name (название этапа), displayName (отображаемое название) и steps (список шагов этапа)

syncKey

string

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

Пример запроса

POST /api/v2/clusters/23/actions/2500/processes/7/operation/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "method": "complete",
  "params": {
    "processSyncKey": "ad8954c3-26ef-487c-9b2f-2be0f0c4bfa0"
  }
}

Пример ответа

HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 7,
  "state": "completed",
  "currentStep": null,
  "createdAt": "2026-02-16T11:34:20.670234Z",
  "stages": [
    {
      "name": "manage_ssl_stage",
      "displayName": "Manage SSL",
      "steps": [
        {
          "id": 19,
          "state": "completed",
          "name": "configure_ssl",
          "displayName": "Configure SSL",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "manage_kerberos",
      "displayName": "Manage Kerberos",
      "steps": [
        {
          "id": 20,
          "state": "completed",
          "name": "configure_kerberos",
          "displayName": "Configure Kerberos",
          "type": "configuration"
        }
      ]
    },
    {
      "name": "general_options",
      "displayName": "General options",
      "steps": [
        {
          "id": 21,
          "state": "completed",
          "name": "general_options",
          "displayName": "General options",
          "type": "configuration"
        }
      ]
    }
  ],
  "syncKey": "db9f45bf-989e-45e0-a463-8b09a8963da0"
}

Запуск action

POST /api/v2/clusters/<clusterId>/actions/<actionId>/run/ HTTP/1.1

Action может быть запущен, если атрибут startImpossibleReason принимает значение null. В остальных случаях этот атрибут содержит информацию о причине, по которой action невозможно запустить. Некоторые action недоступны, если объект ADCM (хост или сервис) находится в режиме обслуживания.

Правила распределения компонентов на хостах, которые влияют на action, перечислены в секции hostComponentMapRules информации об action. Если значение параметра hostComponentMapRules равно [], такие правила отсутствуют.

Запуск action для сервисов, компонентов, хостпровайдеров и хостов выполняется аналогично запуску action кластера, показанному ниже.

Параметры JSON-объекта запроса
Параметр Тип Описание

hostComponentMap

array of objects

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

configuration

object

Список конфигурационных параметров и их значений

isVerbose

boolean

Определяет, необходимо ли предоставить детализированную информацию

shouldBlockObject

boolean

Возможность создать блокирующий или неблокирующий concern. Возможные значения: true, false

process

object

Информация о процессе (flow)

description

string

Комментарий к action. Ограничение на длину строки: 255 символов

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор action

name

string

Название action

displayName

string

Отображаемое название action

action

object

Информация об action

status

string

Статус action

startTime

string

Момент старта action

endTime

string

Момент остановки action

duration

float

Продолжительность выполнения action

isTerminatable

boolean

Возможность отменить выполнение связанной с action задачи (job)

childJobs

array of objects

Связанные задачи (job)

objects

array of objects

Объекты ADCM, относящиеся к action

description

string

Комментарий к action

Пример запроса

POST /api/v2/clusters/8/actions/391/run/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "hostComponentMap": [],
  "configuration": {
    "config": {
      "disable_selinux": true,
      "disable_firewalld": true,
      "install_jdk": true,
      "swap_off": true,
      "configure_etc": false,
      "service_check_on": true
    },
    "adcmMeta": {}
  },
  "isVerbose": false,
  "shouldBlockObject": true,
  "process": null,
  "description": "Install ADS cluster"
}

Пример ответа

HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 24,
  "name": "Install",
  "displayName": "Install",
  "action": {
    "id": 391,
    "name": "Install",
    "displayName": "Install"
  },
  "status": "created",
  "startTime": null,
  "endTime": null,
  "duration": null,
  "isTerminatable": true,
  "childJobs": [
    {
      "id": 265,
      "name": "cluster_precheck",
      "displayName": "Cluster precheck",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 266,
      "name": "repos",
      "displayName": "Repositories setup",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 267,
      "name": "preinstall",
      "displayName": "Preinstall",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 268,
      "name": "monitoring_clients",
      "displayName": "[Deprecated] Monitoring clients",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 269,
      "name": "zookeeper",
      "displayName": "Zookeeper",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 270,
      "name": "znode",
      "displayName": "Configure Znode path",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 271,
      "name": "kafka_controller",
      "displayName": "Kafka Controller",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 272,
      "name": "kafka",
      "displayName": "Kafka Broker",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 273,
      "name": "kafka_cruise_control",
      "displayName": "Kafka Cruise Control",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 274,
      "name": "schema_registry",
      "displayName": "Schema-Registry",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 275,
      "name": "kafka_rest",
      "displayName": "Kafka REST Proxy",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 276,
      "name": "ksql",
      "displayName": "ksqlDB",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 277,
      "name": "kafka_connect",
      "displayName": "Kafka Connect Worker",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 278,
      "name": "nifi_server",
      "displayName": "NiFi Server",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 279,
      "name": "nifi_registry",
      "displayName": "NiFi-Registry",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 280,
      "name": "minifi_server",
      "displayName": "MiNiFi C2 Server",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 281,
      "name": "minifi_agent",
      "displayName": "MiNiFi Agent",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 282,
      "name": "set_property_cluster_info",
      "displayName": "Set property cluster info",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 283,
      "name": "kafka_controller_check",
      "displayName": "Kafka Controller: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 284,
      "name": "kafka_check",
      "displayName": "Kafka Broker: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 285,
      "name": "kafka_cruise_control",
      "displayName": "Kafka Cruise Control: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 286,
      "name": "schema_registry_check",
      "displayName": "Schema-Registry: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 287,
      "name": "kafka_rest_check",
      "displayName": "Kafka REST Proxy: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 288,
      "name": "ksql_check",
      "displayName": "ksqlDB: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 289,
      "name": "kafka_connect_check",
      "displayName": "Kafka Connect: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 290,
      "name": "nifi_server_check",
      "displayName": "NiFi Server: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 291,
      "name": "nifi_registry_check",
      "displayName": "NiFi-Registry: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 292,
      "name": "minifi_server_check",
      "displayName": "MiNiFi C2 Server: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 293,
      "name": "minifi_agent_check",
      "displayName": "MiNiFi Agent: Check",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    },
    {
      "id": 294,
      "name": "prometheus_monitoring",
      "displayName": "Prometheus monitoring: install",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": true
    }
  ],
  "objects": [
    {
      "type": "cluster",
      "id": 8,
      "name": "ADS"
    }
  ],
  "description": "Install ADS cluster"
}

Список групп хостов для действий

GET /api/v2/clusters/<clusterId>/action-host-groups/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/ HTTP/1.1

Эти запросы возвращают список групп хостов для выполнения действий, сконфигурированных на уровне кластера, сервиса или компонента соответственно. Чтобы посмотреть детальную информацию об отдельной группе хостов, укажите в запросе идентификатор группы, например (для группы хостов кластера):

GET /api/v2/clusters/<clusterId>/action-host-groups/<groupId>/ HTTP/1.1

Для ответа поддерживается постраничный вывод.

Параметры results JSON-объекта
Параметр Тип Описание

id

integer

Идентификатор группы хостов

name

string

Название группы хостов

description

string

Описание группы хостов

hosts

array of objects

Список хостов в группе. Каждый объект в списке содержит идентификатор и название хоста

Пример запроса

GET /api/v2/clusters/1/services/1/action-host-groups/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 1,
      "name": "hosts_1-3",
      "description": "",
      "hosts": [
        {
          "id": 1,
          "name": "dev-adqm-1.ru-central1.internal"
        },
        {
          "id": 3,
          "name": "dev-adqm-3.ru-central1.internal"
        }
      ]
    },
    {
      "id": 2,
      "name": "hosts_2-4",
      "description": "",
      "hosts": [
        {
          "id": 2,
          "name": "dev-adqm-2.ru-central1.internal"
        },
        {
          "id": 4,
          "name": "dev-adqm-4.ru-central1.internal"
        }
      ]
    }
  ]
}

Создание группы хостов

POST /api/v2/clusters/<clusterId>/action-host-groups/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/ HTTP/1.1

Эти запросы создают новую группу хостов для выполнения действий на уровне кластера, сервиса или компонента соответственно.

Параметры JSON-объекта запроса
Параметр Тип Описание

name

string

Название группы хостов

description

string

Описание группы хостов

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор группы хостов

name

string

Название группы хостов

description

string

Описание группы хостов

hosts

array of objects

Список хостов в группе. Каждый объект в списке содержит идентификатор и название хоста

Пример запроса

POST /api/v2/clusters/1/action-host-groups/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "name": "test_group_of_hosts",
  "description": "This host group is created from API."
}

Пример ответа

HTTP 201 Created
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 3,
  "name": "test_group_of_hosts",
  "description": "This host group is created from API.",
  "hosts": []
}

Добавление хоста в группу

POST /api/v2/clusters/<clusterId>/action-host-groups/<groupId>/hosts/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/<groupId>/hosts/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/<groupId>/hosts/ HTTP/1.1

Эти запросы добавляют хост в группу хостов для выполнения действий на уровне кластера, сервиса или компонента соответственно. Указание идентификатора хоста обязательно.

Список хостов (с идентификаторами), доступных для добавления в группу
GET /api/v2/clusters/<clusterId>/action-host-groups/<groupId>/host-candidates/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/<groupId>/host-candidates/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/<groupId>/host-candidates/ HTTP/1.1
Параметры JSON-объекта запроса
Параметр Тип Описание

hostId

integer

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

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

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

name

string

Название хоста

Пример запроса

POST /api/v2/clusters/1/action-host-groups/3/hosts/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "hostId": 3
}

Пример ответа

HTTP 201 Created
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 3,
  "name": "dev-adqm-3.ru-central1.internal"
}

Удаление хоста из группы

DELETE /api/v2/clusters/<clusterId>/action-host-groups/<groupId>/hosts/<hostId>/ HTTP/1.1
DELETE /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/<groupId>/hosts/<hostId>/ HTTP/1.1
DELETE /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/<groupId>/hosts/<hostId>/ HTTP/1.1

Эти запросы удаляют хост из группы хостов в конфигурации кластера, сервиса или компонента соответственно.

Пример запроса

DELETE /api/v2/clusters/1/services/1/components/1/action-host-groups/6/hosts/1/ HTTP/1.1

Запуск действия для группы хостов

POST /api/v2/clusters/<clusterId>/action-host-groups/<groupId>/actions/<actionId>/run/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/<groupId>/actions/<actionId>/run/ HTTP/1.1
POST /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/<groupId>/actions/<actionId>/run/ HTTP/1.1

Эти запросы запускают выполнение действия для группы хостов, созданной на уровне кластера, сервиса или компонента соответственно. Действие может быть запущено, если атрибут startImpossibleReason принимает значение null. В остальных случаях этот атрибут содержит информацию о причине, по которой действие запустить невозможно.

Набор действий, доступных для выполнения на хостах группы, зависит от объекта ADCM, на уровне которого создана группа хостов: продукта, типа объекта (кластер, сервис или компонент) и статуса этого объекта.

Список действий, доступных для группы хостов
GET /api/v2/clusters/<clusterId>/action-host-groups/<groupId>/actions/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/<groupId>/actions/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/<groupId>/actions/ HTTP/1.1
Информация об отдельном действии
GET /api/v2/clusters/<clusterId>/action-host-groups/<groupId>/actions/<actionId>/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/<groupId>/actions/<actionId>/ HTTP/1.1
GET /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/<groupId>/actions/<actionId>/ HTTP/1.1
Параметры JSON-объекта запроса
Параметр Тип Описание

hostComponentMap

array of objects

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

configuration

object

Список конфигурационных параметров и их значений

isVerbose

boolean

Определяет, необходимо ли предоставить детализированную информацию

shouldBlockObject

boolean

Возможность создать блокирующий или неблокирующий concern. Возможные значения: true, false

description

string

Комментарий к action. Ограничение на длину строки: 255 символов

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор действия

name

string

Название действия

displayName

string

Отображаемое название действия

action

object

Информация о действии

status

string

Статус действия

startTime

string

Момент старта действия

endTime

string

Момент остановки действия

duration

float

Продолжительность выполнения действия

isTerminatable

boolean

Возможность отменить выполнение связанной с действием задачи (job)

childJobs

array of objects

Связанные задачи (job)

objects

array of objects

Объекты ADCM, относящиеся к действию

description

string

Комментарий к action

Пример запроса

POST /api/v2/clusters/1/services/1/action-host-groups/1/actions/162/run/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 20,
  "name": "restart",
  "displayName": "Restart",
  "action": {
    "id": 162,
    "name": "restart",
    "displayName": "Restart"
  },
  "status": "created",
  "startTime": null,
  "endTime": null,
  "duration": null,
  "isTerminatable": false,
  "childJobs": [
    {
      "id": 57,
      "name": "restart",
      "displayName": "Restart",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": false
    }
  ],
  "objects": [
    {
      "type": "cluster",
      "id": 1,
      "name": "Test ADQM cluster"
    },
    {
      "type": "service",
      "id": 1,
      "name": "ADQMDB"
    },
    {
      "type": "action_host_group",
      "id": 1,
      "name": "hosts_1-3"
    }
  ]
}

Удаление неблокирующего concern

DELETE /api/v2/concerns/<concernId>/ HTTP/1.1

Этот запрос удаляет указанный неблокирующий concern. Вы можете удалить неблокирующий concern при наличии одной из следующих ролей:

  • Cluster Administrator

  • Service Administrator

  • Provider Administrator

  • ADCM Administrator

Пример запроса

DELETE /api/v2/concerns/498/ HTTP/1.1

Пример ответа

HTTP 204 No Content

Удаление группы хостов для действий

DELETE /api/v2/clusters/<clusterId>/action-host-groups/<groupId>/ HTTP/1.1
DELETE /api/v2/clusters/<clusterId>/services/<serviceId>/action-host-groups/<groupId>/ HTTP/1.1
DELETE /api/v2/clusters/<clusterId>/services/<serviceId>/components/<componentId>/action-host-groups/<groupId>/ HTTP/1.1

Эти запросы удаляют группу хостов из конфигурации кластера, сервиса или компонента соответственно.

Пример запроса

DELETE /api/v2/clusters/1/action-host-groups/3/ HTTP/1.1

Список обновлений

GET /api/v2/clusters/<clusterId>/upgrades/ HTTP/1.1

Этот запрос возвращает список всех доступных обновлений кластера. Список обновлений хостпровайдера можно получить аналогичным образом.

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор обновления

name

string

Название обновления

displayName

string

Отображаемое название обновления

bundle

object

Объект бандла

startImpossibleReason

string

Указывает причину, по которой запуск обновления невозможен

Пример запроса

GET /api/v2/clusters/10/upgrades/ HTTP/1.1

Пример ответа

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
  {
    "id": 21,
    "name": "Upgrade to enterprise edition",
    "displayName": "Upgrade to enterprise edition",
    "bundle": {
      "id": 12,
      "name": "ADQM",
      "displayName": "ADQM",
      "version": "25.8.16.34_arenadata1_b2-b",
      "edition": "enterprise"
    },
    "startImpossibleReason": "The Upgrade is not available. One or more hosts in \"Maintenance mode\""
  }
]

Запуск обновлений

POST /api/v2/clusters/<clusterId>/upgrades/<upgradeId>/run/ HTTP/1.1

Запуск обновления аналогичен запуску action. Обновления доступны, если параметр isUpgradable со значением true содержится в информации о кластере.

Обновление может быть запущено, если атрибут startImpossibleReason принимает значение null. В противном случае этот атрибут содержит информацию о причине, по которой запуск обновления недоступен. Некоторые обновления недоступны, если объект ADCM (хост или сервис) находится в режиме обслуживания. Перед запуском обновления необходимо принять лицензионное соглашение бандла.

Правила распределения компонентов на хостах, влияющие на обновление, перечислены в секции hostComponentMapRules информации об обновлении. Если значение параметра hostComponentMapRules равно [], такие правила отсутствуют.

Параметры JSON-объекта запроса
Параметр Тип Описание

hostComponentMap

array of objects

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

configuration

object

Список конфигурационных параметров и их значений

isVerbose

boolean

Определяет, необходимо ли предоставить детализированную информацию

Параметры JSON-объекта ответа
Параметр Тип Описание

id

integer

Идентификатор обновления

name

string

Название обновления

displayName

string

Отображаемое название обновления

action

object

Информация об action

status

string

Статус обновления

startTime

string

Время начала обновления

endTime

string

Время завершения обновления

duration

float

Длительность процесса обновления

isTerminatable

boolean

Возможность отменить выполнение связанной с обновлением задачи (job)

childJobs

array of objects

Связанные задачи (job)

objects

array of objects

Объекты ADCM, относящиеся к обновлению

Пример запроса

POST /api/v2/clusters/19/upgrades/46/run/ HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "hostComponentMap": [],
  "configuration": null,
  "isVerbose": false
}

Пример ответа

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
  "id": 20,
  "name": "hadoop_2.1.10_b1-1_enterprise_upgrade_2.1.10_b1_enterprise_2.1.8_b3_strict_false-2.1.10_b1-1_strict_false_editions-enterprise_state_available-installed_faulty_installed_created_state_on_success-upgradable",
  "displayName": "Upgrade: 2.1.10_b1 enterprise",
  "action": {
    "id": 2528,
    "name": "hadoop_2.1.10_b1-1_enterprise_upgrade_2.1.10_b1_enterprise_2.1.8_b3_strict_false-2.1.10_b1-1_strict_false_editions-enterprise_state_available-installed_faulty_installed_created_state_on_success-upgradable",
    "displayName": "Upgrade: 2.1.10_b1 enterprise"
  },
  "status": "created",
  "startTime": null,
  "endTime": null,
  "duration": null,
  "isTerminatable": false,
  "childJobs": [
    {
      "id": 471,
      "name": "bundle upgrade",
      "displayName": "Upgrade bundle",
      "status": "created",
      "startTime": null,
      "endTime": null,
      "duration": null,
      "isTerminatable": false
    }
  ],
  "objects": [
    {
      "type": "cluster",
      "id": 19,
      "name": "adh-2.1.8"
    }
  ]
}
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней