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]
|
## [Unreleased]
|
||||||
|
|
||||||
|
- add grafana formatter
|
||||||
- add formatted_body to bypass markdown with direct
|
- 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)
|
[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
|
- allow "key" to be passed as a parameter
|
||||||
|
|
|
@ -16,7 +16,7 @@ from nio import AsyncClient
|
||||||
from nio.exceptions import LocalProtocolError
|
from nio.exceptions import LocalProtocolError
|
||||||
from nio.responses import RoomSendError
|
from nio.responses import RoomSendError
|
||||||
|
|
||||||
from . import conf
|
from . import conf, formatters
|
||||||
|
|
||||||
ERROR_MAP = {"M_FORBIDDEN": HTTPStatus.FORBIDDEN}
|
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:
|
if "key" in request.rel_url.query and "key" not in data:
|
||||||
data["key"] = request.rel_url.query["key"]
|
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"]):
|
if not all(key in data for key in ["body", "key"]):
|
||||||
return create_json_response(
|
return create_json_response(
|
||||||
HTTPStatus.BAD_REQUEST, "Missing body and/or API key property"
|
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