blob: b03ae5623a22b1b1fe5c4c1d64bf7b3c5d143b45 [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 Katti3c7b6432019-07-26 06:53:37 -050051@{null_value} null
Prashanth Kattiafe16b72019-08-02 00:29:45 -050052@{empty_dictionary} {}
53@{string_value} aa.bb.cc.dd
54
Prashanth Kattif58cce02019-02-06 03:05:14 -060055*** Test Cases ***
56
57Get IP Address And Verify
58 [Documentation] Get IP Address And Verify.
George Keishing5d467552019-02-08 23:30:48 -060059 [Tags] Get_IP_Address_And_Verify
Prashanth Kattif58cce02019-02-06 03:05:14 -060060
61 : FOR ${network_configuration} IN @{network_configurations}
Prashanth Katti747ce9d2019-02-07 07:23:48 -060062 \ Verify IP On BMC ${network_configuration['Address']}
63
Prashanth Kattif58cce02019-02-06 03:05:14 -060064Get Netmask And Verify
65 [Documentation] Get Netmask And Verify.
George Keishing5d467552019-02-08 23:30:48 -060066 [Tags] Get_Netmask_And_Verify
Prashanth Kattif58cce02019-02-06 03:05:14 -060067
68 : FOR ${network_configuration} IN @{network_configurations}
Prashanth Katti747ce9d2019-02-07 07:23:48 -060069 \ Verify Netmask On BMC ${network_configuration['SubnetMask']}
70
Prashanth Katti2ec9d8b2019-02-12 05:20:19 -060071Get Gateway And Verify
72 [Documentation] Get gateway and verify it's existence on the BMC.
73 [Tags] Get_Gateway_And_Verify
74
75 : FOR ${network_configuration} IN @{network_configurations}
76 \ Verify Gateway On BMC ${network_configuration['Gateway']}
77
78Get MAC Address And Verify
79 [Documentation] Get MAC address and verify it's existence on the BMC.
80 [Tags] Get_MAC_Address_And_Verify
81
George Keishing97c93942019-03-04 12:45:07 -060082 ${resp}= Redfish.Get ${REDFISH_NW_ETH0_URI}
Prashanth Katti2ec9d8b2019-02-12 05:20:19 -060083 ${macaddr}= Get From Dictionary ${resp.dict} MACAddress
84 Validate MAC On BMC ${macaddr}
Prashanth Kattif58cce02019-02-06 03:05:14 -060085
Prashanth Katti2c5c3bb2019-02-14 04:23:07 -060086Verify All Configured IP And Netmask
87 [Documentation] Verify all configured IP and netmask on BMC.
88 [Tags] Verify_All_Configured_IP_And_Netmask
89
90 : FOR ${network_configuration} IN @{network_configurations}
91 \ Verify IP And Netmask On BMC ${network_configuration['Address']}
92 ... ${network_configuration['SubnetMask']}
93
Prashanth Katti23efc6e2019-03-13 06:07:15 -050094Get Hostname And Verify
95 [Documentation] Get hostname via Redfish and verify.
96 [Tags] Get_Hostname_And_Verify
97
98 ${hostname}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName
99
100 Validate Hostname On BMC ${hostname}
101
102Configure Hostname And Verify
103 [Documentation] Configure hostname via Redfish and verify.
104 [Tags] Configure_Hostname_And_Verify
105
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500106 ${hostname}= Redfish_Utils.Get Attribute ${REDFISH_NW_PROTOCOL_URI} HostName
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500107
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500108 Configure Hostname ${test_hostname}
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500109 Validate Hostname On BMC ${test_hostname}
110
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500111 # Revert back to initial hostname.
112 Configure Hostname ${hostname}
113 Validate Hostname On BMC ${hostname}
114
Vijayde3bf7b2019-04-16 04:56:09 -0500115Add Valid IPv4 Address And Verify
116 [Documentation] Add IPv4 Address via Redfish and verify.
117 [Tags] Add_Valid_IPv4_Addres_And_Verify
118
119 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway}
120 Delete IP Address ${test_ipv4_addr}
121
122Add Invalid IPv4 Address And Verify
123 [Documentation] Add Invalid IPv4 Address via Redfish and verify.
124 [Tags] Add_Invalid_IPv4_Addres_And_Verify
125
126 Add IP Address ${test_ipv4_invalid_addr} ${test_subnet_mask}
127 ... ${test_gateway} valid_status_codes=${HTTP_BAD_REQUEST}
128
Prashanth Kattib36a7522019-05-22 05:32:39 -0500129Configure Out Of Range IP
130 [Documentation] Configure out-of-range IP address.
131 [Tags] Configure_Out_Of_Range_IP
132 [Template] Add IP Address
133
134 # ip subnet_mask gateway valid_status_codes
135 ${out_of_range_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
136
137Configure Broadcast IP
138 [Documentation] Configure broadcast IP address.
139 [Tags] Configure_Broadcast_IP
140 [Template] Add IP Address
Prashanth Kattic6ad6472019-06-14 03:33:39 -0500141 [Teardown] Clear IP Settings On Fail ${broadcast_ip}
Prashanth Kattib36a7522019-05-22 05:32:39 -0500142
143 # ip subnet_mask gateway valid_status_codes
144 ${broadcast_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
145
146Configure Multicast IP
147 [Documentation] Configure multicast IP address.
148 [Tags] Configure_Multicast_IP
149 [Template] Add IP Address
Prashanth Kattic6ad6472019-06-14 03:33:39 -0500150 [Teardown] Clear IP Settings On Fail ${multicast_ip}
Prashanth Kattib36a7522019-05-22 05:32:39 -0500151
152 # ip subnet_mask gateway valid_status_codes
153 ${multicast_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
154
155Configure Loopback IP
156 [Documentation] Configure loopback IP address.
157 [Tags] Configure_Loopback_IP
158 [Template] Add IP Address
Prashanth Kattic6ad6472019-06-14 03:33:39 -0500159 [Teardown] Clear IP Settings On Fail ${loopback_ip}
Prashanth Kattib36a7522019-05-22 05:32:39 -0500160
161 # ip subnet_mask gateway valid_status_codes
162 ${loopback_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
163
164Add Valid IPv4 Address And Check Persistency
165 [Documentation] Add IPv4 address and check peristency.
166 [Tags] Add_Valid_IPv4_Addres_And_Check_Persistency
167
168 Add IP Address ${test_ipv4_addr} ${test_subnet_mask} ${test_gateway}
169
170 # Reboot BMC and verify persistency.
171 OBMC Reboot (off)
George Keishing5c498742019-08-09 02:14:44 -0500172 Redfish.Login
Prashanth Kattib36a7522019-05-22 05:32:39 -0500173 Verify IP On BMC ${test_ipv4_addr}
174 Delete IP Address ${test_ipv4_addr}
Vijayde3bf7b2019-04-16 04:56:09 -0500175
Prashanth Katti6cedca22019-05-30 02:31:11 -0500176Add Fourth Octet Threshold IP And Verify
177 [Documentation] Add fourth octet threshold IP and verify.
178 [Tags] Add_Fourth_Octet_Threshold_IP_And_Verify
179
180 Add IP Address 10.7.7.254 ${test_subnet_mask} ${test_gateway}
181 Delete IP Address 10.7.7.254
182
183Add Fourth Octet Lowest IP And Verify
184 [Documentation] Add fourth octet lowest IP and verify.
185 [Tags] Add_Fourth_Octet_Lowest_IP_And_Verify
186
187 Add IP Address 10.7.7.1 ${test_subnet_mask} ${test_gateway}
188 Delete IP Address 10.7.7.1
189
190Add Third Octet Threshold IP And Verify
191 [Documentation] Add third octet threshold IP and verify.
192 [Tags] Add_Third_Octet_Threshold_IP_And_Verify
193
194 Add IP Address 10.7.255.7 ${test_subnet_mask} ${test_gateway}
195 Delete IP Address 10.7.255.7
196
197Add Third Octet Lowest IP And Verify
198 [Documentation] Add third octet lowest IP and verify.
199 [Tags] Add_Third_Octet_Lowest_IP_And_Verify
200
201 Add IP Address 10.7.0.7 ${test_subnet_mask} ${test_gateway}
202 Delete IP Address 10.7.0.7
203
204Add Second Octet Threshold IP And Verify
205 [Documentation] Add second octet threshold IP and verify.
206 [Tags] Add_Second_Octet_Threshold_IP_And_Verify
207
208 Add IP Address 10.255.7.7 ${test_subnet_mask} ${test_gateway}
209 Delete IP Address 10.255.7.7
210
211Add Second Octet Lowest IP And Verify
212 [Documentation] Add second octet lowest IP and verify.
213 [Tags] Add_Second_Octet_Lowest_IP_And_Verify
214
215 Add IP Address 10.0.7.7 ${test_subnet_mask} ${test_gateway}
216 Delete IP Address 10.0.7.7
217
218Add First Octet Threshold IP And Verify
219 [Documentation] Add first octet threshold IP and verify.
220 [Tags] Add_First_Octet_Threshold_IP_And_Verify
221
222 Add IP Address 223.7.7.7 ${test_subnet_mask} ${test_gateway}
223 Delete IP Address 223.7.7.7
224
225Add First Octet Lowest IP And Verify
226 [Documentation] Add first octet lowest IP and verify.
227 [Tags] Add_First_Octet_Lowest_IP_And_Verify
228
229 Add IP Address 1.7.7.7 ${test_subnet_mask} ${test_gateway}
230 Delete IP Address 1.7.7.7
231
Prashanth Katti040c8c12019-05-31 04:42:05 -0500232Configure Invalid Netmask
233 [Documentation] Verify error while setting invalid netmask.
234 [Tags] Configure_Invalid_Netmask
235 [Template] Add IP Address
236
237 # ip subnet_mask gateway valid_status_codes
238 ${test_ipv4_addr} ${invalid_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
239
240Configure Out Of Range Netmask
241 [Documentation] Verify error while setting out of range netmask.
242 [Tags] Configure_Out_Of_Range_Netmask
243 [Template] Add IP Address
244
245 # ip subnet_mask gateway valid_status_codes
246 ${test_ipv4_addr} ${out_of_range_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
247
248Configure Alpha Netmask
249 [Documentation] Verify error while setting alpha netmask.
250 [Tags] Configure_Alpha_Netmask
251 [Template] Add IP Address
252
253 # ip subnet_mask gateway valid_status_codes
254 ${test_ipv4_addr} ${alpha_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
255
256Configure More Byte Netmask
257 [Documentation] Verify error while setting more byte netmask.
258 [Tags] Configure_More_Byte_Netmask
259 [Template] Add IP Address
260
261 # ip subnet_mask gateway valid_status_codes
262 ${test_ipv4_addr} ${more_byte_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
263
264Configure Less Byte Netmask
265 [Documentation] Verify error while setting less byte netmask.
266 [Tags] Configure_Less_Byte_Netmask
267 [Template] Add IP Address
268
269 # ip subnet_mask gateway valid_status_codes
270 ${test_ipv4_addr} ${less_byte_netmask} ${test_gateway} ${HTTP_BAD_REQUEST}
271
Prashanth Kattic6ad6472019-06-14 03:33:39 -0500272Configure Threshold Netmask And Verify
273 [Documentation] Configure threshold netmask and verify.
274 [Tags] Configure_Threshold_Netmask_And_verify
275
276 Add IP Address ${test_ipv4_addr} ${threshold_netmask} ${test_gateway}
277 Delete IP Address ${test_ipv4_addr}
278
279Configure Lowest Netmask And Verify
280 [Documentation] Configure lowest netmask and verify.
281 [Tags] Configure_Lowest_Netmask_And_verify
282
283 Add IP Address ${test_ipv4_addr} ${lowest_netmask} ${test_gateway}
284 Delete IP Address ${test_ipv4_addr}
285
286Configure Network ID
287 [Documentation] Verify error while configuring network ID.
288 [Tags] Configure_Network_ID
289 [Template] Add IP Address
290 [Teardown] Clear IP Settings On Fail ${network_id}
291
292 # ip subnet_mask gateway valid_status_codes
293 ${network_id} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
294
295Configure Less Octet IP
296 [Documentation] Verify error while Configuring less octet IP address.
297 [Tags] Configure_Less_Octet_IP
298 [Template] Add IP Address
299
300 # ip subnet_mask gateway valid_status_codes
301 ${less_octet_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
302
303Configure Empty IP
304 [Documentation] Verify error while Configuring empty IP address.
305 [Tags] Configure_Empty_IP
306 [Template] Add IP Address
307
308 # ip subnet_mask gateway valid_status_codes
309 ${EMPTY} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
310
311Configure Special Char IP
312 [Documentation] Configure invalid IP address containing special chars.
313 [Tags] Configure_Special_Char_IP
314 [Template] Add IP Address
315
316 # ip subnet_mask gateway valid_status_codes
317 @@@.%%.44.11 ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
318
319Configure Hexadecimal IP
320 [Documentation] Configure invalid IP address containing hex value.
321 [Tags] Configure_Hexadecimal_IP
322 [Template] Add IP Address
323
324 # ip subnet_mask gateway valid_status_codes
325 ${hex_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
326
327Configure Negative Octet IP
328 [Documentation] Configure invalid IP address containing negative octet.
329 [Tags] Configure_Negative_Octet_IP
330 [Template] Add IP Address
331
332 # ip subnet_mask gateway valid_status_codes
333 ${negative_ip} ${test_subnet_mask} ${test_gateway} ${HTTP_BAD_REQUEST}
334
Prashanth Katti5cad5a02019-06-20 07:27:10 -0500335Configure Incomplete IP For Gateway
336 [Documentation] Configure incomplete IP for gateway and expect an error.
337 [Tags] Configure_Incomplete_IP_For_Gateway
338 [Template] Add IP Address
339
340 # ip subnet_mask gateway valid_status_codes
341 ${test_ipv4_addr} ${test_subnet_mask} ${less_octet_ip} ${HTTP_BAD_REQUEST}
342
343Configure Special Char IP For Gateway
344 [Documentation] Configure special char IP for gateway and expect an error.
345 [Tags] Configure_Special_Char_IP_For_Gateway
346 [Template] Add IP Address
347
348 # ip subnet_mask gateway valid_status_codes
349 ${test_ipv4_addr} ${test_subnet_mask} @@@.%%.44.11 ${HTTP_BAD_REQUEST}
350
351Configure Hexadecimal IP For Gateway
352 [Documentation] Configure hexadecimal IP for gateway and expect an error.
353 [Tags] Configure_Hexadecimal_IP_For_Gateway
354 [Template] Add IP Address
355
356 # ip subnet_mask gateway valid_status_codes
357 ${test_ipv4_addr} ${test_subnet_mask} ${hex_ip} ${HTTP_BAD_REQUEST}
358
Prashanth Katti7098c972019-07-03 06:56:42 -0500359Get DNS Server And Verify
360 [Documentation] Get DNS server via Redfish and verify.
361 [Tags] Get_DNS_Server_And_Verify
362
363 Verify CLI and Redfish Nameservers
364
365Configure DNS Server And Verify
366 [Documentation] Configure DNS server and verify.
367 [Tags] Configure_DNS_Server_And_Verify
Prashanth Kattic85957c2019-07-09 02:01:20 -0500368 [Setup] DNS Test Setup Execution
Prashanth Katti7098c972019-07-03 06:56:42 -0500369 [Teardown] Run Keywords
370 ... Configure Static Name Servers AND Test Teardown Execution
371
Prashanth Katti7098c972019-07-03 06:56:42 -0500372 Configure Static Name Servers ${static_name_servers}
373 Verify CLI and Redfish Nameservers
374
Prashanth Kattic85957c2019-07-09 02:01:20 -0500375Delete DNS Server And Verify
376 [Documentation] Delete DNS server and verify.
377 [Tags] Delete_DNS_Server_And_Verify
378 [Setup] DNS Test Setup Execution
379 [Teardown] Run Keywords
380 ... Configure Static Name Servers AND Test Teardown Execution
381
382 Delete Static Name Servers
383 Verify CLI and Redfish Nameservers
384
385Configure DNS Server And Check Persistency
386 [Documentation] Configure DNS server and check persistency on reboot.
387 [Tags] Configure_DNS_Server_And_Check_Persistency
388 [Setup] DNS Test Setup Execution
389 [Teardown] Run Keywords
390 ... Configure Static Name Servers AND Test Teardown Execution
391
392 Configure Static Name Servers ${static_name_servers}
393 # Reboot BMC and verify persistency.
394 OBMC Reboot (off)
395 Verify CLI and Redfish Nameservers
396
Prashanth Katti3063ffe2019-07-25 04:35:25 -0500397Configure Loopback IP For Gateway
398 [Documentation] Configure loopback IP for gateway and expect an error.
399 [Tags] Configure_Loopback_IP_For_Gateway
400 [Template] Add IP Address
401 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr}
402
403 # ip subnet_mask gateway valid_status_codes
404 ${test_ipv4_addr} ${test_subnet_mask} ${loopback_ip} ${HTTP_BAD_REQUEST}
405
406Configure Network ID For Gateway
407 [Documentation] Configure network ID for gateway and expect an error.
408 [Tags] Configure_Network_ID_For_Gateway
409 [Template] Add IP Address
410 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr}
411
412 # ip subnet_mask gateway valid_status_codes
413 ${test_ipv4_addr} ${test_subnet_mask} ${network_id} ${HTTP_BAD_REQUEST}
414
415Configure Multicast IP For Gateway
416 [Documentation] Configure multicast IP for gateway and expect an error.
417 [Tags] Configure_Multicast_IP_For_Gateway
418 [Template] Add IP Address
419 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr}
420
421 # ip subnet_mask gateway valid_status_codes
422 ${test_ipv4_addr} ${test_subnet_mask} ${multicaste_ip} ${HTTP_BAD_REQUEST}
423
424Configure Broadcast IP For Gateway
425 [Documentation] Configure broadcast IP for gateway and expect an error.
426 [Tags] Configure_Broadcast_IP_For_Gateway
427 [Template] Add IP Address
428 [Teardown] Clear IP Settings On Fail ${test_ipv4_addr}
429
430 # ip subnet_mask gateway valid_status_codes
431 ${test_ipv4_addr} ${test_subnet_mask} ${broadcast_ip} ${HTTP_BAD_REQUEST}
Prashanth Kattic85957c2019-07-09 02:01:20 -0500432
Prashanth Katti3c7b6432019-07-26 06:53:37 -0500433Configure Null Value For DNS Server
434 [Documentation] Configure null value for DNS server and expect an error.
435 [Tags] Configure_Null_Value_For_DNS_Server
436 [Setup] DNS Test Setup Execution
437 [Teardown] Run Keywords
438 ... Configure Static Name Servers AND Test Teardown Execution
439
440 Configure Static Name Servers ${null_value} ${HTTP_BAD_REQUEST}
441
Prashanth Kattiafe16b72019-08-02 00:29:45 -0500442Configure Empty Value For DNS Server
443 [Documentation] Configure empty value for DNS server and expect an error.
444 [Tags] Configure_Empty_Value_For_DNS_Server
445 [Setup] DNS Test Setup Execution
446 [Teardown] Run Keywords
447 ... Configure Static Name Servers AND Test Teardown Execution
448
449 Configure Static Name Servers ${empty_dictionary} ${HTTP_BAD_REQUEST}
450
451Configure String Value For DNS Server
452 [Documentation] Configure string value for DNS server and expect an error.
453 [Tags] Configure_String_Value_For_DNS_Server
454 [Setup] DNS Test Setup Execution
455 [Teardown] Run Keywords
456 ... Configure Static Name Servers AND Test Teardown Execution
457
458 Configure Static Name Servers ${string_value} ${HTTP_BAD_REQUEST}
459
Prashanth Kattif58cce02019-02-06 03:05:14 -0600460*** Keywords ***
461
462Test Setup Execution
463 [Documentation] Test setup execution.
464
George Keishing97c93942019-03-04 12:45:07 -0600465 Redfish.Login
Prashanth Kattif58cce02019-02-06 03:05:14 -0600466
467 @{network_configurations}= Get Network Configuration
468 Set Test Variable @{network_configurations}
469
470 # Get BMC IP address and prefix length.
471 ${ip_data}= Get BMC IP Info
472 Set Test Variable ${ip_data}
473
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600474
Prashanth Kattif58cce02019-02-06 03:05:14 -0600475Get Network Configuration
476 [Documentation] Get network configuration.
477
478 # Sample output:
479 #{
480 # "@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface",
481 # "@odata.id": "/redfish/v1/Managers/bmc/EthernetInterfaces/eth0",
482 # "@odata.type": "#EthernetInterface.v1_2_0.EthernetInterface",
483 # "Description": "Management Network Interface",
484 # "IPv4Addresses": [
485 # {
486 # "Address": "169.254.xx.xx",
487 # "AddressOrigin": "IPv4LinkLocal",
488 # "Gateway": "0.0.0.0",
489 # "SubnetMask": "255.255.0.0"
490 # },
491 # {
492 # "Address": "xx.xx.xx.xx",
493 # "AddressOrigin": "Static",
494 # "Gateway": "xx.xx.xx.1",
495 # "SubnetMask": "xx.xx.xx.xx"
496 # }
497 # ],
498 # "Id": "eth0",
499 # "MACAddress": "xx:xx:xx:xx:xx:xx",
500 # "Name": "Manager Ethernet Interface",
501 # "SpeedMbps": 0,
502 # "VLAN": {
503 # "VLANEnable": false,
504 # "VLANId": 0
505 # }
506
George Keishing97c93942019-03-04 12:45:07 -0600507 ${resp}= Redfish.Get ${REDFISH_NW_ETH0_URI}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500508 @{network_configurations}= Get From Dictionary ${resp.dict} IPv4StaticAddresses
Prashanth Kattif58cce02019-02-06 03:05:14 -0600509 [Return] @{network_configurations}
510
George Keishing5d467552019-02-08 23:30:48 -0600511
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600512Verify IP On BMC
513 [Documentation] Verify IP on BMC.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600514 [Arguments] ${ip}
515
Vijayde3bf7b2019-04-16 04:56:09 -0500516 # Description of argument(s):
517 # ip IP address to be verified (e.g. "10.7.7.7").
Prashanth Kattif58cce02019-02-06 03:05:14 -0600518
519 # Get IP address details on BMC using IP command.
520 @{ip_data}= Get BMC IP Info
521 Should Contain Match ${ip_data} ${ip}/*
522 ... msg=IP address does not exist.
523
Vijayde3bf7b2019-04-16 04:56:09 -0500524Add IP Address
525 [Documentation] Add IP Address To BMC.
526 [Arguments] ${ip} ${subnet_mask} ${gateway}
527 ... ${valid_status_codes}=${HTTP_OK}
528
529 # Description of argument(s):
530 # ip IP address to be added (e.g. "10.7.7.7").
531 # subnet_mask Subnet mask for the IP to be added
532 # (e.g. "255.255.0.0").
533 # gateway Gateway for the IP to be added (e.g. "10.7.7.1").
534 # valid_status_codes Expected return code from patch operation
535 # (e.g. "200"). See prolog of rest_request
536 # method in redfish_plut.py for details.
537
538 ${empty_dict}= Create Dictionary
539 ${ip_data}= Create Dictionary Address=${ip}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500540 ... SubnetMask=${subnet_mask} Gateway=${gateway}
Vijayde3bf7b2019-04-16 04:56:09 -0500541
542 ${patch_list}= Create List
543 ${network_configurations}= Get Network Configuration
544 ${num_entries}= Get Length ${network_configurations}
545
546 : FOR ${INDEX} IN RANGE 0 ${num_entries}
547 \ Append To List ${patch_list} ${empty_dict}
548
George Keishing98ffa862019-05-23 10:07:45 -0500549 # We need not check for existence of IP on BMC while adding.
Vijayde3bf7b2019-04-16 04:56:09 -0500550 Append To List ${patch_list} ${ip_data}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500551 ${data}= Create Dictionary IPv4StaticAddresses=${patch_list}
Vijayde3bf7b2019-04-16 04:56:09 -0500552
553 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data}
554 ... valid_status_codes=[${valid_status_codes}]
555
556 Return From Keyword If '${valid_status_codes}' != '${HTTP_OK}'
557
558 # Note: Network restart takes around 15-18s after patch request processing.
559 Sleep ${NETWORK_TIMEOUT}s
560 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
561
562 Verify IP On BMC ${ip}
563 Validate Network Config On BMC
564
565
566Delete IP Address
567 [Documentation] Delete IP Address Of BMC.
568 [Arguments] ${ip} ${valid_status_codes}=${HTTP_OK}
569
570 # Description of argument(s):
571 # ip IP address to be deleted (e.g. "10.7.7.7").
572 # valid_status_codes Expected return code from patch operation
573 # (e.g. "200"). See prolog of rest_request
574 # method in redfish_plut.py for details.
575
576 ${empty_dict}= Create Dictionary
577 ${patch_list}= Create List
578
579 @{network_configurations}= Get Network Configuration
580 : FOR ${network_configuration} IN @{network_configurations}
581 \ Run Keyword If '${network_configuration['Address']}' == '${ip}'
582 ... Append To List ${patch_list} ${null}
583 ... ELSE Append To List ${patch_list} ${empty_dict}
584
585 ${ip_found}= Run Keyword And Return Status List Should Contain Value
586 ... ${patch_list} ${null} msg=${ip} does not exist on BMC
587 Pass Execution If ${ip_found} == ${False} ${ip} does not exist on BMC
588
589 # Run patch command only if given IP is found on BMC
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500590 ${data}= Create Dictionary IPv4StaticAddresses=${patch_list}
Vijayde3bf7b2019-04-16 04:56:09 -0500591
592 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data}
593 ... valid_status_codes=[${valid_status_codes}]
594
595 # Note: Network restart takes around 15-18s after patch request processing
596 Sleep ${NETWORK_TIMEOUT}s
597 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
598
599 ${delete_status}= Run Keyword And Return Status Verify IP On BMC ${ip}
600 Run Keyword If '${valid_status_codes}' == '${HTTP_OK}'
601 ... Should Be True ${delete_status} == ${False}
602 ... ELSE Should Be True ${delete_status} == ${True}
603
604 Validate Network Config On BMC
605
606
607Validate Network Config On BMC
608 [Documentation] Check that network info obtained via redfish matches info
609 ... obtained via CLI.
610
611 @{network_configurations}= Get Network Configuration
612 ${ip_data}= Get BMC IP Info
613 : FOR ${network_configuration} IN @{network_configurations}
614 \ Should Contain Match ${ip_data} ${network_configuration['Address']}/*
615 ... msg=IP address does not exist.
616
George Keishing5d467552019-02-08 23:30:48 -0600617
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600618Verify Netmask On BMC
619 [Documentation] Verify netmask on BMC.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600620 [Arguments] ${netmask}
621
622 # Description of the argument(s):
623 # netmask netmask value to be verified.
624
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600625 ${prefix_length}= Netmask Prefix Length ${netmask}
626
627 Should Contain Match ${ip_data} */${prefix_length}
628 ... msg=Prefix length does not exist.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600629
Prashanth Katti2ec9d8b2019-02-12 05:20:19 -0600630Verify Gateway On BMC
631 [Documentation] Verify gateway on BMC.
632 [Arguments] ${gateway_ip}=0.0.0.0
633
634 # Description of argument(s):
635 # gateway_ip Gateway IP address.
636
637 ${route_info}= Get BMC Route Info
638
639 # If gateway IP is empty or 0.0.0.0 it will not have route entry.
640
641 Run Keyword If '${gateway_ip}' == '0.0.0.0'
642 ... Pass Execution Gateway IP is "0.0.0.0".
643 ... ELSE
644 ... Should Contain ${route_info} ${gateway_ip}
645 ... msg=Gateway IP address not matching.
George Keishing5d467552019-02-08 23:30:48 -0600646
Prashanth Katti2c5c3bb2019-02-14 04:23:07 -0600647Verify IP And Netmask On BMC
648 [Documentation] Verify IP and netmask on BMC.
649 [Arguments] ${ip} ${netmask}
650
651 # Description of the argument(s):
652 # ip IP address to be verified.
653 # netmask netmask value to be verified.
654
655 ${prefix_length}= Netmask Prefix Length ${netmask}
656 @{ip_data}= Get BMC IP Info
657
658 ${ip_with_netmask}= Catenate ${ip}/${prefix_length}
659 Should Contain ${ip_data} ${ip_with_netmask}
660 ... msg=IP and netmask pair does not exist.
661
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500662Validate Hostname On BMC
663 [Documentation] Verify that the hostname read via Redfish is the same as the
664 ... hostname configured on system.
665 [Arguments] ${hostname}
666
667 # Description of argument(s):
668 # hostname A hostname value which is to be compared to the hostname
669 # configured on system.
670
671 ${sys_hostname}= Get BMC Hostname
Prashanth Katti466d8342019-03-21 08:58:50 -0500672 Should Be Equal ${sys_hostname} ${hostname}
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500673 ... ignore_case=True msg=Hostname does not exist.
674
Prashanth Kattif58cce02019-02-06 03:05:14 -0600675Test Teardown Execution
676 [Documentation] Test teardown execution.
677
678 FFDC On Test Case Fail
George Keishing97c93942019-03-04 12:45:07 -0600679 Redfish.Logout
Prashanth Kattia8442512019-06-07 06:47:09 -0500680
681Clear IP Settings On Fail
682 [Documentation] Clear IP settings on fail.
683 [Arguments] ${ip}
684
685 # Description of argument(s):
686 # ip IP address to be deleted.
687
688 Run Keyword If '${TEST STATUS}' == 'FAIL'
689 ... Delete IP Address ${ip}
690
691 Test Teardown Execution
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500692
Prashanth Katti7098c972019-07-03 06:56:42 -0500693Verify CLI and Redfish Nameservers
694 [Documentation] Verify that nameservers obtained via Redfish do not
695 ... match those found in /etc/resolv.conf.
696
697 ${redfish_nameservers}= Redfish.Get Attribute ${REDFISH_NW_ETH0_URI} StaticNameServers
698 ${resolve_conf_nameservers}= CLI Get Nameservers
Michael Walsh39c00512019-07-17 10:54:06 -0500699 Rqprint Vars redfish_nameservers resolve_conf_nameservers
Prashanth Katti7098c972019-07-03 06:56:42 -0500700
701 # Check that the 2 lists are equivalent.
702 ${match}= Evaluate set($redfish_nameservers) == set($resolve_conf_nameservers)
703 Should Be True ${match}
704 ... The nameservers obtained via Redfish do not match those found in /etc/resolv.conf.
705
706CLI Get Nameservers
707 [Documentation] Get the nameserver IPs from /etc/resolv.conf and return as a list.
708
709 # Example of /etc/resolv.conf data:
710 # nameserver x.x.x.x
711 # nameserver y.y.y.y
712
713 ${stdout} ${stderr} ${rc}= BMC Execute Command egrep nameserver /etc/resolv.conf | cut -f2- -d ' '
714 ${nameservers}= Split String ${stdout}
715
716 [Return] ${nameservers}
717
718
719Configure Static Name Servers
720 [Documentation] Configure DNS server on BMC.
Prashanth Kattic85957c2019-07-09 02:01:20 -0500721 [Arguments] ${static_name_servers}=${original_nameservers}
Prashanth Katti3c7b6432019-07-26 06:53:37 -0500722 ... ${valid_status_codes}=${HTTP_OK}
Prashanth Katti7098c972019-07-03 06:56:42 -0500723
George Keishing9cb2e592019-07-12 09:37:33 -0500724 # Description of the argument(s):
Prashanth Katti7098c972019-07-03 06:56:42 -0500725 # static_name_servers A list of static name server IPs to be
726 # configured on the BMC.
727
728 Redfish.Patch ${REDFISH_NW_ETH0_URI} body={'StaticNameServers': ${static_name_servers}}
Prashanth Katti3c7b6432019-07-26 06:53:37 -0500729 ... valid_status_codes=[${valid_status_codes}]
Prashanth Kattic85957c2019-07-09 02:01:20 -0500730
Prashanth Katti7f9e60f2019-07-26 01:18:41 -0500731 # Check if newly added DNS server is configured on BMC.
732 ${cli_nameservers}= CLI Get Nameservers
Prashanth Katti3c7b6432019-07-26 06:53:37 -0500733 ${cmd_status}= Run Keyword And Return Status
734 ... List Should Contain Sub List ${cli_nameservers} ${static_name_servers}
735
736 Run Keyword If '${valid_status_codes}' == '${HTTP_OK}'
737 ... Should Be True ${cmd_status} == ${True}
738 ... ELSE Should Be True ${cmd_status} == ${False}
Prashanth Katti7f9e60f2019-07-26 01:18:41 -0500739
Prashanth Kattic85957c2019-07-09 02:01:20 -0500740Delete Static Name Servers
741 [Documentation] Delete static name servers.
742
743 Configure Static Name Servers @{EMPTY}
744
745 # Check if all name servers deleted on BMC.
746 ${nameservers}= CLI Get Nameservers
747 Should Be Empty ${nameservers}
748
749DNS Test Setup Execution
750 [Documentation] Do DNS test setup execution.
751
752 Redfish.Login
753
754 ${original_nameservers}= Redfish.Get Attribute ${REDFISH_NW_ETH0_URI} StaticNameServers
755 Rprint Vars original_nameservers
756 # Set suite variables to trigger restoration during teardown.
757 Set Suite Variable ${original_nameservers}