iLO drivers: Inconsistent boot mode default value

Bug #1604002 reported by Lucas Alvares Gomes
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ironic
Fix Released
Medium
Shivanand Tendulker
tripleo
Fix Released
Medium
Dmitry Tantsur

Bug Description

From a downstream bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1320318

When no boot mode is explicitly passed to the iLO drivers (via flavor/capabilities) the driver picks either "uefi" or "bios" based on a series of factors: if secure boot is requested [0], if trusted boot is requested [0], if the machine is "capable of" booting in UEFI [1], etc...

One interesting thing is that, the documentation [1] says that "If the pending boot mode is not set on the node then iLO drivers use ‘uefi’ boot mode for UEFI capable servers and “bios” when UEFI is not supported.". So, the boot mode gets set to UEFI if the node is "UEFI capable" instead of checking if UEFI is actually enabled for that node making it fail to deploy (as per downstream bug, see above)

To summarize, the "magic" in choosing the default value for boot mode in the iLO drivers is the source of a lot of pain for users and developers that have to troubleshoot errors it may cause. This behavior also causes the iLO driver to be inconsistent with all other drivers in tree that assumes "bios" if no boot mode is set on the flavor/capabilities.

[0] https://github.com/openstack/ironic/blob/53df7893f08aa96d9694393bf45bf77fb2aa11e2/ironic/drivers/modules/deploy_utils.py#L1040

[1] http://docs.openstack.org/developer/ironic/drivers/ilo.html#boot-mode-support

Changed in ironic:
importance: Undecided → Medium
summary: - iLO drivers: Inconsistent boot mode default values
+ iLO drivers: Inconsistent boot mode default value
Revision history for this message
Dmitry Tantsur (divius) wrote :

At the very least we need a configuration option for this default.. However, we might need to change it completely.

Changed in ironic:
status: New → Triaged
tags: added: ilo
description: updated
description: updated
Revision history for this message
Shivanand Tendulker (stendulker) wrote :

Thank you for reporting this.

It is not clear from defect if the deploy had failed. If it is deploy failure,
Was it due to some failure in proliantutils calls related to setting boot mode?
Or was it due the image was capable of bios boot and failed to boot in the UEFI environment?
Is this hardware of type Gen 9?

Few comments on boot mode on iLO drivers.

Secure Boot:-
Boot mode needs to be changed to UEFI if secure boot is requested during deploy. Enabling UEFI Secure boot is a two step process and each step needs a server reset.
1. Change boot mode to UEFI. Reset server.
2. Enable UEFI secure boot. Reset server.

Trusted boot:-
Trusted boot is not being qualified on iLO drivers. It was a common change done when trusted boot feature was enabled. This condition is true for all drivers. Trusted boot is supported only in bios boot mode.

Default boot:-
When no boot mode is requested in the node/instance_info. It sets boot mode in following order:
1. Uses boot mode from node capabilities, if present.
2. Uses pending boot mode on the Node, if present.
3. Uses 'UEFI' boot mode if underlying server supports it.
4. Uses 'BIOS'

Revision history for this message
Lucas Alvares Gomes (lucasagomes) wrote :

Hi Shivanand,

Thanks for the reply. I will try to get some more information with the reporter of the bug ticket in red hat.

But, this bug is more about the user experience rather than the error itself. For example, when using other drivers in-tree if the boot mode is not explicitly passed we it does assume "bios" and in iLO the behavior can vary (as you described in the comment #2). This is an inconsistency between the drivers and causes some frustration in the users.

Revision history for this message
Lucas Alvares Gomes (lucasagomes) wrote :

Hi Shavanand,

Got an update from the Red Hat folks, the hardware model they are using is: HP bl460c Gen9 Blades.

Also, they see the following message when it's switching to UEFI: "BIOS configuration was modified by HPE RESTful API. The system will reboot for configuration changes to take effect."

Hope that helps,
Lucas

Revision history for this message
Shivanand Tendulker (stendulker) wrote :

Thank you Lucas.

This message "BIOS configuration was modified by HPE RESTful API. The system will reboot for configuration changes to take effect." will be seen on the iLO console.

It is an iLO behavior. It will be seen every time any iLO settings are changed. iLO would go for internal reset to apply these settings.

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

Fix proposed to branch: master
Review: https://review.openstack.org/345231

Changed in ironic:
assignee: nobody → Shivanand Tendulker (stendulker)
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/345231
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=8b2ec52e42fc49646309ab07145d1fe5e20ce0bb
Submitter: Jenkins
Branch: master

commit 8b2ec52e42fc49646309ab07145d1fe5e20ce0bb
Author: Shivanand Tendulker <email address hidden>
Date: Wed Jul 20 23:52:26 2016 -0700

    Fix iLO drivers inconsistent boot mode default value

    When no boot mode is explicitly passed to iLO drivers, it picks
    default boot mode based on series of factors like, pending boot
    mode setting, UEFI boot mode support on the node. This causes
    confusion to the users as these factors are node specific and
    beyond user's control. User expects a predictable behavior when
    no boot mode is explicitly passed.
    A new configuration parameter '[ilo]/default_boot_mode' has
    been added to specify default boot mode. It would be used if no
    boot mode is explicitly passed to iLO drivers.

    Change-Id: I4efd28985674bedabe42fe786135255698425321
    Closes-Bug: #1604002

Changed in ironic:
status: In Progress → Fix Released
Dmitry Tantsur (divius)
Changed in tripleo:
status: New → Triaged
importance: Undecided → Medium
assignee: nobody → Dmitry Tantsur (divius)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to instack-undercloud (master)

Fix proposed to branch: master
Review: https://review.openstack.org/392181

Changed in tripleo:
status: Triaged → In Progress
Steven Hardy (shardy)
Changed in tripleo:
milestone: none → ocata-1
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to instack-undercloud (master)

Reviewed: https://review.openstack.org/392181
Committed: https://git.openstack.org/cgit/openstack/instack-undercloud/commit/?id=f3fd1e384e90db5f23a9bec7836633f122f03cc2
Submitter: Jenkins
Branch: master

commit f3fd1e384e90db5f23a9bec7836633f122f03cc2
Author: Dmitry Tantsur <email address hidden>
Date: Tue Nov 1 15:41:47 2016 +0100

    Prevent pxe_ilo driver from guessing the boot mode to use

    The iLO drivers try to set boot mode to UEFI when they detect UEFI-capable hardware.
    This can be surprising for operators, as it's not consistent with other drivers.
    Also, UEFI support in TripleO is somewhat less mature.

    Change the default boot mode to "bios" via puppet. Operators can still change
    the boot mode per node by setting an appropriate capability.

    Change-Id: Ide26d05289ba962759163a60dab06e5152812dba
    Closes-Bug: #1604002

Changed in tripleo:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to instack-undercloud (stable/newton)

Fix proposed to branch: stable/newton
Review: https://review.openstack.org/397112

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to instack-undercloud (stable/newton)

Reviewed: https://review.openstack.org/397112
Committed: https://git.openstack.org/cgit/openstack/instack-undercloud/commit/?id=8b4bdb353309109f93966f11aae08c2f57c1410d
Submitter: Jenkins
Branch: stable/newton

commit 8b4bdb353309109f93966f11aae08c2f57c1410d
Author: Dmitry Tantsur <email address hidden>
Date: Tue Nov 1 15:41:47 2016 +0100

    Prevent pxe_ilo driver from guessing the boot mode to use

    The iLO drivers try to set boot mode to UEFI when they detect UEFI-capable hardware.
    This can be surprising for operators, as it's not consistent with other drivers.
    Also, UEFI support in TripleO is somewhat less mature.

    Change the default boot mode to "bios" via puppet. Operators can still change
    the boot mode per node by setting an appropriate capability.

    Change-Id: Ide26d05289ba962759163a60dab06e5152812dba
    Closes-Bug: #1604002
    (cherry picked from commit f3fd1e384e90db5f23a9bec7836633f122f03cc2)

tags: added: in-stable-newton
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/instack-undercloud 6.0.0.0b2

This issue was fixed in the openstack/instack-undercloud 6.0.0.0b2 development milestone.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/instack-undercloud 5.2.0

This issue was fixed in the openstack/instack-undercloud 5.2.0 release.

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.