1*** Settings *** 2Documentation Update the BMC code on a target BMC. 3... Execution Method: 4... python -m robot -v OPENBMC_HOST:<hostname> 5... -v IMAGE_FILE_PATH:<path/*.tar> bmc_code_update.robot 6 7Library ../../lib/code_update_utils.py 8Variables ../../data/variables.py 9Resource ../../lib/boot_utils.robot 10Resource code_update_utils.robot 11Resource ../../lib/code_update_utils.robot 12Resource ../../lib/openbmc_ffdc.robot 13Resource ../../lib/dump_utils.robot 14 15Test Teardown Code Update Test Teardown 16 17*** Variables *** 18 19${QUIET} ${1} 20${IMAGE_FILE_PATH} ${EMPTY} 21${ALTERNATE_IMAGE_FILE_PATH} ${EMPTY} 22${SKIP_UPDATE_IF_ACTIVE} false 23 24*** Test Cases *** 25 26REST BMC Code Update 27 [Documentation] Do a BMC code update by uploading image on BMC via REST. 28 [Tags] REST_BMC_Code_Update 29 [Setup] Code Update Setup 30 31 Upload And Activate Image ${IMAGE_FILE_PATH} 32 ... skip_if_active=${SKIP_UPDATE_IF_ACTIVE} 33 OBMC Reboot (off) 34 35 36Upload And Activate Multiple BMC Images 37 [Documentation] Upload another BMC image and verify that its state is 38 ... different from all others. 39 [Tags] Upload_And_Activate_Multiple_BMC_Images 40 [Template] Activate Image And Verify No Duplicate Priorities 41 [Setup] Upload And Activate Multiple BMC Images Setup 42 43 # Image File Path Image Purpose 44 ${ALTERNATE_IMAGE_FILE_PATH} ${VERSION_PURPOSE_BMC} 45 46 47BMC Set Priority To Invalid Values 48 [Documentation] Attempt to set the priority of an image to an invalid 49 ... value and expect an error. 50 [Tags] BMC_Set_Priority_To_Invalid_Values 51 [Template] Set Priority To Invalid Value And Expect Error 52 53 # Version Type Priority 54 ${VERSION_PURPOSE_BMC} ${-1} 55 ${VERSION_PURPOSE_BMC} ${256} 56 57 58Delete BMC Image 59 [Documentation] Delete a BMC image from the BMC flash chip. 60 [Tags] Delete_BMC_Image 61 62 ${software_object}= Get Non Running BMC Software Object 63 Delete Image And Verify ${software_object} ${VERSION_PURPOSE_BMC} 64 65 66BMC Image Priority Attribute Test 67 [Documentation] Set "Priority" attribute. 68 [Tags] BMC_Image_Priority_Attribute_Test 69 [Template] Temporarily Set BMC Attribute 70 71 # Property Value 72 Priority ${0} 73 Priority ${1} 74 Priority ${127} 75 Priority ${255} 76 77 78*** Keywords *** 79 80Temporarily Set BMC Attribute 81 [Documentation] Update the BMC attribute value. 82 [Arguments] ${attribute_name} ${attribute_value} 83 84 # Description of argument(s): 85 # attribute_name BMC software attribute name (e.g. "Priority"). 86 # attribute_value Value to be written. 87 88 ${image_ids}= Get Software Objects ${VERSION_PURPOSE_BMC} 89 ${init_bmc_properties}= Get Host Software Property ${image_ids[0]} 90 ${initial_priority}= Set Variable ${init_bmc_properties["Priority"]} 91 92 Set Host Software Property ${image_ids[0]} ${attribute_name} 93 ... ${attribute_value} 94 95 ${cur_bmc_properties}= Get Host Software Property ${image_ids[0]} 96 Should Be Equal As Integers ${cur_bmc_properties["Priority"]} 97 ... ${attribute_value} 98 99 # Revert to to initial value. 100 Set Host Software Property 101 ... ${image_ids[0]} ${attribute_name} ${initial_priority} 102 103 104Upload And Activate Multiple BMC Images Setup 105 [Documentation] Check that the ALTERNATE_FILE_PATH variable is set. 106 107 Should Not Be Empty ${ALTERNATE_IMAGE_FILE_PATH} 108 109Code Update Setup 110 [Documentation] Do code update test case setup. 111 # - Clean up all existing BMC dumps. 112 113 Delete All Dumps 114 115Code Update Test Teardown 116 [Documentation] Do code update test case teardown. 117 # 1. Collect FFDC if test case failed. 118 # 2. Collect FFDC if test PASS but error log exists. 119 120 FFDC On Test Case Fail 121 Run Keyword If '${TEST_STATUS}' == 'PASS' Check Error And Collect FFDC 122