diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py index 9ac5bbe036863ecf40d704fc2ed69dbad16fd6ac..2280f6e0211a4945e5a5feed19fcad4fd0b3ecc7 100644 --- a/inventory_provider/juniper.py +++ b/inventory_provider/juniper.py @@ -313,11 +313,9 @@ def load_routers_from_netdash(url): """ r = requests.get(url=url) r.raise_for_status() - - neteng_routers = set([ + return [ l.strip() for l in r.text.splitlines() if l.strip() - ]) - return list(neteng_routers) + ] def local_interfaces( diff --git a/inventory_provider/tasks/data.py b/inventory_provider/tasks/data.py index 278f2721bd457854966f119314783eb10664b3fa..4c2b2e847769af3f329c3a1ff43ada10f1f102bd 100644 --- a/inventory_provider/tasks/data.py +++ b/inventory_provider/tasks/data.py @@ -105,11 +105,12 @@ def build_service_interface_user_list(config): def derive_router_hostnames(config): r = get_next_redis(config) - junosspace_equipment = set() - for k in r.keys('junosspace:*'): - m = re.match('^junosspace:(.*)$', k.decode('utf-8')) - assert m - junosspace_equipment.add(m.group(1)) + + routers = r.get('netdash') + assert routers + junosspace_equipment = json.loads(routers.decode('utf-8')) + assert isinstance(junosspace_equipment, (list, tuple)) + junosspace_equipment = set(junosspace_equipment) opsdb_equipment = set() for k in r.scan_iter('opsdb:interface_services:*'): diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index d00a07f9d96a7ab05c79853e373d260fcd0c9bc3..4042331c6fbd510d3d5fcf8edee1b5044add372d 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -268,36 +268,25 @@ def update_neteng_managed_device_list(self): self.update_state( state=states.STARTED, meta={ - 'task': 'update_junosspace_device_list', - 'message': 'querying junosspace for managed routers' + 'task': 'update_neteng_managed_device_list', + 'message': 'querying netdash for managed routers' }) - r = get_next_redis(InventoryTask.config) - - routers = {} - for d in juniper.load_routers_from_junosspace( - InventoryTask.config['junosspace']): - routers['junosspace:' + d['hostname']] = json.dumps(d).encode('utf-8') + routers = list(juniper.load_routers_from_netdash( + InventoryTask.config['managed-routers'])) self.update_state( state=states.STARTED, meta={ - 'task': 'update_junosspace_device_list', - 'message': 'found %d routers, saving details' % len(routers) + 'task': 'update_neteng_managed_device_list', + 'message': f'found {len(routers)} routers, saving details' }) - rp = r.pipeline() - for k in r.scan_iter('junosspace:*'): - rp.delete(k) - rp.execute() - - rp = r.pipeline() - for k, v in routers.items(): - rp.set(k, v) - rp.execute() + r = get_next_redis(InventoryTask.config) + r.set('netdash', json.dumps(routers).encode('utf-8')) return { - 'task': 'update_junosspace_device_list', + 'task': 'update_neteng_managed_device_list', 'message': 'saved %d managed routers' % len(routers) }