blob: ffb3d16d68a1aa30583688d0b74c9e2c6e55bf44 [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
393
Prashanth Kattif58cce02019-02-06 03:05:14 -0600394*** Keywords ***
395
396Test Setup Execution
397 [Documentation] Test setup execution.
398
George Keishing97c93942019-03-04 12:45:07 -0600399 Redfish.Login
Prashanth Kattif58cce02019-02-06 03:05:14 -0600400
401 @{network_configurations}= Get Network Configuration
402 Set Test Variable @{network_configurations}
403
404 # Get BMC IP address and prefix length.
405 ${ip_data}= Get BMC IP Info
406 Set Test Variable ${ip_data}
407
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600408
Prashanth Kattif58cce02019-02-06 03:05:14 -0600409Get Network Configuration
410 [Documentation] Get network configuration.
411
412 # Sample output:
413 #{
414 # "@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface",
415 # "@odata.id": "/redfish/v1/Managers/bmc/EthernetInterfaces/eth0",
416 # "@odata.type": "#EthernetInterface.v1_2_0.EthernetInterface",
417 # "Description": "Management Network Interface",
418 # "IPv4Addresses": [
419 # {
420 # "Address": "169.254.xx.xx",
421 # "AddressOrigin": "IPv4LinkLocal",
422 # "Gateway": "0.0.0.0",
423 # "SubnetMask": "255.255.0.0"
424 # },
425 # {
426 # "Address": "xx.xx.xx.xx",
427 # "AddressOrigin": "Static",
428 # "Gateway": "xx.xx.xx.1",
429 # "SubnetMask": "xx.xx.xx.xx"
430 # }
431 # ],
432 # "Id": "eth0",
433 # "MACAddress": "xx:xx:xx:xx:xx:xx",
434 # "Name": "Manager Ethernet Interface",
435 # "SpeedMbps": 0,
436 # "VLAN": {
437 # "VLANEnable": false,
438 # "VLANId": 0
439 # }
440
George Keishing97c93942019-03-04 12:45:07 -0600441 ${resp}= Redfish.Get ${REDFISH_NW_ETH0_URI}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500442 @{network_configurations}= Get From Dictionary ${resp.dict} IPv4StaticAddresses
Prashanth Kattif58cce02019-02-06 03:05:14 -0600443 [Return] @{network_configurations}
444
George Keishing5d467552019-02-08 23:30:48 -0600445
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600446Verify IP On BMC
447 [Documentation] Verify IP on BMC.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600448 [Arguments] ${ip}
449
Vijayde3bf7b2019-04-16 04:56:09 -0500450 # Description of argument(s):
451 # ip IP address to be verified (e.g. "10.7.7.7").
Prashanth Kattif58cce02019-02-06 03:05:14 -0600452
453 # Get IP address details on BMC using IP command.
454 @{ip_data}= Get BMC IP Info
455 Should Contain Match ${ip_data} ${ip}/*
456 ... msg=IP address does not exist.
457
Vijayde3bf7b2019-04-16 04:56:09 -0500458Add IP Address
459 [Documentation] Add IP Address To BMC.
460 [Arguments] ${ip} ${subnet_mask} ${gateway}
461 ... ${valid_status_codes}=${HTTP_OK}
462
463 # Description of argument(s):
464 # ip IP address to be added (e.g. "10.7.7.7").
465 # subnet_mask Subnet mask for the IP to be added
466 # (e.g. "255.255.0.0").
467 # gateway Gateway for the IP to be added (e.g. "10.7.7.1").
468 # valid_status_codes Expected return code from patch operation
469 # (e.g. "200"). See prolog of rest_request
470 # method in redfish_plut.py for details.
471
472 ${empty_dict}= Create Dictionary
473 ${ip_data}= Create Dictionary Address=${ip}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500474 ... SubnetMask=${subnet_mask} Gateway=${gateway}
Vijayde3bf7b2019-04-16 04:56:09 -0500475
476 ${patch_list}= Create List
477 ${network_configurations}= Get Network Configuration
478 ${num_entries}= Get Length ${network_configurations}
479
480 : FOR ${INDEX} IN RANGE 0 ${num_entries}
481 \ Append To List ${patch_list} ${empty_dict}
482
George Keishing98ffa862019-05-23 10:07:45 -0500483 # We need not check for existence of IP on BMC while adding.
Vijayde3bf7b2019-04-16 04:56:09 -0500484 Append To List ${patch_list} ${ip_data}
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500485 ${data}= Create Dictionary IPv4StaticAddresses=${patch_list}
Vijayde3bf7b2019-04-16 04:56:09 -0500486
487 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data}
488 ... valid_status_codes=[${valid_status_codes}]
489
490 Return From Keyword If '${valid_status_codes}' != '${HTTP_OK}'
491
492 # Note: Network restart takes around 15-18s after patch request processing.
493 Sleep ${NETWORK_TIMEOUT}s
494 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
495
496 Verify IP On BMC ${ip}
497 Validate Network Config On BMC
498
499
500Delete IP Address
501 [Documentation] Delete IP Address Of BMC.
502 [Arguments] ${ip} ${valid_status_codes}=${HTTP_OK}
503
504 # Description of argument(s):
505 # ip IP address to be deleted (e.g. "10.7.7.7").
506 # valid_status_codes Expected return code from patch operation
507 # (e.g. "200"). See prolog of rest_request
508 # method in redfish_plut.py for details.
509
510 ${empty_dict}= Create Dictionary
511 ${patch_list}= Create List
512
513 @{network_configurations}= Get Network Configuration
514 : FOR ${network_configuration} IN @{network_configurations}
515 \ Run Keyword If '${network_configuration['Address']}' == '${ip}'
516 ... Append To List ${patch_list} ${null}
517 ... ELSE Append To List ${patch_list} ${empty_dict}
518
519 ${ip_found}= Run Keyword And Return Status List Should Contain Value
520 ... ${patch_list} ${null} msg=${ip} does not exist on BMC
521 Pass Execution If ${ip_found} == ${False} ${ip} does not exist on BMC
522
523 # Run patch command only if given IP is found on BMC
Prashanth Kattiff54bff2019-07-09 05:50:17 -0500524 ${data}= Create Dictionary IPv4StaticAddresses=${patch_list}
Vijayde3bf7b2019-04-16 04:56:09 -0500525
526 Redfish.patch ${REDFISH_NW_ETH0_URI} body=&{data}
527 ... valid_status_codes=[${valid_status_codes}]
528
529 # Note: Network restart takes around 15-18s after patch request processing
530 Sleep ${NETWORK_TIMEOUT}s
531 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
532
533 ${delete_status}= Run Keyword And Return Status Verify IP On BMC ${ip}
534 Run Keyword If '${valid_status_codes}' == '${HTTP_OK}'
535 ... Should Be True ${delete_status} == ${False}
536 ... ELSE Should Be True ${delete_status} == ${True}
537
538 Validate Network Config On BMC
539
540
541Validate Network Config On BMC
542 [Documentation] Check that network info obtained via redfish matches info
543 ... obtained via CLI.
544
545 @{network_configurations}= Get Network Configuration
546 ${ip_data}= Get BMC IP Info
547 : FOR ${network_configuration} IN @{network_configurations}
548 \ Should Contain Match ${ip_data} ${network_configuration['Address']}/*
549 ... msg=IP address does not exist.
550
George Keishing5d467552019-02-08 23:30:48 -0600551
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600552Verify Netmask On BMC
553 [Documentation] Verify netmask on BMC.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600554 [Arguments] ${netmask}
555
556 # Description of the argument(s):
557 # netmask netmask value to be verified.
558
Prashanth Katti747ce9d2019-02-07 07:23:48 -0600559 ${prefix_length}= Netmask Prefix Length ${netmask}
560
561 Should Contain Match ${ip_data} */${prefix_length}
562 ... msg=Prefix length does not exist.
Prashanth Kattif58cce02019-02-06 03:05:14 -0600563
Prashanth Katti2ec9d8b2019-02-12 05:20:19 -0600564Verify Gateway On BMC
565 [Documentation] Verify gateway on BMC.
566 [Arguments] ${gateway_ip}=0.0.0.0
567
568 # Description of argument(s):
569 # gateway_ip Gateway IP address.
570
571 ${route_info}= Get BMC Route Info
572
573 # If gateway IP is empty or 0.0.0.0 it will not have route entry.
574
575 Run Keyword If '${gateway_ip}' == '0.0.0.0'
576 ... Pass Execution Gateway IP is "0.0.0.0".
577 ... ELSE
578 ... Should Contain ${route_info} ${gateway_ip}
579 ... msg=Gateway IP address not matching.
George Keishing5d467552019-02-08 23:30:48 -0600580
Prashanth Katti2c5c3bb2019-02-14 04:23:07 -0600581Verify IP And Netmask On BMC
582 [Documentation] Verify IP and netmask on BMC.
583 [Arguments] ${ip} ${netmask}
584
585 # Description of the argument(s):
586 # ip IP address to be verified.
587 # netmask netmask value to be verified.
588
589 ${prefix_length}= Netmask Prefix Length ${netmask}
590 @{ip_data}= Get BMC IP Info
591
592 ${ip_with_netmask}= Catenate ${ip}/${prefix_length}
593 Should Contain ${ip_data} ${ip_with_netmask}
594 ... msg=IP and netmask pair does not exist.
595
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500596Validate Hostname On BMC
597 [Documentation] Verify that the hostname read via Redfish is the same as the
598 ... hostname configured on system.
599 [Arguments] ${hostname}
600
601 # Description of argument(s):
602 # hostname A hostname value which is to be compared to the hostname
603 # configured on system.
604
605 ${sys_hostname}= Get BMC Hostname
Prashanth Katti466d8342019-03-21 08:58:50 -0500606 Should Be Equal ${sys_hostname} ${hostname}
Prashanth Katti23efc6e2019-03-13 06:07:15 -0500607 ... ignore_case=True msg=Hostname does not exist.
608
Prashanth Kattif58cce02019-02-06 03:05:14 -0600609Test Teardown Execution
610 [Documentation] Test teardown execution.
611
612 FFDC On Test Case Fail
George Keishing97c93942019-03-04 12:45:07 -0600613 Redfish.Logout
Prashanth Kattia8442512019-06-07 06:47:09 -0500614
615Clear IP Settings On Fail
616 [Documentation] Clear IP settings on fail.
617 [Arguments] ${ip}
618
619 # Description of argument(s):
620 # ip IP address to be deleted.
621
622 Run Keyword If '${TEST STATUS}' == 'FAIL'
623 ... Delete IP Address ${ip}
624
625 Test Teardown Execution
Prashanth Kattiadf0b4e2019-06-10 04:20:30 -0500626
Prashanth Katti7098c972019-07-03 06:56:42 -0500627Verify CLI and Redfish Nameservers
628 [Documentation] Verify that nameservers obtained via Redfish do not
629 ... match those found in /etc/resolv.conf.
630
631 ${redfish_nameservers}= Redfish.Get Attribute ${REDFISH_NW_ETH0_URI} StaticNameServers
632 ${resolve_conf_nameservers}= CLI Get Nameservers
633 Rqprint Vars redfish_nameservers resolve_conf_nameservers fmt=terse
634
635 # Check that the 2 lists are equivalent.
636 ${match}= Evaluate set($redfish_nameservers) == set($resolve_conf_nameservers)
637 Should Be True ${match}
638 ... The nameservers obtained via Redfish do not match those found in /etc/resolv.conf.
639
640CLI Get Nameservers
641 [Documentation] Get the nameserver IPs from /etc/resolv.conf and return as a list.
642
643 # Example of /etc/resolv.conf data:
644 # nameserver x.x.x.x
645 # nameserver y.y.y.y
646
647 ${stdout} ${stderr} ${rc}= BMC Execute Command egrep nameserver /etc/resolv.conf | cut -f2- -d ' '
648 ${nameservers}= Split String ${stdout}
649
650 [Return] ${nameservers}
651
652
653Configure Static Name Servers
654 [Documentation] Configure DNS server on BMC.
Prashanth Kattic85957c2019-07-09 02:01:20 -0500655 [Arguments] ${static_name_servers}=${original_nameservers}
Prashanth Katti7098c972019-07-03 06:56:42 -0500656
George Keishing9cb2e592019-07-12 09:37:33 -0500657 # Description of the argument(s):
Prashanth Katti7098c972019-07-03 06:56:42 -0500658 # static_name_servers A list of static name server IPs to be
659 # configured on the BMC.
660
661 Redfish.Patch ${REDFISH_NW_ETH0_URI} body={'StaticNameServers': ${static_name_servers}}
Prashanth Kattic85957c2019-07-09 02:01:20 -0500662
663Delete Static Name Servers
664 [Documentation] Delete static name servers.
665
666 Configure Static Name Servers @{EMPTY}
667
668 # Check if all name servers deleted on BMC.
669 ${nameservers}= CLI Get Nameservers
670 Should Be Empty ${nameservers}
671
672DNS Test Setup Execution
673 [Documentation] Do DNS test setup execution.
674
675 Redfish.Login
676
677 ${original_nameservers}= Redfish.Get Attribute ${REDFISH_NW_ETH0_URI} StaticNameServers
678 Rprint Vars original_nameservers
679 # Set suite variables to trigger restoration during teardown.
680 Set Suite Variable ${original_nameservers}