From 60ec6911fd1fb3d8dc3f7b58dfb2429e203fe0a3 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Sun, 7 Apr 2019 17:06:37 +0200
Subject: [PATCH] moved infinera classifier blueprint routes into classifier

---
 inventory_provider/__init__.py                |  4 --
 inventory_provider/routes/classifier.py       | 44 +++++++++++++
 .../routes/infinera_classifier.py             | 66 -------------------
 test/test_infinera_classifier.py              |  2 +-
 4 files changed, 45 insertions(+), 71 deletions(-)
 delete mode 100644 inventory_provider/routes/infinera_classifier.py

diff --git a/inventory_provider/__init__.py b/inventory_provider/__init__.py
index a4eadc4c..024fac84 100644
--- a/inventory_provider/__init__.py
+++ b/inventory_provider/__init__.py
@@ -33,10 +33,6 @@ def create_app():
     from inventory_provider.routes import classifier
     app.register_blueprint(classifier.routes, url_prefix='/classifier')
 
-    from inventory_provider.routes import infinera_classifier
-    app.register_blueprint(
-        infinera_classifier.routes, url_prefix='/infinera-classifier')
-
     from inventory_provider.routes import poller
     app.register_blueprint(poller.routes, url_prefix='/poller')
 
diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py
index c971ae49..e7b1ed6e 100644
--- a/inventory_provider/routes/classifier.py
+++ b/inventory_provider/routes/classifier.py
@@ -235,3 +235,47 @@ def peer_info(address):
         r.set(cache_key, result.encode('utf-8'))
 
     return Response(result, mimetype="application/json")
+
+
+@routes.route("/infinera-lambda-info/<source_equipment>/<path:interface>",
+              methods=['GET', 'POST'])
+@common.require_accepts_json
+def get_trap_metadata(source_equipment, interface):
+    r = common.get_redis()
+
+    cache_key = 'classifier:infinera:cache:%s:%s' % (
+        source_equipment, interface)
+    result = r.get(cache_key)
+
+    if result:
+        result = result.decode('utf-8')
+    else:
+        result = {}
+
+        services = r.get(
+            'opsdb:interface_services:%s:%s' % (source_equipment, interface))
+        if services:
+            result['services'] = json.loads(services.decode('utf=8'))
+            geant_lambdas = []
+            for s in result['services']:
+                gl = r.get('opsdb:geant_lambdas:%s' % s['name'])
+                if gl:
+                    t_gl = json.loads(gl.decode('utf=8'))
+                    t_gl['status'] = t_gl['status'].lower()
+                    geant_lambdas.append(t_gl)
+
+            if geant_lambdas:
+                result['geant-lambdas'] = geant_lambdas
+
+        if not result:
+            return Response(
+                response="no available info for {} {}".format(
+                    source_equipment, interface),
+                status=404,
+                mimetype="text/html")
+
+        result = json.dumps(result)
+        # cache this data for the next call
+        r.set(cache_key, result.encode('utf-8'))
+
+    return Response(result, mimetype="application/json")
diff --git a/inventory_provider/routes/infinera_classifier.py b/inventory_provider/routes/infinera_classifier.py
deleted file mode 100644
index e522811f..00000000
--- a/inventory_provider/routes/infinera_classifier.py
+++ /dev/null
@@ -1,66 +0,0 @@
-import json
-
-from inventory_provider.routes import common
-
-from flask import Blueprint, Response
-
-
-routes = Blueprint("inventory-data-inf-classifier-support-routes", __name__)
-
-
-@routes.errorhandler(500)
-def handle_500_error(error):
-    return Response(
-       response=str(error),
-       status=500)
-
-
-@routes.errorhandler(422)
-def handle_422_error(error):
-    return Response(
-       response=str(error),
-       status=422)
-
-
-@routes.route("/trap-metadata/<source_equipment>/<path:interface>",
-              methods=['GET', 'POST'])
-@common.require_accepts_json
-def get_trap_metadata(source_equipment, interface):
-    r = common.get_redis()
-
-    cache_key = 'classifier:infinera:cache:%s:%s' % (source_equipment,
-                                                     interface)
-    result = r.get(cache_key)
-
-    if result:
-        result = result.decode('utf-8')
-    else:
-        result = {}
-
-        services = r.get(
-            'opsdb:interface_services:%s:%s' % (source_equipment, interface))
-        if services:
-            result['services'] = json.loads(services.decode('utf=8'))
-            geant_lambdas = []
-            for s in result['services']:
-                gl = r.get('opsdb:geant_lambdas:%s' % s['name'])
-                if gl:
-                    t_gl = json.loads(gl.decode('utf=8'))
-                    t_gl['status'] = t_gl['status'].lower()
-                    geant_lambdas.append(t_gl)
-
-            if geant_lambdas:
-                result['geant-lambdas'] = geant_lambdas
-
-        if not result:
-            return Response(
-                response="no available info for {} {}".format(
-                    source_equipment, interface),
-                status=404,
-                mimetype="text/html")
-
-        result = json.dumps(result)
-        # cache this data for the next call
-        r.set(cache_key, result.encode('utf-8'))
-
-    return Response(result, mimetype="application/json")
diff --git a/test/test_infinera_classifier.py b/test/test_infinera_classifier.py
index 81d36d23..591b2c0d 100644
--- a/test/test_infinera_classifier.py
+++ b/test/test_infinera_classifier.py
@@ -88,7 +88,7 @@ INFINERA_LINK_METADATA = {
 
 def test_trap_metadata(client_with_mocked_data):
     rv = client_with_mocked_data.get(
-        '/infinera-classifier/trap-metadata/LON01-DTNX10-1/1-B-2-1-3',
+        '/classifier/infinera-lambda-info/LON01-DTNX10-1/1-B-2-1-3',
         headers=DEFAULT_REQUEST_HEADERS)
     assert rv.status_code == 200
     assert rv.is_json
-- 
GitLab