Ville Silventoinen wrote: > On Thu, 22 Mar 2007, Richard Megginson wrote: > >> Ville Silventoinen wrote: >>> I'm using Fedora DS 1.0.4. I've written an application that uses >>> Fedora DS and next I'm planning to write unit tests. I'm wondering >>> if there is a way to delete the whole userRoot database and create >>> it again? I searched the documentation and there seems to be a way >>> to create the database from command line, but no way to delete it, >>> except from the GUI? >> Just delete the entry (e.g. delete cn=userRoot,cn=ldbm >> database,cn=plugins,cn=config). You will have to do some sort of >> recursive deletion to remove all of the child entries. I think this >> is what the GUI does - just check the access logs for the server >> after deleting the database in the console. > > Thank you Richard, that worked very well. I also delete the mapping > tree entry, which maps the suffix to the backend database: > > dn: cn="dc=ebi,dc=ac,dc=uk",cn=mapping tree,cn=config > objectclass: top > objectclass: extensibleObject > objectclass: nsMappingTree > nsslapd-state: backend > nsslapd-backend: userRoot > cn: dc=ebi,dc=ac,dc=uk > > The GUI works slightly differently, it sets nsslapd-state to > "disabled" and removes the nsslapd-backend attribute. > > If anyone has a need for a script that can delete and create a > database, I can send it to the list. I use Python with python-ldap > package. > > Thank you very much for a fast response! If you just want to restore the database to it's initial state, you can just do an import - ldif2db or ldif2db.pl - this will remove the previous contents and create a new database. This might be sufficient for your purposes, without having to delete the database and mapping tree entries. See ldif2db.pl for how to invoke an import operation via ldap - you can do something similar in python-ldap: def startTaskAndWait(self,entry,verbose=False): # start the task dn = entry.dn self.add_s(entry) entry = self.getEntry(dn, ldap.SCOPE_BASE) if not entry: if verbose: print "Entry %s was added successfully, but I cannot search it" % dn return -1 elif verbose: print entry # wait for task completion - task is complete when the nsTaskExitCode attr is set attrlist = ['nsTaskLog', 'nsTaskStatus', 'nsTaskExitCode', 'nsTaskCurrentItem', 'nsTaskTotalItems'] done = False exitCode = 0 while not done: time.sleep(1) entry = self.getEntry(dn, ldap.SCOPE_BASE, "(objectclass=*)", attrlist) if verbose: print entry if entry.nsTaskExitCode: exitCode = int(entry.nsTaskExitCode) done = True return exitCode def importLDIF(self,file,suffix,be=None,verbose=False): cn = "import" + str(int(time.time())); dn = "cn=%s, cn=import, cn=tasks, cn=config" % cn entry = Entry(dn) entry.setValues('objectclass', 'top', 'extensibleObject') entry.setValues('cn', cn) entry.setValues('nsFilename', file) if be: entry.setValues('nsInstance', be) else: entry.setValues('nsIncludeSuffix', suffix) rc = self.startTaskAndWait(entry, verbose) if rc: if verbose: print "Error: import task %s for file %s exited with %d" % (cn,file,rc) else: if verbose: print "Import task %s for file %s completed successfully" % (cn,file) return rc > > Ville > > -- > Fedora-directory-users mailing list > Fedora-directory-users at redhat.com > https://www.redhat.com/mailman/listinfo/fedora-directory-users -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3245 bytes Desc: S/MIME Cryptographic Signature Url : http://lists.fedoraproject.org/pipermail/389-users/attachments/20070323/da34e7df/attachment.bin