247 lines
7.3 KiB
Diff
247 lines
7.3 KiB
Diff
Index: libvirt-0.9.2/tools/Makefile.am
|
|
===================================================================
|
|
--- libvirt-0.9.2.orig/tools/Makefile.am
|
|
+++ libvirt-0.9.2/tools/Makefile.am
|
|
@@ -131,16 +131,17 @@ uninstall-local: uninstall-init
|
|
|
|
if LIBVIRT_INIT_SCRIPT_RED_HAT
|
|
install-init: libvirt-guests.init
|
|
- mkdir -p $(DESTDIR)$(sysconfdir)/rc.d/init.d
|
|
+ mkdir -p $(DESTDIR)$(sysconfdir)/init.d
|
|
$(INSTALL_SCRIPT) libvirt-guests.init \
|
|
- $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirt-guests
|
|
- mkdir -p $(DESTDIR)$(sysconfdir)/sysconfig
|
|
+ $(DESTDIR)$(sysconfdir)/init.d/libvirt-guests
|
|
+ mkdir -p $(DESTDIR)$(localstatedir)/adm/fillup-templates
|
|
$(INSTALL_DATA) $(srcdir)/libvirt-guests.sysconf \
|
|
- $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests
|
|
+ $(DESTDIR)$(localstatedir)/adm/fillup-templates/sysconfig.libvirt-guests
|
|
|
|
uninstall-init:
|
|
- rm -f $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirt-guests \
|
|
- $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests
|
|
+ rm -f $(DESTDIR)$(sysconfdir)/init.d/libvirt-guests \
|
|
+ $(DESTDIR)$(sysconfdir)/sysconfig/libvirt-guests \
|
|
+ $(DESTDIR)$(localstatedir)/adm/fillup-templates/sysconfig.libvirt-guests
|
|
|
|
BUILT_SOURCES += libvirt-guests.init
|
|
|
|
Index: libvirt-0.9.2/tools/libvirt-guests.sysconf
|
|
===================================================================
|
|
--- libvirt-0.9.2.orig/tools/libvirt-guests.sysconf
|
|
+++ libvirt-0.9.2/tools/libvirt-guests.sysconf
|
|
@@ -1,18 +1,28 @@
|
|
+## Path: System/Virtualization/libvirt
|
|
+
|
|
+## Type: string
|
|
+## Default: default
|
|
# URIs to check for running guests
|
|
# example: URIS='default xen:/// vbox+tcp://host/system lxc:///'
|
|
-#URIS=default
|
|
+URIS=default
|
|
|
|
+## Type: string
|
|
+## Default: start
|
|
# action taken on host boot
|
|
# - start all guests which were running on shutdown are started on boot
|
|
# regardless on their autostart settings
|
|
# - ignore libvirt-guests init script won't start any guest on boot, however,
|
|
# guests marked as autostart will still be automatically started by
|
|
# libvirtd
|
|
-#ON_BOOT=start
|
|
+ON_BOOT=start
|
|
|
|
+## Type: integer
|
|
+## Default: 0
|
|
# number of seconds to wait between each guest start
|
|
-#START_DELAY=0
|
|
+START_DELAY=0
|
|
|
|
+## Type: string
|
|
+## Default: suspend
|
|
# action taken on host shutdown
|
|
# - suspend all running guests are suspended using virsh managedsave
|
|
# - shutdown all running guests are asked to shutdown. Please be careful with
|
|
@@ -21,7 +31,9 @@
|
|
# which just needs a long time to shutdown. When setting
|
|
# ON_SHUTDOWN=shutdown, you must also set SHUTDOWN_TIMEOUT to a
|
|
# value suitable for your guests.
|
|
-#ON_SHUTDOWN=suspend
|
|
+ON_SHUTDOWN=suspend
|
|
|
|
+## Type: integer
|
|
+## Default: 120
|
|
# number of seconds we're willing to wait for a guest to shut down
|
|
-#SHUTDOWN_TIMEOUT=0
|
|
+SHUTDOWN_TIMEOUT=120
|
|
Index: libvirt-0.9.2/tools/libvirt-guests.init.sh
|
|
===================================================================
|
|
--- libvirt-0.9.2.orig/tools/libvirt-guests.init.sh
|
|
+++ libvirt-0.9.2/tools/libvirt-guests.init.sh
|
|
@@ -4,10 +4,10 @@
|
|
#
|
|
### BEGIN INIT INFO
|
|
# Provides: libvirt-guests
|
|
-# Required-Start: libvirtd
|
|
-# Required-Stop: libvirtd
|
|
-# Default-Start: 2 3 4 5
|
|
-# Default-Stop: 0 1 6
|
|
+# Required-Start: $network $remote_fs libvirtd
|
|
+# Required-Stop: $network $remote_fs libvirtd
|
|
+# Default-Start: 3 5
|
|
+# Default-Stop: 0 1 2 4 6
|
|
# Short-Description: suspend/resume libvirt guests on shutdown/boot
|
|
# Description: This is a script for suspending active libvirt guests
|
|
# on shutdown and resuming them on next boot
|
|
@@ -24,14 +24,13 @@
|
|
# See http://libvirt.org
|
|
#
|
|
|
|
+. /etc/rc.status
|
|
+rc_reset
|
|
+
|
|
sysconfdir="@sysconfdir@"
|
|
localstatedir="@localstatedir@"
|
|
libvirtd="@sbindir@"/libvirtd
|
|
|
|
-# Source function library.
|
|
-test ! -r "$sysconfdir"/rc.d/init.d/functions ||
|
|
- . "$sysconfdir"/rc.d/init.d/functions
|
|
-
|
|
# Source gettext library.
|
|
# Make sure this file is recognized as having translations: _("dummy")
|
|
. "@bindir@"/gettext.sh
|
|
@@ -50,12 +49,10 @@ test -f "$sysconfdir"/sysconfig/libvirt-
|
|
LISTFILE="$localstatedir"/lib/libvirt/libvirt-guests
|
|
VAR_SUBSYS_LIBVIRT_GUESTS="$localstatedir"/lock/subsys/libvirt-guests
|
|
|
|
-RETVAL=0
|
|
-
|
|
retval() {
|
|
"$@"
|
|
if [ $? -ne 0 ]; then
|
|
- RETVAL=1
|
|
+ rc_failed 1
|
|
return 1
|
|
else
|
|
return 0
|
|
@@ -77,12 +74,31 @@ run_virsh_c() {
|
|
( export LC_ALL=C; run_virsh "$@" )
|
|
}
|
|
|
|
+await_daemon_up()
|
|
+{
|
|
+ uri=$1
|
|
+ i=1
|
|
+ rets=10
|
|
+ run_virsh $uri list > /dev/null 2>&1
|
|
+ while [ $? -ne 0 -a $i -lt $rets ]; do
|
|
+ sleep 1
|
|
+ echo -n .
|
|
+ i=$(($i + 1))
|
|
+ run_virsh $uri list > /dev/null 2>&1
|
|
+ done
|
|
+ if [ $i -eq $rets ]; then
|
|
+ echo $"libvirt-guests unable to connect to URI: $uri"
|
|
+ return 1
|
|
+ fi
|
|
+ return 0
|
|
+}
|
|
+
|
|
list_guests() {
|
|
uri=$1
|
|
|
|
list=$(run_virsh_c "$uri" list)
|
|
if [ $? -ne 0 ]; then
|
|
- RETVAL=1
|
|
+ rc_failed 1
|
|
return 1
|
|
fi
|
|
|
|
@@ -90,7 +106,7 @@ list_guests() {
|
|
for id in $(echo "$list" | awk 'NR > 2 {print $1}'); do
|
|
uuid=$(run_virsh_c "$uri" dominfo "$id" | awk '/^UUID:/{print $2}')
|
|
if [ -z "$uuid" ]; then
|
|
- RETVAL=1
|
|
+ rc_failed 1
|
|
return 1
|
|
fi
|
|
uuids="$uuids $uuid"
|
|
@@ -117,7 +133,7 @@ guest_is_on() {
|
|
guest_running=false
|
|
info=$(run_virsh_c "$uri" dominfo "$uuid")
|
|
if [ $? -ne 0 ]; then
|
|
- RETVAL=1
|
|
+ rc_failed 1
|
|
return 1
|
|
fi
|
|
|
|
@@ -159,6 +175,12 @@ start() {
|
|
continue
|
|
fi
|
|
|
|
+ await_daemon_up $uri
|
|
+ if [ $? -ne 0 ]; then
|
|
+ echo $"Ignoring guests on $uri URI, can't connect"
|
|
+ continue
|
|
+ fi
|
|
+
|
|
eval_gettext "Resuming guests on \$uri URI..."; echo
|
|
for guest in $list; do
|
|
name=$(guest_name "$uri" "$guest")
|
|
@@ -245,7 +267,7 @@ stop() {
|
|
if [ $SHUTDOWN_TIMEOUT -le 0 ]; then
|
|
gettext "Shutdown action requested but SHUTDOWN_TIMEOUT was not set"
|
|
echo
|
|
- RETVAL=6
|
|
+ rc_failed 6
|
|
return
|
|
fi
|
|
fi
|
|
@@ -315,14 +337,13 @@ gueststatus() {
|
|
rh_status() {
|
|
if [ -f "$LISTFILE" ]; then
|
|
gettext "stopped, with saved guests"; echo
|
|
- RETVAL=3
|
|
+ rc_failed 3
|
|
else
|
|
if [ -f "$VAR_SUBSYS_LIBVIRT_GUESTS" ]; then
|
|
gettext "started"; echo
|
|
else
|
|
gettext "stopped, with no saved guests"; echo
|
|
fi
|
|
- RETVAL=0
|
|
fi
|
|
}
|
|
|
|
@@ -366,4 +387,4 @@ case "$1" in
|
|
usage
|
|
;;
|
|
esac
|
|
-exit $RETVAL
|
|
+rc_exit
|
|
Index: libvirt-0.9.2/daemon/Makefile.am
|
|
===================================================================
|
|
--- libvirt-0.9.2.orig/daemon/Makefile.am
|
|
+++ libvirt-0.9.2/daemon/Makefile.am
|
|
@@ -302,16 +302,12 @@ install-logrotate: $(LOGROTATE_CONFS)
|
|
|
|
if LIBVIRT_INIT_SCRIPT_RED_HAT
|
|
install-init: libvirtd.init
|
|
- mkdir -p $(DESTDIR)$(sysconfdir)/rc.d/init.d
|
|
- $(INSTALL_SCRIPT) libvirtd.init \
|
|
- $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd
|
|
- mkdir -p $(DESTDIR)$(sysconfdir)/sysconfig
|
|
+ mkdir -p $(DESTDIR)$(localstatedir)/adm/fillup-templates
|
|
$(INSTALL_DATA) $(srcdir)/libvirtd.sysconf \
|
|
- $(DESTDIR)$(sysconfdir)/sysconfig/libvirtd
|
|
+ $(DESTDIR)$(localstatedir)/adm/fillup-templates/sysconfig.libvirtd
|
|
|
|
uninstall-init:
|
|
- rm -f $(DESTDIR)$(sysconfdir)/rc.d/init.d/libvirtd \
|
|
- $(DESTDIR)$(sysconfdir)/sysconfig/libvirtd
|
|
+ rm -f $(DESTDIR)$(localstatedir)/adm/fillup-templates/sysconfig.libvirtd
|
|
|
|
BUILT_SOURCES += libvirtd.init
|
|
|