diff --git a/functional/tests/image/v1/test_image.py b/functional/tests/image/v1/test_image.py index e27ab24cd1..9f6ddcc5df 100644 --- a/functional/tests/image/v1/test_image.py +++ b/functional/tests/image/v1/test_image.py @@ -19,6 +19,7 @@ class ImageTests(test.TestCase): """Functional tests for image. """ NAME = uuid.uuid4().hex + OTHER_NAME = uuid.uuid4().hex HEADERS = ['Name'] FIELDS = ['name'] @@ -31,7 +32,13 @@ class ImageTests(test.TestCase): @classmethod def tearDownClass(cls): - raw_output = cls.openstack('image delete ' + cls.NAME) + # Rename test + opts = cls.get_show_opts(cls.FIELDS) + raw_output = cls.openstack( + 'image set --name ' + cls.OTHER_NAME + ' ' + cls.NAME + opts) + cls.assertOutput(cls.OTHER_NAME + "\n", raw_output) + # Delete test + raw_output = cls.openstack('image delete ' + cls.OTHER_NAME) cls.assertOutput('', raw_output) def test_image_list(self): @@ -43,3 +50,17 @@ class ImageTests(test.TestCase): opts = self.get_show_opts(self.FIELDS) raw_output = self.openstack('image show ' + self.NAME + opts) self.assertEqual(self.NAME + "\n", raw_output) + + def test_image_set(self): + opts = self.get_show_opts([ + "disk_format", "is_public", "min_disk", "min_ram", "name"]) + raw_output = self.openstack('image set --min-disk 4 --min-ram 5 ' + + '--disk-format qcow2 --public ' + + self.NAME + opts) + self.assertEqual("qcow2\nTrue\n4\n5\n" + self.NAME + '\n', raw_output) + + def test_image_metadata(self): + opts = self.get_show_opts(["name", "properties"]) + raw_output = self.openstack( + 'image set --property a=b --property c=d ' + self.NAME + opts) + self.assertEqual(self.NAME + "\na='b', c='d'\n", raw_output) diff --git a/openstackclient/image/v1/image.py b/openstackclient/image/v1/image.py index d4d45fa287..85a9e07683 100644 --- a/openstackclient/image/v1/image.py +++ b/openstackclient/image/v1/image.py @@ -275,6 +275,7 @@ class CreateImage(show.ShowOne): info = {} info.update(image._info) + info['properties'] = utils.format_dict(info.get('properties', {})) return zip(*sorted(six.iteritems(info))) @@ -608,6 +609,7 @@ class SetImage(show.ShowOne): info = {} info.update(image._info) + info['properties'] = utils.format_dict(info.get('properties', {})) return zip(*sorted(six.iteritems(info))) @@ -636,4 +638,5 @@ class ShowImage(show.ShowOne): info = {} info.update(image._info) + info['properties'] = utils.format_dict(info.get('properties', {})) return zip(*sorted(six.iteritems(info))) diff --git a/openstackclient/tests/image/v1/fakes.py b/openstackclient/tests/image/v1/fakes.py index 972e641589..95a8a39ceb 100644 --- a/openstackclient/tests/image/v1/fakes.py +++ b/openstackclient/tests/image/v1/fakes.py @@ -30,7 +30,7 @@ image_properties = { 'Beta': 'b', 'Gamma': 'g', } -image_properties_str = "{'Alpha': 'a', 'Beta': 'b', 'Gamma': 'g'}" +image_properties_str = "Alpha='a', Beta='b', Gamma='g'" image_data = 'line 1\nline 2\n' IMAGE = { @@ -47,7 +47,9 @@ IMAGE = { } IMAGE_columns = tuple(sorted(IMAGE)) -IMAGE_data = tuple((IMAGE[x] for x in sorted(IMAGE))) +IMAGE_output = dict(IMAGE) +IMAGE_output['properties'] = image_properties_str +IMAGE_data = tuple((IMAGE_output[x] for x in sorted(IMAGE_output))) class FakeImagev1Client(object):