diff --git a/inventory_provider/__init__.py b/inventory_provider/__init__.py index a4eadc4c3bbbc55f13e7ba88ed0c633ec87c1aea..024fac841eb30cde1e859612856db2bc2b1e1293 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 c971ae49f8cf104d02250371c06bed0a9bb46b16..e7b1ed6e22e9127d7db89dfcf5b0579ae45afd09 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 e522811f9b6a751a6d081e795dcb1831b1ae419a..0000000000000000000000000000000000000000 --- 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 81d36d2329b02446e2ba0b0a14b87e3447e4abe4..591b2c0dbf9c3cffd0c70ee19654f644986a98e9 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