Подключение к 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.

