From c3628c18d15ff00ae1c1147c5c233befe6bf9fe0 Mon Sep 17 00:00:00 2001
From: Robert Latta <robert.latta@geant.org>
Date: Tue, 16 Jul 2024 16:08:49 +0100
Subject: [PATCH] DBOARD3-971: handle new interface format

---
 inventory_provider/routes/classifier.py |  2 +-
 test/test_classifier_routes.py          | 10 ++++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py
index 4c9dcd63..61e6bdac 100644
--- a/inventory_provider/routes/classifier.py
+++ b/inventory_provider/routes/classifier.py
@@ -1013,7 +1013,7 @@ def get_coriant_info(equipment_name: str, entity_string: str) -> Response:
 
     if not result:
 
-        m = re.match(r'^(\d+\-\d+)\.(\d+)', ims_interface)
+        m = re.match(r'^(\d+\-\d+)\.((\d+)(\.\d+)*)', ims_interface)
         if not m:
             logger.error(
                 f'invalid coriant entity string format: {ims_interface}')
diff --git a/test/test_classifier_routes.py b/test/test_classifier_routes.py
index c49f7124..93a12882 100644
--- a/test/test_classifier_routes.py
+++ b/test/test_classifier_routes.py
@@ -121,12 +121,12 @@ def test_peer_not_found(client):
     assert response_data == {'locations': [], "contacts": []}
 
 
-@pytest.mark.parametrize('equipment,entity_name', [
-    ('grv3.ams.nl.geant.net', '1-1.3.1-100GbE-ODU4-TTP1'),
+@pytest.mark.parametrize('equipment,entity_name,expected_card_id,expected_port', [
+    ('grv3.ams.nl.geant.net', '1-3.3.1-Optical-10GbE-TTP', '1/3', '3.1'),
     ('bogus-hostname.with&special.char',
-     '234-2345234.7878i234crazynamewithslash/1-2.3')
+     '234-2345234.7878i234crazynamewithslash/1-2.3', '234/2345234', '7878')
 ])
-def test_coriant_info(client, equipment, entity_name):
+def test_coriant_info(client, equipment, entity_name, expected_card_id, expected_port):
     rv = client.get(
         f'/classifier/coriant-info/{equipment}/{entity_name}',
         headers=DEFAULT_REQUEST_HEADERS)
@@ -134,6 +134,8 @@ def test_coriant_info(client, equipment, entity_name):
     assert rv.is_json
     response_data = json.loads(rv.data.decode('utf-8'))
     jsonschema.validate(response_data, CORIANT_INFO_RESPONSE_SCHEMA)
+    assert response_data['card id'] == expected_card_id
+    assert response_data['port number'] == expected_port
 
 
 def test_coriant_info_not_found(client):
-- 
GitLab