summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authornidhimittalhada <nidhimittal19@gmail.com>2017-06-19 11:37:12 +0530
committerSteve Martinelli <s.martinelli@gmail.com>2017-07-12 22:50:17 +0000
commitbca8d57eb3963beb74baa5d75e61954c610369d0 (patch)
treec6ac58cd564c73095484562780403c41af7a9b2a /openstackclient
parent3cba09e767c6af3f715828966f0d0fa21edc00a8 (diff)
downloadpython-openstackclient-bca8d57eb3963beb74baa5d75e61954c610369d0.tar.gz
image-list should support filters 'name','status'
nova api support parameters like 'name', 'server', 'status', etc in image-list(). So openstackclient should support this too. DocImpact Closes-Bug: #1698742 Change-Id: Ice66b409f989e6785aa3b2d42f2fdbf6e23fa0aa
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):