| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 1 | *** Settings *** | 
 | 2 |  | 
 | 3 | Documentation          Module to test IPMI network functionality. | 
 | 4 | Resource               ../lib/ipmi_client.robot | 
 | 5 | Resource               ../lib/openbmc_ffdc.robot | 
 | 6 | Resource               ../lib/bmc_network_utils.robot | 
| George Keishing | 6f395fd | 2021-08-18 02:18:53 -0500 | [diff] [blame] | 7 | Resource               ../lib/boot_utils.robot | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 8 | Library                ../lib/ipmi_utils.py | 
 | 9 | Library                ../lib/gen_robot_valid.py | 
 | 10 | Library                ../lib/var_funcs.py | 
 | 11 | Library                ../lib/bmc_network_utils.py | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 12 | Variables              ../data/ipmi_raw_cmd_table.py | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 13 |  | 
 | 14 | Suite Setup            Suite Setup Execution | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 15 | Suite Teardown         Redfish.Logout | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 16 | Test Setup             Printn | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 17 | Test Teardown          Test Teardown Execution | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 18 |  | 
| Matt Fischer | 6fb70d9 | 2023-10-24 19:06:33 -0600 | [diff] [blame] | 19 | Test Tags             IPMI_Network_Configuration | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 20 |  | 
 | 21 | *** Variables *** | 
| George Keishing | 87dc442 | 2023-10-20 12:56:30 +0530 | [diff] [blame] | 22 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 23 | ${vlan_id_for_ipmi}     ${10} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 24 | @{vlan_ids}             ${20}  ${30} | 
 | 25 | ${interface}            eth0 | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 26 | ${initial_lan_config}   &{EMPTY} | 
 | 27 | ${vlan_resource}        ${NETWORK_MANAGER}action/VLAN | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 28 | ${subnet_mask}          ${24} | 
 | 29 | ${gateway_ip}           0.0.0.0 | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 30 | ${vlan_id_for_rest}     ${30} | 
 | 31 |  | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 32 |  | 
 | 33 | *** Test Cases *** | 
 | 34 |  | 
 | 35 | Verify IPMI Inband Network Configuration | 
 | 36 |     [Documentation]  Verify BMC network configuration via inband IPMI. | 
 | 37 |     [Tags]  Verify_IPMI_Inband_Network_Configuration | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 38 |     [Teardown]  Run Keywords  Restore Configuration  AND  set_base_url    https://${OPENBMC_HOST}:${HTTPS_PORT} | 
 | 39 |     ...  AND  FFDC On Test Case Fail  AND | 
 | 40 |     ...  Redfish.Login  AND  Run IPMI Command  ${IPMI_RAW_CMD['Device ID']['Get'][0]} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 41 |  | 
 | 42 |     Redfish Power On | 
 | 43 |  | 
| Tony Lee | 374a538 | 2021-08-09 19:22:44 +0800 | [diff] [blame] | 44 |     Set IPMI Inband Network Configuration  ${STATIC_IP}  ${NETMASK}  ${GATEWAY} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 45 |     Sleep  10 | 
 | 46 |  | 
 | 47 |     ${lan_print_output}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
| Tony Lee | 374a538 | 2021-08-09 19:22:44 +0800 | [diff] [blame] | 48 |     Valid Value  lan_print_output['IP Address']  ["${STATIC_IP}"] | 
 | 49 |     Valid Value  lan_print_output['Subnet Mask']  ["${NETMASK}"] | 
 | 50 |     Valid Value  lan_print_output['Default Gateway IP']  ["${GATEWAY}"] | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 51 |  | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 52 |     # To verify changed static ip is communicable through external IPMI cmd. | 
 | 53 |     Run External IPMI Raw Command  ${IPMI_RAW_CMD['Device ID']['Get'][0]}  H=${STATIC_IP} | 
 | 54 |  | 
 | 55 |     set_base_url    https://${STATIC_IP}:${HTTPS_PORT} | 
 | 56 |     Redfish.Login | 
 | 57 |  | 
 | 58 |  | 
 | 59 |     ${ipv4_addresses}=  Redfish.Get Attribute | 
 | 60 |     ...  ${REDFISH_NW_ETH_IFACE}${interface}  IPv4Addresses | 
 | 61 |  | 
 | 62 |     FOR  ${ipv4_address}  IN  @{ipv4_addresses} | 
 | 63 |         ${ip_address}=  Set Variable if  '${ipv4_address['Address']}' == '${STATIC_IP}' | 
 | 64 |                         ...  ${ipv4_address} | 
| Sridevi Ramesh | b0a5a6d | 2025-04-30 07:14:07 -0500 | [diff] [blame] | 65 |         IF  ${ip_address} != None  BREAK | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 66 |     END | 
 | 67 |  | 
 | 68 |     Should Be Equal  ${ip_address['AddressOrigin']}  Static | 
 | 69 |     Should Be Equal  ${ip_address['SubnetMask']}  ${NETMASK} | 
 | 70 |     Should Be Equal  ${ip_address['Gateway']}  ${GATEWAY} | 
 | 71 |  | 
 | 72 |     Redfish.Logout | 
 | 73 |  | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 74 |  | 
 | 75 | Disable VLAN Via IPMI When Multiple VLAN Exist On BMC | 
 | 76 |     [Documentation]  Disable  VLAN Via IPMI When Multiple VLAN Exist On BMC. | 
| George Keishing | b98036a | 2022-01-31 12:39:47 -0600 | [diff] [blame] | 77 |     [Tags]   Disable_VLAN_Via_IPMI_When_Multiple_VLAN_Exist_On_BMC | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 78 |  | 
| Anves Kumar rayankula | 1ee5332 | 2020-07-06 23:46:44 -0500 | [diff] [blame] | 79 |     FOR  ${vlan_id}  IN  @{vlan_ids} | 
 | 80 |       Create VLAN  ${vlan_id} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 81 |     END | 
 | 82 |  | 
 | 83 |     Create VLAN Via IPMI  off | 
 | 84 |  | 
 | 85 |     ${lan_config}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
 | 86 |     Valid Value  lan_config['802.1q VLAN ID']  ['Disabled'] | 
 | 87 |  | 
 | 88 |  | 
 | 89 | Configure IP On VLAN Via IPMI | 
 | 90 |     [Documentation]   Configure IP On VLAN Via IPMI. | 
 | 91 |     [Tags]  Configure_IP_On_VLAN_Via_IPMI | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 92 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 93 |     Create VLAN Via IPMI  ${vlan_id_for_ipmi} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 94 |  | 
 | 95 |     Run Inband IPMI Standard Command | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 96 |     ...  lan set ${CHANNEL_NUMBER} ipaddr ${STATIC_IP}  login_host=${0} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 97 |  | 
 | 98 |     ${lan_config}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 99 |     Valid Value  lan_config['802.1q VLAN ID']  ['${vlan_id_for_ipmi}'] | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 100 |     Valid Value  lan_config['IP Address']  ["${STATIC_IP}"] | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 101 |  | 
 | 102 |  | 
 | 103 | Create VLAN Via IPMI When LAN And VLAN Exist On BMC | 
 | 104 |     [Documentation]  Create VLAN Via IPMI When LAN And VLAN Exist On BMC. | 
 | 105 |     [Tags]   Create_VLAN_Via_IPMI_When_LAN_And_VLAN_Exist_On_BMC | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 106 |     [Setup]  Create VLAN  ${vlan_id_for_rest} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 107 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 108 |     Create VLAN Via IPMI  ${vlan_id_for_ipmi} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 109 |  | 
 | 110 |     ${lan_config}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 111 |     Valid Value  lan_config['802.1q VLAN ID']  ['${vlan_id_for_ipmi}'] | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 112 |  | 
 | 113 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 114 | Create VLAN Via IPMI And Verify | 
| Anvesh Kumar Rayankula | 74ed739 | 2020-02-10 01:00:11 -0600 | [diff] [blame] | 115 |     [Documentation]  Create and verify VLAN via IPMI. | 
 | 116 |     [Tags]  Create_VLAN_Via_IPMI_And_Verify | 
| Anvesh Kumar Rayankula | 74ed739 | 2020-02-10 01:00:11 -0600 | [diff] [blame] | 117 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 118 |     Create VLAN Via IPMI  ${vlan_id_for_ipmi} | 
| Anvesh Kumar Rayankula | 74ed739 | 2020-02-10 01:00:11 -0600 | [diff] [blame] | 119 |  | 
 | 120 |     ${lan_config}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 121 |     Valid Value  lan_config['802.1q VLAN ID']  ['${vlan_id_for_ipmi}'] | 
| Anvesh Kumar Rayankula | 8e25b8f | 2020-04-06 01:18:37 -0500 | [diff] [blame] | 122 |     Valid Value  lan_config['IP Address']  ['${ip_address}'] | 
 | 123 |     Valid Value  lan_config['Subnet Mask']  ['${subnet_mask}'] | 
| Anvesh Kumar Rayankula | 74ed739 | 2020-02-10 01:00:11 -0600 | [diff] [blame] | 124 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 125 | Test Disabling Of VLAN Via IPMI | 
| Anvesh Kumar Rayankula | 74ed739 | 2020-02-10 01:00:11 -0600 | [diff] [blame] | 126 |     [Documentation]  Disable VLAN and verify via IPMI. | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 127 |     [Tags]  Test_Disabling_Of_VLAN_Via_IPMI | 
| Anvesh Kumar Rayankula | 74ed739 | 2020-02-10 01:00:11 -0600 | [diff] [blame] | 128 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 129 |     Create VLAN Via IPMI  ${vlan_id_for_ipmi} | 
| Anvesh Kumar Rayankula | 74ed739 | 2020-02-10 01:00:11 -0600 | [diff] [blame] | 130 |     Create VLAN Via IPMI  off | 
 | 131 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 132 |     ${lan_config}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
| Anvesh Kumar Rayankula | 74ed739 | 2020-02-10 01:00:11 -0600 | [diff] [blame] | 133 |     Valid Value  lan_config['802.1q VLAN ID']  ['Disabled'] | 
 | 134 |  | 
 | 135 |  | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 136 | Create VLAN When LAN And VLAN Exist With IP Address Configured | 
 | 137 |    [Documentation]  Create VLAN when LAN and VLAN exist with IP address configured. | 
 | 138 |    [Tags]  Create_VLAN_When_LAN_And_VLAN_Exist_With_IP_Address_Configured | 
| Brian Ma | c658f1d | 2022-03-11 16:35:41 +0800 | [diff] [blame] | 139 |    [Setup]  Run Keywords  Create VLAN  ${vlan_id_for_rest}  interface=${interface} | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 140 |    ...  AND  Configure Network Settings On VLAN  ${vlan_id_for_rest}  ${STATIC_IP} | 
| Brian Ma | c658f1d | 2022-03-11 16:35:41 +0800 | [diff] [blame] | 141 |    ...  ${netmask}  ${gateway}  interface=${interface} | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 142 |  | 
 | 143 |    Create VLAN Via IPMI   ${vlan_id_for_ipmi} | 
 | 144 |  | 
 | 145 |    ${lan_config}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
 | 146 |    Valid Value  lan_config['802.1q VLAN ID']  ['${vlan_id_for_ipmi}'] | 
| ishwaryamathim | 64a7bb0 | 2023-11-10 08:57:20 +0000 | [diff] [blame] | 147 |    Valid Value  lan_config['IP Address']  ['${STATIC_IP}'] | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 148 |  | 
| Anvesh Kumar Rayankula | 8e25b8f | 2020-04-06 01:18:37 -0500 | [diff] [blame] | 149 |  | 
 | 150 | Create Multiple VLANs Via IPMI And Verify | 
 | 151 |     [Documentation]  Create multiple VLANs through IPMI. | 
 | 152 |     [Tags]    Create_Multiple_VLANs_Via_IPMI_And_Verify | 
 | 153 |  | 
 | 154 |     FOR  ${vlan_id}  IN  @{vlan_ids} | 
 | 155 |  | 
 | 156 |       Create VLAN Via IPMI  ${vlan_id} | 
 | 157 |  | 
 | 158 |       ${lan_config}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
 | 159 |  | 
 | 160 |       # Validate VLAN creation. | 
 | 161 |       Valid Value  lan_config['802.1q VLAN ID']  ['${vlan_id}'] | 
 | 162 |  | 
 | 163 |       # Validate existing IP address. | 
 | 164 |       Valid Value  lan_config['IP Address']  ['${ip_address}'] | 
 | 165 |  | 
 | 166 |       # Validate existing subnet mask. | 
 | 167 |       Valid Value  lan_config['Subnet Mask']  ['${subnet_mask}'] | 
 | 168 |     END | 
 | 169 |  | 
 | 170 |  | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 171 | *** Keywords *** | 
 | 172 |  | 
 | 173 | Create VLAN Via IPMI | 
 | 174 |     [Documentation]  Create VLAN via inband IPMI command. | 
 | 175 |     [Arguments]  ${vlan_id}  ${channel_number}=${CHANNEL_NUMBER} | 
 | 176 |  | 
 | 177 |     # Description of argument(s): | 
 | 178 |     # vlan_id  The VLAN ID (e.g. '10'). | 
 | 179 |  | 
 | 180 |     Run Inband IPMI Standard Command | 
 | 181 |     ...  lan set ${channel_number} vlan id ${vlan_id}  login_host=${0} | 
 | 182 |  | 
 | 183 |  | 
 | 184 | Set IPMI Inband Network Configuration | 
 | 185 |     [Documentation]  Run sequence of standard IPMI command in-band and set | 
 | 186 |     ...              the IP configuration. | 
 | 187 |     [Arguments]  ${ip}  ${netmask}  ${gateway}  ${login}=${1} | 
 | 188 |  | 
 | 189 |     # Description of argument(s): | 
 | 190 |     # ip       The IP address to be set using ipmitool-inband. | 
 | 191 |     # netmask  The Netmask to be set using ipmitool-inband. | 
 | 192 |     # gateway  The Gateway address to be set using ipmitool-inband. | 
 | 193 |  | 
 | 194 |     Run Inband IPMI Standard Command | 
 | 195 |     ...  lan set ${CHANNEL_NUMBER} ipsrc static  login_host=${login} | 
 | 196 |     Run Inband IPMI Standard Command | 
 | 197 |     ...  lan set ${CHANNEL_NUMBER} ipaddr ${ip}  login_host=${0} | 
 | 198 |     Run Inband IPMI Standard Command | 
 | 199 |     ...  lan set ${CHANNEL_NUMBER} netmask ${netmask}  login_host=${0} | 
 | 200 |     Run Inband IPMI Standard Command | 
 | 201 |     ...  lan set ${CHANNEL_NUMBER} defgw ipaddr ${gateway}  login_host=${0} | 
 | 202 |  | 
 | 203 |  | 
 | 204 | Restore Configuration | 
| Anvesh Kumar Rayankula | 8e25b8f | 2020-04-06 01:18:37 -0500 | [diff] [blame] | 205 |     [Documentation]  Restore the configuration to its pre-test state. | 
 | 206 |  | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 207 |     ${length}=  Get Length  ${initial_lan_config} | 
| Sridevi Ramesh | c6e7f93 | 2025-05-07 11:26:54 -0500 | [diff] [blame] | 208 |     IF  ${length} == ${0}  RETURN | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 209 |  | 
| Anvesh Kumar Rayankula | 8e25b8f | 2020-04-06 01:18:37 -0500 | [diff] [blame] | 210 |     Set IPMI Inband Network Configuration  ${ip_address}  ${subnet_mask} | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 211 |     ...  ${initial_lan_config['Default Gateway IP']}  login=${0} | 
 | 212 |  | 
 | 213 |  | 
 | 214 | Suite Setup Execution | 
 | 215 |     [Documentation]  Suite Setup Execution. | 
 | 216 |  | 
 | 217 |     Redfish.Login | 
| Anves Kumar rayankula | 1ee5332 | 2020-07-06 23:46:44 -0500 | [diff] [blame] | 218 |  | 
 | 219 |     ${initial_lan_config}=  Get LAN Print Dict  ${CHANNEL_NUMBER}  ipmi_cmd_type=inband | 
 | 220 |     Set Suite Variable  ${initial_lan_config} | 
 | 221 |  | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 222 |     Run Inband IPMI Standard Command | 
 | 223 |     ...  lan set ${CHANNEL_NUMBER} ipsrc static  login_host=${1} | 
 | 224 |  | 
| Anvesh Kumar Rayankula | 8e25b8f | 2020-04-06 01:18:37 -0500 | [diff] [blame] | 225 |     ${host_name}  ${ip_address}=  Get Host Name IP  host=${OPENBMC_HOST} | 
 | 226 |     Set Suite Variable  ${ip_address} | 
 | 227 |  | 
| George Keishing | 364e93d | 2020-03-05 04:31:49 -0600 | [diff] [blame] | 228 |     @{network_configurations}=  Get Network Configuration | 
| Anvesh Kumar Rayankula | 8e25b8f | 2020-04-06 01:18:37 -0500 | [diff] [blame] | 229 |     FOR  ${network_configuration}  IN  @{network_configurations} | 
| Sridevi Ramesh | c6e7f93 | 2025-05-07 11:26:54 -0500 | [diff] [blame] | 230 |        IF  '${network_configuration['Address']}' == '${ip_address}' | 
 | 231 |            Set Suite Variable  ${subnet_mask}   ${network_configuration['SubnetMask']} | 
 | 232 |            BREAK | 
 | 233 |        END | 
| Anvesh Kumar Rayankula | 8e25b8f | 2020-04-06 01:18:37 -0500 | [diff] [blame] | 234 |     END | 
| Anvesh Kumar Rayankula | e354c1c | 2020-03-09 06:01:13 -0500 | [diff] [blame] | 235 |  | 
 | 236 | Test Teardown Execution | 
 | 237 |    [Documentation]  Test Teardown Execution. | 
 | 238 |  | 
 | 239 |    FFDC On Test Case Fail | 
 | 240 |    Create VLAN Via IPMI  off | 
 | 241 |    Restore Configuration |