blob: dac252bcbd16c5d24441a71b9e5c0cd24fa65742 [file] [log] [blame]
George Keishing5e870cd2016-08-24 10:05:47 -05001*** Settings ***
2Documentation Code update utility
3
4Resource ../../lib/rest_client.robot
5Resource ../../lib/connection_client.robot
6Resource ../../lib/utils.robot
7Library OperatingSystem
8
9*** Variables ***
10
George Keishing0fd3b242016-11-24 09:01:41 -060011${BMC_UPD_METHOD} ${OPENBMC_BASE_URI}control/flash/bmc/action/update
12${BMC_PREP_METHOD} ${OPENBMC_BASE_URI}control/flash/bmc/action/PrepareForUpdate
13${BMC_UPD_ATTR} ${OPENBMC_BASE_URI}control/flash/bmc
14${HOST_SETTING} ${OPENBMC_BASE_URI}settings/host0
George Keishing5e870cd2016-08-24 10:05:47 -050015
16*** Keywords ***
17
18Preserve BMC Network Setting
19 [Documentation] Preserve Network setting
Gunnar Mills597ffa02016-12-06 11:26:53 -060020 ${policy}= Set Variable ${1}
21 ${value}= create dictionary data=${policy}
George Keishing5e870cd2016-08-24 10:05:47 -050022 Write Attribute ${BMC_UPD_ATTR} preserve_network_settings data=${value}
23 ${data}= Read Properties ${BMC_UPD_ATTR}
24 should be equal as strings ${data['preserve_network_settings']} ${1}
25 ... msg=0 indicates network is not preserved
26
27
28Activate BMC flash image
29 [Documentation] Activate and verify the update status
30 ... The status could be either one of these
31 ... 'Deferred for mounted filesystem. reboot BMC to apply.'
32 ... 'Image ready to apply.'
Gunnar Mills597ffa02016-12-06 11:26:53 -060033 @{img_path}= Create List /tmp/flashimg
34 ${data}= create dictionary data=@{img_path}
George Keishing5e870cd2016-08-24 10:05:47 -050035 ${resp}= openbmc post request ${BMC_UPD_METHOD} data=${data}
36 should be equal as strings ${resp.status_code} ${HTTP_OK}
George Keishing5e870cd2016-08-24 10:05:47 -050037
38 ${data}= Read Properties ${BMC_UPD_ATTR}
George Keishing0229cd32016-08-30 08:32:32 -050039 should be equal as strings ${data["filename"]} /tmp/flashimg
George Keishing5e870cd2016-08-24 10:05:47 -050040 should contain ${data['status']} to apply
41
42
George Keishingdc5aa58e92016-09-27 01:35:11 -050043Prepare For Update
44 [Documentation] Switch to update mode in progress. This method calls
45 ... the Abort method to remove the pending update if there
46 ... is any before code activation.
Gunnar Mills597ffa02016-12-06 11:26:53 -060047 ${data}= create dictionary data=@{EMPTY}
George Keishingdc5aa58e92016-09-27 01:35:11 -050048 ${resp}= openbmc post request ${BMC_PREP_METHOD} data=${data}
49 should be equal as strings ${resp.status_code} ${HTTP_OK}
50
George Keishing11319f62017-03-14 13:28:56 -050051 # Update method will reset the BMC, adding delay for reboot to
52 # come into force.
53 Sleep 10s
George Keishingdc5aa58e92016-09-27 01:35:11 -050054
55
George Keishing5e870cd2016-08-24 10:05:47 -050056SCP Tar Image File to BMC
Gunnar Mills38032802016-12-12 13:43:40 -060057 [Arguments] ${filepath}
George Keishing5e870cd2016-08-24 10:05:47 -050058 Open Connection for SCP
59 scp.Put File ${filepath} /tmp/flashimg
60
61
George Keishing5e870cd2016-08-24 10:05:47 -050062Check If File Exist
63 [Arguments] ${filepath}
64 Log \n PATH: ${filepath}
65 OperatingSystem.File Should Exist ${filepath}
66 ... msg=${filepath} doesn't exist [ ERROR ]
67
68 Set Global Variable ${FILE_PATH} ${filepath}
69
70
71System Readiness Test
Gunnar Mills597ffa02016-12-06 11:26:53 -060072 ${l_status}= Run Keyword and Return Status
George Keishingc4d3dc02016-09-19 03:45:55 -050073 ... Verify Ping and REST Authentication
George Keishing5e870cd2016-08-24 10:05:47 -050074 Run Keyword If '${l_status}' == '${False}'
75 ... Fail msg=System not in ideal state to use [ERROR]
76
77
George Keishing5e870cd2016-08-24 10:05:47 -050078Validate BMC Version
79 [Arguments] ${args}=post
80 # Check BMC installed version
81 Open Connection And Log In
82 ${version} ${stderr}= Execute Command cat /etc/version
83 ... return_stderr=True
84 Should Be Empty ${stderr}
85 # The File name contains the version installed
86 Run Keyword If '${args}' == 'before'
87 ... Should not Contain ${FILE_PATH} ${version}
88 ... msg=Same version already installed
89 ... ELSE
90 ... Should Contain ${FILE_PATH} ${version}
91 ... msg=Code update Failed
92
93
94Trigger Warm Reset via Reboot
George Keishing6c0f7152016-10-20 08:27:16 -050095 [Documentation] Execute reboot command on the remote BMC and
96 ... returns immediately. This keyword "Start Command"
97 ... returns nothing and does not wait for the command
98 ... execution to be finished.
George Keishing5e870cd2016-08-24 10:05:47 -050099 Open Connection And Log In
100
George Keishing6c0f7152016-10-20 08:27:16 -0500101 Start Command /sbin/reboot
George Keishing8db0e1b2016-10-20 13:46:54 -0500102
103Set Policy Setting
104 [Documentation] Set the given test policy
Gunnar Mills38032802016-12-12 13:43:40 -0600105 [Arguments] ${policy}
George Keishing8db0e1b2016-10-20 13:46:54 -0500106
Gunnar Mills597ffa02016-12-06 11:26:53 -0600107 ${valueDict}= create dictionary data=${policy}
George Keishing8db0e1b2016-10-20 13:46:54 -0500108 Write Attribute ${HOST_SETTING} power_policy data=${valueDict}
109 ${currentPolicy}= Read Attribute ${HOST_SETTING} power_policy
110 Should Be Equal ${currentPolicy} ${policy}