diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 56e0d44a85a14e5d42d89838b0f5bcffee4b3e2e..34d83a5dd16005e2ba0d42a231c2af65cf396345 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: