Merge "[ovn]Allow multiple IPv6 ports on router from same network"

This commit is contained in:
Zuul 2025-05-06 05:10:14 +00:00 committed by Gerrit Code Review
commit aa4ab837a0
2 changed files with 9 additions and 0 deletions

View File

@ -47,6 +47,7 @@ from sqlalchemy.orm import exc
from neutron._i18n import _
from neutron.api.rpc.agentnotifiers import l3_rpc_agent_api
from neutron.common import ipv6_utils
from neutron.common.ovn import utils as ovn_utils
from neutron.common import utils
from neutron.db import _utils as db_utils
from neutron.db import l3_attrs_db
@ -865,6 +866,9 @@ class L3_NAT_dbonly_mixin(l3.RouterPluginBase,
return True
def _validate_one_router_ipv6_port_per_network(self, router, port):
l3plugin = directory.get_plugin(plugin_constants.L3)
if ovn_utils.is_ovn_l3(l3plugin):
return
if self._port_has_ipv6_address(port):
for existing_port in (rp.port for rp in router.attached_ports):
if (existing_port["id"] != port["id"] and

View File

@ -46,6 +46,7 @@ from webob import exc
from neutron.api.rpc.agentnotifiers import l3_rpc_agent_api
from neutron.api.rpc.handlers import l3_rpc
from neutron.common.ovn import utils as ovn_utils
from neutron.db import db_base_plugin_v2
from neutron.db import dns_db
from neutron.db import external_net_db
@ -1639,6 +1640,10 @@ class L3NatTestCaseBase(L3NatTestCaseMixin):
there is no ambiguity regarding on which port to add an IPv6 subnet
when executing router-interface-add with a subnet and no port.
"""
plugin = directory.get_plugin(plugin_constants.L3)
if ovn_utils.is_ovn_l3(plugin):
self.skipTest("Plugin does not support unique IPv6 "
"router ports per network id")
with self.network() as n, self.router() as r:
with self.subnet(network=n, cidr='fd00::/64',
ip_version=lib_constants.IP_VERSION_6) as s1, (