Fix dict.keys() compatibility for python 3

In Python 2, dict.keys() will return a list.
But in Python 3, it will return an iterator.
So we need to fix all the places that assuming
dict.keys() is a list.

Change-Id: I8d1cc536377b3e5c644cfaa0892e40d0bd7c11b1
Closes-Bug: #1556350
This commit is contained in:
Tang Chen
2016-03-12 10:58:28 +08:00
parent d8b22fca34
commit 951f166210
4 changed files with 4 additions and 4 deletions

View File

@@ -56,4 +56,4 @@ class CommandManager(cliff.commandmanager.CommandManager):
) )
group_list.append(cmd_name) group_list.append(cmd_name)
return group_list return group_list
return self.commands.keys() return list(self.commands.keys())

View File

@@ -122,7 +122,7 @@ def from_response(response, body):
cls = _code_map.get(response.status, ClientException) cls = _code_map.get(response.status, ClientException)
if body: if body:
if hasattr(body, 'keys'): if hasattr(body, 'keys'):
error = body[body.keys()[0]] error = body[list(body.keys())[0]]
message = error.get('message') message = error.get('message')
details = error.get('details') details = error.get('details')
else: else:

View File

@@ -281,7 +281,7 @@ def get_client_class(api_name, version, version_map):
client_path = version_map[str(version)] client_path = version_map[str(version)]
except (KeyError, ValueError): except (KeyError, ValueError):
msg = "Invalid %s client version '%s'. must be one of: %s" % ( msg = "Invalid %s client version '%s'. must be one of: %s" % (
(api_name, version, ', '.join(version_map.keys()))) (api_name, version, ', '.join(list(version_map.keys()))))
raise exceptions.UnsupportedVersion(msg) raise exceptions.UnsupportedVersion(msg)
return importutils.import_class(client_path) return importutils.import_class(client_path)

View File

@@ -355,7 +355,7 @@ class OpenStackShell(app.App):
self.log.warning( self.log.warning(
"%s version %s is not in supported versions %s" "%s version %s is not in supported versions %s"
% (api, version_opt, % (api, version_opt,
', '.join(mod.API_VERSIONS.keys()))) ', '.join(list(mod.API_VERSIONS.keys()))))
# Command groups deal only with major versions # Command groups deal only with major versions
version = '.v' + version_opt.replace('.', '_').split('_')[0] version = '.v' + version_opt.replace('.', '_').split('_')[0]