Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1928816

Summary: When using idrac-virtualmedia, the bios_interface gets set to idrac-wsman
Product: OpenShift Container Platform Reporter: Bob Fournier <bfournie>
Component: Bare Metal Hardware ProvisioningAssignee: Bob Fournier <bfournie>
Bare Metal Hardware Provisioning sub component: ironic QA Contact: Lubov <lshilin>
Status: CLOSED ERRATA Docs Contact: Padraig O'Grady <pogrady>
Severity: low    
Priority: low CC: pogrady
Version: 4.8Keywords: Triaged
Target Milestone: ---   
Target Release: 4.9.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Cause: For idrac-virtualmedia, the bios_interface field gets set to idrac-wsman by default. Consequence: An exception occurs when attempting to get BIOS setting and no BIOS settings are available. Fix: Use idrac-redfish for the default bios_interface when using idrac-virtualmedia. Result: BIOS settings can be retrieved and no exception is seen in the logs.
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-10-18 17:29:20 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Bob Fournier 2021-02-15 15:32:54 UTC
Description of problem:

When doing an install for baremetal-ipi using idrac-virtualmedia the bios_interface gets set to idrac-wsman.  This results in an error because idrac credentials aren't provided, only redfish.

 
ERROR ironic.conductor.cleaning [req-64b1172d-3068-48ab-903b-7dbbbf9ad52f bootstrap-user - - - -] Caching of bios settings failed on node 8aab2e24-ae1c-4905-9a21-59df23db06d8. Continuing with node cleaning.: ironic.common.exception.InvalidParameterValue: The following errors were encountered while parsing driver_info:
'drac_address' not supplied to DracDriver.
'drac_username' not supplied to DracDriver.
'drac_password' not supplied to DracDriver.
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning Traceback (most recent call last):
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning   File "/usr/lib/python3.6/site-packages/ironic/conductor/cleaning.py", line 83, in do_node_clean
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning     task.driver.bios.cache_bios_settings(task)
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning   File "/usr/lib/python3.6/site-packages/ironic/drivers/modules/drac/bios.py", line 366, in cache_bios_settings
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning     client = drac_common.get_drac_client(node)
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning   File "/usr/lib/python3.6/site-packages/ironic/drivers/modules/drac/common.py", line 109, in get_drac_client
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning     driver_info = parse_driver_info(node)
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning   File "/usr/lib/python3.6/site-packages/ironic/drivers/modules/drac/common.py", line 92, in parse_driver_info
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning     raise exception.InvalidParameterValue(msg)
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning ironic.common.exception.InvalidParameterValue: The following errors were encountered while parsing driver_info:
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning 'drac_address' not supplied to DracDriver.
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning 'drac_username' not supplied to DracDriver.
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning 'drac_password' not supplied to DracDriver.
2021-02-03 05:51:35.688 1 ERROR ironic.conductor.cleaning

Comment 1 Bob Fournier 2021-02-15 15:36:17 UTC
This is the snippet in the install-config.yaml:
       role: worker
        bmc:
          address: idrac-virtualmedia://10.46.61.43/redfish/v1/Systems/System.Embedded.1
          disableCertificateVerification: True
          username: root
          password: calvin

And this is the ironic code where the bios_interface gets set up:
https://github.com/openstack/ironic/blob/master/ironic/drivers/drac.py#L62

Comment 2 Dmitry Tantsur 2021-02-16 17:02:39 UTC
Mmmm, yeah, we need to specify bios_interface explicitly, since the WSMAN implementation has priority.

Comment 3 Bob Fournier 2021-03-23 21:44:43 UTC
Will need to add BIOSInterface in BMO for example:
https://github.com/metal3-io/baremetal-operator/blob/75e27989f8c7e4e9e20bec2c5d582f7f85bc4536/pkg/provisioner/ironic/ironic.go#L419
and 
https://github.com/metal3-io/baremetal-operator/blob/75e27989f8c7e4e9e20bec2c5d582f7f85bc4536/pkg/bmc/idrac_virtualmedia.go#L92
and set it to "redfish" for idrac_virtualmedia.go

We'll have to add this interface for the BIOSConfig work to get BIOS settings in BMO.

Comment 4 Bob Fournier 2021-07-01 13:36:16 UTC
Moving to 4.9.

Comment 6 Lubov 2021-08-25 10:32:02 UTC
verified on 4.9.0-0.nightly-2021-08-25-010624

Comment 9 errata-xmlrpc 2021-10-18 17:29:20 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Moderate: OpenShift Container Platform 4.9.0 bug fix and security update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2021:3759