diff options
Diffstat (limited to 'app-emulation/xen-tools/files/xend.initd-r2')
-rw-r--r-- | app-emulation/xen-tools/files/xend.initd-r2 | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/app-emulation/xen-tools/files/xend.initd-r2 b/app-emulation/xen-tools/files/xend.initd-r2 new file mode 100644 index 0000000..b34a5a7 --- /dev/null +++ b/app-emulation/xen-tools/files/xend.initd-r2 @@ -0,0 +1,71 @@ +#!/sbin/runscript +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +opts="start stop status restart" + +depend() { + need net + before xendomains sshd ntp-client ntpd nfs nfsmount rsyncd portmap dhcp +} + +await_daemons_up() { + for ((i=0; i<5; i++)); do + /usr/sbin/xend status && return 0 + sleep 1 + done + return 1 +} + +is_privileged_domain() { + grep -qsE '^control_d$' /proc/xen/capabilities + return $? +} + +start() { + if is_privileged_domain ; then + ebegin "Starting Xen control daemon" + /usr/sbin/xend start && await_daemons_up + eend $? + else + eerror "Can't start xend - this is not a privileged domain." + return 1 + fi +} + +stop() { + if [ "$(xm list 2>/dev/null | wc -l)" -gt 2 ]; then + ebegin "Stopping all Xen domains" + /usr/sbin/xm shutdown --all --wait >/dev/null + eend $? + fi + + ebegin "Stopping Xen control daemon" + /usr/sbin/xend stop + eend $? + + #ebegin "Stopping xenconsoled" + #kill $(</var/run/xenconsoled.pid) + #eend $? + + #ebegin "Stopping xenstored" + #kill $(</var/run/xenstore.pid) + #eend $? +} + +restart() { + # IMPORTANT: do NOT restart xenstored/xenconsoled when restarting + # just xend, as this can be fatal! + # When restarting xend, leave alone xenstored/xenconsoled and all + # running domains. + # See http://article.gmane.org/gmane.comp.emulators.xen.user/40656 + ebegin "Restarting Xen control daemon" + /usr/sbin/xend restart + eend $? + # we fool /etc/init.d/runscript.sh:svc_restart() here: svc_stop svc_start +} + +status() { + is_privileged_domain && /usr/sbin/xend status +} |