| #!/usr/bin/env python |
| |
| r""" |
| This module is the python counterpart to utils.robot. It provides many |
| functions for communicating with the Open BMC machine. |
| """ |
| |
| import gen_robot_print as grp |
| import state as state_mod |
| import gen_robot_utils as gru |
| |
| from robot.libraries.BuiltIn import BuiltIn |
| |
| # We need utils.robot to get keyword "Initiate Power On". |
| gru.my_import_resource("utils.robot") |
| |
| |
| ############################################################################### |
| def bmc_power_on(): |
| |
| r""" |
| Power the Open BMC machine on and monitor status to verify. |
| """ |
| |
| grp.rprint_timen("Refreshing state data.") |
| state = state_mod.get_state() |
| grp.rprint_var(state) |
| |
| match_state = state_mod.anchor_state(state) |
| |
| grp.rprintn() |
| cmd_buf = ["Initiate Power On", "wait=${0}"] |
| grp.rpissuing_keyword(cmd_buf) |
| power = BuiltIn().run_keyword(*cmd_buf) |
| |
| state_change_timeout = BuiltIn().get_variable_value( |
| "${STATE_CHANGE_TIMEOUT}", default="1 min") |
| |
| # Wait for the state to change in any way. |
| state_mod.wait_state(match_state, wait_time=state_change_timeout, |
| interval="3 seconds", invert=1) |
| |
| if state_mod.OBMC_STATES_VERSION == 0: |
| cmd_buf = ["Create Dictionary", "power=${1}", |
| "bmc=HOST_BOOTED", |
| "boot_progress=FW Progress, Starting OS"] |
| else: |
| # TODO: Add back boot_progress when ipmi is enabled on Witherspoon. |
| cmd_buf = ["Create Dictionary", "chassis=On", |
| "bmc=Ready", |
| # "boot_progress=FW Progress, Starting OS", |
| "host=Running"] |
| grp.rdpissuing_keyword(cmd_buf) |
| final_state = BuiltIn().run_keyword(*cmd_buf) |
| |
| os_host = BuiltIn().get_variable_value("${OS_HOST}", default="") |
| |
| if os_host != "": |
| final_state['os_ping'] = 1 |
| final_state['os_login'] = 1 |
| final_state['os_run_cmd'] = 1 |
| |
| final_state = state_mod.anchor_state(final_state) |
| |
| grp.rprintn() |
| power_on_timeout = BuiltIn().get_variable_value( |
| "${POWER_ON_TIMEOUT}", default="14 mins") |
| state_mod.wait_state(final_state, wait_time=power_on_timeout, |
| interval="3 seconds") |
| |
| ############################################################################### |