<div dir="ltr"><div><div><div><div>Hi,<br><br></div>I spent a few hours deploying LBaaS V2 to my devstack instance and tested it with the Tempest api test developed a couple of week ago during the Neutron code sprint. This is a list of the findings so far:<br>
<br></div>1) POST operations on loadbalancers, healthmonitors and listeners work fine<br><br></div>2) POST operations on pools don't work. The api throws a 500 with the following message: "NeutronError": "Request Failed: internal server error while processing your request.". The error can be reproduced with the following operation:<br>
<br></div>POST /lbaas/pools <br>{"pool": {"name": "miguelito", "protocol": "HTTP", "lb_algorithm": "ROUND_ROBIN", "healthmonitor_id": "98311c52-9ba5-4d1c-beb7-a8200edf3c40"}}<br>
<div><br>The Neutron server log shows the following error:<br><br>2014-07-26 21:26:03.050 25731 DEBUG routes.middleware [req-cc23dc5b-7679-407b-a02e-bde6536ecc0b ] Matched POST /lbaas/pools __call__ /usr/local/lib/python2.7/dist-packages/routes/middleware.py:100<br>
2014-07-26 21:26:03.050 25731 DEBUG routes.middleware [req-cc23dc5b-7679-407b-a02e-bde6536ecc0b ] Route path: '/lbaas/pools', defaults: {'action': u'create', 'controller': <wsgify at 139916894481360 wrapping <function resource at 0x7f40f0d158c0>>} __call__ /usr/local/lib/python2.7/dist-packages/routes/middleware.py:102<br>
2014-07-26 21:26:03.050 25731 DEBUG routes.middleware [req-cc23dc5b-7679-407b-a02e-bde6536ecc0b ] Match dict: {'action': u'create', 'controller': <wsgify at 139916894481360 wrapping <function resource at 0x7f40f0d158c0>>} __call__ /usr/local/lib/python2.7/dist-packages/routes/middleware.py:103<br>
2014-07-26 21:26:03.051 25731 DEBUG neutron.api.v2.base [req-cc23dc5b-7679-407b-a02e-bde6536ecc0b None] Request body: {u'pool': {u'lb_algorithm': u'ROUND_ROBIN', u'healthmonitor_id': u'98311c52-9ba5-4d1c-beb7-a8200edf3c40', u'protocol': u'HTTP', u'name': u'miguelito'}} prepare_request_body /opt/stack/neutron/neutron/api/v2/base.py:573<br>
2014-07-26 21:26:03.060 25731 ERROR neutron.api.v2.resource [req-cc23dc5b-7679-407b-a02e-bde6536ecc0b None] create failed<br>2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource Traceback (most recent call last):<br>
2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/resource.py", line 87, in resource<br>2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource     result = method(request=request, **args)<br>
2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 447, in create<br>2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource     obj = obj_creator(request.context, **kwargs)<br>
2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/services/loadbalancer/plugin.py", line 575, in create_pool<br>2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource     context, pool)<br>
2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/db/loadbalancer/loadbalancer_dbv2.py", line 615, in create_pool2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource     pool_db = PoolV2(**pool)<br>
2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource   File "<string>", line 4, in __init__<br>2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/state.py", line 200, in _initialize_instance<br>
2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource     return manager.original_init(*mixed[1:], **kwargs)<br>2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource   File "/usr/lib/python2.7/dist-packages/sqlalchemy/ext/declarative/base.py", line 424, in _declarative_constructor<br>
2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource     (k, cls_.__name__))<br>2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource TypeError: 'lb_method' is an invalid keyword argument for PoolV2<br>
2014-07-26 21:26:03.060 25731 TRACE neutron.api.v2.resource <br>2014-07-26 21:26:03.062 25731 INFO neutron.wsgi [req-cc23dc5b-7679-407b-a02e-bde6536ecc0b None] 72.191.21.124 - - [26/Jul/2014 21:26:03] "POST /v2.0/lbaas/pools HTTP/1.1" 500 320 0.015718<br>
<br><br></div><div>3)  GET /lbaas/loadbalancers, GET /lbaas/loadbalancers/<loadbalancerid>, PUT/lbaas/loadbalancers/<loadbalancerid> work fine<br><br></div><div>4) DELETE /lbaas/loadbalancers/<loadbalancerid> work fine if it is not preceded by an UPDATE. If the DELETE is preceded by an UPDATE, the api throws a 500 with the following message: "NeutronError": { "message": "Invalid state PENDING_UPDATE of loadbalancer resource 99d7e756-f042-4941-bab6-e77c7edc72a1", "type": "StateInvalid", "detail": "". The error can be reproduced with the following sequence of operations:<br>
<br></div><div>POST /lbaas/loadbalancers<br>{"loadbalancer": {"name": "miguelito", "vip_subnet_id": "390a0f6c-b4a6-4ad0-83be-ad41832c88c6"}}<br><br></div><div>UPDATE /lbaas/loadbalancers/<loadbalancerid><br>
{"loadbalancer": {"name": "nuevo_miguelito"}}<br><br></div><div>DELETE /lbaas/loadbalancers/<loadbalancerid><br><br></div><div>The Neutron server log file shows the following error:<br>
<br>2014-07-27 23:40:42.071 25731 DEBUG keystonemiddleware.auth_token [req-6e8401da-17eb-4dce-a15d-ded3b8a6e1cc ] Received request from user: b870371464704e14b618609d78920ba6 with project_id : f45c42127f5044e694067b2ac361d3ca and roles: _member_,anotherrole,heat_stack_owner,Member  _build_user_headers /usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token.py:732<br>
2014-07-27 23:40:42.072 25731 DEBUG routes.middleware [req-18843bc2-498a-4ee2-8a35-1b265983feec ] Matched DELETE /lbaas/loadbalancers/99d7e756-f042-4941-bab6-e77c7edc72a1 __call__ /usr/local/lib/python2.7/dist-packages/routes/middleware.py:100<br>
2014-07-27 23:40:42.072 25731 DEBUG routes.middleware [req-18843bc2-498a-4ee2-8a35-1b265983feec ] Route path: '/lbaas/loadbalancers/:(id)', defaults: {'action': u'delete', 'controller': <wsgify at 139916894449488 wrapping <function resource at 0x7f40f0d156e0>>} __call__ /usr/local/lib/python2.7/dist-packages/routes/middleware.py:102<br>
2014-07-27 23:40:42.073 25731 DEBUG routes.middleware [req-18843bc2-498a-4ee2-8a35-1b265983feec ] Match dict: {'action': u'delete', 'controller': <wsgify at 139916894449488 wrapping <function resource at 0x7f40f0d156e0>>, 'id': u'99d7e756-f042-4941-bab6-e77c7edc72a1'} __call__ /usr/local/lib/python2.7/dist-packages/routes/middleware.py:103<br>
2014-07-27 23:40:42.082 25731 ERROR neutron.api.v2.resource [req-18843bc2-498a-4ee2-8a35-1b265983feec None] delete failed<br>2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource Traceback (most recent call last):<br>
2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/resource.py", line 87, in resource<br>2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource     result = method(request=request, **args)<br>
2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/api/v2/base.py", line 475, in delete<br>2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource     obj_deleter(request.context, id, **kwargs)<br>
2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/services/loadbalancer/plugin.py", line 478, in delete_loadbalancer<br>2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource     constants.PENDING_DELETE)<br>
2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/db/loadbalancer/loadbalancer_dbv2.py", line 422, in test_and_set_status<br>2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource     self.assert_modification_allowed(model_db)<br>
2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource   File "/opt/stack/neutron/neutron/db/loadbalancer/loadbalancer_dbv2.py", line 417, in assert_modification_allowed<br>2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource     raise loadbalancerv2.StateInvalid(id=id, state=status)<br>
2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource StateInvalid: Invalid state PENDING_UPDATE of loadbalancer resource 99d7e756-f042-4941-bab6-e77c7edc72a1<br>2014-07-27 23:40:42.082 25731 TRACE neutron.api.v2.resource<br>
2014-07-27 23:40:42.084 25731 INFO neutron.wsgi [req-18843bc2-498a-4ee2-8a35-1b265983feec None] 72.191.21.124 - - [27/Jul/2014 23:40:42] "DELETE /v2.0/lbaas/loadbalancers/99d7e756-f042-4941-bab6-e77c7edc72a1 HTTP/1.1" 500 394 0.015702<br>
<br></div><div>Over the next few days I will report api testing results for healthmonitors and listeners. I will also test pools and memebers as soon as the problems with pools POST reported above is fixed<br><br></div><div>
Cheers<br><br></div><div>Miguel<br></div><div><br><div><div><div><br><br></div></div></div></div></div>