Allow xendomains to handle domain names > 16 characters
PATCH 1/1 Allow xendomains to handle domain names > 16 characters
Hi,
The xendomains init script parses the output of "xm list", and since xm
list restricts the length of domains to 16 characters the xendomain script cannot handle long domain names.
Attached is a patch to make it parse the output of "xm list -l"
instead.
Signed-off-by Mark McLoughlin <[email protected]>
Thanks,
Mark.
tools/examples/init.d/xendomains +21 -12
@@ -182,25 +182,31 @@ rdnames() parseln() { - name=`echo "$1" | cut -c0-17` - name=${name%% *} - rest=`echo "$1" | cut -c18- ` - read id mem cpu vcpu state tm < <(echo "$rest") + if [[ "$1" =~ "\(domain" ]]; then + name=;id= + else if [[ "$1" =~ "\(name" ]]; then + name=$(echo $1 | sed -e 's/^.*(name \(.*\))$/\1/') + else if [[ "$1" =~ "\(domid" ]]; then + id=$(echo $1 | sed -e 's/^.*(domid \(.*\))$/\1/') + fi; fi; fi + + [ -n "$name" -a -n "$id" ] && return 0 || return 1 } is_running() { rdname $1 RC=1 + name=;id= while read LN; do - parseln "$LN" + parseln "$LN" || continue if test $id = 0; then continue; fi case $name in ($NM) RC=0 ;; esac - done < <(xm list | grep -v '^Name') + done < <(xm list -l | grep '(\(domain\|domid\|name\)') return $RC }
@@ -267,13 +273,14 @@ start() all_zombies() { + name=;id= while read LN; do - parseln "$LN" + parseln "$LN" || continue if test $id = 0; then continue; fi if test "$state" != "-b---d" -a "$state" != "-----d"; then return 1; fi - done < <(xm list | grep -v '^Name') + done < <(xm list -l | grep '(\(domain\|domid\|name\)') return 0 }
@@ -309,8 +316,9 @@ stop() rdnames fi echo -n "Shutting down Xen domains:" + name=;id= while read LN; do - parseln "$LN" + parseln "$LN" || continue if test $id = 0; then continue; fi echo -n " $name" if test "$XENDOMAINS_AUTO_ONLY" = "true"; then
@@ -384,7 +392,7 @@ stop() fi kill $WDOG_PID >/dev/null 2>&1 fi - done < <(xm list | grep -v '^Name') + done < <(xm list -l | grep '(\(domain\|domid\|name\)') # NB. this shuts down ALL Xen domains (politely), not just the ones in # AUTODIR/*
@@ -409,15 +417,16 @@ stop() check_domain_up() { + name=;id= while read LN; do - parseln "$LN" + parseln "$LN" || continue if test $id = 0; then continue; fi case $name in ($1) return 0 ;; esac - done < <(xm list | grep -v "^Name") + done < <(xm list -l | grep '(\(domain\|domid\|name\)') return 1 }
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel