From acb62b0b6ac9b59e73306bdde9a0ff2631617f4a Mon Sep 17 00:00:00 2001 From: Robert Latta <robert.latta@geant.org> Date: Wed, 17 Jul 2019 11:39:50 +0000 Subject: [PATCH] reduced related-services info to name and status; added top-level-services to related services --- inventory_provider/routes/classifier.py | 29 ++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py index fb09dad0..afc9bcdb 100644 --- a/inventory_provider/routes/classifier.py +++ b/inventory_provider/routes/classifier.py @@ -73,11 +73,35 @@ def get_juniper_link_info(source_equipment, interface): result = result.decode('utf-8') else: result = {} + top_level_services = [] + + def _get_top_level_services(circuit_id): + tls = [] + results = r.get("opsdb:services:children:{}".format(circuit_id)) + if results: + results = json.loads(results.decode('utf-8')) + + for c in results: + if circuit_id == c['child_circuit_id']: + tls.append( + {'name': c['parent_circuit'], + 'status': c['parent_circuit_status']}) + else: + temp_parents = \ + _get_top_level_services(c['child_circuit_id']) + if not temp_parents: + tls.append( + {'name': c['parent_circuit'], + 'status': c['parent_circuit_status']}) + tls.extend(temp_parents) + return tls services = r.get( 'opsdb:interface_services:%s:%s' % (source_equipment, interface)) if services: result['services'] = json.loads(services.decode('utf=8')) + for s in result['services']: + top_level_services.extend(_get_top_level_services(s['id'])) ifc_info = r.get( 'netconf-interfaces:%s:%s' % (source_equipment, interface)) @@ -90,10 +114,13 @@ def get_juniper_link_info(source_equipment, interface): % (source_equipment, related)) if rs: for s in json.loads(rs.decode('utf-8')): - yield s + top_level_services.extend( + _get_top_level_services(s['id'])) + yield {'name': s['name'], 'status': s['status']} related_services = list(_related_services()) if related_services: + related_services.extend(top_level_services) result['related-services'] = related_services if not result: -- GitLab