Merge "libvirt: use osinfo when configuring the disk bus"
This commit is contained in:
commit
197bd6dd12
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
|
import fixtures
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
from nova import block_device
|
from nova import block_device
|
||||||
@ -25,6 +26,7 @@ from nova import objects
|
|||||||
from nova import test
|
from nova import test
|
||||||
from nova.tests.unit import fake_block_device
|
from nova.tests.unit import fake_block_device
|
||||||
import nova.tests.unit.image.fake
|
import nova.tests.unit.image.fake
|
||||||
|
from nova.tests.unit.virt import fakelibosinfo
|
||||||
from nova.virt import block_device as driver_block_device
|
from nova.virt import block_device as driver_block_device
|
||||||
from nova.virt import driver
|
from nova.virt import driver
|
||||||
from nova.virt.libvirt import blockinfo
|
from nova.virt.libvirt import blockinfo
|
||||||
@ -744,6 +746,17 @@ class LibvirtBlockInfoTest(test.NoDBTestCase):
|
|||||||
blockinfo.get_disk_bus_for_device_type,
|
blockinfo.get_disk_bus_for_device_type,
|
||||||
instance, 'kvm', image_meta)
|
instance, 'kvm', image_meta)
|
||||||
|
|
||||||
|
def test_get_disk_bus_with_osinfo(self):
|
||||||
|
self.useFixture(fixtures.MonkeyPatch(
|
||||||
|
'nova.virt.osinfo.libosinfo',
|
||||||
|
fakelibosinfo))
|
||||||
|
instance = objects.Instance(**self.test_instance)
|
||||||
|
image_meta = {'properties': {'os_name': 'fedora22'}}
|
||||||
|
image_meta = objects.ImageMeta.from_dict(image_meta)
|
||||||
|
bus = blockinfo.get_disk_bus_for_device_type(instance,
|
||||||
|
'kvm', image_meta)
|
||||||
|
self.assertEqual('virtio', bus)
|
||||||
|
|
||||||
def test_success_get_disk_bus_for_disk_dev(self):
|
def test_success_get_disk_bus_for_disk_dev(self):
|
||||||
expected = (
|
expected = (
|
||||||
('ide', ("kvm", "hda")),
|
('ide', ("kvm", "hda")),
|
||||||
|
@ -84,6 +84,7 @@ from nova.objects import base as obj_base
|
|||||||
from nova.virt import configdrive
|
from nova.virt import configdrive
|
||||||
from nova.virt import driver
|
from nova.virt import driver
|
||||||
from nova.virt.libvirt import utils as libvirt_utils
|
from nova.virt.libvirt import utils as libvirt_utils
|
||||||
|
from nova.virt import osinfo
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
@ -234,8 +235,11 @@ def get_disk_bus_for_device_type(instance,
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# Prefer a disk bus set against the image first of all
|
# Prefer a disk bus set against the image first of all
|
||||||
key = "hw_" + device_type + "_bus"
|
if device_type == "disk":
|
||||||
disk_bus = image_meta.properties.get(key)
|
disk_bus = osinfo.HardwareProperties(image_meta).disk_model
|
||||||
|
else:
|
||||||
|
key = "hw_" + device_type + "_bus"
|
||||||
|
disk_bus = image_meta.properties.get(key)
|
||||||
if disk_bus is not None:
|
if disk_bus is not None:
|
||||||
if not is_disk_bus_valid_for_virt(virt_type, disk_bus):
|
if not is_disk_bus_valid_for_virt(virt_type, disk_bus):
|
||||||
raise exception.UnsupportedHardware(model=disk_bus,
|
raise exception.UnsupportedHardware(model=disk_bus,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user