Exemplo n.º 1
0
    def test_instance_fault_get_by_instance(self):
        """ ensure we can retrieve an instance fault by  instance UUID """
        ctxt = context.get_admin_context()

        # Create faults
        uuid = str(utils.gen_uuid())
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid,
            'code': 404,
        }
        db.instance_fault_create(ctxt, fault_values)

        uuid2 = str(utils.gen_uuid())
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid2,
            'code': 500,
        }
        db.instance_fault_create(ctxt, fault_values)

        # Retrieve the fault to ensure it was successfully added
        instance_fault = db.instance_fault_get_by_instance(ctxt, uuid2)
        self.assertEqual(500, instance_fault['code'])
Exemplo n.º 2
0
    def test_instance_fault_get_by_instance(self):
        """ ensure we can retrieve an instance fault by  instance UUID """
        ctxt = context.get_admin_context()
        instance1 = db.instance_create(ctxt, {})
        instance2 = db.instance_create(ctxt, {})
        uuids = [instance1["uuid"], instance2["uuid"]]

        # Create faults
        fault_values = {"message": "message", "details": "detail", "instance_uuid": uuids[0], "code": 404}
        fault1 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {"message": "message", "details": "detail", "instance_uuid": uuids[0], "code": 500}
        fault2 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {"message": "message", "details": "detail", "instance_uuid": uuids[1], "code": 404}
        fault3 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {"message": "message", "details": "detail", "instance_uuid": uuids[1], "code": 500}
        fault4 = db.instance_fault_create(ctxt, fault_values)

        instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids)

        expected = {uuids[0]: [fault2, fault1], uuids[1]: [fault4, fault3]}

        self.assertEqual(instance_faults, expected)
Exemplo n.º 3
0
def add_instance_fault_from_exc(context, instance, fault, exc_info=None):
    """Adds the specified fault to the database."""

    code = 500
    message = fault.__class__.__name__

    if hasattr(fault, "kwargs"):
        code = fault.kwargs.get('code', 500)
        # get the message from the exception that was thrown
        # if that does not exist, use the name of the exception class itself
        message = fault.kwargs.get('value', message)

    details = unicode(fault)
    if exc_info and code == 500:
        tb = exc_info[2]
        details += '\n' + ''.join(traceback.format_tb(tb))

    values = {
        'instance_uuid': instance['uuid'],
        'code': code,
        'message': unicode(message),
        'details': unicode(details),
        'host': CONF.host
    }
    db.instance_fault_create(context, values)
Exemplo n.º 4
0
    def test_instance_fault_get_by_instance_first_fault(self):
        """Instance_fault_get_by_instance should return the latest fault """
        ctxt = context.get_admin_context()

        # Create faults
        uuid = str(utils.gen_uuid())
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid,
            'code': 404,
        }
        db.instance_fault_create(ctxt, fault_values)

        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid,
            'code': 500,
        }
        db.instance_fault_create(ctxt, fault_values)

        # Retrieve the fault to ensure it was successfully added
        instance_fault = db.instance_fault_get_by_instance(ctxt, uuid)
        self.assertEqual(500, instance_fault['code'])
Exemplo n.º 5
0
    def test_instance_fault_get_by_instance_first_fault(self):
        """Instance_fault_get_by_instance should return the latest fault """
        ctxt = context.get_admin_context()

        # Create faults
        uuid = str(utils.gen_uuid())
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid,
            'code': 404,
        }
        db.instance_fault_create(ctxt, fault_values)

        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid,
            'code': 500,
        }
        db.instance_fault_create(ctxt, fault_values)

        # Retrieve the fault to ensure it was successfully added
        instance_fault = db.instance_fault_get_by_instance(ctxt, uuid)
        self.assertEqual(500, instance_fault['code'])
Exemplo n.º 6
0
    def test_instance_fault_get_by_instance(self):
        """ ensure we can retrieve an instance fault by  instance UUID """
        ctxt = context.get_admin_context()

        # Create faults
        uuid = str(utils.gen_uuid())
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid,
            'code': 404,
        }
        db.instance_fault_create(ctxt, fault_values)

        uuid2 = str(utils.gen_uuid())
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid2,
            'code': 500,
        }
        db.instance_fault_create(ctxt, fault_values)

        # Retrieve the fault to ensure it was successfully added
        instance_fault = db.instance_fault_get_by_instance(ctxt, uuid2)
        self.assertEqual(500, instance_fault['code'])
Exemplo n.º 7
0
 def test_instance_fault_create(self):
     self.mox.StubOutWithMock(db, 'instance_fault_create')
     db.instance_fault_create(self.context,
                              'fake-values').AndReturn('fake-result')
     self.mox.ReplayAll()
     result = self.conductor.instance_fault_create(self.context,
                                                   'fake-values')
     self.assertEqual(result, 'fake-result')
Exemplo n.º 8
0
 def test_instance_fault_create(self):
     self.mox.StubOutWithMock(db, 'instance_fault_create')
     db.instance_fault_create(self.context, 'fake-values').AndReturn(
         'fake-result')
     self.mox.ReplayAll()
     result = self.conductor.instance_fault_create(self.context,
                                                   'fake-values')
     self.assertEqual(result, 'fake-result')
Exemplo n.º 9
0
    def test_handle_schedule_error_adds_instance_fault(self):
        instance = {"uuid": "fake-uuid"}
        self.mox.StubOutWithMock(db, "instance_update_and_get_original")
        self.mox.StubOutWithMock(db, "instance_fault_create")
        self.mox.StubOutWithMock(notifier, "notify")
        db.instance_update_and_get_original(self.context, instance["uuid"], mox.IgnoreArg()).AndReturn((None, instance))
        db.instance_fault_create(self.context, mox.IgnoreArg())
        notifier.notify(self.context, mox.IgnoreArg(), "scheduler.run_instance", notifier.ERROR, mox.IgnoreArg())
        self.mox.ReplayAll()

        driver.handle_schedule_error(self.context, exception.NoValidHost("test"), instance["uuid"], {})
Exemplo n.º 10
0
    def test_instance_fault_create(self):
        """Ensure we can create an instance fault"""
        ctxt = context.get_admin_context()
        uuid = str(utils.gen_uuid())

        # Create a fault
        fault_values = {"message": "message", "details": "detail", "instance_uuid": uuid, "code": 404}
        db.instance_fault_create(ctxt, fault_values)

        # Retrieve the fault to ensure it was successfully added
        faults = db.instance_fault_get_by_instance_uuids(ctxt, [uuid])
        self.assertEqual(404, faults[uuid][0]["code"])
Exemplo n.º 11
0
    def test_set_vm_state_and_notify_adds_instance_fault(self):
        request = {"instance_properties": {"uuid": "fake-uuid"}}
        updates = {"vm_state": "foo"}
        fake_inst = {"uuid": "fake-uuid"}

        self.mox.StubOutWithMock(db, "instance_update_and_get_original")
        self.mox.StubOutWithMock(db, "instance_fault_create")
        self.mox.StubOutWithMock(notifier, "notify")
        db.instance_update_and_get_original(self.context, "fake-uuid", updates).AndReturn((None, fake_inst))
        db.instance_fault_create(self.context, mox.IgnoreArg())
        notifier.notify(self.context, mox.IgnoreArg(), "scheduler.foo", notifier.ERROR, mox.IgnoreArg())
        self.mox.ReplayAll()

        self.manager._set_vm_state_and_notify("foo", {"vm_state": "foo"}, self.context, None, request)
Exemplo n.º 12
0
    def test_handle_schedule_error_adds_instance_fault(self):
        instance = {"uuid": "fake-uuid"}
        self.mox.StubOutWithMock(db, "instance_update_and_get_original")
        self.mox.StubOutWithMock(db, "instance_fault_create")
        db.instance_update_and_get_original(self.context, instance["uuid"], mox.IgnoreArg()).AndReturn((None, instance))
        db.instance_fault_create(self.context, mox.IgnoreArg())
        self.mox.StubOutWithMock(rpc, "get_notifier")
        notifier = self.mox.CreateMockAnything()
        rpc.get_notifier("conductor", CONF.host).AndReturn(notifier)
        rpc.get_notifier("scheduler").AndReturn(notifier)
        notifier.error(self.context, "scheduler.run_instance", mox.IgnoreArg())
        self.mox.ReplayAll()

        driver.handle_schedule_error(self.context, exception.NoValidHost("test"), instance["uuid"], {})
Exemplo n.º 13
0
    def test_instance_fault_get_by_instance(self):
        """ ensure we can retrieve an instance fault by  instance UUID """
        ctxt = context.get_admin_context()
        instance1 = db.instance_create(ctxt, {})
        instance2 = db.instance_create(ctxt, {})
        uuids = [instance1['uuid'], instance2['uuid']]

        # Create faults
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuids[0],
            'code': 404,
        }
        fault1 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuids[0],
            'code': 500,
        }
        fault2 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuids[1],
            'code': 404,
        }
        fault3 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuids[1],
            'code': 500,
        }
        fault4 = db.instance_fault_create(ctxt, fault_values)

        instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids)

        expected = {
            uuids[0]: [fault2, fault1],
            uuids[1]: [fault4, fault3],
        }

        self.assertEqual(instance_faults, expected)
Exemplo n.º 14
0
    def test_instance_fault_get_by_instance(self):
        """ ensure we can retrieve an instance fault by  instance UUID """
        ctxt = context.get_admin_context()
        instance1 = db.instance_create(ctxt, {})
        instance2 = db.instance_create(ctxt, {})
        uuids = [instance1['uuid'], instance2['uuid']]

        # Create faults
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuids[0],
            'code': 404,
        }
        fault1 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuids[0],
            'code': 500,
        }
        fault2 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuids[1],
            'code': 404,
        }
        fault3 = db.instance_fault_create(ctxt, fault_values)

        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuids[1],
            'code': 500,
        }
        fault4 = db.instance_fault_create(ctxt, fault_values)

        instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids)

        expected = {
                uuids[0]: [fault2, fault1],
                uuids[1]: [fault4, fault3],
        }

        self.assertEqual(instance_faults, expected)
Exemplo n.º 15
0
    def test_instance_fault_create(self):
        """Ensure we can create an instance fault"""
        ctxt = context.get_admin_context()
        uuid = str(utils.gen_uuid())

        # Create a fault
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid,
            'code': 404,
        }
        db.instance_fault_create(ctxt, fault_values)

        # Retrieve the fault to ensure it was successfully added
        faults = db.instance_fault_get_by_instance_uuids(ctxt, [uuid])
        self.assertEqual(404, faults[uuid][0]['code'])
Exemplo n.º 16
0
    def test_handle_schedule_error_adds_instance_fault(self):
        instance = {'uuid': 'fake-uuid'}
        self.mox.StubOutWithMock(db, 'instance_update_and_get_original')
        self.mox.StubOutWithMock(db, 'instance_fault_create')
        self.mox.StubOutWithMock(notifier, 'notify')
        db.instance_update_and_get_original(self.context, instance['uuid'],
                                            mox.IgnoreArg()).AndReturn(
                                                (None, instance))
        db.instance_fault_create(self.context, mox.IgnoreArg())
        notifier.notify(self.context, mox.IgnoreArg(),
                        'scheduler.run_instance', notifier.ERROR,
                        mox.IgnoreArg())
        self.mox.ReplayAll()

        driver.handle_schedule_error(self.context,
                                     exception.NoValidHost('test'),
                                     instance['uuid'], {})
Exemplo n.º 17
0
    def test_handle_schedule_error_adds_instance_fault(self):
        instance = {'uuid': 'fake-uuid'}
        self.mox.StubOutWithMock(db, 'instance_update_and_get_original')
        self.mox.StubOutWithMock(db, 'instance_fault_create')
        self.mox.StubOutWithMock(notifier, 'notify')
        db.instance_update_and_get_original(self.context, instance['uuid'],
                                            mox.IgnoreArg()).AndReturn(
                                                (None, instance))
        db.instance_fault_create(self.context, mox.IgnoreArg())
        notifier.notify(self.context, mox.IgnoreArg(),
                        'scheduler.run_instance',
                        notifier.ERROR, mox.IgnoreArg())
        self.mox.ReplayAll()

        driver.handle_schedule_error(self.context,
                                     exception.NoValidHost('test'),
                                     instance['uuid'], {})
Exemplo n.º 18
0
    def test_instance_fault_create(self):
        """Ensure we can create an instance fault"""
        ctxt = context.get_admin_context()
        uuid = str(utils.gen_uuid())

        # Create a fault
        fault_values = {
            'message': 'message',
            'details': 'detail',
            'instance_uuid': uuid,
            'code': 404,
        }
        db.instance_fault_create(ctxt, fault_values)

        # Retrieve the fault to ensure it was successfully added
        faults = db.instance_fault_get_by_instance_uuids(ctxt, [uuid])
        self.assertEqual(404, faults[uuid][0]['code'])
Exemplo n.º 19
0
    def test_set_vm_state_and_notify_adds_instance_fault(self):
        request = {"instance_properties": {"uuid": "fake-uuid"}}
        updates = {"vm_state": "foo"}
        fake_inst = {"uuid": "fake-uuid"}

        self.mox.StubOutWithMock(db, "instance_update_and_get_original")
        self.mox.StubOutWithMock(db, "instance_fault_create")
        self.mox.StubOutWithMock(rpc, "get_notifier")
        notifier = self.mox.CreateMockAnything()
        rpc.get_notifier("conductor", CONF.host).AndReturn(notifier)
        rpc.get_notifier("scheduler").AndReturn(notifier)
        db.instance_update_and_get_original(self.context, "fake-uuid", updates).AndReturn((None, fake_inst))
        db.instance_fault_create(self.context, mox.IgnoreArg())
        notifier.error(self.context, "scheduler.foo", mox.IgnoreArg())
        self.mox.ReplayAll()

        self.manager._set_vm_state_and_notify("foo", {"vm_state": "foo"}, self.context, None, request)
Exemplo n.º 20
0
    def test_set_vm_state_and_notify_adds_instance_fault(self):
        request = {'instance_properties': {'uuid': 'fake-uuid'}}
        updates = {'vm_state': 'foo'}
        fake_inst = {'uuid': 'fake-uuid'}

        self.mox.StubOutWithMock(db, 'instance_update_and_get_original')
        self.mox.StubOutWithMock(db, 'instance_fault_create')
        self.mox.StubOutWithMock(notifier, 'notify')
        db.instance_update_and_get_original(self.context, 'fake-uuid',
                                            updates).AndReturn(
                                                (None, fake_inst))
        db.instance_fault_create(self.context, mox.IgnoreArg())
        notifier.notify(self.context, mox.IgnoreArg(), 'scheduler.foo',
                        notifier.ERROR, mox.IgnoreArg())
        self.mox.ReplayAll()

        self.manager._set_vm_state_and_notify('foo', {'vm_state': 'foo'},
                                              self.context, None, request)
Exemplo n.º 21
0
    def test_set_vm_state_and_notify_adds_instance_fault(self):
        request = {'instance_properties': {'uuid': 'fake-uuid'}}
        updates = {'vm_state': 'foo'}
        fake_inst = {'uuid': 'fake-uuid'}

        self.mox.StubOutWithMock(db, 'instance_update_and_get_original')
        self.mox.StubOutWithMock(db, 'instance_fault_create')
        self.mox.StubOutWithMock(notifier, 'notify')
        db.instance_update_and_get_original(self.context, 'fake-uuid',
                                            updates).AndReturn((None,
                                                                fake_inst))
        db.instance_fault_create(self.context, mox.IgnoreArg())
        notifier.notify(self.context, mox.IgnoreArg(), 'scheduler.foo',
                        notifier.ERROR, mox.IgnoreArg())
        self.mox.ReplayAll()

        self.manager._set_vm_state_and_notify('foo', {'vm_state': 'foo'},
                                              self.context, None, request)
Exemplo n.º 22
0
    def test_handle_schedule_error_adds_instance_fault(self):
        instance = {'uuid': 'fake-uuid'}
        self.mox.StubOutWithMock(db, 'instance_update_and_get_original')
        self.mox.StubOutWithMock(db, 'instance_fault_create')
        db.instance_update_and_get_original(self.context, instance['uuid'],
                                            mox.IgnoreArg()).AndReturn(
                                                (None, instance))
        db.instance_fault_create(self.context, mox.IgnoreArg()).AndReturn(
            test_instance_fault.fake_faults['fake-uuid'][0])
        self.mox.StubOutWithMock(rpc, 'get_notifier')
        notifier = self.mox.CreateMockAnything()
        rpc.get_notifier('scheduler').AndReturn(notifier)
        notifier.error(self.context, 'scheduler.run_instance', mox.IgnoreArg())
        self.mox.ReplayAll()

        driver.handle_schedule_error(self.context,
                                     exception.NoValidHost('test'),
                                     instance['uuid'], {})
Exemplo n.º 23
0
    def test_handle_schedule_error_adds_instance_fault(self):
        instance = {'uuid': 'fake-uuid'}
        self.mox.StubOutWithMock(db, 'instance_update_and_get_original')
        self.mox.StubOutWithMock(db, 'instance_fault_create')
        db.instance_update_and_get_original(self.context, instance['uuid'],
                                            mox.IgnoreArg()).AndReturn(
                                                (None, instance))
        db.instance_fault_create(self.context, mox.IgnoreArg()).AndReturn(
            test_instance_fault.fake_faults['fake-uuid'][0])
        self.mox.StubOutWithMock(rpc, 'get_notifier')
        notifier = self.mox.CreateMockAnything()
        rpc.get_notifier('scheduler').AndReturn(notifier)
        notifier.error(self.context, 'scheduler.run_instance', mox.IgnoreArg())
        self.mox.ReplayAll()

        driver.handle_schedule_error(self.context,
                                     exception.NoValidHost('test'),
                                     instance['uuid'], {})
Exemplo n.º 24
0
Arquivo: utils.py Projeto: ameade/nova
def add_instance_fault_from_exc(context, instance_uuid, fault, exc_info=None):
    """Adds the specified fault to the database."""

    code = 500
    message = fault.__class__.__name__

    if hasattr(fault, "kwargs"):
        code = fault.kwargs.get("code", 500)
        # get the message from the exception that was thrown
        # if that does not exist, use the name of the exception class itself
        message = fault.kwargs.get("value", message)

    details = unicode(fault)
    if exc_info and code == 500:
        tb = exc_info[2]
        details += "\n" + "".join(traceback.format_tb(tb))

    values = {"instance_uuid": instance_uuid, "code": code, "message": unicode(message), "details": unicode(details)}
    db.instance_fault_create(context, values)
Exemplo n.º 25
0
def add_instance_fault_from_exc(context, instance_uuid, fault, exc_info=None):
    """Adds the specified fault to the database."""

    code = 500
    if hasattr(fault, "kwargs"):
        code = fault.kwargs.get('code', 500)

    details = unicode(fault)
    if exc_info and code == 500:
        tb = exc_info[2]
        details += '\n' + ''.join(traceback.format_tb(tb))

    values = {
        'instance_uuid': instance_uuid,
        'code': code,
        'message': fault.__class__.__name__,
        'details': unicode(details),
    }
    db.instance_fault_create(context, values)
Exemplo n.º 26
0
    def test_set_vm_state_and_notify_adds_instance_fault(self):
        request = {'instance_properties': {'uuid': 'fake-uuid'}}
        updates = {'vm_state': 'foo'}
        fake_inst = {'uuid': 'fake-uuid'}

        self.mox.StubOutWithMock(db, 'instance_update_and_get_original')
        self.mox.StubOutWithMock(db, 'instance_fault_create')
        self.mox.StubOutWithMock(rpc, 'get_notifier')
        notifier = self.mox.CreateMockAnything()
        rpc.get_notifier('scheduler').AndReturn(notifier)
        db.instance_update_and_get_original(self.context, 'fake-uuid',
                                            updates).AndReturn((None,
                                                                fake_inst))
        db.instance_fault_create(self.context, mox.IgnoreArg()).AndReturn(
            test_instance_fault.fake_faults['fake-uuid'][0])
        notifier.error(self.context, 'scheduler.foo', mox.IgnoreArg())
        self.mox.ReplayAll()

        self.manager._set_vm_state_and_notify('foo', {'vm_state': 'foo'},
                                              self.context, None, request)
Exemplo n.º 27
0
    def test_set_vm_state_and_notify_adds_instance_fault(self):
        request = {'instance_properties': {'uuid': 'fake-uuid'}}
        updates = {'vm_state': 'foo'}
        fake_inst = {'uuid': 'fake-uuid'}

        self.mox.StubOutWithMock(db, 'instance_update_and_get_original')
        self.mox.StubOutWithMock(db, 'instance_fault_create')
        self.mox.StubOutWithMock(rpc, 'get_notifier')
        notifier = self.mox.CreateMockAnything()
        rpc.get_notifier('scheduler').AndReturn(notifier)
        db.instance_update_and_get_original(self.context, 'fake-uuid',
                                            updates).AndReturn(
                                                (None, fake_inst))
        db.instance_fault_create(self.context, mox.IgnoreArg()).AndReturn(
            test_instance_fault.fake_faults['fake-uuid'][0])
        notifier.error(self.context, 'scheduler.foo', mox.IgnoreArg())
        self.mox.ReplayAll()

        self.manager._set_vm_state_and_notify('foo', {'vm_state': 'foo'},
                                              self.context, None, request)
Exemplo n.º 28
0
 def create(self, context):
     if self.obj_attr_is_set('id'):
         raise exception.ObjectActionError(action='create',
                                           reason='already created')
     values = {
         'instance_uuid': self.instance_uuid,
         'code': self.code,
         'message': self.message,
         'details': self.details,
         'host': self.host,
     }
     db_fault = db.instance_fault_create(context, values)
     self._from_db_object(context, self, db_fault)
     self.obj_reset_changes()
Exemplo n.º 29
0
 def create(self, context):
     if self.obj_attr_is_set('id'):
         raise exception.ObjectActionError(action='create',
                                           reason='already created')
     values = {
         'instance_uuid': self.instance_uuid,
         'code': self.code,
         'message': self.message,
         'details': self.details,
         'host': self.host,
         }
     db_fault = db.instance_fault_create(context, values)
     self._from_db_object(context, self, db_fault)
     self.obj_reset_changes()
Exemplo n.º 30
0
 def create(self, context):
     if self.obj_attr_is_set("id"):
         raise exception.ObjectActionError(action="create", reason="already created")
     values = {
         "instance_uuid": self.instance_uuid,
         "code": self.code,
         "message": self.message,
         "details": self.details,
         "host": self.host,
     }
     db_fault = db.instance_fault_create(context, values)
     self._from_db_object(context, self, db_fault)
     self.obj_reset_changes()
     # Cells should only try sending a message over to nova-cells
     # if cells is enabled and we're not the API cell. Otherwise,
     # if the API cell is calling this, we could end up with
     # infinite recursion.
     if cells_opts.get_cell_type() == "compute":
         try:
             cells_rpcapi.CellsAPI().instance_fault_create_at_top(context, db_fault)
         except Exception:
             LOG.exception(_LE("Failed to notify cells of instance fault"))
Exemplo n.º 31
0
 def create(self, context):
     if self.obj_attr_is_set('id'):
         raise exception.ObjectActionError(action='create',
                                           reason='already created')
     values = {
         'instance_uuid': self.instance_uuid,
         'code': self.code,
         'message': self.message,
         'details': self.details,
         'host': self.host,
     }
     db_fault = db.instance_fault_create(context, values)
     self._from_db_object(context, self, db_fault)
     self.obj_reset_changes()
     # Cells should only try sending a message over to nova-cells
     # if cells is enabled and we're not the API cell. Otherwise,
     # if the API cell is calling this, we could end up with
     # infinite recursion.
     if cells_opts.get_cell_type() == 'compute':
         try:
             cells_rpcapi.CellsAPI().instance_fault_create_at_top(
                 context, db_fault)
         except Exception:
             LOG.exception(_LE("Failed to notify cells of instance fault"))
Exemplo n.º 32
0
 def create(self):
     if self.obj_attr_is_set('id'):
         raise exception.ObjectActionError(action='create',
                                           reason='already created')
     values = {
         'instance_uuid': self.instance_uuid,
         'code': self.code,
         'message': self.message,
         'details': self.details,
         'host': self.host,
         }
     db_fault = db.instance_fault_create(self._context, values)
     self._from_db_object(self._context, self, db_fault)
     self.obj_reset_changes()
     # Cells should only try sending a message over to nova-cells
     # if cells is enabled and we're not the API cell. Otherwise,
     # if the API cell is calling this, we could end up with
     # infinite recursion.
     if cells_opts.get_cell_type() == 'compute':
         try:
             cells_rpcapi.CellsAPI().instance_fault_create_at_top(
                 self._context, db_fault)
         except Exception:
             LOG.exception("Failed to notify cells of instance fault")