#!/bin/sh # # PROVIDE: xencommons # REQUIRE: DAEMON . /etc/rc.subr DIR=$(dirname "$0") . "${DIR}/xen-hotplugpath.sh" LD_LIBRARY_PATH="${libdir}" export LD_LIBRARY_PATH name="xencommons" rcvar=xend start_precmd="xen_precmd" start_cmd="xen_startcmd" stop_cmd="xen_stop" status_cmd="xen_status" extra_commands="status" required_files="/kern/xen/privcmd" XENSTORED_PIDFILE="@XEN_RUN_DIR@/xenstored.pid" XENCONSOLED_PIDFILE="@XEN_RUN_DIR@/xenconsoled.pid" XENBACKENDD_PIDFILE="@XEN_RUN_DIR@/xenbackendd.pid" #XENBACKENDD_DEBUG=1 #XENCONSOLED_TRACE="@XEN_LOG_DIR@/xenconsole-trace.log" #XENSTORED_TRACE="@XEN_LOG_DIR@/xenstore-trace.log" xen_precmd() { mkdir -p @XEN_RUN_DIR@/xenstored || exit 1 } xen_startcmd() { local time=0 local timeout=30 xenstored_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${sbindir}/xenstored) if test -z "$xenstored_pid"; then printf "Cleaning xenstore database.\n" if [ -z "${XENSTORED_ROOTDIR}" ]; then XENSTORED_ROOTDIR="@XEN_LIB_STORED@" fi rm -f ${XENSTORED_ROOTDIR}/tdb* >/dev/null 2>&1 printf "Starting xenservices: xenstored, xenconsoled." XENSTORED_ARGS=" --pid-file ${XENSTORED_PIDFILE}" if [ -n "${XENSTORED_TRACE}" ]; then XENSTORED_ARGS="${XENSTORED_ARGS} -T @XEN_LOG_DIR@/xenstored-trace.log" fi ${sbindir}/xenstored ${XENSTORED_ARGS} while [ $time -lt $timeout ] && ! `${bindir}/xenstore-read -s / >/dev/null 2>&1` ; do printf "." time=$(($time+1)) sleep 1 done else printf "Starting xenservices: xenconsoled." fi XENCONSOLED_ARGS="" if [ -n "${XENCONSOLED_TRACE}" ]; then XENCONSOLED_ARGS="${XENCONSOLED_ARGS} --log=${XENCONSOLED_TRACE}" fi ${sbindir}/xenconsoled ${XENCONSOLED_ARGS} printf "\n" printf "Setting domain 0 name, domid and JSON config...\n" ${LIBEXEC_BIN}/xen-init-dom0 } xen_stop() { pids="" printf "Stopping xencommons.\n" printf "WARNING: Not stopping xenstored, as it cannot be restarted.\n" rc_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${sbindir}/xenconsoled) pids="$pids $rc_pid" kill -${sig_stop:-TERM} $pids wait_for_pids $pids } xen_status() { xenstored_pid=$(check_pidfile ${XENSTORED_PIDFILE} ${sbindir}/xenstored) if test -n ${xenstored_pid}; then pids="$pids $xenstored_pid" fi xenconsoled_pid=$(check_pidfile ${XENCONSOLED_PIDFILE} ${sbindir}/xenconsoled) if test -n ${xenconsoled_pid}; then pids="$pids $xenconsoled_pid" fi if test -n "$xenconsoled_pid" -a -n "$xenstored_pid"; then echo "xencommons are running as pids $pids." return 0 fi if test -z "$xenconsoled_pid" -a -z "$xenstored_pid"; then echo "xencommons are not running." return 0 fi if test -n $xenstored_pid; then echo "xenstored is running as pid $xenstored_pid." else echo "xenstored is not running." fi if test -n $xenconsoled_pid; then echo "xenconsoled is running as pid $xenconsoled_pid." else echo "xenconsoled is not running." fi } load_rc_config $name run_rc_command "$1"