From 813d88ee0a0b4ac61d01c3078666546299946eb6 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 29 Apr 2013 11:54:27 -0300 Subject: [PATCH] Bug 10149 - koha-restart-zebra error handling (rewording) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit koha-restart-zebra now - Checks the instance exists. - Checks the instance is enabled. - Checks if the zebra daemon is already running. Regards To+ Edit: changed some wording problems. Sponsored-by: Universidad Nacional de Córdoba --- debian/scripts/koha-restart-zebra | 147 +++++++++++++++++++++++++++++++++---- 1 file changed, 131 insertions(+), 16 deletions(-) diff --git a/debian/scripts/koha-restart-zebra b/debian/scripts/koha-restart-zebra index 6b5c0ca..0cb7f4f 100755 --- a/debian/scripts/koha-restart-zebra +++ b/debian/scripts/koha-restart-zebra @@ -1,6 +1,6 @@ #!/bin/sh # -# koha-restart-zebra -- Restart Zebra for named Koha instandes +# koha-restart-zebra -- Restart Zebra for named Koha instances # Copyright 2010 Catalyst IT, Ltd # # This program is free software: you can redistribute it and/or modify @@ -18,21 +18,136 @@ set -e +die() +{ + echo "$@" 1>&2 + exit 1 +} + +warn() +{ + echo "$@" 1>&2 +} + +is_enabled() +{ + local instancename=$1 + + if ! is_instance $instancename; then + return 1 + fi + + if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \ + "/etc/apache2/sites-available/$instancename" ; then + return 1 + else + return 0 + fi +} + +is_instance() +{ + local instancename=$1 + + if find /etc/koha/sites -mindepth 1 -maxdepth 1 \ + -type d -printf '%f\n'\ + | grep -q -x $instancename ; then + return 0 + else + return 1 + fi +} + +is_zebra_running() +{ + local instancename=$1 + + if daemon --name="$instancename-koha-zebra" \ + --user="$instancename-koha.$instancename-koha" \ + --running ; then + return 0 + else + return 1 + fi +} + +restart_zebra_instance() +{ + local instancename=$1 + + if is_zebra_running $instancename; then + echo "Restarting Zebra server for $instancename" + daemon \ + --name="$instancename-koha-zebra" \ + --errlog="/var/log/koha/$instancename/zebra-error.log" \ + --stdout="/var/log/koha/$instancename/zebra.log" \ + --output="/var/log/koha/$instancename/zebra-output.log" \ + --verbose=1 \ + --respawn \ + --delay=30 \ + --user="$instancename-koha.$instancename-koha" \ + --restart \ + -- \ + zebrasrv \ + -v none,fatal,warn \ + -f "/etc/koha/sites/$instancename/koha-conf.xml" && \ + return 0 + else + return 1 + fi +} + +start_zebra_instance() +{ + local instancename=$1 + + if is_enabled $instancename; then + echo "Starting Zebra server for $instancename" + daemon \ + --name="$instancename-koha-zebra" \ + --errlog="/var/log/koha/$instancename/zebra-error.log" \ + --stdout="/var/log/koha/$instancename/zebra.log" \ + --output="/var/log/koha/$instancename/zebra-output.log" \ + --verbose=1 \ + --respawn \ + --delay=30 \ + --user="$instancename-koha.$instancename-koha" \ + -- \ + zebrasrv \ + -v none,fatal,warn \ + -f "/etc/koha/sites/$instancename/koha-conf.xml" && \ + return 0 + else + return 1 + fi +} + +# Parse command line. +[ "$#" > 1 ] || die "Usage: $0 instancename..." + +# Loop through the instance names for name in "$@" do - echo "Restarting Zebra server for $name" - daemon \ - --name="$name-koha-zebra" \ - --errlog="/var/log/koha/$name/zebra-error.log" \ - --stdout="/var/log/koha/$name/zebra.log" \ - --output="/var/log/koha/$name/zebra-output.log" \ - --verbose=1 \ - --respawn \ - --delay=30 \ - --user="$name-koha.$name-koha" \ - --restart \ - -- \ - zebrasrv \ - -v none,fatal,warn \ - -f "/etc/koha/sites/$name/koha-conf.xml" + if is_instance $name ; then + if is_enabled $name ; then + + if ! is_zebra_running $name; then + warn "Zebra does not appear to have been running for instance $name." + + if ! start_zebra_instance $name ; then + warn "Something went wrong starting Zebra for $name." + fi + else + if ! restart_zebra_instance $name; then + warn "Something went wrong restarting Zebra for $name." + fi + fi + else + warn "Instance $name disabled. No action taken." + fi + else + warn "Unknown instance $name." + fi done + +exit 0 -- 1.7.9.5