| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 1 | *** Settings *** | 
|  | 2 | Documentation    Code update utility | 
|  | 3 |  | 
|  | 4 | Resource         ../../lib/rest_client.robot | 
|  | 5 | Resource         ../../lib/connection_client.robot | 
|  | 6 | Resource         ../../lib/utils.robot | 
|  | 7 | Library          OperatingSystem | 
|  | 8 |  | 
|  | 9 | *** Variables *** | 
|  | 10 |  | 
| George Keishing | 0fd3b24 | 2016-11-24 09:01:41 -0600 | [diff] [blame] | 11 | ${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 Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 15 |  | 
|  | 16 | *** Keywords *** | 
|  | 17 |  | 
|  | 18 | Preserve BMC Network Setting | 
|  | 19 | [Documentation]   Preserve Network setting | 
| Gunnar Mills | 597ffa0 | 2016-12-06 11:26:53 -0600 | [diff] [blame] | 20 | ${policy}=       Set Variable   ${1} | 
|  | 21 | ${value}=    create dictionary   data=${policy} | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 22 | 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 |  | 
|  | 28 | Activate 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 Mills | 597ffa0 | 2016-12-06 11:26:53 -0600 | [diff] [blame] | 33 | @{img_path}=   Create List    /tmp/flashimg | 
|  | 34 | ${data}=   create dictionary   data=@{img_path} | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 35 | ${resp}=    openbmc post request    ${BMC_UPD_METHOD}   data=${data} | 
|  | 36 | should be equal as strings   ${resp.status_code}   ${HTTP_OK} | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 37 |  | 
|  | 38 | ${data}=      Read Properties     ${BMC_UPD_ATTR} | 
| George Keishing | 0229cd3 | 2016-08-30 08:32:32 -0500 | [diff] [blame] | 39 | should be equal as strings   ${data["filename"]}   /tmp/flashimg | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 40 | should contain    ${data['status']}   to apply | 
|  | 41 |  | 
|  | 42 |  | 
| George Keishing | dc5aa58e9 | 2016-09-27 01:35:11 -0500 | [diff] [blame] | 43 | Prepare 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 Mills | 597ffa0 | 2016-12-06 11:26:53 -0600 | [diff] [blame] | 47 | ${data}=   create dictionary   data=@{EMPTY} | 
| George Keishing | dc5aa58e9 | 2016-09-27 01:35:11 -0500 | [diff] [blame] | 48 | ${resp}=    openbmc post request    ${BMC_PREP_METHOD}   data=${data} | 
|  | 49 | should be equal as strings   ${resp.status_code}   ${HTTP_OK} | 
|  | 50 |  | 
| George Keishing | 11319f6 | 2017-03-14 13:28:56 -0500 | [diff] [blame] | 51 | # Update method will reset the BMC, adding delay for reboot to | 
|  | 52 | # come into force. | 
|  | 53 | Sleep  10s | 
| George Keishing | dc5aa58e9 | 2016-09-27 01:35:11 -0500 | [diff] [blame] | 54 |  | 
|  | 55 |  | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 56 | SCP Tar Image File to BMC | 
| Gunnar Mills | 3803280 | 2016-12-12 13:43:40 -0600 | [diff] [blame] | 57 | [Arguments]         ${filepath} | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 58 | Open Connection for SCP | 
|  | 59 | scp.Put File      ${filepath}   /tmp/flashimg | 
|  | 60 |  | 
|  | 61 |  | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 62 | Check 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 |  | 
|  | 71 | System Readiness Test | 
| Gunnar Mills | 597ffa0 | 2016-12-06 11:26:53 -0600 | [diff] [blame] | 72 | ${l_status}=   Run Keyword and Return Status | 
| George Keishing | c4d3dc0 | 2016-09-19 03:45:55 -0500 | [diff] [blame] | 73 | ...   Verify Ping and REST Authentication | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 74 | Run Keyword If  '${l_status}' == '${False}' | 
|  | 75 | ...   Fail  msg=System not in ideal state to use [ERROR] | 
|  | 76 |  | 
|  | 77 |  | 
| George Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 78 | Validate 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 |  | 
|  | 94 | Trigger Warm Reset via Reboot | 
| George Keishing | 6c0f715 | 2016-10-20 08:27:16 -0500 | [diff] [blame] | 95 | [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 Keishing | 5e870cd | 2016-08-24 10:05:47 -0500 | [diff] [blame] | 99 | Open Connection And Log In | 
|  | 100 |  | 
| George Keishing | 6c0f715 | 2016-10-20 08:27:16 -0500 | [diff] [blame] | 101 | Start Command   /sbin/reboot | 
| George Keishing | 8db0e1b | 2016-10-20 13:46:54 -0500 | [diff] [blame] | 102 |  | 
|  | 103 | Set Policy Setting | 
|  | 104 | [Documentation]   Set the given test policy | 
| Gunnar Mills | 3803280 | 2016-12-12 13:43:40 -0600 | [diff] [blame] | 105 | [Arguments]   ${policy} | 
| George Keishing | 8db0e1b | 2016-10-20 13:46:54 -0500 | [diff] [blame] | 106 |  | 
| Gunnar Mills | 597ffa0 | 2016-12-06 11:26:53 -0600 | [diff] [blame] | 107 | ${valueDict}=     create dictionary  data=${policy} | 
| George Keishing | 8db0e1b | 2016-10-20 13:46:54 -0500 | [diff] [blame] | 108 | Write Attribute    ${HOST_SETTING}    power_policy   data=${valueDict} | 
|  | 109 | ${currentPolicy}=  Read Attribute     ${HOST_SETTING}   power_policy | 
|  | 110 | Should Be Equal    ${currentPolicy}   ${policy} |