From b9f7486f0dd98343a4a9ebc37f83cd037c87c2fa Mon Sep 17 00:00:00 2001 From: Robert Latta <robert.latta@geant.org> Date: Fri, 29 Jan 2021 13:51:46 +0000 Subject: [PATCH] corrected Infinera data load --- inventory_provider/db/ims_data.py | 17 ++++++--- inventory_provider/routes/ims_classifier.py | 38 --------------------- 2 files changed, 13 insertions(+), 42 deletions(-) diff --git a/inventory_provider/db/ims_data.py b/inventory_provider/db/ims_data.py index 89e40157..e48d5386 100644 --- a/inventory_provider/db/ims_data.py +++ b/inventory_provider/db/ims_data.py @@ -175,11 +175,20 @@ def get_port_details(ds: IMS): ds.get_all_entities( 'internalport', internal_port_nav_props, step_count=2000) ): - vendor = p['node']['equipmentdefinition']['name'].lower() + vendor = None + interface_name = None + try: + vendor = p['node']['equipmentdefinition']['vendor']['name'].lower() + except (TypeError, KeyError): + pass # if there become more exceptions we will need to abstract this - if vendor == 'infinera': - interface_name = f"{p['shelf']['sequencenumber']}-{p['name']}" - else: + if vendor == 'infinera' and p.get('shelfid', None): + try: + interface_name = f"{p['shelf']['sequencenumber']}-{p['name']}" + except KeyError: + pass + + if not interface_name: interface_name = p['name'] data = { 'port_id': p['id'], diff --git a/inventory_provider/routes/ims_classifier.py b/inventory_provider/routes/ims_classifier.py index f75c1766..3ec4c652 100644 --- a/inventory_provider/routes/ims_classifier.py +++ b/inventory_provider/routes/ims_classifier.py @@ -535,10 +535,6 @@ def get_trap_metadata(source_equipment: str, interface: str, circuit_id: str) \ result = { 'locations': [] } - top_level_services = [] - - - # todo - carry on from here result.update(get_interface_services_and_locs( ims_source_equipment, @@ -546,40 +542,6 @@ def get_trap_metadata(source_equipment: str, interface: str, circuit_id: str) \ r )) - services = r.get( - f'ims:interface_services:{source_equipment}:{interface}') - if services: - result['services'] = json.loads(services.decode('utf=8')) - for s in result['services']: - tls = get_top_level_services(s['id'], r) - if tls: - top_level_services.extend(tls) - if top_level_services: - result['related-services'] = top_level_services - for s in result['services']: - result['locations'].append( - build_locations( - _location_from_equipment(s['router'], r), - _location_from_equipment(s['other_end_equipment'], r)) - ) - # result['locations'] += \ - # _location_from_equipment(s['equipment'], r) - # result['locations'] += \ - # _location_from_equipment(s['other_end_equipment'], r) - gls = {tls['id']: { - 'id': tls['id'], - 'name': tls['name'], - 'status': tls['status'], - 'project': tls['project'] - } for tls in top_level_services - if tls['circuit_type'] == 'geant lambda'} - - if gls: - result['geant-lambda'] = list(gls.values())[0] - if len(gls) > 1: - logger.info(f'More than one Lambda, ' - f'IDs {[x["id"] for x in gls.values()]}') - if not result: return Response( response="no available info for {} {}".format( -- GitLab