From 73e3cbb3b7acbe6499ee84ab0042ebcb6fce0f33 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Thu, 4 Mar 2021 12:55:44 +0100 Subject: [PATCH] save logical-system with interface details --- inventory_provider/juniper.py | 17 ++++++++++------- test/per_router/test_juniper_data.py | 1 + 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py index e76463ee..19761764 100644 --- a/inventory_provider/juniper.py +++ b/inventory_provider/juniper.py @@ -215,7 +215,7 @@ def list_interfaces(netconf_config): if _inactive(u): continue unit_info = _ifc_info(u) - unit_info['name'] = "%s.%s" % (base_name, unit_info['name']) + unit_info['name'] = f'{base_name}.{unit_info["name"]}' yield unit_info for i in netconf_config.xpath('//configuration/interfaces/interface'): @@ -225,12 +225,15 @@ def list_interfaces(netconf_config): yield info yield from _units(info['name'], i) - 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 + for ls_node in netconf_config.xpath('//configuration/logical-systems'): + logical_system = ls_node.xpath('./name/text()') + assert logical_system, 'no logical-system name found' + for i in ls_node.xpath('.//interfaces/interface'): + name = i.xpath('./name/text()') + assert name, "expected interface 'name' child element" + for u in _units(name[0], i): + u['logical-system'] = logical_system[0] + yield u def _system_bgp_peers(system_node): diff --git a/test/per_router/test_juniper_data.py b/test/per_router/test_juniper_data.py index 34f1b35b..afc9f600 100644 --- a/test/per_router/test_juniper_data.py +++ b/test/per_router/test_juniper_data.py @@ -14,6 +14,7 @@ def test_interface_list(netconf_doc): "items": { "type": "object", "properties": { + "logical-system": {"type": "string"}, "name": {"type": "string"}, "description": {"type": "string"}, "bundle": { -- GitLab