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

Commit 8f9664a

Browse files
committed
do not show backends without any routes
1 parent 64800de commit 8f9664a

6 files changed

Lines changed: 23 additions & 9 deletions

File tree

haproxy/haproxycfg.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -268,12 +268,13 @@ def _config_backend_sections(self):
268268
for service_alias in services_aliases:
269269
backend = BackendHelper.get_backend_section(details, routes, vhosts, service_alias, self.routes_added)
270270

271-
if not service_alias:
272-
if self.require_default_route:
273-
cfg["backend default_service"] = backend
274-
else:
275-
if get_service_attribute(details, "virtual_host", service_alias):
276-
cfg["backend SERVICE_%s" % service_alias] = backend
271+
if BackendHelper.check_backend_has_routes(backend):
272+
if not service_alias:
273+
if self.require_default_route:
274+
cfg["backend default_service"] = backend
277275
else:
278-
cfg["backend default_service"] = backend
276+
if get_service_attribute(details, "virtual_host", service_alias):
277+
cfg["backend SERVICE_%s" % service_alias] = backend
278+
else:
279+
cfg["backend default_service"] = backend
279280
return cfg

haproxy/helper/backend_helper.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,10 @@ def get_basic_auth_setting(basic_auth):
156156
setting.append("acl need_auth http_auth(haproxy_userlist)")
157157
setting.append("http-request auth realm haproxy_basic_auth if !need_auth")
158158
return setting
159+
160+
161+
def check_backend_has_routes(backend):
162+
for b in backend:
163+
if b.startswith("server"):
164+
return True
165+
return False

tests/unit/helper/test_backend_helper.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,9 @@ def test_get_basic_auth_setting(self):
191191
["acl need_auth http_auth(haproxy_userlist)", "http-request auth realm haproxy_basic_auth if !need_auth"],
192192
get_basic_auth_setting('something'))
193193
self.assertEqual([], get_basic_auth_setting(""))
194+
195+
def test_check_backend_has_routes(self):
196+
self.assertTrue(check_backend_has_routes(["mode http",
197+
"balance source",
198+
"server HELLO_1 10.7.0.4:80 check inter 2000 rise 2 fall 3"]))
199+
self.assertFalse(check_backend_has_routes(["mode http", "balance source"]))

tests/unit/helper/test_tcp_helper.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ def test_get_tcp_balance(self):
118118
self.assertEqual([], get_tcp_balance({'WORLD': {'balance': ""}}))
119119
self.assertTrue(get_tcp_balance(details) in [["balance a"], ["balance b"], []])
120120

121-
122121
def test_get_tcp_options(self):
123122
details = {'HW': {'option': ["opt1", 'opt2']},
124123
'HELLO': {'option': ["opt3", "opt1"]},

tests/unit/test_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,4 +284,4 @@ def test_parse(self):
284284
self.assertEqual(["opt1", "opt2", "opt3"], env.details["HELLO"]["option"])
285285

286286
env.parse("HELLO_2_ENV_EXTRA_SETTINGS", "settings")
287-
self.assertEqual("settings", env.details["HELLO"]["extra_settings"])
287+
self.assertEqual("settings", env.details["HELLO"]["extra_settings"])

tests/unit/test_utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def setUp(self):
2020

2121
@mock.patch("haproxy.utils.dockercloud.Utils.fetch_by_resource_uri")
2222
def test_fetch_remote_object(self, mock_fetch_by_resource_uri):
23+
self.assertIsNone(fetch_remote_obj(""))
2324
mock_fetch_by_resource_uri.return_value = self.container
2425
self.assertEqual(self.container, fetch_remote_obj("uri"))
2526

0 commit comments

Comments
 (0)