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

Commit 64800de

Browse files
committed
add application defined balance clause to the tcp section
1 parent e7c5024 commit 64800de

3 files changed

Lines changed: 20 additions & 1 deletion

File tree

haproxy/haproxycfg.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,13 +226,15 @@ def get_tcp_section(self, details, services_aliases, tcp_port):
226226
bind_string = get_bind_string(enable_ssl, port_num, self.ssl_bind_string, EXTRA_BIND_SETTINGS)
227227
tcp_routes, self.routes_added = TcpHelper.get_tcp_routes(details, self.specs.get_routes(), tcp_port, port_num)
228228
services = TcpHelper.get_service_aliases_given_tcp_port(details, services_aliases, tcp_port)
229+
balance = TcpHelper.get_tcp_balance(details)
229230
options = TcpHelper.get_tcp_options(details, services)
230231
extra_settings = TcpHelper.get_tcp_extra_settings(details, services)
231232
tcp_section.append("bind :%s" % bind_string.strip())
232233
tcp_section.append("mode tcp")
233-
tcp_section.extend(tcp_routes)
234+
tcp_section.extend(balance)
234235
tcp_section.extend(options)
235236
tcp_section.extend(extra_settings)
237+
tcp_section.extend(tcp_routes)
236238
return tcp_section, port_num
237239

238240
def _config_frontend_sections(self):

haproxy/helper/tcp_helper.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,14 @@ def get_service_aliases_given_tcp_port(details, service_aliases, tcp_port):
5858
return services
5959

6060

61+
def get_tcp_balance(details):
62+
balance = get_service_attribute(details, 'balance')
63+
if balance:
64+
return ["balance %s" % balance]
65+
else:
66+
return []
67+
68+
6169
def get_tcp_options(details, services):
6270
option_list = []
6371
for service in services:

tests/unit/helper/test_tcp_helper.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,15 @@ def test_get_service_aliases_given_tcp_port(self):
110110
self.assertEqual([], get_service_aliases_given_tcp_port({}, ['HELLO', 'WORLD'], '33'))
111111
self.assertEqual([], get_service_aliases_given_tcp_port({}, [], '33'))
112112

113+
def test_get_tcp_balance(self):
114+
details = {'HW': {'balance': "a"},
115+
'HELLO': {'balance': "b"},
116+
'WORLD': {'balance': ""}}
117+
self.assertEqual([], get_tcp_balance({}))
118+
self.assertEqual([], get_tcp_balance({'WORLD': {'balance': ""}}))
119+
self.assertTrue(get_tcp_balance(details) in [["balance a"], ["balance b"], []])
120+
121+
113122
def test_get_tcp_options(self):
114123
details = {'HW': {'option': ["opt1", 'opt2']},
115124
'HELLO': {'option': ["opt3", "opt1"]},

0 commit comments

Comments
 (0)