Подключение к Knox через Admin API

Обзор

Knox предоставляет REST Admin API для административных функций: управление топологиями, работа с дескрипторами, провайдерами конфигураций и алиасами. В данной статье приведено несколько примеров использования API. Полный список доступных эндпойнтов и методов можно найти в документации Knox Admin API.

Простым способом работы с запросами является curl (он и будет продемонстрирован ниже), но вы можете отправлять запросы любым удобным способом.

Шаблон запроса выглядит следующим образом:

$ curl -iu <login>:<password> -H <header> -d '<data>' -X <request_type> https://<gateway-host>/gateway/admin/api/v1/<endpoint>

где:

  • <login> — имя пользователя с правами администратора.

  • <password> — пароль для <login>.

  • <header> — заголовок, который следует отправить с запросом. Должен отображать тип данных, которые планируется отправить или получить (JSON или XML). Следует опустить при запросе вида DELETE.

  • <data> — данные для отправки (JSON или XML). Следует опустить в запросе вида DELETE или GET.

  • <request_type> — вид HTTP-запроса (GET, POST, PUT, DELETE).

  • <gateway-host> — URL хоста Knox с портом (например, https://stikhomirov-adps.ru-central1.internal:8443).

  • <endpoint> — ресурс, к которому будет отправлен запрос.

ПРИМЕЧАНИЕ
Если не активирована аутентификация, то параметры <login> и <password> стоит опустить, а вместо флага -u использовать -k.

Опция -i позволяет получить HTTP-заголовки и увидеть статус запроса.

Получение топологий

Для получения JSON-объекта с топологиями Knox используйте следующую команду:

$ curl -iu <login>:<password> -H "Accept: application/json" -X GET https://<gateway-host>/gateway/admin/api/v1/topologies

Вывод должен быть похож на следующий:

HTTP/1.1 200 OK
Date: Thu, 10 Oct 2024 21:28:25 GMT
Content-Type: application/json
Content-Length: 1190

{
   "topologies" : {
      "topology" : [ {
         "name" : "admin",
         "timestamp" : "1728594886988",
         "uri" : "https://10.92.40.58:8443/gateway/admin",
         "href" : "https://10.92.40.58:8443/gateway/manager/api/v1/topologies/admin"
      }, {
         "name" : "homepage",
         "timestamp" : "1579705815000",
         "uri" : "https://10.92.40.58:8443/gateway/homepage",
         "href" : "https://10.92.40.58:8443/gateway/manager/api/v1/topologies/homepage"
      }, {
         "name" : "knoxsso",
         "timestamp" : "1728594887604",
         "uri" : "https://10.92.40.58:8443/gateway/knoxsso",
         "href" : "https://10.92.40.58:8443/gateway/manager/api/v1/topologies/knoxsso"
      }, {
         "name" : "manager",
         "timestamp" : "1728594888074",
         "uri" : "https://10.92.40.58:8443/gateway/manager",
         "href" : "https://10.92.40.58:8443/gateway/manager/api/v1/topologies/manager"
      }, {
         "name" : "metadata",
         "timestamp" : "1728594888537",
         "uri" : "https://10.92.40.58:8443/gateway/metadata",
         "href" : "https://10.92.40.58:8443/gateway/manager/api/v1/topologies/metadata"
      } ]
   }
}

Добавление топологии

Чтобы добавить топологию, используйте метод PUT:

$ curl -iu <login>:<password> -H "Content-Type: application/xml" -d '<xml>' -X PUT https://<gateway-host>/gateway/admin/api/v1/topologies/test-topology

В ответе вы получите полный текст новой топологии. Чтобы проверить успешность создания топологии, обратитесь к Knox Admin UI.

Новая топология Knox
Новая топология Knox
Новая топология Knox
Новая топология Knox
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней