diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py index e1348600ecdccdb4dc222b070edd5c67ef77dd80..e76463eefdde5a68de7a8c2d0479f8294f9701ec 100644 --- a/inventory_provider/juniper.py +++ b/inventory_provider/juniper.py @@ -207,19 +207,23 @@ def list_interfaces(netconf_config): return ifc - def _units(base_name, node): - for u in node.xpath('./unit'): - if u.get('inactive', None) == 'inactive': + def _inactive(interface_node): + return interface_node.get('inactive', None) == 'inactive' + + def _units(base_name, interface_node): + for u in interface_node.xpath('./unit'): + if _inactive(u): continue 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'): + if _inactive(i): + continue info = _ifc_info(i) yield info - for u in _units(info['name'], i): - yield u + yield from _units(info['name'], i) for i in netconf_config.xpath( '//configuration/logical-systems/interfaces/interface'):