image-create api returns 500 error if propery name exceeds 255 characters

Bug #1465510 reported by Abhijeet Malawade
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Glance
In Progress
Medium
Rajesh Tailor

Bug Description

If you pass property name with more than 255 characters to the image-create/image-update api, then it returns 500 error to the user.

$glance image-create --disk-format ami --container-format ami --file data.txt --property <more than 255 characters>=value
HTTPInternalServerError (HTTP 500)

glance-api error log:

2015-06-15 23:43:43.400 ERROR glance.registry.client.v1.client [req-60529339-e52e-4d2d-8f3b-5f4b
cd48d6f5 bc22d530424c45ec9bb823d290f28ff5 a7e24449d3394fefbf029d3ce7a08562] Registry client requ
est POST /images raised ServerError
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client Traceback (most recent call last)
:
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client File /opt/stack/glance/glance/
registry/client/v1/client.py", line 122, in do_request
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client **kwargs)
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client File "/opt/stack/glance/glance/
common/client.py", line 71, in wrapped
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client return func(self, *args, **kw
args)
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client File "/opt/stack/glance/glance/
common/client.py", line 377, in do_request
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client headers=copy.deepcopy(headers
))
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client File "/opt/stack/glance/glance/
common/client.py", line 88, in wrapped
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client return func(self, method, url
, body, headers)
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client File "/opt/stack/glance/glance/
common/client.py", line 534, in _do_request
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client raise exception.ServerError()
2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client ServerError: The request returned
 500 Internal Server Error.

2015-06-15 23:43:43.400 TRACE glance.registry.client.v1.client
2015-06-15 23:43:43.622 INFO eventlet.wsgi.server [req-60529339-e52e-4d2d-8f3b-5f4bcd48d6f5 bc22
d530424c45ec9bb823d290f28ff5 a7e24449d3394fefbf029d3ce7a08562] Traceback (most recent call last)
:
  File "/usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py", line 454, in handle_one_respon
se
    result = self.application(self.environ, start_response)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/opt/stack/glance/glance/common/wsgi.py", line 582, in __call__
    response = req.get_response(self.application)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
    application, catch_exc_info=False)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/osprofiler/web.py", line 99, in __call__
    return request.get_response(self.application)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
    application, catch_exc_info=False)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 644, in __call__
    return self._call_app(env, start_response)
  File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 560, in _call_app
    return self._app(env, _fake_start_response)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/opt/stack/glance/glance/common/wsgi.py", line 582, in __call__
    response = req.get_response(self.application)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
    application, catch_exc_info=False)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/opt/stack/glance/glance/common/wsgi.py", line 582, in __call__
    response = req.get_response(self.application)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
    application, catch_exc_info=False)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/opt/stack/glance/glance/common/wsgi.py", line 582, in __call__
    response = req.get_response(self.application)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
    application, catch_exc_info=False)
  File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
    app_iter = application(self.environ, start_response)
  File "/usr/lib/python2.7/dist-packages/paste/urlmap.py", line 206, in __call__
    return app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
    return resp(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 136, in __call__
    response = self.app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
    return resp(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
    resp = self.call_func(req, *args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
    return self.func(req, *args, **kwargs)
  File "/opt/stack/glance/glance/common/wsgi.py", line 873, in __call__
    request, **action_args)
  File "/opt/stack/glance/glance/common/wsgi.py", line 897, in dispatch
    return method(*args, **kwargs)
  File "/opt/stack/glance/glance/common/utils.py", line 508, in wrapped
    return func(self, req, *args, **kwargs)
  File "/opt/stack/glance/glance/api/v1/images.py", line 868, in create
    image_meta = self._reserve(req, image_meta)
  File "/opt/stack/glance/glance/api/v1/images.py", line 554, in _reserve
    image_meta = registry.add_image_metadata(req.context, image_meta)
  File "/opt/stack/glance/glance/registry/client/v1/api.py", line 166, in add_image_metadata
    return c.add_image(image_meta)
  File "/opt/stack/glance/glance/registry/client/v1/client.py", line 178, in add_image
    res = self.do_request("POST", "/images", body=body, headers=headers)
  File "/opt/stack/glance/glance/registry/client/v1/client.py", line 137, in do_request
    'exc_name': exc_name})
  File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 85, in __exit__
    six.reraise(self.type_, self.value, self.tb)
  File "/opt/stack/glance/glance/registry/client/v1/client.py", line 122, in do_request
    **kwargs)
  File "/opt/stack/glance/glance/common/client.py", line 71, in wrapped
    return func(self, *args, **kwargs)
  File "/opt/stack/glance/glance/common/client.py", line 377, in do_request
    headers=copy.deepcopy(headers))
  File "/opt/stack/glance/glance/common/client.py", line 88, in wrapped
    return func(self, method, url, body, headers)
  File "/opt/stack/glance/glance/common/client.py", line 534, in _do_request
    raise exception.ServerError()
ServerError: The request returned 500 Internal Server Error.

2015-06-15 23:43:51.933 INFO eventlet.wsgi.server [req-60529339-e52e-4d2d-8f3b-5f4bcd48d6f5 bc22d530424c45ec9bb823d290f28ff5 a7e24449d3394fefbf029d3ce7a08562] 10.69.4.179 - - [15/Jun/2015 23:43:51] "POST /v1/images HTTP/1.1" 500 139 9.597818

description: updated
Changed in glance:
assignee: nobody → Abhijeet Malawade (abhijeet-malawade)
Revision history for this message
Kamil Rykowski (kamil-rykowski) wrote :

Both APIs - v1 and v2 - are affected.

Changed in glance:
importance: Undecided → Medium
vaibhav (vaibhav-j10)
Changed in glance:
assignee: Abhijeet Malawade (abhijeet-malawade) → vaibhav (vaibhav-j10)
Revision history for this message
Rajesh Tailor (rajesh-tailor) wrote :

Hi Vaibhav,

I have already submitted patch to address this issue [1].
[1] https://review.openstack.org/#/c/203948/

Changed in glance:
assignee: vaibhav (vaibhav-j10) → Rajesh Tailor (rajesh-tailor)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on glance (master)

Change abandoned by Glance Bot (<email address hidden>) on branch: master
Review: https://review.openstack.org/203948

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.