summaryrefslogtreecommitdiffstats
path: root/contrib/bugzilla-queue.suse
blob: 7b5ffd5cc270d5f73e7a660c21247c3001152a29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#!/bin/bash
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.


# bugzilla-queue This starts, stops, and restarts the Bugzilla jobqueue.pl
#		 daemon, which manages sending queued mail and possibly
#		 other queued tasks in the future.
#
# chkconfig: 345 85 15
# description: Bugzilla queue runner
#
### BEGIN INIT INFO
# Provides: bugzilla-queue
# Required-Start: $local_fs $syslog
# Required-Stop: $local_fs $syslog
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Start and stop the Bugzilla queue runner.
# Description: The Bugzilla queue runner (jobqueue.pl) sends any mail
#	that Bugzilla has queued to be sent in the background. If you
#	have enabled the use_mailer_queue parameter in Bugzilla, you
#	must run this daemon.
### END INIT INFO

NAME=`basename $0`

#################
# Configuration #
#################

# This should be the path to your Bugzilla
BUGZILLA=/var/www/html/bugzilla
# Who owns the Bugzilla directory and files?
USER=root

# If you want to pass any options to the daemon (like -d for debugging)
# specify it here.
OPTIONS=""

# You can also override the configuration by creating a 
# /etc/sysconfig/bugzilla-queue file so that you don't
# have to edit this script. 
if [ -r /etc/sysconfig/$NAME ]; then
  . /etc/sysconfig/$NAME
fi

##########
# Script #
##########

BIN=$BUGZILLA/jobqueue.pl
if [ ! -x $BIN ]; then
    echo "$BIN not installed"
    if [ "$1" = "stop" ]; then
        exit 0
    else
        exit 5
    fi
fi

# Source LSB function library.
. /lib/lsb/init-functions

# Reset status of this service.
rc_reset

# Return values for all commands but status:
# 0       - success
# 1       - generic or unspecified error
# 2       - invalid or excess argument(s)
# 3       - unimplemented feature (e.g. "reload")
# 4       - user had insufficient privileges
# 5       - program is not installed
# 6       - program is not configured
# 7       - program is not running
# 8--199  - reserved (8--99 LSB, 100--149 distrib, 150--199 appl)
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signaling is not supported) are
# considered a success.

case "$1" in
    start)
        echo -n "Starting $NAME "
        # Start daemon with startproc(8).  If this fails the return value
        # is set appropriately by startproc.
        start_daemon -u $USER $BIN ${OPTIONS} start

        # Remember status and be verbose
        rc_status -v
        ;;

    stop)
        echo -n "Shutting down $NAME "
        # Stop daemon with killproc(8) and if this fails killproc sets the
        # return value according to LSB.
        killproc -TERM $BIN

        # Remember status and be verbose
        rc_status -v
        ;;

    status)
        echo -n "Checking for service $NAME "
        # Check status with checkproc(8), if process is running checkproc
        # will return with exit status 0.

        # Return value is slightly different for the status command:
        # 0 - service up and running
        # 1 - service dead, but /var/run/  pid  file exists
        # 2 - service dead, but /var/lock/ lock file exists
        # 3 - service not running (unused)
        # 4 - service status unknown :-(
        # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.)

        # NOTE: checkproc returns LSB compliant status values.
        checkproc $BIN

        # NOTE: rc_status knows that we called this init script with
        # "status" option and adapts its messages accordingly.
        rc_status -v

        # Run jobqueue's own check function too.
        $BIN check
        ;;

    restart)
        # Stop the service and regardless of whether it was running or not,
        # start it again.
        $0 stop
        $0 start

        # Remember status and be quiet.
        rc_status
        ;;

    try-restart|condrestart)
        # Do a restart only if the service was active before.
        # NOTE: try-restart is now part of LSB (as of 1.9). RH has a
        # similar command named condrestart.
        if [ "$1" = "condrestart" ]; then
            echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
        fi
        $0 status
        if [ $? -eq 0 ]; then
            $0 restart
        else
            rc_reset        # Not running is not a failure.
        fi

        # Remember status and be quiet
        rc_status
        ;;

    force-reload)
        # The jobqueue.pl daemon does not support SIGHUP for reload.  Just
        # restart the service if it is running.
        echo -n "Reload service $NAME "

        $0 try-restart
        rc_status
        ;;

    reload)
        # The jobqueue.pl daemon does not support SIGHUP for reload.
        rc_failed 3
        rc_status -v
        ;;

    *)
        echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}"
        exit 1
esac

rc_exit