replica-manage: Properly delete nested entries

Bad ordering of LDAP entries during replica removal resulted in a failure to
delete replica and its services from cn=masters,cn=ipa,cn=etc,$SUFFIX. This
patch enforces the correct ordering of entries resulting in proper removal of
services before the host entry itself.

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

Reviewed-By: Martin Babinsky <mbabinsk@redhat.com>
This commit is contained in:
Tomas Babej 2015-05-06 15:06:56 +02:00 committed by Petr Vobornik
parent d0a330aa1c
commit c5f319d3e8
2 changed files with 3 additions and 3 deletions

View File

@ -322,7 +322,7 @@ def del_link(realm, replica1, replica2, dirman_passwd, force=False):
ipautil.realm_to_suffix(realm))
entries = repl1.conn.get_entries(dn, repl1.conn.SCOPE_SUBTREE)
if entries:
entries.sort(key=len, reverse=True)
entries.sort(key=lambda x: len(x.dn), reverse=True)
for entry in entries:
repl1.conn.delete_entry(entry)
except Exception, e:

View File

@ -1178,7 +1178,7 @@ class ReplicationManager(object):
self.suffix, ldap.SCOPE_SUBTREE,
filter='(krbprincipalname=*/%s@%s)' % (replica, realm))
if entries:
entries.sort(key=len, reverse=True)
entries.sort(key=lambda x: len(x.dn), reverse=True)
for entry in entries:
self.conn.delete_entry(entry)
except errors.NotFound:
@ -1220,7 +1220,7 @@ class ReplicationManager(object):
('cn', 'etc'), self.suffix)
entries = self.conn.get_entries(dn, ldap.SCOPE_SUBTREE)
if entries:
entries.sort(key=len, reverse=True)
entries.sort(key=lambda x: len(x.dn), reverse=True)
for entry in entries:
self.conn.delete_entry(entry)
except errors.NotFound: