Host code update
Change-Id: I645479e6cbb44f96290b762561bfdd9e265bd413
Signed-off-by: Sushil Singh <susilsi7@in.ibm.com>
diff --git a/redfish/extended/redfish_host_code_update.robot b/redfish/extended/redfish_host_code_update.robot
new file mode 100644
index 0000000..b79814f
--- /dev/null
+++ b/redfish/extended/redfish_host_code_update.robot
@@ -0,0 +1,86 @@
+*** Settings ***
+Documentation Update the BMC code on a target BMC via Redifsh.
+
+# Test Parameters:
+# IMAGE_FILE_PATH The path to the BMC 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/openbmc_ffdc.robot
+Resource ../../lib/common_utils.robot
+Resource ../../lib/code_update_utils.robot
+Resource ../../lib/redfish_code_update_utils.robot
+Resource ../../lib/utils.robot
+Library ../../lib/gen_robot_valid.py
+Library ../../lib/var_funcs.py
+Library ../../lib/gen_robot_keyword.py
+Library ../../lib/code_update_utils.py
+
+Suite Setup Suite Setup Execution
+Suite Teardown Redfish.Logout
+Test Setup Printn
+Test Teardown FFDC On Test Case Fail
+
+# Force the test to timedout to prevent test hanging.
+Test Timeout 30 minutes
+
+*** Test Cases ***
+
+Redfish Host Code Update
+ [Documentation] Update the firmware image.
+ [Tags] Redfish_Host_Code_Update
+
+ ${image_version}= Get Version Tar ${IMAGE_FILE_PATH}
+ Rprint Vars image_version
+
+ ${sw_inv}= Get Functional Firmware Host image
+ ${nonfunctional_sw_inv}= Get Non Functional Firmware ${sw_inv} True
+
+ ${functional_version}= Set Variable ${nonfunctional_sw_inv['version']}
+ Rprint Vars functional_version
+
+ ${post_code_update_actions}= Get Post Boot Action
+ ${state}= Get Pre Reboot State
+ Rprint Vars state
+
+ # Check if the existing firmware is functional.
+ Pass Execution If '${functional_version}' == '${image_version}'
+ ... The existing ${image_version} firmware is already functional.
+
+ Print Timen Performing firmware update ${image_version}.
+
+ Redfish Update Firmware
+
+
+*** Keywords ***
+
+Suite Setup Execution
+ [Documentation] Do the suite setup.
+
+ Redfish.Login
+ # Delete BMC dump and Error logs.
+ Run Keyword And Ignore Error Redfish Delete All BMC Dumps
+ Run Keyword And Ignore Error Redfish Purge Event Log
+ # Checking for file existence.
+ Valid File Path IMAGE_FILE_PATH
+
+
+Redfish Update Firmware
+ [Documentation] Update the BMC firmware via redfish interface.
+
+ Redfish.Login
+ ${post_code_update_actions}= Get Post Boot Action
+ Rprint Vars post_code_update_actions
+ Run Keyword And Ignore Error Set ApplyTime policy=OnReset
+ Redfish Upload Image And Check Progress State
+ ${tar_version}= Get Version Tar ${IMAGE_FILE_PATH}
+ ${image_info}= Get Software Inventory State By Version ${tar_version}
+ Run Key ${post_code_update_actions['${image_info["image_type"]}']['OnReset']}
+ Redfish.Login
+ Redfish Verify Host Version ${IMAGE_FILE_PATH}
+