blob: f039e2f11a4c48e1e4e566b2569ef6accbc753cf [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 Keishingc7748be2018-07-12 05:40:37 -050020Library ../lib/gen_misc.py
George Keishing78ea2dc2016-11-18 04:33:45 -060021
22*** Variables ***
23${HOST_SETTING} /org/openbmc/settings/host0
24
George Keishingc7748be2018-07-12 05:40:37 -050025${ERROR_REGEX} xyz.openbmc_project.Software.BMC.Updater.service: Failed with result 'core-dump'
26
Gunnar Mills7c8923f2016-12-12 21:19:52 -060027*** Test Cases ***
George Keishing78ea2dc2016-11-18 04:33:45 -060028
George Keishing62f94302017-01-31 07:00:52 -060029Get To Stable State
Rahul Maheshwari2c725042017-01-29 22:55:28 -060030 [Documentation] BMC cleanup drive to stable state
31 ... 1. PDU powercycle if specified
32 ... 1. Ping Test
33 ... 2. SSH Connection session Test
34 ... 3. REST Connection session Test
35 ... 4. Reboot BMC if REST Test failed
36 ... 5. Get BMC in Ready state if its not in this state
37 ... 6. Get Host in Off state if its not in this state
38 ... 7. Update restore policy
Sunil M89fb0f52017-05-26 05:25:33 -050039 ... 8. Verify and Update MAC address.
George Keishing62f94302017-01-31 07:00:52 -060040 [Tags] Get_To_Stable_State
George Keishing78ea2dc2016-11-18 04:33:45 -060041
Rahul Maheshwari2c725042017-01-29 22:55:28 -060042 Run Keyword And Ignore Error Powercycle System Via PDU
George Keishing34d4b8d2016-12-07 08:35:29 -060043
George Keishing59fa0482017-03-02 10:01:09 -060044 Wait For Host To Ping ${OPENBMC_HOST} 2 mins
45 Run Keyword And Ignore Error
46 ... Open Connection And Log In host=${OPENBMC_HOST}
George Keishing78ea2dc2016-11-18 04:33:45 -060047
George Keishing59fa0482017-03-02 10:01:09 -060048 Wait Until Keyword Succeeds
49 ... 1 min 30 sec Initialize OpenBMC
George Keishing78ea2dc2016-11-18 04:33:45 -060050
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060051 ${ready_status}= Run Keyword And Return Status Is BMC Ready
52 Run Keyword If '${ready_status}' == '${False}' Put BMC State Ready
George Keishing78ea2dc2016-11-18 04:33:45 -060053
Rahul Maheshwari9bd3abc2017-02-07 00:51:30 -060054 ${host_off_status}= Run Keyword And Return Status Is Host Off
55 Run Keyword If '${host_off_status}' == '${False}' Initiate Host PowerOff
George Keishing78ea2dc2016-11-18 04:33:45 -060056
George Keishing0bd59f12016-12-14 10:39:21 -060057 Prune Journal Log
58
George Keishingefc3ff22017-12-12 11:49:25 -060059 Run Keyword And Ignore Error Set BMC Power Policy ${ALWAYS_POWER_OFF}
George Keishing78ea2dc2016-11-18 04:33:45 -060060
George Keishing6bbce532017-09-21 13:03:55 -050061 # TODO: Enable MAC AES check latter.
62 # Reference : openbmc/openbmc-test-automation#998
63 #Run Keyword If '${MAC_ADDRESS}' != '${EMPTY}'
64 #... Check And Reset MAC
65
66 # TODO: Add new UBI File system cleanup.
67 # Reference : openbmc/openbmc-test-automation#998
68 #${rc}= Execute Command find ${CLEANUP_DIR_PATH}
69 #... return_stdout=False return_rc=True
70 #Run Keyword If '${CLEANUP_DIR_PATH}' != '${EMPTY}' and ${rc} == 0
71 #... Cleanup Dir
Sunil Mec6fe312017-06-19 04:21:25 -050072
Sunil M5dc827d2017-10-17 03:49:31 -050073 Run Keyword And Ignore Error Delete All Error Logs
74 Run Keyword And Ignore Error Delete All Dumps
Charles Paul Hofer7cdb8b42018-09-10 12:12:04 -050075 Check For Current Boot Application Failures
George Keishing457bb3a2018-02-22 01:16:10 -060076 Run Keyword And Ignore Error Remove Journald Logs
George Keishing78ea2dc2016-11-18 04:33:45 -060077
78*** Keywords ***
79
George Keishing78ea2dc2016-11-18 04:33:45 -060080BMC Online Test
81 [Documentation] BMC ping, SSH, REST connection Test
82
Gunnar Mills597ffa02016-12-06 11:26:53 -060083 ${l_status}= Run Keyword and Return Status
George Keishing78ea2dc2016-11-18 04:33:45 -060084 ... Verify Ping and REST Authentication
85 Run Keyword If '${l_status}' == '${False}'
86 ... Fail msg=System not in ideal state to continue [ERROR]
87
88
George Keishing78ea2dc2016-11-18 04:33:45 -060089Update Policy Setting
90 [Documentation] Update the given restore policy
Gunnar Mills38032802016-12-12 13:43:40 -060091 [Arguments] ${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -060092
Gunnar Mills597ffa02016-12-06 11:26:53 -060093 ${valueDict}= create dictionary data=${policy}
George Keishing78ea2dc2016-11-18 04:33:45 -060094 Write Attribute ${HOST_SETTING} power_policy data=${valueDict}
95 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy
96 Should Be Equal ${currentPolicy} ${policy}
97
George Keishingd5123f72016-12-07 09:54:51 -060098
99Trigger Warm Reset via Reboot
100 [Documentation] Execute reboot command on the remote BMC and
101 ... returns immediately. This keyword "Start Command"
102 ... returns nothing and does not wait for the command
103 ... execution to be finished.
104 Open Connection And Log In
105
106 Start Command /sbin/reboot
George Keishing34d4b8d2016-12-07 08:35:29 -0600107
108
109Powercycle System Via PDU
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -0500110 [Documentation] AC cycle the system via PDU.
George Keishing34d4b8d2016-12-07 08:35:29 -0600111
112 Validate Parameters
113 PDU Power Cycle
114 Check If BMC is Up 5 min 10 sec
115
116
Charles Paul Hofer7cdb8b42018-09-10 12:12:04 -0500117Check For Current Boot Application Failures
George Keishingc7748be2018-07-12 05:40:37 -0500118 [Documentation] Parse the journal log and check for failures.
119 [Arguments] ${error_regex}=${ERROR_REGEX}
120
121 ${error_regex}= Escape Bash Quotes ${error_regex}
122 ${journal_log} ${stderr} ${rc}= BMC Execute Command
Charles Paul Hoferbcae08b2018-08-09 11:33:33 -0500123 ... journalctl -b --no-pager | egrep '${error_regex}' ignore_err=1
George Keishingc7748be2018-07-12 05:40:37 -0500124
125 Should Be Empty ${journal_log}
126
127
George Keishing34d4b8d2016-12-07 08:35:29 -0600128Validate Parameters
Joy Onyerikwuf4a807b2018-06-20 08:43:54 -0500129 [Documentation] Validate PDU parameters.
George Keishing34d4b8d2016-12-07 08:35:29 -0600130 Should Not Be Empty ${PDU_IP}
131 Should Not Be Empty ${PDU_TYPE}
132 Should Not Be Empty ${PDU_SLOT_NO}
133 Should Not Be Empty ${PDU_USERNAME}
134 Should Not Be Empty ${PDU_PASSWORD}