From 308ad5d8d21a5df1d55966943dd4f353b08b41c3 Mon Sep 17 00:00:00 2001
From: Pelle Koster <pelle.koster@geant.org>
Date: Thu, 22 Aug 2024 07:40:39 +0200
Subject: [PATCH] DBOARD3-1005: small fix to using ils data snapshot

---
 inventory_provider/db/ims_data.py | 15 +++++++++++++-
 test/test_ims_data.py             | 33 +++++++++++++++----------------
 2 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/inventory_provider/db/ims_data.py b/inventory_provider/db/ims_data.py
index acecb260..3675d6a9 100644
--- a/inventory_provider/db/ims_data.py
+++ b/inventory_provider/db/ims_data.py
@@ -73,9 +73,22 @@ SITE_LOCATION_SCHEMA = {
 }
 
 
+def _transform_key(key):
+    if key == "null":
+        return None
+    try:
+        return int(key)
+    except ValueError:
+        return key
+
+
 def get_flexils_by_circuitid(ds: IMS):
     import pathlib
-    return json.loads((pathlib.Path(__file__).parent / 'flexils_data.json').read_text())
+
+    raw_data = json.loads(
+        (pathlib.Path(__file__).parent / "flexils_data.json").read_text()
+    )
+    return {_transform_key(k): v for k, v in raw_data.items()}
 
     by_circuit = defaultdict(list)
     found_keys = set()
diff --git a/test/test_ims_data.py b/test/test_ims_data.py
index 2121d14c..46889401 100644
--- a/test/test_ims_data.py
+++ b/test/test_ims_data.py
@@ -10,7 +10,6 @@ from inventory_provider.db.ims_data import lookup_lg_routers, \
     get_port_id_services, get_port_details, \
     get_circuit_hierarchy, get_ids_and_sids, NODE_LOCATION_SCHEMA, \
     get_flexils_by_circuitid, SITE_LOCATION_SCHEMA, get_site_locations
-import pytest
 
 
 def _json_test_data(filename):
@@ -407,7 +406,6 @@ def test_get_circuit_ids_and_sids(mocker):
     assert res == expected_response
 
 
-@pytest.mark.xfail(reason="Temporary using ims bypass for flexils")
 def test_get_flexils_by_circuit_id(mocker):
     ims = mocker.patch('inventory_provider.db.ims.IMS')
     ims.return_value.get_all_entities.return_value = \
@@ -447,22 +445,23 @@ def test_get_flexils_by_circuit_id(mocker):
                 "customproperties": {}
             }
         ]
-    expected_result = {
-        702203: [
-            {
-                'node_name': 'CAM01-MTC6-3',
-                'full_port_name': '1-A-1-S1-1',
-                'key': 'CAM01-MTC6-3:1-A-1-S1-1'
-            },
-            {
-                'node_name': 'CAM01-MTC6-3',
-                'full_port_name': '1-A-1-L1-1',
-                'key': 'CAM01-MTC6-3:1-A-1-L1-1'
-            }
-        ]
-    }
+    # expected_result = {
+    #     702203: [
+    #         {
+    #             'node_name': 'CAM01-MTC6-3',
+    #             'full_port_name': '1-A-1-S1-1',
+    #             'key': 'CAM01-MTC6-3:1-A-1-S1-1'
+    #         },
+    #         {
+    #             'node_name': 'CAM01-MTC6-3',
+    #             'full_port_name': '1-A-1-L1-1',
+    #             'key': 'CAM01-MTC6-3:1-A-1-L1-1'
+    #         }
+    #     ]
+    # }
 
     ds = inventory_provider.db.ims.IMS(
         'dummy_base', 'dummy_username', 'dummy_password')
     res = get_flexils_by_circuitid(ds)
-    assert res == expected_result
+    assert all(isinstance(k, (int, type(None))) for k in res)
+    # assert res == expected_result
-- 
GitLab