blob: fb4157abd71251c778ecd13b21fe29608d29dcc5 [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
364 [Teardown] Run Keywords
365 ... Configure Static Name Servers AND Test Teardown Execution
366
367 ${original_redfish_nameservers}= Redfish.Get Attribute ${REDFISH_NW_ETH0_URI} StaticNameServers
368 Rprint Vars original_redfish_nameservers
369 # Set suite variables to trigger restoration during teardown.
370 Set Suite Variable ${original_redfish_nameservers}
371
372 Configure Static Name Servers ${static_name_servers}
373 Verify CLI and Redfish Nameservers
374
Prashanth Kattif58cce02019-02-06 03:05:14 -0600375*** Keywords ***
376
377Test Setup Execution
378 [Documentation] Test setup execution.
379
George Keishing97c93942019-03-04 12:45:07 -0600380 Redfish.Login
Prashanth Kattif58cce02019-02-06 03:05:14 -0600381
382 @{network_configurations}= Get Network Configuration
383 Set Test Variable @{network_configurations}
384
385 # Get BMC IP address and prefix length.
386 ${ip_data}= Get BMC IP Info
387 Set Test Variable ${ip_data}
388
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600389
Prashanth Kattif58cce02019-02-06 03:05:14 -0600390Get Network Configuration
391 [Documentation] Get network configuration.
392
393 # Sample output:
394 #{
395 # "@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface",
396 # "@odata.id": "/redfish/v1/Managers/bmc/EthernetInterfaces/eth0",
397 # "@odata.type": "#EthernetInterface.v1_2_0.EthernetInterface",
398 # "Description": "Management Network Interface",
399 # "IPv4Addresses": [
400 # {
401 # "Address": "169.254.xx.xx",
402 # "AddressOrigin": "IPv4LinkLocal",
403 # "Gateway": "0.0.0.0",
404 # "SubnetMask": "255.255.0.0"
405 # },
406 # {
407 # "Address": "xx.xx.xx.xx",
408 # "AddressOrigin": "Static",
409 # "Gateway": "xx.xx.xx.1",
410 # "SubnetMask": "xx.xx.xx.xx"
411 # }
412 # ],
413 # "Id": "eth0",
414 # "MACAddress": "xx:xx:xx:xx:xx:xx",
415 # "Name": "Manager Ethernet Interface",
416 # "SpeedMbps": 0,
417 # "VLAN": {
418 # "VLANEnable": false,
419 # "VLANId": 0
420 # }
421
George Keishing97c93942019-03-04 12:45:07 -0600422 ${resp}= Redfish.Get ${REDFISH_NW_ETH0_URI}
Prashanth Kattif58cce02019-02-06 03:05:14 -0600423 @{network_configurations}= Get From Dictionary ${resp.dict} IPv4Addresses
424 [Return] @{network_configurations}
425
George Keishing5d467552019-02-08 23:30:48 -0600426
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600427Verify IP On BMC
428 [Documentation] Verify IP on BMC.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600429 [Arguments] ${ip}
430
Vijayde3bf7b2019-04-16 04:56:09 -0500431 # Description of argument(s):
432 # ip IP address to be verified (e.g. "10.7.7.7").
Prashanth Kattif58cce02019-02-06 03:05:14 -0600433
434 # Get IP address details on BMC using IP command.
435 @{ip_data}= Get BMC IP Info
436 Should Contain Match ${ip_data} ${ip}/*
437 ... msg=IP address does not exist.
438
Vijayde3bf7b2019-04-16 04:56:09 -0500439Add IP Address
440 [Documentation] Add IP Address To BMC.
441 [Arguments] ${ip} ${subnet_mask} ${gateway}
442 ... ${valid_status_codes}=${HTTP_OK}
443
444 # Description of argument(s):
445 # ip IP address to be added (e.g. "10.7.7.7").
446 # subnet_mask Subnet mask for the IP to be added
447 # (e.g. "255.255.0.0").
448 # gateway Gateway for the IP to be added (e.g. "10.7.7.1").
449 # valid_status_codes Expected return code from patch operation
450 # (e.g. "200"). See prolog of rest_request
451 # method in redfish_plut.py for details.
452
453 ${empty_dict}= Create Dictionary
454 ${ip_data}= Create Dictionary Address=${ip}
455 ... AddressOrigin=Static SubnetMask=${subnet_mask}
456 ... Gateway=${gateway}
457
458 ${patch_list}= Create List
459 ${network_configurations}= Get Network Configuration
460 ${num_entries}= Get Length ${network_configurations}
461
462 : FOR ${INDEX} IN RANGE 0 ${num_entries}
463 \ Append To List ${patch_list} ${empty_dict}
464
George Keishing98ffa862019-05-23 10:07:45 -0500465 # We need not check for existence of IP on BMC while adding.
Vijayde3bf7b2019-04-16 04:56:09 -0500466 Append To List ${patch_list} ${ip_data}
467 ${data}= Create Dictionary IPv4Addresses=${patch_list}
468
469 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data}
470 ... valid_status_codes=[${valid_status_codes}]
471
472 Return From Keyword If '${valid_status_codes}' != '${HTTP_OK}'
473
474 # Note: Network restart takes around 15-18s after patch request processing.
475 Sleep ${NETWORK_TIMEOUT}s
476 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
477
478 Verify IP On BMC ${ip}
479 Validate Network Config On BMC
480
481
482Delete IP Address
483 [Documentation] Delete IP Address Of BMC.
484 [Arguments] ${ip} ${valid_status_codes}=${HTTP_OK}
485
486 # Description of argument(s):
487 # ip IP address to be deleted (e.g. "10.7.7.7").
488 # valid_status_codes Expected return code from patch operation
489 # (e.g. "200"). See prolog of rest_request
490 # method in redfish_plut.py for details.
491
492 ${empty_dict}= Create Dictionary
493 ${patch_list}= Create List
494
495 @{network_configurations}= Get Network Configuration
496 : FOR ${network_configuration} IN @{network_configurations}
497 \ Run Keyword If '${network_configuration['Address']}' == '${ip}'
498 ... Append To List ${patch_list} ${null}
499 ... ELSE Append To List ${patch_list} ${empty_dict}
500
501 ${ip_found}= Run Keyword And Return Status List Should Contain Value
502 ... ${patch_list} ${null} msg=${ip} does not exist on BMC
503 Pass Execution If ${ip_found} == ${False} ${ip} does not exist on BMC
504
505 # Run patch command only if given IP is found on BMC
506 ${data}= Create Dictionary IPv4Addresses=${patch_list}
507
508 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data}
509 ... valid_status_codes=[${valid_status_codes}]
510
511 # Note: Network restart takes around 15-18s after patch request processing
512 Sleep ${NETWORK_TIMEOUT}s
513 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
514
515 ${delete_status}= Run Keyword And Return Status Verify IP On BMC ${ip}
516 Run Keyword If '${valid_status_codes}' == '${HTTP_OK}'
517 ... Should Be True ${delete_status} == ${False}
518 ... ELSE Should Be True ${delete_status} == ${True}
519
520 Validate Network Config On BMC
521
522
523Validate Network Config On BMC
524 [Documentation] Check that network info obtained via redfish matches info
525 ... obtained via CLI.
526
527 @{network_configurations}= Get Network Configuration
528 ${ip_data}= Get BMC IP Info
529 : FOR ${network_configuration} IN @{network_configurations}
530 \ Should Contain Match ${ip_data} ${network_configuration['Address']}/*
531 ... msg=IP address does not exist.
532
George Keishing5d467552019-02-08 23:30:48 -0600533
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600534Verify Netmask On BMC
535 [Documentation] Verify netmask on BMC.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600536 [Arguments] ${netmask}
537
538 # Description of the argument(s):
539 # netmask netmask value to be verified.
540
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600541 ${prefix_length}= Netmask Prefix Length ${netmask}
542
543 Should Contain Match ${ip_data} */${prefix_length}
544 ... msg=Prefix length does not exist.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600545
Prashanth Katti2ec9d8b2019-02-12 05:20:19 -0600546Verify Gateway On BMC
547 [Documentation] Verify gateway on BMC.
548 [Arguments] ${gateway_ip}=0.0.0.0
549
550 # Description of argument(s):
551 # gateway_ip Gateway IP address.
552
553 ${route_info}= Get BMC Route Info
554
555 # If gateway IP is empty or 0.0.0.0 it will not have route entry.
556
557 Run Keyword If '${gateway_ip}' == '0.0.0.0'
558 ... Pass Execution Gateway IP is "0.0.0.0".
559 ... ELSE
560 ... Should Contain ${route_info} ${gateway_ip}
561 ... msg=Gateway IP address not matching.
George Keishing5d467552019-02-08 23:30:48 -0600562
Prashanth Katti2c5c3bb2019-02-14 04:23:07 -0600563Verify IP And Netmask On BMC
564 [Documentation] Verify IP and netmask on BMC.
565 [Arguments] ${ip} ${netmask}
566
567 # Description of the argument(s):
568 # ip IP address to be verified.
569 # netmask netmask value to be verified.
570
571 ${prefix_length}= Netmask Prefix Length ${netmask}
572 @{ip_data}= Get BMC IP Info
573
574 ${ip_with_netmask}= Catenate ${ip}/${prefix_length}
575 Should Contain ${ip_data} ${ip_with_netmask}
576 ... msg=IP and netmask pair does not exist.
577
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500578Validate Hostname On BMC
579 [Documentation] Verify that the hostname read via Redfish is the same as the
580 ... hostname configured on system.
581 [Arguments] ${hostname}
582
583 # Description of argument(s):
584 # hostname A hostname value which is to be compared to the hostname
585 # configured on system.
586
587 ${sys_hostname}= Get BMC Hostname
Prashanth Katti466d8342019-03-21 08:58:50 -0500588 Should Be Equal ${sys_hostname} ${hostname}
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500589 ... ignore_case=True msg=Hostname does not exist.
590
Prashanth Kattif58cce02019-02-06 03:05:14 -0600591Test Teardown Execution
592 [Documentation] Test teardown execution.
593
594 FFDC On Test Case Fail
George Keishing97c93942019-03-04 12:45:07 -0600595 Redfish.Logout
Prashanth Kattia8442512019-06-07 06:47:09 -0500596
597Clear IP Settings On Fail
598 [Documentation] Clear IP settings on fail.
599 [Arguments] ${ip}
600
601 # Description of argument(s):
602 # ip IP address to be deleted.
603
604 Run Keyword If '${TEST STATUS}' == 'FAIL'
605 ... Delete IP Address ${ip}
606
607 Test Teardown Execution
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500608
Prashanth Katti7098c972019-07-03 06:56:42 -0500609Verify CLI and Redfish Nameservers
610 [Documentation] Verify that nameservers obtained via Redfish do not
611 ... match those found in /etc/resolv.conf.
612
613 ${redfish_nameservers}= Redfish.Get Attribute ${REDFISH_NW_ETH0_URI} StaticNameServers
614 ${resolve_conf_nameservers}= CLI Get Nameservers
615 Rqprint Vars redfish_nameservers resolve_conf_nameservers fmt=terse
616
617 # Check that the 2 lists are equivalent.
618 ${match}= Evaluate set($redfish_nameservers) == set($resolve_conf_nameservers)
619 Should Be True ${match}
620 ... The nameservers obtained via Redfish do not match those found in /etc/resolv.conf.
621
622CLI Get Nameservers
623 [Documentation] Get the nameserver IPs from /etc/resolv.conf and return as a list.
624
625 # Example of /etc/resolv.conf data:
626 # nameserver x.x.x.x
627 # nameserver y.y.y.y
628
629 ${stdout} ${stderr} ${rc}= BMC Execute Command egrep nameserver /etc/resolv.conf | cut -f2- -d ' '
630 ${nameservers}= Split String ${stdout}
631
632 [Return] ${nameservers}
633
634
635Configure Static Name Servers
636 [Documentation] Configure DNS server on BMC.
637 [Arguments] ${static_name_servers}=${original_redfish_nameservers}
638
639 # Descripton of the argument(s):
640 # static_name_servers A list of static name server IPs to be
641 # configured on the BMC.
642
643 Redfish.Patch ${REDFISH_NW_ETH0_URI} body={'StaticNameServers': ${static_name_servers}}