diff --git a/designate/dnsutils.py b/designate/dnsutils.py index 3d32b3740..55500c8e8 100644 --- a/designate/dnsutils.py +++ b/designate/dnsutils.py @@ -17,11 +17,11 @@ import random import socket import base64 +import six import dns import dns.exception import dns.zone import eventlet -import six from dns import rdatatype from oslo_log import log as logging from oslo_config import cfg @@ -210,7 +210,7 @@ def from_dnspython_zone(dnspython_zone): def dnspyrecords_to_recordsetlist(dnspython_records): rrsets = objects.RecordList() - for rname in dnspython_records.keys(): + for rname in six.iterkeys(dnspython_records): for rdataset in dnspython_records[rname]: rrset = dnspythonrecord_to_recordset(rname, rdataset) diff --git a/designate/network_api/fake.py b/designate/network_api/fake.py index ca393b61b..b57f8e014 100644 --- a/designate/network_api/fake.py +++ b/designate/network_api/fake.py @@ -15,6 +15,7 @@ # under the License. import uuid +import six from oslo_log import log as logging from designate.network_api.base import NetworkAPI @@ -41,7 +42,7 @@ def allocate_floatingip(tenant_id, floatingip_id=None): """ ALLOCATIONS.setdefault(tenant_id, {}) - id_ = floatingip_id or POOL.keys()[0] + id_ = floatingip_id or list(six.iterkeys(POOL))[0] ALLOCATIONS[tenant_id][id_] = POOL.pop(id_) values = _format_floatingip(id_, ALLOCATIONS[tenant_id][id_]) diff --git a/designate/objects/adapters/api_v2/pool_attribute.py b/designate/objects/adapters/api_v2/pool_attribute.py index f8279f4a2..294495103 100644 --- a/designate/objects/adapters/api_v2/pool_attribute.py +++ b/designate/objects/adapters/api_v2/pool_attribute.py @@ -11,6 +11,7 @@ # 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 oslo_log import log as logging from designate.objects.adapters.api_v2 import base @@ -44,7 +45,7 @@ class PoolAttributeAPIv2Adapter(base.APIv2Adapter): @classmethod def _parse_object(cls, values, object, *args, **kwargs): - for key in values.keys(): + for key in six.iterkeys(values): object.key = key object.value = values[key] @@ -72,7 +73,7 @@ class PoolAttributeListAPIv2Adapter(base.APIv2Adapter): value = cls.get_object_adapter( cls.ADAPTER_FORMAT, object).render(cls.ADAPTER_FORMAT, object, *args, **kwargs) - for key in value.keys(): + for key in six.iterkeys(value): r_list[key] = value[key] return r_list diff --git a/designate/objects/base.py b/designate/objects/base.py index ea1cf6547..2f4a4e194 100644 --- a/designate/objects/base.py +++ b/designate/objects/base.py @@ -53,7 +53,7 @@ def make_class_properties(cls): # Store the results cls.FIELDS = fields - for field in cls.FIELDS.keys(): + for field in six.iterkeys(cls.FIELDS): def getter(self, name=field): self._obj_check_relation(name) return getattr(self, get_attrname(name), None) @@ -64,7 +64,8 @@ def make_class_properties(cls): self._obj_changes.add(name) if (self.obj_attr_is_set(name) and value != getattr(self, name) - and name not in self._obj_original_values.keys()): + and name not in list(six.iterkeys( + self._obj_original_values))): self._obj_original_values[name] = getattr(self, name) return setattr(self, get_attrname(name), value) @@ -227,7 +228,7 @@ class DesignateObject(object): self._obj_original_values = dict() for name, value in kwargs.items(): - if name in self.FIELDS.keys(): + if name in list(six.iterkeys(self.FIELDS)): setattr(self, name, value) else: raise TypeError("__init__() got an unexpected keyword " @@ -243,7 +244,7 @@ class DesignateObject(object): """ data = {} - for field in self.FIELDS.keys(): + for field in six.iterkeys(self.FIELDS): if self.obj_attr_is_set(field): if isinstance(getattr(self, field), DesignateObject): data[field] = getattr(self, field).to_primitive() @@ -261,7 +262,7 @@ class DesignateObject(object): """Convert the object to a simple dictionary.""" data = {} - for field in self.FIELDS.keys(): + for field in six.iterkeys(self.FIELDS): if self.obj_attr_is_set(field): if isinstance(getattr(self, field), ListObjectMixin): data[field] = getattr(self, field).to_list() @@ -343,7 +344,7 @@ class DesignateObject(object): def obj_get_original_value(self, field): """Returns the original value of a field.""" - if field in self._obj_original_values.keys(): + if field in list(six.iterkeys(self._obj_original_values)): return self._obj_original_values[field] elif self.obj_attr_is_set(field): return getattr(self, field) @@ -352,7 +353,7 @@ class DesignateObject(object): def __setattr__(self, name, value): """Enforces all object attributes are private or well defined""" - if name[0:5] == '_obj_' or name in self.FIELDS.keys() \ + if name[0:5] == '_obj_' or name in list(six.iterkeys(self.FIELDS)) \ or name == 'FIELDS': super(DesignateObject, self).__setattr__(name, value) @@ -375,7 +376,7 @@ class DesignateObject(object): c_obj = self.__class__() - for field in self.FIELDS.keys(): + for field in six.iterkeys(self.FIELDS): if self.obj_attr_is_set(field): c_field = copy.deepcopy(getattr(self, field), memodict) setattr(c_obj, field, c_field) @@ -408,10 +409,10 @@ class DictObjectMixin(object): setattr(self, key, value) def __contains__(self, item): - return item in self.FIELDS.keys() + return item in list(six.iterkeys(self.FIELDS)) def get(self, key, default=NotSpecifiedSentinel): - if key not in self.FIELDS.keys(): + if key not in list(six.iterkeys(self.FIELDS)): raise AttributeError("'%s' object has no attribute '%s'" % ( self.__class__, key)) @@ -421,12 +422,12 @@ class DictObjectMixin(object): return getattr(self, key) def iteritems(self): - for field in self.FIELDS.keys(): + for field in six.iterkeys(self.FIELDS): if self.obj_attr_is_set(field): yield field, getattr(self, field) def __iter__(self): - for field in self.FIELDS.keys(): + for field in six.iterkeys(self.FIELDS): if self.obj_attr_is_set(field): yield field, getattr(self, field) @@ -493,7 +494,7 @@ class ListObjectMixin(object): def to_primitive(self): data = {} - for field in self.FIELDS.keys(): + for field in six.iterkeys(self.FIELDS): if self.obj_attr_is_set(field): if field == 'objects': data[field] = [o.to_primitive() for o in self.objects] diff --git a/designate/openstack/common/report/views/json/generic.py b/designate/openstack/common/report/views/json/generic.py index a7347b9be..9c8033fe6 100644 --- a/designate/openstack/common/report/views/json/generic.py +++ b/designate/openstack/common/report/views/json/generic.py @@ -25,6 +25,7 @@ such strings specially) import copy +import six from oslo_serialization import jsonutils as json from designate.openstack.common.report import utils as utils @@ -57,7 +58,7 @@ class KeyValueView(object): def __call__(self, model): # this part deals with subviews that were already serialized cpy = copy.deepcopy(model) - for key in model.keys(): + for key in six.iterkeys(model): if getattr(model[key], '__is_json__', False): cpy[key] = json.loads(model[key]) diff --git a/designate/quota/impl_storage.py b/designate/quota/impl_storage.py index 6e67d18c4..78358db15 100644 --- a/designate/quota/impl_storage.py +++ b/designate/quota/impl_storage.py @@ -13,6 +13,7 @@ # 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 oslo_config import cfg from oslo_log import log as logging @@ -70,7 +71,8 @@ class StorageQuota(Quota): self.storage.update_quota(context, quota) - if resource not in self.get_default_quotas(context).keys(): + if resource not in list(six.iterkeys( + self.get_default_quotas(context))): raise exceptions.QuotaResourceUnknown("%s is not a valid quota " "resource", resource) diff --git a/designate/sqlalchemy/base.py b/designate/sqlalchemy/base.py index 44dd0ed01..538c3034b 100644 --- a/designate/sqlalchemy/base.py +++ b/designate/sqlalchemy/base.py @@ -35,9 +35,9 @@ LOG = logging.getLogger(__name__) def _set_object_from_model(obj, model, **extra): """Update a DesignateObject with the values from a SQLA Model""" - for fieldname in obj.FIELDS.keys(): + for fieldname in six.iterkeys(obj.FIELDS): if hasattr(model, fieldname): - if fieldname in extra.keys(): + if fieldname in six.iterkeys(extra): obj[fieldname] = extra[fieldname] else: obj[fieldname] = getattr(model, fieldname) diff --git a/designate/tests/test_hookpoints.py b/designate/tests/test_hookpoints.py index 9158e6ac3..660cf575f 100644 --- a/designate/tests/test_hookpoints.py +++ b/designate/tests/test_hookpoints.py @@ -13,6 +13,7 @@ # 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 mock import Mock from mock import patch from oslo_config import cfg @@ -102,7 +103,7 @@ class TestHookpointsConfigOpts(TestCase): hp = hook_point('foo') hp.hook_manager = Mock(return_value=get_hook_manager()) hp(inc) - assert hp.group in self.CONF.keys() + assert hp.group in list(six.iterkeys(self.CONF)) class TestHookpointsEnabling(TestCase): diff --git a/designate/utils.py b/designate/utils.py index 028a8e5a6..7e5f053e2 100644 --- a/designate/utils.py +++ b/designate/utils.py @@ -214,7 +214,8 @@ def get_columns(data): def _seen(col): columns.add(str(col)) - six.moves.map(lambda item: six.moves.map(_seen, item.keys()), data) + six.moves.map(lambda item: six.moves.map(_seen, + list(six.iterkeys(item))), data) return list(columns)