#!/sbin/runscript # See docs/misc/distro_mapping.txt if [ -d /var/lock/subsys ]; then LOCKFILE=/var/lock/subsys/xendomains else LOCKFILE=/var/lock/xendomains fi if [ -d /etc/sysconfig ]; then XENDOM_CONFIG=/etc/sysconfig/xendomains else XENDOM_CONFIG=/etc/default/xendomains fi if ! [ -r $XENDOM_CONFIG ]; then eend 1; echo "$XENDOM_CONFIG not existing"; return 1; fi . $XENDOM_CONFIG depend() { need xencommons after net xend } get_domname() { local name_from_file=$(sed -rn 's/^name\W*=\W*\"?([[:alnum:]_\.-]+)\"?\W*;?/\1/p' "${1}" | tail -n 1) if [[ -z ${name_from_file} ]] ; then basename "${1}" else echo ${name_from_file} fi } is_running() { /usr/sbin/$CMD list "${1}" >/dev/null 2>&1 } check_xen() { CMD=xm /usr/sbin/$CMD list &> /dev/null if test $? -ne 0 then CMD=xl fi /usr/sbin/$CMD list &> /dev/null if test $? -ne 0 then eend 1; echo "Could not find xl or xm"; return 1; fi # Correct exit code would probably be 5, but it's enough # if xend complains if we're not running as privileged domain if ! [ -e /proc/xen/privcmd ]; then eend 1; echo "Could not find /proc/xen/privcmd"; return 1; fi } start() { einfo "Starting Xen domains in ${AUTODIR:=/etc/xen/auto}" check_xen for dom in $(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort); do name=$(get_domname ${dom}) if ! is_running ${name} ; then ebegin " Starting domain ${name}" /usr/sbin/$CMD create --quiet --defconfig ${dom} >/dev/null 2>&1 eend $? else einfo " Not starting ${name} - already running." fi done } stop() { einfo "Stopping Xen domains in ${AUTODIR:=/etc/xen/auto}" check_xen for dom in $(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort); do name=$(get_domname ${dom}) if is_running ${name} ; then ebegin " Sending shutdown signal to ${name}" /usr/sbin/$CMD shutdown ${name} >/dev/null 2>&1 eend $? fi done for dom in $(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort); do name=$(get_domname ${dom}) if is_running ${name} ; then ebegin " Waiting for domain ${name} to shutdown" /usr/sbin/$CMD shutdown --wait ${name} >/dev/null 2>&1 eend $? else einfo " Not stopping ${name} - not running." fi done } status() { check_xen /usr/sbin/$CMD list }