From ef69940f2f55431fbbe62f00c46e988b2c6b9f3d Mon Sep 17 00:00:00 2001 From: marcsello Date: Thu, 2 Dec 2021 23:08:25 +0100 Subject: [PATCH] Fine tuned measurement recording --- birb_latency_collector/views/report_view.py | 53 +++++++++++++++++---- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/birb_latency_collector/views/report_view.py b/birb_latency_collector/views/report_view.py index 63978ea..c295df2 100644 --- a/birb_latency_collector/views/report_view.py +++ b/birb_latency_collector/views/report_view.py @@ -1,26 +1,63 @@ #!/usr/bin/env python3 -from flask import jsonify, request, abort, current_app, Response -from flask_classful import FlaskView +from flask import request, current_app, Response +from flask_classful import FlaskView, route from utils import json_required, influxdb_instance from influxdb_client import Point class ReportView(FlaskView): + @route("/link", methods=['POST']) @json_required - def post(self): + def link(self): data = request.json points = [] - for type_ in ['latency', 'queue', 'rate']: + for type_ in ['latency', 'rate']: if type_ in data['measurements']: points.append( - Point(type_) + Point(f"link_{type_}") .tag("client", data['client']) - .tag("cloud", data['cloud']) - .field("latency", data['measurements'][type_]) + .tag("site", data['site']) + .field("value", data['measurements'][type_]) ) - influxdb_instance.connection.write_api().write("alma", "alma", points) + influxdb_instance.connection.write_api().write("alma", current_app.config['INFLUXDB_V2_ORG'], points) + return Response(status=201) + + @route("/client", methods=['POST']) + @json_required + def client(self): + data = request.json + + points = [] + + for type_ in ['queue']: + if type_ in data['measurements']: + points.append( + Point(f"client_{type_}") + .tag("client", data['client']) + .field("value", data['measurements'][type_]) + ) + + influxdb_instance.connection.write_api().write("alma", current_app.config['INFLUXDB_V2_ORG'], points) + return Response(status=201) + + @route("/site", methods=['POST']) + @json_required + def site(self): + data = request.json + + points = [] + + for type_ in ['queue']: + if type_ in data['measurements']: + points.append( + Point(f"site_{type_}") + .tag("site", data['site']) + .field("value", data['measurements'][type_]) + ) + + influxdb_instance.connection.write_api().write("alma", current_app.config['INFLUXDB_V2_ORG'], points) return Response(status=201)