From 0f433088b703a87622b85937bf144950f56a44cc Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Thu, 14 Feb 2019 14:28:55 +0100 Subject: [PATCH] parse netconf interfaces & cache --- inventory_provider/tasks/worker.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 075660cb..1830053b 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -305,6 +305,21 @@ def refresh_interface_address_lookups(hostname, netconf): juniper.interface_addresses(netconf)) +def refresh_juniper_interface_list(hostname, netconf): + logger = logging.getLogger(__name__) + logger.debug( + 'removing cached netconf-interfaces for %r' % hostname) + + r = get_redis(InventoryTask.config) + for k in r.keys('netconf-interfaces:%s:*' % hostname): + r.delete(k) + + for ifc in juniper.list_interfaces(netconf): + r.set( + 'netconf-interfaces:%s:%s' % (hostname, ifc['name']), + json.dumps(ifc)) + + @app.task(base=InventoryTask, bind=True) def reload_router_config(self, hostname): logger = logging.getLogger(__name__) @@ -359,6 +374,7 @@ def reload_router_config(self, hostname): refresh_ix_public_peers(hostname, netconf_doc) refresh_vpn_rr_peers(hostname, netconf_doc) refresh_interface_address_lookups(hostname, netconf_doc) + refresh_juniper_interface_list(hostname, netconf_doc) clear_cached_classifier_responses(hostname) # load snmp indexes -- GitLab