From cddc37dcab80eec3eb3b9a2849c09c1ae3892381 Mon Sep 17 00:00:00 2001 From: Maithem Date: Fri, 9 May 2014 17:25:05 -0700 Subject: [PATCH] Set purge-props header correctly in image update Currently when an image is updated, the purge property header is only set to true in some cases, but when required it isn't set to false Change-Id: I885a82643d2620f393f21c36b3ad95cb7ed43f2c Closes-Bug: 1318079 --- glanceclient/v1/images.py | 11 +++++------ tests/v1/test_images.py | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/glanceclient/v1/images.py b/glanceclient/v1/images.py index ca4ff1e9..d2af5954 100644 --- a/glanceclient/v1/images.py +++ b/glanceclient/v1/images.py @@ -305,13 +305,12 @@ class ImageManager(base.ManagerWithFind): kwargs.setdefault('size', image_size) hdrs = {} - try: - purge_props = 'true' if kwargs.pop('purge_props') else 'false' - except KeyError: - pass - else: - hdrs['x-glance-registry-purge-props'] = purge_props + purge_props = 'false' + purge_props_bool = kwargs.pop('purge_props', None) + if purge_props_bool: + purge_props = 'true' + hdrs['x-glance-registry-purge-props'] = purge_props fields = {} for field in kwargs: if field in UPDATE_PARAMS: diff --git a/tests/v1/test_images.py b/tests/v1/test_images.py index 6c0fde15..777bbec6 100644 --- a/tests/v1/test_images.py +++ b/tests/v1/test_images.py @@ -703,6 +703,7 @@ class ImageManagerTest(testtools.TestCase): 'x-image-meta-property-a': 'b', 'x-image-meta-property-c': 'd', 'x-image-meta-deleted': 'False', + 'x-glance-registry-purge-props': 'false', } expect = [('PUT', '/v1/images/1', expect_hdrs, None)] self.assertEqual(expect, self.api.calls) @@ -715,7 +716,8 @@ class ImageManagerTest(testtools.TestCase): def test_update_with_data(self): image_data = six.StringIO('XXX') self.mgr.update('1', data=image_data) - expect_headers = {'x-image-meta-size': '3'} + expect_headers = {'x-image-meta-size': '3', + 'x-glance-registry-purge-props': 'false'} expect = [('PUT', '/v1/images/1', expect_headers, image_data)] self.assertEqual(expect, self.api.calls) @@ -725,6 +727,12 @@ class ImageManagerTest(testtools.TestCase): expect = [('PUT', '/v1/images/1', expect_headers, None)] self.assertEqual(expect, self.api.calls) + def test_update_with_purge_props_false(self): + self.mgr.update('1', purge_props=False) + expect_headers = {'x-glance-registry-purge-props': 'false'} + expect = [('PUT', '/v1/images/1', expect_headers, None)] + self.assertEqual(expect, self.api.calls) + def test_update_req_id(self): fields = { 'purge_props': True, @@ -817,6 +825,7 @@ class ImageManagerTest(testtools.TestCase): 'x-image-meta-name': 'bar', 'x-image-meta-container_format': 'bare', 'x-image-meta-disk_format': 'qcow2', + 'x-glance-registry-purge-props': 'false', } expect = [('PUT', '/v1/images/v2_created_img', expect_hdrs, None)] self.assertEqual(expect, self.api.calls) @@ -849,7 +858,9 @@ class ImageTest(testtools.TestCase): expect = [ ('HEAD', '/v1/images/1', {}, None), ('HEAD', '/v1/images/1', {}, None), - ('PUT', '/v1/images/1', {'x-image-meta-name': 'image-5'}, None), + ('PUT', '/v1/images/1', + {'x-image-meta-name': 'image-5', + 'x-glance-registry-purge-props': 'false'}, None), ] self.assertEqual(expect, self.api.calls)