Allow disk driver to be chosen per image
This allows for an image in glance to be annotated with a
property describing the required disk / cdrom bus type.
eg
# glance image-update \
--property disk_bus=ide \
--property cdrom_bus=ide \
f16-x86_64-openstack-sda
Valid bus values vary per the libvirt_type setting:
qemu/kvm: 'virtio', 'scsi', 'ide', 'usb'
xen: 'xen', 'ide'
uml: 'uml'
Requesting an unsupported disk bus will cause the guest
instance to fail to launch.
DocImpact
Blueprint: libvirt-custom-hardware
Change-Id: Ibc20b843ceccf374eae246384a3f246cc1c52a28
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
from nova import block_device
|
||||
from nova import context
|
||||
from nova import db
|
||||
from nova import exception
|
||||
from nova import test
|
||||
import nova.tests.image.fake
|
||||
from nova.virt.libvirt import blockinfo
|
||||
@@ -394,3 +395,33 @@ class LibvirtBlockInfoTest(test.TestCase):
|
||||
'root': {'bus': 'virtio', 'dev': 'vdf', 'type': 'disk'}
|
||||
}
|
||||
self.assertEqual(mapping, expect)
|
||||
|
||||
def test_get_disk_bus(self):
|
||||
bus = blockinfo.get_disk_bus_for_device_type('kvm')
|
||||
self.assertEqual(bus, 'virtio')
|
||||
|
||||
bus = blockinfo.get_disk_bus_for_device_type('kvm',
|
||||
device_type='cdrom')
|
||||
self.assertEqual(bus, 'ide')
|
||||
|
||||
image_meta = {'properties': {'disk_bus': 'scsi'}}
|
||||
bus = blockinfo.get_disk_bus_for_device_type('kvm',
|
||||
image_meta)
|
||||
self.assertEqual(bus, 'scsi')
|
||||
|
||||
image_meta = {'properties': {'disk_bus': 'usb',
|
||||
'cdrom_bus': 'scsi'}}
|
||||
bus = blockinfo.get_disk_bus_for_device_type('kvm',
|
||||
image_meta,
|
||||
device_type='cdrom')
|
||||
self.assertEqual(bus, 'scsi')
|
||||
|
||||
bus = blockinfo.get_disk_bus_for_device_type('kvm',
|
||||
image_meta)
|
||||
self.assertEqual(bus, 'usb')
|
||||
|
||||
image_meta = {'properties': {'disk_bus': 'xen'}}
|
||||
self.assertRaises(exception.NovaException,
|
||||
blockinfo.get_disk_bus_for_device_type,
|
||||
'kvm',
|
||||
image_meta)
|
||||
|
||||
Reference in New Issue
Block a user