blob: 47e542988a3788e27d74258839a3d35a8730d132 [file] [log] [blame]
*** Settings ***
Documentation Update firmware on a target MCU via Redifsh.
# Test Parameters:
# IMAGE_MCU_FILE_PATH The path to the MCU image file.
#
# Firmware update states:
# Enabled Image is installed and either functional or active.
# Disabled Image installation failed or ready for activation.
# Updating Image installation currently in progress.
Resource ../../lib/resource.robot
Resource ../../lib/bmc_redfish_resource.robot
Resource ../../lib/boot_utils.robot
Resource ../../lib/openbmc_ffdc.robot
Resource ../../lib/common_utils.robot
Resource ../../lib/code_update_utils.robot
Resource ../../lib/dump_utils.robot
Resource ../../lib/logging_utils.robot
Resource ../../lib/redfish_code_update_utils.robot
Resource ../../lib/utils.robot
Library ../../lib/gen_robot_valid.py
Library ../../lib/tftp_update_utils.py
Suite Setup Suite Setup Execution
Suite Teardown Redfish.Logout
Test Setup Printn
Test Teardown FFDC On Test Case Fail
Force Tags Mcu_Code_Update
*** Test Cases ***
Redfish Mcu Code Update With ApplyTime OnReset
[Documentation] Update the firmware image with ApplyTime of OnReset.
[Tags] Redfish_Mcu_Code_Update_With_ApplyTime_OnReset
[Template] Redfish Update Firmware
# policy
OnReset ${IMAGE_MCU_FILE_PATH_0}
Redfish Mcu Code Update With ApplyTime Immediate
[Documentation] Update the firmware image with ApplyTime of Immediate.
[Tags] Redfish_Mcu_Code_Update_With_ApplyTime_Immediate
[Template] Redfish Update Firmware
# policy
Immediate ${IMAGE_MCU_FILE_PATH_1}
*** Keywords ***
Suite Setup Execution
[Documentation] Do the suite setup.
# Checking for file existence.
Valid File Path IMAGE_MCU_FILE_PATH_0
Valid File Path IMAGE_MCU_FILE_PATH_1
Redfish.Login
Redfish Delete All BMC Dumps
Redfish Purge Event Log
Redfish Verify MCU Version
[Documentation] Verify that the version on the MCU is the same as the
... version in the given image via Redfish.
[Arguments] ${image_file_path}
# Description of argument(s):
# image_file_path Path to the image tarball.
# Extract the version from the image tarball on our local system.
${tar_version}= Get Version Tar ${image_file_path}
${image_info}= Get Software Inventory State By Version ${tar_version}
${image_id}= Get Image Id By Image Info ${image_info}
${mcu_version}= Redfish.Get Attribute /redfish/v1/UpdateService/FirmwareInventory/${image_id} Version
Valid Value mcu_version valid_values=['${tar_version}']
Redfish Update Firmware
[Documentation] Update the BMC firmware via redfish interface.
[Arguments] ${apply_time} ${image_file_path}
# Description of argument(s):
# policy ApplyTime allowed values (e.g. "OnReset", "Immediate").
Redfish.Login
Set ApplyTime policy=${apply_time}
# URI : /redfish/v1/UpdateService
# "HttpPushUri": "/redfish/v1/UpdateService/update",
${redfish_update_uri}= Get Redfish Update Service URI
Redfish Upload Image ${redfish_update_uri} ${image_file_path}
Sleep 30s
${image_version}= Get Version Tar ${image_file_path}
${image_info}= Get Software Inventory State By Version ${image_version}
${image_id}= Get Image Id By Image Info ${image_info}
Redfish.Login
Redfish Verify MCU Version ${image_file_path}
Get Image Id By Image Info
[Documentation] Get image ID from image_info.
[Arguments] ${image_info}
[Return] ${image_info["image_id"]}