From 31ea6de4bc52a686509a23e213a858446ba92336 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Fri, 23 Aug 2019 14:42:34 +0200 Subject: [PATCH] add parsing of netconf 'logical-systems' xpath: //configuration/logical-systems/interfaces/interface (DBOARD3-150) --- inventory_provider/juniper.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py index 57538889..2925b707 100644 --- a/inventory_provider/juniper.py +++ b/inventory_provider/juniper.py @@ -228,13 +228,24 @@ def list_interfaces(netconf_config): return ifc + def _units(base_name, node): + for u in node.xpath('./unit'): + unit_info = _ifc_info(u) + unit_info['name'] = "%s.%s" % (base_name, unit_info['name']) + yield unit_info + for i in netconf_config.xpath('//configuration/interfaces/interface'): info = _ifc_info(i) yield info - for u in i.xpath('./unit'): - unit_info = _ifc_info(u) - unit_info['name'] = "%s.%s" % (info['name'], unit_info['name']) - yield unit_info + for u in _units(info['name'], i): + yield u + + for i in netconf_config.xpath( + '//configuration/logical-systems/interfaces/interface'): + name = i.find('name') + assert name is not None, 'expected interface ''name'' child element' + for u in _units(name.text, i): + yield u def list_bgp_routes(netconf_config): -- GitLab