diff --git a/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py b/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py index b356428884..a73474eafd 100644 --- a/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py +++ b/contrib/rackspace/rackspace/resources/cloud_loadbalancer.py @@ -801,7 +801,7 @@ class CloudLoadBalancer(resource.Resource): old_props = {} new_props = {} - for prop in six.iterkeys(prop_diff): + for prop in prop_diff: if prop in self.LB_UPDATE_PROPS: old_props[prop] = getattr(lb, prop) new_props[prop] = prop_diff[prop] @@ -831,8 +831,8 @@ class CloudLoadBalancer(resource.Resource): node[self.NODE_PORT]), node) for node in diff_nodes) - old_set = set(six.iterkeys(old)) - new_set = set(six.iterkeys(new)) + old_set = set(old) + new_set = set(new) deleted = old_set.difference(new_set) added = new_set.difference(old_set) @@ -900,8 +900,7 @@ class CloudLoadBalancer(resource.Resource): for node in updated: node_changed = False - for attribute in six.iterkeys(new[node]): - new_value = new[node][attribute] + for attribute, new_value in new[node].items(): if new_value and new_value != getattr(old[node], attribute): node_changed = True setattr(old[node], attribute, new_value) diff --git a/contrib/rackspace/rackspace/tests/test_cloud_loadbalancer.py b/contrib/rackspace/rackspace/tests/test_cloud_loadbalancer.py index ee5cbff4c1..0837535033 100644 --- a/contrib/rackspace/rackspace/tests/test_cloud_loadbalancer.py +++ b/contrib/rackspace/rackspace/tests/test_cloud_loadbalancer.py @@ -1379,7 +1379,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_health_monitor_delete(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) hm = {'type': "HTTP", 'delay': 10, 'timeout': 10, 'attemptsBeforeDeactivation': 4, 'path': "/", 'statusRegex': "^[234][0-9][0-9]$", 'bodyRegex': ".* testing .*", @@ -1433,7 +1433,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_session_persistence_delete(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) template['Resources'][lb_name]['Properties'][ 'sessionPersistence'] = "SOURCE_IP" expected_body = copy.deepcopy(self.expected_body) @@ -1493,7 +1493,7 @@ class LoadBalancerTest(common.HeatTestCase): 'securePort': 443, 'privatekey': private_key, 'certificate': cert, 'intermediateCertificate': '', 'secureTrafficOnly': False} ssl_termination_api = copy.deepcopy(ssl_termination_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) template['Resources'][lb_name]['Properties']['sslTermination'] = ( ssl_termination_template) # The SSL termination config is done post-creation, so no need @@ -1563,7 +1563,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_metadata_delete(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) template['Resources'][lb_name]['Properties']['metadata'] = { 'a': 1, 'b': 2} expected_body = copy.deepcopy(self.expected_body) @@ -1622,7 +1622,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_errorpage_delete(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) error_page = ( 'Service Unavailable

' 'Service Unavailable

The service is unavailable') @@ -1685,7 +1685,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_connection_logging_delete(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) template['Resources'][lb_name]['Properties'][ 'connectionLogging'] = True expected_body = copy.deepcopy(self.expected_body) @@ -1718,7 +1718,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_connection_logging_disable(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) template['Resources'][lb_name]['Properties'][ 'connectionLogging'] = True expected_body = copy.deepcopy(self.expected_body) @@ -1773,7 +1773,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_connection_throttle_delete(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) template['Resources'][lb_name]['Properties'][ 'connectionThrottle'] = {'maxConnections': 1000} expected_body = copy.deepcopy(self.expected_body) @@ -1833,7 +1833,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_content_caching_deleted(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) template['Resources'][lb_name]['Properties'][ 'contentCaching'] = 'ENABLED' # Enabling the content cache is done post-creation, so no need @@ -1864,7 +1864,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_content_caching_disable(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) template['Resources'][lb_name]['Properties'][ 'contentCaching'] = 'ENABLED' # Enabling the content cache is done post-creation, so no need @@ -2168,7 +2168,7 @@ class LoadBalancerTest(common.HeatTestCase): def test_update_nodes_defaults(self): template = copy.deepcopy(self.lb_template) - lb_name = list(six.iterkeys(template['Resources']))[0] + lb_name = next(iter(template['Resources'])) tmpl_node = template['Resources'][lb_name]['Properties']['nodes'][0] tmpl_node['type'] = "PRIMARY" tmpl_node['condition'] = "ENABLED" diff --git a/doc/source/ext/resources.py b/doc/source/ext/resources.py index ca4b0e3605..f4a057d272 100644 --- a/doc/source/ext/resources.py +++ b/doc/source/ext/resources.py @@ -163,7 +163,7 @@ class ResourcePages(compat.Directive): def contribute_hot_syntax(self, parent): section = self._section(parent, _('HOT Syntax'), '%s-hot') props = [] - for prop_key in sorted(six.iterkeys(self.props_schemata)): + for prop_key in sorted(self.props_schemata.keys()): prop = self.props_schemata[prop_key] if (prop.implemented and prop.support_status.status == support.SUPPORTED): @@ -363,7 +363,7 @@ def _filter_resources(prefix=None, path=None, statuses=None): statuses = statuses or [] filtered_resources = {} - for name in sorted(six.iterkeys(all_resources)): + for name in sorted(all_resources.keys()): if prefix_match(name): for cls in all_resources.get(name): if (path_match(cls) and status_match(cls) and diff --git a/heat/api/cloudwatch/watch.py b/heat/api/cloudwatch/watch.py index aa3d073d9c..7ca6488d57 100644 --- a/heat/api/cloudwatch/watch.py +++ b/heat/api/cloudwatch/watch.py @@ -66,8 +66,8 @@ class WatchController(object): """ newdims = [] for count, d in enumerate(dims, 1): - for key in six.iterkeys(d): - newdims.append({'Name': key, 'Value': d[key]}) + for key, value in d.items(): + newdims.append({'Name': key, 'Value': value}) return newdims def delete_alarms(self, req): @@ -302,7 +302,7 @@ class WatchController(object): msg = _('Invalid state %(state)s, ' 'expecting one of %(expect)s') % { 'state': state, - 'expect': list(six.iterkeys(state_map))} + 'expect': list(state_map.keys())} LOG.error(msg) return exception.HeatInvalidParameterValueError(msg) diff --git a/heat/engine/api.py b/heat/engine/api.py index 42f2d913ba..5972bc788f 100644 --- a/heat/engine/api.py +++ b/heat/engine/api.py @@ -290,7 +290,7 @@ def format_resource_attributes(resource, with_attr=None): # including the ones are not represented in response of show API, such as # 'console_urls' for nova server, user can view it by taking with_attr # parameter - if 'show' in six.iterkeys(resolver): + if 'show' in resolver: show_attr = resolve('show', resolver) # check if 'show' resolved to dictionary. so it's not None if isinstance(show_attr, collections.Mapping): @@ -302,7 +302,7 @@ def format_resource_attributes(resource, with_attr=None): # remove 'show' attribute if it's None or not a mapping # then resolve all attributes manually del resolver._attributes['show'] - attributes = set(list(six.iterkeys(resolver)) + with_attr) + attributes = set(resolver) | set(with_attr) return dict((attr, resolve(attr, resolver)) for attr in attributes) @@ -315,7 +315,7 @@ def format_resource_properties(resource): return None return dict((prop, get_property(prop)) - for prop in six.iterkeys(resource.properties_schema)) + for prop in resource.properties_schema.keys()) def format_stack_resource(resource, detail=True, with_props=False, diff --git a/heat/engine/cfn/functions.py b/heat/engine/cfn/functions.py index f1f02299ab..35627f1662 100644 --- a/heat/engine/cfn/functions.py +++ b/heat/engine/cfn/functions.py @@ -221,7 +221,7 @@ class GetAtt(function.Function): attr = function.resolve(self._attribute) from heat.engine import resource if (type(res).get_attribute == resource.Resource.get_attribute and - attr not in six.iterkeys(res.attributes_schema)): + attr not in res.attributes_schema): raise exception.InvalidTemplateAttribute( resource=self._resource_name, key=attr) diff --git a/heat/engine/cfn/template.py b/heat/engine/cfn/template.py index e579532915..5526316b02 100644 --- a/heat/engine/cfn/template.py +++ b/heat/engine/cfn/template.py @@ -155,8 +155,7 @@ class CfnTemplate(template.Template): deletion_policy = function.resolve(data.get(RES_DELETION_POLICY)) if deletion_policy is not None: - if deletion_policy not in six.iterkeys( - self.deletion_policies): + if deletion_policy not in self.deletion_policies: msg = _('Invalid deletion policy "%s"') % deletion_policy raise exception.StackValidationFailed(message=msg) else: diff --git a/heat/engine/clients/os/nova.py b/heat/engine/clients/os/nova.py index 4d63335a40..d3b7c4170a 100644 --- a/heat/engine/clients/os/nova.py +++ b/heat/engine/clients/os/nova.py @@ -535,8 +535,7 @@ echo -e '%s\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers """Delete/Add the metadata in nova as needed.""" metadata = self.meta_serialize(metadata) current_md = server.metadata - to_del = sorted([key for key in six.iterkeys(current_md) - if key not in metadata]) + to_del = sorted(set(current_md) - set(metadata)) client = self.client() if len(to_del) > 0: client.servers.delete_meta(server, to_del) diff --git a/heat/engine/environment.py b/heat/engine/environment.py index b406848b5f..7a29290d8b 100644 --- a/heat/engine/environment.py +++ b/heat/engine/environment.py @@ -306,8 +306,8 @@ class ResourceRegistry(object): if info is None: if name.endswith('*'): # delete all matching entries. - for res_name in list(six.iterkeys(registry)): - if (isinstance(registry[res_name], ResourceInfo) and + for res_name, reg_info in list(registry.items()): + if (isinstance(reg_info, ResourceInfo) and res_name.startswith(name[:-1])): LOG.warning(_LW('Removing %(item)s from %(path)s'), { 'item': res_name, @@ -469,7 +469,7 @@ class ResourceRegistry(object): # handle: "OS::*" -> "Dreamhost::*" def is_a_glob(resource_type): return resource_type.endswith('*') - globs = six.moves.filter(is_a_glob, six.iterkeys(self._registry)) + globs = six.moves.filter(is_a_glob, iter(self._registry)) for pattern in globs: if self._registry[pattern].matches(resource_type): yield self._registry[pattern] diff --git a/heat/engine/parameters.py b/heat/engine/parameters.py index 11fde01cba..33bcc2f1e0 100644 --- a/heat/engine/parameters.py +++ b/heat/engine/parameters.py @@ -501,9 +501,9 @@ class Parameters(collections.Mapping): self.non_pseudo_param_keys = [p for p in self.params if p not in self.PSEUDO_PARAMETERS] - for pd in six.iterkeys(param_defaults): - if pd in self.params: - self.params[pd].set_default(param_defaults[pd]) + for pd_name, param_default in param_defaults.items(): + if pd_name in self.params: + self.params[pd_name].set_default(param_default) def validate(self, validate_value=True, context=None): """Validates all parameters. diff --git a/heat/engine/resources/openstack/heat/software_deployment.py b/heat/engine/resources/openstack/heat/software_deployment.py index 2984471d6c..695563b14a 100644 --- a/heat/engine/resources/openstack/heat/software_deployment.py +++ b/heat/engine/resources/openstack/heat/software_deployment.py @@ -12,7 +12,6 @@ # under the License. import copy -import six import uuid from oslo_config import cfg @@ -636,7 +635,7 @@ class SoftwareDeploymentGroup(resource_group.ResourceGroup): return len(self.properties.get(self.SERVERS, {})) def _resource_names(self): - return six.iterkeys(self.properties.get(self.SERVERS, {})) + return iter(self.properties.get(self.SERVERS, {})) def get_resource_def(self, include_all=False): return dict(self.properties) diff --git a/heat/engine/resources/openstack/mistral/workflow.py b/heat/engine/resources/openstack/mistral/workflow.py index 8c22699c43..1c43be333b 100644 --- a/heat/engine/resources/openstack/mistral/workflow.py +++ b/heat/engine/resources/openstack/mistral/workflow.py @@ -380,7 +380,7 @@ class Workflow(signal_responder.SignalResponder, raise exception.StackValidationFailed( error=_('Signal data error'), message=message) - for key in six.iterkeys(inputs): + for key in inputs: if (self.properties.get(self.INPUT) is None or key not in self.properties.get(self.INPUT)): message = _('Unknown input %s') % key diff --git a/heat/engine/resources/openstack/neutron/loadbalancer.py b/heat/engine/resources/openstack/neutron/loadbalancer.py index 72cfb00bee..46b8e299fe 100644 --- a/heat/engine/resources/openstack/neutron/loadbalancer.py +++ b/heat/engine/resources/openstack/neutron/loadbalancer.py @@ -11,8 +11,6 @@ # License for the specific language governing permissions and limitations # under the License. -import six - from heat.common import exception from heat.common.i18n import _ from heat.engine import attributes @@ -780,7 +778,7 @@ class LoadBalancer(resource.Resource): new_props[self.MEMBERS] is not None)): members = set(new_props[self.MEMBERS] or []) rd_members = self.data() - old_members = set(six.iterkeys(rd_members)) + old_members = set(rd_members) for member in old_members - members: member_id = rd_members[member] with self.client_plugin().ignore_not_found: diff --git a/heat/engine/resources/openstack/neutron/neutron.py b/heat/engine/resources/openstack/neutron/neutron.py index 740cafaad3..0ff8d7cc98 100644 --- a/heat/engine/resources/openstack/neutron/neutron.py +++ b/heat/engine/resources/openstack/neutron/neutron.py @@ -10,7 +10,6 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import six from heat.common import exception from heat.common.i18n import _ @@ -38,12 +37,11 @@ class NeutronResource(resource.Resource): Also ensures that shared and tenant_id is not specified in value_specs. """ - if 'value_specs' in six.iterkeys(properties): - vs = properties.get('value_specs') - banned_keys = set(['shared', 'tenant_id']).union( - six.iterkeys(properties)) - for k in banned_keys.intersection(six.iterkeys(vs)): - return '%s not allowed in value_specs' % k + if 'value_specs' in properties: + banned_keys = set(['shared', 'tenant_id']).union(set(properties)) + found = banned_keys.intersection(set(properties['value_specs'])) + if found: + return '%s not allowed in value_specs' % ', '.join(found) @staticmethod def prepare_properties(properties, name): @@ -58,7 +56,7 @@ class NeutronResource(resource.Resource): props = dict((k, v) for k, v in properties.items() if v is not None) - if 'name' in six.iterkeys(properties): + if 'name' in properties: props.setdefault('name', name) if 'value_specs' in props: diff --git a/heat/engine/resources/openstack/senlin/cluster.py b/heat/engine/resources/openstack/senlin/cluster.py index 2c00aa58cf..224dcae37a 100644 --- a/heat/engine/resources/openstack/senlin/cluster.py +++ b/heat/engine/resources/openstack/senlin/cluster.py @@ -233,13 +233,13 @@ class Cluster(resource.Resource): if not updaters: return True - for k in six.iterkeys(updaters): - if not updaters[k]['start']: - action_id = start_action(k, updaters[k]['params']) - updaters[k]['action'] = action_id - updaters[k]['start'] = True + for k, updater in list(updaters.items()): + if not updater['start']: + action_id = start_action(k, updater['params']) + updater['action'] = action_id + updater['start'] = True else: - action = self.client().get_action(updaters[k]['action']) + action = self.client().get_action(updater['action']) if action.status == self.ACTION_SUCCEEDED: del updaters[k] elif action.status == self.ACTION_FAILED: diff --git a/heat/engine/stack.py b/heat/engine/stack.py index 956bf2979f..28f146e46e 100644 --- a/heat/engine/stack.py +++ b/heat/engine/stack.py @@ -748,8 +748,7 @@ class Stack(collections.Mapping): self.t.validate_resource_definitions(self) # Check duplicate names between parameters and resources - dup_names = (set(six.iterkeys(self.parameters)) & - set(six.iterkeys(self))) + dup_names = set(self.parameters) & set(self.keys()) if dup_names: LOG.debug("Duplicate names %s" % dup_names) diff --git a/heat/engine/template.py b/heat/engine/template.py index 39bd2b660b..fb941ce13f 100644 --- a/heat/engine/template.py +++ b/heat/engine/template.py @@ -66,7 +66,7 @@ class TemplatePluginNotRegistered(exception.HeatException): def get_template_class(template_data): - available_versions = list(six.iterkeys(_template_classes)) + available_versions = _template_classes.keys() version = get_version(template_data, available_versions) version_type = version[0] try: @@ -114,8 +114,7 @@ class Template(collections.Mapping): self.maps = self[self.MAPPINGS] self.env = env or environment.Environment({}) - self.version = get_version(self.t, - list(six.iterkeys(_template_classes))) + self.version = get_version(self.t, _template_classes.keys()) self.t_digest = None def __deepcopy__(self, memo): @@ -257,7 +256,7 @@ class Template(collections.Mapping): return # check top-level sections - for k in six.iterkeys(self.t): + for k in self.t.keys(): if k not in self.SECTIONS: raise exception.InvalidTemplateSection(section=k) diff --git a/heat/tests/api/cloudwatch/test_api_cloudwatch.py b/heat/tests/api/cloudwatch/test_api_cloudwatch.py index 568d270453..edebd1bf7d 100644 --- a/heat/tests/api/cloudwatch/test_api_cloudwatch.py +++ b/heat/tests/api/cloudwatch/test_api_cloudwatch.py @@ -12,7 +12,6 @@ # under the License. import os -import six from oslo_config import fixture as config_fixture @@ -500,7 +499,7 @@ class WatchControllerTest(common.HeatTestCase): 'ALARM': rpc_api.WATCH_STATE_ALARM, 'INSUFFICIENT_DATA': rpc_api.WATCH_STATE_NODATA} - for state in six.iterkeys(state_map): + for state in state_map: params = {u'StateValue': state, u'StateReason': u'', u'AlarmName': u'HttpFailureAlarm', diff --git a/heat/tests/aws/test_user.py b/heat/tests/aws/test_user.py index 78d75ffe19..6e126c28bd 100644 --- a/heat/tests/aws/test_user.py +++ b/heat/tests/aws/test_user.py @@ -13,7 +13,6 @@ import mock from oslo_config import cfg -import six from heat.common import exception from heat.common import short_id @@ -346,7 +345,7 @@ class AccessKeyTest(common.HeatTestCase): rs_data = resource_data_object.ResourceData.get_all(rsrc) self.assertEqual(self.fc.secret, rs_data.get('secret_key')) self.assertEqual(self.fc.credential_id, rs_data.get('credential_id')) - self.assertEqual(2, len(list(six.iterkeys(rs_data)))) + self.assertEqual(2, len(rs_data.keys())) self.assertEqual(utils.PhysName(stack.name, 'CfnUser'), rsrc.FnGetAtt('UserName')) diff --git a/heat/tests/openstack/nova/fakes.py b/heat/tests/openstack/nova/fakes.py index 8192654634..1a871c24a1 100644 --- a/heat/tests/openstack/nova/fakes.py +++ b/heat/tests/openstack/nova/fakes.py @@ -18,7 +18,6 @@ import mock from novaclient import client as base_client from novaclient import exceptions as nova_exceptions import requests -import six from six.moves.urllib import parse as urlparse from heat.tests import fakes @@ -245,19 +244,19 @@ class FakeHTTPClient(base_client.HTTPClient): def post_servers_1234_action(self, body, **kw): _body = None resp = 202 - assert len(list(six.iterkeys(body))) == 1 - action = list(six.iterkeys(body))[0] + assert len(body.keys()) == 1 + action = next(iter(body)) if action == 'reboot': - assert list(six.iterkeys(body[action])) == ['type'] + assert list(body[action].keys()) == ['type'] assert body[action]['type'] in ['HARD', 'SOFT'] elif action == 'rebuild': - keys = list(six.iterkeys(body[action])) + keys = list(body[action].keys()) if 'adminPass' in keys: keys.remove('adminPass') assert keys == ['imageRef'] _body = self.get_servers_1234()[1] elif action == 'resize': - assert list(six.iterkeys(body[action])) == ['flavorRef'] + assert list(body[action].keys()) == ['flavorRef'] elif action == 'confirmResize': assert body[action] is None # This one method returns a different response code @@ -270,27 +269,27 @@ class FakeHTTPClient(base_client.HTTPClient): ]: assert body[action] is None elif action == 'addFixedIp': - assert list(six.iterkeys(body[action])) == ['networkId'] + assert list(body[action].keys()) == ['networkId'] elif action in ['removeFixedIp', 'addFloatingIp', 'removeFloatingIp', ]: - assert list(six.iterkeys(body[action])) == ['address'] + assert list(body[action].keys()) == ['address'] elif action == 'createImage': - assert set(six.iterkeys(body[action])) == set(['name', 'metadata']) + assert set(body[action].keys()) == set(['name', 'metadata']) resp = {"status": 202, "location": "http://blah/images/456"} elif action == 'changePassword': - assert list(six.iterkeys(body[action])) == ['adminPass'] + assert list(body[action].keys()) == ['adminPass'] elif action == 'os-getConsoleOutput': - assert list(six.iterkeys(body[action])) == ['length'] + assert list(body[action].keys()) == ['length'] return (202, {'output': 'foo'}) elif action == 'os-getVNCConsole': - assert list(six.iterkeys(body[action])) == ['type'] + assert list(body[action].keys()) == ['type'] elif action == 'os-migrateLive': - assert set(six.iterkeys(body[action])) == set(['host', - 'block_migration', - 'disk_over_commit']) + assert set(body[action].keys()) == set(['host', + 'block_migration', + 'disk_over_commit']) else: raise AssertionError("Unexpected server action: %s" % action) return (resp, _body) @@ -298,8 +297,8 @@ class FakeHTTPClient(base_client.HTTPClient): def post_servers_5678_action(self, body, **kw): _body = None resp = 202 - assert len(list(six.iterkeys(body))) == 1 - action = list(six.iterkeys(body))[0] + assert len(body.keys()) == 1 + action = next(iter(body)) if action in ['addFloatingIp', 'removeFloatingIp', ]: diff --git a/heat/tests/openstack/nova/test_server.py b/heat/tests/openstack/nova/test_server.py index 02c4b6128f..d085382179 100644 --- a/heat/tests/openstack/nova/test_server.py +++ b/heat/tests/openstack/nova/test_server.py @@ -2863,7 +2863,7 @@ class ServersTest(common.HeatTestCase): supported_consoles = ('novnc', 'xvpvnc', 'spice-html5', 'rdp-html5', 'serial') self.assertEqual(set(supported_consoles), - set(six.iterkeys(console_urls))) + set(console_urls)) def test_resolve_attribute_networks(self): return_server = self.fc.servers.list()[1] diff --git a/heat/tests/test_engine_api_utils.py b/heat/tests/test_engine_api_utils.py index 22ac06aaa2..fbad8b78de 100644 --- a/heat/tests/test_engine_api_utils.py +++ b/heat/tests/test_engine_api_utils.py @@ -88,10 +88,10 @@ class FormatTest(common.HeatTestCase): ))) formatted = api.format_stack_resource(res, True) - self.assertEqual(resource_details_keys, set(six.iterkeys(formatted))) + self.assertEqual(resource_details_keys, set(formatted.keys())) formatted = api.format_stack_resource(res, False) - self.assertEqual(resource_keys, set(six.iterkeys(formatted))) + self.assertEqual(resource_keys, set(formatted.keys())) self.assertEqual(self.stack.created_time.isoformat(), formatted[rpc_api.RES_CREATION_TIME]) self.assertEqual(self.stack.updated_time.isoformat(), @@ -232,7 +232,7 @@ class FormatTest(common.HeatTestCase): rpc_api.RES_REQUIRED_BY)) formatted = api.format_stack_resource(res, False) - self.assertEqual(resource_keys, set(six.iterkeys(formatted))) + self.assertEqual(resource_keys, set(formatted.keys())) def test_format_stack_resource_with_nested_stack_not_found(self): res = self.stack['generic4'] @@ -255,7 +255,7 @@ class FormatTest(common.HeatTestCase): formatted = api.format_stack_resource(res, False) # 'nested_stack_id' is not in formatted - self.assertEqual(resource_keys, set(six.iterkeys(formatted))) + self.assertEqual(resource_keys, set(formatted.keys())) def test_format_stack_resource_with_nested_stack_empty(self): res = self.stack['generic4'] @@ -300,7 +300,7 @@ class FormatTest(common.HeatTestCase): rpc_api.EVENT_RES_PROPERTIES)) formatted = api.format_event(event) - self.assertEqual(event_keys, set(six.iterkeys(formatted))) + self.assertEqual(event_keys, set(formatted.keys())) event_id_formatted = formatted[rpc_api.EVENT_ID] event_identifier = identifier.EventIdentifier( diff --git a/heat/tests/test_hot.py b/heat/tests/test_hot.py index 351087c7cb..9079d40826 100644 --- a/heat/tests/test_hot.py +++ b/heat/tests/test_hot.py @@ -1158,7 +1158,7 @@ class HOTemplateTest(common.HeatTestCase): {'foo': {'Type': 'String', 'Required': True}}}) self.assertEqual(expected_description, tmpl['description']) - self.assertNotIn('parameters', six.iterkeys(tmpl)) + self.assertNotIn('parameters', tmpl.keys()) def test_invalid_hot_version(self): """Test HOT version check. @@ -1241,7 +1241,7 @@ class HOTemplateTest(common.HeatTestCase): self.resolve, snippet, stack.t, stack) - self.assertIn(list(six.iterkeys(snippet))[0], six.text_type(error)) + self.assertIn(next(iter(snippet)), six.text_type(error)) def test_resource_facade_missing_deletion_policy(self): snippet = {'resource_facade': 'deletion_policy'} @@ -1266,7 +1266,7 @@ class HOTemplateTest(common.HeatTestCase): error = self.assertRaises(exception.InvalidTemplateVersion, function.validate, stack.t.parse(stack, snippet)) - self.assertIn(next(six.iterkeys(snippet)), six.text_type(error)) + self.assertIn(next(iter(snippet)), six.text_type(error)) def test_add_resource(self): hot_tpl = template_format.parse(''' diff --git a/heat/tests/test_signal.py b/heat/tests/test_signal.py index 0ce01a515f..de49db5798 100644 --- a/heat/tests/test_signal.py +++ b/heat/tests/test_signal.py @@ -121,7 +121,7 @@ class SignalTest(common.HeatTestCase): self.assertEqual('verysecret', rs_data.get('secret_key')) self.assertEqual('1234', rs_data.get('user_id')) self.assertEqual(rsrc.resource_id, rs_data.get('user_id')) - self.assertEqual(4, len(list(six.iterkeys(rs_data)))) + self.assertEqual(4, len(rs_data)) def test_get_user_id(self): # Setup diff --git a/heat/tests/test_template.py b/heat/tests/test_template.py index 09f2bf06e3..a47ed41e1f 100644 --- a/heat/tests/test_template.py +++ b/heat/tests/test_template.py @@ -897,7 +897,7 @@ class TemplateTest(common.HeatTestCase): template.Template(empty_template)) error = self.assertRaises(ValueError, self.resolve, snippet, stk.t, stk) - self.assertIn(list(six.iterkeys(snippet))[0], six.text_type(error)) + self.assertIn(next(iter(snippet)), six.text_type(error)) def test_resource_facade_missing_deletion_policy(self): snippet = {'Fn::ResourceFacade': 'DeletionPolicy'} @@ -937,7 +937,7 @@ class TemplateTest(common.HeatTestCase): } }) self.assertEqual(expected_description, tmpl['Description']) - self.assertNotIn('Parameters', six.iterkeys(tmpl)) + self.assertNotIn('Parameters', tmpl.keys()) def test_add_resource(self): cfn_tpl = template_format.parse(''' @@ -1158,8 +1158,7 @@ class TemplateFnErrorTest(common.HeatTestCase): error = self.assertRaises(self.expect, resolve, self.snippet) - self.assertIn(list(six.iterkeys(self.snippet))[0], - six.text_type(error)) + self.assertIn(next(iter(self.snippet)), six.text_type(error)) class ResolveDataTest(common.HeatTestCase): diff --git a/heat/tests/test_template_format.py b/heat/tests/test_template_format.py index 2838dbb6f0..d3b8afe037 100644 --- a/heat/tests/test_template_format.py +++ b/heat/tests/test_template_format.py @@ -202,7 +202,7 @@ class JsonYamlResolvedCompareTest(common.HeatTestCase): del(t2nr['Resources']) self.assertEqual(t1nr, t2nr) - self.assertEqual(set(six.iterkeys(stack1)), set(six.iterkeys(stack2))) + self.assertEqual(set(stack1), set(stack2)) for key in stack1: self.assertEqual(stack1[key].t, stack2[key].t)