diff --git a/nova/tests/unit/compute/test_compute.py b/nova/tests/unit/compute/test_compute.py index 6838989079c2..2caacece232c 100644 --- a/nova/tests/unit/compute/test_compute.py +++ b/nova/tests/unit/compute/test_compute.py @@ -534,8 +534,10 @@ class ComputeVolumeTestCase(BaseTestCase): 'volume_size': 55, 'delete_on_termination': False, })] + bdms = block_device_obj.block_device_make_list_from_dicts( + self.context, block_device_mapping) prepped_bdm = self.compute._prep_block_device( - self.context, self.instance_object, block_device_mapping) + self.context, self.instance_object, bdms) self.assertEqual(2, mock_save.call_count) volume_driver_bdm = prepped_bdm['block_device_mapping'][0] self.assertEqual(volume_driver_bdm['connection_info']['serial'], @@ -1146,6 +1148,8 @@ class ComputeVolumeTestCase(BaseTestCase): 'image_id': 1, 'device_name': '/dev/vdb', })] + bdms = block_device_obj.block_device_make_list_from_dicts( + self.context, bdms) self.assertRaises(exception.VolumeLimitExceeded, compute_manager.ComputeManager()._prep_block_device, self.context, instance, bdms) diff --git a/nova/tests/unit/fake_block_device.py b/nova/tests/unit/fake_block_device.py index 852e3a3a97c7..45682133ce67 100644 --- a/nova/tests/unit/fake_block_device.py +++ b/nova/tests/unit/fake_block_device.py @@ -18,6 +18,20 @@ import uuid from oslo_utils import timeutils from nova import block_device +from nova import objects + + +def fake_bdm_object(context, bdm_dict): + """Creates a BlockDeviceMapping object from the given bdm_dict + + :param context: nova request context + :param bdm_dict: dict of block device mapping info + :returns: nova.objects.block_device.BlockDeviceMapping + """ + # FakeDbBlockDeviceDict mutates the bdm_dict so make a copy of it. + return objects.BlockDeviceMapping._from_db_object( + context, objects.BlockDeviceMapping(), + FakeDbBlockDeviceDict(bdm_dict.copy())) class FakeDbBlockDeviceDict(block_device.BlockDeviceDict): diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 336941a48e52..d2ce13cd3282 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -63,6 +63,7 @@ from nova import db from nova import exception from nova.network import model as network_model from nova import objects +from nova.objects import block_device as block_device_obj from nova.objects import fields from nova.pci import manager as pci_manager from nova import test @@ -2424,16 +2425,21 @@ class LibvirtConnTestCase(test.NoDBTestCase): instance_ref = objects.Instance(**self.test_instance) image_meta = objects.ImageMeta.from_dict(self.test_image_meta) conn_info = {'driver_volume_type': 'fake'} - info = {'block_device_mapping': driver_block_device.convert_volumes([ - fake_block_device.FakeDbBlockDeviceDict( - {'id': 1, - 'source_type': 'volume', 'destination_type': 'volume', - 'device_name': '/dev/vdc'}), - fake_block_device.FakeDbBlockDeviceDict( - {'id': 2, - 'source_type': 'volume', 'destination_type': 'volume', - 'device_name': '/dev/vdd'}), - ])} + bdms = block_device_obj.block_device_make_list_from_dicts( + self.context, [ + fake_block_device.FakeDbBlockDeviceDict( + {'id': 1, + 'source_type': 'volume', 'destination_type': 'volume', + 'device_name': '/dev/vdc'}), + fake_block_device.FakeDbBlockDeviceDict( + {'id': 2, + 'source_type': 'volume', 'destination_type': 'volume', + 'device_name': '/dev/vdd'}), + ] + ) + info = {'block_device_mapping': driver_block_device.convert_volumes( + bdms + )} info['block_device_mapping'][0]['connection_info'] = conn_info info['block_device_mapping'][1]['connection_info'] = conn_info @@ -2462,20 +2468,25 @@ class LibvirtConnTestCase(test.NoDBTestCase): instance_ref = objects.Instance(**self.test_instance) image_meta = objects.ImageMeta.from_dict(self.test_image_meta) conn_info = {'driver_volume_type': 'fake'} - info = {'block_device_mapping': driver_block_device.convert_volumes([ - fake_block_device.FakeDbBlockDeviceDict( - {'id': 1, - 'source_type': 'volume', 'destination_type': 'volume', - 'boot_index': 0}), - fake_block_device.FakeDbBlockDeviceDict( - {'id': 2, - 'source_type': 'volume', 'destination_type': 'volume', - }), - fake_block_device.FakeDbBlockDeviceDict( - {'id': 3, - 'source_type': 'volume', 'destination_type': 'volume', - }), - ])} + bdms = block_device_obj.block_device_make_list_from_dicts( + self.context, [ + fake_block_device.FakeDbBlockDeviceDict( + {'id': 1, + 'source_type': 'volume', 'destination_type': 'volume', + 'boot_index': 0}), + fake_block_device.FakeDbBlockDeviceDict( + {'id': 2, + 'source_type': 'volume', 'destination_type': 'volume', + }), + fake_block_device.FakeDbBlockDeviceDict( + {'id': 3, + 'source_type': 'volume', 'destination_type': 'volume', + }), + ] + ) + info = {'block_device_mapping': driver_block_device.convert_volumes( + bdms + )} info['block_device_mapping'][0]['connection_info'] = conn_info info['block_device_mapping'][1]['connection_info'] = conn_info @@ -2558,17 +2569,20 @@ class LibvirtConnTestCase(test.NoDBTestCase): "properties": {"hw_scsi_model": "virtio-scsi"}}) instance_ref = objects.Instance(**self.test_instance) conn_info = {'driver_volume_type': 'fake'} + bdms = block_device_obj.block_device_make_list_from_dicts( + self.context, [ + fake_block_device.FakeDbBlockDeviceDict( + {'id': 1, + 'source_type': 'volume', 'destination_type': 'volume', + 'device_name': '/dev/sdc', 'disk_bus': 'scsi'}), + fake_block_device.FakeDbBlockDeviceDict( + {'id': 2, + 'source_type': 'volume', 'destination_type': 'volume', + 'device_name': '/dev/sdd', 'disk_bus': 'scsi'}), + ] + ) bd_info = { - 'block_device_mapping': driver_block_device.convert_volumes([ - fake_block_device.FakeDbBlockDeviceDict( - {'id': 1, - 'source_type': 'volume', 'destination_type': 'volume', - 'device_name': '/dev/sdc', 'disk_bus': 'scsi'}), - fake_block_device.FakeDbBlockDeviceDict( - {'id': 2, - 'source_type': 'volume', 'destination_type': 'volume', - 'device_name': '/dev/sdd', 'disk_bus': 'scsi'}), - ])} + 'block_device_mapping': driver_block_device.convert_volumes(bdms)} bd_info['block_device_mapping'][0]['connection_info'] = conn_info bd_info['block_device_mapping'][1]['connection_info'] = conn_info @@ -11659,18 +11673,19 @@ class LibvirtConnTestCase(test.NoDBTestCase): self.stubs.Set(host.Host, 'get_domain', fake_get_domain) + bdm = objects.BlockDeviceMapping( + self.context, + **fake_block_device.FakeDbBlockDeviceDict( + {'id': 1, 'guest_format': None, + 'boot_index': 0, + 'source_type': 'volume', + 'destination_type': 'volume', + 'device_name': '/dev/vda', + 'disk_bus': 'virtio', + 'device_type': 'disk', + 'delete_on_termination': False})) block_device_info = {'block_device_mapping': - driver_block_device.convert_volumes([ - fake_block_device.FakeDbBlockDeviceDict( - {'id': 1, 'guest_format': None, - 'boot_index': 0, - 'source_type': 'volume', - 'destination_type': 'volume', - 'device_name': '/dev/vda', - 'disk_bus': 'virtio', - 'device_type': 'disk', - 'delete_on_termination': False}), - ])} + driver_block_device.convert_volumes([bdm])} block_device_info['block_device_mapping'][0]['connection_info'] = ( {'driver_volume_type': 'iscsi'}) with test.nested( @@ -11919,14 +11934,15 @@ class LibvirtConnTestCase(test.NoDBTestCase): image_meta = objects.ImageMeta.from_dict(self.test_image_meta) flavor = instance.get_flavor() conn_info = {'driver_volume_type': 'fake', 'data': {}} + bdm = objects.BlockDeviceMapping( + self.context, + **fake_block_device.FakeDbBlockDeviceDict({ + 'id': 1, + 'source_type': 'volume', + 'destination_type': 'volume', + 'device_name': '/dev/vdc'})) bdi = {'block_device_mapping': - driver_block_device.convert_volumes([ - fake_block_device.FakeDbBlockDeviceDict({ - 'id': 1, - 'source_type': 'volume', - 'destination_type': 'volume', - 'device_name': '/dev/vdc'}) - ])} + driver_block_device.convert_volumes([bdm])} bdm = bdi['block_device_mapping'][0] bdm['connection_info'] = conn_info disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, @@ -12359,12 +12375,14 @@ class LibvirtConnTestCase(test.NoDBTestCase): image_meta = objects.ImageMeta.from_dict(self.test_image_meta) conn_info = {'driver_volume_type': 'fake'} - info = {'block_device_mapping': driver_block_device.convert_volumes([ - fake_block_device.FakeDbBlockDeviceDict( - {'id': 0, - 'source_type': 'volume', 'destination_type': 'volume', - 'device_name': '/dev/sda'}), - ])} + bdm = objects.BlockDeviceMapping( + self.context, + **fake_block_device.FakeDbBlockDeviceDict( + {'id': 0, + 'source_type': 'volume', 'destination_type': 'volume', + 'device_name': '/dev/sda'})) + info = {'block_device_mapping': driver_block_device.convert_volumes( + [bdm])} info['block_device_mapping'][0]['connection_info'] = conn_info disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type, @@ -14518,6 +14536,7 @@ class LibvirtVolumeSnapshotTestCase(test.NoDBTestCase): 'destination_type': 'volume', 'volume_id': 'fake-volume-id-1', 'connection_info': '{"fake": "connection_info"}'}) + fake_bdm = objects.BlockDeviceMapping(self.c, **fake_bdm) mock_get_by_volume_id.return_value = fake_bdm self.drvr._volume_refresh_connection_info(self.c, self.inst, diff --git a/nova/tests/unit/virt/test_block_device.py b/nova/tests/unit/virt/test_block_device.py index f022a76244ad..6b28fd9217b0 100644 --- a/nova/tests/unit/virt/test_block_device.py +++ b/nova/tests/unit/virt/test_block_device.py @@ -19,8 +19,10 @@ import six from nova import block_device from nova import context from nova import exception +from nova import objects from nova.objects import fields from nova import test +from nova.tests.unit import fake_block_device from nova.tests.unit import fake_instance from nova.tests.unit import matchers from nova.virt import block_device as driver_block_device @@ -39,7 +41,7 @@ class TestDriverBlockDevice(test.NoDBTestCase): 'blank': driver_block_device.DriverBlankBlockDevice } - swap_bdm = block_device.BlockDeviceDict( + swap_bdm_dict = block_device.BlockDeviceDict( {'id': 1, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdb1', 'source_type': 'blank', @@ -59,7 +61,7 @@ class TestDriverBlockDevice(test.NoDBTestCase): 'device_name': '/dev/sdb1', 'swap_size': 2} - ephemeral_bdm = block_device.BlockDeviceDict( + ephemeral_bdm_dict = block_device.BlockDeviceDict( {'id': 2, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sdc1', 'source_type': 'blank', @@ -84,7 +86,7 @@ class TestDriverBlockDevice(test.NoDBTestCase): 'virtual_name': 'ephemeral0', 'num': 0} - volume_bdm = block_device.BlockDeviceDict( + volume_bdm_dict = block_device.BlockDeviceDict( {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda1', 'source_type': 'volume', @@ -112,7 +114,7 @@ class TestDriverBlockDevice(test.NoDBTestCase): 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': False} - snapshot_bdm = block_device.BlockDeviceDict( + snapshot_bdm_dict = block_device.BlockDeviceDict( {'id': 4, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'delete_on_termination': True, @@ -140,7 +142,7 @@ class TestDriverBlockDevice(test.NoDBTestCase): 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': True} - image_bdm = block_device.BlockDeviceDict( + image_bdm_dict = block_device.BlockDeviceDict( {'id': 5, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'delete_on_termination': True, @@ -168,7 +170,7 @@ class TestDriverBlockDevice(test.NoDBTestCase): 'connection_info': {"fake": "connection_info"}, 'delete_on_termination': True} - blank_bdm = block_device.BlockDeviceDict( + blank_bdm_dict = block_device.BlockDeviceDict( {'id': 6, 'instance_uuid': 'fake-instance', 'device_name': '/dev/sda2', 'delete_on_termination': True, @@ -202,11 +204,26 @@ class TestDriverBlockDevice(test.NoDBTestCase): self.virt_driver = self.mox.CreateMock(driver.ComputeDriver) self.context = context.RequestContext('fake_user', 'fake_project') + # create bdm objects for testing + self.swap_bdm = fake_block_device.fake_bdm_object( + self.context, self.swap_bdm_dict) + self.ephemeral_bdm = fake_block_device.fake_bdm_object( + self.context, self.ephemeral_bdm_dict) + self.volume_bdm = fake_block_device.fake_bdm_object( + self.context, self.volume_bdm_dict) + self.snapshot_bdm = fake_block_device.fake_bdm_object( + self.context, self.snapshot_bdm_dict) + self.image_bdm = fake_block_device.fake_bdm_object( + self.context, self.image_bdm_dict) + self.blank_bdm = fake_block_device.fake_bdm_object( + self.context, self.blank_bdm_dict) def test_no_device_raises(self): for name, cls in self.driver_classes.items(): + bdm = fake_block_device.fake_bdm_object( + self.context, {'no_device': True}) self.assertRaises(driver_block_device._NotTransformable, - cls, {'no_device': True}) + cls, bdm) def _test_driver_device(self, name): db_bdm = getattr(self, "%s_bdm" % name) @@ -263,15 +280,17 @@ class TestDriverBlockDevice(test.NoDBTestCase): def _test_driver_default_size(self, name): size = 'swap_size' if name == 'swap' else 'size' - no_size_bdm = getattr(self, "%s_bdm" % name).copy() + no_size_bdm = getattr(self, "%s_bdm_dict" % name).copy() no_size_bdm['volume_size'] = None - driver_bdm = self.driver_classes[name](no_size_bdm) + driver_bdm = self.driver_classes[name]( + fake_block_device.fake_bdm_object(self.context, no_size_bdm)) self.assertEqual(driver_bdm[size], 0) del no_size_bdm['volume_size'] - driver_bdm = self.driver_classes[name](no_size_bdm) + driver_bdm = self.driver_classes[name]( + fake_block_device.fake_bdm_object(self.context, no_size_bdm)) self.assertEqual(driver_bdm[size], 0) def test_driver_swap_block_device(self): @@ -318,10 +337,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): def test_driver_image_block_device_destination_local(self): self._test_driver_device('image') - bdm = self.image_bdm.copy() + bdm = self.image_bdm_dict.copy() bdm['destination_type'] = 'local' self.assertRaises(driver_block_device._InvalidType, - self.driver_classes['image'], bdm) + self.driver_classes['image'], + fake_block_device.fake_bdm_object(self.context, bdm)) def test_driver_blank_block_device(self): self._test_driver_device('blank') @@ -615,9 +635,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): matchers.DictMatches(expected_conn_info)) def test_snapshot_attach_no_volume(self): - no_volume_snapshot = self.snapshot_bdm.copy() + no_volume_snapshot = self.snapshot_bdm_dict.copy() no_volume_snapshot['volume_id'] = None - test_bdm = self.driver_classes['snapshot'](no_volume_snapshot) + test_bdm = self.driver_classes['snapshot']( + fake_block_device.fake_bdm_object( + self.context, no_volume_snapshot)) snapshot = {'id': 'fake-volume-id-1', 'attach_status': 'detached'} @@ -643,9 +665,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): # Tests that the volume created from the snapshot has the same AZ as # the instance. self.flags(cross_az_attach=False, group='cinder') - no_volume_snapshot = self.snapshot_bdm.copy() + no_volume_snapshot = self.snapshot_bdm_dict.copy() no_volume_snapshot['volume_id'] = None - test_bdm = self.driver_classes['snapshot'](no_volume_snapshot) + test_bdm = self.driver_classes['snapshot']( + fake_block_device.fake_bdm_object( + self.context, no_volume_snapshot)) snapshot = {'id': 'fake-volume-id-1', 'attach_status': 'detached'} @@ -669,9 +693,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): self.assertEqual('fake-volume-id-2', test_bdm.volume_id) def test_snapshot_attach_fail_volume(self): - fail_volume_snapshot = self.snapshot_bdm.copy() + fail_volume_snapshot = self.snapshot_bdm_dict.copy() fail_volume_snapshot['volume_id'] = None - test_bdm = self.driver_classes['snapshot'](fail_volume_snapshot) + test_bdm = self.driver_classes['snapshot']( + fake_block_device.fake_bdm_object( + self.context, fail_volume_snapshot)) snapshot = {'id': 'fake-volume-id-1', 'attach_status': 'detached'} @@ -728,9 +754,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): self.assertEqual(test_bdm.volume_id, 'fake-volume-id-2') def test_image_attach_no_volume(self): - no_volume_image = self.image_bdm.copy() + no_volume_image = self.image_bdm_dict.copy() no_volume_image['volume_id'] = None - test_bdm = self.driver_classes['image'](no_volume_image) + test_bdm = self.driver_classes['image']( + fake_block_device.fake_bdm_object( + self.context, no_volume_image)) image = {'id': 'fake-image-id-1'} volume = {'id': 'fake-volume-id-2', @@ -753,9 +781,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): # Tests that the volume created from the image has the same AZ as the # instance. self.flags(cross_az_attach=False, group='cinder') - no_volume_image = self.image_bdm.copy() + no_volume_image = self.image_bdm_dict.copy() no_volume_image['volume_id'] = None - test_bdm = self.driver_classes['image'](no_volume_image) + test_bdm = self.driver_classes['image']( + fake_block_device.fake_bdm_object( + self.context, no_volume_image)) image = {'id': 'fake-image-id-1'} volume = {'id': 'fake-volume-id-2', @@ -776,9 +806,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): self.assertEqual('fake-volume-id-2', test_bdm.volume_id) def test_image_attach_fail_volume(self): - fail_volume_image = self.image_bdm.copy() + fail_volume_image = self.image_bdm_dict.copy() fail_volume_image['volume_id'] = None - test_bdm = self.driver_classes['image'](fail_volume_image) + test_bdm = self.driver_classes['image']( + fake_block_device.fake_bdm_object( + self.context, fail_volume_image)) image = {'id': 'fake-image-id-1'} volume = {'id': 'fake-volume-id-2', @@ -831,9 +863,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): self.assertEqual(test_bdm.volume_id, 'fake-volume-id-2') def test_blank_attach_fail_volume(self): - no_blank_volume = self.blank_bdm.copy() + no_blank_volume = self.blank_bdm_dict.copy() no_blank_volume['volume_id'] = None - test_bdm = self.driver_classes['blank'](no_blank_volume) + test_bdm = self.driver_classes['blank']( + fake_block_device.fake_bdm_object( + self.context, no_blank_volume)) instance = fake_instance.fake_instance_obj(mock.sentinel.ctx, **{'uuid': 'fake-uuid'}) volume = {'id': 'fake-volume-id-2', @@ -863,9 +897,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): self.context, volume['id']) def test_blank_attach_volume(self): - no_blank_volume = self.blank_bdm.copy() + no_blank_volume = self.blank_bdm_dict.copy() no_blank_volume['volume_id'] = None - test_bdm = self.driver_classes['blank'](no_blank_volume) + test_bdm = self.driver_classes['blank']( + fake_block_device.fake_bdm_object( + self.context, no_blank_volume)) instance = fake_instance.fake_instance_obj(mock.sentinel.ctx, **{'uuid': 'fake-uuid'}) volume_class = self.driver_classes['volume'] @@ -892,9 +928,11 @@ class TestDriverBlockDevice(test.NoDBTestCase): # Tests that the blank volume created is in the same availability zone # as the instance. self.flags(cross_az_attach=False, group='cinder') - no_blank_volume = self.blank_bdm.copy() + no_blank_volume = self.blank_bdm_dict.copy() no_blank_volume['volume_id'] = None - test_bdm = self.driver_classes['blank'](no_blank_volume) + test_bdm = self.driver_classes['blank']( + fake_block_device.fake_bdm_object( + self.context, no_blank_volume)) updates = {'uuid': 'fake-uuid', 'availability_zone': 'test-az'} instance = fake_instance.fake_instance_obj(mock.sentinel.ctx, **updates) @@ -918,9 +956,10 @@ class TestDriverBlockDevice(test.NoDBTestCase): self.assertEqual('fake-volume-id-2', test_bdm.volume_id) def test_convert_block_devices(self): + bdms = objects.BlockDeviceMappingList( + objects=[self.volume_bdm, self.ephemeral_bdm]) converted = driver_block_device._convert_block_devices( - self.driver_classes['volume'], - [self.volume_bdm, self.ephemeral_bdm]) + self.driver_classes['volume'], bdms) self.assertEqual(converted, [self.volume_driver_bdm]) def test_convert_all_volumes(self): @@ -980,9 +1019,10 @@ class TestDriverBlockDevice(test.NoDBTestCase): for bdm in (self.image_bdm, self.volume_bdm, self.swap_bdm, self.ephemeral_bdm, self.snapshot_bdm): self.assertTrue(driver_block_device.is_implemented(bdm)) - local_image = self.image_bdm.copy() + local_image = self.image_bdm_dict.copy() local_image['destination_type'] = 'local' - self.assertFalse(driver_block_device.is_implemented(local_image)) + self.assertFalse(driver_block_device.is_implemented( + fake_block_device.fake_bdm_object(self.context, local_image))) def test_is_block_device_mapping(self): test_swap = self.driver_classes['swap'](self.swap_bdm) diff --git a/nova/tests/unit/virt/test_imagecache.py b/nova/tests/unit/virt/test_imagecache.py index 09814b3b7b9a..140fe90242e3 100644 --- a/nova/tests/unit/virt/test_imagecache.py +++ b/nova/tests/unit/virt/test_imagecache.py @@ -18,6 +18,7 @@ from nova import block_device from nova.compute import vm_states from nova import context from nova import objects +from nova.objects import block_device as block_device_obj from nova import test from nova.tests.unit import fake_instance from nova.virt import imagecache @@ -101,12 +102,16 @@ class ImageCacheManagerTests(test.NoDBTestCase): 'get_by_instance_uuid') ctxt = context.get_admin_context() + swap_bdm_256_list = block_device_obj.block_device_make_list_from_dicts( + ctxt, swap_bdm_256) + swap_bdm_128_list = block_device_obj.block_device_make_list_from_dicts( + ctxt, swap_bdm_128) objects.block_device.BlockDeviceMappingList.get_by_instance_uuid( - ctxt, '123').AndReturn(swap_bdm_256) + ctxt, '123').AndReturn(swap_bdm_256_list) objects.block_device.BlockDeviceMappingList.get_by_instance_uuid( - ctxt, '456').AndReturn(swap_bdm_128) + ctxt, '456').AndReturn(swap_bdm_128_list) objects.block_device.BlockDeviceMappingList.get_by_instance_uuid( - ctxt, '789').AndReturn(swap_bdm_128) + ctxt, '789').AndReturn(swap_bdm_128_list) self.mox.ReplayAll() @@ -154,8 +159,10 @@ class ImageCacheManagerTests(test.NoDBTestCase): 'get_by_instance_uuid') ctxt = context.get_admin_context() + bdms = block_device_obj.block_device_make_list_from_dicts( + ctxt, swap_bdm_256) objects.block_device.BlockDeviceMappingList.get_by_instance_uuid( - ctxt, '123').AndReturn(swap_bdm_256) + ctxt, '123').AndReturn(bdms) self.mox.ReplayAll() running = image_cache_manager._list_running_instances(ctxt, diff --git a/nova/tests/unit/virt/test_virt_drivers.py b/nova/tests/unit/virt/test_virt_drivers.py index 36fac3ec1cd7..0f2d5e1c288d 100644 --- a/nova/tests/unit/virt/test_virt_drivers.py +++ b/nova/tests/unit/virt/test_virt_drivers.py @@ -526,17 +526,19 @@ class _VirtDriverTestCase(_FakeDriverBackendTestCase): 'swap': None, 'ephemerals': [], 'block_device_mapping': driver_block_device.convert_volumes([ - fake_block_device.FakeDbBlockDeviceDict( - {'id': 1, 'instance_uuid': instance_ref['uuid'], - 'device_name': '/dev/sda', - 'source_type': 'volume', - 'destination_type': 'volume', - 'delete_on_termination': False, - 'snapshot_id': None, - 'volume_id': 'abcdedf', - 'volume_size': None, - 'no_device': None - }), + objects.BlockDeviceMapping( + self.ctxt, + **fake_block_device.FakeDbBlockDeviceDict( + {'id': 1, 'instance_uuid': instance_ref['uuid'], + 'device_name': '/dev/sda', + 'source_type': 'volume', + 'destination_type': 'volume', + 'delete_on_termination': False, + 'snapshot_id': None, + 'volume_id': 'abcdedf', + 'volume_size': None, + 'no_device': None + })), ]) } bdm['block_device_mapping'][0]['connection_info'] = ( diff --git a/nova/virt/block_device.py b/nova/virt/block_device.py index b8be4b2158d1..0527cf5ae2c7 100644 --- a/nova/virt/block_device.py +++ b/nova/virt/block_device.py @@ -27,8 +27,6 @@ from nova import exception from nova.i18n import _LE from nova.i18n import _LI from nova.i18n import _LW -from nova import objects -from nova.objects import base as obj_base from nova.volume import encryptors CONF = cfg.CONF @@ -121,14 +119,7 @@ class DriverBlockDevice(dict): 'device_type': None} def __init__(self, bdm): - # TODO(ndipanov): Remove this check when we have all the rpc methods - # use objects for block devices. - if isinstance(bdm, obj_base.NovaObject): - self.__dict__['_bdm_obj'] = bdm - else: - self.__dict__['_bdm_obj'] = objects.BlockDeviceMapping() - self._bdm_obj.update(block_device.BlockDeviceDict(bdm)) - self._bdm_obj.obj_reset_changes() + self.__dict__['_bdm_obj'] = bdm if self._bdm_obj.no_device: raise _NotTransformable()