Revision 23b635c4 debian/snf-cyclades-gtools.snf-ganeti-eventd.init

b/debian/snf-cyclades-gtools.snf-ganeti-eventd.init
1
#! /bin/sh
1
#!/bin/sh
2 2

  
3 3
### BEGIN INIT INFO
4
# Provides:          snf-ganeti-eventd
5
# Required-Start:    $remote_fs $syslog ganeti
6
# Required-Stop:     $remote_fs $syslog 
7
# Default-Start:     2 3 4 5
8
# Default-Stop:      0 1 6
9
# X-Start-After:	 ganeti
10
# Short-Description: Synnefo ganeti-eventd daemon
11
# Description:       ganeti-eventd is a daemon 
4
# Provides:		  snf-ganeti-eventd
5
# Required-Start:	$remote_fs $syslog
6
# Required-Stop:	 $remote_fs $syslog
7
# Default-Start:	 2 3 4 5
8
# Default-Stop:	  0 1 6
9
# Short-Description: Synnefo Ganeti eventd daemon
10
# Description: Synnefo Ganeti eventd daemon
12 11
### END INIT INFO
13 12

  
14
set -e
15

  
16
# /etc/init.d/snf-ganeti-eventd: start and stop the ganeti-eventd daemon
17
# script skeleton stolen from rsyncd
13
# Do NOT "set -e",
14
# Per Debian Policy Manual, section: System run levels and init.d scripts
15
# set -e
18 16

  
17
# /etc/init.d/snf-ganeti-eventd: start and stop the Synnefo Ganeti Event Daemon
19 18

  
20 19
DAEMON=/usr/sbin/snf-ganeti-eventd
21
SNF_EVENTD_PID_FILE=/var/run/snf-ganeti-eventd.pid
22
SNF_EVENTD_DEFAULTS=/etc/default/snf-ganeti-eventd
23
SNF_EVENTD_OPTS=''
20
NAME="snf-ganeti-eventd"
21
DESCRIPTION="snf-ganeti-eventd daemon"
22
DAEMON_OPTS=''
23
DAEMON_DEFAULTS_FILE=/etc/default/$NAME
24
RUNDIR=/var/run/
25
PIDFILE=$RUNDIR/$NAME.pid
26
SCRIPTNAME=/etc/init.d/$NAME
24 27
SNF_EVENTD_ENABLE=true
25
SNF_USER="root"
28
SNF_USER=root
26 29

  
27
test -x $DAEMON || exit 0
30
# Exit if the package is not installed
31
[ -x "$DAEMON" ] || exit 0
28 32

  
29
. /lib/lsb/init-functions
33
# Read defaults file if it is present
34
[ -r "$DAEMON_DEFAULTS_FILE" ] && . $DAEMON_DEFAULTS_FILE
30 35

  
31
if [ -s $SNF_EVENTD_DEFAULTS ]; then
32
    . $SNF_EVENTD_DEFAULTS
33
fi
36
# Load LSB functions
37
. /lib/lsb/init-functions
34 38

  
35 39
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
36
export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}/usr/share/ganeti"
40

  
41
check_config()
42
{
43
    # Check Configuration file
44
    if [ -r $DAEMON_DEFAULTS_FILE ]; then
45
        # Load extra daemon options
46
        DAEMON_OPTS=$SNF_EVENTD_OPTS" --pid-file $PIDFILE"
47
        # Check the 'ENABLE" value
48
        case "x$SNF_EVENTD_ENABLE" in
49
          xtrue|xfalse)	;;
50
          *)
51
            log_failure_msg "Value of SNF_EVENTD_ENABLE in $DAEMON_DEFAULTS_FILE must be either 'true' or 'false';"
52
            log_failure_msg "not starting $NAME daemon."
53
            exit 1
54
            ;;
55
        esac
56
    else
57
        log_warning_msg "$NAME default file $DAEMON_DEFAULTS_FILE is missing"
58
    fi
59
}
37 60

  
38 61
check_ganeti_master() {
39 62
    MASTER=`/usr/sbin/gnt-cluster getmaster`
......
46 69
    fi
47 70
}
48 71

  
49
eventd_start() {
50
    if start-stop-daemon --start --chuid $SNF_USER --pidfile $SNF_EVENTD_PID_FILE \
51
		--exec $DAEMON -- $SNF_EVENTD_OPTS
52
    then
53
        rc=0
54
        sleep 1
55
        if ! kill -0 $(cat $SNF_EVENTD_PID_FILE) >/dev/null 2>&1; then
56
            log_failure_msg "snf-ganeti-eventd daemon failed to start"
57
            rc=1
58
        fi
59
    else
60
        rc=1
61
    fi
62
    if [ $rc -eq 0 ]; then
63
        log_end_msg 0
72
do_start() {
73
	# Ensure the directory containing the pidfile exists
74
	# and has the right permissions
75
    # Return
76
    #   0 if daemon has been started
77
    #   1 if daemon was already running
78
    #   2 if daemon could not be started
79
    #   3 if daemon is not configured to start
80
    force_start=$1
81
    check_config
82
    [ $force_start -eq 0 ] && check_ganeti_master
83
	if "$SNF_EVENTD_ENABLE"; then
84
            if [ -s $PIDFILE ] && kill -0 $(cat $PIDFILE) >/dev/null 2>&1; then
85
              return 1
86
            else
87
              SNF_USER=${SNF_USER:-root}
88
              start-stop-daemon --start --chuid $SNF_USER --exec $DAEMON --pidfile $PIDFILE -- $DAEMON_OPTS || return 2
89
              sleep 1
90
              if [ ! -s $PIDFILE ] || ! kill -0 $(cat $PIDFILE) >/dev/null 2>&1; then
91
                log_warning_msg "$NAME daemon failed to start"
92
                return 2
93
              fi
94
            fi
64 95
    else
65
        log_end_msg 1
96
	  log_warning_msg "$NAME not enabled in $DAEMON_DEFAULTS_FILE, not starting."
97
      return 3
66 98
    fi
67
} # eventd_start
99
}
100

  
101

  
102
do_stop() {
103
    # Return
104
    # 0 if daemon has been stopped
105
    # 1 if daemon was already stopped
106
    # 2 if deamon could not be stopped
107
    # other if failure occured
108
    start-stop-daemon --stop --quiet --pidfile $PIDFILE --retry=TERM/30/KILL/5
109
    return $?
110
}
111

  
68 112

  
69 113
case "$1" in
70 114
  start)
71
        if "$SNF_EVENTD_ENABLE"; then
72
            log_daemon_msg "Starting snf-ganeti-eventd daemon" "snf-ganeti-eventd"
73
            if [ -s $SNF_EVENTD_PID_FILE ] && kill -0 $(cat $SNF_EVENTD_PID_FILE) >/dev/null 2>&1; then
74
                log_progress_msg "apparently already running"
75
                log_end_msg 0
76
                exit 0
77
            fi
78
            # Check if we are on the Ganeti master node
79
            check_ganeti_master
80
            eventd_start
81
        else
82
            if [ -s "$SNF_EVENTD_DEFAULTS" ]; then
83
                [ "$VERBOSE" != no ] && log_warning_msg "snf-ganeti-eventd daemon not enabled in $SNF_EVENTD_DEFAULTS, not starting..."
84
            fi
85
        fi
86
        ;;
115
    log_daemon_msg "Starting $DESCRIPTION" "$NAME"
116
    do_start 0
117
    case "$?" in
118
      0|3) log_end_msg 0 ;;
119
      1) log_progress_msg "Apparently already running" && log_end_msg 0;;
120
      2) log_end_msg 1 ;;
121
    esac
122
    ;;
87 123
  force-start)
88
        if "$SNF_EVENTD_ENABLE"; then
89
            log_daemon_msg "Starting snf-ganeti-eventd daemon" "snf-ganeti-eventd"
90
        else
91
            if [ -s "$SNF_EVENTD_DEFAULTS" ]; then
92
                [ "$VERBOSE" != no ] && log_warning_msg "snf-ganeti-eventd daemon not enabled in $SNF_EVENTD_DEFAULTS, starting anyway"
93
            fi
94
        fi
95

  
96
        if [ -s $SNF_EVENTD_PID_FILE ] && kill -0 $(cat $SNF_EVENTD_PID_FILE) >/dev/null 2>&1; then
97
            log_progress_msg "apparently already running"
98
            log_end_msg 0
99
            exit 0
100
        fi
101
        eventd_start
102
        ;;
124
    log_daemon_msg "Starting $DESCRIPTION" "$NAME"
125
    do_start 1
126
    case "$?" in
127
      0|3) log_end_msg 0 ;;
128
      1) log_progress_msg "Apparently already running" && log_end_msg 0;;
129
      2) log_end_msg 1 ;;
130
    esac
131
    ;;
103 132
  stop)
104
        log_daemon_msg "Stopping snf-ganeti-eventd daemon" "snf-ganeti-eventd"
105
        start-stop-daemon --stop --quiet --oknodo --pidfile $SNF_EVENTD_PID_FILE
106
        log_end_msg $?
107
        ;;
108
  restart)
109
        set +e
110
        if $SNF_EVENTD_ENABLE; then
111
            log_daemon_msg "Restarting snf-ganeti-eventd daemon" "snf-ganeti-eventd"
112
            if [ -s $SNF_EVENTD_PID_FILE ] && kill -0 $(cat $SNF_EVENTD_PID_FILE) >/dev/null 2>&1; then
113
                start-stop-daemon --stop --quiet --oknodo --pidfile $SNF_EVENTD_PID_FILE || true
114
                sleep 1
115
            else
116
                log_warning_msg "snf-ganeti-eventd daemon not running, attempting to start."
117
            fi
118
            # Check if we are on the Ganeti master node, before starting
119
            check_ganeti_master
120
            eventd_start
121
        else
122
            if [ -s "$SNF_EVENTD_DEFAULTS" ]; then
123
                [ "$VERBOSE" != no ] && log_warning_msg "snf-ganeti-eventd daemon not enabled in $SNF_EVENTD_DEFAULTS, not starting..."
124
            fi
125
        fi
126
        ;;
127

  
133
    log_daemon_msg "Stoping $DESCRIPTION" "$NAME"
134
    do_stop
135
    case "$?" in
136
      0|1) log_end_msg 0 ;;
137
      2) log_end_msg 1 ;;
138
    esac
139
	;;
128 140
  status)
129
        status_of_proc -p $SNF_EVENTD_PID_FILE "$DAEMON" ganeti-eventd
130
        exit $? # notreached due to set -e
141
	status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
142
	;;
143
  restart|force-reload)
144
    log_daemon_msg "Restarting $DESCRIPTION" "$NAME"
145
    do_stop
146
    case "$?" in
147
      0|1)
148
        do_start 0
149
        case "$?" in
150
          0) log_end_msg 0 ;;
151
          *) log_end_msg 1 ;;  # Old process stil running or failed to start
152
        esac
153
        ;;
154
      *)
155
        # Failed to stop
156
        log_end_msg 1
131 157
        ;;
158
    esac
159
	;;
132 160
  *)
133
        echo "Usage: /etc/init.d/snf-ganeti-eventd {start|stop|restart|force-start|status}"
134
        exit 1
161
	echo "Usage: /etc/init.d/snf-ganeti-eventd {start|stop|status|restart|force-reload}" >&2
162
	exit 3
163
    ;;
135 164
esac
136

  
137
exit 0

Also available in: Unified diff