Fixes passing of None values in metadata by turning them into strings. Also fixes the passing of the deleted column by converting it to and from a bool. The test for passing metadata was updated to include these values.

This commit is contained in:
Vishvananda Ishaya
2011-03-08 23:42:01 +00:00
committed by Tarmac
2 changed files with 10 additions and 2 deletions

View File

@@ -32,8 +32,12 @@ def image_meta_to_http_headers(image_meta):
for k, v in image_meta.items():
if k == 'properties':
for pk, pv in v.items():
if pv is None:
pv = ''
headers["x-image-meta-property-%s"
% pk.lower()] = unicode(pv)
if v is None:
v = ''
headers["x-image-meta-%s" % k.lower()] = unicode(v)
return headers
@@ -76,10 +80,10 @@ def get_image_meta_from_headers(response):
key = str(key.lower())
if key.startswith('x-image-meta-property-'):
field_name = key[len('x-image-meta-property-'):].replace('-', '_')
properties[field_name] = value
properties[field_name] = value or None
elif key.startswith('x-image-meta-'):
field_name = key[len('x-image-meta-'):].replace('-', '_')
result[field_name] = value
result[field_name] = value or None
result['properties'] = properties
if 'id' in result:
result['id'] = int(result['id'])
@@ -87,6 +91,8 @@ def get_image_meta_from_headers(response):
result['size'] = int(result['size'])
if 'is_public' in result:
result['is_public'] = (result['is_public'] == 'True')
if 'deleted' in result:
result['deleted'] = (result['deleted'] == 'True')
return result

View File

@@ -93,7 +93,9 @@ class TestMiscellaneous(unittest.TestCase):
"""
fixture = {'name': 'fake public image',
'is_public': True,
'deleted': False,
'type': 'kernel',
'name': None,
'size': 19,
'location': "file:///tmp/glance-tests/2",
'properties': {'distro': 'Ubuntu 10.04 LTS'}}