Компоненты
Компонент (component) — это способ группировать задачи внутри очереди, например по модулю
или подсистеме. У компонента есть название, очередь, к которой он привязан, необязательный
владелец (lead) и флаг assign_auto — назначать ли владельца компонента исполнителем
всех новых задач с этим компонентом. yatracker предоставляет методы для получения списка
компонентов, их создания и изменения.
Обратите внимание
Как и все методы YaTracker, методы работы с компонентами являются асинхронными.
В примерах ниже вызовы показаны так, как будто мы уже находимся внутри корутины.
Официальная документация: https://yandex.cloud/ru/docs/tracker/about-api
Компоненты очереди и задачи
Компоненты конкретной очереди можно получить и через get_queue
(см. «Работа с очередями») с параметром expand="components" — они
окажутся в поле queue.components. Задачи, в свою очередь, хранят свои компоненты в поле
issue.components. Для задач это документированные короткие ссылки ComponentRef
(url, id, display); для очереди формат в документации не описан, и библиотека
исходит из того же формата по аналогии с versions. Полные объекты Component
с версией и владельцем возвращают get_components и get_queue_components.
Получение списка компонентов
get_components
async def get_components(
self,
per_page: int | None = None,
page: int | None = None,
) -> list[Component]: ...
Возвращает список компонентов, созданных пользователями организации — сразу по всем очередям.
components = await tracker.get_components()
for component in components:
print(component.queue.key, component.name)
Как и другие списки, ответ разбивается на страницы по 50 объектов. Если компонентов больше,
используйте per_page и page:
per_page— количество компонентов на странице (по умолчанию 50).page— номер страницы (по умолчанию 1).
Источник: https://yandex.cloud/ru/docs/tracker/get-components
get_queue_components
Возвращает полные объекты компонентов одной очереди.
components = await tracker.get_queue_components("WRITERS")
for component in components:
print(component.name, component.version)
queue_id— ключ или идентификатор очереди.
Недокументированный запрос
Запрос GET /queues/{id}/components отсутствует в официальном справочнике API, но именно
его использует официальная библиотека yandex_tracker_client для получения компонентов
очереди. Если Трекер перестанет его поддерживать, используйте get_components.
Создание компонента
create_component
async def create_component(
self,
name: str,
queue: str,
*,
description: str | None = None,
lead: str | None = None,
assign_auto: bool | None = None,
) -> Component: ...
Создаёт новый компонент в указанной очереди.
component = await tracker.create_component(
name="Backend",
queue="WRITERS",
lead="login",
assign_auto=True,
)
name— название компонента.queue— ключ очереди (строка, напримерWRITERS), а не объектQueue.description— необязательное описание компонента.lead— необязательный логин владельца компонента (строка, а не объектUser).assign_auto— назначать лиleadисполнителем новых задач с этим компонентом.
Источник: https://yandex.cloud/ru/docs/tracker/post-component
Изменение компонента
update_component
async def update_component(
self,
component_id: str | int,
version: str | int,
*,
name: str | None = None,
description: str | None = None,
lead: str | None = None,
assign_auto: bool | None = None,
) -> Component: ...
Изменяет существующий компонент. Передаются только те поля, которые нужно обновить.
component = await tracker.update_component(
component_id=component.id,
version=component.version,
description="Серверная часть приложения",
)
component_id— идентификатор компонента.version— текущая версия компонента: защита от конфликтов параллельного изменения. Если передать неактуальную версию, Трекер ответит409 Conflict— см. проAlreadyExistsErrorв разделе «Обработка ошибок».name,description,lead,assign_auto— необязательные поля для изменения, как вcreate_component. ЗначениеNoneозначает «не менять»: такие поля в запрос не попадают, поэтому очистить описание или снять владельца черезNoneнельзя.
Источник: https://yandex.cloud/ru/docs/tracker/patch-component
Типичный сценарий
Получить компоненты нужной очереди, найти компонент по имени и изменить его, передав актуальную версию: