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