Incorrect json input cause error instead of being invalidated properly:
Type error in dns_nameservers raise keyerror:
ERROR neutron.api.v2.resource [req-be58f6e1-db2f-4b2e-9620-afb49bdd4552 demo d1da3f8632e3413b915eda78899806d7] create failed Traceback (most recent call last): File "/opt/stack/neutron/neutron/api/v2/resource.py", line 87, in resource result = method(request=request, **args) File "/opt/stack/neutron/neutron/api/v2/base.py", line 379, in create allow_bulk=self._allow_bulk) File "/opt/stack/neutron/neutron/api/v2/base.py", line 637, in prepare_request_body attr_vals['validate'][rule]) File "/opt/stack/neutron/neutron/api/v2/attributes.py", line 275, in _validate_nameservers msg = _validate_ip_or_hostname(host) File "/opt/stack/neutron/neutron/api/v2/attributes.py", line 257, in _validate_ip_or_hostname name_err = _validate_hostname(host) File "/opt/stack/neutron/neutron/api/v2/attributes.py", line 370, in _validate_hostname trimmed = data if data[-1] != '.' else data[:-1] TRACE neutron.api.v2.resource KeyError: -1 TRACE neutron.api.v2.resource· INFO neutron.wsgi [req-be58f6e1-db2f-4b2e-9620-afb49bdd4552 demo d1da3f8632e3413b915eda78899806d7] 10.43.97.9 - - [05/Jul/2015 11:28:35] "POST //v2.0/subnets.json HTTP/1.1" 500 359 0.029233
Steps to reproduce: token=$(keystone token-get | grep ' id ' | awk '{ print $4}') curl -H "X-Auth-Token:${token}" -H 'Content-Type:application/json' -X POST http://localhost:9696//v2.0/subnets.json \ -d '{"subnet": {"dns_nameservers": [{}], "cidr": "192.168.0.1/24", "network_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "ip_version": "4"}}'; echo
Various sql errors with security-group params:
Trace: ERROR neutron.api.v2.resource [req-0f32e171-029c-465a-872e-d3533fc191c7 demo 4a2f46b3469240589af5db1ffd3e56e7] create failed TRACE neutron.api.v2.resource Traceback (most recent call last): TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/resource.py", line 87, in resource TRACE neutron.api.v2.resource result = method(request=request, **args) TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/base.py", line 448, in create TRACE neutron.api.v2.resource obj = obj_creator(request.context, **kwargs) TRACE neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/securitygroups_db.py", line 137, in create_security_group TRACE neutron.api.v2.resource context.session.add(egress_rule) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 447, in __exit__ TRACE neutron.api.v2.resource self.rollback() TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__ TRACE neutron.api.v2.resource compat.reraise(exc_type, exc_value, exc_tb) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 444, in __exit__ TRACE neutron.api.v2.resource self.commit() TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 354, in commit TRACE neutron.api.v2.resource self._prepare_impl() TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl TRACE neutron.api.v2.resource self.session.flush() TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush TRACE neutron.api.v2.resource self._flush(objects) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush TRACE neutron.api.v2.resource transaction.rollback(_capture_exception=True) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 58, in __exit__ TRACE neutron.api.v2.resource compat.reraise(exc_type, exc_value, exc_tb) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush TRACE neutron.api.v2.resource flush_context.execute() TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute TRACE neutron.api.v2.resource rec.execute(self) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute TRACE neutron.api.v2.resource uow TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj TRACE neutron.api.v2.resource table, insert) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 541, in _emit_insert_statements TRACE neutron.api.v2.resource execute(statement, multiparams) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 662, in execute TRACE neutron.api.v2.resource params) TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sq TRACE neutron.api.v2.resource compiled_sql, distilled_params TRACE neutron.api.v2.resource File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 874, in _execute_context TRACE neutron.api.v2.resource context) TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo/db/sqlalchemy/compat/handle_error.py", line 125, in _handle_dbapi_exception TRACE neutron.api.v2.resource six.reraise(type(newraise), newraise, sys.exc_info()[2]) TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo/db/sqlalchemy/compat/handle_error.py", line 102, in _handle_dbapi_exception TRACE neutron.api.v2.resource per_fn = fn(ctx) TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo/db/sqlalchemy/exc_filters.py", line 323, in handler TRACE neutron.api.v2.resource context.is_disconnect) TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/oslo/db/sqlalchemy/exc_filters.py", line 278, in _raise_for_remaining_DBAPIError TRACE neutron.api.v2.resource raise exception.DBError(error) TRACE neutron.api.v2.resource DBError: (ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '), '')' at line 1") 'INSERT INTO securitygroups (tenant_id, id, name, description) VALUES (%s, %s, %s, %s)' ('4a2f46b3469240589af5db1ffd3e56e7', '35ba859f-475d-4afb-8c36-a4d3b434aeb9', [], '')
Steps to reproduce: token=$(keystone token-get | grep ' id ' | awk '{ print $4}') curl -H "X-Auth-Token:${token}" -H 'Content-Type:application/json' -X POST http://10.43.97.9:9696//v2.0/security-groups.json -d '{"security_group": {"name": []}}'; echo
Incorrect json input cause error instead of being invalidated properly:
Type error in dns_nameservers raise keyerror:
ERROR neutron. api.v2. resource [req-be58f6e1- db2f-4b2e- 9620-afb49bdd45 52 demo d1da3f8632e3413 b915eda78899806 d7] create failed neutron/ neutron/ api/v2/ resource. py", line 87, in resource request= request, **args) neutron/ neutron/ api/v2/ base.py" , line 379, in create bulk=self. _allow_ bulk) neutron/ neutron/ api/v2/ base.py" , line 637, in prepare_ request_ body vals['validate' ][rule] ) neutron/ neutron/ api/v2/ attributes. py", line 275, in _validate_ nameservers ip_or_hostname( host) neutron/ neutron/ api/v2/ attributes. py", line 257, in _validate_ ip_or_hostname hostname( host) neutron/ neutron/ api/v2/ attributes. py", line 370, in _validate_hostname api.v2. resource KeyError: -1 api.v2. resource· db2f-4b2e- 9620-afb49bdd45 52 demo d1da3f8632e3413 b915eda78899806 d7] 10.43.97.9 - - [05/Jul/2015 11:28:35] "POST //v2.0/subnets.json HTTP/1.1" 500 359 0.029233
Traceback (most recent call last):
File "/opt/stack/
result = method(
File "/opt/stack/
allow_
File "/opt/stack/
attr_
File "/opt/stack/
msg = _validate_
File "/opt/stack/
name_err = _validate_
File "/opt/stack/
trimmed = data if data[-1] != '.' else data[:-1]
TRACE neutron.
TRACE neutron.
INFO neutron.wsgi [req-be58f6e1-
Steps to reproduce: Token:$ {token} " -H 'Content- Type:applicatio n/json' -X POST http:// localhost: 9696//v2. 0/subnets. json \ aaaa-aaaa- aaaa-aaaaaaaaaa aa", "ip_version": "4"}}'; echo
token=$(keystone token-get | grep ' id ' | awk '{ print $4}')
curl -H "X-Auth-
-d '{"subnet": {"dns_nameservers": [{}], "cidr": "192.168.0.1/24", "network_id": "aaaaaaaa-
Various sql errors with security-group params:
Trace: api.v2. resource [req-0f32e171- 029c-465a- 872e-d3533fc191 c7 demo 4a2f46b34692405 89af5db1ffd3e56 e7] create failed api.v2. resource Traceback (most recent call last): api.v2. resource File "/opt/stack/ neutron/ neutron/ api/v2/ resource. py", line 87, in resource api.v2. resource result = method( request= request, **args) api.v2. resource File "/opt/stack/ neutron/ neutron/ api/v2/ base.py" , line 448, in create api.v2. resource obj = obj_creator( request. context, **kwargs) api.v2. resource File "/opt/stack/ neutron/ neutron/ db/securitygrou ps_db.py" , line 137, in create_ security_ group api.v2. resource context. session. add(egress_ rule) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/session. py", line 447, in __exit__ api.v2. resource self.rollback() api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ util/langhelper s.py", line 58, in __exit__ api.v2. resource compat. reraise( exc_type, exc_value, exc_tb) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/session. py", line 444, in __exit__ api.v2. resource self.commit() api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/session. py", line 354, in commit api.v2. resource self._prepare_ impl() api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/session. py", line 334, in _prepare_impl api.v2. resource self.session. flush() api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/session. py", line 1818, in flush api.v2. resource self._flush( objects) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/session. py", line 1936, in _flush api.v2. resource transaction. rollback( _capture_ exception= True) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ util/langhelper s.py", line 58, in __exit__ api.v2. resource compat. reraise( exc_type, exc_value, exc_tb) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/session. py", line 1900, in _flush api.v2. resource flush_context. execute( ) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/unitofwork. py", line 372, in execute api.v2. resource rec.execute(self) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/unitofwork. py", line 525, in execute api.v2. resource uow api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/persistence .py", line 64, in save_obj api.v2. resource table, insert) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ orm/persistence .py", line 541, in _emit_insert_ statements api.v2. resource execute(statement, multiparams) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ engine/ base.py" , line 662, in execute api.v2. resource params) api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sq api.v2. resource compiled_sql, distilled_params api.v2. resource File "/usr/lib/ python2. 7/dist- packages/ sqlalchemy/ engine/ base.py" , line 874, in _execute_context api.v2. resource context) api.v2. resource File "/usr/local/ lib/python2. 7/dist- packages/ oslo/db/ sqlalchemy/ compat/ handle_ error.py" , line 125, in _handle_ dbapi_exception api.v2. resource six.reraise( type(newraise) , newraise, sys.exc_info()[2]) api.v2. resource File "/usr/local/ lib/python2. 7/dist- packages/ oslo/db/ sqlalchemy/ compat/ handle_ error.py" , line 102, in _handle_ dbapi_exception api.v2. resource per_fn = fn(ctx) api.v2. resource File "/usr/local/ lib/python2. 7/dist- packages/ oslo/db/ sqlalchemy/ exc_filters. py", line 323, in handler api.v2. resource context. is_disconnect) api.v2. resource File "/usr/local/ lib/python2. 7/dist- packages/ oslo/db/ sqlalchemy/ exc_filters. py", line 278, in _raise_ for_remaining_ DBAPIError api.v2. resource raise exception. DBError( error) api.v2. resource DBError: (ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '), '')' at line 1") 'INSERT INTO securitygroups (tenant_id, id, name, description) VALUES (%s, %s, %s, %s)' ('4a2f46b346924 0589af5db1ffd3e 56e7', '35ba859f- 475d-4afb- 8c36-a4d3b434ae b9', [], '')
ERROR neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
TRACE neutron.
Steps to reproduce: Token:$ {token} " -H 'Content- Type:applicatio n/json' -X POST http:// 10.43.97. 9:9696/ /v2.0/security- groups. json -d '{"security_group": {"name": []}}'; echo
token=$(keystone token-get | grep ' id ' | awk '{ print $4}')
curl -H "X-Auth-