Tweak pagerduty colors and log all payloads
This commit is contained in:
parent
f4a36a3ce7
commit
29757b2e7d
2 changed files with 14 additions and 4 deletions
|
|
@ -1,4 +1,6 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
from typing import Any, Dict, Optional, cast
|
from typing import Any, Dict, Optional, cast
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
|
|
@ -87,6 +89,8 @@ async def pagerduty_hook(
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_404_NOT_FOUND, detail="Unknown routing key"
|
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)
|
msg_plain, msg_formatted = pagerduty.parse_pagerduty_event(payload)
|
||||||
await matrix_client.room_send(
|
await matrix_client.room_send(
|
||||||
room_id,
|
room_id,
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,10 @@ from typing import Any, Tuple
|
||||||
|
|
||||||
def urgency_color(urgency: str) -> str:
|
def urgency_color(urgency: str) -> str:
|
||||||
if urgency == "high":
|
if urgency == "high":
|
||||||
return "#dc3545"
|
return "#dc3545" # red
|
||||||
else:
|
else:
|
||||||
return "#17a2b8"
|
return "#ffc107" # orange
|
||||||
|
# return "#17a2b8" # blue
|
||||||
|
|
||||||
|
|
||||||
def parse_pagerduty_event(payload: Any) -> Tuple[str, str]:
|
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"]
|
service_name: str = data["service"]["summary"]
|
||||||
urgency: str = data.get("urgency", "high")
|
urgency: str = data.get("urgency", "high")
|
||||||
plain = f"{status}: on {service_name}: {title} {url}"
|
plain = f"{status}: on {service_name}: {title} {url}"
|
||||||
formatted = f"<strong><font color={urgency_color(urgency)}>{status.upper()}</font></strong> on {service_name}: [{title}]({url})"
|
header_str = f"{status.upper()}[{urgency}]"
|
||||||
|
if status == "resolved":
|
||||||
|
color = "#33cc33" # green
|
||||||
|
else:
|
||||||
|
color = urgency_color(urgency)
|
||||||
|
formatted = f"<strong><font color={color}>{header_str}</font></strong> on {service_name}: [{title}]({url})"
|
||||||
return plain, formatted
|
return plain, formatted
|
||||||
|
|
||||||
payload_str = json.dumps(payload, sort_keys=True, indent=2)
|
payload_str = json.dumps(payload, sort_keys=True, indent=2)
|
||||||
return (
|
return (
|
||||||
"unhandled",
|
"unhandled",
|
||||||
f"""**unhandled pager duty event**
|
f"""**unhandled pager duty event** (this may or may not be a critical problem, please look carefully)
|
||||||
<pre><code class="language-json">{payload_str}</code></pre>
|
<pre><code class="language-json">{payload_str}</code></pre>
|
||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue