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