From 64217bc440f3d61effbda9d499be1f75bec0e518 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Thu, 4 Mar 2021 10:29:01 +0100
Subject: [PATCH] ignore subinterfaces of inactive interfaces

---
 inventory_provider/juniper.py | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py
index e1348600..e76463ee 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'):
-- 
GitLab