diff --git a/nova/objects/compute_node.py b/nova/objects/compute_node.py index 966203b86053..3f9514ed1ed5 100644 --- a/nova/objects/compute_node.py +++ b/nova/objects/compute_node.py @@ -127,8 +127,12 @@ class ComputeNode(base.NovaPersistentObject, base.NovaObject): # Setting to -1 will, if value is later used result in a # ServiceNotFound, so should be safe. primitive['service_id'] = -1 + if target_version < (1, 9) and 'pci_device_pools' in primitive: + del primitive['pci_device_pools'] if target_version < (1, 7) and 'host' in primitive: del primitive['host'] + if target_version < (1, 6) and 'supported_hv_specs' in primitive: + del primitive['supported_hv_specs'] if target_version < (1, 5) and 'numa_topology' in primitive: del primitive['numa_topology'] if target_version < (1, 4) and 'host_ip' in primitive: diff --git a/nova/tests/unit/objects/test_compute_node.py b/nova/tests/unit/objects/test_compute_node.py index d4b1a6acc8f6..5579e6f7367d 100644 --- a/nova/tests/unit/objects/test_compute_node.py +++ b/nova/tests/unit/objects/test_compute_node.py @@ -447,11 +447,15 @@ class _TestComputeNodeObject(object): comparators=self.comparators()) def test_compat_numa_topology(self): - compute = compute_node.ComputeNode() + compute = compute_node.ComputeNode(numa_topology='fake-numa-topology') versions = ovo_base.obj_tree_get_versions('ComputeNode') primitive = compute.obj_to_primitive(target_version='1.4', version_manifest=versions) - self.assertNotIn('numa_topology', primitive) + self.assertNotIn('numa_topology', primitive['nova_object.data']) + + primitive = compute.obj_to_primitive(target_version='1.5', + version_manifest=versions) + self.assertIn('numa_topology', primitive['nova_object.data']) def test_compat_supported_hv_specs(self): compute = compute_node.ComputeNode() @@ -459,12 +463,20 @@ class _TestComputeNodeObject(object): versions = ovo_base.obj_tree_get_versions('ComputeNode') primitive = compute.obj_to_primitive(target_version='1.5', version_manifest=versions) - self.assertNotIn('supported_hv_specs', primitive) + self.assertNotIn('supported_hv_specs', primitive['nova_object.data']) - def test_compat_host(self): - compute = compute_node.ComputeNode() + primitive = compute.obj_to_primitive(target_version='1.6', + version_manifest=versions) + self.assertIn('supported_hv_specs', primitive['nova_object.data']) + + @mock.patch('nova.objects.service.Service.get_by_compute_host') + def test_compat_host(self, mock_get_compute): + compute = compute_node.ComputeNode(host='fake-host') primitive = compute.obj_to_primitive(target_version='1.6') - self.assertNotIn('host', primitive) + self.assertNotIn('host', primitive['nova_object.data']) + + primitive = compute.obj_to_primitive(target_version='1.7') + self.assertIn('host', primitive['nova_object.data']) def test_compat_pci_device_pools(self): compute = compute_node.ComputeNode() @@ -472,7 +484,11 @@ class _TestComputeNodeObject(object): versions = ovo_base.obj_tree_get_versions('ComputeNode') primitive = compute.obj_to_primitive(target_version='1.8', version_manifest=versions) - self.assertNotIn('pci_device_pools', primitive) + self.assertNotIn('pci_device_pools', primitive['nova_object.data']) + + primitive = compute.obj_to_primitive(target_version='1.9', + version_manifest=versions) + self.assertIn('pci_device_pools', primitive['nova_object.data']) @mock.patch('nova.objects.Service.get_by_compute_host') def test_compat_service_id(self, mock_get): @@ -543,15 +559,24 @@ class _TestComputeNodeObject(object): compute.update_from_virt_driver, resources) def test_compat_allocation_ratios(self): - compute = compute_node.ComputeNode() + compute = compute_node.ComputeNode( + cpu_allocation_ratio=1.0, ram_allocation_ratio=1.0) primitive = compute.obj_to_primitive(target_version='1.13') - self.assertNotIn('cpu_allocation_ratio', primitive) - self.assertNotIn('ram_allocation_ratio', primitive) + self.assertNotIn('cpu_allocation_ratio', primitive['nova_object.data']) + self.assertNotIn('ram_allocation_ratio', primitive['nova_object.data']) + + primitive = compute.obj_to_primitive(target_version='1.14') + self.assertIn('cpu_allocation_ratio', primitive['nova_object.data']) + self.assertIn('ram_allocation_ratio', primitive['nova_object.data']) def test_compat_disk_allocation_ratio(self): - compute = compute_node.ComputeNode() + compute = compute_node.ComputeNode(disk_allocation_ratio=1.0) primitive = compute.obj_to_primitive(target_version='1.15') - self.assertNotIn('disk_allocation_ratio', primitive) + self.assertNotIn( + 'disk_allocation_ratio', primitive['nova_object.data']) + + primitive = compute.obj_to_primitive(target_version='1.16') + self.assertIn('disk_allocation_ratio', primitive['nova_object.data']) @mock.patch('nova.db.api.compute_node_update') def test_compat_allocation_ratios_old_compute(self, mock_update):