2.8 KiB
2.8 KiB
MODIFIED Requirements
Requirement: Агенты модулей
У каждого подключённого модуля, объявляющего типы команд, SHALL быть свой агент; имя агента — имя модуля (jira —
jira-agent, wiki — eva-agent). Агент SHALL определяться по токену: setting.tokens = {client, agents: {<модуль>: <токен>}}, недостающий токен агента хаб создаёт при старте. Хаб SHALL для каждого агента отдельно:
- выдавать в
claimтолько команды типов его модуля, с одной командой в полёте на агента (агенты работают параллельно); - хранить строку
agent_status(ключ — имя агента); - держать опубликованный релиз
release/<модуль>/и состояние самообновления; - отдавать в
GET /agent/settingsключи ядра и ключи для агента только своего модуля; - пускать на маршруты модуля со scope
agentтолько агента этого модуля (токен другого агента — 401).
Миграция v7 SHALL сохранить прежний агентский токен как токен агента jira, перенести строку agent_status в агента
jira и прежнюю публикацию release/agent.py в release/jira/. jira-agent v14 SHALL работать без обновления.
Scenario: jira-agent после выкатки
- WHEN хаб v6 с агентским токеном T и публикацией v14 обновлён до v7, jira-agent v14 шлёт
claimс токеном T - THEN 200; ответ содержит
agent_release {version: 14, …};GET /agentпоказывает агентаjiraс версией 14
Scenario: Агенты не берут чужие команды
- WHEN в очереди пакет 1 с
ensure_issueи пакет 2 сwiki_sync, обаqueued; агентwikiшлётclaim - THEN выдан
wiki_sync; следующийclaimагентаjiraполучаетensure_issue, хотяwiki_syncещёclaimed
Scenario: Чужой маршрут агента
- WHEN токеном агента
wikiвызванPOST /agent/state - THEN 401, зеркало не меняется
Scenario: Настройки только своего модуля
- WHEN токеном агента
wikiвызванGET /agent/settings - THEN в ответе есть
wiki_pacingиsettings_version, ключей jira (project_key,link_types) нет