Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (4.3 kB)

1
#!/bin/sh
2

    
3
### BEGIN INIT INFO
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
11
### END INIT INFO
12

    
13
# Do NOT "set -e",
14
# Per Debian Policy Manual, section: System run levels and init.d scripts
15
# set -e
16

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

    
19
DAEMON=/usr/sbin/snf-ganeti-eventd
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
27
SNF_EVENTD_ENABLE=true
28
SNF_USER=root
29

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

    
33
# Read defaults file if it is present
34
[ -r "$DAEMON_DEFAULTS_FILE" ] && . $DAEMON_DEFAULTS_FILE
35

    
36
# Load LSB functions
37
. /lib/lsb/init-functions
38

    
39
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
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
}
60

    
61
check_ganeti_master() {
62
    MASTER=`/usr/sbin/gnt-cluster getmaster`
63
    HOST=`/bin/hostname -f`
64

    
65
    if [ "x$MASTER" != x$HOST ]; then
66
        log_warning_msg "snf-ganeti-eventd should run on the ganeti master only, aborting start (use 'force-start' if you know what you are doing)"
67
        log_end_msg 0
68
        exit 0
69
    fi
70
}
71

    
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
95
    else
96
	  log_warning_msg "$NAME not enabled in $DAEMON_DEFAULTS_FILE, not starting."
97
      return 3
98
    fi
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

    
112

    
113
case "$1" in
114
  start)
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
    ;;
123
  force-start)
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
    ;;
132
  stop)
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
	;;
140
  status)
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
157
        ;;
158
    esac
159
	;;
160
  *)
161
	echo "Usage: /etc/init.d/snf-ganeti-eventd {start|stop|status|restart|force-reload}" >&2
162
	exit 3
163
    ;;
164
esac