From 9aae2f8253dd97320fa158661a3330fbf0a5ac45 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Thu, 7 Feb 2019 20:12:44 +0100 Subject: [PATCH] caching of vpn rr peers --- inventory_provider/tasks/worker.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 56e0d44a..34d83a5d 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -255,6 +255,22 @@ def refresh_ix_public_peers(hostname, netconf): json.dumps(peer)) +def refresh_vpn_rr_peers(hostname, netconf): + task_logger = logging.getLogger(constants.TASK_LOGGER_NAME) + task_logger.debug( + 'removing cached vpn rr for %r' % hostname) + r = get_redis(InventoryTask.config) + for k in r.keys('vpn_rr_peer:*'): + value = json.loads(r.get(k.decode('utf-8')).decode('utf-8')) + if value['router'] == hostname: + r.delete(k) + + for peer in juniper.vpn_rr_peers(netconf): + peer['router'] = hostname + r.set( + 'vpn_rr_peer:' + peer['name'], + json.dumps(peer)) + @app.task def reload_router_config(hostname): task_logger = logging.getLogger(constants.TASK_LOGGER_NAME) @@ -268,6 +284,7 @@ def reload_router_config(hostname): else: refresh_ix_public_peers(hostname, netconf_doc) + refresh_vpn_rr_peers(hostname, netconf_doc) community = juniper.snmp_community_string(netconf_doc) if not community: -- GitLab