1*** Settings *** 2Documentation Update the PNOR code on a target BMC. 3... Execution Method: 4... python -m robot -v OPENBMC_HOST:<hostname> 5... -v DELETE_OLD_PNOR_IMAGES:<"true" or "false"> 6... -v IMAGE_FILE_PATH:<path/*.tar> 7... -v ALTERNATE_IMAGE_FILE_PATH:<path/*.tar> 8... host_code_update.robot 9... 10... Code update method BMC 11... Update work flow sequence: 12... - Upload image via REST 13... - Verify that the file exists on the BMC 14... - Check that software "Activation" is set to "Ready" 15... - Set "Requested Activation" to "Active" 16... - Wait for code update to complete 17... - Verify the new version 18 19Library ../../lib/bmc_ssh_utils.py 20Library ../../lib/code_update_utils.py 21Variables ../../data/variables.py 22Resource ../../lib/boot_utils.robot 23Resource code_update_utils.robot 24Resource ../../lib/code_update_utils.robot 25Resource ../../lib/openbmc_ffdc.robot 26Resource ../../lib/state_manager.robot 27Resource ../../lib/dump_utils.robot 28 29Test Teardown Code Update Test Teardown 30 31*** Variables *** 32 33${QUIET} ${1} 34${IMAGE_FILE_PATH} ${EMPTY} 35${DELETE_OLD_PNOR_IMAGES} false 36${DELETE_OLD_GUARD_FILE} false 37${ALTERNATE_IMAGE_FILE_PATH} ${EMPTY} 38 39*** Test Cases *** 40 41REST Host Code Update 42 [Documentation] Do a PNOR code update by uploading image on BMC via REST. 43 # 1. Delete error logs if there is any. 44 # 1. Do code update. 45 # 2. Do post update the following: 46 # - Collect FFDC if error log exist and delete error logs. 47 [Tags] REST_Host_Code_Update 48 [Setup] Code Update Setup 49 50 Upload And Activate Image ${IMAGE_FILE_PATH} 51 OBMC Reboot (off) 52 53 54Post Update Boot To OS 55 [Documentation] Boot the host OS 56 [Tags] Post_Update_Boot_To_OS 57 [Teardown] Run Keywords Stop SOL Console Logging 58 ... AND Code Update Test Teardown 59 60 Run Keyword If '${PREV_TEST_STATUS}' == 'FAIL' 61 ... Fail Code update failed. No need to boot to OS. 62 Start SOL Console Logging 63 Delete Error Logs 64 REST Power On 65 66 67Host Image Priority Attribute Test 68 [Documentation] Set "Priority" attribute. 69 [Tags] Host_Image_Priority_Attribute_Test 70 [Template] Temporarily Set PNOR Attribute 71 72 # Property Value 73 Priority ${0} 74 Priority ${1} 75 Priority ${127} 76 77 78Host Set Priority To Invalid Values 79 [Documentation] Attempt to set the priority of an image to an invalid 80 ... value and expect an error. 81 [Tags] Host_Set_Priority_To_Invalid_Values 82 [Template] Set Priority To Invalid Value And Expect Error 83 84 # Version Type Priority 85 ${VERSION_PURPOSE_HOST} ${-1} 86 ${VERSION_PURPOSE_HOST} ${256} 87 88 89Set RequestedActivation To None 90 [Documentation] Set the RequestedActivation of the image to None and 91 ... verify that it is in fact set to None. 92 [Tags] Set_RequestedActivation_To_None 93 94 ${software_objects}= Get Software Objects 95 Set Host Software Property @{software_objects}[0] RequestedActivation 96 ... ${REQUESTED_NONE} 97 ${software_properties}= Get Host Software Property @{software_objects}[0] 98 Should Be Equal As Strings &{software_properties}[RequestedActivation] 99 ... ${REQUESTED_NONE} 100 101 102Set RequestedActivation And Activation To Invalid Value 103 [Documentation] Set the RequestedActivation and Activation propreties of 104 ... the image to an invalid value and verify that it was not 105 ... changed. 106 [Template] Set Property To Invalid Value And Verify No Change 107 [Tags] Set_RequestedActivation_And_Activation_To_Invalid_Value 108 109 # Property Version Type 110 RequestedActivation ${VERSION_PURPOSE_HOST} 111 Activation ${VERSION_PURPOSE_HOST} 112 113 114Upload And Activate Multiple Host Images 115 [Documentation] Upload another PNOR image and verify that its state is 116 ... different from all others. 117 [Tags] Upload_And_Activate_Multiple_Host_Images 118 [Template] Activate Image And Verify No Duplicate Priorities 119 [Setup] Upload And Activate Multiple BMC Images Setup 120 121 # Image File Path Image Purpose 122 ${ALTERNATE_IMAGE_FILE_PATH} ${VERSION_PURPOSE_HOST} 123 124 125Set Same Priority For Multiple Host Images 126 [Documentation] Attempt to set the priority to be the same for two PNOR 127 ... images and verify that the priorities are not the same. 128 [Tags] Set_Same_Priority_For_Multiple_Host_Images 129 130 Run Keyword If '${PREV_TEST_STATUS}' == 'FAIL' 131 ... Fail Activation of alternate image failed. Cannot set priority. 132 Set Same Priority For Multiple Images ${VERSION_PURPOSE_HOST} 133 134 135Delete Host Image 136 [Documentation] Delete a PNOR image from the BMC and PNOR flash chip. 137 [Tags] Delete_Host_Image 138 [Setup] Initiate Host PowerOff 139 140 ${software_objects}= Get Software Objects 141 ... version_type=${VERSION_PURPOSE_HOST} 142 ${num_images}= Get Length ${software_objects} 143 Should Be True 0 < ${num_images} 144 ... msg=There are no PNOR images on the BMC to delete. 145 Delete Image And Verify @{software_objects}[0] ${VERSION_PURPOSE_HOST} 146 147 148*** Keywords *** 149 150Temporarily Set PNOR Attribute 151 [Documentation] Update the PNOR attribute value. 152 [Arguments] ${attribute_name} ${attribute_value} 153 154 # Description of argument(s): 155 # attribute_name Host software attribute name (e.g. "Priority"). 156 # attribute_value Value to be written. 157 158 ${image_ids}= Get Software Objects 159 ${init_host_properties}= Get Host Software Property ${image_ids[0]} 160 ${initial_priority}= Set Variable ${init_host_properties["Priority"]} 161 162 Set Host Software Property ${image_ids[0]} ${attribute_name} 163 ... ${attribute_value} 164 165 ${cur_host_properties}= Get Host Software Property ${image_ids[0]} 166 Should Be Equal As Integers ${cur_host_properties["Priority"]} 167 ... ${attribute_value} 168 169 # Revert to to initial value. 170 Set Host Software Property 171 ... ${image_ids[0]} ${attribute_name} ${initial_priority} 172 173 174Code Update Setup 175 [Documentation] Do code update test case setup. 176 # - Clean up all existing BMC dumps. 177 # - Clean up all currently install PNOR images. 178 179 Initiate Host PowerOff 180 Delete All Dumps 181 Delete Error Logs 182 Run Keyword If 'true' == '${DELETE_OLD_PNOR_IMAGES}' 183 ... Delete All PNOR Images 184 Run Keyword If 'true' == '${DELETE_OLD_GUARD_FILE}' BMC Execute Command 185 ... rm -f /var/lib/phosphor-software-manager/pnor/prsv/GUARD 186 187 188Upload And Activate Multiple BMC Images Setup 189 [Documentation] Check that the ALTERNATE_FILE_PATH variable is set. 190 191 Should Not Be Empty ${ALTERNATE_IMAGE_FILE_PATH} 192 193 194Get PNOR Extended Version 195 [Documentation] Return the PNOR extended version. 196 [Arguments] ${manifest_path} 197 198 # Description of argument(s): 199 # manifest_path Path of the MANIFEST file 200 # (e.g. "/tmp/images/abc123/MANIFEST"). 201 202 ${version}= BMC Execute Command 203 ... grep extended_version= ${manifest_path} 204 [return] ${version.split(",")} 205 206 207Code Update Test Teardown 208 [Documentation] Do code update test case teardown. 209 # 1. Collect FFDC if test case failed. 210 # 2. Collect FFDC if test PASS but error log exists. 211 212 FFDC On Test Case Fail 213 Run Keyword If '${TEST_STATUS}' == 'PASS' Check Error And Collect FFDC 214