From 0f2de5a3353c6951a88542f35be80b9ba9a55c0f Mon Sep 17 00:00:00 2001 From: berlin Date: Fri, 11 Apr 2014 08:04:47 +0800 Subject: [PATCH] Fix LBaaS Haproxy occurs error if no member is added If no member is added and session_persistence.type=HTTP_COOKIE, haproxy agent would not add cookie persistence option to the backend. Closes-Bug: #1302283 Change-Id: Ifa2564df924c2555225a749a99c705b3f1caab4a --- neutron/services/loadbalancer/drivers/haproxy/cfg.py | 3 ++- .../services/loadbalancer/drivers/haproxy/test_cfg.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/neutron/services/loadbalancer/drivers/haproxy/cfg.py b/neutron/services/loadbalancer/drivers/haproxy/cfg.py index 94a214bc4a8..2944e456a6d 100644 --- a/neutron/services/loadbalancer/drivers/haproxy/cfg.py +++ b/neutron/services/loadbalancer/drivers/haproxy/cfg.py @@ -199,7 +199,8 @@ def _get_session_persistence(config): if persistence['type'] == constants.SESSION_PERSISTENCE_SOURCE_IP: opts.append('stick-table type ip size 10k') opts.append('stick on src') - elif persistence['type'] == constants.SESSION_PERSISTENCE_HTTP_COOKIE: + elif (persistence['type'] == constants.SESSION_PERSISTENCE_HTTP_COOKIE and + config.get('members')): opts.append('cookie SRV insert indirect nocache') elif (persistence['type'] == constants.SESSION_PERSISTENCE_APP_COOKIE and persistence.get('cookie_name')): diff --git a/neutron/tests/unit/services/loadbalancer/drivers/haproxy/test_cfg.py b/neutron/tests/unit/services/loadbalancer/drivers/haproxy/test_cfg.py index 7c937c982e2..a35e1593601 100644 --- a/neutron/tests/unit/services/loadbalancer/drivers/haproxy/test_cfg.py +++ b/neutron/tests/unit/services/loadbalancer/drivers/haproxy/test_cfg.py @@ -178,7 +178,15 @@ class TestHaproxyCfg(base.BaseTestCase): self.assertEqual(cfg._get_session_persistence(config), ['stick-table type ip size 10k', 'stick on src']) + config = {'vip': {'session_persistence': {'type': 'HTTP_COOKIE'}}, + 'members': []} + self.assertEqual([], cfg._get_session_persistence(config)) + config = {'vip': {'session_persistence': {'type': 'HTTP_COOKIE'}}} + self.assertEqual([], cfg._get_session_persistence(config)) + + config = {'vip': {'session_persistence': {'type': 'HTTP_COOKIE'}}, + 'members': [{'id': 'member1_id'}]} self.assertEqual(cfg._get_session_persistence(config), ['cookie SRV insert indirect nocache'])