*** Settings *** Documentation This suite tests Redfish Host power operations. Resource ../../lib/boot_utils.robot Resource ../../lib/common_utils.robot Resource ../../lib/open_power_utils.robot Test Setup Test Setup Execution Test Teardown Test Teardown Execution *** Variables *** # Extended code to check OCC state, power metric and others. ${additional_power_check} ${1} ${additional_occ_check} ${1} *** Test Cases *** Verify Redfish Host GracefulShutdown [Documentation] Verify Redfish host graceful shutdown operation. [Tags] Verify_Redfish_Host_GracefulShutdown Redfish Power Off Verify Redfish BMC PowerOn With OCC State [Documentation] Verify Redfish host power on operation. [Tags] Verify_Redfish_BMC_PowerOn_With_OCC_State Redfish Power On # TODO: Replace OCC state check with redfish property when available. Verify OCC State Verify Redfish BMC PowerOn [Documentation] Verify Redfish host power on operation. [Tags] Verify_Redfish_Host_PowerOn Redfish Power On Run Keyword If ${additional_occ_check} == ${1} ... Wait Until Keyword Succeeds 3 mins 30 secs Match OCC And CPU State Count Run Keyword If ${additional_power_check} == ${1} Power Check Verify Redfish BMC GracefulRestart [Documentation] Verify Redfish host graceful restart operation. [Tags] Verify_Redfish_Host_GracefulRestart RF SYS GracefulRestart Verify Redfish BMC PowerOff [Documentation] Verify Redfish host power off operation. [Tags] Verify_Redfish_Host_PowerOff Redfish Hard Power Off *** Keywords *** Test Setup Execution [Documentation] Do test case setup tasks. Printn Start SOL Console Logging Redfish.Login Test Teardown Execution [Documentation] Collect FFDC and SOL log. FFDC On Test Case Fail ${sol_log}= Stop SOL Console Logging Log ${sol_log} Run Keyword If ${REDFISH_SUPPORTED} ... Redfish Set Auto Reboot RetryAttempts ... ELSE ... Set Auto Reboot ${1} Redfish.Logout Power Check [Documentation] Verify PowerConsumedWatts property. ${power_uri_list}= redfish_utils.Get Members URI /redfish/v1/Chassis/ PowerControl Log List ${power_uri_list} # Power entries could be seen across different redfish path, remove the URI # where the attribute is non-existent. # Example: # ['/redfish/v1/Chassis/chassis/Power', # '/redfish/v1/Chassis/motherboard/Power'] FOR ${idx} IN @{power_uri_list} ${power_control}= redfish_utils.Get Attribute ${idx} PowerControl Log Dictionary ${power_control[0]} # Ensure the path does have the attribute else set to EMPTY as default to skip. ${value}= Get Variable Value ${power_control[0]['PowerConsumedWatts']} ${EMPTY} Run Keyword If "${value}" == "${EMPTY}" ... Remove Values From List ${power_uri_list} ${idx} # Check the next available element in the list. Continue For Loop If "${value}" == "${EMPTY}" Valid Dict power_control[${0}] ['PowerConsumedWatts'] END # Double check, the validation has at least one valid path. Should Not Be Empty ${power_uri_list} ... msg=Should contain at least one element in the list.