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