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