← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1602974] [NEW] [stable/liberty] LBaaS v2 haproxy: need a way to find status of listener

 

Public bug reported:

Currently we dont have option to check status of listener. Below is the
output of listener without status.

root@runner:~# neutron lbaas-listener-show 8c0e0289-f85d-4539-8970-467a45a5c191
+---------------------------+------------------------------------------------+
| Field                     | Value                                          |
+---------------------------+------------------------------------------------+
| admin_state_up            | True                                           |
| connection_limit          | -1                                             |
| default_pool_id           |                                                |
| default_tls_container_ref |                                                |
| description               |                                                |
| id                        | 8c0e0289-f85d-4539-8970-467a45a5c191           |
| loadbalancers             | {"id": "bda96c0a-0167-45ab-8772-ba92bc0f2d00"} |
| name                      | test-lb-http                                   |
| protocol                  | HTTP                                           |
| protocol_port             | 80                                             |
| sni_container_refs        |                                                |
| tenant_id                 | ce1d087209c64df4b7e8007dc35def22               |
+---------------------------+------------------------------------------------+
root@runner:~#

Problem arise when we tried to configure listener and pool back to back
without any delay. Pool create fails saying listener is not ready.

Workaround is to add 3seconds delay between listener and pool creation.

Logs:

root@runner:~# neutron lbaas-loadbalancer-create --name test-lb vn-subnet; neutron lbaas-listener-create --name test-lb-http --loadbalancer test-lb --protocol HTTP --protocol-port 80; neutron lbaas-pool-create --name test-lb-pool-http  --lb-algorithm ROUND_ROBIN --listener test-lb-http  --protocol HTTP
Created a new loadbalancer:
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| admin_state_up      | True                                 |
| description         |                                      |
| id                  | 3ed2ff4a-4d87-46da-8e5b-265364dd6861 |
| listeners           |                                      |
| name                | test-lb                              |
| operating_status    | OFFLINE                              |
| provider            | haproxy                              |
| provisioning_status | PENDING_CREATE                       |
| tenant_id           | ce1d087209c64df4b7e8007dc35def22     |
| vip_address         | 20.0.0.62                            |
| vip_port_id         | 4c33365e-64b9-428f-bc0b-bce6c08c9b20 |
| vip_subnet_id       | 63cbeccd-6887-4dda-b4d2-b7503bce870a |
+---------------------+--------------------------------------+
Created a new listener:
+---------------------------+------------------------------------------------+
| Field                     | Value                                          |
+---------------------------+------------------------------------------------+
| admin_state_up            | True                                           |
| connection_limit          | -1                                             |
| default_pool_id           |                                                |
| default_tls_container_ref |                                                |
| description               |                                                |
| id                        | 90260465-934a-44a4-a289-208e5af74cf5           |
| loadbalancers             | {"id": "3ed2ff4a-4d87-46da-8e5b-265364dd6861"} |
| name                      | test-lb-http                                   |
| protocol                  | HTTP                                           |
| protocol_port             | 80                                             |
| sni_container_refs        |                                                |
| tenant_id                 | ce1d087209c64df4b7e8007dc35def22               |
+---------------------------+------------------------------------------------+
Invalid state PENDING_UPDATE of loadbalancer resource 3ed2ff4a-4d87-46da-8e5b-265364dd6861
root@runner:~#


Neutron:

: u'90260465-934a-44a4-a289-208e5af74cf5', u'protocol': u'HTTP', u'name': u'test-lb-pool-http', u'admin_state_up': True}} from (pid=7189) prepare_request_body /opt/stack/neutron/neutron/api/v2/base.py:657
2016-07-14 07:38:57.268 DEBUG neutron.db.quota.driver [req-f65cd995-dab1-4b43-96a0-dcbe5b93ffff admin ce1d087209c64df4b7e8007dc35def22] Resources subnet,network,subnetpool,listener,healthmonitor,router,l2-gateway-connection,port,loadbalancer have unlimited quota limit. It is not required to calculated headroom  from (pid=7189) make_reservation /opt/stack/neutron/neutron/db/quota/driver.py:167
2016-07-14 07:38:57.276 DEBUG neutron.db.quota.driver [req-f65cd995-dab1-4b43-96a0-dcbe5b93ffff admin ce1d087209c64df4b7e8007dc35def22] Attempting to reserve 1 items for resource pool. Total usage: 0; quota limit: 10; headroom:10 from (pid=7189) make_reservation /opt/stack/neutron/neutron/db/quota/driver.py:199
2016-07-14 07:38:57.353 ERROR neutron.api.v2.resource [req-f65cd995-dab1-4b43-96a0-dcbe5b93ffff admin ce1d087209c64df4b7e8007dc35def22] create failed
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource Traceback (most recent call last):
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/resource.py", line 83, in resource
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     result = method(request=request, **args)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 410, in create
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     return self._create(request, body, **kwargs)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 146, in wrapper
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     ectxt.value = e.inner_exc
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 204, in __exit__
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 136, in wrapper
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     return f(*args, **kwargs)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 521, in _create
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     obj = do_create(body)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 503, in do_create
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     request.context, reservation.reservation_id)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 204, in __exit__
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 496, in do_create
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     return obj_creator(request.context, **kwargs)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/plugin.py", line 743, in create_pool
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     constants.PENDING_UPDATE)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron-lbaas/neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py", line 164, in test_and_set_status
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     self.assert_modification_allowed(db_lb)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron-lbaas/neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py", line 151, in assert_modification_allowed
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     raise loadbalancerv2.StateInvalid(id=id, state=status)
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource StateInvalid: Invalid state PENDING_UPDATE of loadbalancer resource 3ed2ff4a-4d87-46da-8e5b-265364dd6861
2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource 
2016-07-14 07:38:57.355 INFO neutron.wsgi [req-f65cd995-dab1-4b43-96a0-dcbe5b93ffff admin ce1d087209c64df4b7e8007dc35def22] 172.17.5.148 - - [14/Jul/2016 07:38:57] "POST /v2.0/lbaas/pools.json HTTP/1.1" 500 394 0.091943

** Affects: neutron
     Importance: Undecided
         Status: New


** Tags: lbaas

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1602974

Title:
  [stable/liberty] LBaaS v2 haproxy: need a way to find status of
  listener

Status in neutron:
  New

Bug description:
  Currently we dont have option to check status of listener. Below is
  the output of listener without status.

  root@runner:~# neutron lbaas-listener-show 8c0e0289-f85d-4539-8970-467a45a5c191
  +---------------------------+------------------------------------------------+
  | Field                     | Value                                          |
  +---------------------------+------------------------------------------------+
  | admin_state_up            | True                                           |
  | connection_limit          | -1                                             |
  | default_pool_id           |                                                |
  | default_tls_container_ref |                                                |
  | description               |                                                |
  | id                        | 8c0e0289-f85d-4539-8970-467a45a5c191           |
  | loadbalancers             | {"id": "bda96c0a-0167-45ab-8772-ba92bc0f2d00"} |
  | name                      | test-lb-http                                   |
  | protocol                  | HTTP                                           |
  | protocol_port             | 80                                             |
  | sni_container_refs        |                                                |
  | tenant_id                 | ce1d087209c64df4b7e8007dc35def22               |
  +---------------------------+------------------------------------------------+
  root@runner:~#

  Problem arise when we tried to configure listener and pool back to
  back without any delay. Pool create fails saying listener is not
  ready.

  Workaround is to add 3seconds delay between listener and pool
  creation.

  Logs:

  root@runner:~# neutron lbaas-loadbalancer-create --name test-lb vn-subnet; neutron lbaas-listener-create --name test-lb-http --loadbalancer test-lb --protocol HTTP --protocol-port 80; neutron lbaas-pool-create --name test-lb-pool-http  --lb-algorithm ROUND_ROBIN --listener test-lb-http  --protocol HTTP
  Created a new loadbalancer:
  +---------------------+--------------------------------------+
  | Field               | Value                                |
  +---------------------+--------------------------------------+
  | admin_state_up      | True                                 |
  | description         |                                      |
  | id                  | 3ed2ff4a-4d87-46da-8e5b-265364dd6861 |
  | listeners           |                                      |
  | name                | test-lb                              |
  | operating_status    | OFFLINE                              |
  | provider            | haproxy                              |
  | provisioning_status | PENDING_CREATE                       |
  | tenant_id           | ce1d087209c64df4b7e8007dc35def22     |
  | vip_address         | 20.0.0.62                            |
  | vip_port_id         | 4c33365e-64b9-428f-bc0b-bce6c08c9b20 |
  | vip_subnet_id       | 63cbeccd-6887-4dda-b4d2-b7503bce870a |
  +---------------------+--------------------------------------+
  Created a new listener:
  +---------------------------+------------------------------------------------+
  | Field                     | Value                                          |
  +---------------------------+------------------------------------------------+
  | admin_state_up            | True                                           |
  | connection_limit          | -1                                             |
  | default_pool_id           |                                                |
  | default_tls_container_ref |                                                |
  | description               |                                                |
  | id                        | 90260465-934a-44a4-a289-208e5af74cf5           |
  | loadbalancers             | {"id": "3ed2ff4a-4d87-46da-8e5b-265364dd6861"} |
  | name                      | test-lb-http                                   |
  | protocol                  | HTTP                                           |
  | protocol_port             | 80                                             |
  | sni_container_refs        |                                                |
  | tenant_id                 | ce1d087209c64df4b7e8007dc35def22               |
  +---------------------------+------------------------------------------------+
  Invalid state PENDING_UPDATE of loadbalancer resource 3ed2ff4a-4d87-46da-8e5b-265364dd6861
  root@runner:~#

  
  Neutron:

  : u'90260465-934a-44a4-a289-208e5af74cf5', u'protocol': u'HTTP', u'name': u'test-lb-pool-http', u'admin_state_up': True}} from (pid=7189) prepare_request_body /opt/stack/neutron/neutron/api/v2/base.py:657
  2016-07-14 07:38:57.268 DEBUG neutron.db.quota.driver [req-f65cd995-dab1-4b43-96a0-dcbe5b93ffff admin ce1d087209c64df4b7e8007dc35def22] Resources subnet,network,subnetpool,listener,healthmonitor,router,l2-gateway-connection,port,loadbalancer have unlimited quota limit. It is not required to calculated headroom  from (pid=7189) make_reservation /opt/stack/neutron/neutron/db/quota/driver.py:167
  2016-07-14 07:38:57.276 DEBUG neutron.db.quota.driver [req-f65cd995-dab1-4b43-96a0-dcbe5b93ffff admin ce1d087209c64df4b7e8007dc35def22] Attempting to reserve 1 items for resource pool. Total usage: 0; quota limit: 10; headroom:10 from (pid=7189) make_reservation /opt/stack/neutron/neutron/db/quota/driver.py:199
  2016-07-14 07:38:57.353 ERROR neutron.api.v2.resource [req-f65cd995-dab1-4b43-96a0-dcbe5b93ffff admin ce1d087209c64df4b7e8007dc35def22] create failed
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource Traceback (most recent call last):
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/resource.py", line 83, in resource
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     result = method(request=request, **args)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 410, in create
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     return self._create(request, body, **kwargs)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 146, in wrapper
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     ectxt.value = e.inner_exc
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 204, in __exit__
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 136, in wrapper
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     return f(*args, **kwargs)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 521, in _create
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     obj = do_create(body)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 503, in do_create
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     request.context, reservation.reservation_id)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 204, in __exit__
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     six.reraise(self.type_, self.value, self.tb)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 496, in do_create
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     return obj_creator(request.context, **kwargs)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron-lbaas/neutron_lbaas/services/loadbalancer/plugin.py", line 743, in create_pool
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     constants.PENDING_UPDATE)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron-lbaas/neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py", line 164, in test_and_set_status
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     self.assert_modification_allowed(db_lb)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource   File "/opt/stack/neutron-lbaas/neutron_lbaas/db/loadbalancer/loadbalancer_dbv2.py", line 151, in assert_modification_allowed
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource     raise loadbalancerv2.StateInvalid(id=id, state=status)
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource StateInvalid: Invalid state PENDING_UPDATE of loadbalancer resource 3ed2ff4a-4d87-46da-8e5b-265364dd6861
  2016-07-14 07:38:57.353 TRACE neutron.api.v2.resource 
  2016-07-14 07:38:57.355 INFO neutron.wsgi [req-f65cd995-dab1-4b43-96a0-dcbe5b93ffff admin ce1d087209c64df4b7e8007dc35def22] 172.17.5.148 - - [14/Jul/2016 07:38:57] "POST /v2.0/lbaas/pools.json HTTP/1.1" 500 394 0.091943

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1602974/+subscriptions


Follow ups