replace dict.iteritems() with six.iteritems(dict)
According to https://wiki.openstack.org/wiki/Python3 dict.iteritems() should be replaced with six.iteritems(dict). Change-Id: I9e2881a006433c8b44a3caccebc73bae4973a041
This commit is contained in:
parent
586395b132
commit
58e141b2ac
|
@ -62,7 +62,7 @@ class TestOrder(HeatTestCase):
|
||||||
self.patcher_client.stop()
|
self.patcher_client.stop()
|
||||||
|
|
||||||
def _register_resources(self):
|
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)
|
resource._register_class(res_name, res_class)
|
||||||
|
|
||||||
def _create_resource(self, name, snippet, stack):
|
def _create_resource(self, name, snippet, stack):
|
||||||
|
|
|
@ -59,7 +59,7 @@ class TestSecret(HeatTestCase):
|
||||||
self.patcher_client.stop()
|
self.patcher_client.stop()
|
||||||
|
|
||||||
def _register_resources(self):
|
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)
|
resource._register_class(res_name, res_class)
|
||||||
|
|
||||||
def _create_resource(self, name, snippet, stack):
|
def _create_resource(self, name, snippet, stack):
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.engine import attributes
|
from heat.engine import attributes
|
||||||
from heat.engine import properties
|
from heat.engine import properties
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
|
@ -185,7 +187,7 @@ class DockerContainer(resource.Resource):
|
||||||
def _parse_networkinfo_ports(self, networkinfo):
|
def _parse_networkinfo_ports(self, networkinfo):
|
||||||
tcp = []
|
tcp = []
|
||||||
udp = []
|
udp = []
|
||||||
for port, info in networkinfo['Ports'].iteritems():
|
for port, info in six.iteritems(networkinfo['Ports']):
|
||||||
p = port.split('/')
|
p = port.split('/')
|
||||||
if not info or len(p) != 2 or 'HostPort' not in info[0]:
|
if not info or len(p) != 2 or 'HostPort' not in info[0]:
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
import copy
|
import copy
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
from heat.engine import attributes
|
from heat.engine import attributes
|
||||||
from heat.engine import constraints
|
from heat.engine import constraints
|
||||||
|
@ -411,7 +413,8 @@ class CloudLoadBalancer(resource.Resource):
|
||||||
metadata = None
|
metadata = None
|
||||||
if self.METADATA in self.properties.data:
|
if self.METADATA in self.properties.data:
|
||||||
metadata = [{'key': k, 'value': v}
|
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)
|
return (session_persistence, connection_logging, metadata)
|
||||||
|
|
||||||
|
@ -579,7 +582,7 @@ class CloudLoadBalancer(resource.Resource):
|
||||||
These are values that may be initialized to None.
|
These are values that may be initialized to None.
|
||||||
"""
|
"""
|
||||||
return dict((key, value)
|
return dict((key, value)
|
||||||
for (key, value) in property_dict.iteritems()
|
for (key, value) in six.iteritems(property_dict)
|
||||||
if value)
|
if value)
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
|
|
|
@ -249,13 +249,13 @@ class LoadBalancerTest(HeatTestCase):
|
||||||
return (rsrc, fake_loadbalancer)
|
return (rsrc, fake_loadbalancer)
|
||||||
|
|
||||||
def _set_template(self, templ, **kwargs):
|
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)][
|
templ['Resources'][self._get_first_resource_name(templ)][
|
||||||
'Properties'][k] = v
|
'Properties'][k] = v
|
||||||
return templ
|
return templ
|
||||||
|
|
||||||
def _set_expected(self, expected, **kwargs):
|
def _set_expected(self, expected, **kwargs):
|
||||||
for k, v in kwargs.iteritems():
|
for k, v in six.iteritems(kwargs):
|
||||||
expected[k] = v
|
expected[k] = v
|
||||||
return expected
|
return expected
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
endpoint for heat AWS-compatible CloudWatch API
|
endpoint for heat AWS-compatible CloudWatch API
|
||||||
"""
|
"""
|
||||||
from oslo import messaging
|
from oslo import messaging
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.api.aws import exception
|
from heat.api.aws import exception
|
||||||
from heat.api.aws import utils as api_utils
|
from heat.api.aws import utils as api_utils
|
||||||
|
@ -220,7 +221,7 @@ class WatchController(object):
|
||||||
con = req.context
|
con = req.context
|
||||||
parms = dict(req.params)
|
parms = dict(req.params)
|
||||||
# FIXME : Don't yet handle filtering by Dimensions
|
# 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"))
|
("MetricName", "Namespace"))
|
||||||
LOG.debug("filter parameters : %s" % filter_result)
|
LOG.debug("filter parameters : %s" % filter_result)
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
|
import six
|
||||||
from webob import exc
|
from webob import exc
|
||||||
|
|
||||||
from heat.common import identifier
|
from heat.common import identifier
|
||||||
|
@ -85,7 +86,7 @@ def get_allowed_params(params, whitelist):
|
||||||
'''
|
'''
|
||||||
allowed_params = {}
|
allowed_params = {}
|
||||||
|
|
||||||
for key, get_type in whitelist.iteritems():
|
for key, get_type in six.iteritems(whitelist):
|
||||||
value = None
|
value = None
|
||||||
if get_type == 'single':
|
if get_type == 'single':
|
||||||
value = params.get(key)
|
value = params.get(key)
|
||||||
|
|
|
@ -113,7 +113,7 @@ class HeatException(Exception):
|
||||||
#kwargs doesn't match a variable in the message
|
#kwargs doesn't match a variable in the message
|
||||||
#log the issue and the kwargs
|
#log the issue and the kwargs
|
||||||
LOG.exception(_('Exception in string format operation'))
|
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
|
LOG.error("%s: %s" % (name, value)) # noqa
|
||||||
|
|
||||||
if _FATAL_EXCEPTION_FORMAT_ERRORS:
|
if _FATAL_EXCEPTION_FORMAT_ERRORS:
|
||||||
|
|
|
@ -407,7 +407,7 @@ class Debug(Middleware):
|
||||||
resp = req.get_response(self.application)
|
resp = req.get_response(self.application)
|
||||||
|
|
||||||
print(("*" * 40) + " RESPONSE HEADERS")
|
print(("*" * 40) + " RESPONSE HEADERS")
|
||||||
for (key, value) in resp.headers.iteritems():
|
for (key, value) in six.iteritems(resp.headers):
|
||||||
print(key, "=", value)
|
print(key, "=", value)
|
||||||
print
|
print
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
|
|
||||||
def exact_filter(query, model, filters):
|
def exact_filter(query, model, filters):
|
||||||
"""Applies exact match filtering to a query.
|
"""Applies exact match filtering to a query.
|
||||||
|
@ -31,7 +33,7 @@ def exact_filter(query, model, filters):
|
||||||
if filters is None:
|
if filters is None:
|
||||||
filters = {}
|
filters = {}
|
||||||
|
|
||||||
for key, value in filters.iteritems():
|
for key, value in six.iteritems(filters):
|
||||||
if isinstance(value, (list, tuple, set, frozenset)):
|
if isinstance(value, (list, tuple, set, frozenset)):
|
||||||
column_attr = getattr(model, key)
|
column_attr = getattr(model, key)
|
||||||
query = query.filter(column_attr.in_(value))
|
query = query.filter(column_attr.in_(value))
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
from migrate.versioning import util as migrate_util
|
from migrate.versioning import util as migrate_util
|
||||||
|
import six
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
from heat.db.sqlalchemy import models
|
from heat.db.sqlalchemy import models
|
||||||
|
@ -32,7 +33,7 @@ def upgrade(migrate_engine):
|
||||||
and 'parameters' in raw_template.template):
|
and 'parameters' in raw_template.template):
|
||||||
|
|
||||||
template = copy.deepcopy(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
|
changed = False
|
||||||
|
|
||||||
def _commit_schema(parameter, schema):
|
def _commit_schema(parameter, schema):
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
from migrate.versioning import util as migrate_util
|
from migrate.versioning import util as migrate_util
|
||||||
|
import six
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
from heat.db.sqlalchemy import models
|
from heat.db.sqlalchemy import models
|
||||||
|
@ -38,8 +39,8 @@ def upgrade(migrate_engine):
|
||||||
def _translate(section, translate_map):
|
def _translate(section, translate_map):
|
||||||
changed = False
|
changed = False
|
||||||
|
|
||||||
for name, details in section.iteritems():
|
for name, details in six.iteritems(section):
|
||||||
for old_key, new_key in translate_map.iteritems():
|
for old_key, new_key in six.iteritems(translate_map):
|
||||||
if old_key in details:
|
if old_key in details:
|
||||||
details[new_key] = details[old_key]
|
details[new_key] = details[old_key]
|
||||||
del details[old_key]
|
del details[old_key]
|
||||||
|
|
|
@ -17,6 +17,7 @@ SQLAlchemy models for heat data.
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from oslo.db.sqlalchemy import models
|
from oslo.db.sqlalchemy import models
|
||||||
|
import six
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
from sqlalchemy.orm import backref
|
from sqlalchemy.orm import backref
|
||||||
|
@ -69,7 +70,7 @@ class HeatBase(models.ModelBase, models.TimestampMixin):
|
||||||
if not session:
|
if not session:
|
||||||
session = get_session()
|
session = get_session()
|
||||||
session.begin()
|
session.begin()
|
||||||
for k, v in values.iteritems():
|
for k, v in six.iteritems(values):
|
||||||
setattr(self, k, v)
|
setattr(self, k, v)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
|
|
|
@ -425,7 +425,7 @@ class Replace(function.Function):
|
||||||
|
|
||||||
return string.replace(placeholder, unicode(value))
|
return string.replace(placeholder, unicode(value))
|
||||||
|
|
||||||
return reduce(replace, mapping.iteritems(), template)
|
return reduce(replace, six.iteritems(mapping), template)
|
||||||
|
|
||||||
|
|
||||||
class Base64(function.Function):
|
class Base64(function.Function):
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.engine import function
|
from heat.engine import function
|
||||||
from heat.engine import parameters
|
from heat.engine import parameters
|
||||||
|
@ -60,7 +61,7 @@ class CfnTemplate(template.Template):
|
||||||
def param_schemata(self):
|
def param_schemata(self):
|
||||||
params = self.t.get(self.PARAMETERS) or {}
|
params = self.t.get(self.PARAMETERS) or {}
|
||||||
return dict((name, parameters.Schema.from_dict(name, schema))
|
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):
|
def parameters(self, stack_identifier, user_params):
|
||||||
return parameters.Parameters(stack_identifier, self,
|
return parameters.Parameters(stack_identifier, self,
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
import collections
|
import collections
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
|
import six
|
||||||
from six.moves import xrange
|
from six.moves import xrange
|
||||||
|
|
||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
|
@ -120,7 +121,7 @@ class Graph(collections.defaultdict):
|
||||||
for rqd in node:
|
for rqd in node:
|
||||||
yield (rqr, rqd)
|
yield (rqr, rqd)
|
||||||
return itertools.chain.from_iterable(outgoing_edges(*i)
|
return itertools.chain.from_iterable(outgoing_edges(*i)
|
||||||
for i in self.iteritems())
|
for i in six.iteritems(self))
|
||||||
|
|
||||||
def __delitem__(self, key):
|
def __delitem__(self, key):
|
||||||
'''Delete the node given by the specified key from the graph.'''
|
'''Delete the node given by the specified key from the graph.'''
|
||||||
|
@ -135,7 +136,7 @@ class Graph(collections.defaultdict):
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
'''Convert the graph to a human-readable string.'''
|
'''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)
|
return '{%s}' % ', '.join(pairs)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -146,7 +147,7 @@ class Graph(collections.defaultdict):
|
||||||
This is a destructive operation for the graph.
|
This is a destructive operation for the graph.
|
||||||
'''
|
'''
|
||||||
for iteration in xrange(len(graph)):
|
for iteration in xrange(len(graph)):
|
||||||
for key, node in graph.iteritems():
|
for key, node in six.iteritems(graph):
|
||||||
if not node:
|
if not node:
|
||||||
yield key
|
yield key
|
||||||
del graph[key]
|
del graph[key]
|
||||||
|
|
|
@ -16,6 +16,7 @@ import itertools
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.common import environment_format
|
from heat.common import environment_format
|
||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
|
@ -328,7 +329,7 @@ class ResourceRegistry(object):
|
||||||
cls.get_class().support_status.status ==
|
cls.get_class().support_status.status ==
|
||||||
support_status.encode())
|
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)]
|
if is_resource(name) and status_matches(cls)]
|
||||||
|
|
||||||
|
|
||||||
|
@ -360,7 +361,7 @@ class Environment(object):
|
||||||
if 'parameters' in env:
|
if 'parameters' in env:
|
||||||
self.params = env['parameters']
|
self.params = env['parameters']
|
||||||
else:
|
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)
|
if k != RESOURCE_REGISTRY)
|
||||||
self.constraints = {}
|
self.constraints = {}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.engine.cfn import template as cfn_template
|
from heat.engine.cfn import template as cfn_template
|
||||||
from heat.engine import function
|
from heat.engine import function
|
||||||
|
@ -107,10 +108,10 @@ class HOTemplate(template.Template):
|
||||||
|
|
||||||
cfn_resources = {}
|
cfn_resources = {}
|
||||||
|
|
||||||
for resource_name, attrs in resources.iteritems():
|
for resource_name, attrs in six.iteritems(resources):
|
||||||
cfn_resource = {}
|
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,
|
cfn_attr = self._translate(attr, HOT_TO_CFN_ATTRS,
|
||||||
_('"%s" is not a valid keyword '
|
_('"%s" is not a valid keyword '
|
||||||
'inside a resource definition'))
|
'inside a resource definition'))
|
||||||
|
@ -127,10 +128,10 @@ class HOTemplate(template.Template):
|
||||||
|
|
||||||
cfn_outputs = {}
|
cfn_outputs = {}
|
||||||
|
|
||||||
for output_name, attrs in outputs.iteritems():
|
for output_name, attrs in six.iteritems(outputs):
|
||||||
cfn_output = {}
|
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,
|
cfn_attr = self._translate(attr, HOT_TO_CFN_ATTRS,
|
||||||
_('"%s" is not a valid keyword '
|
_('"%s" is not a valid keyword '
|
||||||
'inside an output definition'))
|
'inside an output definition'))
|
||||||
|
@ -144,7 +145,7 @@ class HOTemplate(template.Template):
|
||||||
parameter_section = self.t.get(self.PARAMETERS)
|
parameter_section = self.t.get(self.PARAMETERS)
|
||||||
if parameter_section is None:
|
if parameter_section is None:
|
||||||
parameter_section = {}
|
parameter_section = {}
|
||||||
params = parameter_section.iteritems()
|
params = six.iteritems(parameter_section)
|
||||||
return dict((name, parameters.HOTParamSchema.from_dict(name, schema))
|
return dict((name, parameters.HOTParamSchema.from_dict(name, schema))
|
||||||
for name, schema in params)
|
for name, schema in params)
|
||||||
|
|
||||||
|
|
|
@ -419,7 +419,8 @@ class Parameters(collections.Mapping):
|
||||||
self.user_params = user_params
|
self.user_params = user_params
|
||||||
|
|
||||||
schemata = self.tmpl.param_schemata()
|
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)
|
pseudo_parameters = self._pseudo_parameters(stack_identifier)
|
||||||
|
|
||||||
self.params = dict((p.name,
|
self.params = dict((p.name,
|
||||||
|
@ -461,7 +462,7 @@ class Parameters(collections.Mapping):
|
||||||
optional filter function) and return the resulting dictionary.
|
optional filter function) and return the resulting dictionary.
|
||||||
'''
|
'''
|
||||||
return dict((n, func(p))
|
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):
|
def set_stack_id(self, stack_identifier):
|
||||||
'''
|
'''
|
||||||
|
@ -487,7 +488,7 @@ class Parameters(collections.Mapping):
|
||||||
break
|
break
|
||||||
if param is not None:
|
if param is not None:
|
||||||
template_params = self.tmpl.t[key] or {}
|
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):
|
if not isinstance(attrs, dict):
|
||||||
raise exception.InvalidTemplateParameter(key=name)
|
raise exception.InvalidTemplateParameter(key=name)
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ import itertools
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.common import plugin_loader
|
from heat.common import plugin_loader
|
||||||
from heat.openstack.common import log
|
from heat.openstack.common import log
|
||||||
|
@ -111,4 +112,5 @@ class PluginMapping(object):
|
||||||
Mappings are returned as a list of (key, value) tuples.
|
Mappings are returned as a list of (key, value) tuples.
|
||||||
'''
|
'''
|
||||||
mod_dicts = plugin_manager.map_to_modules(self.load_from_module)
|
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)
|
||||||
|
|
|
@ -237,7 +237,8 @@ class Property(object):
|
||||||
if not isinstance(value, collections.Mapping):
|
if not isinstance(value, collections.Mapping):
|
||||||
raise TypeError(_('"%s" is not a map') % value)
|
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):
|
def _get_list(self, value, validate=False):
|
||||||
if value is None:
|
if value is None:
|
||||||
|
@ -451,7 +452,7 @@ class Properties(collections.Mapping):
|
||||||
return {}, {}
|
return {}, {}
|
||||||
|
|
||||||
param_prop_defs = [param_prop_def_items(n, s)
|
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]
|
if s.implemented]
|
||||||
param_items, prop_items = zip(*param_prop_defs)
|
param_items, prop_items = zip(*param_prop_defs)
|
||||||
return dict(param_items), dict(prop_items)
|
return dict(param_items), dict(prop_items)
|
||||||
|
|
|
@ -314,7 +314,7 @@ class Resource(object):
|
||||||
update_allowed_properties, raises UpdateReplace.
|
update_allowed_properties, raises UpdateReplace.
|
||||||
'''
|
'''
|
||||||
update_allowed_set = set(self.update_allowed_properties)
|
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():
|
if psv.update_allowed():
|
||||||
update_allowed_set.add(psk)
|
update_allowed_set.add(psk)
|
||||||
|
|
||||||
|
@ -557,7 +557,7 @@ class Resource(object):
|
||||||
|
|
||||||
# save the resource data
|
# save the resource data
|
||||||
if data and isinstance(data, dict):
|
if data and isinstance(data, dict):
|
||||||
for key, value in data.iteritems():
|
for key, value in six.iteritems(data):
|
||||||
self.data_set(key, value)
|
self.data_set(key, value)
|
||||||
|
|
||||||
# save the resource metadata
|
# save the resource metadata
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
import functools
|
import functools
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.engine import properties
|
from heat.engine import properties
|
||||||
from heat.engine.resources.software_config import software_config as sc
|
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 isinstance(snippet, collections.Mapping):
|
||||||
if len(snippet) == 1:
|
if len(snippet) == 1:
|
||||||
fn_name, args = next(snippet.iteritems())
|
fn_name, args = next(six.iteritems(snippet))
|
||||||
if fn_name == input_key:
|
if fn_name == input_key:
|
||||||
if isinstance(args, basestring):
|
if isinstance(args, basestring):
|
||||||
return inputs.get(args)
|
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
|
elif (not isinstance(snippet, basestring) and
|
||||||
isinstance(snippet, collections.Iterable)):
|
isinstance(snippet, collections.Iterable)):
|
||||||
return [parse(v) for v in snippet]
|
return [parse(v) for v in snippet]
|
||||||
|
|
|
@ -18,6 +18,7 @@ from time import time as wallclock
|
||||||
import types
|
import types
|
||||||
|
|
||||||
import eventlet
|
import eventlet
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.openstack.common import excutils
|
from heat.openstack.common import excutils
|
||||||
from heat.openstack.common.gettextutils import _
|
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
|
Iterate over all subtasks that are ready to start - i.e. all their
|
||||||
dependencies have been satisfied but they have not yet been started.
|
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:
|
if not n:
|
||||||
runner = self._runners[k]
|
runner = self._runners[k]
|
||||||
if not runner.started():
|
if not runner.started():
|
||||||
|
@ -377,7 +378,7 @@ class DependencyTaskGroup(object):
|
||||||
been started but have not yet completed.
|
been started but have not yet completed.
|
||||||
"""
|
"""
|
||||||
running = lambda (k, r): k in self._graph and r.started()
|
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):
|
class PollingTaskGroup(object):
|
||||||
|
@ -409,7 +410,7 @@ class PollingTaskGroup(object):
|
||||||
"""Return a list containing the keyword args for each subtask."""
|
"""Return a list containing the keyword args for each subtask."""
|
||||||
keygroups = (itertools.izip(itertools.repeat(name),
|
keygroups = (itertools.izip(itertools.repeat(name),
|
||||||
arglist)
|
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)]
|
return [dict(kwargs) for kwargs in itertools.izip(*keygroups)]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
@ -993,7 +993,7 @@ class EngineService(service.Service):
|
||||||
stack = parser.Stack.load(cnxt, stack=s)
|
stack = parser.Stack.load(cnxt, stack=s)
|
||||||
|
|
||||||
return [api.format_stack_resource(resource)
|
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]
|
if resource_name is None or name == resource_name]
|
||||||
|
|
||||||
@request_context
|
@request_context
|
||||||
|
|
|
@ -15,6 +15,7 @@ import abc
|
||||||
import collections
|
import collections
|
||||||
import copy
|
import copy
|
||||||
import functools
|
import functools
|
||||||
|
import six
|
||||||
from stevedore import extension
|
from stevedore import extension
|
||||||
|
|
||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
|
@ -57,7 +58,7 @@ class TemplatePluginManager(object):
|
||||||
|
|
||||||
def get_version(template_data, available_versions):
|
def get_version(template_data, available_versions):
|
||||||
version_keys = set(key for key, version in 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))
|
isinstance(v, basestring))
|
||||||
|
|
||||||
keys_present = version_keys & candidate_keys
|
keys_present = version_keys & candidate_keys
|
||||||
|
@ -244,11 +245,11 @@ def parse(functions, stack, snippet):
|
||||||
|
|
||||||
if isinstance(snippet, collections.Mapping):
|
if isinstance(snippet, collections.Mapping):
|
||||||
if len(snippet) == 1:
|
if len(snippet) == 1:
|
||||||
fn_name, args = next(snippet.iteritems())
|
fn_name, args = next(six.iteritems(snippet))
|
||||||
Func = functions.get(fn_name)
|
Func = functions.get(fn_name)
|
||||||
if Func is not None:
|
if Func is not None:
|
||||||
return Func(stack, fn_name, recurse(args))
|
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
|
elif (not isinstance(snippet, basestring) and
|
||||||
isinstance(snippet, collections.Iterable)):
|
isinstance(snippet, collections.Iterable)):
|
||||||
return [recurse(v) for v in snippet]
|
return [recurse(v) for v in snippet]
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.db import api as db_api
|
from heat.db import api as db_api
|
||||||
from heat.engine import dependencies
|
from heat.engine import dependencies
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
|
@ -184,7 +186,7 @@ class StackUpdate(object):
|
||||||
for e in existing_deps.graph(reverse=True).edges():
|
for e in existing_deps.graph(reverse=True).edges():
|
||||||
yield e
|
yield e
|
||||||
# Don't cleanup old resources until after they have been replaced
|
# 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:
|
if name in self.new_stack:
|
||||||
yield (res, self.new_stack[name])
|
yield (res, self.new_stack[name])
|
||||||
|
|
||||||
|
|
|
@ -3011,7 +3011,7 @@ class SoftwareConfigServiceTest(HeatTestCase):
|
||||||
values.update(kwargs)
|
values.update(kwargs)
|
||||||
updated = self.engine.update_software_deployment(
|
updated = self.engine.update_software_deployment(
|
||||||
self.ctx, deployment_id, **values)
|
self.ctx, deployment_id, **values)
|
||||||
for key, value in kwargs.iteritems():
|
for key, value in six.iteritems(kwargs):
|
||||||
self.assertEqual(value, updated[key])
|
self.assertEqual(value, updated[key])
|
||||||
|
|
||||||
check_software_deployment_updated(config_id=config_id)
|
check_software_deployment_updated(config_id=config_id)
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import mock
|
import mock
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.common import exception as heat_ex
|
from heat.common import exception as heat_ex
|
||||||
from heat.common import template_format
|
from heat.common import template_format
|
||||||
|
@ -73,7 +74,7 @@ class NovaFloatingIPTest(HeatTestCase):
|
||||||
|
|
||||||
def _make_obj(self, **kwargs):
|
def _make_obj(self, **kwargs):
|
||||||
mock = self.m.CreateMockAnything()
|
mock = self.m.CreateMockAnything()
|
||||||
for k, v in kwargs.iteritems():
|
for k, v in six.iteritems(kwargs):
|
||||||
setattr(mock, k, v)
|
setattr(mock, k, v)
|
||||||
return mock
|
return mock
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
import sys
|
import sys
|
||||||
import types
|
import types
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
from heat.engine import plugin_manager
|
from heat.engine import plugin_manager
|
||||||
from heat.tests.common import HeatTestCase
|
from heat.tests.common import HeatTestCase
|
||||||
|
|
||||||
|
@ -95,7 +97,7 @@ class TestPluginManager(HeatTestCase):
|
||||||
|
|
||||||
all_items = pm.load_all(mgr)
|
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)
|
self.assertNotIn(item, all_items)
|
||||||
|
|
||||||
def test_load_all(self):
|
def test_load_all(self):
|
||||||
|
@ -111,5 +113,5 @@ class TestPluginManager(HeatTestCase):
|
||||||
|
|
||||||
all_items = pm.load_all(mgr)
|
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)
|
self.assertIn(item, all_items)
|
||||||
|
|
|
@ -1357,7 +1357,7 @@ class FakeVolume(object):
|
||||||
def __init__(self, initial_status, final_status, **attrs):
|
def __init__(self, initial_status, final_status, **attrs):
|
||||||
self.status = initial_status
|
self.status = initial_status
|
||||||
self.final_status = final_status
|
self.final_status = final_status
|
||||||
for key, value in attrs.iteritems():
|
for key, value in six.iteritems(attrs):
|
||||||
setattr(self, key, value)
|
setattr(self, key, value)
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
|
@ -1381,7 +1381,7 @@ class FakeLatencyVolume(object):
|
||||||
raise exception.Error('life_cycle should not be an empty tuple.')
|
raise exception.Error('life_cycle should not be an empty tuple.')
|
||||||
self.life_cycle = iter(life_cycle)
|
self.life_cycle = iter(life_cycle)
|
||||||
self.status = next(self.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)
|
setattr(self, key, value)
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
|
|
Loading…
Reference in New Issue