19f74d3afSCharles Paul Hofer*** Settings *** 29f74d3afSCharles Paul HoferDocumentation Update the PNOR code on a target BMC. 39f74d3afSCharles Paul Hofer... Execution Method: 49f74d3afSCharles Paul Hofer... python -m robot -v OPENBMC_HOST:<hostname> 59f74d3afSCharles Paul Hofer... -v DELETE_OLD_PNOR_IMAGES:<"true" or "false"> 6a5673166SCharles Paul Hofer... -v IMAGE_FILE_PATH:<path/*.tar> 7a5673166SCharles Paul Hofer... -v ALTERNATE_IMAGE_FILE_PATH:<path/*.tar> 8a5673166SCharles Paul Hofer... host_code_update.robot 99f74d3afSCharles Paul Hofer... 109f74d3afSCharles Paul Hofer... Code update method BMC 119f74d3afSCharles Paul Hofer... Update work flow sequence: 129f74d3afSCharles Paul Hofer... - Upload image via REST 139f74d3afSCharles Paul Hofer... - Verify that the file exists on the BMC 149f74d3afSCharles Paul Hofer... - Check that software "Activation" is set to "Ready" 159f74d3afSCharles Paul Hofer... - Set "Requested Activation" to "Active" 169f74d3afSCharles Paul Hofer... - Wait for code update to complete 179f74d3afSCharles Paul Hofer... - Verify the new version 189f74d3afSCharles Paul Hofer 199f74d3afSCharles Paul HoferLibrary ../../lib/bmc_ssh_utils.py 209f74d3afSCharles Paul HoferLibrary ../../lib/code_update_utils.py 219f74d3afSCharles Paul HoferVariables ../../data/variables.py 229f74d3afSCharles Paul HoferResource ../../lib/boot_utils.robot 239f74d3afSCharles Paul HoferResource code_update_utils.robot 249f74d3afSCharles Paul HoferResource ../../lib/code_update_utils.robot 251eb85f57SGeorge KeishingResource ../../lib/openbmc_ffdc.robot 269f74d3afSCharles Paul HoferResource ../../lib/state_manager.robot 271eb85f57SGeorge KeishingResource ../../lib/dump_utils.robot 289f74d3afSCharles Paul Hofer 290071549eSGeorge KeishingTest Teardown Code Update Test Teardown 309f74d3afSCharles Paul Hofer 31*09712a1eSGeorge KeishingForce Tags Host_Code_Update 32*09712a1eSGeorge Keishing 339f74d3afSCharles Paul Hofer*** Variables *** 349f74d3afSCharles Paul Hofer 359f74d3afSCharles Paul Hofer${QUIET} ${1} 369f74d3afSCharles Paul Hofer${IMAGE_FILE_PATH} ${EMPTY} 379f74d3afSCharles Paul Hofer${DELETE_OLD_PNOR_IMAGES} false 3851b54c08SCharles Paul Hofer${DELETE_OLD_GUARD_FILE} false 39c1fa2bc9SCharles Paul Hofer${ALTERNATE_IMAGE_FILE_PATH} ${EMPTY} 409f74d3afSCharles Paul Hofer 419f74d3afSCharles Paul Hofer*** Test Cases *** 429f74d3afSCharles Paul Hofer 439f74d3afSCharles Paul HoferREST Host Code Update 449f74d3afSCharles Paul Hofer [Documentation] Do a PNOR code update by uploading image on BMC via REST. 450071549eSGeorge Keishing # 1. Delete error logs if there is any. 460071549eSGeorge Keishing # 1. Do code update. 470071549eSGeorge Keishing # 2. Do post update the following: 480071549eSGeorge Keishing # - Collect FFDC if error log exist and delete error logs. 499f74d3afSCharles Paul Hofer [Tags] REST_Host_Code_Update 509f74d3afSCharles Paul Hofer [Setup] Code Update Setup 519f74d3afSCharles Paul Hofer 529f74d3afSCharles Paul Hofer Upload And Activate Image ${IMAGE_FILE_PATH} 539f74d3afSCharles Paul Hofer OBMC Reboot (off) 549f74d3afSCharles Paul Hofer 559f74d3afSCharles Paul Hofer 569f74d3afSCharles Paul HoferPost Update Boot To OS 579f74d3afSCharles Paul Hofer [Documentation] Boot the host OS 589f74d3afSCharles Paul Hofer [Tags] Post_Update_Boot_To_OS 59da6bace8SGeorge Keishing [Teardown] Run Keywords Stop SOL Console Logging 60da6bace8SGeorge Keishing ... AND Code Update Test Teardown 619f74d3afSCharles Paul Hofer 629f74d3afSCharles Paul Hofer Run Keyword If '${PREV_TEST_STATUS}' == 'FAIL' 639f74d3afSCharles Paul Hofer ... Fail Code update failed. No need to boot to OS. 649f74d3afSCharles Paul Hofer Start SOL Console Logging 650071549eSGeorge Keishing Delete Error Logs 669f74d3afSCharles Paul Hofer REST Power On 67e43fb2f7SCharles Paul Hofer Verify Running Host Image ${IMAGE_FILE_PATH} 689f74d3afSCharles Paul Hofer 699f74d3afSCharles Paul Hofer 709f74d3afSCharles Paul HoferHost Image Priority Attribute Test 719f74d3afSCharles Paul Hofer [Documentation] Set "Priority" attribute. 729f74d3afSCharles Paul Hofer [Tags] Host_Image_Priority_Attribute_Test 739f74d3afSCharles Paul Hofer [Template] Temporarily Set PNOR Attribute 749f74d3afSCharles Paul Hofer 759f74d3afSCharles Paul Hofer # Property Value 769f74d3afSCharles Paul Hofer Priority ${0} 779f74d3afSCharles Paul Hofer Priority ${1} 789f74d3afSCharles Paul Hofer Priority ${127} 7997ecb270SGeorge Keishing Priority ${255} 809f74d3afSCharles Paul Hofer 819f74d3afSCharles Paul Hofer 8242f17468SCharles Paul HoferHost Set Priority To Invalid Values 8342f17468SCharles Paul Hofer [Documentation] Attempt to set the priority of an image to an invalid 8442f17468SCharles Paul Hofer ... value and expect an error. 8542f17468SCharles Paul Hofer [Tags] Host_Set_Priority_To_Invalid_Values 8642f17468SCharles Paul Hofer [Template] Set Priority To Invalid Value And Expect Error 8742f17468SCharles Paul Hofer 8842f17468SCharles Paul Hofer # Version Type Priority 8942f17468SCharles Paul Hofer ${VERSION_PURPOSE_HOST} ${-1} 9042f17468SCharles Paul Hofer ${VERSION_PURPOSE_HOST} ${256} 9142f17468SCharles Paul Hofer 9242f17468SCharles Paul Hofer 939f74d3afSCharles Paul HoferSet RequestedActivation To None 949f74d3afSCharles Paul Hofer [Documentation] Set the RequestedActivation of the image to None and 959f74d3afSCharles Paul Hofer ... verify that it is in fact set to None. 969f74d3afSCharles Paul Hofer [Tags] Set_RequestedActivation_To_None 979f74d3afSCharles Paul Hofer 989f74d3afSCharles Paul Hofer ${software_objects}= Get Software Objects 999f74d3afSCharles Paul Hofer Set Host Software Property @{software_objects}[0] RequestedActivation 1009f74d3afSCharles Paul Hofer ... ${REQUESTED_NONE} 1019f74d3afSCharles Paul Hofer ${software_properties}= Get Host Software Property @{software_objects}[0] 1029f74d3afSCharles Paul Hofer Should Be Equal As Strings &{software_properties}[RequestedActivation] 1039f74d3afSCharles Paul Hofer ... ${REQUESTED_NONE} 1049f74d3afSCharles Paul Hofer 1059f74d3afSCharles Paul Hofer 1069f74d3afSCharles Paul HoferSet RequestedActivation And Activation To Invalid Value 1079f74d3afSCharles Paul Hofer [Documentation] Set the RequestedActivation and Activation propreties of 1089f74d3afSCharles Paul Hofer ... the image to an invalid value and verify that it was not 1099f74d3afSCharles Paul Hofer ... changed. 1109f74d3afSCharles Paul Hofer [Template] Set Property To Invalid Value And Verify No Change 1119f74d3afSCharles Paul Hofer [Tags] Set_RequestedActivation_And_Activation_To_Invalid_Value 1129f74d3afSCharles Paul Hofer 1139f74d3afSCharles Paul Hofer # Property Version Type 1149f74d3afSCharles Paul Hofer RequestedActivation ${VERSION_PURPOSE_HOST} 1159f74d3afSCharles Paul Hofer Activation ${VERSION_PURPOSE_HOST} 1169f74d3afSCharles Paul Hofer 1179f74d3afSCharles Paul Hofer 118c1fa2bc9SCharles Paul HoferUpload And Activate Multiple Host Images 119c1fa2bc9SCharles Paul Hofer [Documentation] Upload another PNOR image and verify that its state is 120c1fa2bc9SCharles Paul Hofer ... different from all others. 121c1fa2bc9SCharles Paul Hofer [Tags] Upload_And_Activate_Multiple_Host_Images 122c1fa2bc9SCharles Paul Hofer [Template] Activate Image And Verify No Duplicate Priorities 123c1fa2bc9SCharles Paul Hofer [Setup] Upload And Activate Multiple BMC Images Setup 124c1fa2bc9SCharles Paul Hofer 125c1fa2bc9SCharles Paul Hofer # Image File Path Image Purpose 126c1fa2bc9SCharles Paul Hofer ${ALTERNATE_IMAGE_FILE_PATH} ${VERSION_PURPOSE_HOST} 127c1fa2bc9SCharles Paul Hofer 128c1fa2bc9SCharles Paul Hofer 129a5673166SCharles Paul HoferSet Same Priority For Multiple Host Images 130a5673166SCharles Paul Hofer [Documentation] Attempt to set the priority to be the same for two PNOR 131a5673166SCharles Paul Hofer ... images and verify that the priorities are not the same. 132a5673166SCharles Paul Hofer [Tags] Set_Same_Priority_For_Multiple_Host_Images 133a5673166SCharles Paul Hofer 134a5673166SCharles Paul Hofer Run Keyword If '${PREV_TEST_STATUS}' == 'FAIL' 135a5673166SCharles Paul Hofer ... Fail Activation of alternate image failed. Cannot set priority. 136a5673166SCharles Paul Hofer Set Same Priority For Multiple Images ${VERSION_PURPOSE_HOST} 137a5673166SCharles Paul Hofer 138a5673166SCharles Paul Hofer 1399f74d3afSCharles Paul HoferDelete Host Image 1409f74d3afSCharles Paul Hofer [Documentation] Delete a PNOR image from the BMC and PNOR flash chip. 1419f74d3afSCharles Paul Hofer [Tags] Delete_Host_Image 1429f74d3afSCharles Paul Hofer [Setup] Initiate Host PowerOff 1439f74d3afSCharles Paul Hofer 1449f74d3afSCharles Paul Hofer ${software_objects}= Get Software Objects 1459f74d3afSCharles Paul Hofer ... version_type=${VERSION_PURPOSE_HOST} 1469f74d3afSCharles Paul Hofer ${num_images}= Get Length ${software_objects} 1479f74d3afSCharles Paul Hofer Should Be True 0 < ${num_images} 1489f74d3afSCharles Paul Hofer ... msg=There are no PNOR images on the BMC to delete. 1499f74d3afSCharles Paul Hofer Delete Image And Verify @{software_objects}[0] ${VERSION_PURPOSE_HOST} 1509f74d3afSCharles Paul Hofer 1519f74d3afSCharles Paul Hofer 1529f74d3afSCharles Paul Hofer*** Keywords *** 1539f74d3afSCharles Paul Hofer 1549f74d3afSCharles Paul HoferTemporarily Set PNOR Attribute 1559f74d3afSCharles Paul Hofer [Documentation] Update the PNOR attribute value. 1569f74d3afSCharles Paul Hofer [Arguments] ${attribute_name} ${attribute_value} 1579f74d3afSCharles Paul Hofer 1589f74d3afSCharles Paul Hofer # Description of argument(s): 1599f74d3afSCharles Paul Hofer # attribute_name Host software attribute name (e.g. "Priority"). 1609f74d3afSCharles Paul Hofer # attribute_value Value to be written. 1619f74d3afSCharles Paul Hofer 1629f74d3afSCharles Paul Hofer ${image_ids}= Get Software Objects 1639f74d3afSCharles Paul Hofer ${init_host_properties}= Get Host Software Property ${image_ids[0]} 1649f74d3afSCharles Paul Hofer ${initial_priority}= Set Variable ${init_host_properties["Priority"]} 1659f74d3afSCharles Paul Hofer 1669f74d3afSCharles Paul Hofer Set Host Software Property ${image_ids[0]} ${attribute_name} 1679f74d3afSCharles Paul Hofer ... ${attribute_value} 1689f74d3afSCharles Paul Hofer 1699f74d3afSCharles Paul Hofer ${cur_host_properties}= Get Host Software Property ${image_ids[0]} 1709f74d3afSCharles Paul Hofer Should Be Equal As Integers ${cur_host_properties["Priority"]} 1719f74d3afSCharles Paul Hofer ... ${attribute_value} 1729f74d3afSCharles Paul Hofer 1739f74d3afSCharles Paul Hofer # Revert to to initial value. 1749f74d3afSCharles Paul Hofer Set Host Software Property 1759f74d3afSCharles Paul Hofer ... ${image_ids[0]} ${attribute_name} ${initial_priority} 1769f74d3afSCharles Paul Hofer 1779f74d3afSCharles Paul Hofer 1789f74d3afSCharles Paul HoferCode Update Setup 1799f74d3afSCharles Paul Hofer [Documentation] Do code update test case setup. 1801eb85f57SGeorge Keishing # - Clean up all existing BMC dumps. 1811eb85f57SGeorge Keishing # - Clean up all currently install PNOR images. 1829f74d3afSCharles Paul Hofer 183b926408eSCharles Paul Hofer Run Keyword And Ignore Error Smart Power Off 1841eb85f57SGeorge Keishing Delete All Dumps 1850071549eSGeorge Keishing Delete Error Logs 1869f74d3afSCharles Paul Hofer Run Keyword If 'true' == '${DELETE_OLD_PNOR_IMAGES}' 1879f74d3afSCharles Paul Hofer ... Delete All PNOR Images 18851b54c08SCharles Paul Hofer Run Keyword If 'true' == '${DELETE_OLD_GUARD_FILE}' BMC Execute Command 18951b54c08SCharles Paul Hofer ... rm -f /var/lib/phosphor-software-manager/pnor/prsv/GUARD 1909f74d3afSCharles Paul Hofer 1919f74d3afSCharles Paul Hofer 192c1fa2bc9SCharles Paul HoferUpload And Activate Multiple BMC Images Setup 193c1fa2bc9SCharles Paul Hofer [Documentation] Check that the ALTERNATE_FILE_PATH variable is set. 194c1fa2bc9SCharles Paul Hofer 195c1fa2bc9SCharles Paul Hofer Should Not Be Empty ${ALTERNATE_IMAGE_FILE_PATH} 196c1fa2bc9SCharles Paul Hofer 197c1fa2bc9SCharles Paul Hofer 1989f74d3afSCharles Paul HoferGet PNOR Extended Version 1999f74d3afSCharles Paul Hofer [Documentation] Return the PNOR extended version. 2009f74d3afSCharles Paul Hofer [Arguments] ${manifest_path} 2019f74d3afSCharles Paul Hofer 2029f74d3afSCharles Paul Hofer # Description of argument(s): 2039f74d3afSCharles Paul Hofer # manifest_path Path of the MANIFEST file 2049f74d3afSCharles Paul Hofer # (e.g. "/tmp/images/abc123/MANIFEST"). 2059f74d3afSCharles Paul Hofer 2069f74d3afSCharles Paul Hofer ${version}= BMC Execute Command 2079f74d3afSCharles Paul Hofer ... grep extended_version= ${manifest_path} 2089f74d3afSCharles Paul Hofer [return] ${version.split(",")} 2090071549eSGeorge Keishing 2100071549eSGeorge Keishing 2110071549eSGeorge KeishingCode Update Test Teardown 2120071549eSGeorge Keishing [Documentation] Do code update test case teardown. 2130071549eSGeorge Keishing # 1. Collect FFDC if test case failed. 2140071549eSGeorge Keishing # 2. Collect FFDC if test PASS but error log exists. 2150071549eSGeorge Keishing 2160071549eSGeorge Keishing FFDC On Test Case Fail 2170071549eSGeorge Keishing Run Keyword If '${TEST_STATUS}' == 'PASS' Check Error And Collect FFDC 218