#!/bin/sh
#
# Test
#

. /etc/rc.d/init.d/functions

HOST=`hostname -f`
DIR=`pwd`
SLAPADD=/opt/openldap/sbin/slapadd
SLAPD=/opt/openldap/libexec/slapd
USER=`id -un`
rm -rf LDAP
mkdir -p ldif
mkdir -p slapd-config

ID=0
PORT=2100

while [ $ID -lt 50 ]; do

#Create LDIF files
$DIR/site-template $HOST-$ID > ldif/$ID

#Create slapd files
LDAP_DIR=$DIR/LDAP/$ID
PID_FILE=$DIR/LDAP/$ID/slapd.pid
ARGS_FILE=$DIR/LDAP/$ID/slapd.args
sed "s#LDAP_DIR#$LDAP_DIR#
     s#PID_FILE#$PID_FILE#
     s#ARGS_FILE#$ARGS_FILE#" slapd-template > slapd-config/$ID

mkdir -p LDAP/$ID

   #Add the bind dn to the database
    ${SLAPADD} -v -f $DIR/slapd-config/$ID <<EOF 2>/dev/null
dn: o=grid
objectclass: GlobusStub

EOF

  echo -n "Starting slapd $ID port: ${PORT}" 
    ${SLAPD} -f $DIR/slapd-config/$ID -h ldap://${HOST}:${PORT} 

    if [ $? = 0 ]; then
	success && echo
    else
        failure 
	echo
   fi
sleep 1
ldapadd -x -h $HOST -p $PORT -f ldif/$ID > /dev/null

let ID=ID+1
let PORT=PORT+1
sleep 1 
done

echo "Press Return to shutdown slapds"
read tmp

   #Try to term all slapd processes.
    pidlist=`pidof slapd`
    for pid in $pidlist ; do
	cmdline=`ps -o "%U" --no-header $pid`
	if [ "$cmdline" = "$USER" ]; then 
	    kill -15 $pid
	    
	fi
    done
    
    sleep 1
     
	#Send kill -9 to any remaining slapd processes.
     pidlist=`pidof slapd`
     for pid in $pidlist ; do
	 cmdline=`ps -o "%U" --no-header $pid`
	 if [ "$cmdline" = "$USER" ]; then 
	     kill -9 $pid
	 fi
     done
     
     pidlist=`pidof slapd`
     rm -f $PID_FILE_READ $PID_FILE_WRITE
     if [ "x$pidlist" == "x" ]; then
	 success  && echo "Stopping BDII"
     else
	 failure && echo "Stopping BDII"
     fi
