[PATCH] daemon: Modify init script to check for libvirtd managed with upstart

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On some systems init scripts are installed along with upstart . This may
cause trouble if user tries to restart/stop a instance of libvirtd
managed with upstart with init script.

This patch adds check for a started libvirtd managed by upstart and
fails the init script.

[root@localhost ~]# initctl status libvirtd
libvirtd start/running, process 3001
[root@localhost ~]# service libvirtd restart
Stopping libvirtd daemon: error: libvirtd is managed by upstart and
started, use initctl instead

If libvirtd is not managed by upstart or is stopped, init script works
normaly and allows the user to manage the service.

https://bugzilla.redhat.com/show_bug.cgi?id=728153
---
 daemon/libvirtd.init.in |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/daemon/libvirtd.init.in b/daemon/libvirtd.init.in
index 0697a2b..823fa77 100644
--- a/daemon/libvirtd.init.in
+++ b/daemon/libvirtd.init.in
@@ -43,6 +43,8 @@ LIBVIRTD_CONFIG=
 LIBVIRTD_ARGS=
 KRB5_KTNAME=/etc/libvirt/krb5.tab

+INITCTL_PATH=/sbin/initctl
+
 test -f @sysconfdir@/sysconfig/libvirtd && . @sysconfdir@/sysconfig/libvirtd

 export QEMU_AUDIO_DRV
@@ -56,8 +58,22 @@ fi

 RETVAL=0

+# Check if libvirt is managed by upstart and fail if it's the case
+initctl_check() {
+    if [ -x $INITCTL_PATH ]; then
+        #extract status from upstart
+        LIBVIRTD_UPSTART_STATUS=`$INITCTL_PATH status libvirtd | tr "/" " " | cut -d " " -f 2`
+        if [ $LIBVIRTD_UPSTART_STATUS = "start" ]; then
+            echo "error: libvirtd is managed by upstart and started, use initctl instead"
+            exit 1
+        fi
+    fi
+}
+
 start() {
     echo -n $"Starting $SERVICE daemon: "
+    initctl_check
+
     mkdir -p @localstatedir@/cache/libvirt
     rm -rf @localstatedir@/cache/libvirt/*
     KRB5_KTNAME=$KRB5_KTNAME daemon --pidfile $PIDFILE --check $SERVICE $PROCESS --daemon $LIBVIRTD_CONFIG_ARGS $LIBVIRTD_ARGS
@@ -68,6 +84,7 @@ start() {

 stop() {
     echo -n $"Stopping $SERVICE daemon: "
+    initctl_check

     killproc -p $PIDFILE $PROCESS
     RETVAL=$?
@@ -88,6 +105,7 @@ restart() {

 reload() {
     echo -n $"Reloading $SERVICE configuration: "
+    initctl_check

     killproc -p $PIDFILE $PROCESS -HUP
     RETVAL=$?
-- 
1.7.3.4

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]