diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-06-19 16:29:22 +0100 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2007-06-19 16:29:22 +0100 |
commit | 477ac069bc9607e5f0f405d4579440a740712ed3 (patch) | |
tree | 83867c1e91076b96717495dd2e5cca830dcbcf5b /tools | |
parent | 0edf82adb3f1f2f60c40b0e73ba3b967a7ec5554 (diff) | |
download | xen-477ac069bc9607e5f0f405d4579440a740712ed3.tar.gz xen-477ac069bc9607e5f0f405d4579440a740712ed3.tar.bz2 xen-477ac069bc9607e5f0f405d4579440a740712ed3.zip |
tools: Allow xendomains to handle domain names >16 characters
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.
This patch makesit parse the output of "xm list -l" instead.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/examples/init.d/xendomains | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/tools/examples/init.d/xendomains b/tools/examples/init.d/xendomains index 461037e3ac..6ad7a9b9e9 100644 --- a/tools/examples/init.d/xendomains +++ b/tools/examples/init.d/xendomains @@ -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 } |