diff --git a/contrib/barbican/barbican/tests/test_order.py b/contrib/barbican/barbican/tests/test_order.py index ab17d98a41..c025194383 100644 --- a/contrib/barbican/barbican/tests/test_order.py +++ b/contrib/barbican/barbican/tests/test_order.py @@ -62,7 +62,7 @@ class TestOrder(HeatTestCase): self.patcher_client.stop() def _register_resources(self): - for res_name, res_class in order.resource_mapping().iteritems(): + for res_name, res_class in six.iteritems(order.resource_mapping()): resource._register_class(res_name, res_class) def _create_resource(self, name, snippet, stack): diff --git a/contrib/barbican/barbican/tests/test_secret.py b/contrib/barbican/barbican/tests/test_secret.py index cf922af15b..7c931bfa5f 100644 --- a/contrib/barbican/barbican/tests/test_secret.py +++ b/contrib/barbican/barbican/tests/test_secret.py @@ -59,7 +59,7 @@ class TestSecret(HeatTestCase): self.patcher_client.stop() def _register_resources(self): - for res_name, res_class in secret.resource_mapping().iteritems(): + for res_name, res_class in six.iteritems(secret.resource_mapping()): resource._register_class(res_name, res_class) def _create_resource(self, name, snippet, stack): diff --git a/contrib/docker/docker/resources/docker_container.py b/contrib/docker/docker/resources/docker_container.py index 0199929c74..2c9216414d 100644 --- a/contrib/docker/docker/resources/docker_container.py +++ b/contrib/docker/docker/resources/docker_container.py @@ -14,6 +14,8 @@ # License for the specific language governing permissions and limitations # under the License. +import six + from heat.engine import attributes from heat.engine import properties from heat.engine import resource @@ -185,7 +187,7 @@ class DockerContainer(resource.Resource): def _parse_networkinfo_ports(self, networkinfo): tcp = [] udp = [] - for port, info in networkinfo['Ports'].iteritems(): + for port, info in six.iteritems(networkinfo['Ports']): p = port.split('/') if not info or len(p) != 2 or 'HostPort' not in info[0]: continue diff --git a/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py b/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py index ad478d9a07..bfd4f730df 100644 --- a/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py +++ b/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py @@ -14,6 +14,8 @@ import copy import itertools +import six + from heat.common import exception from heat.engine import attributes from heat.engine import constraints @@ -411,7 +413,8 @@ class CloudLoadBalancer(resource.Resource): metadata = None if self.METADATA in self.properties.data: metadata = [{'key': k, 'value': v} - for k, v in self.properties[self.METADATA].iteritems()] + for k, v + in six.iteritems(self.properties[self.METADATA])] return (session_persistence, connection_logging, metadata) @@ -579,7 +582,7 @@ class CloudLoadBalancer(resource.Resource): These are values that may be initialized to None. """ return dict((key, value) - for (key, value) in property_dict.iteritems() + for (key, value) in six.iteritems(property_dict) if value) def validate(self): diff --git a/contrib/rackspace/rackspace/tests/test_cloud_loadbalancer.py b/contrib/rackspace/rackspace/tests/test_cloud_loadbalancer.py index 34149360e1..5571d73905 100644 --- a/contrib/rackspace/rackspace/tests/test_cloud_loadbalancer.py +++ b/contrib/rackspace/rackspace/tests/test_cloud_loadbalancer.py @@ -249,13 +249,13 @@ class LoadBalancerTest(HeatTestCase): return (rsrc, fake_loadbalancer) def _set_template(self, templ, **kwargs): - for k, v in kwargs.iteritems(): + for k, v in six.iteritems(kwargs): templ['Resources'][self._get_first_resource_name(templ)][ 'Properties'][k] = v return templ def _set_expected(self, expected, **kwargs): - for k, v in kwargs.iteritems(): + for k, v in six.iteritems(kwargs): expected[k] = v return expected diff --git a/heat/api/cloudwatch/watch.py b/heat/api/cloudwatch/watch.py index 81bb4e60e3..a0da8a1901 100644 --- a/heat/api/cloudwatch/watch.py +++ b/heat/api/cloudwatch/watch.py @@ -15,6 +15,7 @@ endpoint for heat AWS-compatible CloudWatch API """ from oslo import messaging +import six from heat.api.aws import exception from heat.api.aws import utils as api_utils @@ -220,7 +221,7 @@ class WatchController(object): con = req.context parms = dict(req.params) # FIXME : Don't yet handle filtering by Dimensions - filter_result = dict((k, v) for (k, v) in parms.iteritems() if k in + filter_result = dict((k, v) for (k, v) in six.iteritems(parms) if k in ("MetricName", "Namespace")) LOG.debug("filter parameters : %s" % filter_result) diff --git a/heat/api/openstack/v1/util.py b/heat/api/openstack/v1/util.py index a23bb32efe..a0165aed8f 100644 --- a/heat/api/openstack/v1/util.py +++ b/heat/api/openstack/v1/util.py @@ -13,6 +13,7 @@ from functools import wraps +import six from webob import exc from heat.common import identifier @@ -85,7 +86,7 @@ def get_allowed_params(params, whitelist): ''' allowed_params = {} - for key, get_type in whitelist.iteritems(): + for key, get_type in six.iteritems(whitelist): value = None if get_type == 'single': value = params.get(key) diff --git a/heat/common/exception.py b/heat/common/exception.py index 1fa27e18b5..ae0cfc67dc 100644 --- a/heat/common/exception.py +++ b/heat/common/exception.py @@ -113,7 +113,7 @@ class HeatException(Exception): #kwargs doesn't match a variable in the message #log the issue and the kwargs LOG.exception(_('Exception in string format operation')) - for name, value in kwargs.iteritems(): + for name, value in six.iteritems(kwargs): LOG.error("%s: %s" % (name, value)) # noqa if _FATAL_EXCEPTION_FORMAT_ERRORS: diff --git a/heat/common/wsgi.py b/heat/common/wsgi.py index 980054a117..b764297e1d 100644 --- a/heat/common/wsgi.py +++ b/heat/common/wsgi.py @@ -407,7 +407,7 @@ class Debug(Middleware): resp = req.get_response(self.application) print(("*" * 40) + " RESPONSE HEADERS") - for (key, value) in resp.headers.iteritems(): + for (key, value) in six.iteritems(resp.headers): print(key, "=", value) print diff --git a/heat/db/sqlalchemy/filters.py b/heat/db/sqlalchemy/filters.py index 959ede8593..b4e856448b 100644 --- a/heat/db/sqlalchemy/filters.py +++ b/heat/db/sqlalchemy/filters.py @@ -11,6 +11,8 @@ # License for the specific language governing permissions and limitations # under the License. +import six + def exact_filter(query, model, filters): """Applies exact match filtering to a query. @@ -31,7 +33,7 @@ def exact_filter(query, model, filters): if filters is None: filters = {} - for key, value in filters.iteritems(): + for key, value in six.iteritems(filters): if isinstance(value, (list, tuple, set, frozenset)): column_attr = getattr(model, key) query = query.filter(column_attr.in_(value)) diff --git a/heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py b/heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py index 7f33661a76..3e39816d4a 100644 --- a/heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py +++ b/heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py @@ -14,6 +14,7 @@ import copy from migrate.versioning import util as migrate_util +import six from sqlalchemy.orm import sessionmaker from heat.db.sqlalchemy import models @@ -32,7 +33,7 @@ def upgrade(migrate_engine): and 'parameters' in raw_template.template): template = copy.deepcopy(raw_template.template) - for parameter, schema in template['parameters'].iteritems(): + for parameter, schema in six.iteritems(template['parameters']): changed = False def _commit_schema(parameter, schema): diff --git a/heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py b/heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py index 50f3d65e9c..e685b0d5ed 100644 --- a/heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py +++ b/heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py @@ -13,6 +13,7 @@ import copy from migrate.versioning import util as migrate_util +import six from sqlalchemy.orm import sessionmaker from heat.db.sqlalchemy import models @@ -38,8 +39,8 @@ def upgrade(migrate_engine): def _translate(section, translate_map): changed = False - for name, details in section.iteritems(): - for old_key, new_key in translate_map.iteritems(): + for name, details in six.iteritems(section): + for old_key, new_key in six.iteritems(translate_map): if old_key in details: details[new_key] = details[old_key] del details[old_key] diff --git a/heat/db/sqlalchemy/models.py b/heat/db/sqlalchemy/models.py index 5417ae6546..3df2072e53 100644 --- a/heat/db/sqlalchemy/models.py +++ b/heat/db/sqlalchemy/models.py @@ -17,6 +17,7 @@ SQLAlchemy models for heat data. import uuid from oslo.db.sqlalchemy import models +import six import sqlalchemy from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import backref @@ -69,7 +70,7 @@ class HeatBase(models.ModelBase, models.TimestampMixin): if not session: session = get_session() session.begin() - for k, v in values.iteritems(): + for k, v in six.iteritems(values): setattr(self, k, v) session.commit() diff --git a/heat/engine/cfn/functions.py b/heat/engine/cfn/functions.py index 8a3dfb8b36..c976439efa 100644 --- a/heat/engine/cfn/functions.py +++ b/heat/engine/cfn/functions.py @@ -425,7 +425,7 @@ class Replace(function.Function): return string.replace(placeholder, unicode(value)) - return reduce(replace, mapping.iteritems(), template) + return reduce(replace, six.iteritems(mapping), template) class Base64(function.Function): diff --git a/heat/engine/cfn/template.py b/heat/engine/cfn/template.py index 7e1be30726..4106560832 100644 --- a/heat/engine/cfn/template.py +++ b/heat/engine/cfn/template.py @@ -13,6 +13,7 @@ # under the License. import collections +import six from heat.engine import function from heat.engine import parameters @@ -60,7 +61,7 @@ class CfnTemplate(template.Template): def param_schemata(self): params = self.t.get(self.PARAMETERS) or {} return dict((name, parameters.Schema.from_dict(name, schema)) - for name, schema in params.iteritems()) + for name, schema in six.iteritems(params)) def parameters(self, stack_identifier, user_params): return parameters.Parameters(stack_identifier, self, diff --git a/heat/engine/dependencies.py b/heat/engine/dependencies.py index 98fb483608..1c21e4ef93 100644 --- a/heat/engine/dependencies.py +++ b/heat/engine/dependencies.py @@ -14,6 +14,7 @@ import collections import itertools +import six from six.moves import xrange from heat.common import exception @@ -120,7 +121,7 @@ class Graph(collections.defaultdict): for rqd in node: yield (rqr, rqd) return itertools.chain.from_iterable(outgoing_edges(*i) - for i in self.iteritems()) + for i in six.iteritems(self)) def __delitem__(self, key): '''Delete the node given by the specified key from the graph.''' @@ -135,7 +136,7 @@ class Graph(collections.defaultdict): def __str__(self): '''Convert the graph to a human-readable string.''' - pairs = ('%s: %s' % (str(k), str(v)) for k, v in self.iteritems()) + pairs = ('%s: %s' % (str(k), str(v)) for k, v in six.iteritems(self)) return '{%s}' % ', '.join(pairs) @staticmethod @@ -146,7 +147,7 @@ class Graph(collections.defaultdict): This is a destructive operation for the graph. ''' for iteration in xrange(len(graph)): - for key, node in graph.iteritems(): + for key, node in six.iteritems(graph): if not node: yield key del graph[key] diff --git a/heat/engine/environment.py b/heat/engine/environment.py index 8c9d919b68..b40b702653 100644 --- a/heat/engine/environment.py +++ b/heat/engine/environment.py @@ -16,6 +16,7 @@ import itertools import os.path from oslo.config import cfg +import six from heat.common import environment_format from heat.common import exception @@ -328,7 +329,7 @@ class ResourceRegistry(object): cls.get_class().support_status.status == support_status.encode()) - return [name for name, cls in self._registry.iteritems() + return [name for name, cls in six.iteritems(self._registry) if is_resource(name) and status_matches(cls)] @@ -360,7 +361,7 @@ class Environment(object): if 'parameters' in env: self.params = env['parameters'] else: - self.params = dict((k, v) for (k, v) in env.iteritems() + self.params = dict((k, v) for (k, v) in six.iteritems(env) if k != RESOURCE_REGISTRY) self.constraints = {} diff --git a/heat/engine/hot/template.py b/heat/engine/hot/template.py index 4f1aeaad19..7a313d4930 100644 --- a/heat/engine/hot/template.py +++ b/heat/engine/hot/template.py @@ -11,6 +11,7 @@ # under the License. import collections +import six from heat.engine.cfn import template as cfn_template from heat.engine import function @@ -107,10 +108,10 @@ class HOTemplate(template.Template): cfn_resources = {} - for resource_name, attrs in resources.iteritems(): + for resource_name, attrs in six.iteritems(resources): cfn_resource = {} - for attr, attr_value in attrs.iteritems(): + for attr, attr_value in six.iteritems(attrs): cfn_attr = self._translate(attr, HOT_TO_CFN_ATTRS, _('"%s" is not a valid keyword ' 'inside a resource definition')) @@ -127,10 +128,10 @@ class HOTemplate(template.Template): cfn_outputs = {} - for output_name, attrs in outputs.iteritems(): + for output_name, attrs in six.iteritems(outputs): cfn_output = {} - for attr, attr_value in attrs.iteritems(): + for attr, attr_value in six.iteritems(attrs): cfn_attr = self._translate(attr, HOT_TO_CFN_ATTRS, _('"%s" is not a valid keyword ' 'inside an output definition')) @@ -144,7 +145,7 @@ class HOTemplate(template.Template): parameter_section = self.t.get(self.PARAMETERS) if parameter_section is None: parameter_section = {} - params = parameter_section.iteritems() + params = six.iteritems(parameter_section) return dict((name, parameters.HOTParamSchema.from_dict(name, schema)) for name, schema in params) diff --git a/heat/engine/parameters.py b/heat/engine/parameters.py index 22a3f6dd44..405b993d76 100644 --- a/heat/engine/parameters.py +++ b/heat/engine/parameters.py @@ -419,7 +419,8 @@ class Parameters(collections.Mapping): self.user_params = user_params schemata = self.tmpl.param_schemata() - user_parameters = (user_parameter(si) for si in schemata.iteritems()) + user_parameters = (user_parameter(si) for si in + six.iteritems(schemata)) pseudo_parameters = self._pseudo_parameters(stack_identifier) self.params = dict((p.name, @@ -461,7 +462,7 @@ class Parameters(collections.Mapping): optional filter function) and return the resulting dictionary. ''' return dict((n, func(p)) - for n, p in self.params.iteritems() if filter_func(p)) + for n, p in six.iteritems(self.params) if filter_func(p)) def set_stack_id(self, stack_identifier): ''' @@ -487,7 +488,7 @@ class Parameters(collections.Mapping): break if param is not None: template_params = self.tmpl.t[key] or {} - for name, attrs in template_params.iteritems(): + for name, attrs in six.iteritems(template_params): if not isinstance(attrs, dict): raise exception.InvalidTemplateParameter(key=name) diff --git a/heat/engine/plugin_manager.py b/heat/engine/plugin_manager.py index 2d972af546..50c57a9b9e 100644 --- a/heat/engine/plugin_manager.py +++ b/heat/engine/plugin_manager.py @@ -17,6 +17,7 @@ import itertools import sys from oslo.config import cfg +import six from heat.common import plugin_loader from heat.openstack.common import log @@ -111,4 +112,5 @@ class PluginMapping(object): Mappings are returned as a list of (key, value) tuples. ''' mod_dicts = plugin_manager.map_to_modules(self.load_from_module) - return itertools.chain.from_iterable(d.iteritems() for d in mod_dicts) + return itertools.chain.from_iterable(six.iteritems(d) for d + in mod_dicts) diff --git a/heat/engine/properties.py b/heat/engine/properties.py index 387a0d17a2..e241e994be 100644 --- a/heat/engine/properties.py +++ b/heat/engine/properties.py @@ -237,7 +237,8 @@ class Property(object): if not isinstance(value, collections.Mapping): raise TypeError(_('"%s" is not a map') % value) - return dict(self._get_children(value.iteritems(), validate=validate)) + return dict(self._get_children(six.iteritems(value), + validate=validate)) def _get_list(self, value, validate=False): if value is None: @@ -451,7 +452,7 @@ class Properties(collections.Mapping): return {}, {} param_prop_defs = [param_prop_def_items(n, s) - for n, s in schemata(schema).iteritems() + for n, s in six.iteritems(schemata(schema)) if s.implemented] param_items, prop_items = zip(*param_prop_defs) return dict(param_items), dict(prop_items) diff --git a/heat/engine/resource.py b/heat/engine/resource.py index 72fdbf3941..25ad07ff71 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -314,7 +314,7 @@ class Resource(object): update_allowed_properties, raises UpdateReplace. ''' update_allowed_set = set(self.update_allowed_properties) - for (psk, psv) in self.properties.props.iteritems(): + for (psk, psv) in six.iteritems(self.properties.props): if psv.update_allowed(): update_allowed_set.add(psk) @@ -557,7 +557,7 @@ class Resource(object): # save the resource data if data and isinstance(data, dict): - for key, value in data.iteritems(): + for key, value in six.iteritems(data): self.data_set(key, value) # save the resource metadata diff --git a/heat/engine/resources/software_config/structured_config.py b/heat/engine/resources/software_config/structured_config.py index 91387b0c8d..a91eca4780 100644 --- a/heat/engine/resources/software_config/structured_config.py +++ b/heat/engine/resources/software_config/structured_config.py @@ -15,6 +15,7 @@ import collections import functools +import six from heat.engine import properties from heat.engine.resources.software_config import software_config as sc @@ -110,11 +111,11 @@ class StructuredDeployment(sd.SoftwareDeployment): if isinstance(snippet, collections.Mapping): if len(snippet) == 1: - fn_name, args = next(snippet.iteritems()) + fn_name, args = next(six.iteritems(snippet)) if fn_name == input_key: if isinstance(args, basestring): return inputs.get(args) - return dict((k, parse(v)) for k, v in snippet.iteritems()) + return dict((k, parse(v)) for k, v in six.iteritems(snippet)) elif (not isinstance(snippet, basestring) and isinstance(snippet, collections.Iterable)): return [parse(v) for v in snippet] diff --git a/heat/engine/scheduler.py b/heat/engine/scheduler.py index 9fbeb15e5c..99c2d96ef1 100644 --- a/heat/engine/scheduler.py +++ b/heat/engine/scheduler.py @@ -18,6 +18,7 @@ from time import time as wallclock import types import eventlet +import six from heat.openstack.common import excutils from heat.openstack.common.gettextutils import _ @@ -365,7 +366,7 @@ class DependencyTaskGroup(object): Iterate over all subtasks that are ready to start - i.e. all their dependencies have been satisfied but they have not yet been started. """ - for k, n in self._graph.iteritems(): + for k, n in six.iteritems(self._graph): if not n: runner = self._runners[k] if not runner.started(): @@ -377,7 +378,7 @@ class DependencyTaskGroup(object): been started but have not yet completed. """ running = lambda (k, r): k in self._graph and r.started() - return itertools.ifilter(running, self._runners.iteritems()) + return itertools.ifilter(running, six.iteritems(self._runners)) class PollingTaskGroup(object): @@ -409,7 +410,7 @@ class PollingTaskGroup(object): """Return a list containing the keyword args for each subtask.""" keygroups = (itertools.izip(itertools.repeat(name), arglist) - for name, arglist in kwarg_lists.iteritems()) + for name, arglist in six.iteritems(kwarg_lists)) return [dict(kwargs) for kwargs in itertools.izip(*keygroups)] @classmethod diff --git a/heat/engine/service.py b/heat/engine/service.py index 6d2e64b627..37013b9570 100644 --- a/heat/engine/service.py +++ b/heat/engine/service.py @@ -993,7 +993,7 @@ class EngineService(service.Service): stack = parser.Stack.load(cnxt, stack=s) return [api.format_stack_resource(resource) - for name, resource in stack.iteritems() + for name, resource in six.iteritems(stack) if resource_name is None or name == resource_name] @request_context diff --git a/heat/engine/template.py b/heat/engine/template.py index c26bebefca..818762a6df 100644 --- a/heat/engine/template.py +++ b/heat/engine/template.py @@ -15,6 +15,7 @@ import abc import collections import copy import functools +import six from stevedore import extension from heat.common import exception @@ -57,7 +58,7 @@ class TemplatePluginManager(object): def get_version(template_data, available_versions): version_keys = set(key for key, version in available_versions) - candidate_keys = set(k for k, v in template_data.iteritems() if + candidate_keys = set(k for k, v in six.iteritems(template_data) if isinstance(v, basestring)) keys_present = version_keys & candidate_keys @@ -244,11 +245,11 @@ def parse(functions, stack, snippet): if isinstance(snippet, collections.Mapping): if len(snippet) == 1: - fn_name, args = next(snippet.iteritems()) + fn_name, args = next(six.iteritems(snippet)) Func = functions.get(fn_name) if Func is not None: return Func(stack, fn_name, recurse(args)) - return dict((k, recurse(v)) for k, v in snippet.iteritems()) + return dict((k, recurse(v)) for k, v in six.iteritems(snippet)) elif (not isinstance(snippet, basestring) and isinstance(snippet, collections.Iterable)): return [recurse(v) for v in snippet] diff --git a/heat/engine/update.py b/heat/engine/update.py index 4dc84f9ddc..335b668706 100644 --- a/heat/engine/update.py +++ b/heat/engine/update.py @@ -11,6 +11,8 @@ # License for the specific language governing permissions and limitations # under the License. +import six + from heat.db import api as db_api from heat.engine import dependencies from heat.engine import resource @@ -184,7 +186,7 @@ class StackUpdate(object): for e in existing_deps.graph(reverse=True).edges(): yield e # Don't cleanup old resources until after they have been replaced - for name, res in self.existing_stack.iteritems(): + for name, res in six.iteritems(self.existing_stack): if name in self.new_stack: yield (res, self.new_stack[name]) diff --git a/heat/tests/test_engine_service.py b/heat/tests/test_engine_service.py index 2ffb953500..c8f65a0a7d 100644 --- a/heat/tests/test_engine_service.py +++ b/heat/tests/test_engine_service.py @@ -3011,7 +3011,7 @@ class SoftwareConfigServiceTest(HeatTestCase): values.update(kwargs) updated = self.engine.update_software_deployment( self.ctx, deployment_id, **values) - for key, value in kwargs.iteritems(): + for key, value in six.iteritems(kwargs): self.assertEqual(value, updated[key]) check_software_deployment_updated(config_id=config_id) diff --git a/heat/tests/test_nova_floatingip.py b/heat/tests/test_nova_floatingip.py index 759b90cf6d..7e6c16e479 100644 --- a/heat/tests/test_nova_floatingip.py +++ b/heat/tests/test_nova_floatingip.py @@ -13,6 +13,7 @@ import copy import mock +import six from heat.common import exception as heat_ex from heat.common import template_format @@ -73,7 +74,7 @@ class NovaFloatingIPTest(HeatTestCase): def _make_obj(self, **kwargs): mock = self.m.CreateMockAnything() - for k, v in kwargs.iteritems(): + for k, v in six.iteritems(kwargs): setattr(mock, k, v) return mock diff --git a/heat/tests/test_plugin_manager.py b/heat/tests/test_plugin_manager.py index ea435b7893..4e82fe9ad4 100644 --- a/heat/tests/test_plugin_manager.py +++ b/heat/tests/test_plugin_manager.py @@ -15,6 +15,8 @@ import sys import types +import six + from heat.engine import plugin_manager from heat.tests.common import HeatTestCase @@ -95,7 +97,7 @@ class TestPluginManager(HeatTestCase): all_items = pm.load_all(mgr) - for item in current_test_mapping().iteritems(): + for item in six.iteritems(current_test_mapping()): self.assertNotIn(item, all_items) def test_load_all(self): @@ -111,5 +113,5 @@ class TestPluginManager(HeatTestCase): all_items = pm.load_all(mgr) - for item in current_test_mapping().iteritems(): + for item in six.iteritems(current_test_mapping()): self.assertIn(item, all_items) diff --git a/heat/tests/test_volume.py b/heat/tests/test_volume.py index 891ab00a7e..1a4010a5d4 100644 --- a/heat/tests/test_volume.py +++ b/heat/tests/test_volume.py @@ -1357,7 +1357,7 @@ class FakeVolume(object): def __init__(self, initial_status, final_status, **attrs): self.status = initial_status self.final_status = final_status - for key, value in attrs.iteritems(): + for key, value in six.iteritems(attrs): setattr(self, key, value) def get(self): @@ -1381,7 +1381,7 @@ class FakeLatencyVolume(object): raise exception.Error('life_cycle should not be an empty tuple.') self.life_cycle = iter(life_cycle) self.status = next(self.life_cycle) - for key, value in attrs.iteritems(): + for key, value in six.iteritems(attrs): setattr(self, key, value) def get(self):