Gentoo Archives: gentoo-commits

From: "Wolfram Schlich (wschlich)" <wschlich@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in app-emulation/xen-tools/files: xend.initd-r1 xendomains.initd-r1
Date: Tue, 01 Sep 2009 04:47:49
Message-Id: E1MiQ6O-0003GQ-Hb@stork.gentoo.org
1 wschlich 09/09/01 09:56:36
2
3 Added: xend.initd-r1 xendomains.initd-r1
4 Log:
5 fix bugs 248771, 248797, 248917
6 (Portage version: 2.2_rc33/cvs/Linux i686)
7
8 Revision Changes Path
9 1.1 app-emulation/xen-tools/files/xend.initd-r1
10
11 file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-emulation/xen-tools/files/xend.initd-r1?rev=1.1&view=markup
12 plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-emulation/xen-tools/files/xend.initd-r1?rev=1.1&content-type=text/plain
13
14 Index: xend.initd-r1
15 ===================================================================
16 #!/sbin/runscript
17 # Copyright 1999-2005 Gentoo Foundation
18 # Distributed under the terms of the GNU General Public License v2
19 # $Header: /var/cvsroot/gentoo-x86/app-emulation/xen-tools/files/xend.initd-r1,v 1.1 2009/09/01 09:56:36 wschlich Exp $
20
21 opts="start stop status restart"
22
23 depend() {
24 need net
25 before xendomains sshd ntp-client ntpd nfs nfsmount rsyncd portmap dhcp
26 }
27
28 await_daemons_up() {
29 for ((i=0; i<5; i++)); do
30 /usr/sbin/xend status && return 0
31 sleep 1
32 done
33 return 1
34 }
35
36 is_privileged_domain() {
37 grep -qsE '^control_d$' /proc/xen/capabilities
38 return $?
39 }
40
41 start() {
42 if is_privileged_domain ; then
43 ebegin "Starting Xen control daemon"
44 /usr/sbin/xend start && await_daemons_up
45 eend $?
46 else
47 eerror "Can't start xend - this is not a privileged domain."
48 return 1
49 fi
50 }
51
52 stop() {
53 if [ "$(xm list 2>/dev/null | wc -l)" -gt 2 ]; then
54 ebegin "Stopping all Xen domains"
55 /usr/sbin/xm shutdown --all --wait >/dev/null
56 eend $?
57 fi
58
59 ebegin "Stopping Xen control daemon"
60 /usr/sbin/xend stop
61 eend $?
62
63 #ebegin "Stopping xenconsoled"
64 #kill $(</var/run/xenconsoled.pid)
65 #eend $?
66
67 #ebegin "Stopping xenstored"
68 #kill $(</var/run/xenstore.pid)
69 #eend $?
70 }
71
72 restart() {
73 # IMPORTANT: do NOT restart xenstored/xenconsoled when restarting
74 # just xend, as this can be fatal!
75 # When restarting xend, leave alone xenstored/xenconsoled and all
76 # running domains.
77 # See http://article.gmane.org/gmane.comp.emulators.xen.user/40656
78 ebegin "Restarting Xen control daemon"
79 /usr/sbin/xend restart
80 eend $?
81 # we fool /etc/init.d/runscript.sh:svc_restart() here: svc_stop svc_start
82 }
83
84 status() {
85 is_privileged_domain && /usr/sbin/xend status
86 }
87
88
89
90 1.1 app-emulation/xen-tools/files/xendomains.initd-r1
91
92 file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-emulation/xen-tools/files/xendomains.initd-r1?rev=1.1&view=markup
93 plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-emulation/xen-tools/files/xendomains.initd-r1?rev=1.1&content-type=text/plain
94
95 Index: xendomains.initd-r1
96 ===================================================================
97 #!/sbin/runscript
98 # Copyright 1999-2006 Gentoo Foundation
99 # Distributed under the terms of the GNU General Public License v2
100 # $Header: /var/cvsroot/gentoo-x86/app-emulation/xen-tools/files/xendomains.initd-r1,v 1.1 2009/09/01 09:56:36 wschlich Exp $
101
102 opts="start stop status restart"
103
104 depend() {
105 need xend
106 after dhcp
107 }
108
109 get_domname() {
110 local name_from_file=$(sed -rn 's/^name\W*=\W*\"?([[:alnum:]_\.-]+)\"?\W*;?/\1/p' "${1}" | tail -n 1)
111
112 if [[ -z ${name_from_file} ]] ; then
113 basename "${1}"
114 else
115 echo ${name_from_file}
116 fi
117 }
118
119 is_running() {
120 /usr/sbin/xm list "${1}" >/dev/null 2>&1
121 }
122
123 using_screen() {
124 [[ "${SCREEN}" == "yes" || "${SCREEN}" == "YES" ]]
125 }
126
127 set_screen_cmd() {
128 screen_cmd="screen -c ${SCREENRC:-/dev/null} -q -r ${SCREEN_NAME:=xen} -X"
129 }
130
131 start() {
132 set_screen_cmd
133
134 einfo "Starting Xen domains from ${AUTODIR:=/etc/xen/auto}"
135 if using_screen ; then
136 ebegin "Creating screen session to hold domain consoles"
137 ( screen -c ${SCREENRC:-/dev/null} -d -m -S ${SCREEN_NAME} -t dom0 \
138 && ${screen_cmd} zombie dr \
139 && logrotate -f /etc/xen/xen-consoles.logrotate \
140 && ${screen_cmd} logfile /var/log/xen-consoles/%t.log \
141 && ${screen_cmd} logfile flush ${SCREEN_LOG_INTERVAL:-1} \
142 && ${screen_cmd} log on \
143 && ${screen_cmd} deflog on ) >/dev/null
144 if [[ $? -ne 0 ]] ; then
145 eend 1
146 return 1
147 else
148 eend
149 fi
150 fi
151 # Create all domains with config files in AUTODIR.
152 for dom in $(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort); do
153 name=$(get_domname ${dom})
154 if ! is_running ${name} ; then
155 ebegin " Starting domain ${name}"
156 if using_screen ; then
157 ${screen_cmd} screen -t ${name} xm create ${dom} -c
158 else
159 xm create --quiet ${dom}
160 fi
161 eend $?
162 else
163 einfo " Not starting domain ${name} - already running"
164 fi
165 done
166 }
167
168 stop() {
169 set_screen_cmd
170
171 einfo "Shutting down Xen domains from ${AUTODIR:=/etc/xen/auto}"
172 # Stop all domains with config files in AUTODIR.
173 DOMAINS="$(ls "${AUTODIR:=/etc/xen/auto}/"* 2>/dev/null | sort -r)"
174
175 if [[ "$PARALLEL_SHUTDOWN" = "yes" ]] ; then
176 for dom in $DOMAINS ; do
177 name=$(get_domname ${dom})
178 if is_running ${name} ; then
179 ebegin " Asking domain ${name} to shutdown in the background..."
180 xm shutdown --wait ${name} >/dev/null &
181 else
182 einfo " Not stopping domain ${name} - not running"
183 fi
184 done
185 einfo " Waiting for shutdown of domains that are still running"
186 wait
187 eend $?
188 else
189 for dom in $DOMAINS ; do
190 name=$(get_domname ${dom})
191 if is_running ${name} ; then
192 ebegin " Waiting for domain ${name} to shutdown"
193 xm shutdown --wait ${name} >/dev/null
194 eend $?
195 else
196 einfo " Not stopping domain ${name} - not running"
197 fi
198 done
199 fi
200 if using_screen ; then
201 if ${screen_cmd} sleep 0 >/dev/null 2>&1 ; then
202 ebegin "Closing screen session ${SCREEN_NAME}"
203 ${screen_cmd} quit
204 eend $?
205 else
206 eend 0
207 fi
208 fi
209 }
210
211 status() {
212 /usr/sbin/xm list
213 }