add grafana formatter
This was initially designed and implemented in #4 Co-authored-by: Sven Seeberg <mail@sven-seeberg.de>
This commit is contained in:
parent
3bebc88ee2
commit
2d232fe1f7
3 changed files with 23 additions and 1 deletions
|
@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
- add grafana formatter
|
||||
- add formatted_body to bypass markdown with direct
|
||||
[matrix-custom-HTML](https://matrix.org/docs/spec/client_server/r0.6.1#m-room-message-msgtypes)
|
||||
- allow "key" to be passed as a parameter
|
||||
|
|
|
@ -16,7 +16,7 @@ from nio import AsyncClient
|
|||
from nio.exceptions import LocalProtocolError
|
||||
from nio.responses import RoomSendError
|
||||
|
||||
from . import conf
|
||||
from . import conf, formatters
|
||||
|
||||
ERROR_MAP = {"M_FORBIDDEN": HTTPStatus.FORBIDDEN}
|
||||
|
||||
|
@ -46,6 +46,12 @@ async def handler(request):
|
|||
if "key" in request.rel_url.query and "key" not in data:
|
||||
data["key"] = request.rel_url.query["key"]
|
||||
|
||||
if "formatter" in request.rel_url.query:
|
||||
try:
|
||||
data = getattr(formatters, request.rel_url.query["formatter"])(data)
|
||||
except AttributeError:
|
||||
return create_json_response(HTTPStatus.BAD_REQUEST, "Unknown formatter")
|
||||
|
||||
if not all(key in data for key in ["body", "key"]):
|
||||
return create_json_response(
|
||||
HTTPStatus.BAD_REQUEST, "Missing body and/or API key property"
|
||||
|
|
15
matrix_webhook/formatters.py
Normal file
15
matrix_webhook/formatters.py
Normal file
|
@ -0,0 +1,15 @@
|
|||
"""Formatters for matrix webhook."""
|
||||
|
||||
|
||||
def grafana(data):
|
||||
"""Pretty-print a grafana notification."""
|
||||
text = ""
|
||||
if "title" in data:
|
||||
text = "### " + data["title"] + "\n"
|
||||
if "message" in data:
|
||||
text = text + data["message"] + "\n\n"
|
||||
if "evalMatches" in data:
|
||||
for match in data["evalMatches"]:
|
||||
text = text + "* " + match["metric"] + ": " + str(match["value"]) + "\n"
|
||||
data["body"] = text
|
||||
return data
|
Loading…
Reference in a new issue