From 3d000c87eafa2bcd88e38367be100502bfedb441 Mon Sep 17 00:00:00 2001
From: Robert Latta <robert.latta@geant.org>
Date: Wed, 27 Jan 2021 13:47:49 +0000
Subject: [PATCH] added routes for ims_jobs

---
 inventory_provider/routes/ims_jobs.py | 38 +++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 inventory_provider/routes/ims_jobs.py

diff --git a/inventory_provider/routes/ims_jobs.py b/inventory_provider/routes/ims_jobs.py
new file mode 100644
index 00000000..c57b686a
--- /dev/null
+++ b/inventory_provider/routes/ims_jobs.py
@@ -0,0 +1,38 @@
+import json
+import logging
+
+from distutils.util import strtobool
+from flask import Blueprint, current_app, jsonify, Response, request
+
+from inventory_provider.tasks import monitor
+from inventory_provider.tasks import ims_worker
+from inventory_provider.routes import common
+from inventory_provider.tasks.common import get_current_redis, get_latch
+
+routes = Blueprint("ims-inventory-data-job-routes", __name__)
+
+
+@routes.route('/update', methods=['GET', 'POST'])
+@common.require_accepts_json
+def update_from_ims():
+    force = request.args.get('force', default='false', type=str)
+    try:
+        force = strtobool(force)
+    except ValueError:
+        force = False
+
+    config = current_app.config['INVENTORY_PROVIDER_CONFIG']
+    r = get_current_redis(config)
+
+    if not force:
+        latch = get_latch(r)
+        if latch and latch['pending']:
+            return Response(
+                response='an update is already in progress',
+                status=503,
+                mimetype="text/html")
+
+    phase2_task_id = ims_worker.launch_refresh_cache_all(config)
+
+    r.set('classifier-cache:update-task-id', phase2_task_id.encode('utf-8'))
+    return jsonify({'task id': phase2_task_id})
-- 
GitLab