blob: 266c49241de8166dc67e73490b0bb94051d63772 [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 Keishingefc3ff22017-12-12 11:49:25 -060010... - Boot policy is "ALWAYS_POWER_OFF"
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
Michael Walsh1b0ceb22017-05-31 16:03:01 -050017Resource ../lib/bmc_network_utils.robot
Sunil Mec6fe312017-06-19 04:21:25 -050018Resource ../lib/bmc_cleanup.robot
George Keishing27a1f202017-08-30 22:40:26 -050019Resource ../lib/dump_utils.robot
George Keishingcaa718b2019-03-10 00:08:33 -060020Resource ../lib/bmc_redfish_resource.robot
21Resource ../lib/bmc_redfish_utils.robot
George Keishingc7748be2018-07-12 05:40:37 -050022Library ../lib/gen_misc.py
George Keishing78ea2dc2016-11-18 04:33:45 -060023
24*** Variables ***
25${HOST_SETTING} /org/openbmc/settings/host0
26
George Keishingc7748be2018-07-12 05:40:37 -050027${ERROR_REGEX} xyz.openbmc_project.Software.BMC.Updater.service: Failed with result 'core-dump'
28
Gunnar Mills7c8923f2016-12-12 21:19:52 -060029*** Test Cases ***
George Keishing78ea2dc2016-11-18 04:33:45 -060030
George Keishing62f94302017-01-31 07:00:52 -060031Get To Stable State
Rahul Maheshwari2c725042017-01-29 22:55:28 -060032 [Documentation] BMC cleanup drive to stable state
33 ... 1. PDU powercycle if specified
34 ... 1. Ping Test
35 ... 2. SSH Connection session Test
36 ... 3. REST Connection session Test
37 ... 4. Reboot BMC if REST Test failed
38 ... 5. Get BMC in Ready state if its not in this state
39 ... 6. Get Host in Off state if its not in this state
40 ... 7. Update restore policy
Sunil M89fb0f52017-05-26 05:25:33 -050041 ... 8. Verify and Update MAC address.
George Keishing62f94302017-01-31 07:00:52 -060042 [Tags] Get_To_Stable_State
George Keishing78ea2dc2016-11-18 04:33:45 -060043
Rahul Maheshwari2c725042017-01-29 22:55:28 -060044 Run Keyword And Ignore Error Powercycle System Via PDU
George Keishing34d4b8d2016-12-07 08:35:29 -060045
George Keishing13497eb2018-11-07 06:35:14 -060046 ${ping_status}= Run Keyword And Return Status
47 ... Wait For Host To Ping ${OPENBMC_HOST} 2 mins
48
49 # Check if the ping works using 1400 MTU.
George Keishinge31e2232020-10-05 12:25:25 -050050 #Run Keyword if ${ping_status} == ${True} MTU Ping Test
George Keishing13497eb2018-11-07 06:35:14 -060051
52 Run Keyword if ${ping_status} == ${False}
53 ... Fail ${OPENBMC_HOST} ping test failed.
54
55 Open Connection And Log In host=${OPENBMC_HOST}
George Keishing78ea2dc2016-11-18 04:33:45 -060056
George Keishingde2acae2020-06-17 10:00:37 -050057 Run Keyword If ${REDFISH_SUPPORTED} Redfish.Login
58
George Keishing59fa0482017-03-02 10:01:09 -060059 Wait Until Keyword Succeeds
60 ... 1 min 30 sec Initialize OpenBMC
George Keishing78ea2dc2016-11-18 04:33:45 -060061
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060062 ${ready_status}= Run Keyword And Return Status Is BMC Ready
63 Run Keyword If '${ready_status}' == '${False}' Put BMC State Ready
George Keishing78ea2dc2016-11-18 04:33:45 -060064
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060065 ${host_off_status}= Run Keyword And Return Status Is Host Off
66 Run Keyword If '${host_off_status}' == '${False}' Initiate Host PowerOff
George Keishing78ea2dc2016-11-18 04:33:45 -060067
George Keishing0bd59f12016-12-14 10:39:21 -060068 Prune Journal Log
69
George Keishingefc3ff22017-12-12 11:49:25 -060070 Run Keyword And Ignore Error Set BMC Power Policy ${ALWAYS_POWER_OFF}
George Keishingde2acae2020-06-17 10:00:37 -050071 Run Keyword And Ignore Error Redfish Set Power Restore Policy AlwaysOff
George Keishing78ea2dc2016-11-18 04:33:45 -060072
Sunil M5dc827d2017-10-17 03:49:31 -050073 Run Keyword And Ignore Error Delete All Error Logs
George Keishingcda2c452020-02-13 09:15:58 -060074 Run Keyword And Ignore Error Redfish Purge Event Log
Sunil M5dc827d2017-10-17 03:49:31 -050075 Run Keyword And Ignore Error Delete All Dumps
George Keishing033a7642020-10-14 02:41:43 -050076 Run Keyword And Ignore Error Redfish Delete All BMC Dumps
George Keishingcaa718b2019-03-10 00:08:33 -060077 Run Keyword And Ignore Error Delete All Redfish Sessions
Charles Paul Hofer7cdb8b42018-09-10 12:12:04 -050078 Check For Current Boot Application Failures
George Keishing78ea2dc2016-11-18 04:33:45 -060079
80*** Keywords ***
81
George Keishing78ea2dc2016-11-18 04:33:45 -060082BMC Online Test
83 [Documentation] BMC ping, SSH, REST connection Test
84
Gunnar Mills597ffa02016-12-06 11:26:53 -060085 ${l_status}= Run Keyword and Return Status
George Keishing78ea2dc2016-11-18 04:33:45 -060086 ... Verify Ping and REST Authentication
87 Run Keyword If '${l_status}' == '${False}'
88 ... Fail msg=System not in ideal state to continue [ERROR]
89
90
George Keishing78ea2dc2016-11-18 04:33:45 -060091Update Policy Setting
92 [Documentation] Update the given restore policy
Gunnar Mills38032802016-12-12 13:43:40 -060093 [Arguments] ${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -060094
Gunnar Mills597ffa02016-12-06 11:26:53 -060095 ${valueDict}= create dictionary data=${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -060096 Write Attribute ${HOST_SETTING} power_policy data=${valueDict}
97 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy
98 Should Be Equal ${currentPolicy} ${policy}
99
George Keishingd5123f72016-12-07 09:54:51 -0600100
101Trigger Warm Reset via Reboot
102 [Documentation] Execute reboot command on the remote BMC and
103 ... returns immediately. This keyword "Start Command"
104 ... returns nothing and does not wait for the command
105 ... execution to be finished.
106 Open Connection And Log In
107
108 Start Command /sbin/reboot
George Keishing34d4b8d2016-12-07 08:35:29 -0600109
110
111Powercycle System Via PDU
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -0500112 [Documentation] AC cycle the system via PDU.
George Keishing34d4b8d2016-12-07 08:35:29 -0600113
114 Validate Parameters
115 PDU Power Cycle
116 Check If BMC is Up 5 min 10 sec
117
118
Charles Paul Hofer7cdb8b42018-09-10 12:12:04 -0500119Check For Current Boot Application Failures
George Keishingc7748be2018-07-12 05:40:37 -0500120 [Documentation] Parse the journal log and check for failures.
121 [Arguments] ${error_regex}=${ERROR_REGEX}
122
123 ${error_regex}= Escape Bash Quotes ${error_regex}
124 ${journal_log} ${stderr} ${rc}= BMC Execute Command
Charles Paul Hoferbcae08b2018-08-09 11:33:33 -0500125 ... journalctl -b --no-pager | egrep '${error_regex}' ignore_err=1
George Keishingc7748be2018-07-12 05:40:37 -0500126
127 Should Be Empty ${journal_log}
128
129
George Keishing34d4b8d2016-12-07 08:35:29 -0600130Validate Parameters
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -0500131 [Documentation] Validate PDU parameters.
George Keishing34d4b8d2016-12-07 08:35:29 -0600132 Should Not Be Empty ${PDU_IP}
133 Should Not Be Empty ${PDU_TYPE}
134 Should Not Be Empty ${PDU_SLOT_NO}
135 Should Not Be Empty ${PDU_USERNAME}
136 Should Not Be Empty ${PDU_PASSWORD}
George Keishing13497eb2018-11-07 06:35:14 -0600137
138
139MTU Ping Test
140 [Documentation] Ping test using MTU.
141 [Arguments] ${mtu}=${1400}
142
143 # Description of argument(s):
144 # mtu The maximum transmission unit (MTU) of a network interface.
145
146 ${rc} ${output}= Run And Return RC And Output
147 ... ping -M do -s ${mtu} -c 10 ${OPENBMC_HOST}
148 Should Be Equal As Integers ${rc} 0
149 Should Not Contain ${output} 100% packet loss