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):
target_version = utils.convert_version_to_tuple(target_version)
if target_version < (1, 2) and 'instance' in primitive:
self.instance.obj_make_compatible(
primitive['instance']['nova_object.data'], '1.13')
self.instance.obj_make_compatible(primitive['instance'], '1.13')
primitive['instance']['nova_object.version'] = '1.13'
@staticmethod

View File

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

View File

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

View File

@ -225,6 +225,8 @@ class Instance(base.NovaPersistentObject, base.NovaObject):
primitive[field] = primitive[field].encode('ascii', 'replace')
if target_version < (1, 15) and 'pci_devices' in primitive:
# 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(
primitive['pci_devices']['nova_object.data'], '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):
target_version = utils.convert_version_to_tuple(target_version)
if target_version < (1, 3) and 'compute_node' in primitive:
primitive['compute_node'] = (
objects.ComputeNode().object_make_compatible(
primitive, '1.4'))
self.compute_node.obj_make_compatible(
primitive['compute_node'], '1.4')
primitive['compute_node']['nova_object.version'] = '1.4'
@staticmethod
def _do_compute_node(context, service, db_service):

View File

@ -240,6 +240,17 @@ class _TestFloatingIPObject(object):
objects.FloatingIPList.destroy(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,
_TestFloatingIPObject):