Support --community in openstack image list

"--community" was added to "image create" and "image set" previously,
but was missed in "image list".

Change-Id: I959fdd7f67ae62c8326659ce52389228152ec019
Story: 2001925
Task: 14453
This commit is contained in:
Nobuto Murata 2018-04-30 14:32:08 +09:00 committed by Dean Troyer
parent e4b8c31cd3
commit 860639a548
5 changed files with 60 additions and 7 deletions

View File

@ -205,7 +205,7 @@ List available images
.. code:: bash
openstack image list
[--public | --private | --shared]
[--public | --private | --community | --shared]
[--property <key=value>]
[--name <name>]
[--status <status>]
@ -223,6 +223,12 @@ List available images
List only private images
.. option:: --community
List only community images
*Image version 2 only.*
.. option:: --shared
List only shared images

View File

@ -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'

View File

@ -439,6 +439,13 @@ class ListImage(command.Lister):
default=False,
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",
@ -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:

View File

@ -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),
]

View File

@ -0,0 +1,4 @@
---
fixes:
- Add ``--community`` option to ``image list`` command.
[Bug `2001925 <https://storyboard.openstack.org/#!/story/2001925>`_]