From 3ba564aec0df23d2b7b18dfb2d6a1a782fb29353 Mon Sep 17 00:00:00 2001 From: Pelle Koster <pelle.koster@geant.org> Date: Wed, 12 Feb 2025 11:11:19 +0100 Subject: [PATCH] also load epipes from netconf running config --- inventory_provider/nokia.py | 10 ++++++++++ inventory_provider/tasks/worker.py | 12 ++++++++++++ .../rt0.lon.uk.lab.office.geant.net-netconf.xml | 1 + test/test_worker.py | 3 +++ 4 files changed, 26 insertions(+) diff --git a/inventory_provider/nokia.py b/inventory_provider/nokia.py index 2db2d414..6cb7a3bc 100644 --- a/inventory_provider/nokia.py +++ b/inventory_provider/nokia.py @@ -360,6 +360,16 @@ def get_interfaces_config(netconf_config): yield details +def get_epipes_config(netconf_config): + for epipe in netconf_config.xpath("configure/service/epipe"): + description = epipe.find("description") + yield { + "name": epipe.find("sap/sap-id").text, + "admin-state": _get_admin_state_from_element(epipe), + "description": description.text if description is not None else "", + } + + def _get_neighbors_by_group(neighbor_elements): neighbors_by_group = {} for neighbor in neighbor_elements: diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 5901a892..f4f36428 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -775,6 +775,7 @@ def refresh_nokia_interface_list(hostname, netconf_config, redis, lab=False): lags_by_name = {lag['name']: lag for lag in nokia.get_lags_config(netconf_config) if is_enabled(lag)} interfaces_by_name = \ {ifc['interface-name']: ifc for ifc in nokia.get_interfaces_config(netconf_config) if is_enabled(ifc)} + epipes_by_name = {epipe['name']: epipe for epipe in nokia.get_epipes_config(netconf_config) if is_enabled(epipe)} ports_to_lag = {} for lag_name, lag in lags_by_name.items(): @@ -833,6 +834,17 @@ def refresh_nokia_interface_list(hostname, netconf_config, redis, lab=False): f'{bundles_keybase}:{lag["name"]}', json.dumps(lag['ports'])) + for epipe in epipes_by_name.values(): + details = { + 'name': epipe['name'], + 'description': epipe['description'], + 'bundle': [], + 'speed': '', + 'ipv4': [], + 'ipv6': [], + } + _save_interfaces_details(details, rp) + interfaces = [] for interface in interfaces_by_name.values(): for addr in itertools.chain(interface['ipv4'], interface['ipv6']): diff --git a/test/data/nokia/rt0.lon.uk.lab.office.geant.net-netconf.xml b/test/data/nokia/rt0.lon.uk.lab.office.geant.net-netconf.xml index 607135b0..7b50498a 100644 --- a/test/data/nokia/rt0.lon.uk.lab.office.geant.net-netconf.xml +++ b/test/data/nokia/rt0.lon.uk.lab.office.geant.net-netconf.xml @@ -2314,6 +2314,7 @@ <epipe> <service-name>IMS-VC4-TEST</service-name> <admin-state>enable</admin-state> + <description>IMS-VC4-TEST description</description> <service-id>667</service-id> <customer>IMS667</customer> <vpn-id>667</vpn-id> diff --git a/test/test_worker.py b/test/test_worker.py index 4559ef91..693584c2 100644 --- a/test/test_worker.py +++ b/test/test_worker.py @@ -1000,6 +1000,9 @@ def test_refresh_nokia_interface_list(mocked_redis, data_config, load_nokia_netc for component in components_to_check: assert component['bundle'] == ['lag-1'] + epipe = 'lag-31:667' + assert interfaces[f'{keybase}{epipe}']['description'] == 'IMS-VC4-TEST description' + def test_populate_error_report_interfaces_cache(mocker, data_config, mocked_redis): r = common._get_redis(data_config) -- GitLab