| #!/usr/bin/env python |
| |
| r""" |
| State Manager module: |
| |
| - Defines Valid states of the system |
| |
| """ |
| from robot.libraries.BuiltIn import BuiltIn |
| |
| BuiltIn().import_resource("state_manager.robot") |
| |
| # We will build eventually the mapping for warm, cold reset as well. |
| VALID_STATES = { |
| 'reboot': |
| { |
| # (Power Policy, BMC state, Chassis State, Host State) |
| ('LEAVE_OFF','Ready','Off','Off'), |
| ('ALWAYS_POWER_ON','Ready','On','Running'), |
| ('ALWAYS_POWER_ON','Ready','On','Off'), |
| ('RESTORE_LAST_STATE','Ready','On','Running'), |
| ('RESTORE_LAST_STATE','Ready','On','Off'), |
| ('RESTORE_LAST_STATE','Ready','Off','Off'), |
| }, |
| } |
| |
| |
| class state_map(): |
| |
| def get_system_state(self): |
| r""" |
| Return the system state as a tuple of power policy, bmc, chassis and |
| host states. |
| """ |
| power_policy = BuiltIn().run_keyword('Get System Power Policy') |
| bmc_state = BuiltIn().run_keyword('Get BMC State') |
| chassis_state = BuiltIn().run_keyword('Get Chassis Power State') |
| host_state = BuiltIn().run_keyword('Get Host State') |
| return (str(power_policy), |
| str(bmc_state), |
| str(chassis_state), |
| str(host_state)) |
| |
| def valid_boot_state(self, boot_type, state_set): |
| r""" |
| Validate a given set of states is valid. |
| |
| Description of arguments: |
| boot_type Reset type (reboot/warm/cold) |
| state_set State set (bmc,chassis,host) |
| """ |
| if state_set in set(VALID_STATES[boot_type]): |
| return True |
| else: |
| return False |