From 76017e8760af905e82322e1ab812b1b4c4820e92 Mon Sep 17 00:00:00 2001 From: Pelle Koster <pelle.koster@geant.org> Date: Wed, 14 Aug 2024 13:18:48 +0000 Subject: [PATCH] DBOARD3-1002: Exclude all logical interfaces from the error report --- inventory_provider/routes/poller.py | 23 ++++++++++++----------- test/test_general_poller_routes.py | 4 ++++ test/test_worker.py | 10 ++-------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/inventory_provider/routes/poller.py b/inventory_provider/routes/poller.py index 284e7b71..b022ecc1 100644 --- a/inventory_provider/routes/poller.py +++ b/inventory_provider/routes/poller.py @@ -931,17 +931,18 @@ def load_error_report_interfaces( netdash_equipment = get_netdash_equipment(config, use_next_redis) def filter_interface(interface: dict): - return all( - ( - "phy" in interface["description"].lower(), - "spare" not in interface["description"].lower(), - "non-operational" not in interface["description"].lower(), - "reserved" not in interface["description"].lower(), - "test" not in interface["description"].lower(), - "dsc." not in interface["name"].lower(), - "fxp" not in interface["name"].lower(), - ) - ) + description = interface["description"].lower() + name = interface["name"].lower() + return ( + "phy" in description + and "spare" not in description + and "non-operational" not in description + and "reserved" not in description + and "test" not in description + and "dsc." not in name + and "fxp" not in name + and not re.match(r".*\.\d+$", name) + ) def transform_interface(interface: dict) -> Dict: return { diff --git a/test/test_general_poller_routes.py b/test/test_general_poller_routes.py index da419f00..9174d91e 100644 --- a/test/test_general_poller_routes.py +++ b/test/test_general_poller_routes.py @@ -511,6 +511,10 @@ def test_get_all_error_report_interfaces(client): response_routers = {ifc['router'] for ifc in response_data} assert len(response_routers) > 1, 'there should data from be lots of routers' +def test_error_report_interfaces_has_no_logical_interfaces(client): + rv = client.get("/poller/error-report-interfaces", headers=DEFAULT_REQUEST_HEADERS) + assert not [i["name"] for i in rv.json if i["name"].endswith(".1")] + def test_get_single_router_error_report_interfaces(client): rv = client.get( diff --git a/test/test_worker.py b/test/test_worker.py index 3fd325ca..8dbd8767 100644 --- a/test/test_worker.py +++ b/test/test_worker.py @@ -992,7 +992,7 @@ def test_populate_error_report_interfaces_cache(mocker, data_config, mocked_redi }, { "router": "rt0.geant.net", - "name": "lag-1.0", + "name": "lag-1", "bundle": ["ae_c"], "bundle-parents": [], "description": "PHY DESCRIPTION D", @@ -1035,12 +1035,6 @@ def test_populate_error_report_interfaces_cache(mocker, data_config, mocked_redi "description": "PHY DESCRIPTION B", "vendor": "juniper" }, - { - "router": "router_a.geant.net", - "name": "ae_a.123", - "description": "PHY DESCRIPTION C", - "vendor": "juniper" - }, { "router": "router_a.geant.net", "name": "interface_a", @@ -1051,7 +1045,7 @@ def test_populate_error_report_interfaces_cache(mocker, data_config, mocked_redi exp_nokia_router_interfaces = [ { "router": "rt0.geant.net", - "name": "lag-1.0", + "name": "lag-1", "description": "PHY DESCRIPTION D", "vendor": "nokia" } -- GitLab