From f30caae2507e9ea53271d490390ca9458399c71c Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Tue, 25 Jun 2024 20:23:38 +0200 Subject: [PATCH] DBOARD3-965 workaround --- inventory_provider/nokia.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/inventory_provider/nokia.py b/inventory_provider/nokia.py index 065c9be4..f48cbfa7 100644 --- a/inventory_provider/nokia.py +++ b/inventory_provider/nokia.py @@ -3,6 +3,7 @@ import re from ncclient import manager, xml_ +from lxml import etree logger = logging.getLogger(__name__) @@ -236,15 +237,16 @@ def get_lags_config(netconf_config): def get_interfaces_config(netconf_config): + def _get_address_node_info(_e): + # HACKHACK: quick workaround for DBOARD3-965 + # TODO: fix this properly + yield from _e.xpath('n:address', namespaces=NS) + yield from _e.xpath('n:primary', namespaces=NS) + def _get_ip_address(e): - for details_parent in e: - # example element - # <primary> # details_parent - not always primary - # <address>62.40.119.9</address> - # <prefix-length>32</prefix-length> - # </primary> - address = details_parent[0].text - prefix_length = details_parent[1].text + for _address_elem in _get_address_node_info(e): + address = _address_elem[0].text + prefix_length = _address_elem[1].text ip_string = f'{address}/{prefix_length}' yield ip_string @@ -263,6 +265,7 @@ def get_interfaces_config(netconf_config): if admin_state is not None: details["admin-state"] = admin_state.text + for element in interface.xpath('n:ipv4', namespaces=NS): details["ipv4"].extend(_get_ip_address(element)) -- GitLab