summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2012-07-20 11:54:51 +0100
committerDaniel P. Berrange <berrange@redhat.com>2012-07-20 13:39:46 +0100
commitcff588e67a4a1dee4f0a690c30d467495e0d679f (patch)
tree4ddf30b719d3c0b32b4f6a503ccbf3fef604b2c2 /nova
parent7b5a46b29fe994e9dc973bd7e5b60dee9f803f91 (diff)
Ensure to use 'hdN' for IDE disk device in libvirt driver
When configuring the root disk for an image which is tagged as an ISO, the libvirt driver sets the bus=ide, but still uses the normal root device name, eg dev=vda. It must instead use dev=hda for the IDE bus Change-Id: If0a4c50043d6e4d9e54a5dcbdc05effbb72eced6 Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'nova')
-rw-r--r--nova/tests/test_libvirt.py17
-rw-r--r--nova/virt/libvirt/driver.py1
2 files changed, 11 insertions, 7 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index f2ad9632d..7d60a9a3a 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -861,19 +861,19 @@ class LibvirtConnTestCase(test.TestCase):
def test_xml_disk_bus_virtio(self):
self._check_xml_and_disk_bus({"disk_format": "raw"},
None,
- (("disk", "virtio"),))
+ (("disk", "virtio", "vda"),))
def test_xml_disk_bus_ide(self):
self._check_xml_and_disk_bus({"disk_format": "iso"},
None,
- (("cdrom", "ide"),))
+ (("cdrom", "ide", "hda"),))
def test_xml_disk_bus_ide_and_virtio(self):
- swap = {'device_name': '/dev/sdb',
+ swap = {'device_name': '/dev/vdc',
'swap_size': 1}
ephemerals = [{'num': 0,
'virtual_name': 'ephemeral0',
- 'device_name': '/dev/sdc1',
+ 'device_name': '/dev/vdb',
'size': 1}]
block_device_info = {
'swap': swap,
@@ -881,9 +881,9 @@ class LibvirtConnTestCase(test.TestCase):
self._check_xml_and_disk_bus({"disk_format": "iso"},
block_device_info,
- (("cdrom", "ide"),
- ("disk", "virtio"),
- ("disk", "virtio")))
+ (("cdrom", "ide", "hda"),
+ ("disk", "virtio", "vdb"),
+ ("disk", "virtio", "vdc")))
def test_list_instances(self):
self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver, '_conn')
@@ -1332,12 +1332,15 @@ class LibvirtConnTestCase(test.TestCase):
for i in range(len(wantConfig)):
want_device_type = wantConfig[i][0]
want_device_bus = wantConfig[i][1]
+ want_device_dev = wantConfig[i][2]
got_device_type = got_disks[i].get('device')
got_device_bus = got_disk_targets[i].get('bus')
+ got_device_dev = got_disk_targets[i].get('dev')
self.assertEqual(got_device_type, want_device_type)
self.assertEqual(got_device_bus, want_device_bus)
+ self.assertEqual(got_device_dev, want_device_dev)
def _check_xml_and_uuid(self, image_meta):
user_context = context.RequestContext(self.user_id, self.project_id)
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index d41a18304..34f8a2369 100644
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -1651,6 +1651,7 @@ class LibvirtDriver(driver.ComputeDriver):
else:
if image_meta and image_meta.get('disk_format') == 'iso':
root_device_type = 'cdrom'
+ root_device = 'hda'
else:
root_device_type = 'disk'