From fd4a39056fbfe2c6341e7570eac04c8f8eefd20f Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Fri, 12 Apr 2019 10:08:45 +0200
Subject: [PATCH] moved some unused routes to /testing (intention is to delete
 these)

---
 inventory_provider/routes/data.py    | 85 ++++------------------------
 inventory_provider/routes/testing.py | 85 ++++++++++++++++++++++++++++
 2 files changed, 97 insertions(+), 73 deletions(-)

diff --git a/inventory_provider/routes/data.py b/inventory_provider/routes/data.py
index 3bbe8d02..73b6c207 100644
--- a/inventory_provider/routes/data.py
+++ b/inventory_provider/routes/data.py
@@ -1,11 +1,11 @@
 import json
 import re
 
-from flask import Blueprint, jsonify, Response
-from lxml import etree
+from flask import Blueprint, jsonify, Response, current_app
 
-from inventory_provider import juniper
 from inventory_provider.routes import common
+from inventory_provider.db import db
+from inventory_provider.db import opsdb
 
 routes = Blueprint("inventory-data-query-routes", __name__)
 
@@ -41,83 +41,22 @@ def router_interfaces(hostname):
     return jsonify(interfaces)
 
 
-@routes.route("/snmp/<hostname>", methods=['GET', 'POST'])
+@routes.route("/pop/<equipment_name>", methods=['GET', 'POST'])
 @common.require_accepts_json
-def snmp_ids(hostname):
-    r = common.get_redis()
-    ifc_data_string = r.get('snmp-interfaces:' + hostname)
-    if not ifc_data_string:
+def equipment_location(equipment_name):
+    config = current_app.config['INVENTORY_PROVIDER_CONFIG']
+
+    with db.connection(config['ops-db']) as cx:
+        result = opsdb.get_equipment_location_data(cx, equipment_name)
+
+    if not result:
         return Response(
-            response="no available info for '%s'" % hostname,
+            response="no available info for {}".format(equipment_name),
             status=404,
             mimetype="text/html")
 
-    def _ifc_name(ifc):
-        if 'v4InterfaceName' in ifc:
-            return ifc['v4InterfaceName']
-        if 'v6InterfaceName' in ifc:
-            return ifc['v6InterfaceName']
-        assert False, "sanity failure: no interface name found"
-
-    ifc_data = json.loads(ifc_data_string.decode('utf-8'))
-    result = [
-        {'index': i['index'], 'name': _ifc_name(i)}
-        for i in ifc_data]
     return jsonify(result)
 
 
-@routes.route("/bgp/<hostname>", methods=['GET', 'POST'])
-@common.require_accepts_json
-def bgp_configs(hostname):
-    r = common.get_redis()
-    netconf_string = r.get('netconf:' + hostname)
-    if not netconf_string:
-        return Response(
-            response="no available info for '%s'" % hostname,
-            status=404,
-            mimetype="text/html")
 
-    routes = list(juniper.list_bgp_routes(
-        etree.XML(netconf_string.decode('utf-8'))))
-    if not routes:
-        return Response(
-            response="no interfaces found for '%s'" % hostname,
-            status=404,
-            mimetype="text/html")
 
-    return jsonify(routes)
-
-
-# TODO: remove all alarmsdb i/o, and then remove the following
-# @routes.route("/interfaces/status/<hostname>/<path:interface>",
-#               methods=['GET', 'POST'])
-# @common.require_accepts_json
-# def interface_statuses(hostname, interface):
-#     r = common.get_redis()
-#     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": status.decode('utf-8')})
-#
-#
-# @routes.route("/services/<hostname>/<path:interface>",
-#               methods=['GET', 'POST'])
-# @common.require_accepts_json
-# def services_for_interface(hostname, interface):
-#     r = common.get_redis()
-#     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(services.decode('utf-8')))
diff --git a/inventory_provider/routes/testing.py b/inventory_provider/routes/testing.py
index a611d3d1..75d0074f 100644
--- a/inventory_provider/routes/testing.py
+++ b/inventory_provider/routes/testing.py
@@ -3,6 +3,9 @@ import json
 import re
 
 from flask import Blueprint, Response, current_app, jsonify
+from lxml import etree
+
+from inventory_provider import juniper
 from inventory_provider.routes import common
 from inventory_provider.tasks import worker
 
@@ -137,3 +140,85 @@ def get_parents(child_id):
     result = r.get('opsdb:services:parents:%d' % child_id)
     # TODO: handle None (return 404)
     return jsonify(json.loads(result.decode('utf-8')))
+
+
+@routes.route("bgp/<hostname>", methods=['GET', 'POST'])
+@common.require_accepts_json
+def bgp_configs(hostname):
+    r = common.get_redis()
+    netconf_string = r.get('netconf:' + hostname)
+    if not netconf_string:
+        return Response(
+            response="no available info for '%s'" % hostname,
+            status=404,
+            mimetype="text/html")
+
+    routes = list(juniper.list_bgp_routes(
+        etree.XML(netconf_string.decode('utf-8'))))
+    if not routes:
+        return Response(
+            response="no interfaces found for '%s'" % hostname,
+            status=404,
+            mimetype="text/html")
+
+    return jsonify(routes)
+
+
+@routes.route("snmp/<hostname>", methods=['GET', 'POST'])
+@common.require_accepts_json
+def snmp_ids(hostname):
+    r = common.get_redis()
+    ifc_data_string = r.get('snmp-interfaces:' + hostname)
+    if not ifc_data_string:
+        return Response(
+            response="no available info for '%s'" % hostname,
+            status=404,
+            mimetype="text/html")
+
+    def _ifc_name(ifc):
+        if 'v4InterfaceName' in ifc:
+            return ifc['v4InterfaceName']
+        if 'v6InterfaceName' in ifc:
+            return ifc['v6InterfaceName']
+        assert False, "sanity failure: no interface name found"
+
+    ifc_data = json.loads(ifc_data_string.decode('utf-8'))
+    result = [
+        {'index': i['index'], 'name': _ifc_name(i)}
+        for i in ifc_data]
+    return jsonify(result)
+
+
+# TODO: remove all alarmsdb i/o, and then remove the following
+# @routes.route("/interfaces/status/<hostname>/<path:interface>",
+#               methods=['GET', 'POST'])
+# @common.require_accepts_json
+# def interface_statuses(hostname, interface):
+#     r = common.get_redis()
+#     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": status.decode('utf-8')})
+#
+#
+# @routes.route("/services/<hostname>/<path:interface>",
+#               methods=['GET', 'POST'])
+# @common.require_accepts_json
+# def services_for_interface(hostname, interface):
+#     r = common.get_redis()
+#     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(services.decode('utf-8')))
-- 
GitLab