[Koha-patches] [PATCH] Bug 10159 - koha-rebuild-zebra error handling
Tomas Cohen Arazi
tomascohen at gmail.com
Tue Apr 30 17:16:41 CEST 2013
This patch makes koha-rebuild-zebra:
- Check for the existence of the instance
- Handle arbitrary amount of instance parameters
- Capture -a and -b (which made the script rebuild twice the chosen DB). It adds the extended version (--authorities and --biblios respectively) of the option switch. This makes the -a and -b switches work as "only do authorities" (or viceversa). They can be used concurrently, which is the default behaviour when no switch is provided.
- Handle -v (and --verbose) as koha-rebuild-zebra options, to ease the use for non-techie users.
- The rebuild_zebra.pl is wrapped inside an IF to return error values if we ever make rebuild_zebra.pl return error codes (this is pointed in the code).
- Added -h/--help switches and an 'usage' output :-D Please provide patches for any wording issues, or contact me to fix it.
To test:
- Apply the patch and create your packages (or just use the script from your branch)
- Run it in this scenarios / options
- -h/--help to see the available option switches
- Mix them with one or more instances, of which some could be fake
- try -a/--authorities and -b/--biblios in all possible combinations
- try -v/--verbose works
Regards
To+
Sponsored-by: Universidad Nacional de Córdoba
---
debian/docs/koha-rebuild-zebra.xml | 26 ++++++-
debian/scripts/koha-rebuild-zebra | 143 +++++++++++++++++++++++++++++++-----
2 files changed, 147 insertions(+), 22 deletions(-)
diff --git a/debian/docs/koha-rebuild-zebra.xml b/debian/docs/koha-rebuild-zebra.xml
index b8ce51c..410be8a 100644
--- a/debian/docs/koha-rebuild-zebra.xml
+++ b/debian/docs/koha-rebuild-zebra.xml
@@ -17,13 +17,13 @@
<refnamediv>
<refname>koha-rebuild-zebra</refname>
- <refpurpose>Rebuild the Zebra database for a Koha instance.</refpurpose>
+ <refpurpose>Rebuild the Zebra database for Koha instances.</refpurpose>
<refclass>UNIX/Linux</refclass>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
- <command>koha-rebuild-zebra</command> <arg><option>-u</option>|<option>--usmarc</option></arg> <arg><option>-f</option>|<option>--full</option></arg> <arg><option>...</option></arg> <arg choice="req" rep="repeat"><replaceable>instancename</replaceable></arg>
+ <command>koha-rebuild-zebra</command> <arg><option>-u</option>|<option>--usmarc</option></arg> <arg><option>-f</option>|<option>--full</option></arg> <arg><option>-a</option>|<option>--authorities</option></arg> <arg><option>-b</option>|<option>--biblios</option></arg> <arg><option>-v</option>|<option>--verbose</option></arg> <arg><option>...</option></arg> <arg choice="req" rep="repeat"><replaceable>instancename</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
@@ -42,16 +42,34 @@
</listitem>
</varlistentry>
<varlistentry>
+ <term><option>-a, --authorities</option></term>
+ <listitem>
+ <para>Only run the indexing process for authority records.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-b, --biblios</option></term>
+ <listitem>
+ <para>Only run the indexing process for biblio records.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v, --verbose</option></term>
+ <listitem>
+ <para>Be verbose. Useful for debugging indexing problems.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term><option>-...</option></term>
<listitem>
- <para>Anything else is passed directly to rebuild_zebra. This is useful in particular for -v.</para>
+ <para>Anything else is passed directly to rebuild_zebra.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1><title>Description</title>
- <para>Rebuild the Zebra database for a Koha instance.</para>
+ <para>Rebuild the Zebra database for Koha instances.</para>
</refsect1>
<refsect1><title>See also</title>
diff --git a/debian/scripts/koha-rebuild-zebra b/debian/scripts/koha-rebuild-zebra
index b4478fd..da9e416 100755
--- a/debian/scripts/koha-rebuild-zebra
+++ b/debian/scripts/koha-rebuild-zebra
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# koha-rebuild-zebra -- Rebuild the Zebra database for a Koha instance.
+# koha-rebuild-zebra - Rebuild the Zebra database for Koha instances.
# Copyright 2010 Catalyst IT, Ltd
#
# This program is free software: you can redistribute it and/or modify
@@ -19,18 +19,117 @@
set -e
+die()
+{
+ echo "$@" 1>&2
+ exit 1
+}
+
+warn()
+{
+ echo "$@" 1>&2
+}
+
+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
+}
+
+toggle_biblios_only()
+{
+ biblios_only="yes"
+ biblios="yes"
+ if [ "$authorities_only" != "yes" ]; then
+ authorities="no"
+ fi
+}
+
+toggle_authorities_only()
+{
+ authorities_only="yes"
+ authorities="yes"
+ if [ "$biblios_only" != "yes" ]; then
+ biblios="no"
+ fi
+}
+
+run_rebuild_zebra()
+{
+ local instancename=$1; shift
+
+ # TODO: This comment is here to remind us that we should make
+ # rebuild_zebra.pl return error codes on failure
+ if sudo -u "$instancename-koha" -H \
+ env PERL5LIB=/usr/share/koha/lib \
+ KOHA_CONF="/etc/koha/sites/$instancename/koha-conf.xml" \
+ /usr/share/koha/bin/migration_tools/rebuild_zebra.pl $@ ; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+usage()
+{
+ local scriptname=$0
+ cat <<EOF
+Rebuild the Zebra indexes for Koha instances. The default behaviour
+is to do an incremental rebuild.
+
+Usage: $scriptname [options] instancename1 instancename2...
+Options:
+ --usmarc|-u Runs the process as USMARC rather than
+ the default of MARCXML.
+ --authorities|-a Only run process for authorities.
+ --biblios|-b Only run process for biblios.
+ --full|-f Does a reindex of the whole collection.
+ --verbose|-v Be verbose.
+ --help|-h Print this help.
+
+
+Note: Any other options are passed directly to rebuild_zebra.pl.
+EOF
+}
+
+# Default parameters
opt_idx="-z"
opt_xml="-x"
+opt_verbose=""
opts_other=""
+biblios_only="no"
+authorities_only="no"
+biblios="yes"
+authorities="yes"
+# Read parameters
while [ -n "$*" ]; do
case "$1" in
+ -h|--help)
+ usage ; exit 0
+ ;;
+ -b|--biblios)
+ toggle_biblios_only
+ ;;
+ -a|--authorities)
+ toggle_authorities_only
+ ;;
-u|--usmarc)
- opt_xml=""
- ;;
+ opt_xml=""
+ ;;
-f|--full)
- opt_idx="-r"
- ;;
+ opt_idx="-r"
+ ;;
+ -v|--verbose)
+ opt_verbose="-v"
+ ;;
-*)
opts_other="$opts_other $1";
;;
@@ -42,20 +141,28 @@ while [ -n "$*" ]; do
shift
done
+# Parse command line.
+[ $# -ge 1 ] || ( usage ; die "Missing instance name..." )
-
-run_zebra()
-{
- name=$1; shift
-
- sudo -u "$name-koha" -H \
- env PERL5LIB=/usr/share/koha/lib \
- KOHA_CONF="/etc/koha/sites/$name/koha-conf.xml" \
- /usr/share/koha/bin/migration_tools/rebuild_zebra.pl $@
-}
-
+# Loop over instance names
for name in "$@"
do
- run_zebra $name -b $opt_idx $opt_xml $opts_other
- run_zebra $name -a $opt_idx $opts_other
+ if is_instance $name; then
+ if [ "$biblios" = "yes" ]; then
+ if ! run_rebuild_zebra $name \
+ -b $opt_verbose $opt_idx $opt_xml $opts_other; then
+ warn "Something went wrong rebuilding biblio indexes for $name"
+ fi
+ fi
+ if [ "$authorities" = "yes" ]; then
+ if ! run_rebuild_zebra $name \
+ -a $opt_verbose $opt_idx $opts_other ; then
+ warn "Something went wrong rebuilding authority indexes for $name"
+ fi
+ fi
+ else
+ warn "Unknown instance $name."
+ fi
done
+
+exit 0
--
1.7.9.5
More information about the Koha-patches
mailing list