1*** Settings *** 2Documentation Redfish BMC/Host signed and unsigned code update 3... over BMC functional signed image. 4 5# Test Parameters: 6# IMAGE_FILE_PATH The path to the BMC/Host image file. 7# 8# Firmware update states: 9# Enabled Image is installed and either functional or active. 10# Disabled Image installation failed or ready for activation. 11# Updating Image installation currently in progress. 12 13Resource ../../lib/resource.robot 14Resource ../../lib/bmc_redfish_resource.robot 15Resource ../../lib/openbmc_ffdc.robot 16Resource ../../lib/common_utils.robot 17Resource ../../lib/code_update_utils.robot 18Resource ../../lib/redfish_code_update_utils.robot 19Library ../../lib/gen_robot_valid.py 20Library ../../lib/var_funcs.py 21 22Suite Setup Suite Setup Execution 23Suite Teardown Redfish.Logout 24Test Setup Printn 25Test Teardown FFDC On Test Case Fail 26 27*** Test Cases *** 28 29Redfish Signed Code Update 30 [Documentation] BMC/Host signed code update over functional signed 31 ... image, when FieldMode is set to true value. 32 [Tags] Redfish_Signed_Code_Update 33 [Template] Redfish Signed Firmware Update 34 35 # image_file_path 36 ${IMAGE_FILE_PATH} 37 38 39Redfish Fail Unsigned Code Update 40 [Documentation] BMC/Host unsigned code update over functional signed 41 ... image, when Field Mode is set to true to value. 42 [Tags] Redfish_Fail_Unsigned_Code_Update 43 [Template] Redfish Unsigned Firmware Update 44 45 # image_file_path 46 ${IMAGE_FILE_PATH} 47 48 49REST Failure When Field Mode Set To Disable 50 [Documentation] Verify error while disabling field mode from enabled mode. 51 [Tags] REST_Failure_When_Field_Mode_Set_To_Disable 52 53 ${args}= Create Dictionary data=${0} 54 ${resp}= OpenBMC Post Request ${SOFTWARE_VERSION_URI}attr/FieldModeEnabled data=${args} 55 Should Be Equal As Strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED} 56 57 58*** Keywords *** 59 60Suite Setup Execution 61 [Documentation] Do the suite setup. 62 63 Valid File Path IMAGE_FILE_PATH 64 Enable Field Mode And Verify Unmount 65 Redfish.Login 66 Delete All BMC Dump 67 Redfish Purge Event Log 68 69 70Redfish Signed Firmware Update 71 [Documentation] Update the BMC/Host firmware via redfish interface. 72 [Arguments] ${image_file_path} 73 74 # Description of argument(s): 75 # IMAGE_FILE_PATH The path to the image file. 76 77 Field Mode Should Be Enabled 78 ${image_version}= Get Version Tar ${image_file_path} 79 ${state}= Get Pre Reboot State 80 Rprint Vars state 81 Redfish Upload Image And Check Progress State Immediate 82 ${image_info}= Get Software Inventory State By Version ${image_version} 83 Run Keyword If 'BMC update' == '${image_info["image_type"]}' 84 ... Reboot BMC And Verify BMC Image Immediate start_boot_seconds=${state['epoch_seconds']} 85 ... ELSE 86 ... Poweron Host And Verify Host Image 87 88 89Redfish Unsigned Firmware Update 90 [Documentation] Update the BMC/Host firmware via redfish interface. 91 [Arguments] ${image_file_path} 92 93 # Description of argument(s): 94 # IMAGE_FILE_PATH The path to the image file. 95 96 Field Mode Should Be Enabled 97 Set ApplyTime policy=Immediate 98 Redfish Upload Image ${REDFISH_BASE_URI}UpdateService ${image_file_path} 99 ${image_id}= Get Latest Image ID 100 Rprint Vars image_id 101 Sleep 5s 102 Wait Until Keyword Succeeds 8 min 20 sec 103 ... Check Image Update Progress State 104 ... match_state='Disabled', 'Updating', 'Disabled' image_id=${image_id} 105 Delete Software Object 106 ... /xyz/openbmc_project/software/${image_id} 107 108