On Fri, 23 Mar 2007, Richard Megginson wrote: > 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 This may be a stupid question but how do I get ldif2db.pl to remove the previous contents so it can create the entries? I tried like this: ./ldif2db.pl -v -D "cn=Directory Manager" -w mypassword -n userRoot -i /path/to/userRoot.ldif but in the errors log it shows for every entry "WARNING: Skipping duplicate entry". Thanks for the Python example! Ville