openldap and FDS

Craig White craigwhite at azapple.com
Sat Mar 10 06:44:14 UTC 2007


On Fri, 2007-03-09 at 21:01 -0500, Ric Moore wrote:
> On Fri, 2007-03-09 at 19:37 +0530, Rahul Sundaram wrote:
> > Ric Moore wrote:
> > > On Fri, 2007-03-09 at 19:22 +0530, Rahul Sundaram wrote:
> > >> Ric Moore wrote:
> > >>
> > >>> I installed the fedora-ds-1.0.4-1.FC6.i386.opt.rpm
> > >>> Do I now yum install fedora-ds-base after? There are no init scripts in
> > >>> the original rpm, that are installed to /etc/rc.d/init.d/
> > >>> I'd like to get this right the first time. 
> > >> If you already installed fedora-ds package, don't bother with 
> > >> fedora-ds-base which is a subset. The advantage to the package in the 
> > >> repository is that it better follows Fedora packaging guidelines.
> > > 
> > > And the init scripts? I'd rather the entire affair be yumable and
> > > following Fedora packaging quide-lines. What would you do? I have done
> > > anything at this point other than run the config script, I have no
> > > problem doing this right and running through the config process again. 
> > 
> > Check fedora directory server announce list and fedora directory server 
> > list for details. You can continue further discussions on the latter.
> 
> That wasn't particularly the answer I needed. :( Ric
----
2 scripts follow...

# cat /etc/init.d/fds
#!/bin/sh
# Startup script for Fedora Directory Server
#
# chkconfig: 345 86 14
# description: Run each LDAP slapd server in the Fedora Directory Server

# Source function library.
. /etc/rc.d/init.d/functions

myName=`basename $0`
fdsRoot="/opt/fedora-ds"

# Get a list of all slapd server ID's
# We will iterate over all server ID's when executing a command
if [ -d ${fdsRoot}/slapd-srv1 ]; then
    serverIDS=`ls -d $fdsRoot/slapd-srv1 | sed -r 's!.*/slapd-([^/]+)/?!
\1!'`
else
    servierIDS=""
fi

start()
{
    RETVAL=0
    failed=""
    listSeparator=""
    failSeparator=""
    echo -n "Starting slapd trying: "
    for serverID in $serverIDS; do
        slapd="slapd-${serverID}"
        echo -n "${listSeparator}${serverID}"
        ${fdsRoot}/${slapd}/start-slapd > /dev/null 2>&1
        slapdStatus=$?
        # 0: Server started successfully
        # 1: Server could not be started
        # 2: Server already running
        if [ $slapdStatus = 0 ]; then
            touch /var/lock/subsys/${slapd}
        else

failed="${failed}${failSeparator}${serverID}(${slapdStatus})"
            failSeparator=","
            RETVAL=$slapdStatus
        fi
        listSeparator=","
    done

    if [ ! -z $failed ]; then
        echo -n " (FAIL ${failed})"
    fi

    if [ $RETVAL -eq 0 ]; then
        success
    else
        failure
    fi
    echo

    return $RETVAL
}

stop()
{
    RETVAL=0
    failed=""
    listSeparator=""
    failSeparator=""
    echo -n "Stopping slapd trying: "
    for serverID in $serverIDS; do
        slapd="slapd-${serverID}"
        echo -n "${listSeparator}${serverID}"
        ${fdsRoot}/${slapd}/stop-slapd > /dev/null 2>&1
        slapdStatus=$?
        # 0: Server stopped successfully
        # 1: Server could not be stopped
        # 2: Server was not running
        if [ $slapdStatus = 0 ]; then
            rm -f /var/lock/subsys/${slapd}
        else
            if [ $slapdStatus != 1 ]; then
                rm -f /var/lock/subsys/${slapd}
            fi

failed="${failed}${failSeparator}${serverID}(${slapdStatus})"
            failSeparator=","
            RETVAL=$slapdStatus
        fi
        listSeparator=","
    done

    if [ ! -z $failed ]; then
        echo -n " (FAIL ${failed})"
    fi

    if [ $RETVAL -eq 0 ]; then
        success
    else
        failure
    fi
    echo

    return $RETVAL
}

restart()
{
    stop
    start
}

condrestart()
{
    RETVAL=0
    failed=""
    listSeparator=""
    failSeparator=""
    echo -n "Restarting slapd trying: "
    for serverID in $serverIDS; do
        slapd="slapd-${serverID}"
        if [ -f /var/lock/subsys/${slapd} ]; then
            echo -n "${listSeparator}${serverID}"
            ${fdsRoot}/${slapd}/restart-slapd > /dev/null 2>&1
            slapdStatus=$?
            # 0: Server restarted successfully
            # 1: Server could not be started
            # 2: Server started successfully (was not running)
            # 3: Server could not be stopped
            if [ $slapdStatus = 0 ]; then
                touch /var/lock/subsys/${slapd}
            else

failed="${failed}${failSeparator}${serverID}(${slapdStatus})"
                failSeparator=","
                RETVAL=$slapdStatus
            fi
            listSeparator=","
        fi
    done

    if [ ! -z $failed ]; then
        echo -n " (FAIL ${failed})"
    fi

    if [ $RETVAL -eq 0 ]; then
        success
    else
        failure
    fi
    echo

    return $RETVAL
}

status()
{

    # Note: there are two pid files in the slapd-*/logs directory a
    # startpid file and a pid file. The startpid file is written when
    # the server is attempting to initialize, this may take a long
    # time. When the server is fully initialized and ready to receive
    # connections the pid file is written. Thus there is the question
    # of what constitutes running, initializing or ready? In this
    # instance we decide to report a running state when the server is
    # fully initalized and ready to serve clients.

    # init.d status should return:
    # 0  "$prog (pid $pid) is running..."
    # 1  "$prog dead but pid file exists"
    # 2  "$prog dead but subsys locked"
    # 3  "$prog is stopped"

    RETVAL=0
    for serverID in $serverIDS; do
        slapd="slapd-${serverID}"

        pidFile=${fdsRoot}/${slapd}/logs/pid
        if test -f $pidFile ; then
            pid=`cat $pidFile`
            if kill -0 $pid > /dev/null 2>&1 ; then
                # slapd process $pid is running
                echo "$slapd (pid $pid) is running..."
            else
                echo "$slapd dead but pid file exists"
                if [ $RETVAL -eq 0 ]; then
                    RETVAL=1
                fi
            fi
        else
            if [ -f /var/lock/subsys/${slapd} ]; then
                echo "$slapd dead but subsys locked"
                if [ $RETVAL -eq 0 ]; then
                    RETVAL=2
                fi
            else
                echo "$slapd is stopped"
                if [ $RETVAL -eq 0 ]; then
                    RETVAL=3
                fi
            fi
        fi

    done

    return $RETVAL
}


case "$1" in
start)
    start
    RETVAL=$?
    ;;
stop)
    stop
    RETVAL=$?
    ;;
reload|restart)
    restart
    RETVAL=$?
    ;;
condrestart)
    condrestart
    RETVAL=$?
    ;;
status)
    status
    RETVAL=$?
    ;;
*)
    echo $"Usage: $myName {start|stop|restart|condrestart|status}"
    RETVAL=3
esac

exit $RETVAL

***** the second script *****

 cat /etc/init.d/fds-admin
#!/bin/sh
#
# fedora-ds-admin      Start/Stop the fedora DS admin daemon.
#
# chkconfig: 2345 99 01
# description: Run LDAP Adminstration console

# Source function library.
. /etc/init.d/functions

myName=`basename $0`

# Source our configuration file for these variables.
FLAGS=
RETVAL=0

# Set up some common variables before we launch into what might be
# considered boilerplate by now.
path_start=/opt/fedora-ds/start-admin
path_restart=/opt/fedora-ds/restart-admin
path_stop=/opt/fedora-ds/stop-admin
path=./ns-httpd
prog="Fedora-DS Admin"

start() {
        echo -n $"Starting $prog: "
        daemon $path_start
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        $path_stop
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
}
restart() {
        echo -n $"Restarting $prog: "
        daemon $path_restart
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
        return $RETVAL
}


case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  status)
        status $path
        ;;
  condrestart)
        [ -f /var/lock/subsys/$prog ] && restart || :
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
        exit 1
esac

exit $?





More information about the fedora-list mailing list