blob: 254d1169e376b5a70edbb657b8e00e82e1d1487a [file] [log] [blame]
Prashanth Kattif58cce02019-02-06 03:05:14 -06001*** Settings ***
2Documentation Network interface configuration and verification
3 ... tests.
4
George Keishing5d467552019-02-08 23:30:48 -06005Resource ../../lib/bmc_redfish_resource.robot
6Resource ../../lib/bmc_network_utils.robot
7Resource ../../lib/openbmc_ffdc.robot
Prashanth Katti747ce9d2019-02-07 07:23:48 -06008Library ../../lib/bmc_network_utils.py
Vijayde3bf7b2019-04-16 04:56:09 -05009Library Collections
Prashanth Kattif58cce02019-02-06 03:05:14 -060010
11Test Setup Test Setup Execution
12Test Teardown Test Teardown Execution
13
Prashanth Kattif34fafa2019-06-20 05:04:40 -050014Force Tags Network_Conf_Test
15
Prashanth Katti23efc6e2019-03-13 06:07:15 -050016*** Variables ***
Vijayde3bf7b2019-04-16 04:56:09 -050017${test_hostname} openbmc
18${test_ipv4_addr} 10.7.7.7
19${test_ipv4_invalid_addr} 0.0.1.a
20${test_subnet_mask} 255.255.0.0
21${test_gateway} 10.7.7.1
Prashanth Kattib36a7522019-05-22 05:32:39 -050022${broadcast_ip} 10.7.7.255
23${loopback_ip} 127.0.0.2
24${multicast_ip} 224.6.6.6
25${out_of_range_ip} 10.7.7.256
Prashanth Katti23efc6e2019-03-13 06:07:15 -050026
Prashanth Katti040c8c12019-05-31 04:42:05 -050027# Valid netmask is 4 bytes long and has continuos block of 1s.
28# Maximum valid value in each octet is 255 and least value is 0.
29# 253 is not valid, as binary value is 11111101.
30${invalid_netmask} 255.255.253.0
31${alpha_netmask} ff.ff.ff.ff
32# Maximum value of octet in netmask is 255.
33${out_of_range_netmask} 255.256.255.0
34${more_byte_netmask} 255.255.255.0.0
35${less_byte_netmask} 255.255.255
Prashanth Kattic6ad6472019-06-14 03:33:39 -050036${threshold_netmask} 255.255.255.255
37${lowest_netmask} 128.0.0.0
38
39# There will be 4 octets in IP address (e.g. xx.xx.xx.xx)
40# but trying to configure xx.xx.xx
41${less_octet_ip} 10.3.36
42
43# For the address 10.6.6.6, the 10.6.6.0 portion describes the
44# network ID and the 6 describe the host.
45
46${network_id} 10.7.7.0
47${hex_ip} 0xa.0xb.0xc.0xd
48${negative_ip} 10.-7.-7.7
49${hex_ip} 0xa.0xb.0xc.0xd
Prashanth Katti7098c972019-07-03 06:56:42 -050050@{static_name_servers} 10.5.5.5
Prashanth Katti040c8c12019-05-31 04:42:05 -050051
Prashanth Kattif58cce02019-02-06 03:05:14 -060052*** Test Cases ***
53
54Get IP Address And Verify
55 [Documentation] Get IP Address And Verify.
George Keishing5d467552019-02-08 23:30:48 -060056 [Tags] Get_IP_Address_And_Verify
Prashanth Kattif58cce02019-02-06 03:05:14 -060057
58 : FOR ${network_configuration} IN @{network_configurations}
Prashanth Katti747ce9d2019-02-07 07:23:48 -060059 \ Verify IP On BMC ${network_configuration['Address']}
60
Prashanth Kattif58cce02019-02-06 03:05:14 -060061Get Netmask And Verify
62 [Documentation] Get Netmask And Verify.
George Keishing5d467552019-02-08 23:30:48 -060063 [Tags] Get_Netmask_And_Verify
Prashanth Kattif58cce02019-02-06 03:05:14 -060064
65 : FOR ${network_configuration} IN @{network_configurations}
Prashanth Katti747ce9d2019-02-07 07:23:48 -060066 \ Verify Netmask On BMC ${network_configuration['SubnetMask']}
67
Prashanth Katti2ec9d8b2019-02-12 05:20:19 -060068Get Gateway And Verify
69 [Documentation] Get gateway and verify it's existence on the BMC.
70 [Tags] Get_Gateway_And_Verify
71
72 : FOR ${network_configuration} IN @{network_configurations}
73 \ Verify Gateway On BMC ${network_configuration['Gateway']}
74
75Get MAC Address And Verify
76 [Documentation] Get MAC address and verify it's existence on the BMC.
77 [Tags] Get_MAC_Address_And_Verify
78
George Keishing97c93942019-03-04 12:45:07 -060079 ${resp}= Redfish.Get ${REDFISH_NW_ETH0_URI}
Prashanth Katti2ec9d8b2019-02-12 05:20:19 -060080 ${macaddr}= Get From Dictionary ${resp.dict} MACAddress
81 Validate MAC On BMC ${macaddr}
Prashanth Kattif58cce02019-02-06 03:05:14 -060082
Prashanth Katti2c5c3bb2019-02-14 04:23:07 -060083Verify All Configured IP And Netmask
84 [Documentation] Verify all configured IP and netmask on BMC.
85 [Tags] Verify_All_Configured_IP_And_Netmask
86
87 : FOR ${network_configuration} IN @{network_configurations}
88 \ Verify IP And Netmask On BMC ${network_configuration['Address']}
89 ... ${network_configuration['SubnetMask']}
90
Prashanth Katti23efc6e2019-03-13 06:07:15 -050091Get Hostname And Verify
92 [Documentation] Get hostname via Redfish and verify.
93 [Tags] Get_Hostname_And_Verify
94
95 ${hostname}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName
96
97 Validate Hostname On BMC ${hostname}
98
99Configure Hostname And Verify
100 [Documentation] Configure hostname via Redfish and verify.
101 [Tags] Configure_Hostname_And_Verify
102
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500103 ${hostname}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500104
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500105 Configure Hostname ${test_hostname}
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500106 Validate Hostname On BMC ${test_hostname}
107
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500108 # Revert back to initial hostname.
109 Configure Hostname ${hostname}
110 Validate Hostname On BMC ${hostname}
111
Vijayde3bf7b2019-04-16 04:56:09 -0500112Add Valid IPv4 Address And Verify
113 [Documentation] Add IPv4 Address via Redfish and verify.
114 [Tags] Add_Valid_IPv4_Addres_And_Verify
115
116 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway}
117 Delete IP Address ${test_ipv4_addr}
118
119Add Invalid IPv4 Address And Verify
120 [Documentation] Add Invalid IPv4 Address via Redfish and verify.
121 [Tags] Add_Invalid_IPv4_Addres_And_Verify
122
123 Add IP Address ${test_ipv4_invalid_addr} ${test_subnet_mask}
124 ... ${test_gateway} valid_status_codes=${HTTP_BAD_REQUEST}
125
Prashanth Kattib36a7522019-05-22 05:32:39 -0500126Configure Out Of Range IP
127 [Documentation] Configure out-of-range IP address.
128 [Tags] Configure_Out_Of_Range_IP
129 [Template] Add IP Address
130
131 # ip subnet_mask gateway valid_status_codes
132 ${out_of_range_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
133
134Configure Broadcast IP
135 [Documentation] Configure broadcast IP address.
136 [Tags] Configure_Broadcast_IP
137 [Template] Add IP Address
Prashanth Kattic6ad6472019-06-14 03:33:39 -0500138 [Teardown] Clear IP Settings On Fail ${broadcast_ip}
Prashanth Kattib36a7522019-05-22 05:32:39 -0500139
140 # ip subnet_mask gateway valid_status_codes
141 ${broadcast_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
142
143Configure Multicast IP
144 [Documentation] Configure multicast IP address.
145 [Tags] Configure_Multicast_IP
146 [Template] Add IP Address
Prashanth Kattic6ad6472019-06-14 03:33:39 -0500147 [Teardown] Clear IP Settings On Fail ${multicast_ip}
Prashanth Kattib36a7522019-05-22 05:32:39 -0500148
149 # ip subnet_mask gateway valid_status_codes
150 ${multicast_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
151
152Configure Loopback IP
153 [Documentation] Configure loopback IP address.
154 [Tags] Configure_Loopback_IP
155 [Template] Add IP Address
Prashanth Kattic6ad6472019-06-14 03:33:39 -0500156 [Teardown] Clear IP Settings On Fail ${loopback_ip}
Prashanth Kattib36a7522019-05-22 05:32:39 -0500157
158 # ip subnet_mask gateway valid_status_codes
159 ${loopback_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
160
161Add Valid IPv4 Address And Check Persistency
162 [Documentation] Add IPv4 address and check peristency.
163 [Tags] Add_Valid_IPv4_Addres_And_Check_Persistency
164
165 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway}
166
167 # Reboot BMC and verify persistency.
168 OBMC Reboot (off)
169 Verify IP On BMC ${test_ipv4_addr}
170 Delete IP Address ${test_ipv4_addr}
Vijayde3bf7b2019-04-16 04:56:09 -0500171
Prashanth Katti6cedca22019-05-30 02:31:11 -0500172Add Fourth Octet Threshold IP And Verify
173 [Documentation] Add fourth octet threshold IP and verify.
174 [Tags] Add_Fourth_Octet_Threshold_IP_And_Verify
175
176 Add IP Address 10.7.7.254 ${test_subnet_mask} ${test_gateway}
177 Delete IP Address 10.7.7.254
178
179Add Fourth Octet Lowest IP And Verify
180 [Documentation] Add fourth octet lowest IP and verify.
181 [Tags] Add_Fourth_Octet_Lowest_IP_And_Verify
182
183 Add IP Address 10.7.7.1 ${test_subnet_mask} ${test_gateway}
184 Delete IP Address 10.7.7.1
185
186Add Third Octet Threshold IP And Verify
187 [Documentation] Add third octet threshold IP and verify.
188 [Tags] Add_Third_Octet_Threshold_IP_And_Verify
189
190 Add IP Address 10.7.255.7 ${test_subnet_mask} ${test_gateway}
191 Delete IP Address 10.7.255.7
192
193Add Third Octet Lowest IP And Verify
194 [Documentation] Add third octet lowest IP and verify.
195 [Tags] Add_Third_Octet_Lowest_IP_And_Verify
196
197 Add IP Address 10.7.0.7 ${test_subnet_mask} ${test_gateway}
198 Delete IP Address 10.7.0.7
199
200Add Second Octet Threshold IP And Verify
201 [Documentation] Add second octet threshold IP and verify.
202 [Tags] Add_Second_Octet_Threshold_IP_And_Verify
203
204 Add IP Address 10.255.7.7 ${test_subnet_mask} ${test_gateway}
205 Delete IP Address 10.255.7.7
206
207Add Second Octet Lowest IP And Verify
208 [Documentation] Add second octet lowest IP and verify.
209 [Tags] Add_Second_Octet_Lowest_IP_And_Verify
210
211 Add IP Address 10.0.7.7 ${test_subnet_mask} ${test_gateway}
212 Delete IP Address 10.0.7.7
213
214Add First Octet Threshold IP And Verify
215 [Documentation] Add first octet threshold IP and verify.
216 [Tags] Add_First_Octet_Threshold_IP_And_Verify
217
218 Add IP Address 223.7.7.7 ${test_subnet_mask} ${test_gateway}
219 Delete IP Address 223.7.7.7
220
221Add First Octet Lowest IP And Verify
222 [Documentation] Add first octet lowest IP and verify.
223 [Tags] Add_First_Octet_Lowest_IP_And_Verify
224
225 Add IP Address 1.7.7.7 ${test_subnet_mask} ${test_gateway}
226 Delete IP Address 1.7.7.7
227
Prashanth Katti040c8c12019-05-31 04:42:05 -0500228Configure Invalid Netmask
229 [Documentation] Verify error while setting invalid netmask.
230 [Tags] Configure_Invalid_Netmask
231 [Template] Add IP Address
232
233 # ip subnet_mask gateway valid_status_codes
234 ${test_ipv4_addr} ${invalid_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
235
236Configure Out Of Range Netmask
237 [Documentation] Verify error while setting out of range netmask.
238 [Tags] Configure_Out_Of_Range_Netmask
239 [Template] Add IP Address
240
241 # ip subnet_mask gateway valid_status_codes
242 ${test_ipv4_addr} ${out_of_range_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
243
244Configure Alpha Netmask
245 [Documentation] Verify error while setting alpha netmask.
246 [Tags] Configure_Alpha_Netmask
247 [Template] Add IP Address
248
249 # ip subnet_mask gateway valid_status_codes
250 ${test_ipv4_addr} ${alpha_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
251
252Configure More Byte Netmask
253 [Documentation] Verify error while setting more byte netmask.
254 [Tags] Configure_More_Byte_Netmask
255 [Template] Add IP Address
256
257 # ip subnet_mask gateway valid_status_codes
258 ${test_ipv4_addr} ${more_byte_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
259
260Configure Less Byte Netmask
261 [Documentation] Verify error while setting less byte netmask.
262 [Tags] Configure_Less_Byte_Netmask
263 [Template] Add IP Address
264
265 # ip subnet_mask gateway valid_status_codes
266 ${test_ipv4_addr} ${less_byte_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
267
Prashanth Kattic6ad6472019-06-14 03:33:39 -0500268Configure Threshold Netmask And Verify
269 [Documentation] Configure threshold netmask and verify.
270 [Tags] Configure_Threshold_Netmask_And_verify
271
272 Add IP Address ${test_ipv4_addr} ${threshold_netmask} ${test_gateway}
273 Delete IP Address ${test_ipv4_addr}
274
275Configure Lowest Netmask And Verify
276 [Documentation] Configure lowest netmask and verify.
277 [Tags] Configure_Lowest_Netmask_And_verify
278
279 Add IP Address ${test_ipv4_addr} ${lowest_netmask} ${test_gateway}
280 Delete IP Address ${test_ipv4_addr}
281
282Configure Network ID
283 [Documentation] Verify error while configuring network ID.
284 [Tags] Configure_Network_ID
285 [Template] Add IP Address
286 [Teardown] Clear IP Settings On Fail ${network_id}
287
288 # ip subnet_mask gateway valid_status_codes
289 ${network_id} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
290
291Configure Less Octet IP
292 [Documentation] Verify error while Configuring less octet IP address.
293 [Tags] Configure_Less_Octet_IP
294 [Template] Add IP Address
295
296 # ip subnet_mask gateway valid_status_codes
297 ${less_octet_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
298
299Configure Empty IP
300 [Documentation] Verify error while Configuring empty IP address.
301 [Tags] Configure_Empty_IP
302 [Template] Add IP Address
303
304 # ip subnet_mask gateway valid_status_codes
305 ${EMPTY} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
306
307Configure Special Char IP
308 [Documentation] Configure invalid IP address containing special chars.
309 [Tags] Configure_Special_Char_IP
310 [Template] Add IP Address
311
312 # ip subnet_mask gateway valid_status_codes
313 @@@.%%.44.11 ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
314
315Configure Hexadecimal IP
316 [Documentation] Configure invalid IP address containing hex value.
317 [Tags] Configure_Hexadecimal_IP
318 [Template] Add IP Address
319
320 # ip subnet_mask gateway valid_status_codes
321 ${hex_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
322
323Configure Negative Octet IP
324 [Documentation] Configure invalid IP address containing negative octet.
325 [Tags] Configure_Negative_Octet_IP
326 [Template] Add IP Address
327
328 # ip subnet_mask gateway valid_status_codes
329 ${negative_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
330
Prashanth Katti5cad5a02019-06-20 07:27:10 -0500331Configure Incomplete IP For Gateway
332 [Documentation] Configure incomplete IP for gateway and expect an error.
333 [Tags] Configure_Incomplete_IP_For_Gateway
334 [Template] Add IP Address
335
336 # ip subnet_mask gateway valid_status_codes
337 ${test_ipv4_addr} ${test_subnet_mask} ${less_octet_ip} ${HTTP_BAD_REQUEST}
338
339Configure Special Char IP For Gateway
340 [Documentation] Configure special char IP for gateway and expect an error.
341 [Tags] Configure_Special_Char_IP_For_Gateway
342 [Template] Add IP Address
343
344 # ip subnet_mask gateway valid_status_codes
345 ${test_ipv4_addr} ${test_subnet_mask} @@@.%%.44.11 ${HTTP_BAD_REQUEST}
346
347Configure Hexadecimal IP For Gateway
348 [Documentation] Configure hexadecimal IP for gateway and expect an error.
349 [Tags] Configure_Hexadecimal_IP_For_Gateway
350 [Template] Add IP Address
351
352 # ip subnet_mask gateway valid_status_codes
353 ${test_ipv4_addr} ${test_subnet_mask} ${hex_ip} ${HTTP_BAD_REQUEST}
354
Prashanth Katti7098c972019-07-03 06:56:42 -0500355Get DNS Server And Verify
356 [Documentation] Get DNS server via Redfish and verify.
357 [Tags] Get_DNS_Server_And_Verify
358
359 Verify CLI and Redfish Nameservers
360
361Configure DNS Server And Verify
362 [Documentation] Configure DNS server and verify.
363 [Tags] Configure_DNS_Server_And_Verify
Prashanth Kattic85957c2019-07-09 02:01:20 -0500364 [Setup] DNS Test Setup Execution
Prashanth Katti7098c972019-07-03 06:56:42 -0500365 [Teardown] Run Keywords
366 ... Configure Static Name Servers AND Test Teardown Execution
367
Prashanth Katti7098c972019-07-03 06:56:42 -0500368 Configure Static Name Servers ${static_name_servers}
369 Verify CLI and Redfish Nameservers
370
Prashanth Kattic85957c2019-07-09 02:01:20 -0500371Delete DNS Server And Verify
372 [Documentation] Delete DNS server and verify.
373 [Tags] Delete_DNS_Server_And_Verify
374 [Setup] DNS Test Setup Execution
375 [Teardown] Run Keywords
376 ... Configure Static Name Servers AND Test Teardown Execution
377
378 Delete Static Name Servers
379 Verify CLI and Redfish Nameservers
380
381Configure DNS Server And Check Persistency
382 [Documentation] Configure DNS server and check persistency on reboot.
383 [Tags] Configure_DNS_Server_And_Check_Persistency
384 [Setup] DNS Test Setup Execution
385 [Teardown] Run Keywords
386 ... Configure Static Name Servers AND Test Teardown Execution
387
388 Configure Static Name Servers ${static_name_servers}
389 # Reboot BMC and verify persistency.
390 OBMC Reboot (off)
391 Verify CLI and Redfish Nameservers
392
Prashanth Katti3063ffe2019-07-25 04:35:25 -0500393Configure Loopback IP For Gateway
394 [Documentation] Configure loopback IP for gateway and expect an error.
395 [Tags] Configure_Loopback_IP_For_Gateway
396 [Template] Add IP Address
397 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr}
398
399 # ip subnet_mask gateway valid_status_codes
400 ${test_ipv4_addr} ${test_subnet_mask} ${loopback_ip} ${HTTP_BAD_REQUEST}
401
402Configure Network ID For Gateway
403 [Documentation] Configure network ID for gateway and expect an error.
404 [Tags] Configure_Network_ID_For_Gateway
405 [Template] Add IP Address
406 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr}
407
408 # ip subnet_mask gateway valid_status_codes
409 ${test_ipv4_addr} ${test_subnet_mask} ${network_id} ${HTTP_BAD_REQUEST}
410
411Configure Multicast IP For Gateway
412 [Documentation] Configure multicast IP for gateway and expect an error.
413 [Tags] Configure_Multicast_IP_For_Gateway
414 [Template] Add IP Address
415 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr}
416
417 # ip subnet_mask gateway valid_status_codes
418 ${test_ipv4_addr} ${test_subnet_mask} ${multicaste_ip} ${HTTP_BAD_REQUEST}
419
420Configure Broadcast IP For Gateway
421 [Documentation] Configure broadcast IP for gateway and expect an error.
422 [Tags] Configure_Broadcast_IP_For_Gateway
423 [Template] Add IP Address
424 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr}
425
426 # ip subnet_mask gateway valid_status_codes
427 ${test_ipv4_addr} ${test_subnet_mask} ${broadcast_ip} ${HTTP_BAD_REQUEST}
Prashanth Kattic85957c2019-07-09 02:01:20 -0500428
Prashanth Kattif58cce02019-02-06 03:05:14 -0600429*** Keywords ***
430
431Test Setup Execution
432 [Documentation] Test setup execution.
433
George Keishing97c93942019-03-04 12:45:07 -0600434 Redfish.Login
Prashanth Kattif58cce02019-02-06 03:05:14 -0600435
436 @{network_configurations}= Get Network Configuration
437 Set Test Variable @{network_configurations}
438
439 # Get BMC IP address and prefix length.
440 ${ip_data}= Get BMC IP Info
441 Set Test Variable ${ip_data}
442
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600443
Prashanth Kattif58cce02019-02-06 03:05:14 -0600444Get Network Configuration
445 [Documentation] Get network configuration.
446
447 # Sample output:
448 #{
449 # "@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface",
450 # "@odata.id": "/redfish/v1/Managers/bmc/EthernetInterfaces/eth0",
451 # "@odata.type": "#EthernetInterface.v1_2_0.EthernetInterface",
452 # "Description": "Management Network Interface",
453 # "IPv4Addresses": [
454 # {
455 # "Address": "169.254.xx.xx",
456 # "AddressOrigin": "IPv4LinkLocal",
457 # "Gateway": "0.0.0.0",
458 # "SubnetMask": "255.255.0.0"
459 # },
460 # {
461 # "Address": "xx.xx.xx.xx",
462 # "AddressOrigin": "Static",
463 # "Gateway": "xx.xx.xx.1",
464 # "SubnetMask": "xx.xx.xx.xx"
465 # }
466 # ],
467 # "Id": "eth0",
468 # "MACAddress": "xx:xx:xx:xx:xx:xx",
469 # "Name": "Manager Ethernet Interface",
470 # "SpeedMbps": 0,
471 # "VLAN": {
472 # "VLANEnable": false,
473 # "VLANId": 0
474 # }
475
George Keishing97c93942019-03-04 12:45:07 -0600476 ${resp}= Redfish.Get ${REDFISH_NW_ETH0_URI}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500477 @{network_configurations}= Get From Dictionary ${resp.dict} IPv4StaticAddresses
Prashanth Kattif58cce02019-02-06 03:05:14 -0600478 [Return] @{network_configurations}
479
George Keishing5d467552019-02-08 23:30:48 -0600480
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600481Verify IP On BMC
482 [Documentation] Verify IP on BMC.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600483 [Arguments] ${ip}
484
Vijayde3bf7b2019-04-16 04:56:09 -0500485 # Description of argument(s):
486 # ip IP address to be verified (e.g. "10.7.7.7").
Prashanth Kattif58cce02019-02-06 03:05:14 -0600487
488 # Get IP address details on BMC using IP command.
489 @{ip_data}= Get BMC IP Info
490 Should Contain Match ${ip_data} ${ip}/*
491 ... msg=IP address does not exist.
492
Vijayde3bf7b2019-04-16 04:56:09 -0500493Add IP Address
494 [Documentation] Add IP Address To BMC.
495 [Arguments] ${ip} ${subnet_mask} ${gateway}
496 ... ${valid_status_codes}=${HTTP_OK}
497
498 # Description of argument(s):
499 # ip IP address to be added (e.g. "10.7.7.7").
500 # subnet_mask Subnet mask for the IP to be added
501 # (e.g. "255.255.0.0").
502 # gateway Gateway for the IP to be added (e.g. "10.7.7.1").
503 # valid_status_codes Expected return code from patch operation
504 # (e.g. "200"). See prolog of rest_request
505 # method in redfish_plut.py for details.
506
507 ${empty_dict}= Create Dictionary
508 ${ip_data}= Create Dictionary Address=${ip}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500509 ... SubnetMask=${subnet_mask} Gateway=${gateway}
Vijayde3bf7b2019-04-16 04:56:09 -0500510
511 ${patch_list}= Create List
512 ${network_configurations}= Get Network Configuration
513 ${num_entries}= Get Length ${network_configurations}
514
515 : FOR ${INDEX} IN RANGE 0 ${num_entries}
516 \ Append To List ${patch_list} ${empty_dict}
517
George Keishing98ffa862019-05-23 10:07:45 -0500518 # We need not check for existence of IP on BMC while adding.
Vijayde3bf7b2019-04-16 04:56:09 -0500519 Append To List ${patch_list} ${ip_data}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500520 ${data}= Create Dictionary IPv4StaticAddresses=${patch_list}
Vijayde3bf7b2019-04-16 04:56:09 -0500521
522 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data}
523 ... valid_status_codes=[${valid_status_codes}]
524
525 Return From Keyword If '${valid_status_codes}' != '${HTTP_OK}'
526
527 # Note: Network restart takes around 15-18s after patch request processing.
528 Sleep ${NETWORK_TIMEOUT}s
529 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
530
531 Verify IP On BMC ${ip}
532 Validate Network Config On BMC
533
534
535Delete IP Address
536 [Documentation] Delete IP Address Of BMC.
537 [Arguments] ${ip} ${valid_status_codes}=${HTTP_OK}
538
539 # Description of argument(s):
540 # ip IP address to be deleted (e.g. "10.7.7.7").
541 # valid_status_codes Expected return code from patch operation
542 # (e.g. "200"). See prolog of rest_request
543 # method in redfish_plut.py for details.
544
545 ${empty_dict}= Create Dictionary
546 ${patch_list}= Create List
547
548 @{network_configurations}= Get Network Configuration
549 : FOR ${network_configuration} IN @{network_configurations}
550 \ Run Keyword If '${network_configuration['Address']}' == '${ip}'
551 ... Append To List ${patch_list} ${null}
552 ... ELSE Append To List ${patch_list} ${empty_dict}
553
554 ${ip_found}= Run Keyword And Return Status List Should Contain Value
555 ... ${patch_list} ${null} msg=${ip} does not exist on BMC
556 Pass Execution If ${ip_found} == ${False} ${ip} does not exist on BMC
557
558 # Run patch command only if given IP is found on BMC
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500559 ${data}= Create Dictionary IPv4StaticAddresses=${patch_list}
Vijayde3bf7b2019-04-16 04:56:09 -0500560
561 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data}
562 ... valid_status_codes=[${valid_status_codes}]
563
564 # Note: Network restart takes around 15-18s after patch request processing
565 Sleep ${NETWORK_TIMEOUT}s
566 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
567
568 ${delete_status}= Run Keyword And Return Status Verify IP On BMC ${ip}
569 Run Keyword If '${valid_status_codes}' == '${HTTP_OK}'
570 ... Should Be True ${delete_status} == ${False}
571 ... ELSE Should Be True ${delete_status} == ${True}
572
573 Validate Network Config On BMC
574
575
576Validate Network Config On BMC
577 [Documentation] Check that network info obtained via redfish matches info
578 ... obtained via CLI.
579
580 @{network_configurations}= Get Network Configuration
581 ${ip_data}= Get BMC IP Info
582 : FOR ${network_configuration} IN @{network_configurations}
583 \ Should Contain Match ${ip_data} ${network_configuration['Address']}/*
584 ... msg=IP address does not exist.
585
George Keishing5d467552019-02-08 23:30:48 -0600586
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600587Verify Netmask On BMC
588 [Documentation] Verify netmask on BMC.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600589 [Arguments] ${netmask}
590
591 # Description of the argument(s):
592 # netmask netmask value to be verified.
593
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600594 ${prefix_length}= Netmask Prefix Length ${netmask}
595
596 Should Contain Match ${ip_data} */${prefix_length}
597 ... msg=Prefix length does not exist.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600598
Prashanth Katti2ec9d8b2019-02-12 05:20:19 -0600599Verify Gateway On BMC
600 [Documentation] Verify gateway on BMC.
601 [Arguments] ${gateway_ip}=0.0.0.0
602
603 # Description of argument(s):
604 # gateway_ip Gateway IP address.
605
606 ${route_info}= Get BMC Route Info
607
608 # If gateway IP is empty or 0.0.0.0 it will not have route entry.
609
610 Run Keyword If '${gateway_ip}' == '0.0.0.0'
611 ... Pass Execution Gateway IP is "0.0.0.0".
612 ... ELSE
613 ... Should Contain ${route_info} ${gateway_ip}
614 ... msg=Gateway IP address not matching.
George Keishing5d467552019-02-08 23:30:48 -0600615
Prashanth Katti2c5c3bb2019-02-14 04:23:07 -0600616Verify IP And Netmask On BMC
617 [Documentation] Verify IP and netmask on BMC.
618 [Arguments] ${ip} ${netmask}
619
620 # Description of the argument(s):
621 # ip IP address to be verified.
622 # netmask netmask value to be verified.
623
624 ${prefix_length}= Netmask Prefix Length ${netmask}
625 @{ip_data}= Get BMC IP Info
626
627 ${ip_with_netmask}= Catenate ${ip}/${prefix_length}
628 Should Contain ${ip_data} ${ip_with_netmask}
629 ... msg=IP and netmask pair does not exist.
630
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500631Validate Hostname On BMC
632 [Documentation] Verify that the hostname read via Redfish is the same as the
633 ... hostname configured on system.
634 [Arguments] ${hostname}
635
636 # Description of argument(s):
637 # hostname A hostname value which is to be compared to the hostname
638 # configured on system.
639
640 ${sys_hostname}= Get BMC Hostname
Prashanth Katti466d8342019-03-21 08:58:50 -0500641 Should Be Equal ${sys_hostname} ${hostname}
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500642 ... ignore_case=True msg=Hostname does not exist.
643
Prashanth Kattif58cce02019-02-06 03:05:14 -0600644Test Teardown Execution
645 [Documentation] Test teardown execution.
646
647 FFDC On Test Case Fail
George Keishing97c93942019-03-04 12:45:07 -0600648 Redfish.Logout
Prashanth Kattia8442512019-06-07 06:47:09 -0500649
650Clear IP Settings On Fail
651 [Documentation] Clear IP settings on fail.
652 [Arguments] ${ip}
653
654 # Description of argument(s):
655 # ip IP address to be deleted.
656
657 Run Keyword If '${TEST STATUS}' == 'FAIL'
658 ... Delete IP Address ${ip}
659
660 Test Teardown Execution
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500661
Prashanth Katti7098c972019-07-03 06:56:42 -0500662Verify CLI and Redfish Nameservers
663 [Documentation] Verify that nameservers obtained via Redfish do not
664 ... match those found in /etc/resolv.conf.
665
666 ${redfish_nameservers}= Redfish.Get Attribute ${REDFISH_NW_ETH0_URI} StaticNameServers
667 ${resolve_conf_nameservers}= CLI Get Nameservers
Michael Walsh39c00512019-07-17 10:54:06 -0500668 Rqprint Vars redfish_nameservers resolve_conf_nameservers
Prashanth Katti7098c972019-07-03 06:56:42 -0500669
670 # Check that the 2 lists are equivalent.
671 ${match}= Evaluate set($redfish_nameservers) == set($resolve_conf_nameservers)
672 Should Be True ${match}
673 ... The nameservers obtained via Redfish do not match those found in /etc/resolv.conf.
674
675CLI Get Nameservers
676 [Documentation] Get the nameserver IPs from /etc/resolv.conf and return as a list.
677
678 # Example of /etc/resolv.conf data:
679 # nameserver x.x.x.x
680 # nameserver y.y.y.y
681
682 ${stdout} ${stderr} ${rc}= BMC Execute Command egrep nameserver /etc/resolv.conf | cut -f2- -d ' '
683 ${nameservers}= Split String ${stdout}
684
685 [Return] ${nameservers}
686
687
688Configure Static Name Servers
689 [Documentation] Configure DNS server on BMC.
Prashanth Kattic85957c2019-07-09 02:01:20 -0500690 [Arguments] ${static_name_servers}=${original_nameservers}
Prashanth Katti7098c972019-07-03 06:56:42 -0500691
George Keishing9cb2e592019-07-12 09:37:33 -0500692 # Description of the argument(s):
Prashanth Katti7098c972019-07-03 06:56:42 -0500693 # static_name_servers A list of static name server IPs to be
694 # configured on the BMC.
695
696 Redfish.Patch ${REDFISH_NW_ETH0_URI} body={'StaticNameServers': ${static_name_servers}}
Prashanth Kattic85957c2019-07-09 02:01:20 -0500697
698Delete Static Name Servers
699 [Documentation] Delete static name servers.
700
701 Configure Static Name Servers @{EMPTY}
702
703 # Check if all name servers deleted on BMC.
704 ${nameservers}= CLI Get Nameservers
705 Should Be Empty ${nameservers}
706
707DNS Test Setup Execution
708 [Documentation] Do DNS test setup execution.
709
710 Redfish.Login
711
712 ${original_nameservers}= Redfish.Get Attribute ${REDFISH_NW_ETH0_URI} StaticNameServers
713 Rprint Vars original_nameservers
714 # Set suite variables to trigger restoration during teardown.
715 Set Suite Variable ${original_nameservers}