コード例 #1
0
ファイル: agent.py プロジェクト: omps/pulp
 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({})
コード例 #2
0
ファイル: agent.py プロジェクト: CUXIDUMDUM/pulp
 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({})
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
ファイル: services.py プロジェクト: VuokkoVuorinnen/pulp
    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
コード例 #6
0
    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
コード例 #7
0
ファイル: services.py プロジェクト: VuokkoVuorinnen/pulp
    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
コード例 #8
0
    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
コード例 #9
0
    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)