commit bf0f888a6411b41ca9649b1850f62c8875f4e199
Author: Jacek Konieczny <[email protected]>
Date:   Sat Nov 17 13:30:52 2012 +0100

    xendomains.init 'status' action fixes
    
    - shell syntax errors fixed
    – made compatible with 'xl' output (I hope 'xm' still works if anybody
      needs the obsolete tool)
    
    That is still a very, very ugly hack. I just made it work.

 xendomains.init | 45 ++++++++++++++++++++++++++-------------------
 1 file changed, 26 insertions(+), 19 deletions(-)
---
diff --git a/xendomains.init b/xendomains.init
index 3dc2a77..1ecefe9 100644
--- a/xendomains.init
+++ b/xendomains.init
@@ -47,7 +47,8 @@ contains_something() {
 
 # read name from xen config file
 rdname() {
-       NM=$($CMD create --quiet --dryrun --defconfig "$1" | sed -n 's/^.*(name 
\(.*\))$/\1/p')
+       NM=$($CMD create --quiet --dryrun --defconfig "$1" 2>&1 | sed -n 
's/^.*\(name \(.*\)\)\|\("name": "\([^"]*\)",\?\)$/\2\4/p')
+       NM=$(echo $NM)
 }
 
 rdnames() {
@@ -66,11 +67,16 @@ rdnames() {
 }
 
 parseln() {
-    if [[ "$1" = "*(domain*" ]]; then
+    if [[ "$1" = *"(domain"* ]]; then
         name=;id=
-    elif [[ "$1" = "*(name*" ]]; then
+    elif [[ "$1" = *"\"domid\"":* ]]; then
+        name=
+               id=$(echo $1 | sed -s 's/^.*: \([0-9]*\),$/\1/')
+    elif [[ "$1" = *"\"name\":"* ]]; then
+               name=$(echo $1 | sed -s 's/^.*: "\([^"]*\)",$/\1/')
+    elif [[ "$1" = *"(name"* ]]; then
         name=$(echo $1 | sed -e 's/^.*(name \(.*\))$/\1/')
-    elif [[ "$1" = "*(domid*" ]]; then
+    elif [[ "$1" = *"(domid"* ]]; then
         id=$(echo $1 | sed -e 's/^.*(domid \(.*\))$/\1/')
     fi
     [ -n "$name" -a -n "$id" ] && return 0 || return 1
@@ -79,7 +85,7 @@ parseln() {
 is_running() {
     rdname $1
     name=;id=
-    $CMD list -l | grep '(\(domain\|domid\|name\)' | \
+    $CMD list -l | grep '[("]\(domain\|domid\|name\)' | \
     while read LN; do
        parseln "$LN" || continue
        [ $id = 0 ] && continue
@@ -157,7 +163,7 @@ start() {
 
 all_zombies() {
     name=;id=
-    $CMD list -l | grep '(\(domain\|domid\|name\)' | \
+    $CMD list -l | grep '[("]\(domain\|domid\|name\)' | \
     while read LN; do
        parseln "$LN" || continue
        if test $id = 0; then continue; fi
@@ -204,7 +210,7 @@ stop() {
     fi
     echo -n "Shutting down Xen domains:"
     name=;id=
-    $CMD list -l | grep '(\(domain\|domid\|name\)' | \
+    $CMD list -l | grep '[("]\(domain\|domid\|name\)' | \
     while read LN; do
        parseln "$LN" || continue
        if test $id = 0; then continue; fi
@@ -313,18 +319,18 @@ stop() {
 
 check_domain_up()
 {
+       local result
+       result=1
     name=;id=
-    $CMD list -l | grep '(\(domain\|domid\|name\)' | \
+    $CMD list -l | grep '[("]\(domain\|domid\|name\)' | \
     while read LN; do
-       parseln "$LN" || continue
-       if test $id = 0; then continue; fi
-       case $name in 
-           ($1)
-               return 0
-               ;;
-       esac
+         parseln "$LN" || continue
+         if test $id = 0; then continue; fi
+         if [ "$name" = "$1" ] ; then
+               echo 1
+               break
+         fi
     done
-    return 1
 }
 
 check_all_auto_domains_up()
@@ -336,8 +342,8 @@ check_all_auto_domains_up()
     for nm in $XENDOMAINS_AUTO/*; do
        rdname $nm
        found=0
-       if check_domain_up "$NM"; then 
-           echo -n " $name"
+       if [ -n "$(check_domain_up "$NM")" ] ; then 
+           echo -n " $NM"
        else 
            missing="$missing $NM"
        fi
@@ -377,10 +383,11 @@ case "$1" in
     start
        ;;
     status)
-       if [ -f /var/lock/subsys/xendomains; then
+       if [ -f /var/lock/subsys/xendomains ]; then
            echo -n "Checking for xendomains:" 
            check_all_auto_domains_up
            check_all_saved_domains_up
+               echo
        fi
        ;;
     *)
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/xen.git/commitdiff/291689a11152f9ea4bb81d2b0549fd0a5fedd10a

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to