xref: /openbmc/openbmc-test-automation/redfish/extended/redfish_host_code_update.robot (revision 538f17433dd790c7b41fbf55af2db56a34efb924)
1 *** Settings ***
2 Documentation            Update the BMC code on a target BMC via Redifsh.
3 
4 # Test Parameters:
5 # IMAGE_FILE_PATH        The path to the BMC 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 
12 Resource                 ../../lib/resource.robot
13 Resource                 ../../lib/bmc_redfish_resource.robot
14 Resource                 ../../lib/openbmc_ffdc.robot
15 Resource                 ../../lib/common_utils.robot
16 Resource                 ../../lib/code_update_utils.robot
17 Resource                 ../../lib/redfish_code_update_utils.robot
18 Resource                 ../../lib/utils.robot
19 Library                  ../../lib/gen_robot_valid.py
20 Library                  ../../lib/var_funcs.py
21 Library                  ../../lib/gen_robot_keyword.py
22 Library                  ../../lib/code_update_utils.py
23 
24 Suite Setup              Suite Setup Execution
25 Suite Teardown           Redfish.Logout
26 Test Setup               Printn
27 Test Teardown            FFDC On Test Case Fail
28 
29 # Force the test to timedout to prevent test hanging.
30 Test Timeout             30 minutes
31 
32 *** Test Cases ***
33 
34 Redfish Host Code Update
35     [Documentation]  Update the firmware image.
36     [Tags]  Redfish_Host_Code_Update
37 
38     ${image_version}=  Get Version Tar  ${IMAGE_FILE_PATH}
39     Rprint Vars  image_version
40 
41     ${sw_inv}=  Get Functional Firmware  Host image
42     ${functional_sw_inv}=  Get Non Functional Firmware  ${sw_inv}  True
43 
44     ${num_records}=  Get Length  ${functional_sw_inv}
45 
46     Run Keyword If  ${num_records} != 0
47     ...  Pass Execution If  '${functional_sw_inv['version']}' == '${image_version}'
48     ...  The existing ${image_version} firmware is already functional.
49 
50     ${post_code_update_actions}=  Get Post Boot Action
51     ${state}=  Get Pre Reboot State
52     Rprint Vars  state
53 
54    Print Timen  Performing firmware update ${image_version}.
55 
56    Redfish Update Firmware
57 
58 
59 *** Keywords ***
60 
61 Suite Setup Execution
62     [Documentation]  Do the suite setup.
63 
64     Redfish.Login
65     # Delete BMC dump and Error logs.
66     Run Keyword And Ignore Error  Redfish Delete All BMC Dumps
67     Run Keyword And Ignore Error  Redfish Purge Event Log
68     # Checking for file existence.
69     Valid File Path  IMAGE_FILE_PATH
70 
71 
72 Redfish Update Firmware
73     [Documentation]  Update the BMC firmware via redfish interface.
74 
75     Redfish.Login
76     ${post_code_update_actions}=  Get Post Boot Action
77     Rprint Vars  post_code_update_actions
78     Run Keyword And Ignore Error  Set ApplyTime  policy=OnReset
79     Redfish Upload Image And Check Progress State
80     ${tar_version}=  Get Version Tar  ${IMAGE_FILE_PATH}
81     ${image_info}=  Get Software Inventory State By Version  ${tar_version}
82     Run Key  ${post_code_update_actions['${image_info["image_type"]}']['OnReset']}
83     Redfish.Login
84     Redfish Verify Host Version  ${IMAGE_FILE_PATH}
85 
86