blob: e56b12d612b7acd1f4f2e72c8063388a6e648f57 [file] [log] [blame]
George Keishing78ea2dc2016-11-18 04:33:45 -06001*** Settings ***
2Documentation This module will take whatever action is necessary
3... to bring the BMC to a stable, standby state. For our
4... purposes, a stable state is defined as:
5... - BMC is communicating
6... (pinging, sshing and REST commands working)
7... - Power state is 0 (off)
Rahul Maheshwari2c725042017-01-29 22:55:28 -06008... - BMC state is "Ready"
9... - HOST state is "Off"
George Keishing78ea2dc2016-11-18 04:33:45 -060010... - Boot policy is "RESTORE_LAST_STATE"
George Keishing34d4b8d2016-12-07 08:35:29 -060011... Power cycle system via PDU if specified
George Keishing0bd59f12016-12-14 10:39:21 -060012... Prune archived journal logs
George Keishing78ea2dc2016-11-18 04:33:45 -060013
George Keishing78ea2dc2016-11-18 04:33:45 -060014Resource ../lib/utils.robot
George Keishing34d4b8d2016-12-07 08:35:29 -060015Resource ../lib/pdu/pdu.robot
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060016Resource ../lib/state_manager.robot
George Keishing78ea2dc2016-11-18 04:33:45 -060017
18*** Variables ***
19${HOST_SETTING} /org/openbmc/settings/host0
20
Gunnar Mills7c8923f2016-12-12 21:19:52 -060021*** Test Cases ***
George Keishing78ea2dc2016-11-18 04:33:45 -060022
George Keishing62f94302017-01-31 07:00:52 -060023Get To Stable State
Rahul Maheshwari2c725042017-01-29 22:55:28 -060024 [Documentation] BMC cleanup drive to stable state
25 ... 1. PDU powercycle if specified
26 ... 1. Ping Test
27 ... 2. SSH Connection session Test
28 ... 3. REST Connection session Test
29 ... 4. Reboot BMC if REST Test failed
30 ... 5. Get BMC in Ready state if its not in this state
31 ... 6. Get Host in Off state if its not in this state
32 ... 7. Update restore policy
George Keishing62f94302017-01-31 07:00:52 -060033 [Tags] Get_To_Stable_State
George Keishing78ea2dc2016-11-18 04:33:45 -060034
Rahul Maheshwari2c725042017-01-29 22:55:28 -060035 Run Keyword And Ignore Error Powercycle System Via PDU
George Keishing34d4b8d2016-12-07 08:35:29 -060036
George Keishing78ea2dc2016-11-18 04:33:45 -060037 Wait For Host To Ping ${OPENBMC_HOST} 1 mins
Rahul Maheshwari2c725042017-01-29 22:55:28 -060038 Open Connection And Log In host=${OPENBMC_HOST}
George Keishing78ea2dc2016-11-18 04:33:45 -060039
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060040 ${rest_status}= Run Keyword And Return Status Initialize OpenBMC
41 Run Keyword If '${rest_status}' == '${False}'
42 ... Reboot and Wait for BMC Online
George Keishing78ea2dc2016-11-18 04:33:45 -060043
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060044 ${ready_status}= Run Keyword And Return Status Is BMC Ready
45 Run Keyword If '${ready_status}' == '${False}' Put BMC State Ready
George Keishing78ea2dc2016-11-18 04:33:45 -060046
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060047 ${host_off_status}= Run Keyword And Return Status Is Host Off
48 Run Keyword If '${host_off_status}' == '${False}' Initiate Host PowerOff
George Keishing78ea2dc2016-11-18 04:33:45 -060049
George Keishing0bd59f12016-12-14 10:39:21 -060050 Prune Journal Log
51
Rahul Maheshwari2c725042017-01-29 22:55:28 -060052 Run Keyword And Ignore Error Update Policy Setting RESTORE_LAST_STATE
George Keishing78ea2dc2016-11-18 04:33:45 -060053
54
55*** Keywords ***
56
57Reboot and Wait for BMC Online
58 [Documentation] Reboot BMC and wait for it to come online
59 ... and boot to standby
60
61 Trigger Warm Reset via Reboot
62 Wait Until Keyword Succeeds
63 ... 5 min 10 sec BMC Online Test
64
65 Wait For BMC Standby
66
67
68BMC Online Test
69 [Documentation] BMC ping, SSH, REST connection Test
70
Gunnar Mills597ffa02016-12-06 11:26:53 -060071 ${l_status}= Run Keyword and Return Status
George Keishing78ea2dc2016-11-18 04:33:45 -060072 ... Verify Ping and REST Authentication
73 Run Keyword If '${l_status}' == '${False}'
74 ... Fail msg=System not in ideal state to continue [ERROR]
75
76
77Wait For BMC Standby
78 [Documentation] Wait Until BMC standby post BMC reboot
79
80 @{states}= Create List BMC_READY HOST_POWERED_OFF
81 Wait Until Keyword Succeeds
82 ... 10 min 10 sec Verify BMC State ${states}
83
84
George Keishing65a198e2017-02-06 12:40:06 -060085Get BMC State and Expect Standby
86 [Documentation] Get BMC state and should be at standby
87
88 @{states}= Create List BMC_READY HOST_POWERED_OFF
89 ${bmc_state}= Get BMC State Deprecated
90 Should Contain ${states} ${bmc_state}
91
92
George Keishing78ea2dc2016-11-18 04:33:45 -060093Update Policy Setting
94 [Documentation] Update the given restore policy
Gunnar Mills38032802016-12-12 13:43:40 -060095 [Arguments] ${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -060096
Gunnar Mills597ffa02016-12-06 11:26:53 -060097 ${valueDict}= create dictionary data=${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -060098 Write Attribute ${HOST_SETTING} power_policy data=${valueDict}
99 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy
100 Should Be Equal ${currentPolicy} ${policy}
101
George Keishingd5123f72016-12-07 09:54:51 -0600102
103Trigger Warm Reset via Reboot
104 [Documentation] Execute reboot command on the remote BMC and
105 ... returns immediately. This keyword "Start Command"
106 ... returns nothing and does not wait for the command
107 ... execution to be finished.
108 Open Connection And Log In
109
110 Start Command /sbin/reboot
George Keishing34d4b8d2016-12-07 08:35:29 -0600111
112
113Powercycle System Via PDU
114 [Documentation] AC cycle the system via PDU
115
116 Validate Parameters
117 PDU Power Cycle
118 Check If BMC is Up 5 min 10 sec
119
120
121Validate Parameters
122 Should Not Be Empty ${PDU_IP}
123 Should Not Be Empty ${PDU_TYPE}
124 Should Not Be Empty ${PDU_SLOT_NO}
125 Should Not Be Empty ${PDU_USERNAME}
126 Should Not Be Empty ${PDU_PASSWORD}