diff options
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/image/v2/image.py | 16 | ||||
| -rw-r--r-- | openstackclient/tests/functional/image/v2/test_image.py | 18 | ||||
| -rw-r--r-- | openstackclient/tests/unit/image/v2/test_image.py | 28 |
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): |
