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
21Library                  ../../lib/gen_robot_valid.py
22Library                  ../../lib/tftp_update_utils.py
23
24Suite Setup              Suite Setup Execution
25Suite Teardown           Redfish.Logout
26Test Setup               Printn
27Test Teardown            FFDC On Test Case Fail
28
29Force Tags               Host_Code_Update
30
31*** Test Cases ***
32
33Redfish Code Update With ApplyTime OnReset
34    [Documentation]  Update the firmaware image with ApplyTime of OnReset.
35    [Tags]  Redfish_Code_Update_With_ApplyTime_OnReset
36    [Template]  Redfish Update Firmware
37
38    # policy
39    OnReset
40
41
42Redfish Code Update With ApplyTime Immediate
43    [Documentation]  Update the firmaware image with ApplyTime of Immediate.
44    [Tags]  Redfish_Code_Update_With_ApplyTime_Immediate
45    [Template]  Redfish Update Firmware
46
47    # policy
48    Immediate
49
50
51BMC Reboot When PNOR Update Goes On
52    [Documentation]  Trigger PNOR update and do BMC reboot.
53    [Tags]  BMC_Reboot_When_PNOR_Update_Goes_On
54
55    ${bios_version_before}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  BiosVersion
56    Redfish Firmware Update And Do BMC Reboot
57    ${bios_version_after}=  Redfish.Get Attribute  /redfish/v1/Systems/system/  BiosVersion
58    Valid Value  bios_version_after  ['${bios_version_before}']
59
60
61*** Keywords ***
62
63Suite Setup Execution
64    [Documentation]  Do the suite setup.
65
66    Valid File Path  IMAGE_FILE_PATH
67    Redfish.Login
68    Delete All BMC Dump
69    Redfish Purge Event Log
70    Redfish Power On  stack_mode=skip
71
72
73Redfish Update Firmware
74    [Documentation]  Update the BMC firmware via redfish interface.
75    [Arguments]  ${apply_time}
76
77    # Description of argument(s):
78    # policy     ApplyTime allowed values (e.g. "OnReset", "Immediate").
79
80    Redfish.Login
81    Set ApplyTime  policy=${apply_Time}
82    Redfish Upload Image And Check Progress State
83    Poweron Host And Verify Host Image  ${apply_time}
84    Verify Get ApplyTime  ${apply_time}
85
86
87Redfish Firmware Update And Do BMC Reboot
88    [Documentation]  Update the firmware via redfish interface and do BMC reboot.
89
90    Set ApplyTime  policy="Immediate"
91    Redfish Upload Image  ${REDFISH_BASE_URI}UpdateService  ${IMAGE_FILE_PATH}
92    ${image_id}=  Get Latest Image ID
93    Wait Until Keyword Succeeds  1 min  10 sec
94    ...  Check Image Update Progress State  match_state='Updating'  image_id=${image_id}
95
96    # BMC reboot while PNOR update is in progress.
97    Redfish OBMC Reboot (off)
98