#!/bin/bash
#
# util-vserver  sets the path to vshelper and kills all guest processes
#
# chkconfig: 2345 10 90
# description: Sets the path to vshelper and kills all guest processes
# 
### BEGIN INIT INFO
# Provides:          util-vserver
# Required-Start:    $remote_fs $syslog $time
# Required-Stop:     $remote_fs $syslog $time
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Sets the path to vshelper and kills all guest processes
# Description:       Sets the path to vshelper and kills all guest processes
### END INIT INFO

: ${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"

LOCKFILE=util-vserver
. "$_LIB_VSERVER_INIT_FUNCTIONS"
. "$_LIB_FUNCTIONS"
. "$_LIB_VSERVER_FUNCTIONS"

function start()
{
    _beginResult $"Creating required directories"
    create_dirs
    _endResult $?
    _beginResult $"Setting path to vshelper"
    set_helper
    _endResult $?
    local retval=$?
    _beginResult $"Loading default device map"
    handleDeviceMap --set 0 "$__CONFDIR/.defaults/apps/vdevmap"
    _endResult $?
    if hasCgroup; then
	_beginResult $"Mounting cgroup-hierarchy"
	mount_cgroup
	_endResult $?
    fi
    test "$retval" -ne 0 || touch "$lockfile"
    return $retval
}

function stop()
{
    # Stop all running, but non-default guests"
    _beginResult $"Stopping all running guests"
    $_START_VSERVERS -j 1 --all --stop
    _endResult $?
    _beginResult $"Killing all running contexts"
    kill_contexts
    _endResult $?
    local retval=$?
    if hasCgroup; then
	_beginResult $"Unmounting cgroup-hierarchy"
	umount_cgroup
	_endResult $?
    fi
    $_RM -f "$lockfile"
    return $retval
}

function restart()
{
    stop
    start
}

case "$1" in
    start|stop|restart)	$1;;
    reload)		;;
    condrestart)
	test -f $lockfile && restart || :
	;;
    status)
	test -f $lockfile && {
	    echo $"Path to vshelper has been set"
	    exit 0
	}
	echo $"Path to vshelper has not been set"
	exit 1
	;;
    *)
        echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
	exit 2
	;;
esac
