DMTF / Redfish-Tacklebox

Python based utilities for performing common management operations with Redfish
Other
52 stars 25 forks source link

rf_boot_override.py FutureState URI(/redfish/v1/Systems/Self/SD) #144

Closed capnbb closed 5 months ago

capnbb commented 7 months ago

Dear Authors,

When attempting to change next boot device using rf_boot_override.py on a new ASRock motherboard we get this error:

rf_boot_override.py --user admin --password XXXXXXX --rhost fmg39-idrac --target Pxe /usr/local/lib/python3.6/site-packages/redfish/rest/v1.py:1163: UserWarning: Scheme not specified for 'fmg39-idrac'; adding 'https://' warnings.warn("Scheme not specified for '{}'; adding 'https://'".format(base_url)) Setting a one time boot for Pxe... Operation failed: HTTP 400

Support of this Operation for Boot Properties is moved to FutureState URI(/redfish/v1/Systems/Self/SD) Ami.1.0.OperationSupportedInFutureStateURI

Debug output: rf_boot_override-2024-04-05-130912.log

Contents of /redfish/v1/Systems/Self/SD curl -k -u admin:XXXXXXX https://fmg39-idrac:/redfish/v1/Systems/Self/SD -H "content-type:application/json" -X GET > SD.json SD.json

Other details: ASRock WRX80 Creator R2.0 motherboard BMC Firmware Version 1.04.00 BIOS Firmware Version 4.02

Many thanks

Jake

mraineri commented 7 months ago

You should be able to add the --workaround option to allow the tool to apply the override in non-conformant locations.

It would be good to provide this feedback to your vendor. Requiring users to step into the settings resource to apply an active override request is not a good practice. The reason being is the context of "boot override" is already loaded with the semantic that this occurs on the next reboot.

There's some history in this issue too: https://github.com/DMTF/Redfish-Tacklebox/issues/111

capnbb commented 7 months ago

Hi Mike,

Many thanks for your help, but unfortunately --workaround didn't work :(

jog@pcterm01:~/scripts/ rf_boot_override.py --user ADMIN --password XXXXXXXX --rhost fmg39-idrac -t Pxe --workaround /usr/local/lib/python3.6/site-packages/redfish/rest/v1.py:1163: UserWarning: Scheme not specified for 'fmg39-idrac'; adding 'https://' warnings.warn("Scheme not specified for '{}'; adding 'https://'".format(base_url)) Setting a one time boot for Pxe... Operation failed: HTTP 400

Support of this Operation for Boot Properties is moved to FutureState URI(/redfish/v1/Systems/Self/SD) Ami.1.0.OperationSupportedInFutureStateURI

Debug output attached here: rf_boot_override-2024-04-10-100954.log

does --workaround need a tweak for this board?

I have asked our vendor to provide a contact at ASRock so we can properly report this, we have 20 systems using the ASRock WRX80 Creator R2.0 motherboard motherboard, so it's worth our putting some time into this.

thanks again,

Jake

mraineri commented 7 months ago

It's possible we need an update to the workaround logic. I'll take a look at the log file to see what can be done.

mraineri commented 7 months ago

It seems like there's an additional requirement to specify the override mode (UEFI vs Legacy). A user shouldn't have to specify this; the service is expected to handle a default case (typically they default to UEFI if not specified).

"The property BootSourceOverrideMode is a required property and must be included in the request."

Can you try this?

/scripts/ rf_boot_override.py --user ADMIN --password XXXXXXXX --rhost fmg39-idrac -t Pxe --mode UEFI --workaround

capnbb commented 7 months ago

Hi Mike, again, many thanks for your help - the extra flag isn't quite enough. Any further ideas?

~/scripts/ rf_boot_override.py --user ADMIN --password XXXXX --rhost fmg39-idrac -t Pxe --mode UEFI --workaround /usr/local/lib/python3.6/site-packages/redfish/rest/v1.py:1163: UserWarning: Scheme not specified for 'fmg39-idrac'; adding 'https://' warnings.warn("Scheme not specified for '{}'; adding 'https://'".format(base_url)) Setting a one time boot for Pxe... /usr/local/lib/python3.6/site-packages/redfish_utilities/systems.py:231: UserWarning: System 'None' incorrectly required applying the boot override configuration to the settings resource. Contact your vendor. warnings.warn( "System '{}' incorrectly required applying the boot override configuration to the settings resource. Contact your vendor.".format( system_id ) )

Here is the log file from running the above command in debug mode: rf_boot_override-2024-04-11-150350.log

thanks again,

Jake

mraineri commented 7 months ago

That output is all expected; it looks like the setting took effect. The tool produces warnings if it had to fallback on workaround logic to highlight to the user that they should contact their vendor about the issue, but otherwise the desired outcome was achieved.

mraineri commented 7 months ago

The one last thing to check is if rebooting the system causes it to perform a PXE boot; if it does, then you should be unblocked for your systems at this point.

capnbb commented 7 months ago

Hi Mike,

Good news :) your suggestion worked - I had just interpreted the warnings as a fatal error.

To confirm, the ASRock AMI Redfish implementation on a WRX 90 evo (bios v4.02) will reboot using PXE,on both the onboard interfaces or an add-on Mellanox 100GB card after running:

rf_boot_override.py --user ADMIN --password XXXXXXX --rhost HOSTNAME -t Pxe --mode UEFI --workaround --debug

again, many thanks for your help,

Jake

mraineri commented 5 months ago

Closing; workaround flag gets past this issue, and the follow-up with the vendor is needed to fix the behavior of the service