If using upload() from V2 Glance API to write data to an RBD image the following problem occurs:
A length of zero can be used which means an image of size 0 is created thus resulting in the following exception:
2013-08-19 12:09:36.044 31475 ERROR glance.api.v2.image_data [e9a89f79-d9ed-40b7-a1a0-157f6eb2b3d1 5cdd3419b10e4459a12593282f483331 9f93fd6845f04c6c9b51dcc9e24008a1] Failed to upload image data due to internal error
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data Traceback (most recent call last):
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/opt/stack/glance/glance/api/v2/image_data.py", line 53, in upload
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data image.set_data(data, size)
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/opt/stack/glance/glance/domain/proxy.py", line 126, in set_data
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data self.base.set_data(data, size)
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/opt/stack/glance/glance/notifier/__init__.py", line 201, in set_data
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data self.image.set_data(data, size)
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/opt/stack/glance/glance/domain/proxy.py", line 126, in set_data
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data self.base.set_data(data, size)
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/opt/stack/glance/glance/store/__init__.py", line 647, in set_data
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data self.image.image_id, utils.CooperativeReader(data), size)
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/opt/stack/glance/glance/store/__init__.py", line 363, in add_to_backend
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data return store_add_to_backend(image_id, data, size, store)
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/opt/stack/glance/glance/store/__init__.py", line 341, in store_add_to_backend
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data (location, size, checksum, metadata) = store.add(image_id, data, size)
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/opt/stack/glance/glance/store/rbd.py", line 287, in add
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data offset += image.write(chunk, offset)
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data File "/usr/lib/python2.7/dist-packages/rbd.py", line 648, in write
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data raise make_ex(ret, "error writing to %s" % (self.name,))
2013-08-19 12:09:36.044 31475 TRACE glance.api.v2.image_data InvalidArgument: error writing to 4c3712f8-e6ef-4b39-aaf0-975f046252f4
Fix proposed to branch: master /review. openstack. org/42640
Review: https:/