From c10b5cf9dc72f3103431f427950147efd2bcd960 Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Thu, 9 Jun 2016 14:23:28 +0000
Subject: [PATCH] Task #9351: rest url to delete data for task

---
 .../lib/webservice.py                         | 30 ++++++++++++++++---
 1 file changed, 26 insertions(+), 4 deletions(-)

diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
index 221c4a04064..d6587d2a064 100755
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
@@ -50,6 +50,9 @@ from lofar.sas.resourceassignment.resourceassignmentservice.config import DEFAUL
 from lofar.mom.momqueryservice.momqueryrpc import MoMQueryRPC
 from lofar.mom.momqueryservice.config import DEFAULT_MOMQUERY_BUSNAME, DEFAULT_MOMQUERY_SERVICENAME
 from lofar.sas.resourceassignment.resourceassignmenteditor.mom import updateTaskMomDetails
+from lofar.sas.datamanagement.cleanup.rpc import CleanupRPC
+from lofar.sas.datamanagement.cleanup.config import DEFAULT_BUSNAME as DEFAULT_CLEANUP_BUSNAME
+from lofar.sas.datamanagement.cleanup.config import DEFAULT_SERVICENAME as DEFAULT_CLEANUP_SERVICENAME
 #from lofar.sas.resourceassignment.resourceassigner. import updateTaskMomDetails
 
 logger = logging.getLogger(__name__)
@@ -93,6 +96,7 @@ app.json_encoder = CustomJSONEncoder
 
 rarpc = None
 momrpc = None
+curpc = None
 radbchangeshandler = None
 
 @app.route('/')
@@ -236,6 +240,20 @@ def putTask(task_id):
             abort(404)
     abort(406)
 
+@app.route('/rest/tasks/<int:task_id>/cleanup', methods=['DELETE'])
+def cleanupTaskData(task_id):
+    try:
+        task = rarpc.getTask(task_id)
+
+        if not task:
+            abort(404, 'No such task (id=%s)' % task_id)
+
+        result = curpc.removeTaskData(task['otdb_id'])
+        logger.info(result)
+        return jsonify(result)
+    except Exception as e:
+        abort(500)
+
 @app.route('/rest/tasks/<int:task_id>/resourceclaims')
 def taskResourceClaims(task_id):
     return jsonify({'taskResourceClaims': rarpc.getResourceClaims(task_id=task_id, include_properties=True)})
@@ -323,6 +341,8 @@ def main():
     parser.add_option('--radb_notification_subjects', dest='radb_notification_subjects', type='string', default=DEFAULT_RADB_CHANGES_SUBJECTS, help='Subject(s) to listen for on the radb notification bus exchange on the qpid broker, default: %default')
     parser.add_option('--mom_busname', dest='mom_busname', type='string', default=DEFAULT_MOMQUERY_BUSNAME, help='Name of the bus exchange on the qpid broker on which the momservice listens, default: %default')
     parser.add_option('--mom_servicename', dest='mom_servicename', type='string', default=DEFAULT_MOMQUERY_SERVICENAME, help='Name of the momservice, default: %default')
+    parser.add_option('--cleanup_busname', dest='cleanup_busname', type='string', default=DEFAULT_CLEANUP_BUSNAME, help='Name of the bus exchange on the qpid broker on which the cleanupservice listens, default: %default')
+    parser.add_option('--cleanup_servicename', dest='cleanup_servicename', type='string', default=DEFAULT_CLEANUP_SERVICENAME, help='Name of the cleanupservice, default: %default')
     parser.add_option('-V', '--verbose', dest='verbose', action='store_true', help='verbose logging')
     (options, args) = parser.parse_args()
 
@@ -330,13 +350,15 @@ def main():
                         level=logging.DEBUG if options.verbose else logging.INFO)
 
     global rarpc
-    rarpc = RARPC(busname=DEFAULT_RADB_BUSNAME, servicename=DEFAULT_RADB_SERVICENAME, broker=options.broker)
+    rarpc = RARPC(busname=options.radb_busname, servicename=options.radb_servicename, broker=options.broker)
     global momrpc
-    momrpc = MoMQueryRPC(busname=DEFAULT_MOMQUERY_BUSNAME, servicename=DEFAULT_MOMQUERY_SERVICENAME, timeout=2.5, broker=options.broker)
+    momrpc = MoMQueryRPC(busname=options.mom_busname, servicename=options.mom_servicename, timeout=2.5, broker=options.broker)
+    global curpc
+    curpc = CleanupRPC(busname=options.cleanup_busname, servicename=options.cleanup_servicename, broker=options.broker)
     global radbchangeshandler
-    radbchangeshandler = RADBChangesHandler(DEFAULT_RADB_CHANGES_BUSNAME, broker=options.broker, momrpc=momrpc)
+    radbchangeshandler = RADBChangesHandler(options.radb_notification_busname, broker=options.broker, momrpc=momrpc)
 
-    with radbchangeshandler, rarpc, momrpc:
+    with radbchangeshandler, rarpc, curpc, momrpc:
         '''Start the webserver'''
         app.run(debug=options.verbose, threaded=True, host='0.0.0.0', port=options.port)
 
-- 
GitLab