From a206d248c274b41294ea11feacf0b1185ea5d52c Mon Sep 17 00:00:00 2001
From: Robert Latta <robert.latta@geant.org>
Date: Tue, 13 Sep 2022 11:40:55 +0100
Subject: [PATCH] added ILS data to transformed data RE DBOARD3-660

---
 inventory_provider/tasks/worker.py | 39 ++++++++++++++++++++++++++++--
 1 file changed, 37 insertions(+), 2 deletions(-)

diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index d5b22a0f..0b7515ff 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -749,6 +749,7 @@ def _extract_ims_data(ims_api_url, ims_username, ims_password):
     circuit_ids_to_monitor = []
     circuit_ids_and_sids = {}
     additional_circuit_customers = {}
+    flexils_data = {}
 
     hierarchy = {}
     port_id_details = defaultdict(list)
@@ -823,6 +824,12 @@ def _extract_ims_data(ims_api_url, ims_username, ims_password):
     if exceptions:
         raise InventoryTaskError(json.dumps(exceptions, indent=2))
 
+    @log_task_entry_and_exit
+    def _populate_flexils_data():
+        nonlocal flexils_data
+        flexils_data = ims_data.get_flexils_by_circuitid(ds=_ds())
+
+
     @log_task_entry_and_exit
     def _populate_hierarchy():
         nonlocal hierarchy
@@ -848,7 +855,8 @@ def _extract_ims_data(ims_api_url, ims_username, ims_password):
         futures = {
             executor.submit(_populate_hierarchy): 'hierarchy',
             executor.submit(_populate_port_id_details): 'port_id_details',
-            executor.submit(_populate_circuit_info): 'circuit_info'
+            executor.submit(_populate_circuit_info): 'circuit_info',
+            executor.submit(_populate_flexils_data): 'flexils_data'
         }
 
         for future in concurrent.futures.as_completed(futures):
@@ -869,7 +877,8 @@ def _extract_ims_data(ims_api_url, ims_username, ims_password):
         'hierarchy': hierarchy,
         'port_id_details': port_id_details,
         'port_id_services': port_id_services,
-        'geant_nodes': geant_nodes
+        'geant_nodes': geant_nodes,
+        'flexils_data': flexils_data
     }
 
 
@@ -884,6 +893,7 @@ def transform_ims_data(data):
     port_id_services = data['port_id_services']
     circuit_ids_and_sids = data['circuit_ids_sids']
     geant_nodes = data['geant_nodes']
+    flexils_data = data['flexils_data']
 
     sid_services = defaultdict(list)
 
@@ -903,6 +913,31 @@ def transform_ims_data(data):
         d['contacts'] = sorted(list(c))
         d['planned_work_contacts'] = sorted(list(ttc))
 
+        all_ils_details = flexils_data.get(d['id'])
+        if all_ils_details:
+            for ils_details in all_ils_details:
+                pid = port_id_details.get(ils_details['key'], [])
+                pid.append({
+                    'port_id': ils_details['key'],
+                    'equipment_name': ils_details['node_name'],
+                    'interface_name': ils_details['full_port_name']
+                })
+                port_id_details[ils_details['key']] = pid
+
+                pis = port_id_services.get(ils_details['key'], [])
+                pis.append({
+                    'id': d['id'],
+                    'name': d['name'],
+                    'project': d['project'],
+                    'port_a_id': ils_details['key'],
+                    'circuit_type': d['circuit-type'],
+                    'status': d['status'],
+                    'service_type': d['product'],
+                    'contacts': d['contacts'],
+                    'planned_work_contacts': d['planned_work_contacts']
+                })
+                port_id_services[ils_details['key']] = pis
+
     def _convert_to_bits(value, unit):
         unit = unit.lower()
         conversions = {
-- 
GitLab