1*** Settings *** 2Documentation Test BMC manager protocol enable/disable functionality. 3 4Resource ../../lib/resource.robot 5Resource ../../lib/bmc_redfish_resource.robot 6Resource ../../lib/openbmc_ffdc.robot 7 8Suite Setup Redfish.Login 9Suite Teardown Redfish.Logout 10Test Teardown FFDC On Test Case Fail 11 12 13*** Test Cases *** 14 15Verify SSH Is Enabled By Default 16 [Documentation] Verify SSH is enabled by default. 17 [Tags] Verify_SSH_Is_Enabled_By_Default 18 19 # Check if SSH is enabled by default. 20 Verify SSH Protocol State ${True} 21 22 23Enable SSH Protocol And Verify 24 [Documentation] Enable SSH protocol and verify. 25 [Tags] Enable_SSH_Protocol_And_Verify 26 27 Enable SSH Protocol ${True} 28 29 # Check if SSH is really enabled via Redfish. 30 Verify SSH Protocol State ${True} 31 32 # Check if SSH login and commands on SSH session work. 33 Verify SSH Login And Commands Work 34 35 36Disable SSH Protocol And Verify 37 [Documentation] Disable SSH protocol and verify. 38 [Teardown] Enable SSH Protocol ${True} 39 40 # Disable SSH interface. 41 Enable SSH Protocol ${False} 42 43 # Check if SSH is really disabled via Redfish. 44 Verify SSH Protocol State ${False} 45 46 # Check if SSH login and commands fail. 47 ${status}= Run Keyword And Return Status 48 ... Verify SSH Login And Commands Work 49 50 Should Be Equal As Strings ${status} False 51 ... msg=SSH Login and commands are working after disabling SSH. 52 53 54Enable SSH Protocol And Check Persistency On BMC Reboot 55 [Documentation] Enable SSH protocol and verify persistency. 56 57 Enable SSH Protocol ${True} 58 59 # Reboot BMC and verify persistency. 60 OBMC Reboot (off) 61 62 # Check if SSH is really enabled via Redfish. 63 Verify SSH Protocol State ${True} 64 65 # Check if SSH login and commands on SSH session work. 66 Verify SSH Login And Commands Work 67 68 69Disable SSH Protocol And Check Persistency On BMC Reboot 70 [Documentation] Disable SSH protocol and verify persistency. 71 [Teardown] Enable SSH Protocol ${True} 72 73 # Disable SSH interface. 74 Enable SSH Protocol ${False} 75 76 # Reboot BMC and verify persistency. 77 OBMC Reboot (off) 78 79 # Check if SSH is really disabled via Redfish. 80 Verify SSH Protocol State ${False} 81 82 # Check if SSH login and commands fail. 83 ${status}= Run Keyword And Return Status 84 ... Verify SSH Login And Commands Work 85 86 Should Be Equal As Strings ${status} False 87 ... msg=SSH Login and commands are working after disabling SSH. 88 89 90Verify Disabling SSH Port Does Not Disable Serial Console Port 91 [Documentation] Verify disabling SSH does not disable serial console port. 92 [Tags] Verify_Disabling_SSH_Port_Does_Not_Disable_Serial_Console_Port 93 [Teardown] Enable SSH Protocol ${True} 94 95 # Disable SSH interface. 96 Enable SSH Protocol ${False} 97 98 # Check able to establish connection with serial port console. 99 Open Connection And Log In host=${OPENBMC_HOST} port=2200 100 Close All Connections 101 102 103Verify Existing SSH Session Gets Closed On Disabling SSH 104 [Documentation] Verify existing SSH session gets closed on disabling ssh. 105 [Tags] Verify_Existing_SSH_Session_Gets_Closed_On_Disabling_SSH 106 [Teardown] Enable SSH Protocol ${True} 107 108 # Open SSH connection. 109 Open Connection And Login 110 111 # Disable SSH interface. 112 Enable SSH Protocol ${False} 113 114 # Check if SSH is really disabled via Redfish. 115 Verify SSH Protocol State ${False} 116 117 # Try to execute CLI command on SSH connection. 118 # It should fail as disable SSH will close pre existing sessions. 119 ${status}= Run Keyword And Return Status 120 ... BMC Execute Command /sbin/ip addr 121 122 Should Be Equal As Strings ${status} False 123 ... msg=Disabling SSH has not closed existing SSH sessions. 124 125 126*** Keywords *** 127 128Enable SSH Protocol 129 [Documentation] Enable or disable SSH protocol. 130 [Arguments] ${enable_value}=${True} 131 132 # Description of argument(s}: 133 # enable_value Enable or disable SSH, e.g. (true, false). 134 135 ${ssh_state}= Create Dictionary ProtocolEnabled=${enable_value} 136 ${data}= Create Dictionary SSH=${ssh_state} 137 138 Redfish.Patch ${REDFISH_NW_PROTOCOL_URI} body=&{data} 139 ... valid_status_codes=[${HTTP_NO_CONTENT}] 140 141 # Wait for timeout for new values to take effect. 142 Sleep ${NETWORK_TIMEOUT}s 143 144 145Verify SSH Login And Commands Work 146 [Documentation] Verify if SSH connection works and able to run command on SSH session. 147 [Teardown] Close All Connections 148 149 # Check if we can open SSH connection and login. 150 Open Connection And Login 151 152 # Check if we can run command successfully on SSH session. 153 BMC Execute Command /sbin/ip addr 154 155 156Verify SSH Protocol State 157 [Documentation] verify SSH protocol state. 158 [Arguments] ${state}=${True} 159 160 # Description of argument(s}: 161 # state Enable or disable SSH, e.g. (true, false) 162 163 # Sample output: 164 # { 165 # "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol", 166 # "@odata.type": "#ManagerNetworkProtocol.v1_5_0.ManagerNetworkProtocol", 167 # "Description": "Manager Network Service", 168 # "FQDN": "bmc", 169 # "HTTP": { 170 # "Port": 0, 171 # "ProtocolEnabled": false 172 # }, 173 # "HTTPS": { 174 # "Certificates": { 175 # "@odata.id": "/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates" 176 # }, 177 # "Port": xxx, 178 # "ProtocolEnabled": true 179 # }, 180 # "HostName": "xxxxbmc", 181 # "IPMI": { 182 # "Port": xxx, 183 # "ProtocolEnabled": true 184 # }, 185 # "Id": "NetworkProtocol", 186 # "NTP": { 187 # "NTPServers": [ 188 # "xx.xx.xx.xx", 189 # "xx.xx.xx.xx", 190 # "xx.xx.xx.xx" 191 # ], 192 # "ProtocolEnabled": true 193 # }, 194 # "Name": "Manager Network Protocol", 195 # "SSH": { 196 # "Port": xx, 197 # "ProtocolEnabled": true 198 # }, 199 # "Status": { 200 # "Health": "OK", 201 # "HealthRollup": "OK", 202 # "State": "Enabled" 203 # } 204 # } 205 206 ${resp}= Redfish.Get ${REDFISH_NW_PROTOCOL_URI} 207 Should Be Equal As Strings ${resp.dict['SSH']['ProtocolEnabled']} ${state} 208 ... msg=Protocol states are not matching. 209