Reviewed:  https://review.openstack.org/398998
Committed: 
https://git.openstack.org/cgit/openstack/nova/commit/?id=9bbce28c56666de6eb430d027af4ddf5cfc686e4
Submitter: Jenkins
Branch:    master

commit 9bbce28c56666de6eb430d027af4ddf5cfc686e4
Author: bhagyashris <[email protected]>
Date:   Wed Nov 30 20:41:48 2016 +0530

    Return 400 when name is more than 200 characters
    
    APIs listed below are returning 500 error if you pass name more than
    200 characters.
    1. create resource_providers
    2. update resource_providers
    
    Added maxLength check in schema to ensure name should not be more than
    200 characters.
    
    Closes-Bug: #1642485
    Change-Id: Ia22ae86702dabe18bc577b17164a81c363da6d41


** Changed in: nova
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1642485

Title:
  create/update respource_provider APIs raises HTTP 500 Internal Server
  Error when name is greater than 200 characters

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  create/update resource_provider APIs raises HTTP 500 Internal Server Error if 
you pass name
  greater than 200 character

  Steps to reproduce:

  $ curl -g -i -X POST http://10.232.48.200/placement/resource_providers
  -H "Content-Type: application/json" -H "X-Auth-Token:
  38aac4d389d3437da8f6c0107a81ae95" -d '{"name":
  
"testcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"}'

  Output:

  HTTP/1.1 500 Internal Server Error
  Date: Thu, 17 Nov 2016 06:45:05 GMT
  Server: Apache/2.4.7 (Ubuntu)
  x-openstack-request-id: req-7408f1f0-62be-4b22-9fdc-b005b9dc74c0
  Content-Length: 128
  Connection: close
  Content-Type: application/json; charset=UTF-8

  {"computeFault": {"message": "The server has either erred or is
  incapable of performing the requested operation.", "code": 500}}

  
  Error log:

  2016-11-17 12:15:05.334 TRACE nova.api.openstack Traceback (most recent call 
last):
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/opt/stack/nova/nova/api/openstack/
  __init__.py", line 88, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return 
req.get_response(self.applicatio
  n)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packa
  ges/webob/request.py", line 1299, in send
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     application, 
catch_exc_info=False)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packa
  ges/webob/request.py", line 1263, in call_application
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     app_iter = 
application(self.environ, st
  art_response)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packa
  ges/webob/dec.py", line 130, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     resp = 
self.call_func(req, *args, **sel
  f.kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packa
  ges/webob/dec.py", line 195, in call_func
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return self.func(req, 
*args, **kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/opt/stack/nova/nova/api/openstack/
  placement/microversion.py", line 103, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     response = 
req.get_response(self.applic
  ation)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packa
  ges/webob/request.py", line 1299, in send
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     application, 
catch_exc_info=False)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packa
  ges/webob/request.py", line 1263, in call_application
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     app_iter = 
application(self.environ, st
  art_response)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/opt/stack/nova/nova/api/openstack/
  placement/handler.py", line 188, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return dispatch(environ, 
start_response
  , self._map)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/opt/stack/nova/nova/api/openstack/
  placement/handler.py", line 111, in dispatch
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return handler(environ, 
start_response)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packa
  ges/webob/dec.py", line 130, in __call__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     resp = 
self.call_func(req, *args, **sel
  f.kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packa
  ges/webob/dec.py", line 195, in call_func
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return self.func(req, 
*args, **kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/opt/stack/nova/nova/api/openstack/placement/util.py", line 133, in 
decorated_function
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return f(req)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return f(req)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/opt/stack/nova/nova/api/openstack/placement/handlers/resource_provider.py", 
line 89, in create_resource_provider
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     
resource_provider.create()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/oslo_versionedobjects/base.py", line 
226, in wrapper
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return fn(self, *args, 
**kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/opt/stack/nova/nova/objects/resource_provider.py", line 331, in create
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     db_rp = 
self._create_in_db(self._context, updates)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", 
line 824, in wrapper
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return fn(*args, 
**kwargs)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/lib/python2.7/contextlib.py", line 24, in __exit__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self.gen.next()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", 
line 875, in _transaction_scope
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     yield resource
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/lib/python2.7/contextlib.py", line 24, in __exit__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self.gen.next()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", 
line 522, in _session
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     
self._end_session_transaction(self.session)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", 
line 543, in _end_session_transaction
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     session.commit()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 801, 
in commit
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self.transaction.commit()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 392, 
in commit
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self._prepare_impl()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 372, 
in _prepare_impl
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self.session.flush()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2019, 
in flush
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self._flush(objects)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2137, 
in _flush
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     
transaction.rollback(_capture_exception=True)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 
60, in __exit__
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     compat.reraise(exc_type, 
exc_value, exc_tb)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/session.py", line 2101, 
in _flush
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     flush_context.execute()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 
373, in execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     rec.execute(self)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/unitofwork.py", line 
532, in execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     uow
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 
174, in save_obj
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     mapper, table, insert)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/persistence.py", line 
800, in _emit_insert_statements
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     execute(statement, 
params)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 914, 
in execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return meth(self, 
multiparams, params)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 323, 
in _execute_on_connection
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     return 
connection._execute_clauseelement(self, multiparams, params)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1010, 
in _execute_clauseelement
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     compiled_sql, 
distilled_params
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1146, 
in _execute_context
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     context)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1337, 
in _handle_dbapi_exception
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     
util.raise_from_cause(newraise, exc_info)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 202, 
in raise_from_cause
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     reraise(type(exception), 
exception, tb=exc_tb, cause=cause)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1139, 
in _execute_context
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     context)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 
450, in do_execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     
cursor.execute(statement, parameters)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 166, in 
execute
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     result = 
self._query(query)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/cursors.py", line 322, in _query
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     conn.query(q)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 835, in 
query
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     self._affected_rows = 
self._read_query_result(unbuffered=unbuffered)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1019, in 
_read_query_result
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     result.read()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 1302, in 
read
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     first_packet = 
self.connection._read_packet()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 981, in 
_read_packet
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     packet.check_error()
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 393, in 
check_error
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     
err.raise_mysql_exception(self._data)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack   File 
"/usr/local/lib/python2.7/dist-packages/pymysql/err.py", line 107, in 
raise_mysql_exception
  2016-11-17 12:15:05.334 TRACE nova.api.openstack     raise errorclass(errno, 
errval)
  2016-11-17 12:15:05.334 TRACE nova.api.openstack DBError: 
(pymysql.err.DataError) (1406, u"Data too long for column 'name' at row 1") 
[SQL: u'INSERT INTO resource_providers (created_at, updated_at, uuid, name, 
generation, can_host) VALUES (%(created_at)s, %(updated_at)s, %(uuid)s, 
%(name)s, %(generation)s, %(can_host)s)'] [parameters: {'uuid': 
'5730402b-eff2-485a-906c-cbf0cb02f4ab', 'generation': 0, 'created_at': 
datetime.datetime(2016, 11, 17, 6, 45, 5, 321074), 'updated_at': None, 
'can_host': 0, 'name': 
u'testcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 
ccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccctestcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc'}]

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to