blob: 3d6ade641808606ef4d741cf2b939125709851ad [file] [log] [blame]
Prashanth Katti8abbb4d2021-01-29 02:17:45 -06001*** Settings ***
2Documentation Network interface IPv6 configuration and verification
3 ... tests.
4
5Resource ../../lib/bmc_redfish_resource.robot
6Resource ../../lib/openbmc_ffdc.robot
7Resource ../../lib/bmc_ipv6_utils.robot
Sweta Potthuri8ba74322025-03-19 12:29:06 -05008Resource ../../lib/external_intf/vmi_utils.robot
Prashanth Katti8abbb4d2021-01-29 02:17:45 -06009Library ../../lib/bmc_network_utils.py
10Library Collections
Sweta Potthuri35c503b2025-07-27 23:36:20 -050011Library Process
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060012
13Test Setup Test Setup Execution
14Test Teardown Test Teardown Execution
Prashanth Katti3270fd02021-06-11 08:02:22 -050015Suite Setup Suite Setup Execution
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060016
Matt Fischer6fb70d92023-10-24 19:06:33 -060017Test Tags BMC_IPv6
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060018
19*** Variables ***
Sweta Potthuri2edacd32025-07-02 01:04:43 -050020${test_ipv6_addr} 2001:db8:3333:4444:5555:6666:7777:8888
21${test_ipv6_invalid_addr} 2001:db8:3333:4444:5555:6666:7777:JJKK
22${test_ipv6_addr1} 2001:db8:3333:4444:5555:6666:7777:9999
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060023
George Keishinge16f1582022-12-15 07:32:21 -060024# Valid prefix length is a integer ranges from 1 to 128.
Sweta Potthuri2edacd32025-07-02 01:04:43 -050025${test_prefix_length} 64
26${ipv6_gw_addr} 2002:903:15F:32:9:3:32:1
27${prefix_length_def} None
28${invalid_staticv6_gateway} 9.41.164.1
Sweta Potthuri35c503b2025-07-27 23:36:20 -050029${linklocal_addr_format} fe80::[0-9a-f:]+$
Prashanth Katti8abbb4d2021-01-29 02:17:45 -060030
31*** Test Cases ***
32
33Get IPv6 Address And Verify
34 [Documentation] Get IPv6 Address And Verify.
35 [Tags] Get_IPv6_Address_And_Verify
36
37 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
38 Verify IPv6 On BMC ${ipv6_network_configuration['Address']}
39 END
40
41
Prashanth Katti2c73abc2021-03-17 07:42:25 -050042Get PrefixLength And Verify
43 [Documentation] Get IPv6 prefix length and verify.
44 [Tags] Get_PrefixLength_And_Verify
45
46 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
47 Verify IPv6 On BMC ${ipv6_network_configuration['PrefixLength']}
48 END
49
50
51Get IPv6 Default Gateway And Verify
George Keishing96143832021-03-23 07:55:08 -050052 [Documentation] Get IPv6 default gateway and verify.
George Keishingade6ab42022-07-19 11:41:03 -050053 [Tags] Get_IPv6_Default_Gateway_And_Verify
Prashanth Katti2c73abc2021-03-17 07:42:25 -050054
55 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
56 ${ipv6_gateway}= Get From Dictionary ${resp.dict} IPv6DefaultGateway
57 Verify IPv6 Default Gateway On BMC ${ipv6_gateway}
58
59
Prashanth Kattic1d2daa2022-07-26 03:53:06 -050060Verify All Configured IPv6 And PrefixLength On BMC
61 [Documentation] Verify IPv6 address and its prefix length on BMC.
62 [Tags] Verify_All_Configured_IPv6_And_PrefixLength_On_BMC
63
64 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
George Keishingf02ca2b2023-04-05 22:11:03 +053065 Verify IPv6 And PrefixLength ${ipv6_network_configuration['Address']}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -050066 ... ${ipv6_network_configuration['PrefixLength']}
67 END
68
69
70Configure IPv6 Address And Verify
71 [Documentation] Configure IPv6 address and verify.
72 [Tags] Configure_IPv6_Address_And_Verify
Anvesh-Kumar_Rayankula3a26c662025-04-16 01:19:26 -050073 [Teardown] Run Keywords
74 ... Delete IPv6 Address ${test_ipv6_addr} AND Test Teardown Execution
Prashanth Kattic1d2daa2022-07-26 03:53:06 -050075 [Template] Configure IPv6 Address On BMC
76
77
78 # IPv6 address Prefix length
79 ${test_ipv6_addr} ${test_prefix_length}
80
81
Prashanth Katti12ed4b72023-05-16 05:24:00 -050082Delete IPv6 Address And Verify
83 [Documentation] Delete IPv6 address and verify.
84 [Tags] Delete_IPv6_Address_And_Verify
85
86 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
87
88 Delete IPv6 Address ${test_ipv6_addr}
89
90
George Keishingcc288312024-10-22 10:13:12 +053091Modify IPv6 Address And Verify
Prashanth Katti5f7d2e42023-05-22 03:17:25 -050092 [Documentation] Modify IPv6 address and verify.
93 [Tags] Modify_IPv6_Address_And_Verify
kvishal88de8c42025-03-04 01:45:10 -060094 [Teardown] Run Keywords
George Keishingcfdd0992025-03-17 11:59:20 +053095 ... Delete IPv6 Address ${test_ipv6_addr1} AND Test Teardown Execution
Prashanth Katti5f7d2e42023-05-22 03:17:25 -050096
97 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
98
99 Modify IPv6 Address ${test_ipv6_addr} ${test_ipv6_addr1} ${test_prefix_length}
100
101
Sweta Potthuriafe858e2025-02-25 23:52:51 -0600102Verify Persistency Of IPv6 After BMC Reboot
103 [Documentation] Verify persistency of IPv6 after BMC reboot.
104 [Tags] Verify_Persistency_Of_IPv6_After_BMC_Reboot
105 [Teardown] Run Keywords
106 ... Delete IPv6 Address ${test_ipv6_addr} AND Test Teardown Execution
107
108 Configure IPv6 Address On BMC ${test_ipv6_addr} ${test_prefix_length}
109
110 Redfish OBMC Reboot (off) stack_mode=skip
111
112 # Verifying persistency of IPv6.
113 Verify IPv6 On BMC ${test_ipv6_addr}
114
115
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500116Enable SLAACv6 On BMC And Verify
117 [Documentation] Enable SLAACv6 on BMC and verify.
118 [Tags] Enable_SLAACv6_On_BMC_And_Verify
119
120 Set SLAACv6 Configuration State And Verify ${True}
121
122
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500123Enable DHCPv6 Property On BMC And Verify
124 [Documentation] Enable DHCPv6 property on BMC and verify.
125 [Tags] Enable_DHCPv6_Property_On_BMC_And_Verify
126
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500127 Set And Verify DHCPv6 Property Enabled
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500128
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500129
kvishal0d199a92025-05-29 02:35:18 -0500130Disable DHCPv6 Property On BMC And Verify
131 [Documentation] Disable DHCPv6 property on BMC and verify.
132 [Tags] Disable_DHCPv6_Property_On_BMC_And_Verify
133
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500134 Set And Verify DHCPv6 Property Disabled
kvishalbd04bd62025-08-05 03:57:53 -0500135
136
137Verify Persistency Of DHCPv6 On Reboot
138 [Documentation] Verify persistency of DHCPv6 property on reboot.
139 [Tags] Verify_Persistency_Of_DHCPv6_On_Reboot
140
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500141 Set And Verify DHCPv6 Property Enabled
142 Redfish OBMC Reboot (off) stack_mode=skip
143 Verify DHCPv6 Property Enabled
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500144
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500145
Sweta Potthuricb61ff02025-04-09 05:16:09 -0500146Configure Invalid Static IPv6 And Verify
147 [Documentation] Configure invalid static IPv6 and verify.
148 [Tags] Configure_Invalid_Static_IPv6_And_Verify
149 [Template] Configure IPv6 Address On BMC
150
151 #invalid_ipv6 prefix length valid_status_code
152 ${ipv4_hexword_addr} ${test_prefix_length} ${HTTP_BAD_REQUEST}
153
Sweta Potthuri565318d2025-06-09 06:13:46 -0500154
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500155Configure IPv6 Static Default Gateway And Verify
156 [Documentation] Configure IPv6 static default gateway and verify.
157 [Tags] Configure_IPv6_Static_Default_Gateway_And_Verify
158 [Template] Configure IPv6 Static Default Gateway On BMC
Sweta Potthuri565318d2025-06-09 06:13:46 -0500159
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500160 # static_def_gw prefix length valid_status_code
161 ${ipv6_gw_addr} ${prefix_length_def} ${HTTP_OK}
162 ${invalid_staticv6_gateway} ${test_prefix_length} ${HTTP_BAD_REQUEST}
Sweta Potthuri565318d2025-06-09 06:13:46 -0500163
Sweta Potthuricb61ff02025-04-09 05:16:09 -0500164
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500165Modify Static Default Gateway And Verify
166 [Documentation] Modify static default gateway and verify.
167 [Tags] Modify_Static_Default_Gateway_And_Verify
168 [Setup] Configure IPv6 Static Default Gateway On BMC ${ipv6_gw_addr} ${prefix_length_def}
169
170 Modify IPv6 Static Default Gateway On BMC ${test_ipv6_addr1} ${prefix_length_def} ${HTTP_OK} ${ipv6_gw_addr}
171
172
Sweta Potthuri2d085732025-07-16 09:10:08 -0500173Delete IPv6 Static Default Gateway And Verify
174 [Documentation] Delete IPv6 static default gateway and verify.
175 [Tags] Delete_IPv6_Static_Default_Gateway_And_Verify
176 [Setup] Configure IPv6 Static Default Gateway On BMC ${ipv6_gw_addr} ${prefix_length_def}
177
178 Delete IPv6 Static Default Gateway ${ipv6_gw_addr}
179
180
Sweta Potthuri35c503b2025-07-27 23:36:20 -0500181Verify Coexistence Of Linklocalv6 And Static IPv6 On BMC
182 [Documentation] Verify linklocalv6 And static IPv6 both exist.
183 [Tags] Verify_Coexistence_Of_Linklocalv6_And_Static_IPv6_On_BMC
184 [Setup] Configure IPv6 Address On BMC ${IP_ADDR_TEST} ${test_prefix_length}
185 [Teardown] Delete IPv6 Address ${IP_ADDR_TEST}
186
187 Check Coexistence Of Linklocalv6 And Static IPv6
188
189
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -0500190Verify IPv6 Linklocal Address Is In Corrrect Format
191 [Documentation] Verify linklocal address has network part as fe80 and host part as EUI64.
192 [Tags] Verify_IPv6_Linklocal_Address_Is_In_Correct_Format
193
194 Check If Linklocal Address Is In Correct Format
195
196
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500197Verify BMC Gets SLAAC Address On Enabling SLAAC
198 [Documentation] On enabling SLAAC verify SLAAC address comes up.
199 [Tags] Verify_BMC_Gets_SLAAC_Address_On_Enabling_SLAAC
200 [Setup] Set SLAACv6 Configuration State And Verify ${False}
201
202 Set SLAACv6 Configuration State And Verify ${True}
203 Sleep ${NETWORK_TIMEOUT}
204 Check BMC Gets SLAACv6 Address
205
206
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500207Enable And Verify DHCPv6 Property On Eth1 When DHCPv6 Property Enabled On Eth0
208 [Documentation] Verify DHCPv6 on eth1 when DHCPv6 property is enabled on eth0.
209 [Tags] Enable_And_Verify_DHCPv6_Property_On_Eth1_When_DHCPv6_Property_Enabled_On_Eth0
210 [Setup] Run Keywords Get The Initial DHCPv6 Setting ${1} dhcpv6_channel_1
211 ... AND Get The Initial DHCPv6 Setting ${2} dhcpv6_channel_2
212 [Teardown] Run Keywords Set And Verify DHCPv6 Property ${dhcpv6_channel_1} ${1}
213 ... AND Set And Verify DHCPv6 Property ${dhcpv6_channel_2} ${2}
214
215 Set And Verify DHCPv6 Property Enabled ${1}
216 Set And Verify DHCPv6 Property Enabled ${2}
217
218
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600219*** Keywords ***
220
Prashanth Katti3270fd02021-06-11 08:02:22 -0500221Suite Setup Execution
222 [Documentation] Do suite setup execution.
223
224 ${active_channel_config}= Get Active Channel Config
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -0500225 Set Suite Variable ${active_channel_config}
226
Prashanth Katti3270fd02021-06-11 08:02:22 -0500227 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
228
229 Set Suite variable ${ethernet_interface}
230
231
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600232Test Setup Execution
233 [Documentation] Test setup execution.
234
235 Redfish.Login
236
237 @{ipv6_network_configurations}= Get IPv6 Network Configuration
238 Set Test Variable @{ipv6_network_configurations}
239
240 # Get BMC IPv6 address and prefix length.
241 ${ipv6_data}= Get BMC IPv6 Info
242 Set Test Variable ${ipv6_data}
243
244
245Test Teardown Execution
246 [Documentation] Test teardown execution.
247
248 FFDC On Test Case Fail
249 Redfish.Logout
250
251
252Get IPv6 Network Configuration
253 [Documentation] Get Ipv6 network configuration.
254 # Sample output:
255 # {
ganesanb4d430282023-04-27 14:33:23 +0000256 # "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/eth0",
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600257 # "@odata.type": "#EthernetInterface.v1_4_1.EthernetInterface",
258 # "DHCPv4": {
259 # "DHCPEnabled": false,
260 # "UseDNSServers": false,
261 # "UseDomainName": true,
262 # "UseNTPServers": false
263 # },
264 # "DHCPv6": {
265 # "OperatingMode": "Disabled",
266 # "UseDNSServers": false,
267 # "UseDomainName": true,
268 # "UseNTPServers": false
269 # },
270 # "Description": "Management Network Interface",
271 # "FQDN": "localhost",
272 # "HostName": "localhost",
273 # "IPv4Addresses": [
274 # {
275 # "Address": "xx.xx.xx.xx",
276 # "AddressOrigin": "Static",
277 # "Gateway": "xx.xx.xx.1",
278 # "SubnetMask": "xx.xx.xx.0"
279 # },
280 # {
281 # "Address": "169.254.xx.xx",
282 # "AddressOrigin": "IPv4LinkLocal",
283 # "Gateway": "0.0.0.0",
284 # "SubnetMask": "xx.xx.0.0"
285 # },
286 # ],
287 # "IPv4StaticAddresses": [
288 # {
289 # "Address": "xx.xx.xx.xx",
290 # "AddressOrigin": "Static",
291 # "Gateway": "xx.xx.xx.1",
292 # "SubnetMask": "xx.xx.0.0"
293 # }
294 # }
295 # ],
296 # "IPv6AddressPolicyTable": [],
297 # "IPv6Addresses": [
298 # {
299 # "Address": "fe80::xxxx:xxxx:xxxx:xxxx",
300 # "AddressOrigin": "LinkLocal",
301 # "AddressState": null,
302 # "PrefixLength": xx
303 # }
304 # ],
305 # "IPv6DefaultGateway": "",
306 # "IPv6StaticAddresses": [
307 # { "Address": "xxxx:xxxx:xxxx:xxxx::xxxx",
308 # "AddressOrigin": "Static",
309 # "AddressState": null,
310 # "PrefixLength": xxx
311 # }
312 # ],
313 # "Id": "eth0",
314 # "InterfaceEnabled": true,
315 # "LinkStatus": "LinkUp",
316 # "MACAddress": "xx:xx:xx:xx:xx:xx",
317 # "Name": "Manager Ethernet Interface",
318 # "NameServers": [],
319 # "SpeedMbps": 0,
320 # "StaticNameServers": [],
321 # "Status": {
322 # "Health": "OK",
323 # "HealthRollup": "OK",
324 # "State": "Enabled"
325 # },
326 # "VLANs": {
ganesanb4d430282023-04-27 14:33:23 +0000327 # "@odata.id": "/redfish/v1/Managers/${MANAGER_ID}/EthernetInterfaces/eth0/VLANs"
Prashanth Katti8abbb4d2021-01-29 02:17:45 -0600328
329
330 ${active_channel_config}= Get Active Channel Config
331 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${CHANNEL_NUMBER}']['name']}
332
333 @{ipv6_network_configurations}= Get From Dictionary ${resp.dict} IPv6StaticAddresses
George Keishing409df052024-01-17 22:36:14 +0530334 RETURN @{ipv6_network_configurations}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500335
336
337Verify IPv6 And PrefixLength
338 [Documentation] Verify IPv6 address and prefix length on BMC.
339 [Arguments] ${ipv6_addr} ${prefix_len}
340
341 # Description of the argument(s):
342 # ipv6_addr IPv6 address to be verified.
343 # prefix_len PrefixLength value to be verified.
344
345 # Catenate IPv6 address and its prefix length.
346 ${ipv6_with_prefix}= Catenate ${ipv6_addr}/${prefix_len}
347
348 # Get IPv6 address details on BMC using IP command.
349 @{ip_data}= Get BMC IPv6 Info
350
351 # Verify if IPv6 and prefix length is configured on BMC.
352
353 Should Contain ${ip_data} ${ipv6_with_prefix}
354 ... msg=IPv6 and prefix length pair does not exist.
355
356
357Configure IPv6 Address On BMC
358 [Documentation] Add IPv6 Address on BMC.
359 [Arguments] ${ipv6_addr} ${prefix_len} ${valid_status_codes}=${HTTP_OK}
360
361 # Description of argument(s):
362 # ipv6_addr IPv6 address to be added (e.g. "2001:EEEE:2222::2022").
363 # prefix_len Prefix length for the IPv6 to be added
364 # (e.g. "64").
365 # valid_status_codes Expected return code from patch operation
366 # (e.g. "200").
367
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500368 ${prefix_length}= Convert To Integer ${prefix_len}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500369 ${empty_dict}= Create Dictionary
370 ${ipv6_data}= Create Dictionary Address=${ipv6_addr}
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500371 ... PrefixLength=${prefix_length}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500372
373 ${patch_list}= Create List
374
375 # Get existing static IPv6 configurations on BMC.
376 ${ipv6_network_configurations}= Get IPv6 Network Configuration
377 ${num_entries}= Get Length ${ipv6_network_configurations}
378
379 FOR ${INDEX} IN RANGE 0 ${num_entries}
380 Append To List ${patch_list} ${empty_dict}
381 END
382
George Keishinge6e161e2025-05-08 10:18:30 +0530383 ${valid_status_codes}= Set Variable If '${valid_status_codes}' == '${HTTP_OK}'
384 ... ${HTTP_OK},${HTTP_NO_CONTENT}
385 ... ${valid_status_codes}
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500386
387 # We need not check for existence of IPv6 on BMC while adding.
388 Append To List ${patch_list} ${ipv6_data}
389 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list}
390
391 ${active_channel_config}= Get Active Channel Config
392 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
393
394 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data}
395 ... valid_status_codes=[${valid_status_codes}]
396
397 Return From Keyword If '${valid_status_codes}' != '${HTTP_OK},${HTTP_NO_CONTENT}'
398
399 # Note: Network restart takes around 15-18s after patch request processing.
400 Sleep ${NETWORK_TIMEOUT}s
401 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
402
403 Verify IPv6 And PrefixLength ${ipv6_addr} ${prefix_len}
404
405 # Verify if existing static IPv6 addresses still exist.
406 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
407 Verify IPv6 On BMC ${ipv6_network_configuration['Address']}
408 END
409
410 Validate IPv6 Network Config On BMC
411
412
413Validate IPv6 Network Config On BMC
414 [Documentation] Check that IPv6 network info obtained via redfish matches info
415 ... obtained via CLI.
Prashanth Katti5f7d2e42023-05-22 03:17:25 -0500416 @{ipv6_network_configurations}= Get IPv6 Network Configuration
Prashanth Kattic1d2daa2022-07-26 03:53:06 -0500417 ${ipv6_data}= Get BMC IPv6 Info
418 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
419 Should Contain Match ${ipv6_data} ${ipv6_network_configuration['Address']}/*
420 ... msg=IPv6 address does not exist.
421 END
422
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500423
424Delete IPv6 Address
425 [Documentation] Delete IPv6 address of BMC.
Prashanth Kattibcb9dab2025-04-01 12:58:37 -0500426 [Arguments] ${ipv6_addr}
427 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500428
429 # Description of argument(s):
430 # ipv6_addr IPv6 address to be deleted (e.g. "2001:1234:1234:1234::1234").
431 # valid_status_codes Expected return code from patch operation
432 # (e.g. "200"). See prolog of rest_request
433 # method in redfish_plus.py for details.
434
435 ${empty_dict}= Create Dictionary
436 ${patch_list}= Create List
437
438 @{ipv6_network_configurations}= Get IPv6 Network Configuration
439 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
440 IF '${ipv6_network_configuration['Address']}' == '${ipv6_addr}'
441 Append To List ${patch_list} ${null}
442 ELSE
443 Append To List ${patch_list} ${empty_dict}
444 END
445 END
446
447 ${ip_found}= Run Keyword And Return Status List Should Contain Value
448 ... ${patch_list} ${null} msg=${ipv6_addr} does not exist on BMC
449 Pass Execution If ${ip_found} == ${False} ${ipv6_addr} does not exist on BMC
450
451 # Run patch command only if given IP is found on BMC
452 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list}
453
454 ${active_channel_config}= Get Active Channel Config
455 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
456
457 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data}
Sweta Potthuria1981612025-05-09 05:41:10 -0500458 ... valid_status_codes=${valid_status_codes}
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500459
460 # Note: Network restart takes around 15-18s after patch request processing
461 Sleep ${NETWORK_TIMEOUT}s
462 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
463
464 # IPv6 address that is deleted should not be there on BMC.
465 ${delete_status}= Run Keyword And Return Status Verify IPv6 On BMC ${ipv6_addr}
Anvesh-Kumar_Rayankula3a26c662025-04-16 01:19:26 -0500466 IF '${valid_status_codes}' == '[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]'
Prashanth Katti12ed4b72023-05-16 05:24:00 -0500467 Should Be True '${delete_status}' == '${False}'
468 ELSE
469 Should Be True '${delete_status}' == '${True}'
470 END
471
472 Validate IPv6 Network Config On BMC
Prashanth Katti5f7d2e42023-05-22 03:17:25 -0500473
474
475Modify IPv6 Address
476 [Documentation] Modify and verify IPv6 address of BMC.
477 [Arguments] ${ipv6} ${new_ipv6} ${prefix_len}
478 ... ${valid_status_codes}=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
479
480 # Description of argument(s):
481 # ipv6 IPv6 address to be replaced (e.g. "2001:AABB:CCDD::AAFF").
482 # new_ipv6 New IPv6 address to be configured.
483 # prefix_len Prefix length value (Range 1 to 128).
484 # valid_status_codes Expected return code from patch operation
485 # (e.g. "200", "201").
486
487 ${empty_dict}= Create Dictionary
488 ${patch_list}= Create List
489 ${prefix_length}= Convert To Integer ${prefix_len}
490 ${ipv6_data}= Create Dictionary
491 ... Address=${new_ipv6} PrefixLength=${prefix_length}
492
493 # Sample IPv6 network configurations:
494 # "IPv6AddressPolicyTable": [],
495 # "IPv6Addresses": [
496 # {
497 # "Address": "X002:db8:0:2::XX0",
498 # "AddressOrigin": "DHCPv6",
499 # "PrefixLength": 128
500 # },
501 # {
502 # "Address": “X002:db8:0:2:a94:XXff:fe82:XXXX",
503 # "AddressOrigin": "SLAAC",
504 # "PrefixLength": 64
505 # },
506 # {
507 # "Address": “Y002:db8:0:2:a94:efff:fe82:5000",
508 # "AddressOrigin": "Static",
509 # "PrefixLength": 56
510 # },
511 # {
512 # "Address": “Z002:db8:0:2:a94:efff:fe82:5000",
513 # "AddressOrigin": "Static",
514 # "PrefixLength": 56
515 # },
516 # {
517 # "Address": “Xe80::a94:efff:YYYY:XXXX",
518 # "AddressOrigin": "LinkLocal",
519 # "PrefixLength": 64
520 # },
521 # {
522 # "Address": “X002:db8:1:2:eff:233:fee:546",
523 # "AddressOrigin": "Static",
524 # "PrefixLength": 56
525 # }
526 # ],
527 # "IPv6DefaultGateway": “XXXX::ab2e:80fe:87df:XXXX”,
528 # "IPv6StaticAddresses": [
529 # {
530 # "Address": “X002:db8:0:2:a94:efff:fe82:5000",
531 # "PrefixLength": 56
532 # },
533 # {
534 # "Address": “Y002:db8:0:2:a94:efff:fe82:5000",
535 # "PrefixLength": 56
536 # },
537 # {
538 # "Address": “Z002:db8:1:2:eff:233:fee:546",
539 # "PrefixLength": 56
540 # }
541 # ],
542 # "IPv6StaticDefaultGateways": [],
543
544 # Find the position of IPv6 address to be modified.
545 @{ipv6_network_configurations}= Get IPv6 Network Configuration
546 FOR ${ipv6_network_configuration} IN @{ipv6_network_configurations}
George Keishinge6e161e2025-05-08 10:18:30 +0530547 IF '${ipv6_network_configuration['Address']}' == '${ipv6}'
548 Append To List ${patch_list} ${ipv6_data}
549 ELSE
550 Append To List ${patch_list} ${empty_dict}
551 END
Prashanth Katti5f7d2e42023-05-22 03:17:25 -0500552 END
553
554 # Modify the IPv6 address only if given IPv6 is found
555 ${ip_found}= Run Keyword And Return Status List Should Contain Value
556 ... ${patch_list} ${ipv6_data} msg=${ipv6} does not exist on BMC
557 Pass Execution If ${ip_found} == ${False} ${ipv6} does not exist on BMC
558
559 ${data}= Create Dictionary IPv6StaticAddresses=${patch_list}
560
561 ${active_channel_config}= Get Active Channel Config
562 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
563
564 Redfish.patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
565 ... body=&{data} valid_status_codes=${valid_status_codes}
566
567 # Note: Network restart takes around 15-18s after patch request processing.
568 Sleep ${NETWORK_TIMEOUT}s
569 Wait For Host To Ping ${OPENBMC_HOST} ${NETWORK_TIMEOUT}
570
571 # Verify if new IPv6 address is configured on BMC.
572 Verify IPv6 On BMC ${new_ipv6}
573
574 # Verify if old IPv6 address is erased.
575 ${cmd_status}= Run Keyword And Return Status
576 ... Verify IPv6 On BMC ${ipv6}
577 Should Be Equal ${cmd_status} ${False} msg=Old IPv6 address is not deleted.
578
579 Validate IPv6 Network Config On BMC
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500580
581
582Set SLAACv6 Configuration State And Verify
583 [Documentation] Set SLAACv6 configuration state and verify.
Sweta Potthuri610f86f2025-05-30 00:47:23 -0500584 [Arguments] ${slaac_state} ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500585
586 # Description of argument(s):
587 # slaac_state SLAACv6 state('True' or 'False').
588 # valid_status_code Expected valid status codes.
589
590 ${active_channel_config}= Get Active Channel Config
591 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
592
593 ${data}= Set Variable If ${slaac_state} == ${False} ${DISABLE_SLAAC} ${ENABLE_SLAAC}
594 ${resp}= Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
Sweta Potthuri610f86f2025-05-30 00:47:23 -0500595 ... body=${data} valid_status_codes=${valid_status_codes}
Sweta Potthuri8ba74322025-03-19 12:29:06 -0500596
597 # Verify SLAACv6 is set correctly.
598 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
599 ${slaac_verify}= Get From Dictionary ${resp.dict} StatelessAddressAutoConfig
600
George Keishinge6e161e2025-05-08 10:18:30 +0530601 IF '${slaac_verify['IPv6AutoConfigEnabled']}' != '${slaac_state}'
602 Fail msg=SLAACv6 not set properly.
603 END
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500604
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500605Set And Verify DHCPv6 Property
606 [Documentation] Set DHCPv6 property and verify.
607 [Arguments] ${dhcpv6_operating_mode}=${Disabled} ${channel_number}=${CHANNEL_NUMBER}
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500608
609 # Description of argument(s):
610 # dhcpv6_operating_mode Enabled if user wants to enable DHCPv6('Enabled' or 'Disabled').
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500611 # channel_number Channel number 1 or 2.
612
613 Set DHCPv6 Property ${dhcpv6_operating_mode} ${channel_number}
614 Verify DHCPv6 Property ${dhcpv6_operating_mode} ${channel_number}
615
616
617Set DHCPv6 Property
618 [Documentation] Set DHCPv6 attribute is enables or disabled.
619 [Arguments] ${dhcpv6_operating_mode}=${Disabled} ${channel_number}=${CHANNEL_NUMBER}
620
621 # Description of argument(s):
622 # dhcpv6_operating_mode Enabled if user wants to enable DHCPv6('Enabled' or 'Disabled').
623 # channel_number Channel number 1 or 2.
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500624
625 ${data}= Set Variable If '${dhcpv6_operating_mode}' == 'Disabled' ${DISABLE_DHCPv6} ${ENABLE_DHCPv6}
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500626 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
627
628 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
629 ... body=${data} valid_status_codes=[${HTTP_OK},${HTTP_NO_CONTENT}]
630
kvishalbd04bd62025-08-05 03:57:53 -0500631
632Verify DHCPv6 Property
633 [Documentation] Verify DHCPv6 settings is enabled or disabled.
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500634 [Arguments] ${dhcpv6_operating_mode} ${channel_number}=${CHANNEL_NUMBER}
kvishalbd04bd62025-08-05 03:57:53 -0500635
636 # Description of Argument(s):
637 # dhcpv6_operating_mode Enable/ Disable DHCPv6.
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500638 # channel_number Channel number 1 or 2.
639
640 ${ethernet_interface}= Set Variable ${active_channel_config['${CHANNEL_NUMBER}']['name']}
kvishalbd04bd62025-08-05 03:57:53 -0500641
Sweta Potthuri0df4a862025-03-24 12:05:09 -0500642 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
643 ${dhcpv6_verify}= Get From Dictionary ${resp.dict} DHCPv6
644
645 Should Be Equal '${dhcpv6_verify['OperatingMode']}' '${dhcpv6_operating_mode}'
Sweta Potthuricb61ff02025-04-09 05:16:09 -0500646
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500647
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500648Get IPv6 Static Default Gateway
649 [Documentation] Get IPv6 static default gateway.
650
651 ${active_channel_config}= Get Active Channel Config
652 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${CHANNEL_NUMBER}']['name']}
653
654 @{ipv6_static_defgw_configurations}= Get From Dictionary ${resp.dict} IPv6StaticDefaultGateways
655 RETURN @{ipv6_static_defgw_configurations}
656
Sweta Potthuri2d085732025-07-16 09:10:08 -0500657
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500658Configure IPv6 Static Default Gateway On BMC
659 [Documentation] Configure IPv6 static default gateway on BMC.
660 [Arguments] ${ipv6_gw_addr} ${prefix_length_def}
661 ... ${valid_status_codes}=${HTTP_OK}
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500662 # Description of argument(s):
663 # ipv6_gw_addr IPv6 Static Default Gateway address to be configured.
664 # prefix_len_def Prefix length value (Range 1 to 128).
665 # valid_status_codes Expected return code from patch operation
666 # (e.g. "200", "204".)
667
668 # Prefix Length is passed as None.
669 IF '${prefix_length_def}' == '${None}'
670 ${ipv6_gw}= Create Dictionary Address=${ipv6_gw_addr}
671 ELSE
672 ${ipv6_gw}= Create Dictionary Address=${ipv6_gw_addr} Prefix Length=${prefix_length_def}
673 END
674
675 ${ipv6_static_def_gw}= Get IPv6 Static Default Gateway
676
677 ${num_entries}= Get Length ${ipv6_static_def_gw}
678
679 ${patch_list}= Create List
680 ${empty_dict}= Create Dictionary
681
682 FOR ${INDEX} IN RANGE 0 ${num_entries}
683 Append To List ${patch_list} ${empty_dict}
684 END
685
686 ${valid_status_codes}= Set Variable If '${valid_status_codes}' == '${HTTP_OK}'
687 ... ${HTTP_OK},${HTTP_NO_CONTENT}
688 ... ${valid_status_codes}
689
690 Append To List ${patch_list} ${ipv6_gw}
691 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list}
692
693 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
694 ... body=${data} valid_status_codes=[${valid_status_codes}]
695
696 # Verify the added static default gateway is present in Redfish Get Output.
697 ${ipv6_staticdef_gateway}= Get IPv6 Static Default Gateway
698
699 ${ipv6_static_def_gw_list}= Create List
700 FOR ${ipv6_staticdef_gateway} IN @{ipv6_staticdef_gateway}
701 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address
702 Append To List ${ipv6_static_def_gw_list} ${value}
703 END
704
705 IF '${valid_status_codes}' != '${HTTP_OK},${HTTP_NO_CONTENT}'
706 Should Not Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr}
707 ELSE
708 Should Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr}
709 END
710
Sweta Potthuri2d085732025-07-16 09:10:08 -0500711
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500712Modify Static Default Gateway
713 [Documentation] Modify and verify IPv6 address of BMC.
714 [Arguments] ${ipv6_gw_addr} ${new_static_def_gw} ${prefix_length}
715 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED}]
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500716
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500717 # Description of argument(s):
718 # ipv6_gw_addr IPv6 static default gateway address to be replaced (e.g. "2001:AABB:CCDD::AAFF").
719 # new_static_def_gw New static default gateway address to be configured.
720 # prefix length Prefix length value (Range 1 to 128).
721 # valid_status_codes Expected return code from patch operation
722 # (e.g. "200", "204").
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500723
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500724 ${empty_dict}= Create Dictionary
725 ${patch_list}= Create List
726 # Prefix Length is passed as None.
727 IF '${prefix_length_def}' == '${None}'
728 ${modified_ipv6_gw_addripv6_data}= Create Dictionary Address=${new_static_def_gw}
729 ELSE
730 ${modified_ipv6_gw_addripv6_data}= Create Dictionary Address=${new_static_def_gw} Prefix Length=${prefix_length_def}
731 END
Sweta Potthuri2edacd32025-07-02 01:04:43 -0500732
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500733 @{ipv6_static_def_gw_list}= Get IPv6 Static Default Gateway
734
735 FOR ${ipv6_static_def_gw} IN @{ipv6_static_def_gw_list}
736 IF '${ipv6_static_def_gw['Address']}' == '${ipv6_gw_addr}'
737 Append To List ${patch_list} ${modified_ipv6_gw_addripv6_data}
738 ELSE
739 Append To List ${patch_list} ${empty_dict}
740 END
741 END
742
743 # Modify the IPv6 address only if given IPv6 static default gateway is found.
744 ${ip_static_def_gw_found}= Run Keyword And Return Status List Should Contain Value
745 ... ${patch_list} ${modified_ipv6_gw_addripv6_data} msg=${ipv6_gw_addr} does not exist on BMC
746 Pass Execution If ${ip_static_def_gw_found} == ${False} ${ipv6_gw_addr} does not exist on BMC
747
748 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list}
749
750 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
751 ... body=&{data} valid_status_codes=${valid_status_codes}
752
753 ${ipv6_staticdef_gateway}= Get IPv6 Static Default Gateway
754
755 ${ipv6_static_def_gw_list}= Create List
756 FOR ${ipv6_staticdef_gateway} IN @{ipv6_staticdef_gateway}
Sweta Potthuri2d085732025-07-16 09:10:08 -0500757 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address
Sweta Potthuri4b0083f2025-07-09 11:34:40 -0500758 Append To List ${ipv6_static_def_gw_list} ${value}
759 END
760
761 Should Contain ${ipv6_static_def_gw_list} ${new_static_def_gw}
762 # Verify if old static default gateway address is erased.
763 Should Not Contain ${ipv6_static_def_gw_list} ${ipv6_gw_addr}
764
Sweta Potthuri2d085732025-07-16 09:10:08 -0500765
766Delete IPv6 Static Default Gateway
767 [Documentation] Delete IPv6 static default gateway on BMC.
768 [Arguments] ${ipv6_gw_addr}
769 ... ${valid_status_codes}=[${HTTP_OK},${HTTP_ACCEPTED},${HTTP_NO_CONTENT}]
770
771 # Description of argument(s):
772 # ipv6_gw_addr IPv6 Static Default Gateway address to be deleted.
773 # valid_status_codes Expected return code from patch operation
774 # (e.g. "200").
775
776 ${patch_list}= Create List
777 ${empty_dict}= Create Dictionary
778
779 ${ipv6_static_def_gw_list}= Create List
780 @{ipv6_static_defgw_configurations}= Get IPv6 Static Default Gateway
781
782 FOR ${ipv6_staticdef_gateway} IN @{ipv6_static_defgw_configurations}
783 ${value}= Get From Dictionary ${ipv6_staticdef_gateway} Address
784 Append To List ${ipv6_static_def_gw_list} ${value}
785 END
786
787 ${defgw_found}= Run Keyword And Return Status List Should Contain Value
788 ... ${ipv6_static_def_gw_list} ${ipv6_gw_addr} msg=${ipv6_gw_addr} does not exist on BMC
789 Skip If ${defgw_found} == ${False} ${ipv6_gw_addr} does not exist on BMC
790
791 FOR ${ipv6_static_def_gw} IN @{ipv6_static_defgw_configurations}
792 IF '${ipv6_static_def_gw['Address']}' == '${ipv6_gw_addr}'
793 Append To List ${patch_list} ${null}
794 ELSE
795 Append To List ${patch_list} ${empty_dict}
796 END
797 END
798
799 # Run patch command only if given IP is found on BMC.
800 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list}
801
802 Redfish.Patch ${REDFISH_NW_ETH_IFACE}${ethernet_interface} body=&{data}
803 ... valid_status_codes=${valid_status_codes}
804
805 ${data}= Create Dictionary IPv6StaticDefaultGateways=${patch_list}
806
807 @{ipv6_static_defgw_configurations}= Get IPv6 Static Default Gateway
808 Should Not Contain Match ${ipv6_static_defgw_configurations} ${ipv6_gw_addr}
809 ... msg=IPv6 Static default gateway does not exist.
Sweta Potthuri35c503b2025-07-27 23:36:20 -0500810
811
812Check Coexistence Of Linklocalv6 And Static IPv6
813 [Documentation] Verify both linklocalv6 and static IPv6 exist.
814
Sweta Potthuri35c503b2025-07-27 23:36:20 -0500815 # Verify the address origin contains static and linklocal.
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500816 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal
Sweta Potthuri35c503b2025-07-27 23:36:20 -0500817
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500818 Should Not Be Empty ${ipv6_linklocal_addr} msg=LinkLocal address is not present.
Sweta Potthuri35c503b2025-07-27 23:36:20 -0500819 Should Match Regexp ${ipv6_linklocal_addr} ${linklocal_addr_format}
820 Should Contain ${ipv6_addressorigin_list} LinkLocal
821 Should Contain ${ipv6_addressorigin_list} Static
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -0500822
823
824Check If Linklocal Address Is In Correct Format
825 [Documentation] Linklocal address has network part fe80 and host part EUI64.
826
827 # Fetch the linklocal address.
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500828 @{ipv6_addressorigin_list} ${ipv6_linklocal_addr}= Get Address Origin List And Address For Type LinkLocal
829 Should Contain ${ipv6_addressorigin_list} LinkLocal
830 Should Not Be Empty ${ipv6_linklocal_addr} msg=LinkLocal address is not present.
Sweta Potthuri3c6f97d2025-08-06 00:30:19 -0500831
832 # Follow EUI64 from MAC.
833 ${system_mac}= Get BMC MAC Address
834 ${split_octets}= Split String ${system_mac} :
835 ${first_octet}= Evaluate int('${split_octets[0]}', 16)
836 ${flipped_hex}= Evaluate format(${first_octet} ^ 2, '02x')
837 ${grp1}= Evaluate re.sub(r'^0+', '', '${flipped_hex}${split_octets[1]}') modules=re
838 ${grp2}= Evaluate re.sub(r'^0+', '', '${split_octets[2]}ff') modules=re
839 ${grp3}= Evaluate re.sub(r'^0+', '', '${split_octets[4]}${split_octets[5]}') modules=re
840 ${linklocal}= Set Variable fe80::${grp1}:${grp2}:fe${split_octets[3]}:${grp3}
841
842 # Verify the linklocal obtained is the same as on the machine.
843 Should Be Equal ${linklocal} ${ipv6_linklocal_addr}
844
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500845
846Check BMC Gets SLAACv6 Address
847 [Documentation] Check BMC gets slaacv6 address.
848
849 @{ipv6_addressorigin_list} ${ipv6_slaac_addr}= Get Address Origin List And Address For Type SLAAC
850
851 Should Contain ${ipv6_addressorigin_list} SLAAC
852 Should Not Be Empty ${ipv6_slaac_addr} msg=SLAACv6 address is not present.
853
Sweta Potthuridb4a6d62025-08-18 11:29:16 -0500854
855Get The Initial DHCPv6 Setting
856 [Documentation] Get the initial DHCPv6 setting and store in a variable.
857 [Arguments] ${channel_number} ${initial_dhcpv6_before}
858
859 # Description of the argument(s):
860 # channel_number Channel number 1 or 2.
861 # initial_dhcpv6_before Variable to store initial DHCPv6 setting.
862
863 ${ethernet_interface}= Set Variable ${active_channel_config['${channel_number}']['name']}
864 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
865 ${initial_dhcpv6_iface}= Get From Dictionary ${resp.dict} DHCPv6
866 Set Test Variable ${${initial_dhcpv6_before}} ${initial_dhcpv6_iface['OperatingMode']}
867
868
Sweta Potthuri71f7bdc2025-08-10 03:08:10 -0500869Get Address Origin List And Address For Type
870 [Documentation] Get address origin list and address for type.
871 [Arguments] ${ipv6_address_type}
872
873 # Description of the argument(s):
874 # ipv6_address_type Type of IPv6 address to be checked.
875
876 ${resp}= Redfish.Get ${REDFISH_NW_ETH_IFACE}${active_channel_config['${CHANNEL_NUMBER}']['name']}
877 @{ipv6_addresses}= Get From Dictionary ${resp.dict} IPv6Addresses
878
879 ${ipv6_addressorigin_list}= Create List
880 ${ipv6_slaac_addr}= Set Variable ${None}
881 FOR ${ipv6_address} IN @{ipv6_addresses}
882 ${ipv6_addressorigin}= Get From Dictionary ${ipv6_address} AddressOrigin
883 Append To List ${ipv6_addressorigin_list} ${ipv6_addressorigin}
884 IF '${ipv6_addressorigin}' == '${ipv6_address_type}'
885 Set Test Variable ${ipv6_type_addr} ${ipv6_address['Address']}
886 END
887 END
888 RETURN @{ipv6_addressorigin_list} ${ipv6_type_addr}