Add start_version check for do_list() image_metadata option

The image_metadata options requires Cinder API v3.4, but
user can specify this option before API v3.4 then the
option will be ignored without any warning message.

We should check this option using start_version to
avoid confusion.

Change-Id: I6983494cb6653a9eaf35f4eedba87aeb70b55260
This commit is contained in:
Mitsuhiro Tanino 2017-02-07 19:31:35 -05:00
parent 9e0f7983c2
commit 4cd05c64dd
2 changed files with 8 additions and 2 deletions
cinderclient
tests/unit/v3
v3

@ -385,8 +385,13 @@ class ShellTest(utils.TestCase):
self.run_command('--os-volume-api-version 3.5 message-list --marker=1')
self.assert_called('GET', '/messages?marker=1')
def test_list_with_image_metadata_before_3_4(self):
self.assertRaises(exceptions.UnsupportedAttribute,
self.run_command,
'list --image_metadata image_name=1234')
def test_list_filter_image_metadata(self):
self.run_command('--os-volume-api-version 3.0 '
self.run_command('--os-volume-api-version 3.4 '
'list --image_metadata image_name=1234')
url = ('/volumes/detail?%s' %
parse.urlencode([('glance_metadata', {"image_name": "1234"})]))

@ -82,6 +82,7 @@ from cinderclient.v2.shell import * # flake8: noqa
nargs='*',
metavar='<key=value>',
default=None,
start_version='3.4',
help='Filters results by a image metadata key and value pair. Require '
'volume api version >=3.4. Default=None.')
@utils.arg('--marker',
@ -141,7 +142,7 @@ def do_list(cs, args):
if args.metadata else None,
'glance_metadata': shell_utils.extract_metadata(args,
type='image_metadata')
if args.image_metadata else None,
if hasattr(args, 'image_metadata') and args.image_metadata else None,
'group_id': getattr(args, 'group_id', None),
}