From 2f0c340d3910f48ab4609f477b76aa69da2f2bbb Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Tue, 7 May 2024 10:31:11 -0700 Subject: [PATCH] Fix device_type=lun with boot_index Right now we'll fail to calculate the boot order of a set of BDMs if one of them is a device_type=lun. This fixes that and teaches us that it's just a "hd" from qemu's perspective. Closes-Bug: #2065084 Change-Id: Ic1340918738d503fc797c9373fe2e1dd16b27a09 --- nova/tests/unit/virt/libvirt/test_blockinfo.py | 14 ++++++++++++++ nova/virt/libvirt/blockinfo.py | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/nova/tests/unit/virt/libvirt/test_blockinfo.py b/nova/tests/unit/virt/libvirt/test_blockinfo.py index 5a0dbb40ce3b..75c559979ad4 100644 --- a/nova/tests/unit/virt/libvirt/test_blockinfo.py +++ b/nova/tests/unit/virt/libvirt/test_blockinfo.py @@ -1372,6 +1372,20 @@ class LibvirtBlockInfoTest(test.NoDBTestCase): expected_order = ['hd', 'cdrom'] self.assertEqual(expected_order, blockinfo.get_boot_order(disk_info)) + def test_get_boot_order_lun(self): + disk_info = { + 'disk_bus': 'virtio', + 'cdrom_bus': 'ide', + 'mapping': { + 'disk': {'bus': 'virtio', 'dev': 'vda', + 'type': 'disk', 'boot_index': '1'}, + 'root': {'bus': 'virtio', 'dev': 'vda', + 'type': 'lun', 'boot_index': '1'}, + } + } + expected_order = ['hd'] + self.assertEqual(expected_order, blockinfo.get_boot_order(disk_info)) + def _get_rescue_image_meta(self, props_dict): meta_dict = dict(self.test_image_meta) meta_dict['properties'] = props_dict diff --git a/nova/virt/libvirt/blockinfo.py b/nova/virt/libvirt/blockinfo.py index 4efc6fbaeb11..3b403ce98e2a 100644 --- a/nova/virt/libvirt/blockinfo.py +++ b/nova/virt/libvirt/blockinfo.py @@ -88,7 +88,8 @@ from nova.virt import osinfo CONF = cfg.CONF -BOOT_DEV_FOR_TYPE = {'disk': 'hd', 'cdrom': 'cdrom', 'floppy': 'fd'} +BOOT_DEV_FOR_TYPE = {'disk': 'hd', 'cdrom': 'cdrom', 'floppy': 'fd', + 'lun': 'hd'} # NOTE(aspiers): If you change this, don't forget to update the docs and # metadata for hw_*_bus in glance. SUPPORTED_DEVICE_BUSES = {