Fix IPv6 tests if ipv6-private-subnet is stateless
If the cloud has configured the ipv6-private-subnet to use stateless
addressing, such as slaac or dhcpv6-stateless, we need to not request
a fixed IP from neutron.
Story: 2006164
Task: 35674
Change-Id: I27e82b34a39bea8a987724e013081079f236894d
diff --git a/octavia_tempest_plugin/tests/api/v2/test_load_balancer.py b/octavia_tempest_plugin/tests/api/v2/test_load_balancer.py
index 555d34e..66d26cf 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_load_balancer.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_load_balancer.py
@@ -120,8 +120,9 @@
self.assertEqual(CONF.load_balancer.provider, lb[const.PROVIDER])
self.assertIsNotNone(lb[const.VIP_PORT_ID])
if lb_kwargs[const.VIP_SUBNET_ID]:
- self.assertEqual(lb_kwargs[const.VIP_ADDRESS],
- lb[const.VIP_ADDRESS])
+ if ip_version == 4 or self.lb_member_vip_ipv6_subnet_stateful:
+ self.assertEqual(lb_kwargs[const.VIP_ADDRESS],
+ lb[const.VIP_ADDRESS])
self.assertEqual(lb_kwargs[const.VIP_SUBNET_ID],
lb[const.VIP_SUBNET_ID])
diff --git a/octavia_tempest_plugin/tests/test_base.py b/octavia_tempest_plugin/tests/test_base.py
index a4775da..e85fb0a 100644
--- a/octavia_tempest_plugin/tests/test_base.py
+++ b/octavia_tempest_plugin/tests/test_base.py
@@ -157,6 +157,7 @@
uuidutils.generate_uuid()}
cls.lb_member_1_ipv6_subnet = {'id': uuidutils.generate_uuid()}
cls.lb_member_2_ipv6_subnet = {'id': uuidutils.generate_uuid()}
+ cls.lb_member_vip_ipv6_subnet_stateful = True
return
elif CONF.load_balancer.test_network_override:
if conf_lb.test_subnet_override:
@@ -182,6 +183,10 @@
cls.lb_member_vip_ipv6_subnet = override_ipv6_subnet
cls.lb_member_1_ipv6_subnet = override_ipv6_subnet
cls.lb_member_2_ipv6_subnet = override_ipv6_subnet
+ cls.lb_member_vip_ipv6_subnet_stateful = False
+ if (override_ipv6_subnet[0]['ipv6_address_mode'] ==
+ 'dhcpv6-stateful'):
+ cls.lb_member_vip_ipv6_subnet_stateful = True
else:
cls.lb_member_vip_ipv6_subnet = None
cls.lb_member_1_ipv6_subnet = None
@@ -303,6 +308,10 @@
priv_ipv6_subnet = cls.os_admin.subnets_client.list_subnets(
name='ipv6-private-subnet')['subnets']
+ cls.lb_member_vip_ipv6_subnet_stateful = False
+ if (priv_ipv6_subnet[0]['ipv6_address_mode'] ==
+ 'dhcpv6-stateful'):
+ cls.lb_member_vip_ipv6_subnet_stateful = True
if len(priv_ipv6_subnet) == 1:
cls.lb_member_vip_ipv6_subnet = priv_ipv6_subnet[0]
cls.lb_member_vip_ipv6_net = {
@@ -457,6 +466,10 @@
subnet = cls.os_admin.subnets_client.show_subnet(subnet_id)
network = ipaddress.IPv6Network(subnet['subnet']['cidr'])
lb_vip_address = str(network[ip_index])
+ # If the subnet is IPv6 slaac or dhcpv6-stateless
+ # neutron does not allow a fixed IP
+ if not cls.lb_member_vip_ipv6_subnet_stateful:
+ use_fixed_ip = False
lb_kwargs[const.VIP_SUBNET_ID] = subnet_id
if use_fixed_ip:
lb_kwargs[const.VIP_ADDRESS] = lb_vip_address