From fb476df89e28bc7c3c9d35e8334efd66ba23e558 Mon Sep 17 00:00:00 2001 From: ptoohill Date: Wed, 4 Feb 2015 15:59:26 -0600 Subject: [PATCH] Updating Jinja config and loadbalancerdbv2 Issue with Jinja config using wrong status Issue with DB SqlAlchemy not loading parentchild objects correctly Change-Id: I919e41385cd91ec60af393880cdcfe89027086b0 --- neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py | 2 ++ .../loadbalancer/drivers/haproxy/jinja_cfg.py | 7 ++++--- .../templates/haproxy_v1.4_proxies.template | 2 +- .../haproxy/sample_configs/sample_configs.py | 14 +++++++------- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py b/neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py index 2857b3c8a..18e055e43 100644 --- a/neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py +++ b/neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py @@ -281,6 +281,7 @@ class LoadBalancerPluginDbv2(base_db.CommonDbMixin): raise loadbalancerv2.LoadBalancerListenerProtocolPortExists( lb_id=listener['loadbalancer_id'], protocol_port=listener['protocol_port']) + context.session.refresh(listener_db_entry.loadbalancer) return data_models.Listener.from_sqlalchemy_model(listener_db_entry) def update_listener(self, context, id, listener): @@ -428,6 +429,7 @@ class LoadBalancerPluginDbv2(base_db.CommonDbMixin): raise loadbalancerv2.MemberExists(address=member['address'], port=member['protocol_port'], pool=pool_id) + context.session.refresh(member_db.pool) return data_models.Member.from_sqlalchemy_model(member_db) def update_pool_member(self, context, id, member): diff --git a/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py b/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py index 6a3a3b3b2..db68ed3ae 100644 --- a/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py +++ b/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py @@ -125,7 +125,7 @@ def _transform_pool(pool): 'health_monitor': '', 'session_persistence': '', 'admin_state_up': pool.admin_state_up, - 'status': pool.status + 'provisioning_status': pool.provisioning_status } members = [_transform_member(x) for x in pool.members if _include_member(x)] @@ -154,7 +154,7 @@ def _transform_member(member): 'weight': member.weight, 'admin_state_up': member.admin_state_up, 'subnet_id': member.subnet_id, - 'status': member.status + 'provisioning_status': member.provisioning_status } @@ -174,7 +174,8 @@ def _transform_health_monitor(monitor): def _include_member(member): - return member.status in MEMBER_STATUSES and member.admin_state_up + return (member.provisioning_status in + MEMBER_STATUSES and member.admin_state_up) def _expand_expected_codes(codes): diff --git a/neutron_lbaas/services/loadbalancer/drivers/haproxy/templates/haproxy_v1.4_proxies.template b/neutron_lbaas/services/loadbalancer/drivers/haproxy/templates/haproxy_v1.4_proxies.template index 7c69fa0f2..e795cdac8 100644 --- a/neutron_lbaas/services/loadbalancer/drivers/haproxy/templates/haproxy_v1.4_proxies.template +++ b/neutron_lbaas/services/loadbalancer/drivers/haproxy/templates/haproxy_v1.4_proxies.template @@ -71,4 +71,4 @@ backend {{ pool.id }} {% endif %} {{ "server %s %s:%d weight %s%s%s"|e|format(member.id, member.address, member.protocol_port, member.weight, hm_opt, persistence_opt)|trim() }} {% endfor %} -{% endmacro %} \ No newline at end of file +{% endmacro %} diff --git a/neutron_lbaas/tests/unit/services/loadbalancer/drivers/haproxy/sample_configs/sample_configs.py b/neutron_lbaas/tests/unit/services/loadbalancer/drivers/haproxy/sample_configs/sample_configs.py index 1756d61cf..a015f326c 100644 --- a/neutron_lbaas/tests/unit/services/loadbalancer/drivers/haproxy/sample_configs/sample_configs.py +++ b/neutron_lbaas/tests/unit/services/loadbalancer/drivers/haproxy/sample_configs/sample_configs.py @@ -37,7 +37,7 @@ RET_MEMBER_1 = { 'weight': 13, 'subnet_id': '10.0.0.1/24', 'admin_state_up': 'true', - 'status': 'ACTIVE'} + 'provisioning_status': 'ACTIVE'} RET_MEMBER_2 = { 'id': 'sample_member_id_2', @@ -46,7 +46,7 @@ RET_MEMBER_2 = { 'weight': 13, 'subnet_id': '10.0.0.1/24', 'admin_state_up': 'true', - 'status': 'ACTIVE'} + 'provisioning_status': 'ACTIVE'} RET_POOL = { 'id': 'sample_pool_id_1', @@ -56,7 +56,7 @@ RET_POOL = { 'health_monitor': RET_MONITOR, 'session_persistence': RET_PERSISTENCE, 'admin_state_up': 'true', - 'status': 'ACTIVE'} + 'provisioning_status': 'ACTIVE'} RET_LISTENER = { 'id': 'sample_listener_id_1', @@ -118,7 +118,7 @@ def sample_pool_tuple(proto=None, monitor=True, persistence=True, proto = 'HTTP' if proto is None else proto in_pool = collections.namedtuple( 'pool', 'id, protocol, lb_algorithm, members, healthmonitor,' - 'sessionpersistence, admin_state_up, status') + 'sessionpersistence, admin_state_up, provisioning_status') mon = sample_health_monitor_tuple(proto=proto) if monitor is True else None persis = sample_session_persistence_tuple( persistence_type=persistence_type) if persistence is True else None @@ -131,14 +131,14 @@ def sample_pool_tuple(proto=None, monitor=True, persistence=True, healthmonitor=mon, sessionpersistence=persis, admin_state_up='true', - status='ACTIVE') + provisioning_status='ACTIVE') def sample_member_tuple(id, ip): in_member = collections.namedtuple('member', 'id, address, protocol_port, ' 'weight, subnet_id, ' - 'admin_state_up, status') + 'admin_state_up, provisioning_status') return in_member( id=id, address=ip, @@ -146,7 +146,7 @@ def sample_member_tuple(id, ip): weight=13, subnet_id='10.0.0.1/24', admin_state_up='true', - status='ACTIVE') + provisioning_status='ACTIVE') def sample_session_persistence_tuple(persistence_type=None):