From 8c799a7339b50e82e4eb8f9d76c1418089716109 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Sun, 3 Feb 2019 20:45:24 +0100 Subject: [PATCH] handle new redis schema format --- inventory_provider/routes/data.py | 42 +++++++++++++++---------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/inventory_provider/routes/data.py b/inventory_provider/routes/data.py index ef96a442..ec40db53 100644 --- a/inventory_provider/routes/data.py +++ b/inventory_provider/routes/data.py @@ -1,5 +1,5 @@ import json -import pkg_resources +import re from flask import Blueprint, jsonify, Response, current_app from lxml import etree @@ -11,7 +11,6 @@ from inventory_provider.routes import common routes = Blueprint("inventory-data-query-routes", __name__) - @routes.route("/routers", methods=['GET', 'POST']) @common.require_accepts_json def routers(): @@ -19,9 +18,12 @@ def routers(): r = redis.StrictRedis( host=redis_config["hostname"], port=redis_config["port"]) - return Response( - json.dumps(list([k.decode("utf-8") for k in r.keys("*")])), - mimetype="application/json") + result = [] + for k in r.keys('netconf:*'): + m = re.match('^netconf:(.+)$', k.decode('utf-8')) + assert m + result.append(m.group(1)) + return jsonify(result) @routes.route("/interfaces/<hostname>", methods=['GET', 'POST']) @@ -47,9 +49,7 @@ def router_interfaces(hostname): status=404, mimetype="text/html") - return Response( - json.dumps(interfaces), - mimetype="application/json") + return jsonify(interfaces) @routes.route("/snmp/<hostname>", methods=['GET', 'POST']) @@ -77,9 +77,7 @@ def snmp_ids(hostname): result = [ {'index': i['index'], 'name': _ifc_name(i)} for i in ifc_data] - return Response( - json.dumps(result), - mimetype="application/json") + return jsonify(result) @routes.route("/bgp/<hostname>", methods=['GET', 'POST']) @@ -105,9 +103,7 @@ def bgp_configs(hostname): status=404, mimetype="text/html") - return Response( - json.dumps(routes), - mimetype="application/json") + return jsonify(routes) @routes.route("/interfaces/status/<hostname>/<path:interface>", @@ -115,14 +111,15 @@ def bgp_configs(hostname): @common.require_accepts_json def interface_statuses(hostname, interface): r = common.get_redis() - result = r.hget("interface_statuses", - "{}::{}".format(hostname, interface)) - if not result: + status = r.get( + 'alarmsdb:interface_status:%s:%s' + % (hostname, interface)) + if not status: return Response( response="no available info for {} {}".format(hostname, interface), status=404, mimetype="text/html") - return jsonify({"status": result.decode('utf-8')}) + return jsonify({"status": status.decode('utf-8')}) @routes.route("/services/<hostname>/<path:interface>", @@ -130,11 +127,12 @@ def interface_statuses(hostname, interface): @common.require_accepts_json def services_for_interface(hostname, interface): r = common.get_redis() - result = r.hget("interface_services", - "{}::{}".format(hostname, interface)) - if not result: + services = r.get( + 'opsdb:interface_services:%s:%s' + % (hostname, interface)) + if not services: return Response( response="no available info for {} {}".format(hostname, interface), status=404, mimetype="text/html") - return jsonify(json.loads(result.decode('utf-8'))) + return jsonify(json.loads(services.decode('utf-8'))) -- GitLab