diff options
| author | Daniel P. Berrange <berrange@redhat.com> | 2013-01-16 12:38:23 +0000 |
|---|---|---|
| committer | Daniel P. Berrange <berrange@redhat.com> | 2013-02-06 14:13:43 +0000 |
| commit | 66a7f044f5143feaf7046cebafea3df3ea95e04b (patch) | |
| tree | 87aab6df52a33f1071f0e8738fc7fa2bddf8e93f /nova/tests | |
| parent | 7be531fe9462f2b07d4a1abf6687f649d1dfbb89 (diff) | |
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>
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/test_libvirt_blockinfo.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/nova/tests/test_libvirt_blockinfo.py b/nova/tests/test_libvirt_blockinfo.py index 23f846324..e8d548399 100644 --- a/nova/tests/test_libvirt_blockinfo.py +++ b/nova/tests/test_libvirt_blockinfo.py @@ -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) |
