Merge "Make obj_make_compatible consistent"

This commit is contained in:
Jenkins 2014-09-15 18:48:18 +00:00 committed by Gerrit Code Review
commit b830f38da8
6 changed files with 19 additions and 9 deletions

View File

@ -67,8 +67,7 @@ class BlockDeviceMapping(base.NovaPersistentObject, base.NovaObject):
def obj_make_compatible(self, primitive, target_version): def obj_make_compatible(self, primitive, target_version):
target_version = utils.convert_version_to_tuple(target_version) target_version = utils.convert_version_to_tuple(target_version)
if target_version < (1, 2) and 'instance' in primitive: if target_version < (1, 2) and 'instance' in primitive:
self.instance.obj_make_compatible( self.instance.obj_make_compatible(primitive['instance'], '1.13')
primitive['instance']['nova_object.data'], '1.13')
primitive['instance']['nova_object.version'] = '1.13' primitive['instance']['nova_object.version'] = '1.13'
@staticmethod @staticmethod

View File

@ -50,8 +50,7 @@ class FixedIP(obj_base.NovaPersistentObject, obj_base.NovaObject):
def obj_make_compatible(self, primitive, target_version): def obj_make_compatible(self, primitive, target_version):
target_version = utils.convert_version_to_tuple(target_version) target_version = utils.convert_version_to_tuple(target_version)
if target_version < (1, 2) and 'instance' in primitive: if target_version < (1, 2) and 'instance' in primitive:
self.instance.obj_make_compatible( self.instance.obj_make_compatible(primitive['instance'], '1.13')
primitive['instance']['nova_object.data'], '1.13')
primitive['instance']['nova_object.version'] = '1.13' primitive['instance']['nova_object.version'] = '1.13'
@property @property

View File

@ -43,8 +43,7 @@ class FloatingIP(obj_base.NovaPersistentObject, obj_base.NovaObject):
def obj_make_compatible(self, primitive, target_version): def obj_make_compatible(self, primitive, target_version):
target_version = utils.convert_version_to_tuple(target_version) target_version = utils.convert_version_to_tuple(target_version)
if target_version < (1, 2) and 'fixed_ip' in primitive: if target_version < (1, 2) and 'fixed_ip' in primitive:
self.instance.obj_make_compatible( self.fixed_ip.obj_make_compatible(primitive['fixed_ip'], '1.1')
primitive['fixed_ip']['nova_object.data'], '1.1')
primitive['fixed_ip']['nova_object.version'] = '1.1' primitive['fixed_ip']['nova_object.version'] = '1.1'
@staticmethod @staticmethod

View File

@ -225,6 +225,8 @@ class Instance(base.NovaPersistentObject, base.NovaObject):
primitive[field] = primitive[field].encode('ascii', 'replace') primitive[field] = primitive[field].encode('ascii', 'replace')
if target_version < (1, 15) and 'pci_devices' in primitive: if target_version < (1, 15) and 'pci_devices' in primitive:
# NOTE(baoli): Instance <= 1.14 (icehouse) had PciDeviceList 1.0 # NOTE(baoli): Instance <= 1.14 (icehouse) had PciDeviceList 1.0
# NOTE(vish): pci_devices is a list object so we must pull the
# underlying primitive out of the nova_object_data.
self.pci_devices.obj_make_compatible( self.pci_devices.obj_make_compatible(
primitive['pci_devices']['nova_object.data'], '1.0') primitive['pci_devices']['nova_object.data'], '1.0')
primitive['pci_devices']['nova_object.version'] = '1.0' primitive['pci_devices']['nova_object.version'] = '1.0'

View File

@ -48,9 +48,9 @@ class Service(base.NovaPersistentObject, base.NovaObject):
def obj_make_compatible(self, primitive, target_version): def obj_make_compatible(self, primitive, target_version):
target_version = utils.convert_version_to_tuple(target_version) target_version = utils.convert_version_to_tuple(target_version)
if target_version < (1, 3) and 'compute_node' in primitive: if target_version < (1, 3) and 'compute_node' in primitive:
primitive['compute_node'] = ( self.compute_node.obj_make_compatible(
objects.ComputeNode().object_make_compatible( primitive['compute_node'], '1.4')
primitive, '1.4')) primitive['compute_node']['nova_object.version'] = '1.4'
@staticmethod @staticmethod
def _do_compute_node(context, service, db_service): def _do_compute_node(context, service, db_service):

View File

@ -240,6 +240,17 @@ class _TestFloatingIPObject(object):
objects.FloatingIPList.destroy(None, ips) objects.FloatingIPList.destroy(None, ips)
destroy_mock.assert_called_once_with(None, ips) destroy_mock.assert_called_once_with(None, ips)
def test_backport_fixedip_1_1(self):
floating = objects.FloatingIP()
fixed = objects.FixedIP()
floating.fixed_ip = fixed
with mock.patch.object(fixed, 'obj_make_compatible') as compat:
primitive = {'fixed_ip': {'nova_object.data': {}}}
floating.obj_make_compatible(primitive, '1.1')
compat.assert_called_once_with(primitive['fixed_ip'], '1.1')
self.assertEqual('1.1',
primitive['fixed_ip']['nova_object.version'])
class TestFloatingIPObject(test_objects._LocalTest, class TestFloatingIPObject(test_objects._LocalTest,
_TestFloatingIPObject): _TestFloatingIPObject):