start to track Daniel's version
[util-vserver.git] / scripts / vshelper
diff --git a/scripts/vshelper b/scripts/vshelper
deleted file mode 100755 (executable)
index 0b44e22..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-#! /usr/lib/util-vserver/sigexec /bin/bash
-
-# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
-#  
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#  
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#  
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-## Usage: vshelper <xid> <action> <args>
-
-: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
-test -e "$UTIL_VSERVER_VARS" || {
-    echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
-    exit 1
-}
-. "$UTIL_VSERVER_VARS"
-. "$_LIB_FUNCTIONS"
-
-function showHelp
-{
-    echo $"\
-Usage: vshelper <xid> <event> <args>*
-
-Report bugs to <$PACKAGE_BUGREPORT>."
-    exit 0
-}
-
-function showVersion
-{
-    echo $"\
-vshelper $PACKAGE_VERSION -- userspace reboot helper
-This program is part of $PACKAGE_STRING
-
-Copyright (C) 2004 Enrico Scholz
-This program is free software; you may redistribute it under the terms of
-the GNU General Public License.  This program has absolutely no warranty."
-    exit 0
-}
-
-function doInternalMethod
-{
-    local method=$1
-    case "$method" in
-       (restart)
-           case "$ACTION" in
-               (restart)
-                   logging $"Restarting vserver '$VSERVER'"
-
-                   local sync_dir
-                   vshelper.initStopSync sync_dir
-
-                   spawn $_VSERVER --defaulttty "$VSERVER" restart &
-
-                   disown %%
-                   vshelper.waitForStopSync "$sync_dir"
-                   ;;
-               (halt|poweroff)
-                   logging $"Stopping vserver '$VSERVER'"
-
-                   local sync_dir
-                   vshelper.initStopSync sync_dir
-
-                   spawn $_VSERVER --defaulttty "$VSERVER" stop &
-
-                   disown %%
-                   vshelper.waitForStopSync "$sync_dir"
-                   spawn killContext "$XID"
-                   ;;
-               (swsusp)
-                   ## TODO: any senseful action here? Perhaps shutdown scheduler for it?
-                   exit 0
-                   ;;
-               (restart2)      ;;
-               (shutdown)
-                   logging $"Cleaning up after vserver '$VSERVER'"
-                   spawn $_VSERVER --defaulttty "$VSERVER" stop
-                   ;;
-               (*)
-                   warning $"Unknown action '$ACTION' for vserver '$VSERVER'"
-                   exit 1
-           esac
-           ;;
-
-       (async)
-           spawn killContext "$XID"
-           ;;
-           
-       (sync)
-           local f=${METHOD_ARGS[0]}
-           test -n "$f" ||
-               panic $"Insufficent arguments for method '$method' and vserver '$VSERVER'"
-
-           test -p "$f" ||
-               panic $"File '$f' which is required for synchronisation of vserver '$VSERVER' is not a pipe"
-
-           spawn killContext "$XID"
-           echo "$ACTION" >"$f"
-           ;;
-
-       (*)
-           local script
-           findObject -x script "$__CONFDIR"/.defaults/apps/vshelper-methods/"$method" "$__PKGLIBDIR"/vshelper-methods/"$method" ''
-           
-           test -n '$script' || {
-               warning $"No handler for internal method '$method' found"
-               exit 1
-           }
-
-           export VSERVER
-           execute "$script" "${ARGS[@]}"
-    esac
-}
-    
-function doDefaultMethod
-{
-    local handler
-
-    vshelper.getHandler handler "$VSERVER" "$ACTION" || {
-       warning $"No handler configured for action '$ACTION' on vserver '$VSERVER'"
-       exit 1
-    }
-
-    case "$handler" in
-       (/*)    execute "$handler" "${ARGS[@]}";;
-       (:*)    doInternalMethod "${handler##:}" "$@";;
-    esac
-}
-
-#===========
-
-test "$1" != '--version' || showVersion
-test "$1" != '--help'    || showHelp
-
-if ! tty -s; then
-    findObject -e _VS_LOGFILE "$__CONFDIR"/.defaults/apps/vshelper/logfile /dev/null
-    findObject -e _VS_ERRFILE "$__CONFDIR"/.defaults/apps/vshelper/logfile /dev/null
-
-    exec   </dev/null
-    exec  >>$_VS_LOGFILE
-    exec 2>>$_VS_ERRFILE
-fi
-
-logging "$(date): vshelper $*"
-    
-test "$#" -ge 2 ||
-    panic $"vshelper called with missing arguments; try '--help' for more information"
-
-    
-vshelper.isEnabled || exit 0
-! vshelper.isDebug || set -x
-    
-set -eu
-
-if $_VSERVER_INFO - FEATURE vshelper0; then
-    declare -r XID=$1
-    declare -r ACTION=$2
-elif $_VSERVER_INFO - FEATURE vshelper; then
-    declare -r ACTION=$1
-    declare -r XID=$2
-else
-    panic $"vshelper functionality not supported by kernel"
-fi
-
-findObject -x delegate "$__CONFDIR"/.defaults/apps/vshelper-delegate/"$ACTION" "$__PKGLIBDIR"/vshelper-delegate/"$ACTION" ''
-test -e "$delegate" && exec -a "$ACTION" "$delegate" "$@"
-
-this_xid=$($_VSERVER_INFO - XID)
-pxid=
-responsible_xid=$XID
-while true; do
-    pxid=$($_VSERVER_INFO "$responsible_xid" PXID) || break
-    test "$pxid" -ne "$this_xid"                   || break
-    responsible_xid=$pxid
-done
-
-vserver_id=$($_VSERVER_INFO "$responsible_xid" ID) || test "$ACTION" = "shutdown" ||
-    panic $"No responsible vserver found for xid '$responsible_xid' ($XID); aborting..."
-    
-test "$XID" = "$responsible_xid" || {
-    logging "Giving 'vshelper' task for '$XID' to parent vserver '$vserver_id' ($responsible_xid)"
-    execute $_VSERVER "$vserver_id" exec $_VSHELPER "$@"
-}
-
-#===========
-
-ARGS=( "$@" )
-
-declare -a state
-getFileArray state "$__VSHELPERSTATEDIR/$XID" && test ${#state[@]} -ge 2 || {
-    logging "'vshelper' not configured for xid '$XID'"
-    exit 0
-}
-
-declare -r VSERVER=${state[0]}
-
-cfg_xid=$($_VSERVER_INFO "${state[0]}" CONTEXT false) ||
-    panic $"Configured vserver '$VSERVER' does not seem to run; aborting..."
-
-test "$cfg_xid" = "$XID" ||
-    panic $"Configured ($cfg_xid) and actual ($XID) xid for vserver '$VSERVER' are mismatching; aborting..."
-
-cur_xid=$($_VSERVER_INFO "$VSERVER" CONTEXT false) ||
-    panic $"Vserver '$VSERVER' with '$XID' does not seem to run; strange..."
-
-test "$cur_xid" = "$XID" ||
-    panic $"Expected ($XID) and actual ($cur_xid) xid for vserver '$VSERVER' are mismatching; strange..."
-
-
-method=${state[1]}
-if test "${#state[@]}" -gt 2; then
-    unset state[0] state[1]
-    declare -ra METHOD_ARGS=( "${state[@]}" )
-else
-    declare -ra METHOD_ARGS=()
-fi
-
-case "$method" in
-    (default)          doDefaultMethod "$@";;
-    (sync|async)       doInternalMethod "$method" "$@";;
-    (*)                        panic $"Unknown method '$method' used by vserver '$VSERVER'";;
-esac