app-emulation/libvirt: improve new init scripts
authorThomas D <whissi@whissi.de>
Fri, 11 Sep 2015 13:06:48 +0000 (08:06 -0500)
committerDoug Goldstein <cardoe@gentoo.org>
Fri, 11 Sep 2015 14:25:08 +0000 (09:25 -0500)
Improvement to the new init scripts to use more bits from runscripts
instead of rolling our own.

Signed-off-by: Doug Goldstein <cardoe@gentoo.org>
app-emulation/libvirt/files/libvirtd.confd-r5
app-emulation/libvirt/files/libvirtd.init-r15

index 3463cb95f27548245ecf6fcd4862a70abffc8180..c326531d469fcf9eec64db85da71dfb3089ac1a2 100644 (file)
@@ -6,6 +6,11 @@
 # for libvirtd, you may override this. Or if you only use libvirtd locally.
 rc_need="net"
 
+# The termination timeout (start-stop-daemon parameter "retry") ensures
+# that the service will be terminated within a given time (25 + 5 seconds
+# per default) when you are stopping the service.
+#LIBVIRTD_TERMTIMEOUT="TERM/25/KILL/5"
+
 # LIBVIRTD_OPTS
 # You may want to add '--listen' to have libvirtd listen for tcp/ip connections
 # if you want to use libvirt for remote control
index 7b95bd8660150cfa900382f8c6b56518770e1ed9..0c529bd7e78b81c05eb817d833e2d3401868e345 100644 (file)
@@ -1,35 +1,38 @@
 #!/sbin/runscript
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
 
 description="Virtual Machine Management daemon (libvirt)"
 
+LIBVIRTD_OPTS=${LIBVIRTD_OPTS:-"${LIBVIRTD_OPTS}"}
+LIBVIRTD_TIMEOUT=${LIBVIRTD_TERMTIMEOUT:-"TERM/25/KILL/5"}
+
+command="/usr/sbin/libvirtd"
+command_args="-d ${LIBVIRTD_OPTS}"
+start_stop_daemon_args="--env KRB5_KTNAME=/etc/libvirt/krb5.tab"
+pidfile="/var/run/libvirtd.pid"
+retry="${LIBVIRTD_TERMTIMEOUT}"
+
 depend() {
        USE_FLAG_FIREWALLD
        use USE_FLAG_AVAHI USE_FLAG_ISCSI USE_FLAG_RBD dbus virtlockd
        after ntp-client ntpd nfs nfsmount portmap rpc.statd iptables ip6tables ebtables corosync sanlock cgconfig xenconsoled
 }
 
-start() {
+start_pre() {
        # Test configuration directories in /etc/libvirt/ to be either not
        # present or a directory, i.e. not a regular file, bug #532892
+       local has_errors=0
+       ebegin "Checking for suitable directories in \"/etc/libvirt\""
+
        for dir in lxc nwfilter qemu storage; do
                if [ -f /etc/libvirt/$dir ]; then
+                       has_errors=1
                        eerror "/etc/libvirt/$dir was created as a regular file. It must be either"
                        eerror "a directory or not present for libvirtd to start up successfully."
-                       return 1
                fi
        done
 
-       ebegin "Starting libvirtd"
-       start-stop-daemon --start \
-               --env KRB5_KTNAME=/etc/libvirt/krb5.tab \
-               --exec /usr/sbin/libvirtd --pidfile=/var/run/libvirtd.pid \
-               -- -d ${LIBVIRTD_OPTS}
-       eend $?
-}
-
-stop() {
-       ebegin "Stopping libvirtd without shutting down your VMs"
-       start-stop-daemon --stop --quiet --exec \
-               /usr/sbin/libvirtd --pidfile=/var/run/libvirtd.pid
-       eend $?
+       eend ${has_errors} "Please correct the error(s) above"
 }