mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Use Python3-compatible dict method names
Python 2 has keys()/values()/items(), which return lists, iterkeys()/itervalues()/iteritems(), which return iterators, and viewkeys()/viewvalues()/viewitems() which return views. Python 3 has only keys()/values()/items(), which return views. To get iterators, one can use iter() or a for loop/comprehension; for lists there's the list() constructor. When iterating through the entire dict, without modifying the dict, the difference between Python 2's items() and iteritems() is negligible, especially on small dicts (the main overhead is extra memory, not CPU time). In the interest of simpler code, this patch changes many instances of iteritems() to items(), iterkeys() to keys() etc. In other cases, helpers like six.itervalues are used. Reviewed-By: Christian Heimes <cheimes@redhat.com> Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
committed by
Jan Cholasta
parent
dd16cc98b0
commit
3bf91eab25
@@ -72,8 +72,7 @@ api.finalize()
|
||||
ra = api.Backend.ra
|
||||
|
||||
def assert_equal(trial, reference):
|
||||
keys = reference.keys()
|
||||
keys.sort()
|
||||
keys = sorted(reference)
|
||||
for key in keys:
|
||||
reference_val = reference[key]
|
||||
trial_val = trial[key]
|
||||
|
||||
@@ -60,7 +60,7 @@ def update_metadata_set(log, source_set, target_set):
|
||||
def find_unwrapping_key(log, localhsm, wrapping_key_uri):
|
||||
wrap_keys = localhsm.find_keys(uri=wrapping_key_uri)
|
||||
# find usable unwrapping key with matching ID
|
||||
for key_id, key in wrap_keys.iteritems():
|
||||
for key_id, key in wrap_keys.items():
|
||||
unwrap_keys = localhsm.find_keys(id=key_id, cka_unwrap=True)
|
||||
if len(unwrap_keys) > 0:
|
||||
return unwrap_keys.popitem()[1]
|
||||
|
||||
@@ -96,7 +96,7 @@ def sql2datetimes(row):
|
||||
'retire': 'idnsSecKeyInactive',
|
||||
'dead': 'idnsSecKeyDelete'}
|
||||
times = {}
|
||||
for column, key in row2key_map.iteritems():
|
||||
for column, key in row2key_map.items():
|
||||
if row[column] is not None:
|
||||
times[key] = sql2datetime(row[column])
|
||||
return times
|
||||
@@ -257,7 +257,7 @@ def master2ldap_master_keys_sync(log, ldapkeydb, localhsm):
|
||||
log.debug('master keys in LDAP after flush: %s', hex_set(ldapkeydb.master_keys))
|
||||
|
||||
# synchronize master key metadata to LDAP
|
||||
for mkey_id, mkey_local in localhsm.master_keys.iteritems():
|
||||
for mkey_id, mkey_local in localhsm.master_keys.items():
|
||||
log.debug('synchronizing master key metadata: 0x%s', hexlify(mkey_id))
|
||||
sync_pkcs11_metadata(log, mkey_local, ldapkeydb.master_keys[mkey_id])
|
||||
|
||||
@@ -265,7 +265,7 @@ def master2ldap_master_keys_sync(log, ldapkeydb, localhsm):
|
||||
enabled_replica_key_ids = set(localhsm.replica_pubkeys_wrap.keys())
|
||||
log.debug('enabled replica key ids: %s', hex_set(enabled_replica_key_ids))
|
||||
|
||||
for mkey_id, mkey_ldap in ldapkeydb.master_keys.iteritems():
|
||||
for mkey_id, mkey_ldap in ldapkeydb.master_keys.items():
|
||||
log.debug('processing master key data: 0x%s', hexlify(mkey_id))
|
||||
|
||||
# check that all active replicas have own copy of master key
|
||||
@@ -273,7 +273,7 @@ def master2ldap_master_keys_sync(log, ldapkeydb, localhsm):
|
||||
for wrapped_entry in mkey_ldap.wrapped_entries:
|
||||
matching_keys = localhsm.find_keys(
|
||||
uri=wrapped_entry.single_value['ipaWrappingKey'])
|
||||
for matching_key in matching_keys.itervalues():
|
||||
for matching_key in matching_keys.values():
|
||||
assert matching_key['ipk11label'].startswith(u'dnssec-replica:'), \
|
||||
'Wrapped key "%s" refers to PKCS#11 URI "%s" which is ' \
|
||||
'not a know DNSSEC replica key: label "%s" does not start ' \
|
||||
|
||||
@@ -23,7 +23,6 @@ import sys
|
||||
import os
|
||||
|
||||
from ipapython.ipa_log_manager import *
|
||||
|
||||
from ipaserver.install import (replication, installutils, bindinstance,
|
||||
cainstance, certs)
|
||||
from ipalib import api, errors
|
||||
@@ -112,7 +111,7 @@ def list_replicas(realm, host, replica, dirman_passwd, verbose):
|
||||
conn.unbind()
|
||||
|
||||
if not replica:
|
||||
for k, p in peers.iteritems():
|
||||
for k, p in peers.items():
|
||||
print '%s: %s' % (k, p[0])
|
||||
return
|
||||
|
||||
|
||||
@@ -183,12 +183,12 @@ def list_replicas(realm, host, replica, dirman_passwd, verbose, nolookup=False):
|
||||
peers[ent.single_value['cn']] = config_string.split(':')
|
||||
|
||||
if not replica:
|
||||
for k, p in peers.iteritems():
|
||||
for k, p in peers.items():
|
||||
print '%s: %s' % (k, p[0])
|
||||
return
|
||||
|
||||
# ok we are being ask for info about a specific replica
|
||||
for k, p in peers.iteritems():
|
||||
for k, p in peers.items():
|
||||
if replica == k:
|
||||
is_replica = True
|
||||
if p[0] == 'winsync':
|
||||
|
||||
@@ -1427,7 +1427,7 @@ def configure_sshd_config(fstore, options):
|
||||
|
||||
for candidate in candidates:
|
||||
args = ['sshd', '-t', '-f', paths.DEV_NULL]
|
||||
for item in candidate.iteritems():
|
||||
for item in candidate.items():
|
||||
args.append('-o')
|
||||
args.append('%s=%s' % item)
|
||||
|
||||
|
||||
@@ -764,9 +764,8 @@ class help(frontend.Local):
|
||||
self._builtins.append(c)
|
||||
|
||||
# compute maximum topic length
|
||||
self._mtl = max(
|
||||
len(s) for s in (self._topics.keys() + [c.name for c in self._builtins])
|
||||
)
|
||||
topics = list(self._topics) + [c.name for c in self._builtins]
|
||||
self._mtl = max(len(s) for s in topics)
|
||||
|
||||
super(help, self)._on_finalize()
|
||||
|
||||
@@ -1126,7 +1125,7 @@ class cli(backend.Executioner):
|
||||
"""
|
||||
Decode param values if appropriate.
|
||||
"""
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
yield (key, self.Backend.textui.decode(value))
|
||||
|
||||
def build_parser(self, cmd):
|
||||
|
||||
@@ -330,7 +330,7 @@ class Env(object):
|
||||
:param kw: Variables provides as keyword arguments.
|
||||
"""
|
||||
i = 0
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
if key not in self:
|
||||
self[key] = value
|
||||
i += 1
|
||||
|
||||
@@ -117,7 +117,7 @@ class PrivateError(StandardError):
|
||||
def __init__(self, **kw):
|
||||
self.msg = self.format % kw
|
||||
self.kw = kw
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
assert not hasattr(self, key), 'conflicting kwarg %s.%s = %r' % (
|
||||
self.__class__.__name__, key, value,
|
||||
)
|
||||
|
||||
@@ -614,7 +614,7 @@ class Command(HasParam):
|
||||
{'last': u'DOE', 'first': u'john'}
|
||||
"""
|
||||
return dict(
|
||||
(k, self.params[k].normalize(v)) for (k, v) in kw.iteritems()
|
||||
(k, self.params[k].normalize(v)) for (k, v) in kw.items()
|
||||
)
|
||||
|
||||
def convert(self, **kw):
|
||||
@@ -634,7 +634,7 @@ class Command(HasParam):
|
||||
{'two': u'2', 'one': 1}
|
||||
"""
|
||||
return dict(
|
||||
(k, self.params[k].convert(v)) for (k, v) in kw.iteritems()
|
||||
(k, self.params[k].convert(v)) for (k, v) in kw.items()
|
||||
)
|
||||
|
||||
def __convert_iter(self, kw):
|
||||
|
||||
@@ -85,7 +85,7 @@ def process_message_arguments(obj, format=None, message=None, **kw):
|
||||
obj.forwarded = True
|
||||
obj.msg = message
|
||||
obj.strerror = message
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
assert not hasattr(obj, key), 'conflicting kwarg %s.%s = %r' % (
|
||||
name, key, value,
|
||||
)
|
||||
|
||||
@@ -659,7 +659,7 @@ class API(ReadOnly):
|
||||
sub_d = self.__plugins.get(base, {})
|
||||
|
||||
members = []
|
||||
for klass in sub_d.itervalues():
|
||||
for klass in sub_d.values():
|
||||
try:
|
||||
instance = plugins[klass]
|
||||
except KeyError:
|
||||
@@ -673,7 +673,7 @@ class API(ReadOnly):
|
||||
assert not hasattr(self, name)
|
||||
setattr(self, name, NameSpace(members))
|
||||
|
||||
for klass, instance in plugins.iteritems():
|
||||
for klass, instance in plugins.items():
|
||||
if not production_mode:
|
||||
assert instance.api is self
|
||||
if klass.finalize_early or not self.env.plugins_on_demand:
|
||||
@@ -682,7 +682,7 @@ class API(ReadOnly):
|
||||
assert islocked(instance)
|
||||
|
||||
self.__finalized = True
|
||||
self.plugins = tuple((k, tuple(v)) for k, v in plugin_info.iteritems())
|
||||
self.plugins = tuple((k, tuple(v)) for k, v in plugin_info.items())
|
||||
|
||||
if not production_mode:
|
||||
lock(self)
|
||||
|
||||
@@ -223,7 +223,7 @@ def _make_aci(ldap, current, aciname, kw):
|
||||
if 'aciprefix' not in kw:
|
||||
raise errors.ValidationError(name='aciprefix', error=_('ACI prefix is required'))
|
||||
|
||||
if sum(valid.itervalues()) == 0:
|
||||
if sum(valid.values()) == 0:
|
||||
raise errors.ValidationError(name='target', error=_('at least one of: type, filter, subtree, targetgroup, attrs or memberof are required'))
|
||||
|
||||
if valid['filter'] + valid['memberof'] > 1:
|
||||
|
||||
@@ -232,7 +232,7 @@ def entry_from_entry(entry, newentry):
|
||||
"""
|
||||
|
||||
# Wipe out the current data
|
||||
for e in entry.keys():
|
||||
for e in list(entry):
|
||||
del entry[e]
|
||||
|
||||
# Re-populate it with new wentry
|
||||
@@ -242,7 +242,7 @@ def entry_from_entry(entry, newentry):
|
||||
def entry_to_dict(entry, **options):
|
||||
if options.get('raw', False):
|
||||
result = {}
|
||||
for attr in entry.iterkeys():
|
||||
for attr in entry:
|
||||
if attr.lower() == 'attributelevelrights':
|
||||
value = entry[attr]
|
||||
elif entry.conn.get_attribute_type(attr) is str:
|
||||
@@ -256,7 +256,7 @@ def entry_to_dict(entry, **options):
|
||||
pass
|
||||
result[attr] = value
|
||||
else:
|
||||
result = dict((k.lower(), v) for (k, v) in entry.iteritems())
|
||||
result = dict((k.lower(), v) for (k, v) in entry.items())
|
||||
if options.get('all', False):
|
||||
result['dn'] = entry.dn
|
||||
return result
|
||||
@@ -793,10 +793,10 @@ class LDAPObject(Object):
|
||||
attrs = self.api.Backend.ldap2.schema.attribute_types(objectclasses)
|
||||
attrlist = []
|
||||
# Go through the MUST first
|
||||
for (oid, attr) in attrs[0].iteritems():
|
||||
for (oid, attr) in attrs[0].items():
|
||||
attrlist.append(attr.names[0].lower())
|
||||
# And now the MAY
|
||||
for (oid, attr) in attrs[1].iteritems():
|
||||
for (oid, attr) in attrs[1].items():
|
||||
attrlist.append(attr.names[0].lower())
|
||||
json_dict['aciattrs'] = attrlist
|
||||
attrlist.sort()
|
||||
@@ -809,7 +809,7 @@ class LDAPObject(Object):
|
||||
# addattr can cause parameters to have more than one value even if not defined
|
||||
# as multivalue, make sure this isn't the case
|
||||
def _check_single_value_attrs(params, entry_attrs):
|
||||
for (a, v) in entry_attrs.iteritems():
|
||||
for (a, v) in entry_attrs.items():
|
||||
if isinstance(v, (list, tuple)) and len(v) > 1:
|
||||
if a in params and not params[a].multivalue:
|
||||
raise errors.OnlyOneValueAllowed(attr=a)
|
||||
@@ -817,7 +817,7 @@ def _check_single_value_attrs(params, entry_attrs):
|
||||
# setattr or --option='' can cause parameters to be empty that are otherwise
|
||||
# required, make sure we enforce that.
|
||||
def _check_empty_attrs(params, entry_attrs):
|
||||
for (a, v) in entry_attrs.iteritems():
|
||||
for (a, v) in entry_attrs.items():
|
||||
if v is None or (isinstance(v, six.string_types) and len(v) == 0):
|
||||
if a in params and params[a].required:
|
||||
raise errors.RequirementError(name=a)
|
||||
@@ -839,7 +839,7 @@ def _check_limit_object_class(attributes, attrs, allow_only):
|
||||
return
|
||||
limitattrs = deepcopy(attrs)
|
||||
# Go through the MUST first
|
||||
for (oid, attr) in attributes[0].iteritems():
|
||||
for (oid, attr) in attributes[0].items():
|
||||
if attr.names[0].lower() in limitattrs:
|
||||
if not allow_only:
|
||||
raise errors.ObjectclassViolation(
|
||||
@@ -847,7 +847,7 @@ def _check_limit_object_class(attributes, attrs, allow_only):
|
||||
attribute=attr.names[0].lower()))
|
||||
limitattrs.remove(attr.names[0].lower())
|
||||
# And now the MAY
|
||||
for (oid, attr) in attributes[1].iteritems():
|
||||
for (oid, attr) in attributes[1].items():
|
||||
if attr.names[0].lower() in limitattrs:
|
||||
if not allow_only:
|
||||
raise errors.ObjectclassViolation(
|
||||
@@ -1015,9 +1015,9 @@ last, after all sets and adds."""),
|
||||
setdict = self._convert_2_dict(ldap, options.get('setattr', []))
|
||||
deldict = self._convert_2_dict(ldap, options.get('delattr', []))
|
||||
|
||||
setattrs = set(setdict.keys())
|
||||
addattrs = set(adddict.keys())
|
||||
delattrs = set(deldict.keys())
|
||||
setattrs = set(setdict)
|
||||
addattrs = set(adddict)
|
||||
delattrs = set(deldict)
|
||||
|
||||
if dn is None:
|
||||
direct_add = addattrs
|
||||
@@ -1029,7 +1029,7 @@ last, after all sets and adds."""),
|
||||
direct_del = setattrs & delattrs
|
||||
needldapattrs = list((addattrs | delattrs) - setattrs)
|
||||
|
||||
for attr, val in setdict.iteritems():
|
||||
for attr, val in setdict.items():
|
||||
entry_attrs[attr] = val
|
||||
|
||||
for attr in direct_add:
|
||||
@@ -1063,7 +1063,7 @@ last, after all sets and adds."""),
|
||||
# Provide a nice error message when user tries to delete an
|
||||
# attribute that does not exist on the entry (and user is not
|
||||
# adding it)
|
||||
names = set(n.lower() for n in old_entry.keys())
|
||||
names = set(n.lower() for n in old_entry)
|
||||
del_nonexisting = delattrs - (names | setattrs | addattrs)
|
||||
if del_nonexisting:
|
||||
raise errors.ValidationError(name=del_nonexisting.pop(),
|
||||
@@ -1229,8 +1229,8 @@ class LDAPCreate(BaseLDAPCommand, crud.Create):
|
||||
*keys, **options)
|
||||
|
||||
_check_single_value_attrs(self.params, entry_attrs)
|
||||
_check_limit_object_class(self.api.Backend.ldap2.schema.attribute_types(self.obj.limit_object_classes), entry_attrs.keys(), allow_only=True)
|
||||
_check_limit_object_class(self.api.Backend.ldap2.schema.attribute_types(self.obj.disallow_object_classes), entry_attrs.keys(), allow_only=False)
|
||||
_check_limit_object_class(self.api.Backend.ldap2.schema.attribute_types(self.obj.limit_object_classes), list(entry_attrs), allow_only=True)
|
||||
_check_limit_object_class(self.api.Backend.ldap2.schema.attribute_types(self.obj.disallow_object_classes), list(entry_attrs), allow_only=False)
|
||||
|
||||
try:
|
||||
self._exc_wrapper(keys, options, ldap.add_entry)(entry_attrs)
|
||||
@@ -1469,8 +1469,8 @@ class LDAPUpdate(LDAPQuery, crud.Update):
|
||||
self, ldap, entry_attrs.dn, entry_attrs, attrs_list,
|
||||
*keys, **options)
|
||||
|
||||
_check_limit_object_class(self.api.Backend.ldap2.schema.attribute_types(self.obj.limit_object_classes), entry_attrs.keys(), allow_only=True)
|
||||
_check_limit_object_class(self.api.Backend.ldap2.schema.attribute_types(self.obj.disallow_object_classes), entry_attrs.keys(), allow_only=False)
|
||||
_check_limit_object_class(self.api.Backend.ldap2.schema.attribute_types(self.obj.limit_object_classes), list(entry_attrs), allow_only=True)
|
||||
_check_limit_object_class(self.api.Backend.ldap2.schema.attribute_types(self.obj.disallow_object_classes), list(entry_attrs), allow_only=False)
|
||||
|
||||
rdnupdate = False
|
||||
try:
|
||||
@@ -1505,7 +1505,7 @@ class LDAPUpdate(LDAPQuery, crud.Update):
|
||||
# mean an error occurred, just that there were no other updates to
|
||||
# perform.
|
||||
update = self._exc_wrapper(keys, options, ldap.get_entry)(
|
||||
entry_attrs.dn, entry_attrs.keys())
|
||||
entry_attrs.dn, list(entry_attrs))
|
||||
update.update(entry_attrs)
|
||||
|
||||
self._exc_wrapper(keys, options, ldap.update_entry)(update)
|
||||
@@ -1727,7 +1727,7 @@ class LDAPAddMember(LDAPModMember):
|
||||
assert isinstance(dn, DN)
|
||||
|
||||
completed = 0
|
||||
for (attr, objs) in member_dns.iteritems():
|
||||
for (attr, objs) in member_dns.items():
|
||||
for ldap_obj_name in objs:
|
||||
for m_dn in member_dns[attr][ldap_obj_name]:
|
||||
assert isinstance(m_dn, DN)
|
||||
@@ -1828,8 +1828,8 @@ class LDAPRemoveMember(LDAPModMember):
|
||||
assert isinstance(dn, DN)
|
||||
|
||||
completed = 0
|
||||
for (attr, objs) in member_dns.iteritems():
|
||||
for ldap_obj_name, m_dns in objs.iteritems():
|
||||
for (attr, objs) in member_dns.items():
|
||||
for ldap_obj_name, m_dns in objs.items():
|
||||
for m_dn in m_dns:
|
||||
assert isinstance(m_dn, DN)
|
||||
if not m_dn:
|
||||
@@ -2376,7 +2376,7 @@ class LDAPModAttribute(LDAPQuery):
|
||||
|
||||
try:
|
||||
update = self._exc_wrapper(keys, options, ldap.get_entry)(
|
||||
entry_attrs.dn, entry_attrs.keys())
|
||||
entry_attrs.dn, list(entry_attrs))
|
||||
self._update_attrs(update, entry_attrs)
|
||||
|
||||
self._exc_wrapper(keys, options, ldap.update_entry)(update)
|
||||
@@ -2425,7 +2425,7 @@ class LDAPAddAttribute(LDAPModAttribute):
|
||||
msg_summary = _('added attribute value to entry %(value)')
|
||||
|
||||
def _update_attrs(self, update, entry_attrs):
|
||||
for name, value in entry_attrs.iteritems():
|
||||
for name, value in entry_attrs.items():
|
||||
old_value = set(update.get(name, []))
|
||||
value_to_add = set(value)
|
||||
|
||||
@@ -2442,7 +2442,7 @@ class LDAPRemoveAttribute(LDAPModAttribute):
|
||||
msg_summary = _('removed attribute values from entry %(value)')
|
||||
|
||||
def _update_attrs(self, update, entry_attrs):
|
||||
for name, value in entry_attrs.iteritems():
|
||||
for name, value in entry_attrs.items():
|
||||
old_value = set(update.get(name, []))
|
||||
value_to_remove = set(value)
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ class batch(Command):
|
||||
if name not in self.Command:
|
||||
raise errors.CommandError(name=name)
|
||||
a, kw = arg['params']
|
||||
newkw = dict((str(k), v) for k, v in kw.iteritems())
|
||||
newkw = dict((str(k), v) for k, v in kw.items())
|
||||
params = api.Command[name].args_options_2_params(*a, **newkw)
|
||||
newkw.setdefault('version', options['version'])
|
||||
|
||||
|
||||
@@ -256,8 +256,8 @@ class config_mod(LDAPUpdate):
|
||||
if 'ipagroupsearchfields' in entry_attrs:
|
||||
kw['ipagroupsearchfields'] = 'ipagroupobjectclasses'
|
||||
if kw:
|
||||
config = ldap.get_ipa_config(kw.values())
|
||||
for (k, v) in kw.iteritems():
|
||||
config = ldap.get_ipa_config(list(kw.values()))
|
||||
for (k, v) in kw.items():
|
||||
allowed_attrs = ldap.get_allowed_attributes(config[v])
|
||||
fields = entry_attrs[k].split(',')
|
||||
for a in fields:
|
||||
|
||||
@@ -1641,7 +1641,7 @@ def _create_idn_filter(cmd, ldap, *args, **options):
|
||||
search_kw = {}
|
||||
attr_extra_filters = []
|
||||
|
||||
for attr, value in cmd.args_options_2_entry(**options).iteritems():
|
||||
for attr, value in cmd.args_options_2_entry(**options).items():
|
||||
if not isinstance(value, list):
|
||||
value = [value]
|
||||
for i, v in enumerate(value):
|
||||
@@ -3245,11 +3245,11 @@ class dnsrecord(LDAPObject):
|
||||
"""
|
||||
rrattrs = {}
|
||||
if old_entry is not None:
|
||||
old_rrattrs = dict((key, value) for key, value in old_entry.iteritems()
|
||||
old_rrattrs = dict((key, value) for key, value in old_entry.items()
|
||||
if key in self.params and
|
||||
isinstance(self.params[key], DNSRecord))
|
||||
rrattrs.update(old_rrattrs)
|
||||
new_rrattrs = dict((key, value) for key, value in entry_attrs.iteritems()
|
||||
new_rrattrs = dict((key, value) for key, value in entry_attrs.items()
|
||||
if key in self.params and
|
||||
isinstance(self.params[key], DNSRecord))
|
||||
rrattrs.update(new_rrattrs)
|
||||
@@ -3267,7 +3267,7 @@ class dnsrecord(LDAPObject):
|
||||
'(RFC 2136, section 1.1.5)'))
|
||||
if any(rrvalue is not None
|
||||
and rrattr != 'cnamerecord'
|
||||
for rrattr, rrvalue in rrattrs.iteritems()):
|
||||
for rrattr, rrvalue in rrattrs.items()):
|
||||
raise errors.ValidationError(name='cnamerecord',
|
||||
error=_('CNAME record is not allowed to coexist '
|
||||
'with any other record (RFC 1034, section 3.6.2)'))
|
||||
@@ -3327,7 +3327,7 @@ class dnsrecord(LDAPObject):
|
||||
# all records were deleted => name should not exist in DNS
|
||||
return None
|
||||
|
||||
for attr, value in entry_attrs.iteritems():
|
||||
for attr, value in entry_attrs.items():
|
||||
if not attr.endswith(record_attr_suf):
|
||||
continue
|
||||
|
||||
@@ -3444,7 +3444,7 @@ class dnsrecord(LDAPObject):
|
||||
# name should not exist => ask for A record and check result
|
||||
ldap_rrsets = {dns.rdatatype.from_text('A'): None}
|
||||
|
||||
for rdtype, ldap_rrset in ldap_rrsets.iteritems():
|
||||
for rdtype, ldap_rrset in ldap_rrsets.items():
|
||||
try:
|
||||
self.wait_for_modified_attr(ldap_rrset, rdtype, dns_name)
|
||||
|
||||
@@ -3479,7 +3479,7 @@ class dnsrecord(LDAPObject):
|
||||
:param entries:
|
||||
Dict {(dns_domain, dns_name): entry_for_wait_for_modified_attrs}
|
||||
'''
|
||||
for entry_name, entry in entries.iteritems():
|
||||
for entry_name, entry in entries.items():
|
||||
dns_domain = entry_name[0]
|
||||
dns_name = entry_name[1].derelativize(dns_domain)
|
||||
self.wait_for_modified_attrs(entry, dns_name, dns_domain)
|
||||
@@ -3691,7 +3691,7 @@ class dnsrecord_add(LDAPCreate):
|
||||
# already merged in pre_callback
|
||||
ldap = self.obj.backend
|
||||
entry_attrs = self.obj.get_record_entry_attrs(call_args[0])
|
||||
update = ldap.get_entry(entry_attrs.dn, entry_attrs.keys())
|
||||
update = ldap.get_entry(entry_attrs.dn, list(entry_attrs))
|
||||
update.update(entry_attrs)
|
||||
ldap.update_entry(update, **call_kwargs)
|
||||
return
|
||||
|
||||
@@ -161,7 +161,7 @@ class otptoken(LDAPObject):
|
||||
doc=_('Type of the token'),
|
||||
default=u'totp',
|
||||
autofill=True,
|
||||
values=tuple(TOKEN_TYPES.keys() + [x.upper() for x in TOKEN_TYPES]),
|
||||
values=tuple(list(TOKEN_TYPES) + [x.upper() for x in TOKEN_TYPES]),
|
||||
flags=('virtual_attribute', 'no_update'),
|
||||
),
|
||||
Str('description?',
|
||||
|
||||
@@ -1148,7 +1148,7 @@ class permission_mod(baseldap.LDAPUpdate):
|
||||
# Since `entry` only contains the attributes we are currently changing,
|
||||
# it cannot be used directly to generate an ACI.
|
||||
# First we need to copy the original data into it.
|
||||
for key, value in old_entry.iteritems():
|
||||
for key, value in old_entry.items():
|
||||
if (key not in options and
|
||||
key != 'cn' and
|
||||
key not in self.obj.attribute_members):
|
||||
@@ -1355,7 +1355,7 @@ class permission_find(baseldap.LDAPSearch):
|
||||
|
||||
for entry in entries:
|
||||
if options.get('pkey_only'):
|
||||
for opt_name in entry.keys():
|
||||
for opt_name in list(entry):
|
||||
if opt_name != self.obj.primary_key.name:
|
||||
del entry[opt_name]
|
||||
else:
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
import base64
|
||||
import os
|
||||
|
||||
|
||||
from ipalib import api, errors, util
|
||||
from ipalib import Str, Flag, Bytes, StrEnum, Bool
|
||||
from ipalib.plugable import Registry
|
||||
@@ -315,7 +316,7 @@ def check_required_principal(ldap, hostname, service):
|
||||
def update_krbticketflags(ldap, entry_attrs, attrs_list, options, existing):
|
||||
add = remove = 0
|
||||
|
||||
for (name, value) in _ticket_flags_map.iteritems():
|
||||
for (name, value) in _ticket_flags_map.items():
|
||||
if name not in options:
|
||||
continue
|
||||
if options[name]:
|
||||
@@ -356,7 +357,7 @@ def set_kerberos_attrs(entry_attrs, options):
|
||||
|
||||
all_opt = options.get('all', False)
|
||||
|
||||
for (name, value) in _ticket_flags_map.iteritems():
|
||||
for (name, value) in _ticket_flags_map.items():
|
||||
if name in options or all_opt:
|
||||
entry_attrs[name] = bool(ticket_flags & value)
|
||||
|
||||
|
||||
@@ -639,7 +639,7 @@ class stageuser_activate(LDAPQuery):
|
||||
)
|
||||
except errors.NotFound:
|
||||
self.obj.handle_not_found(*args)
|
||||
entry_attrs = dict((k.lower(), v) for (k, v) in entry_attrs.iteritems())
|
||||
entry_attrs = dict((k.lower(), v) for (k, v) in entry_attrs.items())
|
||||
|
||||
# Check it does not exist an active entry with the same RDN
|
||||
active_dn = DN(staging_dn[0], api.env.container_user, api.env.basedn)
|
||||
@@ -660,7 +660,7 @@ class stageuser_activate(LDAPQuery):
|
||||
# Time to build the new entry
|
||||
result_entry = {'dn' : active_dn}
|
||||
new_entry_attrs = self.__dict_new_entry()
|
||||
for (attr, values) in entry_attrs.iteritems():
|
||||
for (attr, values) in entry_attrs.items():
|
||||
self.__merge_values(args, options, entry_attrs, new_entry_attrs, attr)
|
||||
result_entry[attr] = values
|
||||
|
||||
@@ -670,7 +670,7 @@ class stageuser_activate(LDAPQuery):
|
||||
if result_entry['description'] == NO_UPG_MAGIC:
|
||||
del result_entry['description']
|
||||
|
||||
for (k,v) in new_entry_attrs.iteritems():
|
||||
for (k, v) in new_entry_attrs.items():
|
||||
self.log.debug("new entry: k=%r and v=%r)" % (k, v))
|
||||
|
||||
self._build_new_entry(ldap, staging_dn, entry_attrs, new_entry_attrs)
|
||||
|
||||
@@ -51,8 +51,8 @@ def destroy_context():
|
||||
"""
|
||||
Delete all attributes on thread-local `request.context`.
|
||||
"""
|
||||
# need to use .values(), 'cos value.disconnect modifies the dict
|
||||
for value in context.__dict__.values():
|
||||
# need to use a list of values, 'cos value.disconnect modifies the dict
|
||||
for value in list(context.__dict__.values()):
|
||||
if isinstance(value, Connection):
|
||||
value.disconnect()
|
||||
context.__dict__.clear()
|
||||
|
||||
@@ -159,7 +159,7 @@ def xml_wrap(value, version):
|
||||
return tuple(xml_wrap(v, version) for v in value)
|
||||
if isinstance(value, dict):
|
||||
return dict(
|
||||
(k, xml_wrap(v, version)) for (k, v) in value.iteritems()
|
||||
(k, xml_wrap(v, version)) for (k, v) in value.items()
|
||||
)
|
||||
if type(value) is str:
|
||||
return Binary(value)
|
||||
@@ -213,7 +213,7 @@ def xml_unwrap(value, encoding='UTF-8'):
|
||||
return DNSName(value['__dns_name__'])
|
||||
else:
|
||||
return dict(
|
||||
(k, xml_unwrap(v, encoding)) for (k, v) in value.iteritems()
|
||||
(k, xml_unwrap(v, encoding)) for (k, v) in value.items()
|
||||
)
|
||||
if type(value) is str:
|
||||
return value.decode(encoding)
|
||||
|
||||
@@ -51,7 +51,7 @@ def json_serialize(obj):
|
||||
if isinstance(obj, (list, tuple)):
|
||||
return [json_serialize(o) for o in obj]
|
||||
if isinstance(obj, dict):
|
||||
return dict((k, json_serialize(v)) for (k, v) in obj.iteritems())
|
||||
return {k: json_serialize(v) for (k, v) in obj.items()}
|
||||
if isinstance(obj, (bool, float, int, long, unicode, NoneType)):
|
||||
return obj
|
||||
if isinstance(obj, str):
|
||||
|
||||
@@ -28,6 +28,8 @@ import json
|
||||
import time
|
||||
import collections
|
||||
|
||||
import six
|
||||
|
||||
import ipalib
|
||||
from ipapython import ipautil
|
||||
from ipaplatform.paths import paths
|
||||
@@ -78,7 +80,7 @@ class KnownServices(collections.Mapping):
|
||||
return len(self.__d)
|
||||
|
||||
def __call__(self):
|
||||
return self.__d.itervalues()
|
||||
return six.itervalues(self.__d)
|
||||
|
||||
def __getattr__(self, name):
|
||||
try:
|
||||
|
||||
@@ -361,7 +361,7 @@ class RedHatTaskNamespace(BaseTaskNamespace):
|
||||
def set_selinux_booleans(self, required_settings, backup_func=None):
|
||||
def get_setsebool_args(changes):
|
||||
args = [paths.SETSEBOOL, "-P"]
|
||||
args.extend(["%s=%s" % update for update in changes.iteritems()])
|
||||
args.extend(["%s=%s" % update for update in changes.items()])
|
||||
|
||||
return args
|
||||
|
||||
@@ -370,7 +370,7 @@ class RedHatTaskNamespace(BaseTaskNamespace):
|
||||
|
||||
updated_vars = {}
|
||||
failed_vars = {}
|
||||
for setting, state in required_settings.iteritems():
|
||||
for setting, state in required_settings.items():
|
||||
if state is None:
|
||||
continue
|
||||
try:
|
||||
|
||||
@@ -105,7 +105,7 @@ class IPAOptionParser(OptionParser):
|
||||
all_opts_dict = dict([ (o.dest, o) for o in self._get_all_options() if hasattr(o, 'sensitive') ])
|
||||
safe_opts_dict = {}
|
||||
|
||||
for option, value in opts.__dict__.iteritems():
|
||||
for option, value in opts.__dict__.items():
|
||||
if all_opts_dict[option].sensitive != True:
|
||||
safe_opts_dict[option] = value
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ attrs_id2name = {
|
||||
_ipap11helper.CKA_WRAP_WITH_TRUSTED: 'ipk11wrapwithtrusted',
|
||||
}
|
||||
|
||||
attrs_name2id = dict(zip(attrs_id2name.values(), attrs_id2name.keys()))
|
||||
attrs_name2id = {v: k for k, v in attrs_id2name.items()}
|
||||
|
||||
# attribute:
|
||||
# http://www.freeipa.org/page/V4/PKCS11_in_LDAP/Schema#ipk11KeyType
|
||||
@@ -53,7 +53,7 @@ keytype_name2id = {
|
||||
"aes": _ipap11helper.KEY_TYPE_AES,
|
||||
}
|
||||
|
||||
keytype_id2name = dict(zip(keytype_name2id.values(), keytype_name2id.keys()))
|
||||
keytype_id2name = {v: k for k, v in keytype_name2id.items()}
|
||||
|
||||
wrappingmech_name2id = {
|
||||
"rsaPkcs": _ipap11helper.MECH_RSA_PKCS,
|
||||
@@ -62,8 +62,7 @@ wrappingmech_name2id = {
|
||||
"aesKeyWrapPad": _ipap11helper.MECH_AES_KEY_WRAP_PAD
|
||||
}
|
||||
|
||||
wrappingmech_id2name = dict(zip(wrappingmech_name2id.values(),
|
||||
wrappingmech_name2id.keys()))
|
||||
wrappingmech_id2name = {v: k for k, v in wrappingmech_name2id.items()}
|
||||
|
||||
|
||||
bool_attr_names = set([
|
||||
@@ -105,8 +104,7 @@ modifiable_attrs_id2name = {
|
||||
_ipap11helper.CKA_WRAP: 'ipk11wrap',
|
||||
}
|
||||
|
||||
modifiable_attrs_name2id = dict(zip(modifiable_attrs_id2name.values(),
|
||||
modifiable_attrs_id2name.keys()))
|
||||
modifiable_attrs_name2id = {v: k for k, v in modifiable_attrs_id2name.items()}
|
||||
|
||||
def sync_pkcs11_metadata(log, source, target):
|
||||
"""sync ipk11 metadata from source object to target object"""
|
||||
@@ -148,7 +146,7 @@ def ldap2p11helper_api_params(ldap_key):
|
||||
"ipk11wrapwithtrusted": "cka_wrap_with_trusted"
|
||||
}
|
||||
|
||||
for ldap_name, p11h_name in direct_param_map.iteritems():
|
||||
for ldap_name, p11h_name in direct_param_map.items():
|
||||
if ldap_name in ldap_key:
|
||||
unwrap_params[p11h_name] = ldap_key[ldap_name]
|
||||
|
||||
@@ -159,7 +157,7 @@ def ldap2p11helper_api_params(ldap_key):
|
||||
"ipawrappingmech": ("wrapping_mech", wrappingmech_name2id),
|
||||
}
|
||||
|
||||
for ldap_name, rules in indirect_param_map.iteritems():
|
||||
for ldap_name, rules in indirect_param_map.items():
|
||||
p11h_name, mapping = rules
|
||||
if ldap_name in ldap_key:
|
||||
unwrap_params[p11h_name] = mapping[ldap_key[ldap_name]]
|
||||
@@ -170,7 +168,7 @@ def ldap2p11helper_api_params(ldap_key):
|
||||
class AbstractHSM(object):
|
||||
def _filter_replica_keys(self, all_keys):
|
||||
replica_keys = {}
|
||||
for key_id, key in all_keys.iteritems():
|
||||
for key_id, key in all_keys.items():
|
||||
if not key['ipk11label'].startswith('dnssec-replica:'):
|
||||
continue
|
||||
replica_keys[key_id] = key
|
||||
@@ -178,7 +176,7 @@ class AbstractHSM(object):
|
||||
|
||||
def _filter_zone_keys(self, all_keys):
|
||||
zone_keys = {}
|
||||
for key_id, key in all_keys.iteritems():
|
||||
for key_id, key in all_keys.items():
|
||||
if key['ipk11label'] == u'dnssec-master' \
|
||||
or key['ipk11label'].startswith('dnssec-replica:'):
|
||||
continue
|
||||
|
||||
@@ -128,7 +128,7 @@ class Key(collections.MutableMapping):
|
||||
|
||||
def __iter__(self):
|
||||
"""generates list of ipa names of all PKCS#11 attributes present in the object"""
|
||||
for ipa_name in self.entry.keys():
|
||||
for ipa_name in list(self.entry.keys()):
|
||||
lowercase = ipa_name.lower()
|
||||
if lowercase in attrs_name2id:
|
||||
yield lowercase
|
||||
@@ -247,7 +247,7 @@ class LdapKeyDB(AbstractHSM):
|
||||
for cache in [self.cache_masterkeys, self.cache_replica_pubkeys_wrap,
|
||||
self.cache_zone_keypairs]:
|
||||
if cache:
|
||||
for key in cache.itervalues():
|
||||
for key in cache.values():
|
||||
self._update_key(key)
|
||||
|
||||
def flush(self):
|
||||
@@ -326,7 +326,7 @@ class LdapKeyDB(AbstractHSM):
|
||||
|
||||
keys = self._get_key_dict(MasterKey,
|
||||
'(&(objectClass=ipk11SecretKey)(|(ipk11UnWrap=TRUE)(!(ipk11UnWrap=*)))(ipk11Label=dnssec-master))')
|
||||
for key in keys.itervalues():
|
||||
for key in keys.values():
|
||||
prefix = 'dnssec-master'
|
||||
assert key['ipk11label'] == prefix, \
|
||||
'secret key dn="%s" ipk11id=0x%s ipk11label="%s" with ipk11UnWrap = TRUE does not have '\
|
||||
|
||||
@@ -69,7 +69,7 @@ class Key(collections.MutableMapping):
|
||||
|
||||
def __iter__(self):
|
||||
"""generates list of ipa names of all attributes present in the object"""
|
||||
for pkcs11_id, ipa_name in attrs_id2name.iteritems():
|
||||
for pkcs11_id, ipa_name in attrs_id2name.items():
|
||||
try:
|
||||
self.p11.get_attribute(self.handle, pkcs11_id)
|
||||
except _ipap11helper.NotFound:
|
||||
@@ -84,11 +84,7 @@ class Key(collections.MutableMapping):
|
||||
return cnt
|
||||
|
||||
def __str__(self):
|
||||
d = {}
|
||||
for ipa_name, value in self.iteritems():
|
||||
d[ipa_name] = value
|
||||
|
||||
return str(d)
|
||||
return str(dict(self))
|
||||
|
||||
def __repr__(self):
|
||||
return self.__str__()
|
||||
@@ -139,7 +135,7 @@ class LocalHSM(AbstractHSM):
|
||||
"""Get all usable DNSSEC master keys"""
|
||||
keys = self.find_keys(objclass=_ipap11helper.KEY_CLASS_SECRET_KEY, label=u'dnssec-master', cka_unwrap=True)
|
||||
|
||||
for key in keys.itervalues():
|
||||
for key in keys.values():
|
||||
prefix = 'dnssec-master'
|
||||
assert key['ipk11label'] == prefix, \
|
||||
'secret key ipk11id=0x%s ipk11label="%s" with ipk11UnWrap = TRUE does not have '\
|
||||
@@ -198,34 +194,34 @@ if __name__ == '__main__':
|
||||
|
||||
print 'replica public keys: CKA_WRAP = TRUE'
|
||||
print '===================================='
|
||||
for pubkey_id, pubkey in localhsm.replica_pubkeys_wrap.iteritems():
|
||||
for pubkey_id, pubkey in localhsm.replica_pubkeys_wrap.items():
|
||||
print hexlify(pubkey_id)
|
||||
pprint(pubkey)
|
||||
|
||||
print ''
|
||||
print 'replica public keys: all'
|
||||
print '========================'
|
||||
for pubkey_id, pubkey in localhsm.replica_pubkeys.iteritems():
|
||||
for pubkey_id, pubkey in localhsm.replica_pubkeys.items():
|
||||
print hexlify(pubkey_id)
|
||||
pprint(pubkey)
|
||||
|
||||
print ''
|
||||
print 'master keys'
|
||||
print '==========='
|
||||
for mkey_id, mkey in localhsm.master_keys.iteritems():
|
||||
for mkey_id, mkey in localhsm.master_keys.items():
|
||||
print hexlify(mkey_id)
|
||||
pprint(mkey)
|
||||
|
||||
print ''
|
||||
print 'zone public keys'
|
||||
print '================'
|
||||
for key_id, key in localhsm.zone_pubkeys.iteritems():
|
||||
for key_id, key in localhsm.zone_pubkeys.items():
|
||||
print hexlify(key_id)
|
||||
pprint(key)
|
||||
|
||||
print ''
|
||||
print 'zone private keys'
|
||||
print '================='
|
||||
for key_id, key in localhsm.zone_privkeys.iteritems():
|
||||
for key_id, key in localhsm.zone_privkeys.items():
|
||||
print hexlify(key_id)
|
||||
pprint(key)
|
||||
|
||||
@@ -320,7 +320,7 @@ def _httplib_request(
|
||||
headers = headers or {}
|
||||
if (
|
||||
method == 'POST'
|
||||
and 'content-type' not in (str(k).lower() for k in headers.viewkeys())
|
||||
and 'content-type' not in (str(k).lower() for k in headers)
|
||||
):
|
||||
headers['content-type'] = 'application/x-www-form-urlencoded'
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ class Graph():
|
||||
|
||||
# delete _adjacencies
|
||||
del self._adj[vertex]
|
||||
for key, _adj in self._adj.iteritems():
|
||||
for key, _adj in self._adj.items():
|
||||
_adj[:] = [v for v in _adj if v != vertex]
|
||||
|
||||
# delete edges
|
||||
|
||||
@@ -145,7 +145,7 @@ class ConfigureTool(admintool.AdminTool):
|
||||
help="unattended (un)installation never prompts the user",
|
||||
)
|
||||
|
||||
for group, opt_group in groups.iteritems():
|
||||
for group, opt_group in groups.items():
|
||||
parser.add_option_group(opt_group)
|
||||
|
||||
super(ConfigureTool, cls).add_options(parser,
|
||||
|
||||
@@ -229,7 +229,7 @@ class Configurable(object):
|
||||
setattr(self, name, value)
|
||||
|
||||
if kwargs:
|
||||
extra = sorted(kwargs.keys())
|
||||
extra = sorted(kwargs)
|
||||
raise TypeError(
|
||||
"{0}() got {1} unexpected keyword arguments: {2}".format(
|
||||
type(self).__name__,
|
||||
|
||||
@@ -8,6 +8,8 @@ Utilities.
|
||||
|
||||
import sys
|
||||
|
||||
import six
|
||||
|
||||
|
||||
def raise_exc_info(exc_info):
|
||||
"""
|
||||
@@ -155,7 +157,7 @@ class InnerClassMeta(type):
|
||||
except KeyError:
|
||||
cls, name, value = None, None, None
|
||||
for cls in obj_type.__mro__:
|
||||
for name, value in cls.__dict__.iteritems():
|
||||
for name, value in six.iteritems(cls.__dict__):
|
||||
if value is self:
|
||||
break
|
||||
if value is self:
|
||||
|
||||
@@ -279,7 +279,7 @@ class LDAPEntry(collections.MutableMapping):
|
||||
|
||||
def __repr__(self):
|
||||
data = dict(self._raw)
|
||||
data.update((k, v) for k, v in self._nice.iteritems() if v is not None)
|
||||
data.update((k, v) for k, v in self._nice.items() if v is not None)
|
||||
return '%s(%r, %r)' % (type(self).__name__, self._dn, data)
|
||||
|
||||
def copy(self):
|
||||
@@ -495,7 +495,7 @@ class LDAPEntry(collections.MutableMapping):
|
||||
def generate_modlist(self):
|
||||
modlist = []
|
||||
|
||||
names = set(self.iterkeys())
|
||||
names = set(self)
|
||||
names.update(self._orig)
|
||||
for name in names:
|
||||
new = self.raw.get(name, [])
|
||||
@@ -548,7 +548,7 @@ class LDAPEntryView(collections.MutableMapping):
|
||||
self._entry.clear()
|
||||
|
||||
def __iter__(self):
|
||||
return self._entry.iterkeys()
|
||||
return iter(self._entry)
|
||||
|
||||
def __len__(self):
|
||||
return len(self._entry)
|
||||
@@ -842,7 +842,7 @@ class LDAPClient(object):
|
||||
elif isinstance(val, tuple):
|
||||
return tuple(self.encode(m) for m in val)
|
||||
elif isinstance(val, dict):
|
||||
dct = dict((self.encode(k), self.encode(v)) for k, v in val.iteritems())
|
||||
dct = dict((self.encode(k), self.encode(v)) for k, v in val.items())
|
||||
return dct
|
||||
elif isinstance(val, datetime.datetime):
|
||||
return val.strftime(LDAP_GENERALIZED_TIME_FORMAT)
|
||||
@@ -875,7 +875,7 @@ class LDAPClient(object):
|
||||
elif isinstance(val, tuple):
|
||||
return tuple(self.decode(m, attr) for m in val)
|
||||
elif isinstance(val, dict):
|
||||
dct = dict((unicode_from_utf8(k), self.decode(v, k)) for k, v in val.iteritems())
|
||||
dct = dict((unicode_from_utf8(k), self.decode(v, k)) for k, v in val.items())
|
||||
return dct
|
||||
elif val is None:
|
||||
return None
|
||||
@@ -1234,7 +1234,7 @@ class LDAPClient(object):
|
||||
make_filter_rules = rules
|
||||
flts = []
|
||||
if attrs_list is None:
|
||||
for (k, v) in entry_attrs.iteritems():
|
||||
for (k, v) in entry_attrs.items():
|
||||
flts.append(
|
||||
self.make_filter_from_attr(
|
||||
k, v, make_filter_rules, exact,
|
||||
@@ -1436,11 +1436,11 @@ class LDAPClient(object):
|
||||
This should be called as add_entry(entry).
|
||||
"""
|
||||
# remove all [] values (python-ldap hates 'em)
|
||||
attrs = dict((k, v) for k, v in entry.raw.iteritems() if v)
|
||||
attrs = dict((k, v) for k, v in entry.raw.items() if v)
|
||||
|
||||
with self.error_handler():
|
||||
attrs = self.encode(attrs)
|
||||
self.conn.add_s(str(entry.dn), attrs.items())
|
||||
self.conn.add_s(str(entry.dn), list(attrs.items()))
|
||||
|
||||
entry.reset_modlist()
|
||||
|
||||
|
||||
@@ -545,13 +545,13 @@ class CIDict(dict):
|
||||
for key in keys():
|
||||
self.__setitem__(key, new[key], seen)
|
||||
seen = set()
|
||||
for key, value in kwargs.iteritems():
|
||||
for key, value in kwargs.items():
|
||||
self.__setitem__(key, value, seen)
|
||||
|
||||
def __contains__(self, key):
|
||||
return super(CIDict, self).__contains__(key.lower())
|
||||
|
||||
if sys.version_info < (3, 0):
|
||||
if six.PY2:
|
||||
def has_key(self, key):
|
||||
return super(CIDict, self).has_key(key.lower())
|
||||
|
||||
@@ -562,29 +562,38 @@ class CIDict(dict):
|
||||
return failobj
|
||||
|
||||
def __iter__(self):
|
||||
return self._keys.itervalues()
|
||||
return six.itervalues(self._keys)
|
||||
|
||||
def keys(self):
|
||||
return list(self.iterkeys())
|
||||
if six.PY2:
|
||||
return list(self.iterkeys())
|
||||
else:
|
||||
return self.iterkeys()
|
||||
|
||||
def items(self):
|
||||
return list(self.iteritems())
|
||||
if six.PY2:
|
||||
return list(self.iteritems())
|
||||
else:
|
||||
return self.iteritems()
|
||||
|
||||
def values(self):
|
||||
return list(self.itervalues())
|
||||
if six.PY2:
|
||||
return list(self.itervalues())
|
||||
else:
|
||||
return self.itervalues()
|
||||
|
||||
def copy(self):
|
||||
"""Returns a shallow copy of this CIDict"""
|
||||
return CIDict(self.items())
|
||||
return CIDict(list(self.items()))
|
||||
|
||||
def iteritems(self):
|
||||
return ((k, self[k]) for k in self._keys.itervalues())
|
||||
return ((k, self[k]) for k in six.itervalues(self._keys))
|
||||
|
||||
def iterkeys(self):
|
||||
return self._keys.itervalues()
|
||||
return six.itervalues(self._keys)
|
||||
|
||||
def itervalues(self):
|
||||
return (v for k, v in self.iteritems())
|
||||
return (v for k, v in six.iteritems(self))
|
||||
|
||||
def setdefault(self, key, value=None):
|
||||
try:
|
||||
|
||||
@@ -104,7 +104,7 @@ class RemoveRUVParser(ldif.LDIFParser):
|
||||
objectclass = None
|
||||
nsuniqueid = None
|
||||
|
||||
for name, value in entry.iteritems():
|
||||
for name, value in entry.items():
|
||||
name = name.lower()
|
||||
if name == 'objectclass':
|
||||
objectclass = [x.lower() for x in value]
|
||||
|
||||
@@ -399,10 +399,10 @@ class update_managed_permissions(Updater):
|
||||
"""
|
||||
for obj in sorted(self.api.Object(), key=lambda o: o.name):
|
||||
managed_permissions = getattr(obj, 'managed_permissions', {})
|
||||
for name, template in sorted(managed_permissions.iteritems()):
|
||||
for name, template in sorted(managed_permissions.items()):
|
||||
yield name, template, obj
|
||||
|
||||
for name, template in sorted(NONOBJECT_PERMISSIONS.iteritems()):
|
||||
for name, template in sorted(NONOBJECT_PERMISSIONS.items()):
|
||||
yield name, template, None
|
||||
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ class update_referint(Updater):
|
||||
entry['nsslapd-pluginArg2'] = None
|
||||
|
||||
# nsslapd-pluginArg3..N -> referint-membership-attr [3..N]
|
||||
for key in entry.keys():
|
||||
for key in list(entry):
|
||||
if key.lower().startswith('nsslapd-pluginarg'):
|
||||
arg_val = entry.single_value[key]
|
||||
if arg_val:
|
||||
|
||||
@@ -56,7 +56,7 @@ def _get_oid_dependency_order(schema, cls):
|
||||
# remove top_node from tree, it breaks ordering
|
||||
# we don't need this, tree from file is not consistent
|
||||
del tree[top_node]
|
||||
unordered_oids = tree.keys()
|
||||
unordered_oids = set(tree)
|
||||
|
||||
# split into two groups, parents and child nodes, and iterate until
|
||||
# child nodes are not empty
|
||||
|
||||
@@ -34,6 +34,7 @@ from ipaserver.install.installutils import (
|
||||
IPA_MODULES, BadHostError, get_fqdn, get_server_ip_address,
|
||||
is_ipa_configured, load_pkcs12, read_password, verify_fqdn)
|
||||
from ipaserver.plugins.ldap2 import ldap2
|
||||
|
||||
try:
|
||||
from ipaserver.install import adtrustinstance
|
||||
_server_trust_ad_installed = True
|
||||
@@ -342,7 +343,7 @@ def install_check(installer):
|
||||
sys.exit("Directory Manager password required")
|
||||
try:
|
||||
cache_vars = read_cache(dm_password)
|
||||
for name, value in cache_vars.iteritems():
|
||||
for name, value in cache_vars.items():
|
||||
if name not in options.__dict__:
|
||||
options.__dict__[name] = value
|
||||
if cache_vars.get('external_ca', False):
|
||||
|
||||
@@ -123,7 +123,7 @@ class ModifyLDIF(ldif.LDIFParser):
|
||||
|
||||
def handle(self, dn, entry):
|
||||
if dn in self.remove_dict:
|
||||
for name, value in self.remove_dict[dn].iteritems():
|
||||
for name, value in self.remove_dict[dn].items():
|
||||
if value is None:
|
||||
attribute = []
|
||||
else:
|
||||
@@ -135,7 +135,7 @@ class ModifyLDIF(ldif.LDIFParser):
|
||||
del entry[name]
|
||||
|
||||
if dn in self.add_dict:
|
||||
for name, value in self.add_dict[dn].iteritems():
|
||||
for name, value in self.add_dict[dn].items():
|
||||
attribute = entry.setdefault(name, [])
|
||||
attribute.extend([v for v in value if v not in attribute])
|
||||
|
||||
|
||||
@@ -201,7 +201,7 @@ def params_2_args_options(params):
|
||||
def nicify_query(query, encoding='utf-8'):
|
||||
if not query:
|
||||
return
|
||||
for (key, value) in query.iteritems():
|
||||
for (key, value) in query.items():
|
||||
if len(value) == 0:
|
||||
yield (key, None)
|
||||
elif len(value) == 1:
|
||||
@@ -493,7 +493,7 @@ class jsonserver(WSGIExecutioner, HTTP_Status):
|
||||
options = params[1]
|
||||
if not isinstance(options, dict):
|
||||
raise JSONError(error=_('params[1] (aka options) must be a dict'))
|
||||
options = dict((str(k), v) for (k, v) in options.iteritems())
|
||||
options = dict((str(k), v) for (k, v) in options.items())
|
||||
return (method, args, options, _id)
|
||||
|
||||
class AuthManagerKerb(AuthManager):
|
||||
|
||||
@@ -223,12 +223,12 @@ class test_Executioner(ClassChecker):
|
||||
# Test that CommandError is raised:
|
||||
conn = Connection('The connection.', Disconnect('someconn'))
|
||||
context.someconn = conn
|
||||
print str(context.__dict__.keys())
|
||||
print str(list(context.__dict__))
|
||||
e = raises(errors.CommandError, o.execute, 'nope')
|
||||
assert e.name == 'nope'
|
||||
assert conn.disconnect.called is True # Make sure destroy_context() was called
|
||||
print str(context.__dict__.keys())
|
||||
assert context.__dict__.keys() == []
|
||||
print str(list(context.__dict__))
|
||||
assert list(context.__dict__) == []
|
||||
|
||||
# Test with echo command:
|
||||
arg1 = unicode_str
|
||||
@@ -247,7 +247,7 @@ class test_Executioner(ClassChecker):
|
||||
result=(arg1, arg2, options)
|
||||
)
|
||||
assert conn.disconnect.called is True # Make sure destroy_context() was called
|
||||
assert context.__dict__.keys() == []
|
||||
assert list(context.__dict__) == []
|
||||
|
||||
conn = Connection('The connection.', Disconnect('someconn'))
|
||||
context.someconn = conn
|
||||
@@ -255,7 +255,7 @@ class test_Executioner(ClassChecker):
|
||||
result=(arg1, arg2, options)
|
||||
)
|
||||
assert conn.disconnect.called is True # Make sure destroy_context() was called
|
||||
assert context.__dict__.keys() == []
|
||||
assert list(context.__dict__) == []
|
||||
|
||||
# Test with good command:
|
||||
conn = Connection('The connection.', Disconnect('someconn'))
|
||||
@@ -264,14 +264,14 @@ class test_Executioner(ClassChecker):
|
||||
assert e.name == 'nurse'
|
||||
assert e.error == u'Not naughty!'
|
||||
assert conn.disconnect.called is True # Make sure destroy_context() was called
|
||||
assert context.__dict__.keys() == []
|
||||
assert list(context.__dict__) == []
|
||||
|
||||
# Test with bad command:
|
||||
conn = Connection('The connection.', Disconnect('someconn'))
|
||||
context.someconn = conn
|
||||
e = raises(errors.InternalError, o.execute, 'bad')
|
||||
assert conn.disconnect.called is True # Make sure destroy_context() was called
|
||||
assert context.__dict__.keys() == []
|
||||
assert list(context.__dict__) == []
|
||||
|
||||
# Test with option 'name':
|
||||
conn = Connection('The connection.', Disconnect('someconn'))
|
||||
|
||||
@@ -345,7 +345,7 @@ class test_Env(ClassChecker):
|
||||
expected.update(dict(group1))
|
||||
assert list(o) == sorted(expected)
|
||||
assert expected['key2'] == 'value 2' # And not 'Value 2'
|
||||
for (key, value) in expected.iteritems():
|
||||
for (key, value) in expected.items():
|
||||
assert getattr(o, key) is value
|
||||
assert o[key] is value
|
||||
assert o._merge(**expected) == (0, 6)
|
||||
|
||||
@@ -47,14 +47,14 @@ class PrivateExceptionTester(object):
|
||||
klass = property(__get_klass)
|
||||
|
||||
def new(self, **kw):
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
assert not hasattr(self.klass, key), key
|
||||
inst = self.klass(**kw)
|
||||
assert isinstance(inst, StandardError)
|
||||
assert isinstance(inst, errors.PrivateError)
|
||||
assert isinstance(inst, self.klass)
|
||||
assert not isinstance(inst, errors.PublicError)
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
assert getattr(inst, key) is value
|
||||
assert str(inst) == self.klass.format % kw
|
||||
assert inst.message == str(inst)
|
||||
@@ -212,14 +212,14 @@ class PublicExceptionTester(object):
|
||||
assert str(e) == TYPE_ERROR % ('message', unicode, 'The message', str)
|
||||
|
||||
# Test the instance:
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
assert not hasattr(self.klass, key), key
|
||||
inst = self.klass(format=format, message=message, **kw)
|
||||
for required_class in self.required_classes:
|
||||
assert isinstance(inst, required_class)
|
||||
assert isinstance(inst, self.klass)
|
||||
assert not isinstance(inst, errors.PrivateError)
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
assert getattr(inst, key) is value
|
||||
return inst
|
||||
|
||||
|
||||
@@ -430,7 +430,7 @@ class test_Command(ClassChecker):
|
||||
)
|
||||
o = self.subcls(api)
|
||||
o.finalize()
|
||||
for (key, value) in o.convert(**kw).iteritems():
|
||||
for (key, value) in o.convert(**kw).items():
|
||||
assert_equal(unicode(kw[key]), value)
|
||||
|
||||
def test_normalize(self):
|
||||
|
||||
@@ -699,7 +699,7 @@ class test_Data(ClassChecker):
|
||||
]
|
||||
for kw in permutations:
|
||||
o = self.cls('my_data', **kw)
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
assert getattr(o, key) == value
|
||||
e = raises(ValueError, self.cls, 'my_data', length=5, **kw)
|
||||
assert str(e) == \
|
||||
@@ -760,7 +760,7 @@ class test_Bytes(ClassChecker):
|
||||
assert len(o.class_rules) == len(kw)
|
||||
assert len(o.rules) == 0
|
||||
assert len(o.all_rules) == len(kw)
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
assert getattr(o, key) == value
|
||||
e = raises(ValueError, self.cls, 'my_bytes', length=5, **kw)
|
||||
assert str(e) == \
|
||||
|
||||
@@ -239,7 +239,7 @@ class TestAVA(unittest.TestCase):
|
||||
|
||||
self.assertEqual(len(d), 2)
|
||||
self.assertEqual(len(s), 2)
|
||||
self.assertEqual(sorted(d.keys()), sorted([ava1_a, ava2_a]))
|
||||
self.assertEqual(sorted(d), sorted([ava1_a, ava2_a]))
|
||||
self.assertEqual(sorted(s), sorted([ava1_a, ava2_a]))
|
||||
|
||||
self.assertTrue(ava1_a in d)
|
||||
@@ -1119,7 +1119,7 @@ class TestDN(unittest.TestCase):
|
||||
|
||||
self.assertEqual(len(d), 2)
|
||||
self.assertEqual(len(s), 2)
|
||||
self.assertEqual(sorted(d.keys()), sorted([dn1_a, dn2_a]))
|
||||
self.assertEqual(sorted(d), sorted([dn1_a, dn2_a]))
|
||||
self.assertEqual(sorted(s), sorted([dn1_a, dn2_a]))
|
||||
|
||||
self.assertTrue(dn1_a in d)
|
||||
|
||||
@@ -24,6 +24,7 @@ import sys
|
||||
|
||||
import nose
|
||||
import pytest
|
||||
import six
|
||||
|
||||
from ipapython import ipautil
|
||||
|
||||
@@ -132,9 +133,13 @@ class TestCIDict(object):
|
||||
self.cidict.clear()
|
||||
nose.tools.assert_equal(0, len(self.cidict))
|
||||
assert self.cidict == {}
|
||||
assert self.cidict.keys() == []
|
||||
assert self.cidict.values() == []
|
||||
assert self.cidict.items() == []
|
||||
assert list(self.cidict) == []
|
||||
assert list(self.cidict.values()) == []
|
||||
assert list(self.cidict.items()) == []
|
||||
if six.PY2:
|
||||
assert self.cidict.keys() == []
|
||||
assert self.cidict.values() == []
|
||||
assert self.cidict.items() == []
|
||||
assert self.cidict._keys == {}
|
||||
|
||||
def test_copy(self):
|
||||
@@ -145,7 +150,7 @@ class TestCIDict(object):
|
||||
assert "key1" in copy
|
||||
nose.tools.assert_equal("val1", copy["Key1"])
|
||||
|
||||
@pytest.mark.skipif(sys.version_info >= (3, 0), reason="Python 2 only")
|
||||
@pytest.mark.skipif(not six.PY2, reason="Python 2 only")
|
||||
def test_haskey(self):
|
||||
assert self.cidict.has_key("KEY1")
|
||||
assert self.cidict.has_key("key2")
|
||||
@@ -161,15 +166,15 @@ class TestCIDict(object):
|
||||
assert "Key4" not in self.cidict
|
||||
|
||||
def test_items(self):
|
||||
items = self.cidict.items()
|
||||
items = list(self.cidict.items())
|
||||
nose.tools.assert_equal(3, len(items))
|
||||
items_set = set(items)
|
||||
assert ("Key1", "val1") in items_set
|
||||
assert ("key2", "val2") in items_set
|
||||
assert ("KEY3", "VAL3") in items_set
|
||||
|
||||
assert self.cidict.items() == list(self.cidict.iteritems()) == zip(
|
||||
self.cidict.iterkeys(), self.cidict.itervalues())
|
||||
assert list(self.cidict.items()) == list(self.cidict.iteritems()) == zip(
|
||||
self.cidict.keys(), self.cidict.values())
|
||||
|
||||
def test_iter(self):
|
||||
items = []
|
||||
@@ -207,24 +212,24 @@ class TestCIDict(object):
|
||||
assert "VAL3" in values_set
|
||||
|
||||
def test_keys(self):
|
||||
keys = self.cidict.keys()
|
||||
keys = list(self.cidict.keys())
|
||||
nose.tools.assert_equal(3, len(keys))
|
||||
keys_set = set(keys)
|
||||
assert "Key1" in keys_set
|
||||
assert "key2" in keys_set
|
||||
assert "KEY3" in keys_set
|
||||
|
||||
assert self.cidict.keys() == list(self.cidict.iterkeys())
|
||||
assert list(self.cidict.keys()) == list(self.cidict.iterkeys())
|
||||
|
||||
def test_values(self):
|
||||
values = self.cidict.values()
|
||||
values = list(self.cidict.values())
|
||||
nose.tools.assert_equal(3, len(values))
|
||||
values_set = set(values)
|
||||
assert "val1" in values_set
|
||||
assert "val2" in values_set
|
||||
assert "VAL3" in values_set
|
||||
|
||||
assert self.cidict.values() == list(self.cidict.itervalues())
|
||||
assert list(self.cidict.values()) == list(self.cidict.itervalues())
|
||||
|
||||
def test_update(self):
|
||||
newdict = { "KEY2": "newval2",
|
||||
@@ -232,7 +237,7 @@ class TestCIDict(object):
|
||||
self.cidict.update(newdict)
|
||||
nose.tools.assert_equal(4, len(self.cidict))
|
||||
|
||||
items = self.cidict.items()
|
||||
items = list(self.cidict.items())
|
||||
nose.tools.assert_equal(4, len(items))
|
||||
items_set = set(items)
|
||||
assert ("Key1", "val1") in items_set
|
||||
|
||||
@@ -211,7 +211,7 @@ class test_LDAPEntry(object):
|
||||
def test_popitem(self):
|
||||
e = self.entry
|
||||
assert e.popitem() == ('cn', self.cn1)
|
||||
e.keys() == []
|
||||
list(e) == []
|
||||
|
||||
def test_setdefault(self):
|
||||
e = self.entry
|
||||
|
||||
@@ -154,7 +154,7 @@ class UI_driver(object):
|
||||
c = self.config
|
||||
|
||||
# override with environmental variables
|
||||
for k, v in ENV_MAP.iteritems():
|
||||
for k, v in ENV_MAP.items():
|
||||
val = os.environ.get(k)
|
||||
if val is not None:
|
||||
c[v] = val
|
||||
|
||||
@@ -122,7 +122,7 @@ class Tracker(object):
|
||||
|
||||
args_repr = ', '.join(
|
||||
[repr(a) for a in args] +
|
||||
['%s=%r' % item for item in options.items()])
|
||||
['%s=%r' % item for item in list(options.items())])
|
||||
try:
|
||||
result = cmd(*args, **options)
|
||||
except Exception as e:
|
||||
|
||||
@@ -30,7 +30,6 @@ from ipatests.test_xmlrpc import objectclasses
|
||||
from ipatests.test_xmlrpc.xmlrpc_test import (XMLRPC_test, assert_attr_equal,
|
||||
Declarative)
|
||||
|
||||
|
||||
class test_pwpolicy(XMLRPC_test):
|
||||
"""
|
||||
Test the `pwpolicy` plugin.
|
||||
@@ -195,7 +194,7 @@ class test_pwpolicy(XMLRPC_test):
|
||||
# Test that returned values match the arguments
|
||||
# Only test the second and third results; the first one was modified
|
||||
for entry, expected in (result[1], self.kw2), (result[2], self.kw3):
|
||||
for name, value in expected.iteritems():
|
||||
for name, value in expected.items():
|
||||
assert_attr_equal(entry, name, str(value))
|
||||
|
||||
def test_c_pwpolicy_find_pkey_only(self):
|
||||
|
||||
@@ -468,7 +468,7 @@ def get_api(**kw):
|
||||
home = TempHome()
|
||||
api = ipalib.create_api(mode='unit_test')
|
||||
api.env.in_tree = True
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
api.env[key] = value
|
||||
return (api, home)
|
||||
|
||||
@@ -483,7 +483,7 @@ def create_test_api(**kw):
|
||||
home = TempHome()
|
||||
api = ipalib.create_api(mode='unit_test')
|
||||
api.env.in_tree = True
|
||||
for (key, value) in kw.iteritems():
|
||||
for (key, value) in kw.items():
|
||||
api.env[key] = value
|
||||
return (api, home)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user