diff options
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/api/image_v2.py | 17 | ||||
| -rw-r--r-- | openstackclient/image/v2/image.py | 9 | ||||
| -rw-r--r-- | openstackclient/tests/unit/image/v2/test_image.py | 29 |
3 files changed, 49 insertions, 6 deletions
diff --git a/openstackclient/api/image_v2.py b/openstackclient/api/image_v2.py index c3628121..d0163189 100644 --- a/openstackclient/api/image_v2.py +++ b/openstackclient/api/image_v2.py @@ -31,6 +31,7 @@ class APIv2(image_v1.APIv1): detailed=False, public=False, private=False, + community=False, shared=False, **filter ): @@ -44,25 +45,29 @@ class APIv2(image_v1.APIv1): Return public images if True :param private: Return private images if True + :param community: + Return commuity images if True :param shared: Return shared images if True - If public, private and shared are all True or all False then all - images are returned. All arguments False is equivalent to no filter - and all images are returned. All arguments True is a filter that - includes all public, private and shared images which is the same set - as all images. + If public, private, community and shared are all True or all False + then all images are returned. All arguments False is equivalent to no + filter and all images are returned. All arguments True is a filter + that includes all public, private, community and shared images which + is the same set as all images. http://docs.openstack.org/api/openstack-image-service/2.0/content/list-images.html """ - if not public and not private and not shared: + if not public and not private and not community and not shared: # No filtering for all False filter.pop('visibility', None) elif public: filter['visibility'] = 'public' elif private: filter['visibility'] = 'private' + elif community: + filter['visibility'] = 'community' elif shared: filter['visibility'] = 'shared' diff --git a/openstackclient/image/v2/image.py b/openstackclient/image/v2/image.py index 4c7c815f..51963f7d 100644 --- a/openstackclient/image/v2/image.py +++ b/openstackclient/image/v2/image.py @@ -440,6 +440,13 @@ class ListImage(command.Lister): help=_("List only private images"), ) public_group.add_argument( + "--community", + dest="community", + action="store_true", + default=False, + help=_("List only community images"), + ) + public_group.add_argument( "--shared", dest="shared", action="store_true", @@ -516,6 +523,8 @@ class ListImage(command.Lister): kwargs['public'] = True if parsed_args.private: kwargs['private'] = True + if parsed_args.community: + kwargs['community'] = True if parsed_args.shared: kwargs['shared'] = True if parsed_args.limit: diff --git a/openstackclient/tests/unit/image/v2/test_image.py b/openstackclient/tests/unit/image/v2/test_image.py index b769d1f6..3ad45145 100644 --- a/openstackclient/tests/unit/image/v2/test_image.py +++ b/openstackclient/tests/unit/image/v2/test_image.py @@ -527,6 +527,7 @@ class TestImageList(TestImage): verifylist = [ ('public', False), ('private', False), + ('community', False), ('shared', False), ('long', False), ] @@ -550,6 +551,7 @@ class TestImageList(TestImage): verifylist = [ ('public', True), ('private', False), + ('community', False), ('shared', False), ('long', False), ] @@ -574,6 +576,7 @@ class TestImageList(TestImage): verifylist = [ ('public', False), ('private', True), + ('community', False), ('shared', False), ('long', False), ] @@ -591,6 +594,31 @@ class TestImageList(TestImage): self.assertEqual(self.columns, columns) self.assertEqual(self.datalist, tuple(data)) + def test_image_list_community_option(self): + arglist = [ + '--community', + ] + verifylist = [ + ('public', False), + ('private', False), + ('community', True), + ('shared', False), + ('long', False), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + # In base command class Lister in cliff, abstract method take_action() + # returns a tuple containing the column names and an iterable + # containing the data to be listed. + columns, data = self.cmd.take_action(parsed_args) + self.api_mock.image_list.assert_called_with( + community=True, + marker=self._image.id, + ) + + self.assertEqual(self.columns, columns) + self.assertEqual(self.datalist, tuple(data)) + def test_image_list_shared_option(self): arglist = [ '--shared', @@ -598,6 +626,7 @@ class TestImageList(TestImage): verifylist = [ ('public', False), ('private', False), + ('community', False), ('shared', True), ('long', False), ] |
