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_failed(self, mock_update, mock_date): task_id = 'test' traceback = 'TB' now = '1234' mock_date.return_value = now # test TaskStatusManager.set_task_failed(task_id, traceback) # validation delta = { 'state': constants.CALL_ERROR_STATE, 'finish_time': now, 'traceback': traceback } mock_update.assert_called_with(task_id=task_id, delta=delta)
def test_set_failed(self, mock_update, mock_date): task_id = 'test' traceback = 'TB' now = '1234' mock_date.return_value = now # test TaskStatusManager.set_task_failed(task_id, traceback) # validation delta = { 'state': constants.CALL_ERROR_STATE, 'finish_time': now, 'traceback': traceback } mock_update.assert_called_with(task_id=task_id, delta=delta)
def rejected(self, reply): """ Notification (reply) indicating an RMI request has been rejected. This information used to update the task status. :param reply: A rejected reply object. :type reply: gofer.rmi.async.Rejected """ log.warn(_('Task RMI (rejected): %(r)s'), {'r': reply}) call_context = dict(reply.any) action = call_context.get('action') task_id = call_context['task_id'] TaskStatusManager.set_task_failed(task_id, timestamp=reply.timestamp) if action == 'bind': ReplyHandler._bind_failed(task_id, call_context) return if action == 'unbind': ReplyHandler._unbind_failed(task_id, call_context) return
def rejected(self, reply): """ Notification (reply) indicating an RMI request has been rejected. This information used to update the task status. :param reply: A rejected reply object. :type reply: gofer.rmi.async.Rejected """ log.info('Task RMI (rejected)\n%s', reply) call_context = dict(reply.any) action = call_context.get('action') task_id = call_context['task_id'] TaskStatusManager.set_task_failed(task_id) if action == 'bind': ReplyHandler._bind_failed(task_id, call_context) return if action == 'unbind': ReplyHandler._unbind_failed(task_id, call_context) return
def failed(self, reply): """ Notification (reply) indicating an RMI failed. This information used to update the task status. :param reply: A failure reply object. :type reply: gofer.rmi.async.Failed """ log.info(_('Task RMI (failed): %(r)s'), {'r': reply}) call_context = dict(reply.any) action = call_context.get('action') task_id = call_context['task_id'] traceback = reply.xstate['trace'] TaskStatusManager.set_task_failed(task_id, traceback=traceback, timestamp=reply.timestamp) if action == 'bind': ReplyHandler._bind_failed(task_id, call_context) return if action == 'unbind': ReplyHandler._unbind_failed(task_id, call_context) return
def failed(self, reply): """ Notification (reply) indicating an RMI failed. This information used to update the task status. :param reply: A failure reply object. :type reply: gofer.rmi.async.Failed """ log.info('Task RMI (failed)\n%s', reply) call_context = dict(reply.any) action = call_context.get('action') task_id = call_context['task_id'] traceback = reply.xstate['trace'] TaskStatusManager.set_task_failed(task_id, traceback) if action == 'bind': ReplyHandler._bind_failed(task_id, call_context) return if action == 'unbind': ReplyHandler._unbind_failed(task_id, call_context) return
def test_set_failed_with_timestamp(self, get_collection): task_id = 'test' traceback = 'abcdef' timestamp = '1234' collection = mock.Mock() get_collection.return_value = collection # test TaskStatusManager.set_task_failed(task_id, traceback=traceback, timestamp=timestamp) # validation select = { 'task_id': task_id } update = { '$set': { 'finish_time': timestamp, 'state': constants.CALL_ERROR_STATE, 'traceback': traceback } } collection.update.assert_called_once_with(select, update, safe=True)