python3: Compatibility for iteritems differences

In python3 dict.iteritems(), dict.iterkeys(), and
dict.itervalues() are no longer supported. So use
six.iteritems() where it is appropriate.

Change-Id: I8b07dc2a89d790ec275d45f859e1644e9b00c837
Signed-off-by: Chuck Short <chuck.short@canonical.com>
This commit is contained in:
Chuck Short 2013-06-24 08:32:05 -05:00
parent 05ca996e67
commit a25d4fe59a
7 changed files with 19 additions and 6 deletions

View File

@ -17,6 +17,8 @@
import logging import logging
import pkg_resources import pkg_resources
import six
from novaclient import exceptions from novaclient import exceptions
from novaclient import utils from novaclient import utils
@ -49,7 +51,7 @@ def load_auth_system_opts(parser):
This function will try to populate the parser with options from the This function will try to populate the parser with options from the
available plugins. available plugins.
""" """
for name, auth_plugin in _discovered_plugins.iteritems(): for name, auth_plugin in six.iteritems(_discovered_plugins):
add_opts_fn = getattr(auth_plugin, "add_opts", None) add_opts_fn = getattr(auth_plugin, "add_opts", None)
if add_opts_fn: if add_opts_fn:
group = parser.add_argument_group("Auth-system '%s' options" % group = parser.add_argument_group("Auth-system '%s' options" %

View File

@ -23,6 +23,9 @@ import abc
import contextlib import contextlib
import hashlib import hashlib
import os import os
import six
from novaclient import exceptions from novaclient import exceptions
from novaclient import utils from novaclient import utils
@ -315,7 +318,7 @@ class Resource(object):
return None return None
def _add_details(self, info): def _add_details(self, info):
for (k, v) in info.iteritems(): for (k, v) in six.iteritems(info):
try: try:
setattr(self, k, v) setattr(self, k, v)
self._info[k] = v self._info[k] = v

View File

@ -6,6 +6,7 @@ import textwrap
import uuid import uuid
import prettytable import prettytable
import six
from novaclient import exceptions from novaclient import exceptions
from novaclient.openstack.common import strutils from novaclient.openstack.common import strutils
@ -172,7 +173,7 @@ def print_list(objs, fields, formatters={}, sortby_index=None):
def print_dict(d, dict_property="Property", dict_value="Value", wrap=0): def print_dict(d, dict_property="Property", dict_value="Value", wrap=0):
pt = prettytable.PrettyTable([dict_property, dict_value], caching=False) pt = prettytable.PrettyTable([dict_property, dict_value], caching=False)
pt.align = 'l' pt.align = 'l'
for k, v in d.iteritems(): for k, v in six.iteritems(d):
# convert dict to str to check length # convert dict to str to check length
if isinstance(v, dict): if isinstance(v, dict):
v = str(v) v = str(v)

View File

@ -19,6 +19,8 @@ Security group interface (1.1 extension).
import urllib import urllib
import six
from novaclient import base from novaclient import base
@ -87,7 +89,7 @@ class SecurityGroupManager(base.ManagerWithFind):
""" """
search_opts = search_opts or {} search_opts = search_opts or {}
qparams = dict((k, v) for (k, v) in search_opts.iteritems() if v) qparams = dict((k, v) for (k, v) in six.iteritems(search_opts) if v)
query_string = '?%s' % urllib.urlencode(qparams) if qparams else '' query_string = '?%s' % urllib.urlencode(qparams) if qparams else ''

View File

@ -21,6 +21,8 @@ Server interface.
import urllib import urllib
import six
from novaclient import base from novaclient import base
from novaclient import crypto from novaclient import crypto
from novaclient.v1_1 import base as local_base from novaclient.v1_1 import base as local_base
@ -365,7 +367,7 @@ class ServerManager(local_base.BootingManagerWithFind):
qparams = {} qparams = {}
for opt, val in search_opts.iteritems(): for opt, val in six.iteritems(search_opts):
if val: if val:
qparams[opt] = val qparams[opt] = val

View File

@ -19,6 +19,8 @@ Volume interface (1.1 extension).
import urllib import urllib
import six
from novaclient import base from novaclient import base
@ -86,7 +88,7 @@ class VolumeManager(base.ManagerWithFind):
""" """
search_opts = search_opts or {} search_opts = search_opts or {}
qparams = dict((k, v) for (k, v) in search_opts.iteritems() if v) qparams = dict((k, v) for (k, v) in six.iteritems(search_opts) if v)
query_string = '?%s' % urllib.urlencode(qparams) if qparams else '' query_string = '?%s' % urllib.urlencode(qparams) if qparams else ''

View File

@ -5,3 +5,4 @@ iso8601>=0.1.4
prettytable>=0.6,<0.8 prettytable>=0.6,<0.8
requests>=0.8 requests>=0.8
simplejson simplejson
six