Fix v3 volume list based on image_metadata

volume list filtered on image_metadata does not work as expected.
The filtering based on image_metadata depended on non existent
utility for extracting image_metadata.
Fixed the issue by calling appropriate utility module
for extracting image_metadata. Looks like a typo.

Change-Id: I13e78277fc1afd22d044bb49b6a5ccc00904228c
Closes-bug: #1657650
This commit is contained in:
Vivek Agrawal 2017-01-19 08:20:09 -08:00
parent b2bc638f4a
commit f08ecd29ad
3 changed files with 15 additions and 1 deletions
cinderclient

@ -373,6 +373,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_filter_image_metadata(self):
self.run_command('--os-volume-api-version 3.0 '
'list --image_metadata image_name=1234')
url = ('/volumes/detail?%s' %
parse.urlencode([('glance_metadata', {"image_name": "1234"})]))
self.assert_called('GET', url)
def test_show_message(self):
self.run_command('--os-volume-api-version 3.5 message-show 1234')
self.assert_called('GET', '/messages/1234')

@ -93,3 +93,10 @@ class VolumesTest(utils.TestCase):
expected = ("/snapshots/detail?metadata=%s"
% parse.quote_plus("{'key1': 'val1'}"))
cs.assert_called('GET', expected)
def test_list_with_image_metadata(self):
cs = fakes.FakeClient(api_versions.APIVersion('3.0'))
cs.volumes.list(search_opts={'glance_metadata': {'key1': 'val1'}})
expected = ("/volumes/detail?glance_metadata=%s"
% parse.quote_plus("{'key1': 'val1'}"))
cs.assert_called('GET', expected)

@ -137,7 +137,7 @@ def do_list(cs, args):
'migration_status': args.migration_status,
'metadata': shell_utils.extract_metadata(args)
if args.metadata else None,
'glance_metadata': shell.utils.extract_metadata(args,
'glance_metadata': shell_utils.extract_metadata(args,
type='image_metadata')
if args.image_metadata else None,
}