def succeeded(self, reply): """ Notification (reply) indicating an RMI succeeded. This information is relayed to the task coordinator. :param reply: A successful reply object. :type reply: gofer.rmi.async.Succeeded """ log.info(_('Task RMI (succeeded): %(r)s'), {'r': reply}) call_context = dict(reply.any) action = call_context.get('action') task_id = call_context['task_id'] result = dict(reply.retval) TaskStatusManager.set_task_succeeded(task_id, result=result, timestamp=reply.timestamp) if action == 'bind': if result['succeeded']: ReplyHandler._bind_succeeded(task_id, call_context) else: ReplyHandler._bind_failed(task_id, call_context) return if action == 'unbind': if result['succeeded']: ReplyHandler._unbind_succeeded(call_context) else: ReplyHandler._unbind_failed(task_id, call_context) return
def succeeded(self, reply): """ Notification (reply) indicating an RMI succeeded. This information is relayed to the task coordinator. :param reply: A successful reply object. :type reply: gofer.rmi.async.Succeeded """ log.info('Task RMI (succeeded)\n%s', reply) call_context = dict(reply.any) action = call_context.get('action') task_id = call_context['task_id'] result = dict(reply.retval) TaskStatusManager.set_task_succeeded(task_id, result) if action == 'bind': if result['succeeded']: ReplyHandler._bind_succeeded(task_id, call_context) else: ReplyHandler._bind_failed(task_id, call_context) return if action == 'unbind': if result['succeeded']: ReplyHandler._unbind_succeeded(call_context) else: ReplyHandler._unbind_failed(task_id, call_context) return
def POST(self, uuid): """ Agent (asynchronous) RMI call back. Update the related task by ID. """ body = self.params() _LOG.info('agent (%s) reply:\n%s', uuid, body) task_id = body['any'] if body['status'] == 200: result = body['reply'] TaskStatusManager.set_task_succeeded(task_id, result) else: raised = body['exception'] traceback = raised['xstate']['trace'] TaskStatusManager.set_task_failed(task_id, traceback) return self.ok({})
def POST(self, uuid): """ Agent (asynchronous) RMI call back. Update the related task by ID. """ body = self.params() _LOG.info('agent (%s) reply:\n%s', uuid, body) task_id = body['any'] if body['status'] == 200: result = body['reply'] TaskStatusManager.set_task_succeeded(task_id, result) else: raised = body['exception'] traceback = raised['xstate']['trace'] TaskStatusManager.set_task_failed(task_id, traceback) return self.ok({})
def test_set_succeeded(self, mock_update, mock_date): task_id = 'test' result = 'done' now = '1234' mock_date.return_value = now # test TaskStatusManager.set_task_succeeded(task_id, result) # validation delta = { 'state': constants.CALL_FINISHED_STATE, 'finish_time': now, 'result': result } mock_update.assert_called_with(task_id=task_id, delta=delta)
def test_set_succeeded(self, mock_update, mock_date): task_id = 'test' result = 'done' now = '1234' mock_date.return_value = now # test TaskStatusManager.set_task_succeeded(task_id, result) # validation delta = { 'state': constants.CALL_FINISHED_STATE, 'finish_time': now, 'result': result } mock_update.assert_called_with(task_id=task_id, delta=delta)
def test_set_succeeded_with_timestamp(self, get_collection): task_id = 'test' result = 'done' timestamp = '1234' collection = mock.Mock() get_collection.return_value = collection # test TaskStatusManager.set_task_succeeded(task_id, result=result, timestamp=timestamp) # validation select = { 'task_id': task_id } update = { '$set': { 'finish_time': timestamp, 'state': constants.CALL_FINISHED_STATE, 'result': result } } collection.update.assert_called_once_with(select, update, safe=True)