summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/image/v2/image.py16
-rw-r--r--openstackclient/tests/functional/image/v2/test_image.py18
-rw-r--r--openstackclient/tests/unit/image/v2/test_image.py28
3 files changed, 62 insertions, 0 deletions
diff --git a/openstackclient/image/v2/image.py b/openstackclient/image/v2/image.py
index 2b171410..c2c5c594 100644
--- a/openstackclient/image/v2/image.py
+++ b/openstackclient/image/v2/image.py
@@ -453,6 +453,18 @@ class ListImage(command.Lister):
help=_('Filter output based on property'),
)
parser.add_argument(
+ '--name',
+ metavar='<name>',
+ default=None,
+ help=_("Filter images based on name.")
+ )
+ parser.add_argument(
+ '--status',
+ metavar='<status>',
+ default=None,
+ help=_("Filter images based on status.")
+ )
+ parser.add_argument(
'--long',
action='store_true',
default=False,
@@ -505,6 +517,10 @@ class ListImage(command.Lister):
if parsed_args.marker:
kwargs['marker'] = utils.find_resource(image_client.images,
parsed_args.marker).id
+ if parsed_args.name:
+ kwargs['name'] = parsed_args.name
+ if parsed_args.status:
+ kwargs['status'] = parsed_args.status
if parsed_args.long:
columns = (
'ID',
diff --git a/openstackclient/tests/functional/image/v2/test_image.py b/openstackclient/tests/functional/image/v2/test_image.py
index 8fadd200..a93fa8cb 100644
--- a/openstackclient/tests/functional/image/v2/test_image.py
+++ b/openstackclient/tests/functional/image/v2/test_image.py
@@ -51,6 +51,24 @@ class ImageTests(base.TestCase):
[img['Name'] for img in json_output]
)
+ def test_image_list_with_name_filter(self):
+ json_output = json.loads(self.openstack(
+ 'image list --name ' + self.NAME + ' -f json'
+ ))
+ self.assertIn(
+ self.NAME,
+ [img['Name'] for img in json_output]
+ )
+
+ def test_image_list_with_status_filter(self):
+ json_output = json.loads(self.openstack(
+ 'image list ' + ' --status active -f json'
+ ))
+ self.assertIn(
+ 'active',
+ [img['Status'] for img in json_output]
+ )
+
def test_image_attributes(self):
"""Test set, unset, show on attributes, tags and properties"""
diff --git a/openstackclient/tests/unit/image/v2/test_image.py b/openstackclient/tests/unit/image/v2/test_image.py
index 65764e98..484a2bc6 100644
--- a/openstackclient/tests/unit/image/v2/test_image.py
+++ b/openstackclient/tests/unit/image/v2/test_image.py
@@ -750,6 +750,34 @@ class TestImageList(TestImage):
marker=image_fakes.image_id,
)
+ def test_image_list_name_option(self):
+ arglist = [
+ '--name', 'abc',
+ ]
+ verifylist = [
+ ('name', 'abc'),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ self.api_mock.image_list.assert_called_with(
+ name='abc', marker=self._image.id
+ )
+
+ def test_image_list_status_option(self):
+ arglist = [
+ '--status', 'active',
+ ]
+ verifylist = [
+ ('status', 'active'),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ columns, data = self.cmd.take_action(parsed_args)
+ self.api_mock.image_list.assert_called_with(
+ status='active', marker=self._image.id
+ )
+
class TestRemoveProjectImage(TestImage):