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 21Library ../../lib/gen_robot_keyword.py 22 23Suite Setup Suite Setup Execution 24Suite Teardown Redfish.Logout 25Test Setup Printn 26Test Teardown FFDC On Test Case Fail 27 28 29*** Variables *** 30 31${ACTIVATION_WAIT_TIMEOUT} 8 min 32 33*** Test Cases *** 34 35Redfish Signed Code Update 36 [Documentation] BMC/Host signed code update over functional signed 37 ... image, when FieldMode is set to true value. 38 [Tags] Redfish_Signed_Code_Update 39 [Template] Redfish Signed Firmware Update 40 41 # image_file_path 42 ${IMAGE_FILE_PATH} 43 44 45Redfish Fail Unsigned Code Update 46 [Documentation] BMC/Host unsigned code update over functional signed 47 ... image, when Field Mode is set to true to value. 48 [Tags] Redfish_Fail_Unsigned_Code_Update 49 [Template] Redfish Unsigned Firmware Update 50 51 # image_file_path 52 ${IMAGE_FILE_PATH} 53 54 55REST Failure When Field Mode Set To Disable 56 [Documentation] Verify error while disabling field mode from enabled mode. 57 [Tags] REST_Failure_When_Field_Mode_Set_To_Disable 58 59 ${args}= Create Dictionary data=${0} 60 ${resp}= OpenBMC Post Request ${SOFTWARE_VERSION_URI}attr/FieldModeEnabled data=${args} 61 Should Be Equal As Strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED} 62 63 64*** Keywords *** 65 66Suite Setup Execution 67 [Documentation] Do the suite setup. 68 69 Valid File Path IMAGE_FILE_PATH 70 Enable Field Mode And Verify Unmount 71 Redfish.Login 72 Redfish Delete All BMC Dumps 73 Redfish Purge Event Log 74 75 76Redfish Signed Firmware Update 77 [Documentation] Update the BMC/Host firmware via redfish interface. 78 [Arguments] ${image_file_path} 79 80 # Description of argument(s): 81 # IMAGE_FILE_PATH The path to the image file. 82 83 Field Mode Should Be Enabled 84 ${image_version}= Get Version Tar ${image_file_path} 85 86 ${post_code_update_actions}= Get Post Boot Action 87 ${state}= Get Pre Reboot State 88 Rprint Vars state 89 90 Run Keyword And Ignore Error Set ApplyTime policy=OnReset 91 92 # Python module: get_member_list(resource_path) 93 ${before_inv_list}= redfish_utils.Get Member List /redfish/v1/UpdateService/FirmwareInventory 94 Log To Console Current images on the BMC before upload: ${before_inv_list} 95 96 Redfish Upload Image /redfish/v1/UpdateService ${IMAGE_FILE_PATH} 97 98 # Python module: get_member_list(resource_path) 99 ${after_inv_list}= redfish_utils.Get Member List /redfish/v1/UpdateService/FirmwareInventory 100 Log To Console Current images on the BMC after upload: ${after_inv_list} 101 102 ${image_id}= Evaluate set(${after_inv_list}) - set(${before_inv_list}) 103 Should Not Be Empty ${image_id} 104 ${image_id}= Evaluate list(${image_id})[0].split('/')[-1] 105 Log To Console Firmware installation in progress with image id:: ${image_id} 106 107 Wait Until Keyword Succeeds ${ACTIVATION_WAIT_TIMEOUT} 10 sec 108 ... Check Image Update Progress State match_state='Enabled' image_id=${image_id} 109 110 # Python module: get_version_tar(tar_file_path) 111 ${tar_version}= code_update_utils.Get Version Tar ${IMAGE_FILE_PATH} 112 ${image_info}= Get Software Inventory State By Version ${tar_version} 113 114 Run Key ${post_code_update_actions['${image_info["image_type"]}']['OnReset']} 115 Redfish.Login 116 Redfish Verify BMC Version ${IMAGE_FILE_PATH} 117 118 119Redfish Unsigned Firmware Update 120 [Documentation] Update the BMC/Host firmware via redfish interface. 121 [Arguments] ${image_file_path} 122 123 # Description of argument(s): 124 # IMAGE_FILE_PATH The path to the image file. 125 126 Field Mode Should Be Enabled 127 Set ApplyTime policy=Immediate 128 Redfish Upload Image ${REDFISH_BASE_URI}UpdateService ${image_file_path} 129 ${image_id}= Get Latest Image ID 130 Rprint Vars image_id 131 Sleep 5s 132 Wait Until Keyword Succeeds 8 min 20 sec 133 ... Check Image Update Progress State 134 ... match_state='Disabled', 'Updating', 'Disabled' image_id=${image_id} 135 Delete Software Object 136 ... /xyz/openbmc_project/software/${image_id} 137 138