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