#!/bin/sh
# ganeti node daemon starter script
# based on skeleton from Debian GNU/Linux
### BEGIN INIT INFO
# Provides:          ganeti
# Required-Start:    $syslog $remote_fs xend
# Required-Stop:     $syslog $remote_fs xend
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Ganeti Xen Cluster Manager
# Description:       Ganeti Xen Cluster Manager
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
DESC="Ganeti cluster"
NAME=ganeti-noded
NODED=/usr/sbin/ganeti-noded
MASTER=/usr/sbin/ganeti-master
SCRIPTNAME=/etc/init.d/ganeti

test -f $NODED || exit 0

. /lib/lsb/init-functions

check_config() {
    for fname in \
        "/var/lib/ganeti/ssconf_node_pass" \
        "/var/lib/ganeti/server.pem"
    do
        if ! [ -f "$fname" ]; then
            log_end_msg 0
            log_warning_msg "Config $fname not there, will not run."
            exit 0
        fi
    done
}

master_action() {
    log_action_begin_msg "ganeti-master"
    $MASTER "$1"
    RC=$?
    case $RC in
        0)
            log_action_end_msg 0
            ;;
        11)
            log_action_end_msg 0 "not master"
            ;;
        *)
            log_action_end_msg 1 "exit code $RC"
            ;;
    esac
}

case "$1" in
    start)
        log_daemon_msg "Starting $DESC" "$NAME"
        check_config
        if start-stop-daemon --start --quiet --exec $NODED; then
            log_end_msg 0
        else
            log_end_msg 1
        fi
        master_action start
        ;;
    stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        if start-stop-daemon --stop --quiet --name $NAME; then
            log_end_msg 0
        else
            log_end_msg 1
        fi
        master_action stop
        ;;
    restart|force-reload)
        log_daemon_msg "Reloading $DESC"
        start-stop-daemon --stop --quiet --oknodo --retry 30 --name $NAME
        check_config
        start-stop-daemon --start --quiet --exec $NODED
        log_end_msg $?

        $MASTER stop
        master_action start
        ;;
    *)
        log_success_msg "Usage: $SCRIPTNAME {start|stop|force-reload|restart}"
        exit 1
        ;;
esac

exit 0
