diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py index 221c4a040647301d59e0159405a130ba0f73ac53..d6587d2a0647a10bb2e9c2c18c592600e90fca2d 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)