#!/bin/sh
#
# cobblerd    Cobbler helper daemon
###################################

# LSB header

### BEGIN INIT INFO
# Provides: cobblerd
# Required-Start: $network $xinetd $httpd
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: daemon for libvirt virtualization API
# Description: This is a daemon that a provides remote cobbler API
#              and status tracking
### END INIT INFO

# chkconfig header

# chkconfig: 345 99 99 
# description:  This is a daemon that provides a remote cobbler API
#               and status tracking
#
# processname: @@install_scripts@@/cobblerd

# Sanity checks.
[ -x @@install_scripts@@/cobblerd ] || ( 
    echo "Error, could not find executable: @@install_scripts@@/cobblerd"
    exit 1
)

DEBIAN_VERSION=/etc/debian_version
SUSE_RELEASE=/etc/SuSE-release
# Source function library.
if [ -f $DEBIAN_VERSION ]; then
    . /lib/lsb/init-functions
elif [ -f $SUSE_RELEASE -a -r /etc/rc.status ]; then
    . /etc/rc.status
else
    . /etc/rc.d/init.d/functions
fi

if [ -f @@defaultpath@@/cobblerd ]; then
    . @@defaultpath@@/cobblerd
fi

if [ "x${CONFIG_ARGS}" = "x" ]; then
    CONFIG_ARGS=" "
fi

SERVICE=cobblerd
PROCESS=cobblerd

if [ -f $DEBIAN_VERSION -o -f $SUSE_RELEASE ]; then
    LOCKFILE=/var/lock/$SERVICE
else
    LOCKFILE=/var/lock/subsys/$SERVICE
fi
WSGI=@@install_data@@/share/cobbler/web/cobbler.wsgi

RETVAL=0

start() {
    echo -n "Starting cobbler daemon: "
    if [ -f $SUSE_RELEASE ]; then
        startproc -p /var/run/$SERVICE.pid @@install_scripts@@/cobblerd $CONFIG_ARGS
        rc_status -v
    elif [ -e $DEBIAN_VERSION ]; then
        pgrep -f "@@python_executable@@ @@install_scripts@@/cobblerd" > /dev/null 2>&1
        if [ "$?" -eq 0 ]; then
            echo -n "already started" 
            RETVAL=1
        elif @@python_executable@@ @@install_scripts@@/cobblerd; then
            echo -n "OK"
            RETVAL=0
        fi
    else
        daemon --check $SERVICE $PROCESS --daemonize $CONFIG_ARGS
    fi
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch $LOCKFILE
    [ -f $WSGI ] && touch $WSGI
    return $RETVAL
}

stop() {
    echo -n "Stopping cobbler daemon: "
    if [ -f $SUSE_RELEASE ]; then
        killproc -TERM @@install_scripts@@/cobblerd
        rc_status -v
    elif [ -f $DEBIAN_VERSION ]; then
        # Added this since Debian's start-stop-daemon doesn't support spawned processes, will remove
        # when cobblerd supports stopping or PID files.
        if pkill -f "@@python_executable@@ @@install_scripts@@/cobblerd" > /dev/null 2>&1 ; then
            echo -n "OK"
            RETVAL=0
        else
            echo -n "Daemon is not started"
            RETVAL=1
        fi
    else
        killproc $PROCESS
    fi
    RETVAL=$?
    echo
    if [ $RETVAL -eq 0 ]; then
    rm -f $LOCKFILE
        rm -f /var/run/$SERVICE.pid
    fi
}

restart() {
   stop
   start
}

# See how we were called.
case "$1" in
    start|stop|restart)
        $1
        ;;
    status)
        if [ -f $SUSE_RELEASE ]; then
            echo -n "Checking for service cobblerd "
            checkproc @@install_scripts@@/cobblerd
            rc_status -v
        elif [ -f $DEBIAN_VERSION ]; then
            pgrep -f "@@python_executable@@ @@install_scripts@@/cobblerd" > /dev/null 2>&1
            if [ "$?" -eq 0 ]; then
                RETVAL=0
                echo "cobblerd is running."
            else
                RETVAL=1
                echo "cobblerd is stopped."
            fi
        else
            status $PROCESS
            RETVAL=$?
        fi
        ;;
    condrestart)
        [ -f $LOCKFILE ] && restart || :
        ;;
    reload)
        echo "can't reload configuration, you have to restart it"
        RETVAL=$?
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart|condrestart|reload}"
        exit 1
        ;;
esac
exit $RETVAL

