[Pkg-xen-changes] r989 - trunk/xen/debian
Bastian Blank
waldi at alioth.debian.org
Sun Apr 22 20:57:40 UTC 2012
Author: waldi
Date: Sun Apr 22 20:57:39 2012
New Revision: 989
Log:
debian/xen-utils-common.xendomains.init: Replace start code.
Modified:
trunk/xen/debian/xen-utils-common.xendomains.init
Modified: trunk/xen/debian/xen-utils-common.xendomains.init
==============================================================================
--- trunk/xen/debian/xen-utils-common.xendomains.init Sun Apr 22 20:36:09 2012 (r988)
+++ trunk/xen/debian/xen-utils-common.xendomains.init Sun Apr 22 20:57:39 2012 (r989)
@@ -34,6 +34,8 @@
. $XENDOM_CONFIG
+shopt -s nullglob
+
echo_rc()
{
if test ${_RC_RV} = 0; then
@@ -127,89 +129,6 @@
done
}
-is_running()
-{
- rdname $1
- RC=1
- while read id name rest; do
- case $name in
- ($NM)
- RC=0
- ;;
- esac
- done < <(/usr/lib/xen-common/bin/xen-init-list)
- return $RC
-}
-
-start()
-{
- if [ -f $LOCKFILE ]; then
- echo -e "xendomains already running (lockfile exists)"
- return;
- fi
-
- saved_domains=" "
- if [ "$XENDOMAINS_RESTORE" = "true" ] &&
- contains_something "$XENDOMAINS_SAVE"
- then
- mkdir -p $(dirname "$LOCKFILE")
- touch $LOCKFILE
- echo -n "Restoring Xen domains:"
- saved_domains=`ls $XENDOMAINS_SAVE`
- for dom in $XENDOMAINS_SAVE/*; do
- if [ -f $dom ] ; then
- HEADER=`head -c 16 $dom | head -n 1 2> /dev/null`
- if [ $HEADER = "LinuxGuestRecord" ]; then
- echo -n " ${dom##*/}"
- XMR=`xen restore $dom 2>&1 1>/dev/null`
- #$CMD restore $dom
- if [ $? -ne 0 ]; then
- echo -e "\nAn error occurred while restoring domain ${dom##*/}:\n$XMR"
- rc_failed $?
- echo -e '!'
- else
- # mv $dom ${dom%/*}/.${dom##*/}
- rm $dom
- fi
- fi
- fi
- done
- echo -e
- fi
-
- if contains_something "$XENDOMAINS_AUTO"
- then
- touch $LOCKFILE
- echo -n "Starting auto Xen domains:"
- # We expect config scripts for auto starting domains to be in
- # XENDOMAINS_AUTO - they could just be symlinks to files elsewhere
-
- # Create all domains with config files in XENDOMAINS_AUTO.
- # TODO: We should record which domain name belongs
- # so we have the option to selectively shut down / migrate later
- # If a domain statefile from $XENDOMAINS_SAVE matches a domain name
- # in $XENDOMAINS_AUTO, do not try to start that domain; if it didn't
- # restore correctly it requires administrative attention.
- for dom in $XENDOMAINS_AUTO/*; do
- echo -n " ${dom##*/}"
- shortdom=$(echo $dom | sed -n 's/^.*\/\(.*\)$/\1/p')
- echo $saved_domains | grep -w $shortdom > /dev/null
- if [ $? -eq 0 ] || is_running $dom; then
- echo -n "(skip)"
- else
- XMC=`xen create --quiet --defconfig $dom`
- if [ $? -ne 0 ]; then
- echo -e "\nAn error occurred while creating domain ${dom##*/}: $XMC\n"
- rc_failed $?
- echo -e '!'
- else
- usleep $XENDOMAINS_CREATE_USLEEP
- fi
- fi
- done
- fi
-}
-
all_zombies()
{
while read id name rest; do
@@ -220,6 +139,12 @@
return 0
}
+check_running()
+{
+ xen domid "$1" > /dev/null 2>&1
+ return $?
+}
+
coproc_timeout()
{
TIMEOUT="$1"
@@ -233,6 +158,59 @@
return 1
}
+do_start_restore()
+{
+ for file in $XENDOMAINS_SAVE/*; do
+ if [ -f $file ] ; then
+ HEADER=$(head -c 16 "$file" | head -n 1 2> /dev/null)
+ if [ $HEADER = "LinuxGuestRecord" ]; then
+ name="${file##*/}"
+ log_action_begin_msg "Restoring Xen domain $name"
+
+ out=$(xen restore "$file" 2>&1 1>/dev/null)
+ case "$?" in
+ 0)
+ rm "$file"
+ log_action_end_msg 0
+ ;;
+ *)
+ log_action_end_msg 1
+ ;;
+ esac
+ fi
+ fi
+ done
+}
+
+do_start_auto()
+{
+ for file in $XENDOMAINS_AUTO/*; do
+ rdname "$file"
+ name="$NM"
+ log_action_begin_msg "Starting Xen domain $name ($file)"
+
+ if check_running "$name"; then
+ log_action_end_msg 0 "already running"
+ else
+ out=$(xen create --quiet --defconfig "$file" 2>&1 1>/dev/null)
+ log_action_end_msg $?
+ fi
+ done
+}
+
+do_start()
+{
+ if [ -f $LOCKFILE ]; then
+ echo -e "xendomains already running (lockfile exists)"
+ return;
+ fi
+ mkdir -p $(dirname "$LOCKFILE")
+ touch $LOCKFILE
+
+ do_start_restore
+ do_start_auto
+}
+
do_stop_migrate()
{
while read id name rest; do
@@ -328,7 +306,7 @@
restart()
{
do_stop
- start
+ do_start
}
reload()
@@ -339,7 +317,7 @@
case "$1" in
start)
- start
+ do_start
rc_status
if test -f $LOCKFILE; then rc_status -v; fi
;;
More information about the Pkg-xen-changes
mailing list