diff --git a/inventory_provider/routes/classifier.py b/inventory_provider/routes/classifier.py index 4c9dcd63fd02262540618200656b4ff1bb009d1d..61e6bdacdf9dfc13e758eba86a98816c51f526c1 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 c49f7124d177fb598265a2d3e99a5228042cc476..93a12882c21173e5d62d5752e1772be63e50d436 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):