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 redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-dir
ectory-users
--
Fedora-directory-users mailing list
Fedora-directory-users redhat.com
https://www.redhat.com/mailman/listinfo/fedora-dir
ectory-users
|