1*** Settings ***
2Documentation            Update firmware on a target Host via Redifsh.
3
4# Test Parameters:
5# IMAGE_FILE_PATH        The path to the Host 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               Redfish_Host_Code_Update
31
32*** Test Cases ***
33
34Redfish Host Code Update With ApplyTime OnReset
35    [Documentation]  Update the firmware image with ApplyTime of OnReset.
36    [Tags]  Redfish_Host_Code_Update_With_ApplyTime_OnReset
37    [Template]  Redfish Update Firmware
38
39    # policy
40    OnReset
41
42
43Redfish Host Code Update With ApplyTime Immediate
44    [Documentation]  Update the firmware image with ApplyTime of Immediate.
45    [Tags]  Redfish_Host_Code_Update_With_ApplyTime_Immediate
46    [Template]  Redfish Update Firmware
47
48    # policy
49    Immediate
50
51
52BMC Reboot When PNOR Update Goes On
53    [Documentation]  Trigger PNOR update and do BMC reboot.
54    [Tags]  BMC_Reboot_When_PNOR_Update_Goes_On
55
56    ${bios_version_before}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  BiosVersion
57    Redfish Firmware Update And Do BMC Reboot
58    ${bios_version_after}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  BiosVersion
59    Valid Value  bios_version_after  ['${bios_version_before}']
60
61
62*** Keywords ***
63
64Suite Setup Execution
65    [Documentation]  Do the suite setup.
66
67    Valid File Path  IMAGE_FILE_PATH
68    Redfish.Login
69    Run Keyword And Ignore Error  Redfish Delete All BMC Dumps
70    Run Keyword And Ignore Error  Redfish Purge Event Log
71    Redfish Power Off  stack_mode=skip
72
73
74Redfish Update Firmware
75    [Documentation]  Update the Host firmware via redfish interface.
76    [Arguments]  ${apply_time}
77
78    # Description of argument(s):
79    # policy     ApplyTime allowed values (e.g. "OnReset", "Immediate").
80
81    Redfish.Login
82    ${post_code_update_actions}=  Get Post Boot Action
83    Set ApplyTime  policy=${apply_Time}
84
85    # URI : /redfish/v1/UpdateService
86    # "HttpPushUri": "/redfish/v1/UpdateService/update",
87
88    Redfish Upload Image And Check Progress State
89    Run Key  ${post_code_update_actions['Host image']['${apply_time}']}
90    Redfish.Login
91    Redfish Verify Host Version  ${IMAGE_FILE_PATH}
92    Verify Get ApplyTime  ${apply_time}
93
94
95Redfish Firmware Update And Do BMC Reboot
96    [Documentation]  Update the firmware via redfish interface and do BMC reboot.
97
98    Set ApplyTime  policy="Immediate"
99
100     # URI : /redfish/v1/UpdateService
101     # "HttpPushUri": "/redfish/v1/UpdateService/update",
102
103    ${redfish_update_uri}=  Get Redfish Update Service URI
104    Redfish Upload Image  ${redfish_update_uri}  ${IMAGE_FILE_PATH}
105    ${image_id}=  Get Latest Image ID
106    Wait Until Keyword Succeeds  1 min  10 sec
107    ...  Check Image Update Progress State  match_state='Updating'  image_id=${image_id}
108
109    # BMC reboot while PNOR update is in progress.
110    Redfish OBMC Reboot (off)
111