ganeti.initd: Move code checking config to daemon-util
[ganeti-local] / doc / examples / ganeti.initd.in
1 #!/bin/sh
2 # ganeti node daemon starter script
3 # based on skeleton from Debian GNU/Linux
4 ### BEGIN INIT INFO
5 # Provides:          ganeti
6 # Required-Start:    $syslog $remote_fs
7 # Required-Stop:     $syslog $remote_fs
8 # Default-Start:     2 3 4 5
9 # Default-Stop:      0 1 6
10 # Short-Description: Ganeti Cluster Manager
11 # Description:       Ganeti Cluster Manager
12 ### END INIT INFO
13
14 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
15 DESC="Ganeti cluster"
16
17 NODED="ganeti-noded"
18 MASTERD="ganeti-masterd"
19 CONFD="ganeti-confd"
20 RAPI="ganeti-rapi"
21
22 DAEMON_UTIL=@PKGLIBDIR@/daemon-util
23
24 SCRIPTNAME="@SYSCONFDIR@/init.d/ganeti"
25
26 test -f "@PREFIX@/sbin/$NODED" || exit 0
27
28 . /lib/lsb/init-functions
29
30 check_exitcode() {
31     RC=$1
32     case $RC in
33         0)
34             log_action_end_msg 0
35             ;;
36         11)
37             log_action_end_msg 0 "not master"
38             ;;
39         *)
40             log_action_end_msg 1 "exit code $RC"
41             ;;
42     esac
43 }
44
45 start_action() {
46     # called as start_action daemon-name
47     local daemon="$1"
48     log_action_begin_msg "$daemon"
49     $DAEMON_UTIL start "$@"
50     check_exitcode $?
51 }
52
53 stop_action() {
54     # called as stop_action daemon-name
55     local daemon="$1"
56     log_action_begin_msg "$daemon"
57     $DAEMON_UTIL stop "$@"
58     check_exitcode $?
59 }
60
61 maybe_do() {
62     requested="$1"; shift
63     action="$1"; shift
64     target="$1"
65     if [ -z "$requested" -o "$requested" = "$target" ]; then
66         $action "$@"
67     fi
68 }
69
70 start_all() {
71     if ! $DAEMON_UTIL check-config; then
72         log_warning_msg "Incomplete configuration, will not run."
73         exit 0
74     fi
75
76     for i in $NODED $MASTERD $CONFD $RAPI; do \
77         maybe_do "$1" start_action $i
78     done
79 }
80
81 stop_all() {
82     for i in $RAPI $CONFD $MASTERD $NODED; do \
83         maybe_do "$1" stop_action $i
84     done
85 }
86
87 if [ -n "$2" -a \
88     "$2" != "$NODED" -a \
89     "$2" != "$CONFD" -a \
90     "$2" != "$MASTERD" -a \
91     "$2" != "$RAPI" ]; then
92     log_failure_msg "Unknown daemon '$2' requested"
93     exit 1
94 fi
95
96 case "$1" in
97     start)
98         log_daemon_msg "Starting $DESC" "$2"
99         start_all "$2"
100         ;;
101     stop)
102         log_daemon_msg "Stopping $DESC" "$2"
103         stop_all "$2"
104         ;;
105     restart|force-reload)
106         log_daemon_msg "Restarting $DESC" "$2"
107         stop_all "$2"
108         start_all "$2"
109         ;;
110     *)
111         log_success_msg "Usage: $SCRIPTNAME {start|stop|force-reload|restart}"
112         exit 1
113         ;;
114 esac
115
116 exit 0