diff --git a/inventory_provider/nokia.py b/inventory_provider/nokia.py index 2db2d41432b8c672e043dcd187b6e430b911bccc..6cb7a3bced74bd788479dc1f316dd5c5d3415e91 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 5901a8923caa45271837ac57b13d5066798788d0..f4f364289b6803e1dcabb6dd1f7adf0855015741 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 607135b0d8d2c0bedcb057f191fbedac7c570dd4..7b50498a322856dcfdb0e98db0b6438cd1c51074 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 4559ef910a8ecd15930aeeb2f09b89c4c105f502..693584c2a762ea94b4ecfad94d766615174dcbd8 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)