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