1*** Settings *** 2Documentation Update firmware on a target MCU via Redifsh. 3 4# Test Parameters: 5# IMAGE_MCU_FILE_PATH The path to the MCU image file. 6# 7# Firmware update states: 8# Enabled Image is installed and either functional or active. 9# Disabled Image installation failed or ready for activation. 10# Updating Image installation currently in progress. 11 12Resource ../../lib/resource.robot 13Resource ../../lib/bmc_redfish_resource.robot 14Resource ../../lib/boot_utils.robot 15Resource ../../lib/openbmc_ffdc.robot 16Resource ../../lib/common_utils.robot 17Resource ../../lib/code_update_utils.robot 18Resource ../../lib/dump_utils.robot 19Resource ../../lib/logging_utils.robot 20Resource ../../lib/redfish_code_update_utils.robot 21Resource ../../lib/utils.robot 22Library ../../lib/gen_robot_valid.py 23Library ../../lib/tftp_update_utils.py 24 25Suite Setup Suite Setup Execution 26Suite Teardown Redfish.Logout 27Test Setup Printn 28Test Teardown FFDC On Test Case Fail 29 30Force Tags Mcu_Code_Update 31 32*** Test Cases *** 33 34Redfish Mcu Code Update With ApplyTime OnReset 35 [Documentation] Update the firmware image with ApplyTime of OnReset. 36 [Tags] Redfish_Mcu_Code_Update_With_ApplyTime_OnReset 37 [Template] Redfish Update Firmware 38 39 # policy 40 OnReset ${IMAGE_MCU_FILE_PATH_0} 41 42 43Redfish Mcu Code Update With ApplyTime Immediate 44 [Documentation] Update the firmware image with ApplyTime of Immediate. 45 [Tags] Redfish_Mcu_Code_Update_With_ApplyTime_Immediate 46 [Template] Redfish Update Firmware 47 48 # policy 49 Immediate ${IMAGE_MCU_FILE_PATH_1} 50 51 52*** Keywords *** 53 54Suite Setup Execution 55 [Documentation] Do the suite setup. 56 57 # Checking for file existence. 58 Valid File Path IMAGE_MCU_FILE_PATH_0 59 Valid File Path IMAGE_MCU_FILE_PATH_1 60 61 Redfish.Login 62 Redfish Delete All BMC Dumps 63 Redfish Purge Event Log 64 65 66Redfish Verify MCU Version 67 [Documentation] Verify that the version on the MCU is the same as the 68 ... version in the given image via Redfish. 69 [Arguments] ${image_file_path} 70 71 # Description of argument(s): 72 # image_file_path Path to the image tarball. 73 74 # Extract the version from the image tarball on our local system. 75 ${tar_version}= Get Version Tar ${image_file_path} 76 77 ${image_info}= Get Software Inventory State By Version ${tar_version} 78 ${image_id}= Get Image Id By Image Info ${image_info} 79 80 ${mcu_version}= Redfish.Get Attribute /redfish/v1/UpdateService/FirmwareInventory/${image_id} Version 81 82 Valid Value mcu_version valid_values=['${tar_version}'] 83 84 85Redfish Update Firmware 86 [Documentation] Update the BMC firmware via redfish interface. 87 [Arguments] ${apply_time} ${image_file_path} 88 89 # Description of argument(s): 90 # policy ApplyTime allowed values (e.g. "OnReset", "Immediate"). 91 92 Redfish.Login 93 94 Set ApplyTime policy=${apply_time} 95 96 # URI : /redfish/v1/UpdateService 97 # "HttpPushUri": "/redfish/v1/UpdateService/update", 98 99 ${redfish_update_uri}= Get Redfish Update Service URI 100 Redfish Upload Image ${redfish_update_uri} ${image_file_path} 101 Sleep 30s 102 103 ${image_version}= Get Version Tar ${image_file_path} 104 ${image_info}= Get Software Inventory State By Version ${image_version} 105 ${image_id}= Get Image Id By Image Info ${image_info} 106 107 Redfish.Login 108 Redfish Verify MCU Version ${image_file_path} 109 110 111Get Image Id By Image Info 112 [Documentation] Get image ID from image_info. 113 [Arguments] ${image_info} 114 115 [Return] ${image_info["image_id"]} 116