[Freeipa-devel] [PATCH] 0004 User life cycle: support of MODRDN to a new superior
Jan Cholasta
jcholast at redhat.com
Wed Apr 8 13:33:36 UTC 2015
Dne 8.4.2015 v 15:00 thierry bordaz napsal(a):
> On 04/08/2015 08:34 AM, Jan Cholasta wrote:
>> Hi,
>>
>> Dne 1.4.2015 v 17:40 thierry bordaz napsal(a):
>>> Hello,
>>>
>>> In user life cycle, Active entries are moved to Delete container and
>>> Delete entries can be moved back to Staging container.
>>> This requires a LDAP modrdn with new superior that is not supported
>>> in ldap2.
>>
>> Since update_entry_rdn() is used only in one spot in baseldap, I think
>> we can merge it and move_entry_newsuperior() into a single method
>> move_entry():
>>
>> def move_entry(self, dn, new_dn, del_old=True):
>>
>> We can easily detect whether the superior needs to be updated by
>> comparing dn[1:] and new_dn[1:].
>
> Hello Jan,
>
> Yes that is a good idea to merge those two methods. They both rely on
> modrdn and a single method is enough.
Well, I had something like this in mind:
def move_entry(self, dn, new_dn, del_old=True):
assert isinstance(dn, DN)
assert isinstance(new_dn, DN)
if new_dn == dn:
raise errors.EmptyModlist()
new_rdn = new_dn[0]
if new_rdn == dn[0]:
new_rdn = None
new_superior = new_dn[1:]
if new_superior == dn[1:]:
new_superior = None
with self.error_handler():
self.conn.rename_s(dn, new_rdn, new_superior, int(del_old))
time.sleep(.3) # Give memberOf plugin a chance to work
so that you don't have to care if you should change the RDN or the
superior and it just does the right thing.
>
>>
>> Maybe we can also get rid of del_old, if it's always gonna be True in
>> our code?
>
> I think it is better to get this interface as close as possible as the
> MODRDN call, so that del_old option will be already available for future
> usage.
> I agree that currently del_old is always true in case of IPA but it
> could be the default value.
OK, it's not a big piece of code, so I guess we can leave it.
--
Jan Cholasta
More information about the Freeipa-devel
mailing list