- Alembic 005: таблицы irm_alerts и incident_alert_links - Модуль alerts: API/UI, Ack/Resolve, привязка к инциденту через alert_ids - Вебхук Grafana: одна транзакция ingress + irm_alerts; разбор payload в grafana_payload - По умолчанию инцидент из вебхука не создаётся (AUTO_INCIDENT_FROM_ALERT) - Документация IRM_GRAFANA_PARITY.md, обновления IRM.md и CHANGELOG Made-with: Cursor
27 lines
840 B
Python
27 lines
840 B
Python
"""Парсинг полей из тела вебхука Grafana."""
|
|
|
|
from onguard24.ingress.grafana_payload import extract_alert_row_from_grafana_body
|
|
|
|
|
|
def test_extract_title_and_severity_from_unified() -> None:
|
|
body = {
|
|
"title": "RuleName",
|
|
"alerts": [
|
|
{
|
|
"labels": {"severity": "critical", "alertname": "X"},
|
|
"fingerprint": "abc",
|
|
}
|
|
],
|
|
}
|
|
title, sev, labels, fp = extract_alert_row_from_grafana_body(body)
|
|
assert title == "RuleName"
|
|
assert sev == "critical"
|
|
assert labels.get("alertname") == "X"
|
|
assert fp == "abc"
|
|
|
|
|
|
def test_extract_empty_title_uses_alertname() -> None:
|
|
body = {"alerts": [{"labels": {"alertname": "HostDown"}}]}
|
|
title, _, _, _ = extract_alert_row_from_grafana_body(body)
|
|
assert title == "HostDown"
|