Skip to content

Commit

Permalink
Specified Content-Length in update request header
Browse files Browse the repository at this point in the history
While uploading a Volume to an image, the HTTPConnection's request method does
not set the Content-Length header (since the volume file is a sym link i.e. the
os.fstat call returns a st_size of 0). This causes Volume uploads to Glance
fail (since the image data is ignored as no content-length is specified).
Therefore setting the Content-Length from update( ) method if the image data is
provided.

Fixes LP: #1045824

Change-Id: If259fc5a338e3e90214a52b773132ed901691c0f
  • Loading branch information
Unmesh Gurjar committed Sep 6, 2012
1 parent 7402590 commit 30d8e1b
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions glanceclient/v1/images.py
Expand Up @@ -218,16 +218,16 @@ def update(self, image, **kwargs):
TODO(bcwaldon): document accepted params
"""
hdrs = {}
image_data = kwargs.pop('data', None)
if image_data is not None:
image_size = self._get_file_size(image_data)
if image_size != 0:
kwargs.setdefault('size', image_size)
hdrs['Content-Length'] = image_size
else:
image_data = None

hdrs = {}

try:
purge_props = 'true' if kwargs.pop('purge_props') else 'false'
except KeyError:
Expand Down
2 changes: 1 addition & 1 deletion tests/v1/test_images.py
Expand Up @@ -390,7 +390,7 @@ def test_update(self):
def test_update_with_data(self):
image_data = StringIO.StringIO('XXX')
self.mgr.update('1', data=image_data)
expect_headers = {'x-image-meta-size': '3'}
expect_headers = {'x-image-meta-size': '3', 'Content-Length': 3}
expect = [('PUT', '/v1/images/1', expect_headers, image_data)]
self.assertEqual(self.api.calls, expect)

Expand Down

0 comments on commit 30d8e1b

Please sign in to comment.