[Koha-patches] [PATCH] Bug 10144 - koha-start-zebra error handling

Tomas Cohen Arazi tomascohen at gmail.com
Mon Apr 29 16:01:07 CEST 2013


koha-start-zebra now
- Checks the instance exists.
- Checks the instance is enabled.
- Checks if the zebra daemon is already running.

Regards
To+

Sponsored-by: Universidad Nacional de Córdoba
---
 debian/scripts/koha-start-zebra |  115 ++++++++++++++++++++++++++++++++++-----
 1 file changed, 100 insertions(+), 15 deletions(-)

diff --git a/debian/scripts/koha-start-zebra b/debian/scripts/koha-start-zebra
index 52c6041..f94f3d9 100755
--- a/debian/scripts/koha-start-zebra
+++ b/debian/scripts/koha-start-zebra
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# koha-start-zebra -- Start Zebra for named Koha instandes
+# koha-start-zebra -- Start Zebra for named Koha instances
 # Copyright 2010  Catalyst IT, Ltd
 # 
 # This program is free software: you can redistribute it and/or modify
@@ -18,20 +18,105 @@
 
 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
+}
+
+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 "Starting 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" \
-        -- \
-        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
+                if ! start_zebra_instance $name; then
+                    warn "Something went wrong starting Zebra for $name."
+                fi
+            else
+                warn "Zebra already running for instance $name."
+            fi
+        else
+            warn "Instance $name disabled. No action taken."
+        fi
+    else
+        warn "Unknown instance $name."
+    fi
 done
+
+exit 0
-- 
1.7.9.5



More information about the Koha-patches mailing list