From 8f0d5c4f2cea6e5dae827b5f728c54dab4a4386b Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Mon, 13 Aug 2012 10:30:43 -0700 Subject: [PATCH] Cast is_public, protected, deleted to bool To keep a consistent view of an image, is_public, protected, and deleted need to be cast to a bool when being parsed from headers. Fix bug 1036299 Change-Id: I2730a0f2d705d26ebc0ba883e99c1caf44d70b51 --- glanceclient/v1/images.py | 5 +++++ tests/v1/test_images.py | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/glanceclient/v1/images.py b/glanceclient/v1/images.py index 7a1d84aa5..c77d280a1 100644 --- a/glanceclient/v1/images.py +++ b/glanceclient/v1/images.py @@ -57,6 +57,11 @@ def _image_meta_from_headers(self, headers): elif key.startswith('x-image-meta-'): _key = key[13:] meta[_key] = value + + for key in ['is_public', 'protected', 'deleted']: + if key in meta: + meta[key] = utils.string_to_bool(meta[key]) + return self._format_image_meta_for_user(meta) def _image_meta_to_headers(self, fields): diff --git a/tests/v1/test_images.py b/tests/v1/test_images.py index 5676e91c7..64783030b 100644 --- a/tests/v1/test_images.py +++ b/tests/v1/test_images.py @@ -39,6 +39,9 @@ 'min_ram': '512', 'min_disk': '10', 'properties': {'a': 'b', 'c': 'd'}, + 'is_public': False, + 'protected': False, + 'deleted': False, }}, ), ), @@ -141,6 +144,9 @@ 'x-image-meta-id': '1', 'x-image-meta-name': 'image-1', 'x-image-meta-property-arch': 'x86_64', + 'x-image-meta-is_public': 'false', + 'x-image-meta-protected': 'false', + 'x-image-meta-deleted': 'false', }, None), 'GET': ( @@ -160,6 +166,8 @@ 'min_ram': '512', 'min_disk': '10', 'properties': {'a': 'b', 'c': 'd'}, + 'is_public': False, + 'protected': False, }}, ), ), @@ -246,6 +254,9 @@ def test_get(self): self.assertEqual(self.api.calls, expect) self.assertEqual(image.id, '1') self.assertEqual(image.name, 'image-1') + self.assertEqual(image.is_public, False) + self.assertEqual(image.protected, False) + self.assertEqual(image.deleted, False) def test_data(self): data = ''.join([b for b in self.mgr.data('1', do_checksum=False)]) @@ -328,6 +339,9 @@ def test_create_without_data(self): self.assertEqual(image.size, 1024) self.assertEqual(image.min_ram, 512) self.assertEqual(image.min_disk, 10) + self.assertEqual(image.is_public, False) + self.assertEqual(image.protected, False) + self.assertEqual(image.deleted, False) self.assertEqual(image.properties, {'a': 'b', 'c': 'd'}) def test_create_with_data(self):