diff options
Diffstat (limited to 'sanitycheck/dmaap-simulator/simulator.py')
-rw-r--r-- | sanitycheck/dmaap-simulator/simulator.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/sanitycheck/dmaap-simulator/simulator.py b/sanitycheck/dmaap-simulator/simulator.py new file mode 100644 index 0000000..3437442 --- /dev/null +++ b/sanitycheck/dmaap-simulator/simulator.py @@ -0,0 +1,47 @@ +import json +import logging as sys_logging + +from flask import Flask, request, logging +app = Flask(__name__) + +sys_logging.basicConfig(level=sys_logging.DEBUG) +logger = logging.create_logger(app) +events = [] + +@app.route("/events/unauthenticated.VES_NOTIFICATION_OUTPUT", methods=['POST']) +def event_ves_notification_output(): + return handle_new_event(request) + +@app.route("/events/unauthenticated.SEC_FAULT_OUTPUT", methods=['POST']) +def event_sec_fault_output(): + return handle_new_event(request) + +def handle_new_event(http_request): + receive_events = decode_request_data(http_request.data) + for event in receive_events: + events.append(json.loads(event)) + return {}, 200 + +@app.route("/events", methods=['GET']) +def get_events(): + return json.dumps(events), 200 + +def decode_request_data(request_data): + data = request_data.decode("utf-8") + receive_events = data.split("\n") + receive_events = receive_events[:-1] + logger.info("received events: " + str(receive_events)) + correct_events = [] + for event in receive_events: + logger.info("received event: " + str(event)) + correct_events.append(get_correct_json(event)) + return correct_events + +def get_correct_json(incorrect_json): + json_start_position = incorrect_json.find("{") + correct_json = incorrect_json[json_start_position:] + correct_json = correct_json.replace("\r", "").replace("\t", "").replace(" ", "") + return correct_json + +if __name__ == "__main__": + app.run(host='0.0.0.0', port=3904) |