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 Priority ${255} 77 78 79Host Set Priority To Invalid Values 80 [Documentation] Attempt to set the priority of an image to an invalid 81 ... value and expect an error. 82 [Tags] Host_Set_Priority_To_Invalid_Values 83 [Template] Set Priority To Invalid Value And Expect Error 84 85 # Version Type Priority 86 ${VERSION_PURPOSE_HOST} ${-1} 87 ${VERSION_PURPOSE_HOST} ${256} 88 89 90Set RequestedActivation To None 91 [Documentation] Set the RequestedActivation of the image to None and 92 ... verify that it is in fact set to None. 93 [Tags] Set_RequestedActivation_To_None 94 95 ${software_objects}= Get Software Objects 96 Set Host Software Property @{software_objects}[0] RequestedActivation 97 ... ${REQUESTED_NONE} 98 ${software_properties}= Get Host Software Property @{software_objects}[0] 99 Should Be Equal As Strings &{software_properties}[RequestedActivation] 100 ... ${REQUESTED_NONE} 101 102 103Set RequestedActivation And Activation To Invalid Value 104 [Documentation] Set the RequestedActivation and Activation propreties of 105 ... the image to an invalid value and verify that it was not 106 ... changed. 107 [Template] Set Property To Invalid Value And Verify No Change 108 [Tags] Set_RequestedActivation_And_Activation_To_Invalid_Value 109 110 # Property Version Type 111 RequestedActivation ${VERSION_PURPOSE_HOST} 112 Activation ${VERSION_PURPOSE_HOST} 113 114 115Upload And Activate Multiple Host Images 116 [Documentation] Upload another PNOR image and verify that its state is 117 ... different from all others. 118 [Tags] Upload_And_Activate_Multiple_Host_Images 119 [Template] Activate Image And Verify No Duplicate Priorities 120 [Setup] Upload And Activate Multiple BMC Images Setup 121 122 # Image File Path Image Purpose 123 ${ALTERNATE_IMAGE_FILE_PATH} ${VERSION_PURPOSE_HOST} 124 125 126Set Same Priority For Multiple Host Images 127 [Documentation] Attempt to set the priority to be the same for two PNOR 128 ... images and verify that the priorities are not the same. 129 [Tags] Set_Same_Priority_For_Multiple_Host_Images 130 131 Run Keyword If '${PREV_TEST_STATUS}' == 'FAIL' 132 ... Fail Activation of alternate image failed. Cannot set priority. 133 Set Same Priority For Multiple Images ${VERSION_PURPOSE_HOST} 134 135 136Delete Host Image 137 [Documentation] Delete a PNOR image from the BMC and PNOR flash chip. 138 [Tags] Delete_Host_Image 139 [Setup] Initiate Host PowerOff 140 141 ${software_objects}= Get Software Objects 142 ... version_type=${VERSION_PURPOSE_HOST} 143 ${num_images}= Get Length ${software_objects} 144 Should Be True 0 < ${num_images} 145 ... msg=There are no PNOR images on the BMC to delete. 146 Delete Image And Verify @{software_objects}[0] ${VERSION_PURPOSE_HOST} 147 148 149*** Keywords *** 150 151Temporarily Set PNOR Attribute 152 [Documentation] Update the PNOR attribute value. 153 [Arguments] ${attribute_name} ${attribute_value} 154 155 # Description of argument(s): 156 # attribute_name Host software attribute name (e.g. "Priority"). 157 # attribute_value Value to be written. 158 159 ${image_ids}= Get Software Objects 160 ${init_host_properties}= Get Host Software Property ${image_ids[0]} 161 ${initial_priority}= Set Variable ${init_host_properties["Priority"]} 162 163 Set Host Software Property ${image_ids[0]} ${attribute_name} 164 ... ${attribute_value} 165 166 ${cur_host_properties}= Get Host Software Property ${image_ids[0]} 167 Should Be Equal As Integers ${cur_host_properties["Priority"]} 168 ... ${attribute_value} 169 170 # Revert to to initial value. 171 Set Host Software Property 172 ... ${image_ids[0]} ${attribute_name} ${initial_priority} 173 174 175Code Update Setup 176 [Documentation] Do code update test case setup. 177 # - Clean up all existing BMC dumps. 178 # - Clean up all currently install PNOR images. 179 180 Initiate Host PowerOff 181 Delete All Dumps 182 Delete Error Logs 183 Run Keyword If 'true' == '${DELETE_OLD_PNOR_IMAGES}' 184 ... Delete All PNOR Images 185 Run Keyword If 'true' == '${DELETE_OLD_GUARD_FILE}' BMC Execute Command 186 ... rm -f /var/lib/phosphor-software-manager/pnor/prsv/GUARD 187 188 189Upload And Activate Multiple BMC Images Setup 190 [Documentation] Check that the ALTERNATE_FILE_PATH variable is set. 191 192 Should Not Be Empty ${ALTERNATE_IMAGE_FILE_PATH} 193 194 195Get PNOR Extended Version 196 [Documentation] Return the PNOR extended version. 197 [Arguments] ${manifest_path} 198 199 # Description of argument(s): 200 # manifest_path Path of the MANIFEST file 201 # (e.g. "/tmp/images/abc123/MANIFEST"). 202 203 ${version}= BMC Execute Command 204 ... grep extended_version= ${manifest_path} 205 [return] ${version.split(",")} 206 207 208Code Update Test Teardown 209 [Documentation] Do code update test case teardown. 210 # 1. Collect FFDC if test case failed. 211 # 2. Collect FFDC if test PASS but error log exists. 212 213 FFDC On Test Case Fail 214 Run Keyword If '${TEST_STATUS}' == 'PASS' Check Error And Collect FFDC 215