2007-01-16 00:42:10 +01:00
|
|
|
#!/bin/bash
|
|
|
|
#
|
2007-05-23 01:45:46 +02:00
|
|
|
# xend Starts and stops the Xen management daemon
|
2007-01-16 00:42:10 +01:00
|
|
|
#
|
|
|
|
# chkconfig: 35 98 01
|
2007-05-23 01:45:46 +02:00
|
|
|
# description: Starts and stops the Xen management daemon
|
2007-01-16 00:42:10 +01:00
|
|
|
#
|
|
|
|
### BEGIN INIT INFO
|
|
|
|
# Provides: xend
|
2007-08-12 11:48:30 +02:00
|
|
|
# Required-Start: $syslog $remote_fs
|
|
|
|
# Should-Start: iscsi $time
|
|
|
|
# Required-Stop: $syslog $remote_fs
|
|
|
|
# Should-Stop: iscsi $time
|
2007-01-16 00:42:10 +01:00
|
|
|
# Default-Start: 3 5
|
|
|
|
# Default-Stop: 0 1 2 4 6
|
2007-05-23 01:45:46 +02:00
|
|
|
# Short-Description: Starts and stops the Xen management daemon
|
|
|
|
# Description: Starts and stops the Xen management daemon. xend is needed
|
|
|
|
# to create and manage VMs on Xen.
|
2007-01-16 00:42:10 +01:00
|
|
|
### END INIT INFO
|
|
|
|
|
2007-05-23 01:45:46 +02:00
|
|
|
. /etc/rc.status
|
|
|
|
rc_reset
|
|
|
|
|
|
|
|
XEND=`ps ax | grep -w xend | grep -w python | awk '{ print $1 }'`
|
|
|
|
XEND=`echo $XEND`
|
|
|
|
|
2007-01-16 00:42:10 +01:00
|
|
|
await_daemons_up()
|
|
|
|
{
|
|
|
|
i=1
|
|
|
|
rets=10
|
|
|
|
xend status
|
|
|
|
while [ $? -ne 0 -a $i -lt $rets ]; do
|
|
|
|
sleep 1
|
|
|
|
echo -n .
|
|
|
|
i=$(($i + 1))
|
|
|
|
xend status
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
xend_abort()
|
|
|
|
{
|
|
|
|
echo -n "xend "
|
|
|
|
rc_failed $1
|
|
|
|
rc_status -v
|
|
|
|
rc_exit
|
|
|
|
}
|
|
|
|
|
|
|
|
cleanup()
|
|
|
|
{
|
|
|
|
rm -f /var/lib/xen/tmp/* 2>/dev/null
|
|
|
|
rm -f /var/lib/xen/xenbl* 2>/dev/null
|
|
|
|
}
|
|
|
|
|
2007-05-23 01:45:46 +02:00
|
|
|
check()
|
2007-02-11 11:48:10 +01:00
|
|
|
{
|
2007-05-23 01:45:46 +02:00
|
|
|
if [ "$1" == status ]; then
|
|
|
|
if [ ! -e /proc/xen/capabilities ]; then
|
|
|
|
xend_abort 3
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
if [ `id -u` != 0 ]; then
|
|
|
|
xend_abort 4
|
|
|
|
fi
|
|
|
|
if [ ! -e /proc/xen/capabilities ] ||
|
|
|
|
! grep control_d /proc/xen/capabilities >/dev/null 2>&1; then
|
|
|
|
if [ "$1" == stop ] ||
|
|
|
|
[ "$1" == try-restart ]; then
|
|
|
|
xend_abort 0
|
|
|
|
else
|
|
|
|
xend_abort 6
|
|
|
|
fi
|
2007-01-16 00:42:10 +01:00
|
|
|
fi
|
|
|
|
fi
|
2007-05-23 01:45:46 +02:00
|
|
|
}
|
2007-01-16 00:42:10 +01:00
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
start)
|
2007-05-23 01:45:46 +02:00
|
|
|
check $1
|
2007-01-16 00:42:10 +01:00
|
|
|
echo -n "Starting xend "
|
|
|
|
if [ ! -z "$XEND" ]; then
|
|
|
|
echo -n "(already running pid $XEND) "
|
|
|
|
else
|
|
|
|
cleanup
|
|
|
|
fi
|
|
|
|
# Load XEN backend modules
|
|
|
|
# Sidenote: They could be loaded later:
|
|
|
|
# - netbk and blkbk when the dom0 hotplug events occur
|
|
|
|
# (in xen-network-common.sh and block-common.sh)
|
2007-02-19 23:34:05 +01:00
|
|
|
# - xenblk when xend prepares for bootloader
|
2007-01-16 00:42:10 +01:00
|
|
|
# but for now it's safest to have them loaded when xend starts in dom0.
|
|
|
|
modprobe blktap 2>/dev/null || true
|
|
|
|
modprobe blkbk 2>/dev/null || true
|
2007-02-19 23:34:05 +01:00
|
|
|
modprobe xenblk 2>/dev/null || true
|
2007-01-16 00:42:10 +01:00
|
|
|
modprobe netbk 2>/dev/null || true
|
|
|
|
xend start
|
|
|
|
await_daemons_up
|
|
|
|
;;
|
|
|
|
stop)
|
2007-05-23 01:45:46 +02:00
|
|
|
check $1
|
2007-01-16 00:42:10 +01:00
|
|
|
echo -n "Stopping xend "
|
|
|
|
if [ -z "$XEND" ]; then
|
|
|
|
echo -n "(not running) "
|
|
|
|
xend stop
|
|
|
|
rc_reset
|
|
|
|
else
|
|
|
|
echo -n "(pid $XEND) "
|
|
|
|
xend stop
|
|
|
|
cleanup
|
|
|
|
rc_reset
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
status)
|
2007-05-23 01:45:46 +02:00
|
|
|
check $1
|
2007-01-16 00:42:10 +01:00
|
|
|
echo -n "Checking status of xend "
|
|
|
|
if [ ! -z "$XEND" ]; then
|
|
|
|
echo -n "(pid $XEND) "
|
|
|
|
fi
|
|
|
|
xend status
|
|
|
|
;;
|
|
|
|
restart|reload)
|
2007-05-23 01:45:46 +02:00
|
|
|
check $1
|
2007-01-16 00:42:10 +01:00
|
|
|
echo -n "Restarting xend "
|
|
|
|
if [ -z "$XEND" ]; then
|
|
|
|
echo -n "(not running) "
|
|
|
|
else
|
|
|
|
echo -n "(old pid $XEND) "
|
|
|
|
fi
|
|
|
|
xend restart
|
|
|
|
await_daemons_up
|
|
|
|
;;
|
|
|
|
try-restart)
|
2007-05-23 01:45:46 +02:00
|
|
|
check $1
|
2007-01-16 00:42:10 +01:00
|
|
|
$0 status
|
|
|
|
if [ $? = 0 ]; then
|
|
|
|
$0 restart
|
|
|
|
else
|
|
|
|
rc_reset
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "Usage: $0 {start|stop|restart|try-restart|reload|status}"
|
|
|
|
rc_failed 2
|
|
|
|
rc_exit
|
|
|
|
esac
|
|
|
|
|
|
|
|
rc_status -v
|
|
|
|
rc_exit
|