def test_get_latest_for_instance(self): self.mox.StubOutWithMock(db, "instance_fault_get_by_instance_uuids") db.instance_fault_get_by_instance_uuids(self.context, ["fake-uuid"]).AndReturn(fake_faults) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance(self.context, "fake-uuid") for key in fake_faults["fake-uuid"][0]: self.assertEqual(fake_faults["fake-uuid"][0][key], fault[key])
def test_get_latest_for_instance_with_none(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(self.context, ['fake-uuid']).AndReturn({}) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance( self.context, 'fake-uuid') self.assertIsNone(fault)
def test_get_by_instance_with_none(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(self.context, ['fake-uuid']).AndReturn({}) self.mox.ReplayAll() faults = instance_fault.InstanceFaultList.get_by_instance_uuids( self.context, ['fake-uuid']) self.assertEqual(0, len(faults))
def test_get_latest_for_instance_with_none(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(self.context, ['fake-uuid'] ).AndReturn({}) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance( self.context, 'fake-uuid') self.assertIsNone(fault)
def test_get_by_instance_with_none(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(self.context, ['fake-uuid'] ).AndReturn({}) self.mox.ReplayAll() faults = instance_fault.InstanceFaultList.get_by_instance_uuids( self.context, ['fake-uuid']) self.assertEqual(0, len(faults))
def test_get_by_instance(self): self.mox.StubOutWithMock(db, "instance_fault_get_by_instance_uuids") db.instance_fault_get_by_instance_uuids(self.context, ["fake-uuid"]).AndReturn(fake_faults) self.mox.ReplayAll() faults = instance_fault.InstanceFaultList.get_by_instance_uuids(self.context, ["fake-uuid"]) for index, db_fault in enumerate(fake_faults["fake-uuid"]): for key in db_fault: self.assertEqual(fake_faults["fake-uuid"][index][key], faults[index][key])
def test_get_latest_for_instance(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids( self.context, ['fake-uuid']).AndReturn(fake_faults) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance( self.context, 'fake-uuid') for key in fake_faults['fake-uuid'][0]: self.assertEqual(fake_faults['fake-uuid'][0][key], fault[key])
def test_get_latest_for_instance_with_none(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(ctxt, ['fake-uuid']).AndReturn( {}) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance( ctxt, 'fake-uuid') self.assertEqual(None, fault)
def test_get_latest_for_instance_with_none(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(ctxt, ['fake-uuid']).AndReturn({}) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance( ctxt, 'fake-uuid') self.assertEqual(None, fault)
def test_get_latest_for_instance(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(ctxt, ['fake-uuid']).AndReturn( fake_faults) self.mox.ReplayAll() fault = instance_fault.InstanceFault.get_latest_for_instance( ctxt, 'fake-uuid') for key in fake_faults['fake-uuid'][0]: self.assertEqual(fake_faults['fake-uuid'][0][key], fault[key])
def test_get_by_instance(self): self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids( self.context, ['fake-uuid']).AndReturn(fake_faults) self.mox.ReplayAll() faults = instance_fault.InstanceFaultList.get_by_instance_uuids( self.context, ['fake-uuid']) for index, db_fault in enumerate(fake_faults['fake-uuid']): for key in db_fault: self.assertEqual(fake_faults['fake-uuid'][index][key], faults[index][key])
def test_get_by_instance(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_fault_get_by_instance_uuids(ctxt, ['fake-uuid']).AndReturn( fake_faults) self.mox.ReplayAll() faults = instance_fault.InstanceFaultList.get_by_instance_uuids( ctxt, ['fake-uuid']) for index, db_fault in enumerate(fake_faults['fake-uuid']): for key in db_fault: self.assertEqual(fake_faults['fake-uuid'][index][key], faults[index][key])
def test_with_fault(self): fake_inst = dict(self.fake_instance) fake_uuid = fake_inst["uuid"] fake_faults = [dict(x, instance_uuid=fake_uuid) for x in test_instance_fault.fake_faults["fake-uuid"]] self.mox.StubOutWithMock(db, "instance_get_by_uuid") self.mox.StubOutWithMock(db, "instance_fault_get_by_instance_uuids") db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=[]).AndReturn(self.fake_instance) db.instance_fault_get_by_instance_uuids(self.context, [fake_uuid]).AndReturn({fake_uuid: fake_faults}) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid, expected_attrs=["fault"]) self.assertEqual(fake_faults[0], dict(inst.fault.items())) self.assertRemotes()
def test_with_fault(self): fake_insts = [ fake_instance.fake_db_instance(uuid="fake-uuid", host="host"), fake_instance.fake_db_instance(uuid="fake-inst2", host="host"), ] fake_faults = test_instance_fault.fake_faults self.mox.StubOutWithMock(db, "instance_get_all_by_host") self.mox.StubOutWithMock(db, "instance_fault_get_by_instance_uuids") db.instance_get_all_by_host(self.context, "host", columns_to_join=[], use_slave=False).AndReturn(fake_insts) db.instance_fault_get_by_instance_uuids(self.context, [x["uuid"] for x in fake_insts]).AndReturn(fake_faults) self.mox.ReplayAll() instances = instance.InstanceList.get_by_host(self.context, "host", expected_attrs=["fault"], use_slave=False) self.assertEqual(2, len(instances)) self.assertEqual(fake_faults["fake-uuid"][0], dict(instances[0].fault.iteritems())) self.assertEqual(None, instances[1].fault)
def test_get_with_expected(self): self.mox.StubOutWithMock(db, "instance_get_by_uuid") self.mox.StubOutWithMock(db, "instance_fault_get_by_instance_uuids") exp_cols = instance.INSTANCE_OPTIONAL_ATTRS[:] exp_cols.remove("fault") db.instance_get_by_uuid(self.context, "uuid", columns_to_join=exp_cols).AndReturn(self.fake_instance) fake_faults = test_instance_fault.fake_faults db.instance_fault_get_by_instance_uuids(self.context, [self.fake_instance["uuid"]]).AndReturn(fake_faults) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, "uuid", expected_attrs=instance.INSTANCE_OPTIONAL_ATTRS) for attr in instance.INSTANCE_OPTIONAL_ATTRS: self.assertTrue(inst.obj_attr_is_set(attr)) self.assertRemotes()
def get_latest_by_instance_uuids(cls, context, instance_uuids): db_faultdict = db.instance_fault_get_by_instance_uuids(context, instance_uuids, latest=True) db_faultlist = itertools.chain(*db_faultdict.values()) return base.obj_make_list(context, cls(context), objects.InstanceFault, db_faultlist)
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)
def test_with_fault(self): fake_inst = dict(self.fake_instance) fake_uuid = fake_inst['uuid'] fake_faults = [dict(x, instance_uuid=fake_uuid) for x in test_instance_fault.fake_faults['fake-uuid']] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_get_by_uuid(self.context, fake_uuid, columns_to_join=[], ).AndReturn(self.fake_instance) db.instance_fault_get_by_instance_uuids( self.context, [fake_uuid]).AndReturn({fake_uuid: fake_faults}) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(self.context, fake_uuid, expected_attrs=['fault']) self.assertEqual(fake_faults[0], dict(inst.fault.items())) self.assertRemotes()
def test_with_fault(self): ctxt = context.get_admin_context() fake_inst = dict(self.fake_instance) fake_uuid = fake_inst['uuid'] fake_faults = [dict(x, instance_uuid=fake_uuid) for x in test_instance_fault.fake_faults['fake-uuid']] self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_get_by_uuid(ctxt, fake_uuid, columns_to_join=[] ).AndReturn(self.fake_instance) db.instance_fault_get_by_instance_uuids(ctxt, [fake_uuid]).AndReturn( {fake_uuid: fake_faults}) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid(ctxt, fake_uuid, expected_attrs=['fault']) self.assertEqual(fake_faults[0], dict(inst.fault.items())) self.assertRemotes()
def test_instance_faults_get_by_instance_uuids_no_faults(self): """None should be returned when no faults exist""" ctxt = context.get_admin_context() instance1 = db.instance_create(ctxt, {}) instance2 = db.instance_create(ctxt, {}) uuids = [instance1['uuid'], instance2['uuid']] instance_faults = db.instance_fault_get_by_instance_uuids(ctxt, uuids) expected = {uuids[0]: [], uuids[1]: []} self.assertEqual(expected, instance_faults)
def test_with_fault(self): fake_insts = [ fake_instance.fake_db_instance(uuid='fake-uuid', host='host'), fake_instance.fake_db_instance(uuid='fake-inst2', host='host'), ] fake_faults = test_instance_fault.fake_faults self.mox.StubOutWithMock(db, 'instance_get_all_by_host') self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') db.instance_get_all_by_host(self.context, 'host', columns_to_join=[] ).AndReturn(fake_insts) db.instance_fault_get_by_instance_uuids( self.context, [x['uuid'] for x in fake_insts] ).AndReturn(fake_faults) self.mox.ReplayAll() instances = instance.InstanceList.get_by_host(self.context, 'host', expected_attrs=['fault']) self.assertEqual(2, len(instances)) self.assertEqual(fake_faults['fake-uuid'][0], dict(instances[0].fault.iteritems())) self.assertEqual(None, instances[1].fault)
def test_fill_faults(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') inst1 = instance.Instance() inst1.uuid = 'uuid1' inst2 = instance.Instance() inst2.uuid = 'uuid2' insts = [inst1, inst2] for inst in insts: inst.obj_reset_changes() db_faults = { 'uuid1': [{ 'id': 123, 'instance_uuid': 'uuid1', 'code': 456, 'message': 'Fake message', 'details': 'No details', 'host': 'foo', 'deleted': False, 'deleted_at': None, 'updated_at': None, 'created_at': None, }] } db.instance_fault_get_by_instance_uuids( ctxt, [x.uuid for x in insts], ).AndReturn(db_faults) self.mox.ReplayAll() inst_list = instance.InstanceList() inst_list._context = ctxt inst_list.objects = insts faulty = inst_list.fill_faults() self.assertEqual(faulty, ['uuid1']) self.assertEqual(inst_list[0].fault.message, db_faults['uuid1'][0]['message']) self.assertEqual(inst_list[1].fault, None) for inst in inst_list: self.assertEqual(inst.obj_what_changed(), set())
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"])
def test_get_with_expected(self): self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') exp_cols = instance.INSTANCE_OPTIONAL_ATTRS[:] exp_cols.remove('fault') db.instance_get_by_uuid(self.context, 'uuid', columns_to_join=exp_cols).AndReturn( self.fake_instance) fake_faults = test_instance_fault.fake_faults db.instance_fault_get_by_instance_uuids( self.context, [self.fake_instance['uuid']]).AndReturn(fake_faults) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid( self.context, 'uuid', expected_attrs=instance.INSTANCE_OPTIONAL_ATTRS) for attr in instance.INSTANCE_OPTIONAL_ATTRS: self.assertTrue(inst.obj_attr_is_set(attr)) self.assertRemotes()
def test_fill_faults(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, "instance_fault_get_by_instance_uuids") inst1 = instance.Instance() inst1.uuid = "uuid1" inst2 = instance.Instance() inst2.uuid = "uuid2" insts = [inst1, inst2] for inst in insts: inst.obj_reset_changes() db_faults = { "uuid1": [ { "id": 123, "instance_uuid": "uuid1", "code": 456, "message": "Fake message", "details": "No details", "host": "foo", "deleted": False, "deleted_at": None, "updated_at": None, "created_at": None, } ] } db.instance_fault_get_by_instance_uuids(ctxt, [x.uuid for x in insts]).AndReturn(db_faults) self.mox.ReplayAll() inst_list = instance.InstanceList() inst_list._context = ctxt inst_list.objects = insts faulty = inst_list.fill_faults() self.assertEqual(faulty, ["uuid1"]) self.assertEqual(inst_list[0].fault.message, db_faults["uuid1"][0]["message"]) self.assertEqual(inst_list[1].fault, None) for inst in inst_list: self.assertEqual(inst.obj_what_changed(), set())
def test_fill_faults(self): ctxt = context.get_admin_context() self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') inst1 = instance.Instance() inst1.uuid = 'uuid1' inst2 = instance.Instance() inst2.uuid = 'uuid2' insts = [inst1, inst2] for inst in insts: inst.obj_reset_changes() db_faults = { 'uuid1': [{'id': 123, 'instance_uuid': 'uuid1', 'code': 456, 'message': 'Fake message', 'details': 'No details', 'host': 'foo', 'deleted': False, 'deleted_at': None, 'updated_at': None, 'created_at': None, } ]} db.instance_fault_get_by_instance_uuids(ctxt, [x.uuid for x in insts], ).AndReturn(db_faults) self.mox.ReplayAll() inst_list = instance.InstanceList() inst_list._context = ctxt inst_list.objects = insts faulty = inst_list.fill_faults() self.assertEqual(faulty, ['uuid1']) self.assertEqual(inst_list[0].fault.message, db_faults['uuid1'][0]['message']) self.assertEqual(inst_list[1].fault, None) for inst in inst_list: self.assertEqual(inst.obj_what_changed(), set())
def test_get_with_expected(self): self.mox.StubOutWithMock(db, 'instance_get_by_uuid') self.mox.StubOutWithMock(db, 'instance_fault_get_by_instance_uuids') exp_cols = instance.INSTANCE_OPTIONAL_ATTRS[:] exp_cols.remove('fault') db.instance_get_by_uuid( self.context, 'uuid', columns_to_join=exp_cols, use_slave=False ).AndReturn(self.fake_instance) fake_faults = test_instance_fault.fake_faults db.instance_fault_get_by_instance_uuids( self.context, [self.fake_instance['uuid']] ).AndReturn(fake_faults) self.mox.ReplayAll() inst = instance.Instance.get_by_uuid( self.context, 'uuid', expected_attrs=instance.INSTANCE_OPTIONAL_ATTRS) for attr in instance.INSTANCE_OPTIONAL_ATTRS: self.assertTrue(inst.obj_attr_is_set(attr)) self.assertRemotes()
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)
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'])
def get_latest_for_instance(cls, context, instance_uuid): db_faults = db.instance_fault_get_by_instance_uuids(context, [instance_uuid]) if instance_uuid in db_faults and db_faults[instance_uuid]: return cls._from_db_object(context, cls(), db_faults[instance_uuid][0])
def get_latest_for_instance(cls, context, instance_uuid): db_faults = db.instance_fault_get_by_instance_uuids( context, [instance_uuid]) if instance_uuid in db_faults and db_faults[instance_uuid]: return cls._from_db_object(context, cls(), db_faults[instance_uuid][0])
def get_by_instance_uuids(cls, context, instance_uuids): db_faultdict = db.instance_fault_get_by_instance_uuids(context, instance_uuids) db_faultlist = itertools.chain(*db_faultdict.values()) return base.obj_make_list(context, InstanceFaultList(), InstanceFault, db_faultlist)
def get_by_instance_uuids(cls, context, instance_uuids): db_faults = db.instance_fault_get_by_instance_uuids( context, instance_uuids) return _make_fault_list(cls(), db_faults)
def get_by_instance_uuids(cls, context, instance_uuids): db_faults = db.instance_fault_get_by_instance_uuids(context, instance_uuids) return _make_fault_list(cls(), db_faults)