<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <meta http-equiv="CONTENT-TYPE" content="text/html;
      charset=ISO-8859-1">
    <p style="margin-bottom: 0in">Hi,<br>
      in recent posts about corrupted ruvs, there also was the error
      about failing cleanup, like:<br>
    </p>
    <p style="margin-bottom: 0in">ipa-replica-manage del
      vm-162.idm.lab.eng.brq.redhat.com</p>
    ..<br>
    Failed to cleanup
    vm-162.idm.lab.eng.brq.redhat.com entries: Not allowed on non-leaf
    entry<br>
    <br>
    in the access log we see<br>
    <p style="margin-bottom: 0in">[06/May/2015:14:19:11 +0200]conn=30
      op=17 SRCH
      base="cn=vm-162.idm.lab.eng.brq.redhat.com,cn=masters,cn=ipa,cn=etc,dc=idm,dc=lab,dc=eng,dc=brq,dc=redhat,dc=com"
scope=2
      filter="(objectClass=*)" attrs=ALL
    </p>
    [06/May/2015:14:19:11 +0200] conn=30
    op=17 RESULT err=0 tag=101 nentries=6 etime=0 notes=U<br>
    [06/May/2015:14:19:11 +0200] conn=30
    op=18 DEL
dn="cn=vm-162.idm.lab.eng.brq.redhat.com,cn=masters,cn=ipa,cn=etc,dc=idm,dc=lab,dc=eng,dc=brq,dc=redhat,dc=com"<br>
    [06/May/2015:14:19:11 +0200] conn=30
    op=18 RESULT err=66 tag=107 nentries=0 etime=0<br>
    <br>
    which means that there was an attempt to remove the host before the
    services<br>
    <br>
    <p style="margin-bottom: 0in">in replica_cleanup we have:</p>
    <p style="margin-bottom: 0in"> <tt># delete master entry with all
        active
        services
      </tt></p>
    <tt>try:</tt><tt><br>
          dn = DN(('cn', replica),
      ('cn', 'masters'), ('cn', 'ipa'),</tt><tt>('cn', 'etc'),
      self.suffix)</tt><tt><br>
          entries =
      self.conn.get_entries(dn, ldap.SCOPE_SUBTREE)</tt><tt><br>
          if entries:</tt><tt><br>
              entries.sort(key=len,
      reverse=True)</tt><tt><br>
              for entry in entries:</tt><tt><br>
                  self.conn.delete_entry(entry)</tt>
    <p style="margin-bottom: 0in">this intends to delete children befor
      the parent, as teh dns of children are longer, but get_entries
      does
      return a list of entries, not DNs, and so the sorting does not
      work
      as can be seen in this example:</p>
    <p style="margin-bottom: 0in"><tt>>>> list =
        [('123456','A'),('123','B'),('12345678','C')]
      </tt></p>
    <tt>
    </tt>
    <p style="margin-bottom: 0in"><tt>>>>
        list.sort(key=len,reverse=True)
      </tt></p>
    <tt>
    </tt>
    <p style="margin-bottom: 0in"><tt>>>> for l in list:
      </tt></p>
    <tt>
    </tt>
    <p style="margin-bottom: 0in"><tt>...     print l
      </tt></p>
    <tt>
    </tt>
    <p style="margin-bottom: 0in"><tt>... </tt></p>
    <tt>
    </tt>
    <p style="margin-bottom: 0in"><tt>('123456', 'A')
      </tt></p>
    <tt>
    </tt>
    <p style="margin-bottom: 0in"><tt>('123', 'B')
      </tt></p>
    <tt>
    </tt>
    <p style="margin-bottom: 0in"><tt>('12345678', 'C')</tt></p>
    <title></title>
    <meta name="GENERATOR" content="LibreOffice 3.5 (Linux)">
    <style type="text/css">
        <!--
                @page { margin: 0.79in }
                P { margin-bottom: 0.08in }
        -->
        </style>
  </body>
</html>