Creating qos with name that has more than 255 characters returns 500 error.

Bug #1610103 reported by Nam
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
neutron
Fix Released
Low
Nam

Bug Description

Neutron tries to store description that has more than 255 characters.
Length of description should be validated.

=== Request command ===

$ neutron qos-policy-create nam-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

=== Here is result ===

stack@hoainam:~/devstack$ neutron qos-policy-create nam-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Request Failed: internal server error while processing your request.
Neutron server returns request_ids: ['req-8fd52988-8e3e-449a-85d9-a13bee8d91b6']

=== Here is LoG ===

2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 392, in commit
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource self._prepare_impl()
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 372, in _prepare_impl
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource self.session.flush()
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2019, in flush
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource self._flush(objects)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2137, in _flush
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource transaction.rollback(_capture_exception=True)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource compat.reraise(exc_type, exc_value, exc_tb)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2101, in _flush
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource flush_context.execute()
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 373, in execute
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource rec.execute(self)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 532, in execute
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource uow
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 174, in save_obj
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource mapper, table, insert)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 767, in _emit_insert_statements
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource execute(statement, multiparams)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, in execute
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource return meth(self, multiparams, params)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource return connection._execute_clauseelement(self, multiparams, params)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource compiled_sql, distilled_params
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource context)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, in _handle_dbapi_exception
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource util.raise_from_cause(newraise, exc_info)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 202, in raise_from_cause
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource reraise(type(exception), exception, tb=exc_tb, cause=cause)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource context)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 450, in do_execute
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource cursor.execute(statement, parameters)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 167, in execute
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource result = self._query(query)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 323, in _query
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource conn.query(q)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 836, in query
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource self._affected_rows = self._read_query_result(unbuffered=unbuffered)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1020, in _read_query_result
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource result.read()
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1303, in read
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource first_packet = self.connection._read_packet()
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 982, in _read_packet
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource packet.check_error()
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 394, in check_error
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource err.raise_mysql_exception(self._data)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 120, in raise_mysql_exception
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource _check_mysql_exception(errinfo)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource File "/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 112, in _check_mysql_exception
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource raise errorclass(errno, errorvalue)
2016-08-06 14:24:12.625 TRACE neutron.api.v2.resource DBError: (pymysql.err.DataError) (1406, u"Data too long for column 'name' at row 1") [SQL: u'INSERT INTO qos_policies (project_id, id, name, description) VALUES (%(project_id)s, %(id)s, %(name)s, %(description)s)'] [parameters: {'description': u'', 'project_id': u'9918748356394e288bc079759efd0ee1', 'id': 'bbba5ba1-8446-48f4-b8c1-33318ec668c2', 'name': u'nam-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'}]

Nam (namnh)
Changed in neutron:
assignee: nobody → Nam (namnh)
summary: - Creating qos with name and discription that has more than 1024
- characters returns 500 error.
+ Creating qos with name that has more than 1024 characters returns 500
+ error.
Revision history for this message
Victor Morales (electrocucaracha) wrote :

This can be solved adding

'validate': {'type:name_not_default': attr.NAME_MAX_LEN}

after the resource definition

https://github.com/openstack/neutron/blob/master/neutron/extensions/qos.py#L54

summary: - Creating qos with name that has more than 1024 characters returns 500
+ Creating qos with name that has more than 255 characters returns 500
error.
description: updated
Changed in neutron:
importance: Undecided → Low
Revision history for this message
Nam (namnh) wrote :

@Victor Morales

Thanks for your suggestion. I will fix this bug.

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

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

Changed in neutron:
status: New → In Progress
Changed in neutron:
milestone: none → newton-rc1
Changed in neutron:
milestone: newton-rc1 → ocata-1
Changed in neutron:
assignee: Nam (namnh) → Hirofumi Ichihara (ichihara-hirofumi)
Changed in neutron:
assignee: Hirofumi Ichihara (ichihara-hirofumi) → Nam (namnh)
Changed in neutron:
milestone: ocata-1 → ocata-2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/352200
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=01c4bda9516a0370d7ffc2975a48a1d4d4ed5c2e
Submitter: Jenkins
Branch: master

commit 01c4bda9516a0370d7ffc2975a48a1d4d4ed5c2e
Author: Nam Nguyen Hoai <email address hidden>
Date: Tue Aug 9 09:20:33 2016 +0700

    Disallow specifying too long name and description for qos

    Change-Id: I5c3ed086a7b6ac98186a136a2e449d31e8a93aec
    Closes-Bug: #1610103

Changed in neutron:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 10.0.0.0b2

This issue was fixed in the openstack/neutron 10.0.0.0b2 development milestone.

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

Fix proposed to branch: stable/newton
Review: https://review.openstack.org/424557

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/newton)

Reviewed: https://review.openstack.org/424557
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=defdf9c3510bcf9e366d77e6f551699e5a27377e
Submitter: Jenkins
Branch: stable/newton

commit defdf9c3510bcf9e366d77e6f551699e5a27377e
Author: Nam Nguyen Hoai <email address hidden>
Date: Tue Aug 9 09:20:33 2016 +0700

    Disallow specifying too long name and description for qos

    Change-Id: I5c3ed086a7b6ac98186a136a2e449d31e8a93aec
    Closes-Bug: #1610103
    Closes-Bug: #1653882
    (cherry picked from commit 01c4bda9516a0370d7ffc2975a48a1d4d4ed5c2e)

tags: added: in-stable-newton
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 9.3.0

This issue was fixed in the openstack/neutron 9.3.0 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.