diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-11-12 22:44:56 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-11-12 22:44:57 +0000 |
commit | 7ba15ec0deb1cf9db30c3a71a7f320aa6367b489 (patch) | |
tree | 3299303e5c936e8e22092d6fef7f228433e977c3 | |
parent | 79e2641b34db354f4eddbcabe5d20d720dd36c92 (diff) | |
parent | 4b439b955890efa819434c23b3ffdaf64a27ac1f (diff) | |
download | nova-7ba15ec0deb1cf9db30c3a71a7f320aa6367b489.tar.gz |
Merge "libvirt: fix failure when attaching volume to iso instance" into stable/juno
-rw-r--r-- | nova/block_device.py | 4 | ||||
-rw-r--r-- | nova/tests/compute/test_compute.py | 26 | ||||
-rw-r--r-- | nova/tests/test_block_device.py | 2 |
3 files changed, 30 insertions, 2 deletions
diff --git a/nova/block_device.py b/nova/block_device.py index d6999b3b19..882e60f4c4 100644 --- a/nova/block_device.py +++ b/nova/block_device.py @@ -459,11 +459,11 @@ def prepend_dev(device_name): return device_name and '/dev/' + strip_dev(device_name) -_pref = re.compile('^((x?v|s)d)') +_pref = re.compile('^((x?v|s|h)d)') def strip_prefix(device_name): - """remove both leading /dev/ and xvd or sd or vd.""" + """remove both leading /dev/ and xvd or sd or vd or hd.""" device_name = strip_dev(device_name) return _pref.sub('', device_name) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 8237718bda..37afb5ccce 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -7261,6 +7261,32 @@ class ComputeTestCase(BaseTestCase): self.assertEqual(vol_bdm.disk_bus, 'virtio') self.assertEqual(vol_bdm.device_type, 'disk') + def test_reserve_block_device_name_with_iso_instance(self): + instance = self._create_fake_instance_obj( + params={'root_device_name': '/dev/hda'}) + bdm = objects.BlockDeviceMapping( + **{'source_type': 'image', 'destination_type': 'local', + 'image_id': 'fake-image-id', 'device_name': '/dev/hda', + 'instance_uuid': instance.uuid}) + bdm.create(self.context) + + self.compute.reserve_block_device_name(self.context, instance, + '/dev/vdb', 'fake-volume-id', + 'ide', 'disk') + + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + self.context, instance.uuid) + bdms = list(bdms) + self.assertEqual(2, len(bdms)) + bdms.sort(key=operator.attrgetter('device_name')) + vol_bdm = bdms[1] + self.assertEqual('volume', vol_bdm.source_type) + self.assertEqual('volume', vol_bdm.destination_type) + self.assertEqual('/dev/hdb', vol_bdm.device_name) + self.assertEqual('fake-volume-id', vol_bdm.volume_id) + self.assertEqual('ide', vol_bdm.disk_bus) + self.assertEqual('disk', vol_bdm.device_type) + class ComputeAPITestCase(BaseTestCase): def setUp(self): diff --git a/nova/tests/test_block_device.py b/nova/tests/test_block_device.py index 3b817ac338..2410039ac5 100644 --- a/nova/tests/test_block_device.py +++ b/nova/tests/test_block_device.py @@ -133,6 +133,7 @@ class BlockDeviceTestCase(test.NoDBTestCase): self.assertEqual(block_device.strip_prefix('a'), 'a') self.assertEqual(block_device.strip_prefix('xvda'), 'a') self.assertEqual(block_device.strip_prefix('vda'), 'a') + self.assertEqual(block_device.strip_prefix('hda'), 'a') def test_get_device_letter(self): self.assertEqual(block_device.get_device_letter(''), '') @@ -142,6 +143,7 @@ class BlockDeviceTestCase(test.NoDBTestCase): self.assertEqual(block_device.get_device_letter('a'), 'a') self.assertEqual(block_device.get_device_letter('sdb2'), 'b') self.assertEqual(block_device.get_device_letter('vdc'), 'c') + self.assertEqual(block_device.get_device_letter('hdc'), 'c') def test_volume_in_mapping(self): swap = {'device_name': '/dev/sdb', |