xref: /openbmc/openbmc-test-automation/openpower/ext_interfaces/test_vmi.robot (revision 1e9f2f3ad99a95d660bd97af35b0ef76cab257fc)
1*** Settings ***
2
3Documentation     VMI static/dynamic IP config tests.
4
5Resource          ../../lib/external_intf/vmi_utils.robot
6
7Suite Setup       Suite Setup Execution
8Test Teardown     FFDC On Test Case Fail
9Suite Teardown    Run Keyword And Ignore Error  Suite Teardown Execution
10
11Test Tags         Vmi
12
13*** Variables ***
14
15# users           User Name               password
16@{ADMIN}          admin_user              TestPwd123
17@{OPERATOR}       operator_user           TestPwd123
18@{ReadOnly}       readonly_user           TestPwd123
19&{USERS}          Administrator=${ADMIN}  ReadOnly=${ReadOnly}
20
21${test_ipv4}              10.6.6.6
22${test_gateway}           10.6.6.1
23${test_netmask}           255.255.252.0
24
25&{DHCP_ENABLED}           DHCPEnabled=${${True}}
26&{DHCP_DISABLED}          DHCPEnabled=${${False}}
27
28&{ENABLE_DHCP}            DHCPv4=&{DHCP_ENABLED}
29&{DISABLE_DHCP}           DHCPv4=&{DHCP_DISABLED}
30
31${default}                0.0.0.0
32${default_ipv6addr}       ::
33${prefix_length}          ${64}
34${test_vmi_ipv6addr}      2001:db8:1111:2222:10:5:5:6
35${test_vmi_ipv6gateway}   2001:db8:1111:2222::1
36${ipv4_hexword_addr}      10.5.5.6:1A:1B:1C:1D:1E:1F
37${multicast_ipv6addr}     FF00
38${loopback_ipv6addr}      ::1
39
40
41*** Test Cases ***
42
43Verify All VMI EthernetInterfaces
44    [Documentation]  Verify all VMI ethernet interfaces.
45    [Tags]  Verify_All_VMI_EthernetInterfaces
46
47    Verify VMI EthernetInterfaces
48
49
50Verify Existing VMI Network Interface Details
51    [Documentation]  Verify existing VMI network interface details.
52    [Tags]  Verify_Existing_VMI_Network_Interface_Details
53
54    ${vmi_ip}=  Get VMI Network Interface Details
55    ${origin}=  Set Variable If  ${vmi_ip["DHCPv4"]} == ${False}  Static  DHCP
56    Should Not Be Equal  ${vmi_ip["DHCPv4"]}  ${vmi_ip["IPv4StaticAddresses"]}
57    Should Be Equal As Strings  ${vmi_ip["Id"]}  ${ethernet_interface}
58    Should Be Equal As Strings  ${vmi_ip["Description"]}
59    ...  Hypervisor's Virtual Management Ethernet Interface
60    Should Be Equal As Strings  ${vmi_ip["Name"]}  Hypervisor Ethernet Interface
61    IF   ${vmi_ip["IPv4StaticAddresses"]} != @{empty}
62         Verify VMI Network Interface Details  ${vmi_ip["IPv4_Address"]}
63         ...  ${origin}  ${vmi_ip["IPv4_Gateway"]}  ${vmi_ip["IPv4_SubnetMask"]}
64    END
65
66
67Delete Existing Static VMI IP Address
68    [Documentation]  Delete existing static VMI IP address.
69    [Tags]  Delete_Existing_Static_VMI_IP_Address
70
71    ${curr_origin}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
72    IF  ${curr_origin} == ${True}
73        Set VMI IPv4 Origin  ${False}  ${HTTP_ACCEPTED}
74    END
75
76    Delete VMI IPv4 Address
77
78
79Verify User Cannot Delete ReadOnly Property IPv4Addresses
80    [Documentation]  Verify user cannot delete readonly property IPv4Addresses.
81    [Tags]  Verify_User_Cannot_Delete_ReadOnly_Property_IPv4Addresses
82
83    ${curr_origin}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
84    IF  ${curr_origin} == ${True}
85        Set VMI IPv4 Origin  ${False}  ${HTTP_ACCEPTED}
86    END
87    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
88    Delete VMI IPv4 Address  IPv4Addresses  valid_status_code=${HTTP_FORBIDDEN}
89
90
91Assign Valid And Invalid Static IPv4 Address To VMI
92    [Documentation]  Assign static IPv4 address to VMI.
93    [Tags]  Assign_Valid_And_Invalid_Static_IPv4_Address_To_VMI
94    [Template]  Set Static IPv4 Address To VMI And Verify
95    [Teardown]   Run keywords  Delete VMI IPv4 Address  AND  Test Teardown Execution
96
97    # ip          gateway     netmask           valid_status_code
98    10.5.20.30    10.5.20.1     255.255.252.0    ${HTTP_ACCEPTED}
99    a.3.118.94    10.5.20.1     255.255.252.0    ${HTTP_BAD_REQUEST}
100    10.5.20       10.5.20.1     255.255.252.0    ${HTTP_BAD_REQUEST}
101    10.5.20.-5    10.5.20.1     255.255.252.0    ${HTTP_BAD_REQUEST}
102
103
104Add Multiple IP Addresses On VMI Interface And Verify
105    [Documentation]  Add multiple IP addresses on VMI interface and verify.
106    [Tags]  Add_Multiple_IP_Addresses_On_VMI_Interface_And_Verify
107    [Teardown]   Run keywords  Delete VMI IPv4 Address  AND  Test Teardown Execution
108
109    ${ip1}=  Create dictionary  Address=10.5.5.10  SubnetMask=255.255.252.0  Gateway=10.5.5.1
110    ${ip2}=  Create dictionary  Address=10.5.5.11  SubnetMask=255.255.252.0  Gateway=10.5.5.1
111    ${ip3}=  Create dictionary  Address=10.5.5.12  SubnetMask=255.255.252.0  Gateway=10.5.5.1
112    ${ips}=  Create List  ${ip1}  ${ip2}  ${ip3}
113
114    Redfish.Patch  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
115    ...  body={'IPv4StaticAddresses':${ips}}  valid_status_codes=[${HTTP_BAD_REQUEST}]
116
117
118Modify IP Addresses On VMI Interface And Verify
119    [Documentation]  Modify IP addresses on VMI interface and verify.
120    [Tags]  Modify_IP_Addresses_On_VMI_Interface_And_Verify
121    [Template]  Set Static IPv4 Address To VMI And Verify
122    [Teardown]   Run keywords  Delete VMI IPv4 Address  AND  Test Teardown Execution
123
124    # ip        gateway       netmask        valid_status_code
125    10.5.5.10   10.5.5.1     255.255.252.0    ${HTTP_ACCEPTED}
126    10.5.5.11   10.5.5.1     255.255.252.0    ${HTTP_ACCEPTED}
127
128
129Switch Between IP Origins On VMI And Verify Details
130    [Documentation]  Switch between IP origins on VMI and verify details.
131    [Tags]  Switch_Between_IP_Origins_On_VMI_And_Verify_Details
132
133    Switch VMI IPv4 Origin And Verify Details
134    Switch VMI IPv4 Origin And Verify Details
135
136
137Verify Persistency Of VMI IPv4 Details After Host Reboot
138    [Documentation]  Verify persistency of VMI IPv4 details after host reboot.
139    [Tags]  Verify_Persistency_Of_VMI_IPv4_Details_After_Host_Reboot
140
141    # Verifying persistency of dynamic address.
142    Set VMI IPv4 Origin  ${True}  ${HTTP_ACCEPTED}
143    Redfish Power Off  stack_mode=skip
144    Redfish Power On
145    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
146
147    # Verifying persistency of static address.
148    Switch VMI IPv4 Origin And Verify Details
149    Redfish Power Off  stack_mode=skip
150    Redfish Power On
151    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
152
153
154Delete VMI Static IP Address And Verify
155    [Documentation]  Delete VMI static IP address and verify.
156    [Tags]  Delete_VMI_Static_IP_Address_And_Verify
157    [Teardown]  Test Teardown Execution
158
159    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
160    Delete VMI IPv4 Address
161
162
163Verify Successful VMI IP Static Configuration On HOST Boot After Session Delete
164    [Documentation]  Verify VMI IP static Configuration On HOST Boot After session deleted.
165    [Tags]  Verify_Successful_VMI_IP_Static_Configuration_On_HOST_Boot_After_Session_Delete
166    [Teardown]  Run keywords  Delete VMI IPv4 Address  AND  Test Teardown Execution
167
168    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
169
170    ${session_info}=  Get Redfish Session Info
171    Redfish.Delete  ${session_info["location"]}
172
173    # Create a new Redfish session
174    Redfish.Login
175    Redfish Power Off
176    Redfish Power On
177
178    Verify VMI Network Interface Details  ${test_ipv4}  Static  ${test_gateway}  ${test_netmask}
179
180
181Verify Persistency Of VMI DHCP IP Configuration After Multiple HOST Reboots
182    [Documentation]  Verify Persistency Of VMI DHCP IP configuration After Multiple HOST Reboots
183    [Tags]  Verify_Persistency_Of_VMI_DHCP_IP_Configuration_After_Multiple_HOST_Reboots
184    [Teardown]  Test Teardown Execution
185
186    Set VMI IPv4 Origin  ${True}  ${HTTP_ACCEPTED}
187    ${vmi_ip_config}=  Get VMI Network Interface Details
188    # Verifying persistency of dynamic address after multiple reboots.
189    FOR  ${i}  IN RANGE  ${2}
190        Redfish Power Off
191        Redfish Power On
192        Verify VMI Network Interface Details  ${vmi_ip_config["IPv4_Address"]}
193        ...  DHCP  ${vmi_ip_config["IPv4_Gateway"]}  ${vmi_ip_config["IPv4_SubnetMask"]}
194    END
195
196
197Enable DHCP When Static IP Configured And Verify Static IP
198    [Documentation]  Enable DHCP when static ip configured and verify static ip
199    [Tags]  Enable_DHCP_When_Static_IP_Configured_And_Verify_Static_IP
200    [Setup]  Redfish Power On
201    [Teardown]  Test Teardown Execution
202
203    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
204    Set VMI IPv4 Origin  ${True}
205    ${vmi_network_conf}=  Get VMI Network Interface Details
206    Should Not Be Equal As Strings  ${test_ipv4}  ${vmi_network_conf["IPv4_Address"]}
207
208
209Verify VMI Static IP Configuration Persist On BMC Reset Before Host Boot
210    [Documentation]  Verify VMI static IP configuration persist on BMC reset.
211    [Tags]   Verify_VMI_Static_IP_Configuration_Persist_On_BMC_Reset_Before_Host_Boot
212    [Teardown]  Run keywords  Delete VMI IPv4 Address  AND  FFDC On Test Case Fail
213
214    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
215    Redfish OBMC Reboot (off)  stack_mode=skip
216    Redfish Power On
217    # Verifying the VMI static configuration
218    Verify VMI Network Interface Details  ${test_ipv4}  Static   ${test_gateway}  ${test_netmask}
219
220
221Add Static IP When Host Poweroff And Verify On Poweron
222    [Documentation]  Add Static IP When Host Poweroff And Verify on power on
223    [Tags]   Add_Static_IP_When_Host_Poweroff_And_Verify_On_Poweron
224    [Setup]  Redfish Power Off
225    [Teardown]  Run keywords  Delete VMI IPv4 Address  AND  FFDC On Test Case Fail
226
227    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
228    Redfish Power On
229    Verify VMI Network Interface Details  ${test_ipv4}  Static  ${test_gateway}  ${test_netmask}
230
231
232Add VMI Static IP When Host Poweroff And Verify Static IP On BMC Reset
233    [Documentation]  Add Static IP When Host Poweroff And Verify Static IP On BMC Reset.
234    [Tags]  Add_VMI_Static_IP_When_Host_Poweroff_And_Verify_Static_IP_On_BMC_Reset
235    [Setup]  Redfish Power Off
236    [Teardown]  Run keywords  Delete VMI IPv4 Address  AND  FFDC On Test Case Fail
237
238    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
239    Redfish OBMC Reboot (off)  stack_mode=skip
240    Redfish Power On
241    Verify VMI Network Interface Details  ${test_ipv4}  Static  ${test_gateway}  ${test_netmask}
242
243
244Enable DHCP When No Static IP Configured And Verify DHCP IP
245    [Documentation]  Enable DHCP when no static ip configured and verify dhcp ip
246    [Tags]  Enable_DHCP_When_No_Static_IP_Configured_And_Verify_DHCP_IP
247    [Setup]  Run Keyword And Ignore Error  Delete VMI IPv4 Address
248    [Teardown]  Test Teardown Execution
249
250    ${curr_origin}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
251    IF  ${curr_origin} == ${False}
252        Set VMI IPv4 Origin  ${True}  ${HTTP_ACCEPTED}
253    END
254    ${vmi_ip_config}=  Get VMI Network Interface Details
255    Verify VMI Network Interface Details  ${vmi_ip_config["IPv4_Address"]}
256    ...  DHCP  ${vmi_ip_config["IPv4_Gateway"]}  ${vmi_ip_config["IPv4_SubnetMask"]}
257
258
259Verify User Cannot Delete VMI DHCP IP Address
260    [Documentation]  Verify user cannot delete VMI DHCP IP Address
261    [Tags]  Verify_User_Cannot_Delete_VMI_DHCP_IP_Address
262    [Setup]  Set VMI IPv4 Origin  ${True}
263    [Teardown]  Test Teardown Execution
264
265    Delete VMI IPv4 Address  IPv4Addresses  valid_status_code=${HTTP_FORBIDDEN}
266    ${resp}=  Redfish.Get
267    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
268    Should Not Be Empty  ${resp.dict["IPv4Addresses"]}
269
270
271Enable DHCP When Static IP Configured DHCP Server Unavailable And Verify IP
272    [Documentation]  Enable DHCP When Static IP Configured And DHCP Server Unavailable And Verify No IP.
273    [Tags]  Enable_DHCP_When_Static_IP_Configured_DHCP_Server_Unavailable_And_Verify_IP
274    [Teardown]  Test Teardown Execution
275
276    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
277    Set VMI IPv4 Origin  ${True}
278    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
279
280
281Verify To Configure VMI Static IP Address With Different User Roles
282    [Documentation]  Verify to configure vmi static ip address with different user roles.
283    [Tags]  Verify_To_Configure_VMI_Static_IP_Address_With_Different_User_Roles
284    [Setup]  Run Keywords  Delete BMC Users Using Redfish
285    ...  AND  Create Users With Different Roles  users=${USERS}  force=${True}
286    [Template]  Config VMI Static IP Address Using Different Users
287    [Teardown]  Delete BMC Users Using Redfish
288
289    # username     password    ip_address    gateway          nemask           valid_status_code
290    admin_user     TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_ACCEPTED}
291    readonly_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
292
293
294Verify To Configure VMI Static IP Address With Operator User Role
295    [Documentation]  Verify to configure vmi static ip address with operator user role.
296    [Tags]  Verify_To_Configure_VMI_Static_IP_Address_With_Operator_User_Role
297    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
298    [Template]  Config VMI Static IP Address Using Different Users
299    [Teardown]  Delete BMC Users Using Redfish
300
301    # username     password    ip_address    gateway          nemask           valid_status_code
302    operator_user  TestPwd123  ${test_ipv4}  ${test_gateway}  ${test_netmask}  ${HTTP_FORBIDDEN}
303
304
305Verify To Delete VMI Static IP Address With Different User Roles
306    [Documentation]  Verify to delete vmi static IP address with different user roles.
307    [Tags]  Verify_To_Delete_VMI_Static_IP_Address_With_Different_User_Roles
308    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
309    [Template]  Delete VMI Static IP Address Using Different Users
310    [Teardown]  Delete BMC Users Using Redfish
311
312    # username     password     valid_status_code
313    admin_user     TestPwd123   ${HTTP_ACCEPTED}
314    readonly_user  TestPwd123   ${HTTP_FORBIDDEN}
315
316
317Verify To Delete VMI Static IP Address With Operator User Role
318    [Documentation]  Verify to delete vmi static IP address with operator user role.
319    [Tags]  Verify_To_Delete_VMI_Static_IP_Address_With_Operator_User_Role
320    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
321    [Template]  Delete VMI Static IP Address Using Different Users
322    [Teardown]  Delete BMC Users Using Redfish
323
324    # username     password     valid_status_code
325    operator_user     TestPwd123   ${HTTP_FORBIDDEN}
326
327
328Verify To Update VMI Static IP Address With Different User Roles
329    [Documentation]  Verify to update vmi static IP address with different user roles.
330    [Tags]  Verify_To_Update_VMI_Static_IP_Address_With_Different_User_Roles
331    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
332    [Template]  Config VMI Static IP Address Using Different Users
333    [Teardown]  Delete BMC Users Using Redfish
334
335    # username     password     ip_address  gateway    netmask       valid_status_code
336    admin_user     TestPwd123   10.5.10.20  10.5.10.1  255.255.0.0  ${HTTP_ACCEPTED}
337    readonly_user  TestPwd123   10.5.20.40  10.5.20.1  255.255.0.0  ${HTTP_FORBIDDEN}
338
339
340Verify To Update VMI Static IP Address With Operator User Role
341    [Documentation]  Verify to update vmi static IP address with operator user role.
342    [Tags]  Verify_To_Update_VMI_Static_IP_Address_With_Operator_User_Role
343    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
344    [Template]  Config VMI Static IP Address Using Different Users
345    [Teardown]  Delete BMC Users Using Redfish
346
347    # username     password     ip_address  gateway    netmask       valid_status_code
348    operator_user  TestPwd123   10.5.10.30  10.5.10.1  255.255.0.0  ${HTTP_FORBIDDEN}
349
350
351Verify To Read VMI Network Configuration With Different User Roles
352    [Documentation]  Verify to read vmi network configuration with different user roles.
353    [Tags]  Verify_To_Read_VMI_Network_Configuration_With_Different_User_Roles
354    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
355    [Template]  Read VMI Static IP Address Using Different Users
356    [Teardown]  Delete BMC Users Using Redfish
357
358    # username     password     valid_status_code
359    admin_user     TestPwd123   ${HTTP_OK}
360    readonly_user  TestPwd123   ${HTTP_OK}
361
362
363Verify To Read VMI Network Configuration With Operator User Role
364    [Documentation]  Verify to read vmi network configuration with operator user role.
365    [Tags]  Verify_To_Read_VMI_Network_Configuration_With_Operator_User_Role
366    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
367    [Template]  Read VMI Static IP Address Using Different Users
368    [Teardown]  Delete BMC Users Using Redfish
369
370    # username     password     valid_status_code
371    operator_user  TestPwd123   ${HTTP_FORBIDDEN}
372
373
374Enable DHCP On VMI Network Via Different Users Roles And Verify
375    [Documentation]  Enable DHCP On VMI Network Via Different Users Roles And Verify.
376    [Tags]  Enable_DHCP_On_VMI_Network_Via_Different_Users_Roles_And_Verify
377    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
378    [Template]  Update User Role And Set VMI IPv4 Origin
379    [Teardown]  Delete BMC Users Using Redfish
380
381    # username     password     dhcp_enabled   valid_status_code
382    admin_user     TestPwd123   ${True}        ${HTTP_ACCEPTED}
383    readonly_user  TestPwd123   ${True}        ${HTTP_FORBIDDEN}
384
385
386Enable DHCP On VMI Network Via Operator User Role And Verify
387    [Documentation]  Enable DHCP On VMI Network Via Operator User Role And Verify.
388    [Tags]  Enable_DHCP_On_VMI_Network_Via_Operator_User_Role_And_Verify
389    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
390    [Template]  Update User Role And Set VMI IPv4 Origin
391    [Teardown]  Delete BMC Users Using Redfish
392
393    # username     password     dhcp_enabled   valid_status_code
394    operator_user  TestPwd123   ${True}        ${HTTP_FORBIDDEN}
395
396
397Disable DHCP On VMI Network Via Different Users Roles And Verify
398    [Documentation]  Disable DHCP On VMI Network Via Different Users Roles And Verify.
399    [Tags]  Disable_DHCP_On_VMI_Network_Via_Different_Users_Roles_And_Verify
400    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
401    [Template]  Update User Role And Set VMI IPv4 Origin
402    [Teardown]  Delete BMC Users Using Redfish
403
404    # username     password     dhcp_enabled    valid_status_code
405    admin_user     TestPwd123   ${False}        ${HTTP_ACCEPTED}
406    readonly_user  TestPwd123   ${False}        ${HTTP_FORBIDDEN}
407
408
409Disable DHCP On VMI Network Via Operator User Role And Verify
410    [Documentation]  Disable DHCP On VMI Network Via Operator User Role And Verify.
411    [Tags]  Disable_DHCP_On_VMI_Network_Via_Operator_User_Role_And_Verify
412    [Setup]  Create Users With Different Roles  users=${USERS}  force=${True}
413    [Template]  Update User Role And Set VMI IPv4 Origin
414    [Teardown]  Delete BMC Users Using Redfish
415
416    # username     password     dhcp_enabled    valid_status_code
417    operator_user  TestPwd123   ${False}        ${HTTP_FORBIDDEN}
418
419
420Enable And Disable DHCP And Verify
421    [Documentation]  verify enable DHCP and disable DHCP.
422    [Tags]  Enable_And_Disable_DHCP_And_Verify
423
424    Set VMI IPv4 Origin  ${True}
425    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
426    Set VMI IPv4 Origin  ${False}
427    Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
428
429
430Multiple Times Enable And Disable DHCP And Verify
431    [Documentation]  Enable and Disable DHCP in a loop and verify VMI gets an IP address from DHCP
432    ...  each time when DHCP is enabled
433    [Tags]  Multiple_Times_Enable_And_Disable_DHCP_And_Verify
434
435    FOR  ${i}  IN RANGE  ${2}
436      Set VMI IPv4 Origin  ${True}
437      Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
438      Set VMI IPv4 Origin  ${False}
439      Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
440    END
441
442
443Assign Static IPv4 Address With Invalid Netmask To VMI
444    [Documentation]  Assign static IPv4 address with invalid netmask and expect error.
445    [Tags]  Assign_Static_IPv4_Address_With_Invalid_Netmask_To_VMI
446    [Template]  Set Static IPv4 Address To VMI And Verify
447
448    # ip          gateway          netmask         valid_status_code
449    ${test_ipv4}  ${test_gateway}  255.256.255.0   ${HTTP_BAD_REQUEST}
450    ${test_ipv4}  ${test_gateway}  ff.ff.ff.ff     ${HTTP_BAD_REQUEST}
451    ${test_ipv4}  ${test_gateway}  255.255.253.0   ${HTTP_BAD_REQUEST}
452
453
454Assign Static IPv4 Address With Invalid Gateway To VMI
455    [Documentation]  Add static IPv4 address with invalid gateway and expect error.
456    [Tags]  Assign_Static_IPv4_Address_With_Invalid_Gateway_To_VMI
457    [Template]  Set Static IPv4 Address To VMI And Verify
458
459    # ip          gateway          netmask           valid_status_code
460    ${test_ipv4}  @@@.%%.44.11     ${test_netmask}   ${HTTP_BAD_REQUEST}
461    ${test_ipv4}  0xa.0xb.0xc.0xd  ${test_netmask}   ${HTTP_BAD_REQUEST}
462    ${test_ipv4}  10.3.36          ${test_netmask}   ${HTTP_BAD_REQUEST}
463    ${test_ipv4}  10.3.36.-10      ${test_netmask}   ${HTTP_BAD_REQUEST}
464
465
466Enable DHCP When Host Is Off And Verify After Poweron
467    [Documentation]  Enable DHCP when host is off and
468    ...  check whether it is enabled after poweron.
469    [Tags]  Enable_DHCP_When_Host_Is_Off_And_Verify_After_Poweron
470    [Setup]  Redfish Power Off  stack_mode=skip
471
472    Set VMI IPv4 Origin  ${True}
473    Redfish Power On  stack_mode=skip
474    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
475
476
477Disable DHCP When Host Is Off And Verify New State Reflects After Power On
478    [Documentation]  Disable DHCP when host is off and
479    ...  get network info and verify that VMI origin is static.
480    [Tags]  Disable_DHCP_When_Host_Is_Off_And_Verify_New_State_Reflects_After_Power_On
481    [Setup]  Redfish Power Off  stack_mode=skip
482
483    Set VMI IPv4 Origin  ${False}
484    Redfish Power On  stack_mode=skip
485    Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
486
487
488Enable VMI Stateless Address AutoConfig And Verify
489    [Documentation]  Enable VMI SLAACv6 and verify an origin.
490    [Tags]  Enable_VMI_Stateless_Address_AutoConfig_And_Verify
491
492    Set VMI SLAACv6 Origin    ${True}
493
494    # Check origin is set to slaac and address are getting displayed.
495    Verify VMI IPv6 Address  SLAAC
496
497
498Disable VMI Stateless Address AutoConfig And Verify
499    [Documentation]  Disable VMI SLAACv6 and verify an origin.
500    [Tags]  Disable_VMI_Stateless_Address_AutoConfig_And_Verify
501    [Setup]  Set VMI SLAACv6 Origin    ${True}
502
503    Set VMI SLAACv6 Origin    ${False}
504
505    # Check origin is set to static and slaacv6 address are getting erased.
506    Verify VMI IPv6 Address  Static
507
508
509Enable VMI SLAAC And Check Persistency On BMC Reboot
510    [Documentation]  Enable VMI SLAACv6 and verify its persistency
511    ...  on BMC reboot and this works on the setup where router
512    ...  advertises network prefix.
513    [Tags]  Enable_VMI_SLAAC_And_Check_Persistency_On_BMC_Reboot
514
515    Set VMI SLAACv6 Origin    ${True}
516
517    # Reboot BMC and verify persistency.
518    OBMC Reboot (off)
519    Redfish Power On
520    Wait For Host Boot Progress To Reach Required State
521    Sleep  5s
522
523    # Check origin is set to slaac and address are getting displayed.
524    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  SLAAC
525    Should Not Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
526
527
528Disable VMI SLAAC And Check Persistency On BMC Reboot
529    [Documentation]  Disable VMI SLAACv6 and verify its persistency
530    ...  on BMC reboot.
531    [Tags]  Disable_VMI_SLAAC_And_Check_Persistency_On_BMC_Reboot
532
533    Set VMI SLAACv6 Origin    ${False}
534
535    # Reboot BMC and verify persistency.
536    OBMC Reboot (off)
537    Redfish Power On
538    Wait For Host Boot Progress To Reach Required State
539
540    # Check if origin is set to static and SLAAC address are getting erased.
541    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  Static
542    Should Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
543
544
545Disable VMI DHCPv4 When SLAAC Is Enabled And Verify
546    [Documentation]  Disable VMI DHCPv4 parameter when SLAACv6 is enabled
547    ...  and check whether the IPv4 address origin is set to static and
548    ...  DHCPv4 address is getting erased.
549    [Tags]  Disable_VMI_DHCPv4_When_SLAAC_Is_Enabled_And_Verify
550    [Setup]  Set VMI IPv4 Origin  ${True}
551
552    # Set IPv6 origin to SLAAC.
553    Set VMI SLAACv6 Origin    ${True}
554    Verify VMI IPv6 Address  SLAAC
555
556    # Disable VMI DHCPv4 and check IPv4 address origin is set to static.
557    Set VMI IPv4 Origin  ${False}
558    Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
559
560
561Enable VMI SLAAC When DHCPv6 Is Enabled And Verify
562    [Documentation]  Enable VMI SLAACv6 when VMI DHCPv6 is enabled and
563    ...  check IPv6 gets Slaac address and this works on the setup
564    ...  where router advertise network prefix.
565    [Tags]  Enable_VMI_SLAAC_When_DHCPv6_Is_Enabled_And_Verify
566
567    Set VMI DHCPv6 Property  Enabled
568
569    # Enable SLAAC and check whether IPv6 origin is set to SLAAC.
570    Set VMI SLAACv6 Origin    ${True}
571
572    # Check if origin is set to slaac and address are getting displayed.
573    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  SLAAC
574    Should Not Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
575    Should Be Equal  ${vmi_ipv6addr["PrefixLength"]}  ${prefix_length}
576
577
578Disable VMI DHCPv6 Property And Verify
579    [Documentation]  Disable VMI DHCPv6 property and verify IPv6 address
580    ...              origin is set to static and DHCPv6 address is erased.
581    [Tags]  Disable_VMI_DHCPv6_Property_And_Verify
582    [Setup]  Set VMI DHCPv6 Property  Enabled
583
584    Set VMI DHCPv6 Property  Disabled
585
586    # Verify IPv6 address origin is set to static and DHCPv6 address is erased.
587    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  Static
588    Should Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
589
590
591Enable VMI SLAAC When DHCPv4 Is Enabled And Verify
592    [Documentation]  On VMI enable SLAAC when DHCPv4 is enabled and verify DHCPv4 settings are intact
593    ...  and IPv6 origin is set to SLAAC & it gets assigned with SLAAC IPv6 address and this
594    ...  works on the setup where router advertise network prefix.
595    [Tags]  Enable_VMI_SLAAC_When_DHCPv4_Is_Enabled_And_Verify
596    [Setup]  Set VMI IPv4 Origin  ${True}
597
598    # Enable Autoconfig address and check whether IPv6 address origin is set to SLAAC.
599    Set VMI SLAACv6 Origin  ${True}
600    Verify VMI IPv6 Address  SLAAC
601
602    # Check there is no impact on IPv4 settings, IPv4 address origin should be DHCP.
603    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
604
605
606Disable VMI DHCPv6 Property And Check Persistency On BMC Reboot
607    [Documentation]  Disable VMI DHCPv6 property and verify its persistency on
608    ...  BMC reboot.
609    [Tags]  Disable_VMI_DHCPv6_Property_And_Check_Persistency_On_BMC_Reboot
610    [Setup]  Set VMI DHCPv6 Property  Enabled
611
612    Set VMI DHCPv6 Property  Disabled
613
614    # Reboot BMC and verify persistency.
615    OBMC Reboot (off)
616
617    # Verify IPv6 address origin is set to Static and DHCPv6 address is erased.
618    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  Static
619    Should Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
620
621
622Enable VMI SLAAC When IPv4 Origin Is Static And Verify
623    [Documentation]  On VMI enable SLAAC when IPv4 origin is static and verify IPv4 settings are intact
624    ...  and IPv6 origin is set to SLAAC & it gets assigned with SLAAC IPv6 address and this works
625    ...  on the setup where router advertise network prefix.
626    [Tags]  Enable_VMI_SLAAC_When_IPv4_Origin_Is_Static_And_Verify
627    [Setup]  Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
628    [Teardown]  Run keywords  Delete VMI IPv4 Address  AND  Test Teardown Execution
629
630    # Enable Autoconfig address and check whether IPv6 address origin is set to SLAAC.
631    Set VMI SLAACv6 Origin  ${True}
632    Verify VMI IPv6 Address  SLAAC
633
634    # Check there is no impact on IPv4 settings, IPv4 address origin should be Static.
635    Verify VMI Network Interface Details  ${test_ipv4}  Static  ${test_gateway}  ${test_netmask}
636
637
638Configure Static VMI IPv6 Address And Verify
639    [Documentation]  Add static VMI IPv6 address and check whether IPv6 origin is set to static
640    ...  and Static IPv6 address is assigned.
641    [Tags]  Configure_Static_VMI_IPv6_Address_And_Verify
642
643    Set Static VMI IPv6 Address  ${test_vmi_ipv6addr}  ${prefix_length}
644
645    # Verify IPv6 address origin is set to static and static IPv6 address is assigned.
646    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  Static
647    Should Not Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
648    Should Be Equal  ${vmi_ipv6addr["PrefixLength"]}  ${prefix_length}
649
650
651Configure IPv6 Static Default Gateway On VMI And Verify
652    [Documentation]  Configure IPv6 static default gateway on VMI and verify.
653    [Tags]  Configure_IPv6_Static_Default_Gateway_On_VMI_And_Verify
654    [Setup]  Set Static VMI IPv6 Address  ${test_vmi_ipv6addr}  ${prefix_length}
655
656    Set VMI IPv6 Static Default Gateway  ${test_vmi_ipv6gateway}
657
658    ${resp}=  Redfish.Get
659    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
660    ${vmi_ipv6_gateways}=  Get From Dictionary  ${resp.dict}  IPv6StaticDefaultGateways
661    ${vmi_ipv6_gateway} =  Get From List  ${vmi_ipv6_gateways}  0
662    Should Be Equal  ${vmi_ipv6_gateway["Address"]}  ${test_vmi_ipv6gateway}
663
664
665Delete VMI Static IPv6 Address And Verify
666    [Documentation]  Delete VMI static IPv6 address and verify address is erased.
667    [Tags]  Delete_VMI_Static_IPv6_Address_And_Verify
668    [Setup]  Set Static VMI IPv6 Address  ${test_vmi_ipv6addr}  ${prefix_length}
669
670    # Delete VMI static IPv6 address.
671    Delete VMI IPv6 Static Address
672
673    # Verify VMI static IPv6 address is erased.
674    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  Static
675    Should Not Be Equal  ${vmi_ipv6addr["Address"]}  ${test_vmi_ipv6addr}
676    Should Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
677
678
679Enable VMI DHCPv6 When IPv6 Origin Is Static And Verify
680    [Documentation]  Enable VMI DHCPv6 when IPv6 origin is in static and verify
681    ...  origin is set to DHCP and check if static IPv6 address is erased.
682    [Tags]  Enable_VMI_DHCPv6_When_IPv6_Origin_Is_Static_And_Verify
683
684    Set Static VMI IPv6 Address  ${test_vmi_ipv6addr}  ${prefix_length}
685    ${vmi_ipv6addr_static}=  Verify VMI IPv6 Address  Static
686
687    Sleep  5s
688
689    # Enable DHCPv6 property.
690    Set VMI DHCPv6 Property  Enabled
691
692    # Check origin is set to DHCP and static IPv6 address is erased.
693    ${vmi_dhcpv6addr}=  Verify VMI IPv6 Address  DHCPv6
694    Should Not Be Equal  ${vmi_dhcpv6addr["Address"]}  ${vmi_ipv6addr_static["Address"]}
695
696
697Configure Invalid Static IPv6 To VMI And Verify
698    [Documentation]  Configure invalid static IPv6 address to VMI and verify that address
699    ...  does not get assigned and it throws an error.
700    [Tags]  Configure_Invalid_Static_IPv6_To_VMI_And_Verify
701    [Setup]  Set Static VMI IPv6 Address  ${test_vmi_ipv6addr}  ${prefix_length}
702    [Template]  Set VMI Invalid Static IPv6 Address And Verify
703
704    # invalid_vmi_ipv6addr     invalid_prefix_length     valid_status_codes
705    ${default_ipv6addr}        128                       ${HTTP_BAD_REQUEST}
706    ${multicast_ipv6addr}      8                         ${HTTP_BAD_REQUEST}
707    ${loopback_ipv6addr}       64                        ${HTTP_BAD_REQUEST}
708    ${ipv4_hexword_addr}       64                        ${HTTP_BAD_REQUEST}
709
710
711Delete IPv6 Static Default Gateway On VMI And Verify
712    [Documentation]  Delete IPv6 static default gateway and verify address is erased.
713    [Tags]  Delete_IPv6_Static_Default_Gateway_On_VMI_And_Verify
714    [Setup]  Run Keywords  Set Static VMI IPv6 Address  ${test_vmi_ipv6addr}  ${prefix_length}
715    ...  AND  Set VMI IPv6 Static Default Gateway  ${test_vmi_ipv6gateway}
716
717    # Delete IPv6 static default gateway address.
718    Delete VMI IPv6 Static Default Gateway Address
719
720    Sleep  5s
721
722    # Verify static IPv6 default gateway address is deleted.
723    ${resp}=  Redfish.Get
724    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
725    Should Be Empty  ${resp.dict["IPv6StaticDefaultGateways"]}
726
727
728Disable VMI DHCPv6 When DHCPv4 Is Enabled And Verify
729    [Documentation]  Disable VMI DHCPv6 property when DHCPv4 is enabled and verify
730    ...  DHCPv4 settings are intact and verify IPv6 address origin is set to static.
731    [Tags]  Disable_VMI_DHCPv6_When_DHCPv4_Is_Enabled_And_Verify
732    [Setup]  Run Keywords  Set VMI DHCPv6 Property  Enabled
733    ...  AND  Set VMI IPv4 Origin  ${True}
734
735    Set VMI DHCPv6 Property  Disabled
736
737    # Verify IPv6 address origin is set to static and DHCPv6 address is erased.
738    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  Static
739    Should Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
740
741    # Check there is no impact on IPv4 settings, IPv4 address origin should be DHCP.
742    Verify VMI Network Interface Details  ${default}  DHCP  ${default}  ${default}
743
744
745Assign Static VMI IPv6 Address And Check Persistency On BMC Reboot
746    [Documentation]  Add static VMI IPv6 address and check whether IPv6 origin is set to static
747    ...  and static IPv6 address is assigned after BMC reboot.
748    [Tags]  Assign_Static_VMI_IPv6_Address_And_Check_Persistency_On_BMC_Reboot
749
750    Set Static VMI IPv6 Address  ${test_vmi_ipv6addr}  ${prefix_length}
751
752    # Reboot BMC and verify persistency.
753    OBMC Reboot (off)
754    Redfish Power On
755    Wait For Host Boot Progress To Reach Required State
756
757    # Verify IPv6 address origin is set to static and static IPv6 address is assigned.
758    ${vmi_ipv6addr}=  Verify VMI IPv6 Address  Static
759    Should Not Be Equal  ${vmi_ipv6addr["Address"]}  ${default_ipv6addr}
760    Should Be Equal  ${vmi_ipv6addr["PrefixLength"]}  ${prefix_length}
761
762
763*** Keywords ***
764
765Suite Setup Execution
766    [Documentation]  Do test setup execution task.
767
768    Redfish.Login
769
770    Redfish Power Off
771    Set BIOS Attribute  pvm_hmc_managed  Enabled
772    Set BIOS Attribute  pvm_stop_at_standby  Disabled
773
774    Redfish Power On
775    Wait For Host Boot Progress To Reach Required State
776
777    ${active_channel_config}=  Get Active Channel Config
778    Set Suite Variable   ${active_channel_config}
779    Set Suite Variable  ${ethernet_interface}  ${active_channel_config['${CHANNEL_NUMBER}']['name']}
780    ${resp}=  Redfish.Get
781    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
782    ${ip_resp}=  Evaluate  json.loads(r'''${resp.text}''')  json
783    ${length}=  Get Length  ${ip_resp["IPv4StaticAddresses"]}
784    ${vmi_network_conf}=  IF  ${length} != ${0}  Get VMI Network Interface Details
785    Set Suite Variable  ${vmi_network_conf}
786
787
788Test Teardown Execution
789    [Documentation]  Do test teardown execution task.
790
791    FFDC On Test Case Fail
792    ${curr_mode}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
793    IF  ${curr_mode} == ${True}
794        Set VMI IPv4 Origin  ${False}
795    ELSE  '${vmi_network_conf["IPv4_Address"]}' != '${default}'
796         Set Static IPv4 Address To VMI And Verify  ${vmi_network_conf["IPv4_Address"]}
797         ...  ${vmi_network_conf["IPv4_Gateway"]}  ${vmi_network_conf["IPv4_SubnetMask"]}
798    END
799
800
801Get Immediate Child Parameter From VMI Network Interface
802    [Documentation]  Get immediate child parameter from VMI network interface.
803    [Arguments]  ${parameter}  ${valid_status_code}=${HTTP_OK}
804
805    # Description of argument(s):
806    # parameter          parameter for which value is required. Ex: DHCPEnabled, MACAddress etc.
807    # valid_status_code  Expected valid status code from GET request.
808
809    ${resp}=  Redfish.Get
810    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
811    ...  valid_status_codes=[${valid_status_code}]
812
813    ${ip_resp}=  Evaluate  json.loads(r'''${resp.text}''')  json
814    ${value}=  Set Variable If  '${parameter}' != 'DHCPEnabled'   ${ip_resp["${parameter}"]}
815    ...  ${ip_resp["DHCPv4"]["${parameter}"]}
816
817    RETURN  ${value}
818
819
820Switch VMI IPv4 Origin And Verify Details
821    [Documentation]  Switch VMI IPv4 origin and verify details.
822
823    ${dhcp_mode_before}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
824    ${dhcp_enabled}=  Set Variable If  ${dhcp_mode_before} == ${False}  ${True}  ${False}
825
826    ${origin}=  Set Variable If  ${dhcp_mode_before} == ${False}  DHCP  Static
827    Set VMI IPv4 Origin  ${dhcp_enabled}  ${HTTP_ACCEPTED}
828
829    ${dhcp_mode_after}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
830    Should Not Be Equal  ${dhcp_mode_before}  ${dhcp_mode_after}
831
832    IF  ${dhcp_mode_after} == ${True}
833        Verify VMI Network Interface Details  ${default}  ${origin}  ${default}  ${default}
834    END
835
836
837Delete VMI Static IP Address Using Different Users
838    [Documentation]  Update user role and delete vmi static IP address.
839    [Arguments]  ${username}  ${password}  ${valid_status_code}
840    [Teardown]  Run Keywords  Redfish.Login  AND
841    ...  Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}
842    ...  ${test_netmask}  ${HTTP_ACCEPTED}  AND  Redfish.Logout
843
844    # Description of argument(s):
845    # username            The host username.
846    # password            The host password.
847    # valid_status_code   The expected valid status code.
848
849    # TODO: operator_user role is not yet supported.
850    Skip If  '${username}' == 'operator_user'
851    Redfish.Login  ${username}  ${password}
852    Delete VMI IPv4 Address  delete_param=IPv4StaticAddresses  valid_status_code=${valid_status_code}
853
854
855Config VMI Static IP Address Using Different Users
856   [Documentation]  Update user role and update vmi static ip address.
857   [Arguments]  ${username}  ${password}  ${ip}  ${gateway}  ${netmask}
858   ...  ${valid_status_code}
859
860    # Description of argument(s):
861    # username            The host username.
862    # password            The host password.
863    # ip                  IP address to be added (e.g. "10.7.7.7").
864    # subnet_mask         Subnet mask for the IP to be added
865    #                     (e.g. "255.255.0.0").
866    # gateway             Gateway for the IP to be added (e.g. "10.7.7.1").
867    # valid_status_code   The expected valid status code.
868
869    # TODO: operator_user role is not yet supported.
870    Skip If  '${username}' == 'operator_user'
871    Redfish.Login  ${username}  ${password}
872    Set Static IPv4 Address To VMI And Verify  ${ip}  ${gateway}  ${netmask}  ${valid_status_code}
873
874
875Read VMI Static IP Address Using Different Users
876   [Documentation]  Update user role and read vmi static ip address.
877   [Arguments]  ${username}  ${password}  ${valid_status_code}
878
879    # Description of argument(s):
880    # username            The host username.
881    # password            The host password.
882    # valid_status_code   The expected valid status code.
883
884    # TODO: operator_user role is not yet supported.
885    Skip If  '${username}' == 'operator_user'
886    Redfish.Login  ${username}  ${password}
887    Redfish.Get
888    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${ethernet_interface}
889    ...  valid_status_codes=[${valid_status_code}]
890
891
892Delete BMC Users Using Redfish
893   [Documentation]  Delete BMC users via redfish.
894
895   Redfish.Login
896   Delete BMC Users Via Redfish  users=${USERS}
897
898
899Update User Role And Set VMI IPv4 Origin
900    [Documentation]  Update User Role And Set VMI IPv4 Origin.
901    [Arguments]  ${username}  ${password}  ${dhcp_enabled}  ${valid_status_code}
902
903    # Description of argument(s):
904    # username            The host username.
905    # password            The host password.
906    # dhcp_enabled        Indicates whether dhcp should be enabled
907    #                     (${True}, ${False}).
908    # valid_status_code   The expected valid status code.
909
910    # TODO: operator_user role is not yet supported.
911    Skip If  '${username}' == 'operator_user'
912    Redfish.Login  ${username}  ${password}
913    Set VMI IPv4 Origin  ${dhcp_enabled}  ${valid_status_code}
914
915
916Suite Teardown Execution
917    [Documentation]  Do suite teardown execution task.
918
919    IF  ${vmi_network_conf} != ${None}
920        Set Static IPv4 Address To VMI And Verify  ${vmi_network_conf["IPv4_Address"]}
921    ...  ${vmi_network_conf["IPv4_Gateway"]}  ${vmi_network_conf["IPv4_SubnetMask"]}
922    END
923
924    Delete All Redfish Sessions
925    Redfish.Logout
926
927
928Set VMI Invalid Static IPv6 Address And Verify
929    [Documentation]  Set VMI invalid static IPv6 address and verify it throws an error.
930    [Arguments]  ${invalid_vmi_ipv6addr}  ${invalid_prefix_length}  ${valid_status_codes}
931    ...  ${interface}=${ethernet_interface}
932
933    # Description of argument(s):
934    # invalid_vmi_ipv6addr           VMI IPv6 address to be added.
935    # invalid_prefix_length          Prefix length for the VMI IPv6 to be added.
936    # valid_status_codes             Expected status code for PATCH request.
937    # interface                      VMI interface (eg. eth0 or eth1).
938
939    Set Static VMI IPv6 Address  ${invalid_vmi_ipv6addr}  ${invalid_prefix_length}
940    ...  ${valid_status_codes}
941
942    ${resp}=  Redfish.Get  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${interface}
943
944    @{vmi_ipv6_address}=  Get From Dictionary  ${resp.dict}  IPv6Addresses
945    ${vmi_ipv6_addr}=  Get From List  ${vmi_ipv6_address}  0
946    Should Not Be Equal  ${vmi_ipv6_addr["Address"]}  ${invalid_vmi_ipv6addr}
947
948
949Delete VMI IPv6 Static Default Gateway Address
950    [Documentation]  Delete VMI IPv6 static default gateway address.
951    [Arguments]  ${valid_status_codes}=${HTTP_ACCEPTED}
952    ...  ${interface}=${ethernet_interface}
953
954    # Description of argument(s):
955    # valid_status_codes       Expected valid status code from PATCH request.
956    # interface                VMI interface (eg. eth0 or eth1).
957
958    ${data}=  Set Variable  {"IPv6StaticDefaultGateways": [${Null}]}
959    Redfish.Patch  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${interface}
960    ...  body=${data}  valid_status_codes=[${valid_status_codes}]
961