diff options
author | Guilhem Moulin <guilhem@fripost.org> | 2016-12-08 19:39:01 +0100 |
---|---|---|
committer | Guilhem Moulin <guilhem@fripost.org> | 2016-12-08 19:39:01 +0100 |
commit | ca71056ec50e7b51ca0eaebb7a716207ce1a00e6 (patch) | |
tree | 3d782f3ad97db1095765db8c5fe137bb1eb34069 /lib/modules | |
parent | 43f39850ffd9e658b4d783106ea32d9f5430e633 (diff) |
Make Ansible modules compatible with Ansible 2.2.0.0.
Diffstat (limited to 'lib/modules')
-rw-r--r-- | lib/modules/openldap | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/modules/openldap b/lib/modules/openldap index 5178033..9b015b6 100644 --- a/lib/modules/openldap +++ b/lib/modules/openldap @@ -122,72 +122,72 @@ def flexibleSearch(module, l, dn, entry): f = f[0] else: f = '(&(' + ')('.join(f) + '))' r = l.search_s( base, scope, filterstr=f ) if len(r) > 1: module.fail_json(msg="Multiple results found! This is a bug. Please report.") elif r: return r.pop() # Add or modify (only the attributes that differ from those in the # directory) the entry for that DN. # l must be an LDAPObject, and should provide an open connection to the # directory with disclose/search/write access. def processEntry(module, l, dn, entry): changed = False for x in indexedAttributes.intersection(entry.keys()): # remove useless extra spaces in ACLs etc - entry[x] = map( partial(multispaces.sub, ' '), entry[x] ) + entry[x] = list(map( partial(multispaces.sub, ' '), entry[x] )) r = flexibleSearch( module, l, dn, entry ) if r is None: changed = True if module.check_mode: module.exit_json(changed=changed, msg="add DN %s" % dn) if 'olcAccess' in entry.keys(): # replace "username=...,cn=peercred,cn=external,cn=auth" # by a DN with proper gidNumber and uidNumber - entry['olcAccess'] = map ( partial(sasl_ext_re.sub, acl_sasl_ext) - , entry['olcAccess'] ) + entry['olcAccess'] = list(map ( partial(sasl_ext_re.sub, acl_sasl_ext) + , entry['olcAccess'] )) l.add_s( dn, addModlist(entry) ) else: d,e = r fst = str2dn(dn).pop(0)[0][0] diff = [] for a,v in e.iteritems(): if a not in entry.keys(): if a != fst: # delete all values except for the first attribute, # which is implicit diff.append(( ldap.MOD_DELETE, a, None )) elif a in indexedAttributes: if a == 'olcAccess': # replace "username=...,cn=peercred,cn=external,cn=auth" # by a DN with proper gidNumber and uidNumber - entry[a] = map ( partial(sasl_ext_re.sub, acl_sasl_ext) - , entry[a] ) + entry[a] = list(map ( partial(sasl_ext_re.sub, acl_sasl_ext) + , entry[a] )) # add explicit indices in the entry from the LDIF - entry[a] = map( (lambda x: '{%d}%s' % x) - , zip(range(len(entry[a])),entry[a]) ) + entry[a] = list(map( (lambda x: '{%d}%s' % x) + , zip(range(len(entry[a])),entry[a]))) if v != entry[a]: diff.append(( ldap.MOD_REPLACE, a, entry[a] )) elif v != entry[a]: # for non-indexed attribute, we update values in the # symmetric difference only s1 = set(v) s2 = set(entry[a]) if s1.isdisjoint(s2): # replace the former values with the new ones diff.append(( ldap.MOD_REPLACE, a, entry[a] )) else: x = list(s1.difference(s2)) if x: diff.append(( ldap.MOD_DELETE, a, x )) y = list(s2.difference(s1)) if y: diff.append(( ldap.MOD_ADD, a, y )) # add attributes that weren't in e for a in set(entry).difference(e.keys()): |