diff --git a/nova/block_device.py b/nova/block_device.py index b3b10ecfc2b9..7199464b2d2e 100644 --- a/nova/block_device.py +++ b/nova/block_device.py @@ -241,7 +241,7 @@ class BlockDeviceDict(dict): return legacy_block_device def get_image_mapping(self): - drop_fields = (set(['connection_info', 'device_name']) | + drop_fields = (set(['connection_info']) | self._db_only_fields) mapping_dict = dict(self) for fld in drop_fields: @@ -292,7 +292,8 @@ def snapshot_from_bdm(snapshot_id, template): """Create a basic volume snapshot BDM from a given template bdm.""" copy_from_template = ('disk_bus', 'device_type', 'boot_index', - 'delete_on_termination', 'volume_size') + 'delete_on_termination', 'volume_size', + 'device_name') snapshot_dict = {'source_type': 'snapshot', 'destination_type': 'volume', 'snapshot_id': snapshot_id} diff --git a/nova/tests/unit/api/openstack/compute/test_server_actions.py b/nova/tests/unit/api/openstack/compute/test_server_actions.py index 30d15465e207..797daffe47b0 100644 --- a/nova/tests/unit/api/openstack/compute/test_server_actions.py +++ b/nova/tests/unit/api/openstack/compute/test_server_actions.py @@ -1012,8 +1012,8 @@ class ServerActionsControllerTestV21(test.TestCase): self.assertEqual(bdms[0]['source_type'], 'snapshot') self.assertEqual(bdms[0]['destination_type'], 'volume') self.assertEqual(bdms[0]['snapshot_id'], snapshot['id']) - for fld in ('connection_info', 'id', - 'instance_uuid', 'device_name'): + self.assertEqual('/dev/vda', bdms[0]['device_name']) + for fld in ('connection_info', 'id', 'instance_uuid'): self.assertNotIn(fld, bdms[0]) for k in extra_properties.keys(): self.assertEqual(properties[k], extra_properties[k]) diff --git a/nova/tests/unit/compute/test_compute_api.py b/nova/tests/unit/compute/test_compute_api.py index 1d89dacfeef6..4af8bae762f8 100644 --- a/nova/tests/unit/compute/test_compute_api.py +++ b/nova/tests/unit/compute/test_compute_api.py @@ -1991,6 +1991,7 @@ class _ComputeAPIUnitTestMixIn(object): 'image_id': None, 'volume_id': None, 'disk_bus': None, 'volume_size': None, 'source_type': 'snapshot', 'device_type': None, 'snapshot_id': '1-snapshot', + 'device_name': '/dev/vda', 'destination_type': 'volume', 'delete_on_termination': False}) # All the db_only fields and the volume ones are removed diff --git a/nova/tests/unit/test_block_device.py b/nova/tests/unit/test_block_device.py index da2c9b607949..2ae39d515f2a 100644 --- a/nova/tests/unit/test_block_device.py +++ b/nova/tests/unit/test_block_device.py @@ -646,8 +646,7 @@ class TestBlockDeviceDict(test.NoDBTestCase): def test_image_mapping(self): removed_fields = ['id', 'instance_uuid', 'connection_info', - 'device_name', 'created_at', 'updated_at', - 'deleted_at', 'deleted'] + 'created_at', 'updated_at', 'deleted_at', 'deleted'] for bdm in self.new_mapping: mapping_bdm = fake_block_device.FakeDbBlockDeviceDict( bdm).get_image_mapping() @@ -662,6 +661,7 @@ class TestBlockDeviceDict(test.NoDBTestCase): self.assertEqual(template.volume_size, snapshot['volume_size']) self.assertEqual(template.delete_on_termination, snapshot['delete_on_termination']) + self.assertEqual(template.device_name, snapshot['device_name']) for key in ['disk_bus', 'device_type', 'boot_index']: self.assertEqual(snapshot[key], template[key])