]> git.proxmox.com Git - pve-sheepdog.git/blob - debian/pve-sheepdog.sheepdog.init.d
add support for multiple daemons
[pve-sheepdog.git] / debian / pve-sheepdog.sheepdog.init.d
1 #!/bin/sh
2 ### BEGIN INIT INFO
3 # Provides: sheepdog
4 # Required-Start: $network $remote_fs $syslog
5 # Required-Stop: $network $remote_fs $syslog
6 # Default-Start: 2 3 4 5
7 # Default-Stop: 0 1 6
8 # Short-Description: Sheepdog server
9 # Description: Sheepdog server
10 ### END INIT INFO
11
12 # Author: Proxmox Support Team <support@proxmox.com>
13
14 # PATH should only include /usr/* if it runs after the mountnfs.sh script
15 PATH=/sbin:/usr/sbin:/bin:/usr/bin
16 DESC="Sheepdog Server" # Introduce a short description here
17 NAME=sheepdog # Introduce the short server's name here
18 DAEMON=/usr/sbin/sheep # Introduce the server's location here
19 DAEMON_ARGS="" # Arguments to run the daemon with
20 ##PIDFILE=/var/run/sheep.pid
21 SCRIPTNAME=/etc/init.d/$NAME
22
23 # Exit if the package is not installed
24 [ -x $DAEMON ] || exit 0
25
26 # Defaults
27 SHEEPDOG_START_SEQUENCE="_1"
28 SHEEPDOG_DEAMON_ARGS_1=""
29 SHEEPDOG_PATH_1="/var/lib/sheepdog/disc1"
30
31 # Read configuration variable file if it is present
32 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
33
34 if [ "$START" != "yes" ]; then
35 exit 0
36 fi
37
38 . /lib/lsb/init-functions
39
40 status()
41 {
42 pid=$(pidof $1 2>/dev/null)
43 rtrn=$?
44 if [ $rtrn -ne 0 ]; then
45 echo "$1 is stopped"
46 else
47 echo "$1 (pid $pid) is running..."
48 fi
49 return $rtrn
50 }
51
52 #
53 # Function that starts the daemon/service
54 #
55 do_start()
56 {
57 mkdir -p /var/run
58
59 # Return
60 # 0 if daemon has been started
61 # 1 if daemon was already running
62 # 2 if daemon could not be started
63
64 for SHEEP in $SHEEPDOG_START_SEQUENCE; do
65 eval DAEMON_ARGS=\$SHEEPDOG_DEAMON_ARGS$SHEEP
66 eval SHEEPDOG_PATH=\$SHEEPDOG_PATH$SHEEP
67 eval PIDFILE=/var/run/$NAME$SHEEP.pid
68
69 mkdir -p $SHEEPDOG_PATH
70
71 status_of_proc -p ${PIDFILE} $DAEMON "$NAME" >/dev/null && continue
72
73 start-stop-daemon --start --quiet --pidfile ${PIDFILE} --exec $DAEMON -- --pidfile ${PIDFILE} $DAEMON_ARGS $SHEEPDOG_PATH || return 2
74 done
75
76 return 0
77 }
78
79 #
80 # Function that stops the daemon/service
81 #
82 do_stop()
83 {
84 # Return
85 # 0 if daemon has been stopped
86 # 1 if daemon was already stopped
87 # 2 if daemon could not be stopped
88 # other if a failure occurred
89
90 RETVAL=0
91 for SHEEP in $SHEEPDOG_START_SEQUENCE; do
92 eval DAEMON_ARGS=\$SHEEPDOG_DEAMON_ARGS$SHEEP
93 eval SHEEPDOG_PATH=\$SHEEPDOG_PATH$SHEEP
94 eval PIDFILE=/var/run/$NAME$SHEEP.pid
95 start-stop-daemon --stop --oknodo --retry=TERM/20/KILL/5 --quiet --pidfile ${PIDFILE} --exec $DAEMON || RETVAL=2
96 done
97
98 return "$RETVAL"
99 }
100
101 case "$1" in
102 start)
103 log_daemon_msg "Starting $DESC " "$NAME"
104 do_start
105 case "$?" in
106 0|1) log_end_msg 0 ;;
107 2) log_end_msg 1 ;;
108 esac
109 ;;
110 stop)
111 log_daemon_msg "Stopping $DESC" "$NAME"
112 do_stop
113 case "$?" in
114 0|1) log_end_msg 0 ;;
115 2) log_end_msg 1 ;;
116 esac
117
118 ;;
119 status)
120 for SHEEP in $SHEEPDOG_START_SEQUENCE; do
121 eval DAEMON_ARGS=\$SHEEPDOG_DEAMON_ARGS$SHEEP
122 eval SHEEPDOG_PATH=\$SHEEPDOG_PATH$SHEEP
123 eval PIDFILE=/var/run/$NAME$SHEEP.pid
124 status_of_proc -p ${PIDFILE} $DAEMON "$NAME${SHEEP}" || exit $?
125 done
126 ;;
127 restart|force-reload)
128 log_daemon_msg "Restarting $DESC" "$NAME"
129 do_stop
130 case "$?" in
131 0|1)
132 do_start
133 case "$?" in
134 0) log_end_msg 0 ;;
135 1) log_end_msg 1 ;; # Old process is still running
136 *) log_end_msg 1 ;; # Failed to start
137 esac
138 ;;
139 *)
140 # Failed to stop
141 log_end_msg 1
142 ;;
143 esac
144 ;;
145 *)
146 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
147 exit 3
148 ;;
149 esac
150
151 :
152