Skip to content
This repository was archived by the owner on Dec 13, 2018. It is now read-only.

Commit a1a2fbb

Browse files
committed
backend name on envar + option to add +1 server
1 parent 57d6c88 commit a1a2fbb

File tree

2 files changed

+17
-20
lines changed

2 files changed

+17
-20
lines changed

haproxy/config.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,26 +28,23 @@ def parse_extra_frontend_settings(envvars):
2828
settings_dict[port] = settings
2929
return settings_dict
3030

31-
# backend_name,FORCE_SSL,server_name,host:port, options
32-
def parse_additional_backends(additional_backend_settings):
33-
additional_backends = {}
34-
if not additional_backend_settings:
35-
return additional_backends
36-
37-
for backend in additional_backend_settings.split(";"):
38-
parts = backend.split(",")
39-
backend_name, force_ssl, server_name, host_port, options = parts
40-
41-
if force_ssl=="True":
42-
route = ["redirect scheme https code 301 if !{ ssl_fc }", 'server ' + server_name + ' ' + host_port + ' ' + options]
43-
else:
44-
route = ['server ' + server_name + ' ' + host_port + ' ' + options]
45-
46-
additional_backends[backend_name] = route
47-
return additional_backends
31+
def parse_additional_backend_settings(envvars):
32+
settings_dict = {}
33+
if isinstance(envvars, os._Environ) or isinstance(envvars, dict):
34+
frontend_settings_pattern = re.compile(r"^ADDITIONAL_BACKEND_(\w{1,9})$")
35+
for k, v in envvars.iteritems():
36+
match = frontend_settings_pattern.match(k)
37+
if match:
38+
server = match.group(1)
39+
settings = [x.strip().replace("\,", ",") for x in re.split(r'(?<!\\),', v.strip())]
40+
if server in settings_dict:
41+
settings_dict[server].extend(settings)
42+
else:
43+
settings_dict[server] = settings
44+
return settings_dict
4845

4946
# envvar
50-
ADDITIONAL_BACKENDS = parse_additional_backends(os.getenv("ADDITIONAL_BACKENDS"))
47+
ADDITIONAL_BACKENDS = parse_additional_backend_settings(os.environ)
5148
ADDITIONAL_SERVICES = os.getenv("ADDITIONAL_SERVICES")
5249
API_AUTH = os.getenv("DOCKERCLOUD_AUTH")
5350
BALANCE = os.getenv("BALANCE", "roundrobin")

haproxy/haproxycfg.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def update(self):
111111
cfg_dict.update(self._config_tcp_sections())
112112
cfg_dict.update(self._config_frontend_sections())
113113
cfg_dict.update(self._config_backend_sections())
114-
cfg_dict.update(self._config_adittional_backend_sections())
114+
cfg_dict.update(self._config_adittional_backends_sections())
115115

116116
cfg = prettify(cfg_dict)
117117
self._update_haproxy(cfg)
@@ -331,7 +331,7 @@ def _config_backend_sections(self):
331331
cfg["backend default_service"] = backend
332332
return cfg
333333

334-
def _config_adittional_backend_sections(self):
334+
def _config_adittional_backends_sections(self):
335335
cfg = OrderedDict()
336336

337337
if ADDITIONAL_BACKENDS:

0 commit comments

Comments
 (0)