Re: Deleting database

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-directory-users

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

--
Fedora-directory-users mailing list
Fedora-directory-users@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-directory-users

[Index of Archives]     [Fedora Directory Users]     [Fedora Directory Devel]     [Fedora Announce]     [Fedora Legacy Announce]     [Kernel]     [Fedora Legacy]     [Share Photos]     [Fedora Desktop]     [PAM]     [Red Hat Watch]     [Red Hat Development]     [Big List of Linux Books]     [Gimp]     [Yosemite News]

  Powered by Linux