1*** Settings ***
2Documentation    This suite tests Redfish Host power operations.
3
4Resource         ../../lib/boot_utils.robot
5Resource         ../../lib/common_utils.robot
6Resource         ../../lib/open_power_utils.robot
7
8Test Setup       Test Setup Execution
9Test Teardown    Test Teardown Execution
10
11*** Test Cases ***
12
13Verify Redfish Host GracefulShutdown
14    [Documentation]  Verify Redfish host graceful shutdown operation.
15    [Tags]  Verify_Redfish_Host_GracefulShutdown
16
17    Redfish Power Off
18
19
20Verify Redfish BMC PowerOn With OCC State
21    [Documentation]  Verify Redfish host power on operation.
22    [Tags]  Verify_Redfish_BMC_PowerOn_With_OCC_State
23
24    Redfish Power On
25
26    # TODO: Replace OCC state check with redfish property when available.
27    Verify OCC State
28
29
30Verify Redfish BMC PowerOn
31    [Documentation]  Verify Redfish host power on operation.
32    [Tags]  Verify_Redfish_Host_PowerOn
33
34    Redfish Power On
35
36    # TODO: Replace OCC state check with redfish property when available.
37    Verify OCC State
38
39    ${power_uri_list}=  redfish_utils.Get Members URI  /redfish/v1/Chassis/  PowerControl
40    Log List  ${power_uri_list}
41
42    # Power entries could be seen across different redfish path, remove the URI
43    # where the attribute is non-existent.
44    # Example:
45    #     ['/redfish/v1/Chassis/chassis/Power',
46    #      '/redfish/v1/Chassis/motherboard/Power']
47    FOR  ${idx}  IN  @{power_uri_list}
48        ${power_control}=  redfish_utils.Get Attribute  ${idx}  PowerControl
49        Log Dictionary  ${power_control[0]}
50
51        # Ensure the path does have the attribute else set to EMPTY as default to skip.
52        ${value}=  Get Variable Value  ${power_control[0]['PowerConsumedWatts']}  ${EMPTY}
53        Run Keyword If  "${value}" == "${EMPTY}"
54        ...  Remove Values From List  ${power_uri_list}  ${idx}
55
56        # Check the next available element in the list.
57        Continue For Loop If  "${value}" == "${EMPTY}"
58
59        Valid Dict  power_control[${0}]  ['PowerConsumedWatts']
60
61    END
62
63    # Double check, the validation has at least one valid path.
64    Should Not Be Empty  ${power_uri_list}
65    ...  msg=Should contain at least one element in the list.
66
67
68Verify Redfish BMC GracefulRestart
69    [Documentation]  Verify Redfish host graceful restart operation.
70    [Tags]  Verify_Redfish_Host_GracefulRestart
71
72    RF SYS GracefulRestart
73
74
75Verify Redfish BMC PowerOff
76    [Documentation]  Verify Redfish host power off operation.
77    [Tags]  Verify_Redfish_Host_PowerOff
78
79    Redfish Hard Power Off
80
81*** Keywords ***
82
83Test Setup Execution
84    [Documentation]  Do test case setup tasks.
85
86    Printn
87    Start SOL Console Logging
88    Redfish.Login
89
90
91Test Teardown Execution
92    [Documentation]  Collect FFDC and SOL log.
93
94    FFDC On Test Case Fail
95    ${sol_log}=    Stop SOL Console Logging
96    Log   ${sol_log}
97
98    Run Keyword If  ${REDFISH_SUPPORTED}
99    ...    Redfish Set Auto Reboot  RetryAttempts
100    ...  ELSE
101    ...    Set Auto Reboot  ${1}
102    Redfish.Logout
103