Fix gnt-instance console instance unpausing for xl toolstack
authorNicolas Avrutin <rasputin@google.com>
Thu, 15 Dec 2016 17:05:46 +0000 (09:05 -0800)
committerBrian Foley <bpfoley@google.com>
Thu, 15 Dec 2016 17:41:29 +0000 (17:41 +0000)
xen-console-wrapper called the "xm" command instead of using the toolstack
configured in Ganeti. This patch replaces those calls with calls to the
toolstack command which is passed as the first argument to the script.

In addition, whereas "xm list --long" output a sexp, "xl list --long" outputs
JSON. Unfortunately, the JSON data is missing the "state" field, which we need
to determine whether the instance is paused. Thus we have to use
"xm list"/"xl list" and chop off the header line (because there is no flag
to omit printing the headers).

Signed-off-by: Nicolas Avrutin <rasputin@google.com>
Reviewed-by: Brian Foley <bpfoley@google.com>

tools/xen-console-wrapper

index fb6f986..bce60ce 100755 (executable)
@@ -31,17 +31,17 @@ XEN_CMD="$1"
 INSTANCE="$2"
 
 unpause() {
-  ispaused=$(xm list -l "$INSTANCE" 2>/dev/null |
-             sed -n 's/^[[:blank:]]*(state ..\(.\)...)/\1/p')
+  ispaused=$(${XEN_CMD} list $INSTANCE 2>/dev/null | tail -n1 |
+             awk '{print $5}' | sed -n 's/..\(.\).../\1/p')
   [[ "$ispaused" == "p" ]] || return
-  # As there is no way to be sure when xm console has actually connected to the
+  # As there is no way to be sure when xen console has actually connected to the
   # instance, sleep for a few seconds before unpausing the instance. This is a
   # tradeoff between missing some console output if the node is overloaded and
   # making the user wait everytime when the node isn't so busy.
   sleep 3
   # Send \r\n after notice as terminal is in raw mode
   printf "Instance $INSTANCE is paused, unpausing\r\n"
-  xm unpause "$INSTANCE"
+  $(${XEN_CMD} unpause "$INSTANCE")
 }
 
 unpause &