3 if ! [ -e /proc/xen/privcmd ]; then
7 TOOLSTACK=$(/usr/lib/xen/bin/xen-toolstack toolstack 2>/dev/null)
9 echo "No usable Xen toolstack selected"
12 if [ "$(basename "$TOOLSTACK")" != xl ] && [ "$(basename "$TOOLSTACK")" != xm ]; then
16 if ! /usr/lib/xen/bin/xen-toolstack list >/dev/null 2>&1 ; then
20 [ -r /etc/sysconfig/xendomains ] && . /etc/sysconfig/xendomains
26 /usr/lib/xen/bin/xen-toolstack create --quiet --dryrun --defconfig "$1" | sed -n 's/^.*\("name":"\([^"]*\)",.*\)\|(name \(.*\))$/\2\3/p'
31 /usr/lib/xen/bin/xen-toolstack domid "$1" >/dev/null 2>&1
40 coproc "$@" >/dev/null 2>&1
43 exec {COPROC_OUT}<&"${COPROC[0]}"
44 local PID="$COPROC_PID"
46 for no in $(seq 0 $TIMEOUT); do
47 if [ -z "$COPROC_PID" ]; then break; fi
51 kill -INT "$COPROC_PID" >/dev/null 2>&1
54 if [ $rc -eq 0 ]; then
60 [ $rc -gt 0 ] && cat <&$COPROC_OUT
68 for no in $(seq 0 $TIMEOUT); do
69 if ! check_running "$name"; then return 0; fi
77 [ -n "$XENDOMAINS_SAVE" ] || return
78 [ -d "$XENDOMAINS_SAVE" ] || return
79 [ -n "$XENDOMAINS_RESTORE" ] || return
81 for file in $XENDOMAINS_SAVE/*; do
82 if [ -f $file ] ; then
84 echo -n "Restoring Xen domain $name (from $file): "
86 out=$(/usr/lib/xen/bin/xen-toolstack restore "$file" >/dev/null 2>&1)
90 domains[$name]='started'
94 domains[$name]='failed'
105 [ -n "$XENDOMAINS_AUTO" ] || return
106 [ -d "$XENDOMAINS_AUTO" ] || return
108 for file in $XENDOMAINS_AUTO/*; do
109 name="$(check_config_name $file)"
111 if [ "${domains[$name]}" = started ]; then
113 elif check_running "$name"; then
114 echo "Xen domain $name already running"
116 echo -n "Starting Xen domain $name (from $file): "
118 if [ "${domains[$name]}" = failed ]; then
121 out=$(/usr/lib/xen/bin/xen-toolstack create --quiet --defconfig "$file" >/dev/null 2>&1)
146 [ -n "$XENDOMAINS_MIGRATE" ] || return
148 while read id name rest; do
149 echo -n "Migrating Xen domain $name ($id): "
150 (timeout_coproc "$XENDOMAINS_STOP_MAXWAIT" /usr/lib/xen/bin/xen-toolstack migrate $id $XENDOMAINS_MIGRATE)
151 done < <(/usr/lib/xen/bin/xen-init-list)
156 [ -n "$XENDOMAINS_SAVE" ] || return
157 [ -d "$XENDOMAINS_SAVE" ] || mkdir -m 0700 -p "$XENDOMAINS_SAVE"
159 while read id name rest; do
160 echo -n "Saving Xen domain $name ($id): "
161 (timeout_coproc "$XENDOMAINS_STOP_MAXWAIT" /usr/lib/xen/bin/xen-toolstack save $id $XENDOMAINS_SAVE/$name)
162 done < <(/usr/lib/xen/bin/xen-init-list)
167 while read id name rest; do
168 echo -n "Shutting down Xen domain $name ($id): "
169 /usr/lib/xen/bin/xen-toolstack shutdown $id >/dev/null 2>&1
171 if [ $rc -eq 0 ]; then
176 done < <(/usr/lib/xen/bin/xen-init-list)
177 while read id name rest; do
178 echo -n "Waiting for Xen domain $name ($id) to shut down: "
179 timeout_domain "$name" "$XENDOMAINS_STOP_MAXWAIT"
181 if [ $rc -eq 0 ]; then
186 done < <(/usr/lib/xen/bin/xen-init-list)
212 /usr/lib/xen/bin/xen-toolstack list -v
215 echo "Usage: $0 {start|stop|status|restart|reload|force-reload}"