diff --git a/cinderclient/tests/unit/v3/test_shell.py b/cinderclient/tests/unit/v3/test_shell.py index bafc847fd..152cc56b6 100644 --- a/cinderclient/tests/unit/v3/test_shell.py +++ b/cinderclient/tests/unit/v3/test_shell.py @@ -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"})])) diff --git a/cinderclient/v3/shell.py b/cinderclient/v3/shell.py index 2c8852a91..debdd4f0b 100644 --- a/cinderclient/v3/shell.py +++ b/cinderclient/v3/shell.py @@ -82,6 +82,7 @@ from cinderclient.v2.shell import * # flake8: noqa nargs='*', metavar='', 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), }