Tango starter daemon source

#!/bin/sh
#
# tango-starter
#
# description:       Tango control system starter daemon
# chkconfig:         2345 90 10
#
. /etc/rc.d/init.d/functions

PREFIX=/usr
TANGO_CONFIG=/etc/tangorc
STARTER_CONFIG=/etc/sysconfig/tango-starter

PID_FILE=/var/run/tango-starter.pid
LOCK_FILE=/var/lock/subsys/tango-starter

# set up environment
. /etc/profile

[ -f $TANGO_CONFIG ] && . $TANGO_CONFIG
[ -f $STARTER_CONFIG ] && . $STARTER_CONFIG

if [ -z $TANGO_HOST ]; then
    echo $"error: TANGO_HOST not set"
    exit 1
fi
export TANGO_HOST

DAEMON=Starter
DAEMON_ARGS=`hostname -s`

CLASS=Starter
SERVER=$CLASS/`hostname -s`
DEVICE=tango/admin/`hostname -s`

RETVAL=0
start()
{
    echo -n $"Starting Tango starter daemon"

    status -p $PID_FILE tango-starter >/dev/null
    if [ $? -eq 0 ]; then
    echo
    echo -n $"Starter server is running"
    RETVAL=0
    else
    tango_admin --ping-database >/dev/null
    if [ $? -ne 0 ]; then
        echo
        echo -n "Tango database connection failed"
        RETVAL=1
    else
        tango_admin --check-device $DEVICE
        if [ $? -ne 0 ]; then
        echo
        echo -n "Adding $SERVER to the Tango database"
        tango_admin --add-server $SERVER $CLASS $DEVICE >> /dev/null
        tango_admin --add-property $DEVICE startDsPath $PREFIX/bin >> /dev/null
        fi

        runuser -m $TANGO_USER -c \
        "$DAEMON $DAEMON_ARGS >/dev/null 2>&1 &"
        sleep 2

        # check if daemon survived..
        pidofproc $DAEMON > $PID_FILE
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
        touch $LOCK_FILE
        else
        rm -f $PID_FILE
        fi
    fi
    fi

    [ $RETVAL -eq 0 ] && success || failure
    echo
    return $RETVAL

}

stop()
{
    echo -n $"Stopping Tango starter daemon"

    status -p $PID_FILE tango-starter >/dev/null
    if [ $? -eq 3 ]; then
    echo
    echo -n $"Starter server is not running"
    RETVAL=0
    else
    killproc -p $PID_FILE $DAEMON
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f $PID_FILE $LOCK_FILE
    fi

    [ $RETVAL -eq 0 ] && success || failure
    echo
    return $RETVAL
}

restart()
{
    stop
    start
}

# See how we were called.
case "$1" in
    start )
    start
    ;;
    stop )
    stop
    ;;
    status )
    status -p $PID_FILE tango-starter
    ;;
    restart | reload )
    restart
    ;;
    condrestart )
    [ -f $LOCK_FILE ] && restart || :
    ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
    exit 1
esac

exit 0