From 574312165b4c2c3ab7aec08a066677d11f477bc5 Mon Sep 17 00:00:00 2001 From: fpxie Date: Tue, 18 Apr 2017 16:21:31 +0800 Subject: [PATCH] Replace six.iteritems with dict.items(Part-2) according to https://wiki.openstack.org/wiki/Python3, now we should avoid using six.iteritems and replace it with dict.items. Change-Id: I58a399baa2275f280acc0e6d649f81838648ce5c Closes-Bug: #1680761 --- neutron/agent/common/ovs_lib.py | 2 +- neutron/agent/l3/router_info.py | 4 +--- neutron/agent/linux/dhcp.py | 2 +- neutron/agent/linux/iptables_firewall.py | 6 ++---- neutron/agent/linux/iptables_manager.py | 3 +-- neutron/agent/linux/keepalived.py | 3 +-- neutron/agent/linux/pd.py | 6 +++--- neutron/agent/ovsdb/impl_vsctl.py | 2 +- neutron/agent/ovsdb/native/commands.py | 3 +-- neutron/agent/ovsdb/native/idlutils.py | 2 +- neutron/api/extensions.py | 9 ++++----- neutron/api/rpc/agentnotifiers/metering_rpc_agent_api.py | 3 +-- neutron/api/rpc/handlers/l3_rpc.py | 3 +-- neutron/api/v2/attributes.py | 5 ++--- neutron/api/v2/base.py | 9 ++++----- neutron/api/v2/router.py | 3 +-- neutron/db/_utils.py | 3 +-- neutron/db/agents_db.py | 5 ++--- neutron/db/common_db_mixin.py | 2 +- neutron/db/l3_agentschedulers_db.py | 3 +-- neutron/db/l3_db.py | 2 +- neutron/pecan_wsgi/controllers/root.py | 3 +-- .../ml2/drivers/mech_sriov/agent/eswitch_manager.py | 3 +-- .../ml2/drivers/mech_sriov/agent/sriov_nic_agent.py | 2 +- .../ml2/drivers/openvswitch/agent/ovs_neutron_agent.py | 3 +-- neutron/plugins/ml2/managers.py | 3 +-- neutron/policy.py | 2 +- .../metering/drivers/iptables/iptables_driver.py | 3 +-- neutron/tests/base.py | 6 +++--- neutron/tests/common/config_fixtures.py | 6 +++--- neutron/tests/unit/db/test_rbac_db_mixin.py | 3 +-- 31 files changed, 46 insertions(+), 68 deletions(-) diff --git a/neutron/agent/common/ovs_lib.py b/neutron/agent/common/ovs_lib.py index e64801ed09e..b1c15677cd2 100644 --- a/neutron/agent/common/ovs_lib.py +++ b/neutron/agent/common/ovs_lib.py @@ -737,7 +737,7 @@ def _build_flow_expr_str(flow_dict, cmd): raise exceptions.InvalidInput(error_message=msg) actions = "actions=%s" % flow_dict.pop('actions') - for key, value in six.iteritems(flow_dict): + for key, value in flow_dict.items(): if key == 'proto': flow_expr_arr.append(value) else: diff --git a/neutron/agent/l3/router_info.py b/neutron/agent/l3/router_info.py index 45ce625103d..5540819a0d8 100644 --- a/neutron/agent/l3/router_info.py +++ b/neutron/agent/l3/router_info.py @@ -18,8 +18,6 @@ from neutron_lib import constants as lib_constants from neutron_lib.utils import helpers from oslo_log import log as logging -import six - from neutron._i18n import _, _LE, _LW from neutron.agent.l3 import namespaces from neutron.agent.linux import ip_lib @@ -1027,7 +1025,7 @@ class RouterInfo(object): iptables['filter'].add_rule( 'scope', self.address_scope_filter_rule(device_name, mark)) - for subnet_id, prefix in six.iteritems(self.pd_subnets): + for subnet_id, prefix in self.pd_subnets.items(): if prefix != n_const.PROVISIONAL_IPV6_PD_PREFIX: self._process_pd_iptables_rules(prefix, subnet_id) diff --git a/neutron/agent/linux/dhcp.py b/neutron/agent/linux/dhcp.py index 6628a8d858f..55b7629e7ac 100644 --- a/neutron/agent/linux/dhcp.py +++ b/neutron/agent/linux/dhcp.py @@ -78,7 +78,7 @@ class DictModel(dict): else: return item - for key, value in six.iteritems(self): + for key, value in self.items(): if isinstance(value, (list, tuple)): # Keep the same type but convert dicts to DictModels self[key] = type(value)( diff --git a/neutron/agent/linux/iptables_firewall.py b/neutron/agent/linux/iptables_firewall.py index 82ae44907f7..5c5522e51c1 100644 --- a/neutron/agent/linux/iptables_firewall.py +++ b/neutron/agent/linux/iptables_firewall.py @@ -20,7 +20,6 @@ from neutron_lib import constants from oslo_config import cfg from oslo_log import log as logging from oslo_utils import netutils -import six from neutron._i18n import _LI from neutron.agent import firewall @@ -714,7 +713,7 @@ class IptablesFirewallDriver(firewall.FirewallDriver): remote_sgs_to_remove = self._determine_remote_sgs_to_remove( filtered_ports) - for ip_version, remote_sg_ids in six.iteritems(remote_sgs_to_remove): + for ip_version, remote_sg_ids in remote_sgs_to_remove.items(): if self.enable_ipset: self._remove_ipsets_for_remote_sgs(ip_version, remote_sg_ids) @@ -734,8 +733,7 @@ class IptablesFirewallDriver(firewall.FirewallDriver): constants.IPv6: set()} remote_group_id_sets = self._get_remote_sg_ids_sets_by_ipversion( filtered_ports) - for ip_version, remote_group_id_set in ( - six.iteritems(remote_group_id_sets)): + for ip_version, remote_group_id_set in remote_group_id_sets.items(): sgs_to_remove_per_ipversion[ip_version].update( set(self.pre_sg_members) - remote_group_id_set) return sgs_to_remove_per_ipversion diff --git a/neutron/agent/linux/iptables_manager.py b/neutron/agent/linux/iptables_manager.py index aa74d4642df..1162e7898df 100644 --- a/neutron/agent/linux/iptables_manager.py +++ b/neutron/agent/linux/iptables_manager.py @@ -29,7 +29,6 @@ from oslo_concurrency import lockutils from oslo_config import cfg from oslo_log import log as logging from oslo_utils import excutils -import six from neutron._i18n import _, _LE, _LW from neutron.agent.linux import ip_lib @@ -355,7 +354,7 @@ class IptablesManager(object): elif ip_version == 6: tables = self.ipv6 - for table, chains in six.iteritems(builtin_chains[ip_version]): + for table, chains in builtin_chains[ip_version].items(): for chain in chains: tables[table].add_chain(chain) tables[table].add_rule(chain, '-j $%s' % diff --git a/neutron/agent/linux/keepalived.py b/neutron/agent/linux/keepalived.py index 9713486c2cb..c5332911dc5 100644 --- a/neutron/agent/linux/keepalived.py +++ b/neutron/agent/linux/keepalived.py @@ -15,7 +15,6 @@ import errno import itertools import os -import six import netaddr from neutron_lib import exceptions @@ -425,7 +424,7 @@ class KeepalivedManager(object): def spawn(self): config_path = self._output_config_file() - for key, instance in six.iteritems(self.config.instances): + for key, instance in self.config.instances.items(): if instance.track_script: instance.track_script.write_check_script() diff --git a/neutron/agent/linux/pd.py b/neutron/agent/linux/pd.py index 0e6f6b71854..6ab46d08d00 100644 --- a/neutron/agent/linux/pd.py +++ b/neutron/agent/linux/pd.py @@ -153,7 +153,7 @@ class PrefixDelegation(object): if not self._is_pd_master_router(router): return prefix_update = {} - for subnet_id, pd_info in six.iteritems(router['subnets']): + for subnet_id, pd_info in router['subnets'].items(): self._delete_lla(router, pd_info.get_bind_lla_with_mask()) if pd_info.client_started: pd_info.driver.disable(self.pmon, router['ns_name']) @@ -289,13 +289,13 @@ class PrefixDelegation(object): LOG.debug("Processing IPv6 PD Prefix Update") prefix_update = {} - for router_id, router in six.iteritems(self.routers): + for router_id, router in self.routers.items(): if not (self._is_pd_master_router(router) and router['gw_interface']): continue llas = None - for subnet_id, pd_info in six.iteritems(router['subnets']): + for subnet_id, pd_info in router['subnets'].items(): if pd_info.client_started: prefix = pd_info.driver.get_prefix() if prefix != pd_info.prefix: diff --git a/neutron/agent/ovsdb/impl_vsctl.py b/neutron/agent/ovsdb/impl_vsctl.py index 125c2078951..e09370f095e 100644 --- a/neutron/agent/ovsdb/impl_vsctl.py +++ b/neutron/agent/ovsdb/impl_vsctl.py @@ -243,7 +243,7 @@ class OvsdbVsctl(ovsdb.API): for value in values: if isinstance(value, collections.Mapping): args += ["{}={}".format(ovsdb.py_to_val(k), ovsdb.py_to_val(v)) - for k, v in six.iteritems(value)] + for k, v in value.items()] else: args.append(ovsdb.py_to_val(value)) return BaseCommand(self.context, 'add', args=args) diff --git a/neutron/agent/ovsdb/native/commands.py b/neutron/agent/ovsdb/native/commands.py index 457c918868f..55a17567eb7 100644 --- a/neutron/agent/ovsdb/native/commands.py +++ b/neutron/agent/ovsdb/native/commands.py @@ -16,7 +16,6 @@ import collections from oslo_log import log as logging from oslo_utils import excutils -import six from neutron._i18n import _, _LE from neutron.agent.ovsdb import api @@ -284,7 +283,7 @@ class DbAddCommand(BaseCommand): # Since this operation depends on the previous value, verify() # must be called. field = getattr(record, self.column, {}) - for k, v in six.iteritems(value): + for k, v in value.items(): if k in field: continue field[k] = v diff --git a/neutron/agent/ovsdb/native/idlutils.py b/neutron/agent/ovsdb/native/idlutils.py index 4198c90c63c..87969fbc8dd 100644 --- a/neutron/agent/ovsdb/native/idlutils.py +++ b/neutron/agent/ovsdb/native/idlutils.py @@ -268,7 +268,7 @@ def db_replace_record(obj): api.Command object. """ if isinstance(obj, collections.Mapping): - for k, v in six.iteritems(obj): + for k, v in obj.items(): if isinstance(v, api.Command): obj[k] = v.result elif (isinstance(obj, collections.Sequence) diff --git a/neutron/api/extensions.py b/neutron/api/extensions.py index 0d5a7222ecf..fd45aa00804 100644 --- a/neutron/api/extensions.py +++ b/neutron/api/extensions.py @@ -23,7 +23,6 @@ from oslo_config import cfg from oslo_log import log as logging from oslo_middleware import base import routes -import six import webob.dec import webob.exc @@ -71,7 +70,7 @@ class ActionExtensionController(wsgi.Controller): def action(self, request, id): input_dict = self._deserialize(request.body, request.get_content_type()) - for action_name, handler in six.iteritems(self.action_handlers): + for action_name, handler in self.action_handlers.items(): if action_name in input_dict: return handler(input_dict, request, id) # no action handler found (bump to downstream application) @@ -113,7 +112,7 @@ class ExtensionController(wsgi.Controller): def index(self, request): extensions = [] - for _alias, ext in six.iteritems(self.extension_manager.extensions): + for _alias, ext in self.extension_manager.extensions.items(): extensions.append(self._translate(ext)) return dict(extensions=extensions) @@ -154,7 +153,7 @@ class ExtensionMiddleware(base.ConfigurableMiddleware): LOG.debug('Extended resource: %s', resource.collection) - for action, method in six.iteritems(resource.collection_actions): + for action, method in resource.collection_actions.items(): conditions = dict(method=[method]) path = "/%s/%s" % (resource.collection, action) with mapper.submapper(controller=resource.controller, @@ -345,7 +344,7 @@ class ExtensionManager(object): if check_optionals and optional_exts_set - set(processed_exts): continue extended_attrs = ext.get_extended_resources(version) - for res, resource_attrs in six.iteritems(extended_attrs): + for res, resource_attrs in extended_attrs.items(): attr_map.setdefault(res, {}).update(resource_attrs) processed_exts[ext_name] = ext del exts_to_process[ext_name] diff --git a/neutron/api/rpc/agentnotifiers/metering_rpc_agent_api.py b/neutron/api/rpc/agentnotifiers/metering_rpc_agent_api.py index c553a9af414..8a24da3521b 100644 --- a/neutron/api/rpc/agentnotifiers/metering_rpc_agent_api.py +++ b/neutron/api/rpc/agentnotifiers/metering_rpc_agent_api.py @@ -16,7 +16,6 @@ from neutron_lib import constants from neutron_lib.plugins import directory from oslo_log import log as logging import oslo_messaging -import six from neutron.common import rpc as n_rpc from neutron.common import topics @@ -57,7 +56,7 @@ class MeteringAgentNotifyAPI(object): l3_router.append(router) l3_routers[l3_agent.host] = l3_router - for host, routers in six.iteritems(l3_routers): + for host, routers in l3_routers.items(): cctxt = self.client.prepare(server=host) cctxt.cast(context, method, routers=routers) diff --git a/neutron/api/rpc/handlers/l3_rpc.py b/neutron/api/rpc/handlers/l3_rpc.py index e68f2ab8526..a41674c3046 100644 --- a/neutron/api/rpc/handlers/l3_rpc.py +++ b/neutron/api/rpc/handlers/l3_rpc.py @@ -21,7 +21,6 @@ from neutron_lib.plugins import directory from oslo_config import cfg from oslo_log import log as logging import oslo_messaging -import six from neutron.common import constants as n_const from neutron.common import utils @@ -214,7 +213,7 @@ class L3RpcCallback(object): def update_floatingip_statuses(self, context, router_id, fip_statuses): """Update operational status for a floating IP.""" with context.session.begin(subtransactions=True): - for (floatingip_id, status) in six.iteritems(fip_statuses): + for (floatingip_id, status) in fip_statuses.items(): LOG.debug("New status for floating IP %(floatingip_id)s: " "%(status)s", {'floatingip_id': floatingip_id, 'status': status}) diff --git a/neutron/api/v2/attributes.py b/neutron/api/v2/attributes.py index 40b3ec856a9..fde9a19fb8f 100644 --- a/neutron/api/v2/attributes.py +++ b/neutron/api/v2/attributes.py @@ -17,7 +17,6 @@ from neutron_lib.api import converters as lib_converters from neutron_lib.api import validators as lib_validators from neutron_lib import constants from neutron_lib.db import constants as db_const -import six import webob.exc from neutron._i18n import _ @@ -305,7 +304,7 @@ def get_collection_info(collection): def fill_default_value(attr_info, res_dict, exc_cls=ValueError, check_allow_post=True): - for attr, attr_vals in six.iteritems(attr_info): + for attr, attr_vals in attr_info.items(): if attr_vals['allow_post']: if 'default' not in attr_vals and attr not in res_dict: msg = _("Failed to parse request. Required " @@ -320,7 +319,7 @@ def fill_default_value(attr_info, res_dict, def convert_value(attr_info, res_dict, exc_cls=ValueError): - for attr, attr_vals in six.iteritems(attr_info): + for attr, attr_vals in attr_info.items(): if (attr not in res_dict or res_dict[attr] is constants.ATTR_NOT_SPECIFIED): continue diff --git a/neutron/api/v2/base.py b/neutron/api/v2/base.py index 2d0112e0193..5f8700c53c7 100644 --- a/neutron/api/v2/base.py +++ b/neutron/api/v2/base.py @@ -21,7 +21,6 @@ from neutron_lib import exceptions from oslo_log import log as logging from oslo_policy import policy as oslo_policy from oslo_utils import excutils -import six import webob.exc from neutron._i18n import _, _LE, _LI @@ -145,7 +144,7 @@ class Controller(object): self._resource) def _get_primary_key(self, default_primary_key='id'): - for key, value in six.iteritems(self._attr_info): + for key, value in self._attr_info.items(): if value.get('primary_key', False): return key return default_primary_key @@ -215,7 +214,7 @@ class Controller(object): def _filter_attributes(self, data, fields_to_strip=None): if not fields_to_strip: return data - return dict(item for item in six.iteritems(data) + return dict(item for item in data.items() if (item[0] not in fields_to_strip)) def _do_field_list(self, original_fields): @@ -625,7 +624,7 @@ class Controller(object): # Load object to check authz # but pass only attributes in the original body and required # by the policy engine to the policy 'brain' - field_list = [name for (name, value) in six.iteritems(self._attr_info) + field_list = [name for (name, value) in self._attr_info.items() if (value.get('required_by_policy') or value.get('primary_key') or 'default' not in value)] @@ -723,7 +722,7 @@ class Controller(object): attributes.fill_default_value(attr_info, res_dict, webob.exc.HTTPBadRequest) else: # PUT - for attr, attr_vals in six.iteritems(attr_info): + for attr, attr_vals in attr_info.items(): if attr in res_dict and not attr_vals['allow_put']: msg = _("Cannot update read-only attribute %s") % attr raise webob.exc.HTTPBadRequest(msg) diff --git a/neutron/api/v2/router.py b/neutron/api/v2/router.py index 0c2ec2fd1b2..7f9d4f7318e 100644 --- a/neutron/api/v2/router.py +++ b/neutron/api/v2/router.py @@ -18,7 +18,6 @@ from neutron_lib.plugins import directory from oslo_config import cfg from oslo_service import wsgi as base_wsgi import routes as routes_mapper -import six import six.moves.urllib.parse as urlparse import webob import webob.dec @@ -50,7 +49,7 @@ class Index(wsgi.Application): metadata = {} layout = [] - for name, collection in six.iteritems(self.resources): + for name, collection in self.resources.items(): href = urlparse.urljoin(req.path_url, collection) resource = {'name': name, 'collection': collection, diff --git a/neutron/db/_utils.py b/neutron/db/_utils.py index 5a5ee0f0e58..0e40810c8c9 100644 --- a/neutron/db/_utils.py +++ b/neutron/db/_utils.py @@ -19,7 +19,6 @@ import contextlib from oslo_log import log as logging from oslo_utils import excutils -import six from sqlalchemy.ext import associationproxy from neutron._i18n import _LE @@ -118,6 +117,6 @@ def filter_non_model_columns(data, model): """ columns = [c.name for c in model.__table__.columns] return dict((k, v) for (k, v) in - six.iteritems(data) if k in columns or + data.items() if k in columns or isinstance(getattr(model, k, None), associationproxy.AssociationProxy)) diff --git a/neutron/db/agents_db.py b/neutron/db/agents_db.py index 0928d25c90a..a0ff1c1e0cc 100644 --- a/neutron/db/agents_db.py +++ b/neutron/db/agents_db.py @@ -27,7 +27,6 @@ import oslo_messaging from oslo_serialization import jsonutils from oslo_utils import importutils from oslo_utils import timeutils -import six from sqlalchemy.orm import exc from sqlalchemy import sql @@ -111,8 +110,8 @@ class AgentAvailabilityZoneMixin(az_ext.AvailabilityZonePluginBase): return [{'state': 'available' if v else 'unavailable', 'name': k[0], 'resource': k[1], 'tenant_id': context.tenant_id} - for k, v in six.iteritems(self._list_availability_zones( - context, filters))] + for k, v in self._list_availability_zones( + context, filters).items()] @db_api.retry_if_session_inactive() def validate_availability_zones(self, context, resource_type, diff --git a/neutron/db/common_db_mixin.py b/neutron/db/common_db_mixin.py index 5b07f0f6d6a..c52427a8c53 100644 --- a/neutron/db/common_db_mixin.py +++ b/neutron/db/common_db_mixin.py @@ -109,7 +109,7 @@ class CommonDbMixin(object): def _apply_filters_to_query(self, query, model, filters, context=None): if filters: - for key, value in six.iteritems(filters): + for key, value in filters.items(): column = getattr(model, key, None) # NOTE(kevinbenton): if column is a hybrid property that # references another expression, attempting to convert to diff --git a/neutron/db/l3_agentschedulers_db.py b/neutron/db/l3_agentschedulers_db.py index f119ca87c00..cc5b89ffd61 100644 --- a/neutron/db/l3_agentschedulers_db.py +++ b/neutron/db/l3_agentschedulers_db.py @@ -19,7 +19,6 @@ from oslo_config import cfg from oslo_db import exception as db_exc from oslo_log import log as logging import oslo_messaging -import six import sqlalchemy as sa from sqlalchemy import func from sqlalchemy import or_ @@ -415,7 +414,7 @@ class L3AgentSchedulerDbMixin(l3agentscheduler.L3AgentSchedulerPluginBase, if active is not None: query = (query.filter(agent_model.Agent.admin_state_up == active)) if filters: - for key, value in six.iteritems(filters): + for key, value in filters.items(): column = getattr(agent_model.Agent, key, None) if column: if not value: diff --git a/neutron/db/l3_db.py b/neutron/db/l3_db.py index 2bf30cee057..b3f9e059c80 100644 --- a/neutron/db/l3_db.py +++ b/neutron/db/l3_db.py @@ -1378,7 +1378,7 @@ class L3_NAT_dbonly_mixin(l3.RouterPluginBase, marker_obj = self._get_marker_obj(context, 'floatingip', limit, marker) if filters is not None: - for key, val in six.iteritems(API_TO_DB_COLUMN_MAP): + for key, val in API_TO_DB_COLUMN_MAP.items(): if key in filters: filters[val] = filters.pop(key) diff --git a/neutron/pecan_wsgi/controllers/root.py b/neutron/pecan_wsgi/controllers/root.py index 44e714beef5..e0e0dce37ce 100644 --- a/neutron/pecan_wsgi/controllers/root.py +++ b/neutron/pecan_wsgi/controllers/root.py @@ -18,7 +18,6 @@ from oslo_config import cfg from oslo_log import log import pecan from pecan import request -import six import six.moves.urllib.parse as urlparse from neutron._i18n import _LW @@ -90,7 +89,7 @@ class V2Controller(object): pecan.abort(404) layout = [] - for name, collection in six.iteritems(attributes.CORE_RESOURCES): + for name, collection in attributes.CORE_RESOURCES.items(): href = urlparse.urljoin(pecan.request.path_url, collection) resource = {'name': name, 'collection': collection, diff --git a/neutron/plugins/ml2/drivers/mech_sriov/agent/eswitch_manager.py b/neutron/plugins/ml2/drivers/mech_sriov/agent/eswitch_manager.py index 4ab61a32ef3..5d712a777f0 100644 --- a/neutron/plugins/ml2/drivers/mech_sriov/agent/eswitch_manager.py +++ b/neutron/plugins/ml2/drivers/mech_sriov/agent/eswitch_manager.py @@ -18,7 +18,6 @@ import re from neutron_lib.utils import helpers from oslo_log import log as logging -import six from neutron._i18n import _, _LE, _LW from neutron.agent.linux import ip_link_support @@ -389,7 +388,7 @@ class ESwitchManager(object): """ if exclude_devices is None: exclude_devices = {} - for phys_net, dev_names in six.iteritems(device_mappings): + for phys_net, dev_names in device_mappings.items(): for dev_name in dev_names: self._process_emb_switch_map(phys_net, dev_name, exclude_devices) diff --git a/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py b/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py index 3e3cd7abfc7..ca9c61428c6 100644 --- a/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py +++ b/neutron/plugins/ml2/drivers/mech_sriov/agent/sriov_nic_agent.py @@ -276,7 +276,7 @@ class SriovNicSwitchAgent(object): "device": mac_pci_slot}) def _clean_network_ports(self, mac_pci_slot): - for netid, ports_list in six.iteritems(self.network_ports): + for netid, ports_list in self.network_ports.items(): for port_data in ports_list: if mac_pci_slot == port_data['device']: ports_list.remove(port_data) diff --git a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py index 75e886aa8f0..676b2b56856 100644 --- a/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py +++ b/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py @@ -33,7 +33,6 @@ from oslo_service import loopingcall from oslo_service import systemd from oslo_utils import netutils from osprofiler import profiler -import six from six import moves from neutron._i18n import _, _LE, _LI, _LW @@ -1082,7 +1081,7 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin, ip_wrapper = ip_lib.IPWrapper() ovs = ovs_lib.BaseOVS() ovs_bridges = ovs.get_bridges() - for physical_network, bridge in six.iteritems(bridge_mappings): + for physical_network, bridge in bridge_mappings.items(): LOG.info(_LI("Mapping physical network %(physical_network)s to " "bridge %(bridge)s"), {'physical_network': physical_network, diff --git a/neutron/plugins/ml2/managers.py b/neutron/plugins/ml2/managers.py index e585a3391bb..244561c430e 100644 --- a/neutron/plugins/ml2/managers.py +++ b/neutron/plugins/ml2/managers.py @@ -21,7 +21,6 @@ from neutron_lib import exceptions as exc from oslo_config import cfg from oslo_log import log from oslo_utils import excutils -import six import stevedore from neutron._i18n import _, _LC, _LE, _LI, _LW @@ -178,7 +177,7 @@ class TypeManager(stevedore.named.NamedExtensionManager): network[provider.SEGMENTATION_ID] = segment[api.SEGMENTATION_ID] def initialize(self): - for network_type, driver in six.iteritems(self.drivers): + for network_type, driver in self.drivers.items(): LOG.info(_LI("Initializing driver for type '%s'"), network_type) driver.obj.initialize() diff --git a/neutron/policy.py b/neutron/policy.py index ed9e2f17562..7951fe3d4e8 100644 --- a/neutron/policy.py +++ b/neutron/policy.py @@ -105,7 +105,7 @@ def _should_validate_sub_attributes(attribute, sub_attr): validate = attribute.get('validate') return (validate and isinstance(sub_attr, collections.Iterable) and any([k.startswith('type:dict') and - v for (k, v) in six.iteritems(validate)])) + v for (k, v) in validate.items()])) def _build_subattr_match_rule(attr_name, attr, action, target): diff --git a/neutron/services/metering/drivers/iptables/iptables_driver.py b/neutron/services/metering/drivers/iptables/iptables_driver.py index 3c4971b43fb..dcac72719a9 100644 --- a/neutron/services/metering/drivers/iptables/iptables_driver.py +++ b/neutron/services/metering/drivers/iptables/iptables_driver.py @@ -16,7 +16,6 @@ from oslo_config import cfg from oslo_log import helpers as log_helpers from oslo_log import log as logging from oslo_utils import importutils -import six from neutron._i18n import _, _LE, _LI from neutron.agent.l3 import dvr_snat_ns @@ -129,7 +128,7 @@ class IptablesMeteringDriver(abstract_driver.MeteringAbstractDriver): def update_routers(self, context, routers): # disassociate removed routers router_ids = set(router['id'] for router in routers) - for router_id, rm in six.iteritems(self.routers): + for router_id, rm in self.routers.items(): if router_id not in router_ids: self._process_disassociate_metering_label(rm.router) diff --git a/neutron/tests/base.py b/neutron/tests/base.py index 32bddf11dc5..519907dfdc8 100644 --- a/neutron/tests/base.py +++ b/neutron/tests/base.py @@ -90,7 +90,7 @@ def setup_test_logging(config_opts, log_dir, log_file_path_template): def sanitize_log_path(path): # Sanitize the string so that its log path is shell friendly replace_map = {' ': '-', '(': '_', ')': '_'} - for s, r in six.iteritems(replace_map): + for s, r in replace_map.items(): path = path.replace(s, r) return path @@ -212,7 +212,7 @@ class DietTestCase(base.BaseTestCase): self.assertEqual(expect_val, actual_val) def sort_dict_lists(self, dic): - for key, value in six.iteritems(dic): + for key, value in dic.items(): if isinstance(value, list): dic[key] = sorted(value) elif isinstance(value, dict): @@ -387,7 +387,7 @@ class BaseTestCase(DietTestCase): test by the fixtures cleanup process. """ group = kw.pop('group', None) - for k, v in six.iteritems(kw): + for k, v in kw.items(): CONF.set_override(k, v, group) def setup_coreplugin(self, core_plugin=None, load_plugins=True): diff --git a/neutron/tests/common/config_fixtures.py b/neutron/tests/common/config_fixtures.py index bedd8e8a530..3928e20e791 100644 --- a/neutron/tests/common/config_fixtures.py +++ b/neutron/tests/common/config_fixtures.py @@ -30,7 +30,7 @@ class ConfigDict(base.AttributeDict): :param other: dictionary to be directly modified. """ - for key, value in six.iteritems(other): + for key, value in other.items(): if isinstance(value, dict): if not isinstance(value, base.AttributeDict): other[key] = base.AttributeDict(value) @@ -61,9 +61,9 @@ class ConfigFileFixture(fixtures.Fixture): def dict_to_config_parser(self, config_dict): config_parser = six.moves.configparser.ConfigParser() - for section, section_dict in six.iteritems(config_dict): + for section, section_dict in config_dict.items(): if section != 'DEFAULT': config_parser.add_section(section) - for option, value in six.iteritems(section_dict): + for option, value in section_dict.items(): config_parser.set(section, option, value) return config_parser diff --git a/neutron/tests/unit/db/test_rbac_db_mixin.py b/neutron/tests/unit/db/test_rbac_db_mixin.py index ae09e790132..1642b55d277 100644 --- a/neutron/tests/unit/db/test_rbac_db_mixin.py +++ b/neutron/tests/unit/db/test_rbac_db_mixin.py @@ -17,7 +17,6 @@ import mock from neutron_lib import constants from neutron_lib import context -import six from neutron.callbacks import events from neutron.db.db_base_plugin_v2 import NeutronDbPluginV2 as db_plugin_v2 @@ -68,7 +67,7 @@ class NetworkRbacTestcase(test_plugin.NeutronDbPluginV2TestCase): update_policy) policy['rbac_policy']['target_tenant'] = new_target - for k, v in six.iteritems(policy['rbac_policy']): + for k, v in policy['rbac_policy'].items(): self.assertEqual(netrbac2[k], v) def test_delete_networkrbac_in_use_fail(self):