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
This commit is contained in:
		
				
					committed by
					
						
						Steve Martinelli
					
				
			
			
				
	
			
			
			
						parent
						
							3cba09e767
						
					
				
				
					commit
					bca8d57eb3
				
			@@ -209,6 +209,9 @@ List available images
 | 
			
		||||
        [--sort <key>[:<direction>]]
 | 
			
		||||
        [--limit <num-images>]
 | 
			
		||||
        [--marker <image>]
 | 
			
		||||
        [--name <name>]
 | 
			
		||||
        [--status <status>]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. option:: --public
 | 
			
		||||
 | 
			
		||||
@@ -248,6 +251,15 @@ List available images
 | 
			
		||||
    The last image of the previous page. Display list of images
 | 
			
		||||
    after marker. Display all images if not specified. (name or ID)
 | 
			
		||||
 | 
			
		||||
.. option:: --name <name>
 | 
			
		||||
 | 
			
		||||
   Filter images based on name
 | 
			
		||||
 | 
			
		||||
.. option:: --status <status>
 | 
			
		||||
 | 
			
		||||
   Filter images based on status
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    *Image version 2 only*
 | 
			
		||||
 | 
			
		||||
image remove project
 | 
			
		||||
 
 | 
			
		||||
@@ -452,6 +452,18 @@ class ListImage(command.Lister):
 | 
			
		||||
            action=parseractions.KeyValueAction,
 | 
			
		||||
            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',
 | 
			
		||||
@@ -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',
 | 
			
		||||
 
 | 
			
		||||
@@ -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"""
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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):
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								releasenotes/notes/bug-1698742-66d9d4e6c7ad274a.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								releasenotes/notes/bug-1698742-66d9d4e6c7ad274a.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
features:
 | 
			
		||||
  - |
 | 
			
		||||
    Add ``--name`` and ``--status`` options to ``image list`` command
 | 
			
		||||
    to filter images based on name and status respectively.
 | 
			
		||||
    [Bug `1698742 <https://bugs.launchpad.net/bugs/1698742>`_]
 | 
			
		||||
		Reference in New Issue
	
	Block a user