Volume detail support glance_metadata in CLI
Add supporting to allow list volumes filtering by glance_metadata. Cinder code has merged, support it in client. Change-Id: Ifc2124b88c4199700d91a89c9fe68598630877db Implements: blueprint support-volume-glance-metadata-query
This commit is contained in:
		@@ -186,6 +186,12 @@ class ShellTest(utils.TestCase):
 | 
			
		||||
        self.run_command('list --name=1234')
 | 
			
		||||
        self.assert_called('GET', '/volumes/detail?name=1234')
 | 
			
		||||
 | 
			
		||||
    def test_list_filter_image_metadata(self):
 | 
			
		||||
        self.run_command('list --image_metadata image_name=1234')
 | 
			
		||||
        url = ('/volumes/detail?%s' %
 | 
			
		||||
               parse.urlencode([('glance_metadata', {"image_name": "1234"})]))
 | 
			
		||||
        self.assert_called('GET', url)
 | 
			
		||||
 | 
			
		||||
    def test_list_all_tenants(self):
 | 
			
		||||
        self.run_command('list --all-tenants=1')
 | 
			
		||||
        self.assert_called('GET', '/volumes/detail?all_tenants=1')
 | 
			
		||||
 
 | 
			
		||||
@@ -128,9 +128,13 @@ def _translate_availability_zone_keys(collection):
 | 
			
		||||
    _translate_keys(collection, convert)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _extract_metadata(args):
 | 
			
		||||
def _extract_metadata(args, type='user_metadata'):
 | 
			
		||||
    metadata = {}
 | 
			
		||||
    for metadatum in args.metadata:
 | 
			
		||||
    if type == 'image_metadata':
 | 
			
		||||
        args_metadata = args.image_metadata
 | 
			
		||||
    else:
 | 
			
		||||
        args_metadata = args.metadata
 | 
			
		||||
    for metadatum in args_metadata:
 | 
			
		||||
        # unset doesn't require a val, so we have the if/else
 | 
			
		||||
        if '=' in metadatum:
 | 
			
		||||
            (key, value) = metadatum.split('=', 1)
 | 
			
		||||
@@ -181,7 +185,14 @@ def _extract_metadata(args):
 | 
			
		||||
           nargs='*',
 | 
			
		||||
           metavar='<key=value>',
 | 
			
		||||
           default=None,
 | 
			
		||||
           help='Filters results by a metadata key and value pair. '
 | 
			
		||||
           help='Filters results by a metadata key and value pair. Require '
 | 
			
		||||
                'volume api version >=3.4. Default=None.')
 | 
			
		||||
@utils.arg('--image_metadata',
 | 
			
		||||
           type=str,
 | 
			
		||||
           nargs='*',
 | 
			
		||||
           metavar='<key=value>',
 | 
			
		||||
           default=None,
 | 
			
		||||
           help='Filters results by a image metadata key and value pair. '
 | 
			
		||||
                'Default=None.')
 | 
			
		||||
@utils.arg('--marker',
 | 
			
		||||
           metavar='<marker>',
 | 
			
		||||
@@ -238,6 +249,8 @@ def do_list(cs, args):
 | 
			
		||||
        'bootable': args.bootable,
 | 
			
		||||
        'migration_status': args.migration_status,
 | 
			
		||||
        'metadata': _extract_metadata(args) if args.metadata else None,
 | 
			
		||||
        'glance_metadata': _extract_metadata(args, type='image_metadata')
 | 
			
		||||
        if args.image_metadata else None,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    # If unavailable/non-existent fields are specified, these fields will
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user