Bug 10149 - koha-restart-zebra error handling (rewording)
[koha.git] / debian / scripts / koha-restart-zebra
1 #!/bin/sh
2 #
3 # koha-restart-zebra - Restart Zebra for named Koha instances
4 # Copyright 2010  Catalyst IT, Ltd
5
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19 set -e
20
21 die()
22 {
23     echo "$@" 1>&2
24     exit 1
25 }
26
27 warn()
28 {
29     echo "$@" 1>&2
30 }
31
32 is_enabled()
33 {
34     local instancename=$1
35
36     if ! is_instance $instancename; then
37         return 1
38     fi
39
40     if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
41             "/etc/apache2/sites-available/$instancename" ; then
42         return 1
43     else
44         return 0
45     fi
46 }
47
48 is_instance()
49 {
50     local instancename=$1
51
52     if find /etc/koha/sites -mindepth 1 -maxdepth 1 \
53                          -type d -printf '%f\n'\
54           | grep -q -x $instancename ; then
55         return 0
56     else
57         return 1
58     fi
59 }
60
61 is_zebra_running()
62 {
63     local instancename=$1
64
65     if daemon --name="$instancename-koha-zebra" \
66             --user="$instancename-koha.$instancename-koha" \
67             --running ; then
68         return 0
69     else
70         return 1
71     fi
72 }
73
74 restart_zebra_instance()
75 {
76     local instancename=$1
77
78     if is_zebra_running $instancename; then
79         echo "Restarting Zebra server for $instancename"
80         daemon \
81             --name="$instancename-koha-zebra" \
82             --errlog="/var/log/koha/$instancename/zebra-error.log" \
83             --stdout="/var/log/koha/$instancename/zebra.log" \
84             --output="/var/log/koha/$instancename/zebra-output.log" \
85             --verbose=1 \
86             --respawn \
87             --delay=30 \
88             --user="$instancename-koha.$instancename-koha" \
89             --restart \
90             -- \
91             zebrasrv \
92             -v none,fatal,warn \
93             -f "/etc/koha/sites/$instancename/koha-conf.xml" && \
94         return 0
95     else
96         return 1
97     fi
98 }
99
100 start_zebra_instance()
101 {
102     local instancename=$1
103
104     if is_enabled $instancename; then
105         echo "Starting Zebra server for $instancename"
106         daemon \
107             --name="$instancename-koha-zebra" \
108             --errlog="/var/log/koha/$instancename/zebra-error.log" \
109             --stdout="/var/log/koha/$instancename/zebra.log" \
110             --output="/var/log/koha/$instancename/zebra-output.log" \
111             --verbose=1 \
112             --respawn \
113             --delay=30 \
114             --user="$instancename-koha.$instancename-koha" \
115             -- \
116             zebrasrv \
117             -v none,fatal,warn \
118             -f "/etc/koha/sites/$instancename/koha-conf.xml" && \
119         return 0
120     else
121         return 1
122     fi
123 }
124
125 usage()
126 {
127     local scriptname=$0
128     cat <<EOF
129 Restart Zebra for Koha instances.
130
131 Usage: $scriptname instancename1 instancename2...
132
133 EOF
134 }
135
136 # Parse command line.
137 [ $# -ge 1 ] || ( usage ; die "Missing instance name..." )
138
139 # Loop through the instance names
140 for name in "$@"
141 do
142     if is_instance $name ; then
143         if is_enabled $name ; then
144
145             if ! is_zebra_running $name; then
146                 warn "Zebra does not appear to have been running for instance $name."
147
148                 if ! start_zebra_instance $name ; then
149                     warn "Something went wrong starting Zebra for $name."
150                 fi
151             else
152                 if ! restart_zebra_instance $name; then
153                   warn "Something went wrong restarting Zebra for $name."
154                 fi
155             fi
156         else
157             warn "Instance $name disabled. No action taken."
158         fi
159     else
160         warn "Unknown instance $name."
161     fi
162 done
163
164 exit 0