BDM with device_type=lun fails

Bug #2065084 reported by Dan Smith
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Fix Released
Undecided
Unassigned

Bug Description

Libvirt recently (since our code was added) refuses the serial option on a disk which is attached as a LUN. Since we officially support this in our API, we need to avoid putting serial on those disks.

Also, even when we don't hit that problem, our boot order calculation fails with:

56694407 tempest-AttachVolumeMultiAttachTest-1756694407-project-member] [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] Failed to build and run instance: KeyError: 'lun'
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] Traceback (most recent call last):
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/compute/manager.py", line 2641, in _build_and_run_instance
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] self.driver.spawn(context, instance, image_meta,
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4642, in spawn
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] xml = self._get_guest_xml(context, instance, network_info,
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 7814, in _get_guest_xml
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] conf = self._get_guest_config(instance, network_info, image_meta,
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 7318, in _get_guest_config
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] self._conf_non_lxc(
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 6969, in _conf_non_lxc
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] guest.os_boot_dev = blockinfo.get_boot_order(disk_info)
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/virt/libvirt/blockinfo.py", line 737, in get_boot_order
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] return uniq(boot_devs_dup)
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/virt/libvirt/blockinfo.py", line 735, in uniq
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] return [el for el in lst if el not in s and not s.add(el)]
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/virt/libvirt/blockinfo.py", line 735, in <listcomp>
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] return [el for el in lst if el not in s and not s.add(el)]
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] File "/opt/stack/nova/nova/virt/libvirt/blockinfo.py", line 729, in <genexpr>
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] boot_devs_dup = (BOOT_DEV_FOR_TYPE[dev['type']] for dev in
May 07 17:16:33 jammy nova-compute[133963]: ERROR nova.compute.manager [instance: 4a20e558-dba6-4daa-af66-b62de2d9c0f3] KeyError: 'lun'

Changed in nova:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to nova (master)

Reviewed: https://review.opendev.org/c/openstack/nova/+/918089
Committed: https://opendev.org/openstack/nova/commit/575ff86a4f1572786d66639f774405fbc074fdb1
Submitter: "Zuul (22348)"
Branch: master

commit 575ff86a4f1572786d66639f774405fbc074fdb1
Author: Dan Smith <email address hidden>
Date: Fri May 3 08:55:50 2024 -0700

    Avoid setting serial on raw LUN devices

    Libvirt now enforces that device="lun" (i.e. raw device passthrough)
    disks must not have the <serial> property set. We recently enabled
    the ability to manage devices by alias instead of serial, but to
    fully enable this use-case we need to avoid putting serial in the
    XML to appease libvirt.

    Related-Bug: #2065084
    Change-Id: Ifa2df89f27e58e1e64ce046edeaf6e49a7c89490

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to nova (master)

Reviewed: https://review.opendev.org/c/openstack/nova/+/918470
Committed: https://opendev.org/openstack/nova/commit/2f0c340d3910f48ab4609f477b76aa69da2f2bbb
Submitter: "Zuul (22348)"
Branch: master

commit 2f0c340d3910f48ab4609f477b76aa69da2f2bbb
Author: Dan Smith <email address hidden>
Date: Tue May 7 10:31:11 2024 -0700

    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

Changed in nova:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.