Merge "Instance object incorrectly handles None info_cache"
This commit is contained in:
commit
f6197c4c11
@ -221,6 +221,8 @@ class Instance(base.NovaPersistentObject, base.NovaObject):
|
|||||||
_attr_terminated_at_from_primitive = obj_utils.dt_deserializer
|
_attr_terminated_at_from_primitive = obj_utils.dt_deserializer
|
||||||
|
|
||||||
def _attr_info_cache_from_primitive(self, val):
|
def _attr_info_cache_from_primitive(self, val):
|
||||||
|
if val is None:
|
||||||
|
return val
|
||||||
return base.NovaObject.obj_from_primitive(val)
|
return base.NovaObject.obj_from_primitive(val)
|
||||||
|
|
||||||
def _attr_security_groups_from_primitive(self, val):
|
def _attr_security_groups_from_primitive(self, val):
|
||||||
@ -265,14 +267,14 @@ class Instance(base.NovaPersistentObject, base.NovaObject):
|
|||||||
context, pci_device.PciDeviceList(),
|
context, pci_device.PciDeviceList(),
|
||||||
db_inst['pci_devices'])
|
db_inst['pci_devices'])
|
||||||
instance['pci_devices'] = pci_devices
|
instance['pci_devices'] = pci_devices
|
||||||
|
if 'info_cache' in expected_attrs:
|
||||||
# NOTE(danms): info_cache and security_groups are almost
|
if db_inst['info_cache'] is None:
|
||||||
# always joined in the DB layer right now, so check to see if
|
info_cache = None
|
||||||
# they are asked for and are present in the resulting object
|
else:
|
||||||
if 'info_cache' in expected_attrs and db_inst.get('info_cache'):
|
info_cache = instance_info_cache.InstanceInfoCache()
|
||||||
instance['info_cache'] = instance_info_cache.InstanceInfoCache()
|
|
||||||
instance_info_cache.InstanceInfoCache._from_db_object(
|
instance_info_cache.InstanceInfoCache._from_db_object(
|
||||||
context, instance['info_cache'], db_inst['info_cache'])
|
context, info_cache, db_inst['info_cache'])
|
||||||
|
instance['info_cache'] = info_cache
|
||||||
if 'security_groups' in expected_attrs:
|
if 'security_groups' in expected_attrs:
|
||||||
sec_groups = security_group._make_secgroup_list(
|
sec_groups = security_group._make_secgroup_list(
|
||||||
context, security_group.SecurityGroupList(),
|
context, security_group.SecurityGroupList(),
|
||||||
|
@ -366,6 +366,19 @@ class _TestInstanceObject(object):
|
|||||||
inst.info_cache.network_info = nwinfo2
|
inst.info_cache.network_info = nwinfo2
|
||||||
inst.save()
|
inst.save()
|
||||||
|
|
||||||
|
def test_with_info_cache_none(self):
|
||||||
|
fake_inst = dict(self.fake_instance, info_cache=None)
|
||||||
|
fake_uuid = fake_inst['uuid']
|
||||||
|
self.mox.StubOutWithMock(db, 'instance_get_by_uuid')
|
||||||
|
# NOTE(comstud): info_cache is always joined right now
|
||||||
|
db.instance_get_by_uuid(self.context, fake_uuid,
|
||||||
|
columns_to_join=[]
|
||||||
|
).AndReturn(fake_inst)
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
inst = instance.Instance.get_by_uuid(self.context, fake_uuid,
|
||||||
|
['info_cache'])
|
||||||
|
self.assertEqual(None, inst.info_cache)
|
||||||
|
|
||||||
def test_with_security_groups(self):
|
def test_with_security_groups(self):
|
||||||
fake_inst = dict(self.fake_instance)
|
fake_inst = dict(self.fake_instance)
|
||||||
fake_uuid = fake_inst['uuid']
|
fake_uuid = fake_inst['uuid']
|
||||||
|
Loading…
Reference in New Issue
Block a user