[Freeipa-devel] [PATCH] 0032 Cleanup when deleting a replica

Simo Sorce ssorce at redhat.com
Mon Dec 20 20:02:42 UTC 2010


On Mon, 20 Dec 2010 18:02:02 +0100
Jakub Hrozek <jhrozek at redhat.com> wrote:

> On Wed, Dec 15, 2010 at 08:01:10PM -0500, Simo Sorce wrote:
> > 
> > Clean up records related to the master being deleted in the shared
> > tree.
> > 
> > This also avoid issues later on if you want to rejoin the server as
> > a master. It is also needed in order to give back valid information
> > for patch 0035
> > 
> > Simo.
> > 
> > -- 
> > Simo Sorce * Red Hat, Inc * New York
> 
> >  def del_master(replman, hostname, force=False):
> > +    has_repl_agreement = True
> >      try:
> >          t = replman.get_agreement_type(hostname)
> >      except ldap.NO_SUCH_OBJECT:
> >          print "No replication agreement found for '%s'" % hostname
> > -        return
> > +        if force:
> > +            has_repl_agreement = False
> > +        else:
> > +            return
> >      except errors.NotFound:
> >          print "No replication agreement found for '%s'" % hostname
> > -        return
> > +        if force:
> > +            has_repl_agreement = False
> > +        else:
> > +            return
> 
> This is just a nitpick but the above except: blocks are exactly the
> same. One could remove the redundancy by just using:
>   
>   except (errors.NotFound, ldap.NO_SUCH_OBJECT):
> 
> > +
> > +    def replica_cleanup(self, replica, realm, force=False):
> > +
> > +        err = None
> > +
> > +        if replica == self.hostname:
> > +            raise RuntimeError("Can't cleanup self")
> > +
> > +        if not self.suffix or self.suffix == "":
> > +            self.suffix = util.realm_to_suffix(realm)
> > +            self.suffix = ipaldap.IPAdmin.normalizeDN(self.suffix)
> 
> This looks suspicious. Should one of these be in else: perhaps?

No, I just reused the same var to keep a temporary value, instead of
having a long line. not pretty but it is correct.
I can use a temp var if you think it makes for more readable code
though.

> The rest of the code looks OK, but I'm currently not able to test as
> the deletion fails with "Insufficient access". In my setup, vm-061 is
> the master and vm-038 is the replica:
> 
> [root at vm-061 ~]# ipa-replica-manage list vm-061.idm.lab.bos.redhat.com
> vm-038.idm.lab.bos.redhat.com
> [root at vm-061 ~]# ipa-replica-manage del vm-038.idm.lab.bos.redhat.com
> Unable to remove agreement on vm-038.idm.lab.bos.redhat.com:
> Insufficient access: 

Do you have a ticket as admin when you try this ?

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York




More information about the Freeipa-devel mailing list