X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/c1671c0e2c1f5ac79bf09d37a90767480ae6372f..7dcf333ded48a7dcf71a1e51f93f1ecef4a20c94:/doc/examples/ganeti.initd.in diff --git a/doc/examples/ganeti.initd.in b/doc/examples/ganeti.initd.in index 9faba73..cd137bd 100644 --- a/doc/examples/ganeti.initd.in +++ b/doc/examples/ganeti.initd.in @@ -1,83 +1,103 @@ #!/bin/sh # ganeti node daemon starter script # based on skeleton from Debian GNU/Linux +### BEGIN INIT INFO +# Provides: ganeti +# Required-Start: $syslog $remote_fs +# Required-Stop: $syslog $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Ganeti Cluster Manager +# Description: Ganeti 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=@PREFIX@/sbin/ganeti-noded -MASTER=@PREFIX@/sbin/ganeti-master -SCRIPTNAME=@SYSCONFDIR@/init.d/ganeti -test -f $NODED || exit 0 +DAEMON_UTIL=@PKGLIBDIR@/daemon-util + +SCRIPTNAME="@SYSCONFDIR@/init.d/ganeti" + +test -f "$DAEMON_UTIL" || exit 0 . /lib/lsb/init-functions -check_config() { - for fname in \ - "@LOCALSTATEDIR@/lib/ganeti/ssconf_node_pass" \ - "@LOCALSTATEDIR@/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 +check_exitcode() { + RC=$1 + + if errmsg=$($DAEMON_UTIL check-exitcode $RC) + then + log_action_end_msg 0 "$errmsg" + else + log_action_end_msg 1 "$errmsg" + fi +} + +start_action() { + # called as start_action daemon-name + local daemon="$1" + log_action_begin_msg "$daemon" + $DAEMON_UTIL start "$@" + check_exitcode $? +} + +stop_action() { + # called as stop_action daemon-name + local daemon="$1" + log_action_begin_msg "$daemon" + $DAEMON_UTIL stop "$@" + check_exitcode $? +} + +maybe_do() { + requested="$1"; shift + action="$1"; shift + target="$1" + if [ -z "$requested" -o "$requested" = "$target" ]; then + $action "$@" + fi +} + +start_all() { + if ! $DAEMON_UTIL check-config; then + log_warning_msg "Incomplete configuration, will not run." + exit 0 + fi + + for i in $($DAEMON_UTIL list-start-daemons); do + maybe_do "$1" start_action $i 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 +stop_all() { + for i in $($DAEMON_UTIL list-stop-daemons); do + maybe_do "$1" stop_action $i + done } +if [ -n "$2" ] && ! errmsg=$($DAEMON_UTIL is-daemon-name "$2" 2>&1); then + log_failure_msg "$errmsg" + exit 1 +fi + 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 - ;; + log_daemon_msg "Starting $DESC" "$2" + start_all "$2" + ;; 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 - ;; + log_daemon_msg "Stopping $DESC" "$2" + stop_all "$2" + ;; 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_daemon_msg "Restarting $DESC" "$2" + stop_all "$2" + start_all "$2" + ;; *) log_success_msg "Usage: $SCRIPTNAME {start|stop|force-reload|restart}" exit 1 - ;; + ;; esac exit 0 - -# vim: set sw=4 sts=4 et foldmethod=marker :