From 9599a175ed1bbb6ada3b83ea7a1dde5e5e892ca8 Mon Sep 17 00:00:00 2001 From: Robert Latta <robert.latta@geant.org> Date: Fri, 21 Aug 2020 16:26:59 +0000 Subject: [PATCH] added job to update redis ims:interface_service info --- inventory_provider/tasks/ims_worker.py | 36 ++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/inventory_provider/tasks/ims_worker.py b/inventory_provider/tasks/ims_worker.py index 87ee77be..1da774f6 100644 --- a/inventory_provider/tasks/ims_worker.py +++ b/inventory_provider/tasks/ims_worker.py @@ -3,6 +3,7 @@ import json import logging import subprocess import tempfile +from collections import defaultdict from datetime import datetime from enum import IntFlag from pathlib import Path @@ -21,6 +22,41 @@ environment.setup_logging() logger = logging.getLogger(__name__) +@app.task( + base=InventoryTask, bind=True, name='update_interfaces_to_services_ims') +@log_task_entry_and_exit +def update_interfaces_to_services_ims(self, use_current=False): + interface_services = defaultdict(list) + + c = InventoryTask.config["ims"] + ds = IMS(c['api'], c['username'], c['password']) + + for service in ims_data.get_interface_services(ds): + equipment_interface = '%s:%s' % ( + service['equipment'], service['interface_name']) + interface_services[equipment_interface].append(service) + + + if use_current: + r = get_current_redis(InventoryTask.config) + # scan with bigger batches, to mitigate network latency effects + else: + r = get_next_redis(InventoryTask.config) + + rp = r.pipeline() + # scan with bigger batches, to mitigate network latency effects + for key in r.scan_iter('ims:interface_services:*', count=1000): + rp.delete(key) + rp.execute() + + rp = r.pipeline() + for equipment_interface, services in interface_services.items(): + rp.set( + f'ims:interface_services:{equipment_interface}', + json.dumps(services)) + rp.execute() + + @app.task(base=InventoryTask, bind=True, name='update_circuit_hierarchy_ims') @log_task_entry_and_exit def update_circuit_hierarchy_ims(self, use_current=False): -- GitLab