[octavia] Choose right external network when there is more than one

In some cases there may be more than one external network in Openstack.
When creating a LB, the proper external network needs to be chosen.

Change-Id: Iae5c9a803bdec8a1b5a8973f1747f72d90c20279
This commit is contained in:
Eduardo Olivares
2024-10-17 19:09:27 +02:00
parent e3100fae5a
commit f268b126b7
2 changed files with 9 additions and 3 deletions

View File

@@ -20,7 +20,8 @@ from oslo_config import cfg
GROUP_NAME = 'neutron'
OPTIONS = [
cfg.StrOpt('external_network',
help="Network for creating ports on an external network"),
help="Network for creating ports on an external network",
default="public"),
cfg.StrOpt('floating_network',
help="Network for creating floating IPs"),
cfg.StrOpt('ipv4_cidr',

View File

@@ -17,17 +17,22 @@ from __future__ import absolute_import
from oslo_log import log
import tobiko
from tobiko import config
from tobiko.openstack import octavia
from tobiko.openstack import neutron
from tobiko.openstack.octavia import _constants
CONF = config.CONF
LOG = log.getLogger(__name__)
def get_external_subnet(ip_version=4):
kw = {'router:external': True}
if len(neutron.list_networks(**{'router:external': True})) > 1:
kw['name'] = CONF.neutron.external_network
try:
ext_subnet_list = neutron.find_network(
**{'router:external': True})['subnets']
ext_subnet_list = neutron.find_network(**kw)['subnets']
except tobiko.ObjectNotFound:
LOG.warning('External network not found')
return None