Source code for karrot.burrow.controllers

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
 :synopsis: Burrow Blueprint

 Main application endpoint called by Burrow
"""

# Import flask dependencies
from structlog import get_logger
from flask import Blueprint, request, jsonify, current_app as app

# Define a blueprint
burrow = Blueprint("burrow", __name__, url_prefix="/burrow")
logger = get_logger()

################################################################################
# home blueprint functions
################################################################################


[docs]@burrow.route("", methods=["POST"]) def webhook_handler(): """ Process an incoming event from Burrow and call ``event_handler()`` to process it. :param str event: A valid Burrow Json event POSTed to this endpoint """ data = request.get_json() logger.debug(f"Hit on /burrow endpoint with {data}") # TODO Deal with partial notifier failures with different return codes event_handler(data) return jsonify(data)
[docs]def event_handler(event): """ For each enabled reporter, call the ``process(event)`` function. If ``prometheus`` is enabled, it tracks the reporter update. :param str event: A valid Burrow Json event """ prom = app.config["REPORTERS"].get("prometheus", None) for _, reporter in app.config["REPORTERS"].items(): reporter.process(event) if prom: prom.stats(reporter)