Skip to content

Commit

Permalink
fix driver for eu-de region (#111)
Browse files Browse the repository at this point in the history
fix driver for eu-de region

Closes #109
Some parameters not fit for eu-de region, added additional asz check

Reviewed-by: Artem Goncharov <None>
  • Loading branch information
anton-sidelnikov authored Jun 27, 2022
1 parent a95d135 commit ad0ab21
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 11 deletions.
19 changes: 15 additions & 4 deletions etc/octavia_proxy.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[DEFAULT]
# Print debugging output (set logging level to DEBUG instead of default WARNING level).
#debug = True
# debug = True
log_level = INFO

# Plugin options are hot_plug_plugin (Hot-pluggable controller plugin)
Expand All @@ -27,7 +27,10 @@ log_name='validatetoken'
[api_settings]
bind_host = 0.0.0.0
bind_port = 9876
#region = eu-nl

# This setting is for proper networking handling, it has default value for eu-de region.
# Must be set for eu-nl or another regions.
# region = eu-nl

# How should authentication be handled (keystone, noauth, validatetoken)
auth_strategy = validatetoken
Expand Down Expand Up @@ -56,10 +59,18 @@ enabled_provider_drivers = elbv2:The Open Telekom Cloud Enhanced LB driver.,elbv
default_provider_driver = elbv2

[elbv2_driver_settings]
#endpoint_override = https://elb.eu-de.otc.t-systems.com/v2.0
# Overrides base urls for API calls
# Must be set for each region accordingly.
# endpoint_override = https://elb.eu-de.otc.t-systems.com/v2.0

[elbv3_driver_settings]
#endpoint_override = https://elb.eu-nl.otc.t-systems.com/v3/%(project_id)s
# Overrides base urls for API calls
# Must be set for each region accordingly.
endpoint_override = https://elb.eu-de.otc.t-systems.com/v3/%(project_id)s

# This setting is mandatory for dedicated load balancer, it has default value for eu-de region.
# Must be set for eu-nl or another regions.
# default_az = eu-nl-01

# The minimum health monitor delay interval for UDP-CONNECT Health Monitor type
# udp_connect_min_interval_health_monitor = 3
Expand Down
11 changes: 8 additions & 3 deletions octavia_proxy/api/drivers/elbv3/driver.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from octavia_lib.api.drivers import provider_base as driver_base
from oslo_config import cfg
from oslo_log import log as logging

from octavia_proxy.api.v2.types import (
Expand All @@ -18,6 +19,7 @@
)

LOG = logging.getLogger(__name__)
CONF = cfg.CONF
PROVIDER = 'elbv3'


Expand Down Expand Up @@ -120,11 +122,16 @@ def loadbalancer_create(self, session, loadbalancer):
lb_attrs.pop('pools')
if 'listeners' in lb_attrs:
lb_attrs.pop('listeners')
if 'provider' in lb_attrs:
lb_attrs.pop('provider')
if 'vip_subnet_id' in lb_attrs:
lb_attrs['vip_subnet_cidr_id'] = lb_attrs['vip_subnet_id']
if 'vip_network_id' in lb_attrs:
lb_attrs['elb_virsubnet_ids'] = [lb_attrs.pop('vip_network_id')]
azs = lb_attrs.pop('availability_zone', 'eu-nl-01')
azs = lb_attrs.pop(
'availability_zone',
CONF.elbv3_driver_settings.default_az
)
lb_attrs['availability_zone_list'] = azs.replace(' ', '').split(',')

if 'tags' in lb_attrs:
Expand All @@ -140,12 +147,10 @@ def loadbalancer_create(self, session, loadbalancer):
name_or_id=l7_flavor.name.replace('L7', 'L4')
).id
lb_attrs.pop('flavor_id')

lb = session.vlb.create_load_balancer(**lb_attrs)
lb = elbv3_backmapping(lb)
lb_data = load_balancer.LoadBalancerResponse.from_sdk_object(
self._normalize_lb(lb))

lb_data.provider = PROVIDER
LOG.debug('Created LB according to API is %s' % lb_data)
return lb_data
Expand Down
6 changes: 4 additions & 2 deletions octavia_proxy/common/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,13 @@
'Example: http://127.0.0.1:9876/vX.Y/%(project_id)s.'),
default=''),
]
vlb_driver_opts = [
dlb_driver_opts = [
cfg.StrOpt('endpoint_override',
help=_('Endpoint override url with additional parameters. '
'Example: http://127.0.0.1:9876/vX.Y/%(project_id)s.'),
default=''),
cfg.StrOpt('default_az', default='eu-de-01',
help=_("Default AZ for dedicated load balancer")),
]

networking_opts = [
Expand Down Expand Up @@ -139,7 +141,7 @@
group=validatetoken.VALIDATETOKEN_MIDDLEWARE_GROUP)
cfg.CONF.register_opts(networking_opts, group='networking')
cfg.CONF.register_opts(elb_driver_opts, group='elbv2_driver_settings')
cfg.CONF.register_opts(vlb_driver_opts, group='elbv3_driver_settings')
cfg.CONF.register_opts(dlb_driver_opts, group='elbv3_driver_settings')


def register_cli_opts():
Expand Down
3 changes: 1 addition & 2 deletions octavia_proxy/tests/unit/api/drivers/elbv3/test_driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,10 @@ class TestElbv3Driver(base.TestCase):
}
fake_call_create = {
'enabled': True,
'availability_zone_list': ['eu-nl-01'],
'availability_zone_list': ['eu-de-01'],
'description': 'Test',
'elb_virsubnet_ids': ['07f0a424-cdb9-4584-b9c0-6a38fbacdc3a'],
'name': 'test',
'provider': 'elbv3',
'tags': [
{'key': 'tag1', 'value': 'val'},
{'key': 'tag2', 'value': ''},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fixes:
- |
Fixed ``load balancer`` creation in de region (`#111 <https://github.com/opentelekomcloud-infra/octavia-proxy/pull/111>`_)

0 comments on commit ad0ab21

Please sign in to comment.