Connector API

Содержание

Overview

После интеграции инструментов доступа внутри кластера может быть предоставлен RESTful API для текущего ConnectorClass, позволяющий удобно получать ресурсы внутри инструмента. Эти API будут единообразно экспонироваться через Connector API, что позволит пользователям получать ресурсы из инструмента, на который указывает текущий Connector.

Система Connectors предоставляет полный набор механизмов расширения, упрощающих разработчикам расширение возможностей API ConnectorClass.

API Connectors предлагает единый входной пункт для запросов. Когда клиент инициирует запрос ресурса для инструмента, на который указывает конкретный Connector, система перенаправляет запрос на соответствующий API-адрес ConnectorClass, который в свою очередь пересылает запрос на API-адрес инструмента для получения ресурсов внутри инструмента.

Например:

  • Получение списка Reference конкретного репозитория под Git Connector.
  • Получение списка Tag конкретного репозитория артефактов под OIC Connector.

API Definition

API-адрес

/connectors/v1alpha1/namespaces/{namespace}/connectors/{name}/resources/{resource-name}

  • namespace: пространство имён, в котором находится текущий Connector.
  • name: имя текущего Connector.
  • resource-name: имя запрашиваемого ресурса, которое можно уточнить в документации соответствующего ConnectorClass.

Аутентификация и авторизация

Аутентификация соответствует стандартам Kubernetes и выполняется через механизмы аутентификации и авторизации Kubernetes. Запрашивающий пользователь должен иметь права на чтение соответствующего connector.

При выполнении конечного запроса к инструменту для аутентификации используется Secret, указанный в Connector.

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

Определяются конкретным API ConnectorClass.

Информация о пагинации

Указывается через параметры запроса.

Имя параметраТипОбязательныйОписание
pageintнетНомер страницы
itemsPerPageintнетКоличество элементов на странице

Информация об ответе

При возврате списка структура будет следующей:

Имя поляТипОбязательноеОписание
listMetaListMetaдаМетаданные списка
listMeta.totalItemsintдаОбщее количество запрошенных ресурсов, может использоваться клиентом для анализа пагинации
items[]даЭлементы данных списка; структура данных определяется API ConnectorClass
{
    "listMeta":{
        "totalItems":0
    },
    "items": [
        {

        }
    ]
}

Если ответ не 200, возвращаемая структура данных должна соответствовать k8s status.

Например:

{
    "status": "Failure",
    "message": "api address of connectorclass 'git-noapi' is not resolved",
    "reason": "BadRequest",
    "code": 400,
    "details": null
}

Определения полей и значения перечислений совпадают с k8s status.

ConnectorClass API Extension Specification

Разработчики могут расширять возможности API для ConnectorClass, предоставляя пользователям более богатые возможности получения ресурсов.

См. ConnectorClass API Extension Specification.