Creating a neutron lbaas pool with session persistence type HTTP_COOKIE, I could see errors in lbaasv2 screen

Bug #1477348 reported by Madhusudhan Kandadai
18
This bug affects 2 people
Affects Status Importance Assigned to Milestone
neutron
Fix Released
High
Elena Ezhova

Bug Description

HAProxy version used: 1.5

When creating pool with session persistence type HTTP_TYPE, the pool is created, but could see bunch of errors shown below. Also, when using CURL loadbalancer ip against two backend servers with simple webserver, I am getting 503 error.

neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --session-persistence type=HTTP_COOKIE --name pool1
Created a new pool:
+---------------------+------------------------------------------------+
| Field | Value |
+---------------------+------------------------------------------------+
| admin_state_up | True |
| description | |
| healthmonitor_id | |
| id | 5a9df493-d3c7-479d-8e06-c5ced62a4af9 |
| lb_algorithm | ROUND_ROBIN |
| listeners | {"id": "ef8704b6-0fc7-4566-b97b-af8b4e1cc3e2"} |
| members | |
| name | pool1 |
| protocol | HTTP |
| session_persistence | {"cookie_name": null, "type": "HTTP_COOKIE"} |
| tenant_id | 1d967cf6cd024efc87d0bd5a1091dc1e |
+---------------------+------------------------------------------------+

2015-07-22 16:46:43.126 ERROR neutron_lbaas.agent.agent_manager [req-068a510d-3eff-4adc-b650-98fe7bc950ab admin 1d967cf6cd024efc87d0bd5a1091dc1e] Create pool 66a232b7-ca04-4cdb-abf0-842f9899c8fa failed on device driver haproxy_ns
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager Traceback (most recent call last):
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/agent/agent_manager.py", line 328, in create_pool
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager driver.pool.create(pool)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 425, in create
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager self.driver.loadbalancer.refresh(pool.listener.loadbalancer)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 370, in refresh
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager if (not self.driver.deploy_instance(loadbalancer) and
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py", line 252, in inner
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager return f(*args, **kwargs)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 172, in deploy_instance
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager self.update(loadbalancer)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 181, in update
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager self._spawn(loadbalancer, extra_args)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 353, in _spawn
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager haproxy_base_dir)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 89, in save_config
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager haproxy_base_dir)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 221, in render_loadbalancer_obj
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager loadbalancer = _transform_loadbalancer(loadbalancer, haproxy_base_dir)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 236, in _transform_loadbalancer
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager x, haproxy_base_dir) for x in loadbalancer.listeners]
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 261, in _transform_listener
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager ret_value['default_pool'] = _transform_pool(listener.default_pool)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 299, in _transform_pool
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager pool.sessionpersistence)
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 310, in _transform_session_persistence
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager 'type': persistence.type,
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager AttributeError: 'dict' object has no attribute 'type'
2015-07-22 16:46:43.126 TRACE neutron_lbaas.agent.agent_manager

devstack@ubuntu:/opt/stack/neutron$ neutron lbaas-member-create --subnet private-subnet --address 10.0.0.3 --protocol-port 80 pool1
Created a new member:
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| address | 10.0.0.4 |
| admin_state_up | True |
| id | 33e2f293-d40c-4281-85ec-ae8056c51d8d |
| protocol_port | 80 |
| subnet_id | 57edf3b9-e2ad-4710-ad9b-64299131234f |
| tenant_id | 1d967cf6cd024efc87d0bd5a1091dc1e |
| weight | 1 |
+----------------+--------------------------------------+
devstack@ubuntu:/opt/stack/neutron$
devstack@ubuntu:/opt/stack/neutron$

2015-07-22 16:47:40.987 ERROR neutron_lbaas.agent.agent_manager [req-e8081be6-9fb0-47bc-b712-fdc4f4946073 admin 1d967cf6cd024efc87d0bd5a1091dc1e] Create member 33e2f293-d40c-4281-85ec-ae8056c51d8d failed on device driver haproxy_ns
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager Traceback (most recent call last):
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/agent/agent_manager.py", line 354, in create_member
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager driver.member.create(member)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 447, in create
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager self.driver.loadbalancer.refresh(member.pool.listener.loadbalancer)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 370, in refresh
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager if (not self.driver.deploy_instance(loadbalancer) and
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py", line 252, in inner
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager return f(*args, **kwargs)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 172, in deploy_instance
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager self.update(loadbalancer)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 181, in update
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager self._spawn(loadbalancer, extra_args)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 353, in _spawn
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager haproxy_base_dir)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 89, in save_config
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager haproxy_base_dir)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 221, in render_loadbalancer_obj
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager loadbalancer = _transform_loadbalancer(loadbalancer, haproxy_base_dir)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 236, in _transform_loadbalancer
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager x, haproxy_base_dir) for x in loadbalancer.listeners]
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 261, in _transform_listener
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager ret_value['default_pool'] = _transform_pool(listener.default_pool)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 299, in _transform_pool
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager pool.sessionpersistence)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 310, in _transform_session_persistence
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager 'type': persistence.type,
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager AttributeError: 'dict' object has no attribute 'type'
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager

devstack@ubuntu:/opt/stack/neutron$ neutron lbaas-member-create --subnet private-subnet --address 10.0.0.3 --protocol-port 80 pool1
Created a new member:
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| address | 10.0.0.3 |
| admin_state_up | True |
| id | 433091cd-2be3-4ca9-83fa-b4157e7c4351 |
| protocol_port | 80 |
| subnet_id | 57edf3b9-e2ad-4710-ad9b-64299131234f |
| tenant_id | 1d967cf6cd024efc87d0bd5a1091dc1e |
| weight | 1 |
+----------------+--------------------------------------+
devstack@ubuntu:/opt/stack/neutron$

2015-07-22 16:47:40.987 ERROR neutron_lbaas.agent.agent_manager [req-e8081be6-9fb0-47bc-b712-fdc4f4946073 admin 1d967cf6cd024efc87d0bd5a1091dc1e] Create member 433091cd-2be3-4ca9-83fa-b4157e7c4351 failed on device driver haproxy_ns
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager Traceback (most recent call last):
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/agent/agent_manager.py", line 354, in create_member
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager driver.member.create(member)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 447, in create
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager self.driver.loadbalancer.refresh(member.pool.listener.loadbalancer)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 370, in refresh
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager if (not self.driver.deploy_instance(loadbalancer) and
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py", line 252, in inner
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager return f(*args, **kwargs)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 172, in deploy_instance
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager self.update(loadbalancer)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 181, in update
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager self._spawn(loadbalancer, extra_args)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/drivers/haproxy/namespace_driver.py", line 353, in _spawn
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager haproxy_base_dir)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 89, in save_config
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager haproxy_base_dir)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 221, in render_loadbalancer_obj
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager loadbalancer = _transform_loadbalancer(loadbalancer, haproxy_base_dir)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 236, in _transform_loadbalancer
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager x, haproxy_base_dir) for x in loadbalancer.listeners]
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 261, in _transform_listener
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager ret_value['default_pool'] = _transform_pool(listener.default_pool)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 299, in _transform_pool
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager pool.sessionpersistence)
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py", line 310, in _transform_session_persistence
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager 'type': persistence.type,
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager AttributeError: 'dict' object has no attribute 'type'
2015-07-22 16:47:40.987 TRACE neutron_lbaas.agent.agent_manager

description: updated
Elena Ezhova (eezhova)
tags: added: lbaas
Changed in neutron:
assignee: nobody → Elena Ezhova (eezhova)
Elena Ezhova (eezhova)
Changed in neutron:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron-lbaas (master)

Fix proposed to branch: master
Review: https://review.openstack.org/205626

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron-lbaas (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/207945

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron-lbaas (master)

Reviewed: https://review.openstack.org/205626
Committed: https://git.openstack.org/cgit/openstack/neutron-lbaas/commit/?id=ae4687195c41929eb30dd462ad590f8d7e79e382
Submitter: Jenkins
Branch: master

commit ae4687195c41929eb30dd462ad590f8d7e79e382
Author: Elena Ezhova <email address hidden>
Date: Fri Jul 24 19:49:00 2015 +0300

    Use "session_persistence" in data models for uniformity with API attribute

    Currently API uses "session_persistence" attribute name for session
    persistence while in data model the name is "sessionpersistence".
    This naming difference makes things complicated and leads to errors
    in case wrong attribute name usage.

    For example, if we try to create a pool with defined session persistence
    from_dict method of the Pool data model tries to pop "session_persistence"
    from a model_dict [1]. But in reality model_dict contains "sessionpersistence"
    key due to the replacement that was done in from_sqlalchemy_model method [2]
    according to the db model [3]. This will later lead to errors during
    refreshing of a device when pool.sessionpersistence [4] returns a dict
    instead of a SessionPersistence data model.

    Kept sessionpersistence attribute in Pool data model for backwards
    compatibility.

    [1] https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/services/loadbalancer/data_models.py#L350
    [2] https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/services/loadbalancer/data_models.py#L67
    [3] https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/db/loadbalancer/models.py#L148
    [4] https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py#L297

    Change-Id: Ib5efac45cf19acf0afe88a7ffa79514dd4129ed1
    Closes-Bug: #1477348

Changed in neutron:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in neutron:
milestone: none → liberty-rc1
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in neutron:
milestone: liberty-rc1 → 7.0.0
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-lbaas (master)

Reviewed: https://review.openstack.org/207945
Committed: https://git.openstack.org/cgit/openstack/neutron-lbaas/commit/?id=2a9d9f9b7336fa7d87a7f7edfb1bcc0f303d908e
Submitter: Jenkins
Branch: master

commit 2a9d9f9b7336fa7d87a7f7edfb1bcc0f303d908e
Author: Elena Ezhova <email address hidden>
Date: Fri Jul 31 17:29:03 2015 +0300

    Add scenario test for load balancer's session persistence

    Test session persistence feature of load balancer.

    The following is the scenario outline:
        1. Boot two instances.
        2. SSH to the instance and start two servers.
        3. Create a pool with SOURCE_IP session persistence type.
        4. Create a load balancer with two members and with ROUND_ROBIN
           algorithm.
        5. Send 10 requests to the floating ip, associated with the VIP,
           and make sure all the requests from the same ip
           are processed by the same member of the pool.
        6. Change session persistence type of the pool to HTTP_COOKIE.
        7. Check that this session persistence type also forces all
           the requests containing the same cookie to hit the same
           member of the pool.
        8. Change session persistence type of the pool to APP_COOKIE.
        9. Perform the same check.
        10. Turn session persistence off and check that the requests
            are again distributed according to the ROUND_ROBIN algorithm.

    Based on the tempest change:
        https://review.openstack.org/#/c/62662/20

    Related-Bug: #1477348
    Related-Bug: #1505125
    Depends-On: I53d6b7962c0baa466db7e053157cdd302edae473
    Change-Id: I46b7597df3b38bb552ad3264ec30cb059974119f

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron-lbaas (stable/kilo)

Fix proposed to branch: stable/kilo
Review: https://review.openstack.org/306998

Revision history for this message
Nir Magnezi (nmagnezi) wrote :

I propose a backport to Kilo.
Although this is not a security fix, it seems like this feature never worked before.
It might slipped the radar since there was no proper coverage for this feature, which was also introduced[1] by Elena Ezhova.

[1] https://review.openstack.org/#/c/207945/

Revision history for this message
Ihar Hrachyshka (ihar-hrachyshka) wrote :

Session persistence is a very important feature for lbaas. The fact that it's not working is really sad. I marked the bug as High.

Changed in neutron:
importance: Undecided → High
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron-lbaas (stable/kilo)

Reviewed: https://review.openstack.org/306998
Committed: https://git.openstack.org/cgit/openstack/neutron-lbaas/commit/?id=52ad675d92d5cae86beb5d1bd29d9852115fa455
Submitter: Jenkins
Branch: stable/kilo

commit 52ad675d92d5cae86beb5d1bd29d9852115fa455
Author: Elena Ezhova <email address hidden>
Date: Fri Jul 24 19:49:00 2015 +0300

    Use "session_persistence" in data models for uniformity with API attribute

    Currently API uses "session_persistence" attribute name for session
    persistence while in data model the name is "sessionpersistence".
    This naming difference makes things complicated and leads to errors
    in case wrong attribute name usage.

    For example, if we try to create a pool with defined session persistence
    from_dict method of the Pool data model tries to pop "session_persistence"
    from a model_dict [1]. But in reality model_dict contains "sessionpersistence"
    key due to the replacement that was done in from_sqlalchemy_model method [2]
    according to the db model [3]. This will later lead to errors during
    refreshing of a device when pool.sessionpersistence [4] returns a dict
    instead of a SessionPersistence data model.

    Kept sessionpersistence attribute in Pool data model for backwards
    compatibility.

    [1] https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/services/loadbalancer/data_models.py#L350
    [2] https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/services/loadbalancer/data_models.py#L67
    [3] https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/db/loadbalancer/models.py#L148
    [4] https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/services/loadbalancer/drivers/haproxy/jinja_cfg.py#L297

    Conflicts:
     neutron_lbaas/drivers/octavia/driver.py
     neutron_lbaas/tests/unit/drivers/octavia/test_octavia_driver.py
     neutron_lbaas/tests/unit/services/loadbalancer/drivers/haproxy/sample_configs/sample_configs.py

    Change-Id: Ib5efac45cf19acf0afe88a7ffa79514dd4129ed1
    Closes-Bug: #1477348
    (cherry picked from commit ae4687195c41929eb30dd462ad590f8d7e79e382)

tags: added: in-stable-kilo
Revision history for this message
Doug Hellmann (doug-hellmann) wrote : Fix included in openstack/neutron-lbaas 2015.1.4

This issue was fixed in the openstack/neutron-lbaas 2015.1.4 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

This issue was fixed in the openstack/neutron-lbaas 2015.1.4 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.