Merge "Undercloud ctplane router for IPv6 RA's idempotent"

This commit is contained in:
Zuul 2019-10-12 08:01:07 +00:00 committed by Gerrit Code Review
commit a829e57fd8
1 changed files with 12 additions and 6 deletions

View File

@ -176,6 +176,10 @@ def _neutron_segment_update(sdk, segment_id, name):
def _ensure_neutron_router(sdk, name, subnet_id):
# If the router already exist, don't try to create it again.
if list(sdk.network.routers(name=name)):
return
try:
router = sdk.network.create_router(name=name, admin_state_up='true')
sdk.network.add_interface_to_router(router.id, subnet_id=subnet_id)
@ -248,8 +252,14 @@ def _local_neutron_segments_and_subnets(sdk, ctlplane_id, net_cidrs):
s['DnsNameServers'])
# If the subnet is IPv6 we need to start a router so that router
# advertisments are sent out for stateless IP addressing to work.
if netaddr.IPNetwork(s['NetworkCidr']).version == 6:
_ensure_neutron_router(sdk, name, subnet.id)
# NOTE(hjensas): Don't do this for routed networks. The router will
# use the address defined as gateway for the subnet, and in a
# deployment with routed networks this will conflict with the router
# in the infrastructure. The router in the infrastucture must be
# configured to send router advertisements.
if not CONF['enable_routed_networks']:
if netaddr.IPNetwork(s['NetworkCidr']).version == 6:
_ensure_neutron_router(sdk, name, subnet.id)
net_cidrs.append(s['NetworkCidr'])
return net_cidrs
@ -283,10 +293,6 @@ def _remote_neutron_segments_and_subnets(sdk, ctlplane_id, net_cidrs):
sdk, ctlplane_id, s['NetworkCidr'], s['NetworkGateway'],
s['HostRoutes'], s.get('AllocationPools'), name, segment.id,
s['DnsNameServers'])
# If the subnet is IPv6 we need to start a router so that router
# advertisments are sent out for stateless IP addressing to work.
if netaddr.IPNetwork(s['NetworkCidr']).version == 6:
_ensure_neutron_router(sdk, name, subnet.id)
net_cidrs.append(s['NetworkCidr'])
return net_cidrs