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…
	
	Add table
		Add a link
		
	
		Reference in a new issue