diff --git a/inventory_provider/routes/jobs.py b/inventory_provider/routes/jobs.py index 12f3616b6869c08b6f45f34ac5f9be0e757e258b..eddba59bffc7c10e3b66d3ac90252388caceb96b 100644 --- a/inventory_provider/routes/jobs.py +++ b/inventory_provider/routes/jobs.py @@ -48,31 +48,29 @@ def update(): # return Response("OK") -@routes.route("update-interfaces-to-services", methods=['GET']) -def update_interfaces_to_services(): - app.send_task( - 'inventory_provider.tasks.worker.update_interfaces_to_services') - return Response("OK") - - -@routes.route("update-service-hierarchy", methods=['GET']) -def update_service_hierarchy(): - app.send_task('inventory_provider.tasks.worker.update_circuit_hierarchy') - return Response("OK") - - -@routes.route("update-equipment-locations", methods=['GET']) -def update_equipment_locations(): - app.send_task('inventory_provider.tasks.worker.update_equipment_locations') - return Response("OK") +# @routes.route("update-interfaces-to-services", methods=['GET']) +# def update_interfaces_to_services(): +# app.send_task( +# 'inventory_provider.tasks.worker.update_interfaces_to_services') +# return Response("OK") +# +# +# @routes.route("update-service-hierarchy", methods=['GET']) +# def update_service_hierarchy(): +# app.send_task('inventory_provider.tasks.worker.update_circuit_hierarchy') +# return Response("OK") +# +# +# @routes.route("update-equipment-locations", methods=['GET']) +# def update_equipment_locations(): +# app.send_task('inventory_provider.tasks.worker.update_equipment_locations') +# return Response("OK") @routes.route("update-from-inventory-system", methods=['GET']) def update_from_inventory_system(): app.send_task( - 'inventory_provider.tasks.worker.update_interfaces_to_services') - app.send_task('inventory_provider.tasks.worker.update_circuit_hierarchy') - app.send_task('inventory_provider.tasks.worker.update_equipment_locations') + 'inventory_provider.tasks.worker.update_inventory_system_cache') return Response("OK") diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py index 87b41bd4dfa5beec06229df55b4ca1f6177f5f10..a069c08c0b779481326ed365deefdfb225bca8b2 100644 --- a/inventory_provider/tasks/worker.py +++ b/inventory_provider/tasks/worker.py @@ -1,7 +1,9 @@ import json import logging -from celery import bootsteps, Task +from celery import bootsteps, Task, group + + from collections import defaultdict from lxml import etree @@ -14,8 +16,10 @@ from inventory_provider.db import db, opsdb, alarmsdb from inventory_provider import snmp from inventory_provider import juniper + environment.setup_logging() +# TODO: error callback (cf. http://docs.celeryproject.org/en/latest/userguide/calling.html#linking-callbacks-errbacks) class InventoryTask(Task): @@ -142,6 +146,9 @@ def netconf_refresh_config(self, hostname): @app.task() def update_interfaces_to_services(): + logger = logging.getLogger(constants.TASK_LOGGER_NAME) + logger.error('HERE: update_interfaces_to_services') + r = get_redis(InventoryTask.config) with db.connection(InventoryTask.config["ops-db"]) as cx: services = opsdb.get_circuits(cx) @@ -221,3 +228,17 @@ def update_interface_statuses(): service["equipment"], service["interface_name"] )) + + +@app.task() +def update_inventory_system_cache(): + logger = logging.getLogger(constants.TASK_LOGGER_NAME) + logger.error('HERE: update_inventory_system_cache') + + g = group([ + update_interfaces_to_services.s(), + update_circuit_hierarchy.s(), + update_equipment_locations.s(), + update_interface_statuses.s() + ]) + g.apply_async()