]> git.pld-linux.org Git - packages/xen.git/commitdiff
xendomains.init 'status' action fixes
authorJacek Konieczny <jajcus@jajcus.net>
Sat, 17 Nov 2012 12:30:52 +0000 (13:30 +0100)
committerJacek Konieczny <jajcus@jajcus.net>
Sat, 17 Nov 2012 13:34:07 +0000 (14:34 +0100)
- 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

index 3dc2a77a97c9778f3bb279436aa65e17b48f3789..1ecefe9f28fdfface2f50c0eb7b73d896864d76f 100644 (file)
@@ -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
        ;;
     *)
This page took 0.110999 seconds and 4 git commands to generate.