|  | #!/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") | 
|  |  | 
|  | ############################################################################### |