From 91572be9e7116d3eff293c0f46b0163807c259a3 Mon Sep 17 00:00:00 2001 From: Robert Latta <robert.latta@geant.org> Date: Thu, 20 Jun 2019 12:50:13 +0000 Subject: [PATCH] added bundle(e.g. ae10) interface is a member of --- inventory_provider/juniper.py | 6 +++++- inventory_provider/tasks/worker.py | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py index 468eef55..57538889 100644 --- a/inventory_provider/juniper.py +++ b/inventory_provider/juniper.py @@ -213,12 +213,16 @@ def list_interfaces(netconf_config): assert name is not None, "expected interface 'name' child element" ifc = { 'name': name.text, - 'description': '' + 'description': '', + 'bundle': [] } description = e.find('description') if description is not None: ifc['description'] = description.text + for b in i.iterfind(".//bundle"): + ifc['bundle'].append(b.text) + ifc['ipv4'] = e.xpath('./family/inet/address/name/text()') ifc['ipv6'] = e.xpath('./family/inet6/address/name/text()') diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 13d394e5..ab2974a1 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -337,10 +337,23 @@ def refresh_juniper_interface_list(hostname, netconf): for k in r.keys('netconf-interfaces:%s:*' % hostname): r.delete(k) + for k in r.keys('netconf-interface-bundles:%s:*' % hostname): + r.delete(k) + + all_bundles = defaultdict(list) for ifc in juniper.list_interfaces(netconf): + bundles = ifc.get('bundle', None) + for bundle in bundles: + if bundle: + all_bundles[bundle].append(ifc['name']) + r.set( 'netconf-interfaces:%s:%s' % (hostname, ifc['name']), json.dumps(ifc)) + for k, v in all_bundles.items(): + r.set( + 'netconf-interface-bundles:%s:%s' % (hostname, k), + json.dumps(v)) @app.task(base=InventoryTask, bind=True) -- GitLab