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.run_command('list --name=1234')
|
||||||
self.assert_called('GET', '/volumes/detail?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):
|
def test_list_all_tenants(self):
|
||||||
self.run_command('list --all-tenants=1')
|
self.run_command('list --all-tenants=1')
|
||||||
self.assert_called('GET', '/volumes/detail?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)
|
_translate_keys(collection, convert)
|
||||||
|
|
||||||
|
|
||||||
def _extract_metadata(args):
|
def _extract_metadata(args, type='user_metadata'):
|
||||||
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
|
# unset doesn't require a val, so we have the if/else
|
||||||
if '=' in metadatum:
|
if '=' in metadatum:
|
||||||
(key, value) = metadatum.split('=', 1)
|
(key, value) = metadatum.split('=', 1)
|
||||||
@@ -181,7 +185,14 @@ def _extract_metadata(args):
|
|||||||
nargs='*',
|
nargs='*',
|
||||||
metavar='<key=value>',
|
metavar='<key=value>',
|
||||||
default=None,
|
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.')
|
'Default=None.')
|
||||||
@utils.arg('--marker',
|
@utils.arg('--marker',
|
||||||
metavar='<marker>',
|
metavar='<marker>',
|
||||||
@@ -238,6 +249,8 @@ def do_list(cs, args):
|
|||||||
'bootable': args.bootable,
|
'bootable': args.bootable,
|
||||||
'migration_status': args.migration_status,
|
'migration_status': args.migration_status,
|
||||||
'metadata': _extract_metadata(args) if args.metadata else None,
|
'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
|
# If unavailable/non-existent fields are specified, these fields will
|
||||||
|
|||||||
Reference in New Issue
Block a user