summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/xen-tools/files/xend.initd-r2')
-rw-r--r--app-emulation/xen-tools/files/xend.initd-r271
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
+}