xref: /openbmc/openbmc-test-automation/extended/code_update/code_update_utils.robot (revision b37008119d1191b1fde43929713dc51a24a46b88)
1*** 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
11${BMC_UPD_METHOD}   /org/openbmc/control/flash/bmc/action/update
12${BMC_UPD_ATTR}     /org/openbmc/control/flash/bmc
13
14*** Keywords ***
15
16Preserve BMC Network Setting
17    [Documentation]   Preserve Network setting
18    ${policy} =       Set Variable   ${1}
19    ${value} =    create dictionary   data=${policy}
20    Write Attribute   ${BMC_UPD_ATTR}  preserve_network_settings  data=${value}
21    ${data}=      Read Properties   ${BMC_UPD_ATTR}
22    should be equal as strings    ${data['preserve_network_settings']}   ${1}
23    ...   msg=0 indicates network is not preserved
24
25
26Activate BMC flash image
27    [Documentation]   Activate and verify the update status
28    ...               The status could be either one of these
29    ...               'Deferred for mounted filesystem. reboot BMC to apply.'
30    ...               'Image ready to apply.'
31    @{img_path} =   Create List    /tmp/flashimg
32    ${data} =   create dictionary   data=@{img_path}
33    ${resp}=    openbmc post request    ${BMC_UPD_METHOD}   data=${data}
34    should be equal as strings   ${resp.status_code}   ${HTTP_OK}
35
36    ${data}=      Read Properties     ${BMC_UPD_ATTR}
37    should be equal as strings   ${data["filename"]}   /tmp/flashimg
38    should contain    ${data['status']}   to apply
39
40
41SCP Tar Image File to BMC
42    [arguments]         ${filepath}
43    Open Connection for SCP
44    scp.Put File      ${filepath}   /tmp/flashimg
45
46
47Check If File Exist
48    [Arguments]  ${filepath}
49    Log   \n PATH: ${filepath}
50    OperatingSystem.File Should Exist  ${filepath}
51    ...    msg=${filepath} doesn't exist [ ERROR ]
52
53    Set Global Variable   ${FILE_PATH}  ${filepath}
54
55
56System Readiness Test
57    ${l_status} =   Run Keyword    Verify Ping and REST Authentication
58    Run Keyword If  '${l_status}' == '${False}'
59    ...   Fail  msg=System not in ideal state to use [ERROR]
60
61
62Check If BMC is Up
63    ${status}=    Verify Ping and REST Authentication
64    Run Keyword If   '${status}' == '${False}'
65    ...     Fail   msg=Ping and REST auth failed
66
67
68Validate BMC Version
69    [Arguments]   ${args}=post
70    # Check BMC installed version
71    Open Connection And Log In
72    ${version}   ${stderr}=    Execute Command   cat /etc/version
73    ...    return_stderr=True
74    Should Be Empty     ${stderr}
75    # The File name contains the version installed
76    Run Keyword If   '${args}' == 'before'
77    ...    Should not Contain  ${FILE_PATH}   ${version}
78    ...    msg=Same version already installed
79    ...    ELSE
80    ...    Should Contain      ${FILE_PATH}   ${version}
81    ...    msg=Code update Failed
82
83
84Trigger Warm Reset via Reboot
85    [Documentation]    The reboot commands execute successfully but
86    ...                returns negative value 1
87    Open Connection And Log In
88
89    ${rc}=  SSHLibrary.Execute Command
90    ...     /sbin/reboot  return_stdout=False   return_rc=True
91    Should Be Equal As Integers   ${rc}   ${-1}
92