From 801dda6ebb491490081605b05e22164175999d6f Mon Sep 17 00:00:00 2001 From: Jorrit Schaap <schaap@astron.nl> Date: Wed, 17 Aug 2016 09:33:05 +0000 Subject: [PATCH] Task #9607: get task with all properties from radb upon insert/update --- .../lib/radbchangeshandler.py | 18 ++++++++++-------- .../ResourceAssignmentEditor/lib/webservice.py | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/radbchangeshandler.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/radbchangeshandler.py index c16481807e6..0df9611f2f8 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/radbchangeshandler.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/radbchangeshandler.py @@ -44,7 +44,7 @@ CHANGE_INSERT_TYPE = 'insert' CHANGE_DELETE_TYPE = 'delete' class RADBChangesHandler(RADBBusListener): - def __init__(self, busname=DEFAULT_NOTIFICATION_BUSNAME, subjects=DEFAULT_NOTIFICATION_SUBJECTS, broker=None, momqueryrpc=None, **kwargs): + def __init__(self, busname=DEFAULT_NOTIFICATION_BUSNAME, subjects=DEFAULT_NOTIFICATION_SUBJECTS, broker=None, momqueryrpc=None, radbrpc=None, **kwargs): """ RADBChangesHandler listens on the lofar notification message bus and keeps track of all the change notifications. :param broker: valid Qpid broker host (default: None, which means localhost) @@ -61,6 +61,7 @@ class RADBChangesHandler(RADBBusListener): self._changedCondition = Condition() self._changeNumber = 0L self._momqueryrpc = momqueryrpc + self._radbrpc = radbrpc def _handleChange(self, change): '''_handleChange appends a change in the changes list and calls the onChangedCallback. @@ -77,18 +78,19 @@ class RADBChangesHandler(RADBBusListener): self._changedCondition.notifyAll() def onTaskUpdated(self, old_task, new_task): - '''onTaskUpdated is called upon receiving a TaskUpdated message. - :param task: dictionary with the updated task''' - new_task['starttime'] = new_task['starttime'].datetime() - new_task['endtime'] = new_task['endtime'].datetime() - task_change = {'changeType':CHANGE_UPDATE_TYPE, 'objectType':'task', 'value':new_task} + '''onTaskUpdated is called upon receiving a TaskUpdated message.''' + #ignore old_task and new_task, which miss some properties via this update mechanism + #get task with all expected properties via radbrpc + task = self._radbrpc.getTask(new_task['id']) + task_change = {'changeType':CHANGE_UPDATE_TYPE, 'objectType':'task', 'value':task} self._handleChange(task_change) def onTaskInserted(self, task): '''onTaskInserted is called upon receiving a TaskInserted message. :param task: dictionary with the inserted task''' - task['starttime'] = task['starttime'].datetime() - task['endtime'] = task['endtime'].datetime() + #ignore old_task and new_task, which miss some properties via this update mechanism + #get task with all expected properties via radbrpc + task = self._radbrpc.getTask(task['id']) updateTaskMomDetails(task, self._momqueryrpc) task_change = {'changeType':CHANGE_INSERT_TYPE, 'objectType':'task', 'value':task} self._handleChange(task_change) diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py index 7a040d9c6bf..8b80f2d00ac 100755 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py @@ -673,7 +673,7 @@ def main(): global momqueryrpc momqueryrpc = MoMQueryRPC(busname=options.mom_query_busname, servicename=options.mom_query_servicename, timeout=2.5, broker=options.broker) global radbchangeshandler - radbchangeshandler = RADBChangesHandler(options.radb_notification_busname, subjects=options.radb_notification_subjects, broker=options.broker, momqueryrpc=momqueryrpc) + radbchangeshandler = RADBChangesHandler(options.radb_notification_busname, subjects=options.radb_notification_subjects, broker=options.broker, momqueryrpc=momqueryrpc, radbrpc=rarpc) with radbchangeshandler, rarpc, curpc, sqrpc, momrpc, momqueryrpc: '''Start the webserver''' -- GitLab