support alternate container path in lxc-shutdown

Signed-off-by: Harald Dunkel <harald.dunkel@aixigo.de>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
Harald Dunkel 2013-05-03 10:53:40 +02:00 committed by Serge Hallyn
parent a9bafa1085
commit d2c8186b4d

View File

@ -18,13 +18,16 @@
set -e set -e
. @DATADIR@/lxc/lxc.functions
usage() { usage() {
echo "usage: lxc-shutdown -n name [-w] [-r]" echo "usage: lxc-shutdown -n name [-w] [-r] [-P lxcpath]"
echo " Cleanly shut down a container." echo " Cleanly shut down a container."
echo " -w: wait for shutdown to complete." echo " -w: wait for shutdown to complete."
echo " -r: reboot (ignore -w)." echo " -r: reboot (ignore -w)."
echo " -t timeout: wait at most timeout seconds (implies -w), then kill" echo " -t timeout: wait at most timeout seconds (implies -w), then kill"
echo " the container." echo " the container."
echo " -P lxcpath: path to the lxc container directories."
} }
alarm() { alarm() {
@ -38,7 +41,7 @@ alarm() {
dolxcstop() dolxcstop()
{ {
echo "Calling lxc-stop on $lxc_name" echo "Calling lxc-stop on $lxc_name"
lxc-stop -n $lxc_name lxc-stop -n $lxc_name -P "$lxcpath"
exit 0 exit 0
} }
@ -82,6 +85,12 @@ while [ $# -gt 0 ]; do
dowait=1 dowait=1
shift shift
;; ;;
-P|--lxcpath)
optarg_check $opt "$1"
lxcpath=$1
dowait=1
shift
;;
--) --)
break;; break;;
-?) -?)
@ -104,6 +113,11 @@ if [ -z "$lxc_name" ]; then
exit 1 exit 1
fi fi
if [ ! -d "$lxcpath" ]; then
echo "$lxcpath: no such directory"
exit 1
fi
if [ "$(id -u)" != "0" ]; then if [ "$(id -u)" != "0" ]; then
echo "This command has to be run as root" echo "This command has to be run as root"
exit 1 exit 1
@ -112,7 +126,7 @@ fi
which lxc-info > /dev/null 2>&1 || { echo "lxc-info not found."; exit 1; } which lxc-info > /dev/null 2>&1 || { echo "lxc-info not found."; exit 1; }
which lxc-wait > /dev/null 2>&1 || { echo "lxc-wait not found."; exit 1; } which lxc-wait > /dev/null 2>&1 || { echo "lxc-wait not found."; exit 1; }
pid=`lxc-info -n $lxc_name -p 2>/dev/null | awk '{ print $2 }'` pid=`lxc-info -n $lxc_name -P "$lxcpath" -p 2>/dev/null | awk '{ print $2 }'`
if [ "$pid" = "-1" ]; then if [ "$pid" = "-1" ]; then
echo "$lxc_name is not running" echo "$lxc_name is not running"
exit 1 exit 1
@ -135,7 +149,7 @@ if [ $timeout != "-1" ]; then
alarmpid=$! alarmpid=$!
fi fi
while ! lxc-info -n $lxc_name --state-is STOPPED; do while ! lxc-info -n $lxc_name -P "$lxcpath" --state-is STOPPED; do
sleep 1 sleep 1
done done