py3: __add_acl: use standard ipaldap methods

Using raw pyldap interface we have to keep vaules as bytes. Is easier to
migrate to ipaldap and use strings without decoding and encoding.

https://fedorahosted.org/freeipa/ticket/4985

Reviewed-By: Christian Heimes <cheimes@redhat.com>
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
Martin Basti 2017-01-11 12:35:08 +01:00
parent 0a1d7f2e01
commit 4b148c8ca3

View File

@ -1528,22 +1528,19 @@ def __add_acls(new_rules):
Return ``True`` if any ACLs were added otherwise ``False``.
"""
server_id = installutils.realm_to_serverid(api.env.realm)
dogtag_uri = 'ldapi://%%2fvar%%2frun%%2fslapd-%s.socket' % server_id
updated = False
dn = DN(('cn', 'aclResources'), ('o', 'ipaca'))
conn = ldap2.ldap2(api, ldap_uri=dogtag_uri)
if not conn.isconnected():
conn.connect(autobind=True)
cur_rules = conn.get_entry(dn).get('resourceACLS', [])
conn = api.Backend.ldap2
entry = conn.get_entry(dn)
cur_rules = entry.get('resourceACLS', [])
add_rules = [rule for rule in new_rules if rule not in cur_rules]
if add_rules:
conn.conn.modify_s(str(dn), [(ldap.MOD_ADD, 'resourceACLS', add_rules)])
cur_rules.extend(add_rules)
conn.update_entry(entry)
updated = True
conn.disconnect()
return updated