From 5e06b8bd4e0faa82ee3bdf3190262ef13089cb23 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Mon, 11 Feb 2019 13:19:33 +0100 Subject: [PATCH] add reverse ip lookups to cache --- inventory_provider/juniper.py | 16 ++++++++++++++++ inventory_provider/tasks/worker.py | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py index c0b0f87b..468eef55 100644 --- a/inventory_provider/juniper.py +++ b/inventory_provider/juniper.py @@ -292,6 +292,22 @@ def vpn_rr_peers(netconf_config): neighbor['peer-as'] = int(r.find('peer-as').text) yield neighbor + +def interface_addresses(netconf_config): + """ + yields a list of all distinct interface addresses + :param netconf_config: + :return: + """ + for ifc in list_interfaces(netconf_config): + for address in ifc['ipv4'] + ifc['ipv6']: + yield { + "name": ipaddress.ip_interface(address).ip.exploded, + "interface address": address, + "interface name": ifc['name'] + } + + # note for enabling vrr data parsing ... # def fetch_vrr_config(hostname, ssh_params): # diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 96917adf..cf6d3e04 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -298,6 +298,13 @@ def refresh_vpn_rr_peers(hostname, netconf): juniper.vpn_rr_peers(netconf)) +def refresh_interface_address_lookups(hostname, netconf): + _refresh_peers( + hostname, + 'reverse_interface_addresses', + juniper.interface_addresses(netconf)) + + @app.task(base=InventoryTask, bind=True) def reload_router_config(self, hostname): logger = logging.getLogger(__name__) @@ -351,6 +358,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) clear_cached_classifier_responses(hostname) # load snmp indexes -- GitLab