diff --git a/ops_bot/main.py b/ops_bot/main.py index 5b0166f..6297cb4 100644 --- a/ops_bot/main.py +++ b/ops_bot/main.py @@ -1,4 +1,6 @@ import asyncio +import json +import logging from typing import Any, Dict, Optional, cast import uvicorn @@ -87,6 +89,8 @@ async def pagerduty_hook( raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="Unknown routing key" ) + payload_str = json.dumps(payload, sort_keys=True, indent=2) + logging.info(f"received pagerduty payload: \n {payload_str}") msg_plain, msg_formatted = pagerduty.parse_pagerduty_event(payload) await matrix_client.room_send( room_id, diff --git a/ops_bot/pagerduty.py b/ops_bot/pagerduty.py index ad430b9..2c3dea2 100644 --- a/ops_bot/pagerduty.py +++ b/ops_bot/pagerduty.py @@ -4,9 +4,10 @@ from typing import Any, Tuple def urgency_color(urgency: str) -> str: if urgency == "high": - return "#dc3545" + return "#dc3545" # red else: - return "#17a2b8" + return "#ffc107" # orange + # return "#17a2b8" # blue def parse_pagerduty_event(payload: Any) -> Tuple[str, str]: @@ -29,13 +30,18 @@ def parse_pagerduty_event(payload: Any) -> Tuple[str, str]: service_name: str = data["service"]["summary"] urgency: str = data.get("urgency", "high") plain = f"{status}: on {service_name}: {title} {url}" - formatted = f"{status.upper()} on {service_name}: [{title}]({url})" + header_str = f"{status.upper()}[{urgency}]" + if status == "resolved": + color = "#33cc33" # green + else: + color = urgency_color(urgency) + formatted = f"{header_str} on {service_name}: [{title}]({url})" return plain, formatted payload_str = json.dumps(payload, sort_keys=True, indent=2) return ( "unhandled", - f"""**unhandled pager duty event** + f"""**unhandled pager duty event** (this may or may not be a critical problem, please look carefully)
{payload_str}
""", )