Change in vdsm[master]: make vdsmd.init.in adapt to both Fedora and Ubuntu

zhshzhou at linux.vnet.ibm.com zhshzhou at linux.vnet.ibm.com
Mon Apr 1 07:33:56 UTC 2013


Zhou Zheng Sheng has uploaded a new change for review.

Change subject: make vdsmd.init.in adapt to both Fedora and Ubuntu
......................................................................

make vdsmd.init.in adapt to both Fedora and Ubuntu

The patch is on going work of porting VDSM to Ubuntu
http://www.ovirt.org/VDSM_on_Ubuntu

Change-Id: I186743ed7fd345bf150047d4005818e1df3c07fc
Signed-off-by: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>
---
M vdsm/vdsmd.init.in
1 file changed, 75 insertions(+), 24 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/89/13489/1

diff --git a/vdsm/vdsmd.init.in b/vdsm/vdsmd.init.in
index c804ce8..85bc61b 100755
--- a/vdsm/vdsmd.init.in
+++ b/vdsm/vdsmd.init.in
@@ -1,4 +1,4 @@
-#! /bin/sh
+#! /bin/bash
 #
 # Copyright 2006-2010 Red Hat, Inc. and/or its affiliates.
 #
@@ -23,6 +23,16 @@
 
 . @LIBEXECDIR@/ovirt_functions.sh
 
+choosePath() {
+    for P in "$@"; do
+        if [ -e "$P" ]; then
+            echo "$P"
+            return 0
+        fi
+    done
+    echo "$1"
+}
+
 VDSM_BIN=@VDSMDIR@/vdsm
 CONF_FILE=@CONFDIR@/vdsm.conf
 GETCONFITEM=@VDSMDIR@/get-conf-item
@@ -33,7 +43,24 @@
 DOM_METADATA_BACKUP_DIR=/var/log/vdsm/backup
 CORE_PATTERN=/proc/sys/kernel/core_pattern
 QEMU_DUMP_PATH="/var/log/core"
-NEEDED_SERVICES="iscsid multipathd ntpd wdmd sanlock network"
+SERVICE="$(choosePath /sbin/service /usr/sbin/service)"
+LOCK_PATH="$(choosePath /var/lock/subsys /var/lock)"
+
+ISCSID=iscsid
+LIBVIRTD=libvirtd
+MULTIPATHD=multipathd
+NETWORK=network
+NTPD=ntpd
+SANLOCK=sanlock
+WDMD=wdmd
+if grep -i ubuntu /etc/*-release >/dev/null 2>&1; then
+    ISCSID=open-iscsi
+    LIBVIRTD=libvirt-bin
+    MULTIPATHD=multipath-tools
+    NETWORK=netowking
+    NTPD=ntp
+fi
+NEEDED_SERVICES="$ISCSID $MULTIPATHD $NTPD $WDMD $SANLOCK $NETWORK"
 CONFLICTING_SERVICES="libvirt-guests"
 
 # trigger for reconfiguration
@@ -41,7 +68,7 @@
 
 LCONF=/etc/libvirt/libvirtd.conf
 QCONF=/etc/libvirt/qemu.conf
-LDCONF=/etc/sysconfig/libvirtd
+LDCONF="$(choosePath /etc/sysconfig/libvirtd /etc/default/libvirt-bin)"
 QLCONF=/etc/libvirt/qemu-sanlock.conf
 
 is_coredump=`$GETCONFITEM $CONF_FILE vars core_dump_enable false | tr A-Z a-z`
@@ -49,10 +76,17 @@
 
 SYSTEMCTL_SKIP_REDIRECT=true
 
-. /etc/init.d/functions
-
-log_failure_msg() { echo -n "$@"; failure "$@"; echo; }
-log_success_msg() { echo -n "$@"; success "$@"; echo; }
+if [ -e /etc/init.d/functions ]; then
+    . /etc/init.d/functions
+    log_failure_msg() { echo -n "$@"; failure "$@"; echo; }
+    log_success_msg() { echo -n "$@"; success "$@"; echo; }
+else
+    . /lib/lsb/init-functions
+    # log_failure_msg and log_success_msg are defined already
+    # in /lib/lsb/init-functions
+    failure() { local rc=$?; log_failure_msg; return "$rc"; }
+    success() { log_success_msg; return 0; }
+fi
 
 mk_data_center() {
     local dc
@@ -122,13 +156,13 @@
 
     for srv in $CONFLICTING_SERVICES
     do
-        /sbin/chkconfig $srv off
-        if /sbin/service $srv status > /dev/null 2>&1;
+        disable_service_sysv $srv
+        if "$SERVICE" $srv status > /dev/null 2>&1;
         then
             if [ "$srv" == "libvirt-guests" ]; then
-                /bin/rm -f /var/lock/subsys/libvirt-guests
+                /bin/rm -f "$LOCK_PATH/libvirt-guests"
             else
-                /sbin/service $srv stop
+                "$SERVICE" $srv stop
             fi
         fi
     done
@@ -145,10 +179,10 @@
 
     for srv in $NEEDED_SERVICES
     do
-        if ! /sbin/service $srv status > /dev/null 2>&1;
+        if ! "$SERVICE" $srv status > /dev/null 2>&1;
         then
             echo "Starting $srv..."
-            /sbin/service $srv start
+            "$SERVICE" $srv start
             ret_val=$?
             if [ $ret_val -ne 0 ]
             then
@@ -158,7 +192,7 @@
         fi
     done
 
-    /sbin/service iscsid force-start
+    "$SERVICE" $ISCSID force-start || true
 }
 
 test_lo() {
@@ -216,7 +250,7 @@
     # Remove configuration created by vdsm (old "# by vdsm" and the new format)
     # Argument: configuration file that will be inspected
     remove_vdsm_conf() {
-        sed -i --copy -e "/${start_conf_section}/,/${end_conf_section}/d" \
+        sed -i -e "/${start_conf_section}/,/${end_conf_section}/d" \
             -e "/$by_vdsm/d" "$@"
     }
 
@@ -363,7 +397,7 @@
     ovirt_store_config "$lconf" "$qconf" "$ldconf" "$llogr"
 
     if libvirt_should_use_upstart; then
-        /sbin/initctl restart libvirtd 2>/dev/null || :
+        /sbin/initctl restart $LIBVIRTD 2>/dev/null || :
     else
         /bin/systemctl restart libvirtd.service
     fi
@@ -394,12 +428,22 @@
     configure_libvirt $args
 }
 
+disable_service_sysv() {
+    if [ -e /sbin/chkconfig ]; then
+        /sbin/chkconfig "$1" off
+    elif [ -e /usr/sbin/update-rc.d ]; then
+        /usr/sbin/update-rc.d "$1" disable
+    else
+        false
+    fi
+}
+
 stop_libvirtd_sysv() {
     # stop libvirt SysV service if we intend to configure upstart
 
-    if libvirt_should_use_upstart && ! [[ -f /etc/init/libvirtd.conf ]]; then
-        /sbin/chkconfig libvirtd off
-        /sbin/service libvirtd stop
+    if libvirt_should_use_upstart && ! [[ -f /etc/init/"$LIBVIRTD".conf ]]; then
+        disable_service_sysv $LIBVIRTD
+        "$SERVICE" $LIBVIRTD stop
     fi
 }
 
@@ -408,7 +452,7 @@
     local startout
 
     if ! libvirt_should_use_upstart; then
-        /sbin/service libvirtd start
+        "$SERVICE" $LIBVIRTD start
         return
     fi
 
@@ -422,7 +466,7 @@
         /sbin/initctl reload-configuration
     fi
 
-    startout=`/sbin/initctl start libvirtd 2>&1`
+    startout=`/sbin/initctl start $LIBVIRTD 2>&1`
     if [[ "$?" -eq 0 || "$startout" =~ .*already\ running.* ]];
     then
         return 0
@@ -505,12 +549,19 @@
     echo $"Starting up vdsm daemon: "
     local vdsm_nice=`$GETCONFITEM $CONF_FILE vars vdsm_nice -5`
 
+    if type daemon >/dev/null 2>&1; then
+        RUNDAEMON="daemon --user=vdsm"
+    elif type start_daemon >/dev/null 2>&1; then
+        RUNDAEMON="start_daemon -n $vdsm_nice -- /usr/bin/sudo -u vdsm"
+    else
+        RUNDAEMON="false"
+    fi
     LIBVIRT_LOG_FILTERS=`$GETCONFITEM $CONF_FILE vars libvirt_log_filters "1:libvirt 1:remote"` \
     LIBVIRT_LOG_OUTPUTS=`$GETCONFITEM $CONF_FILE vars libvirt_log_outputs "1:file:/var/log/vdsm/libvirt.log"` \
-    LC_ALL=C NICELEVEL=$vdsm_nice daemon --user=vdsm @VDSMDIR@/respawn --minlifetime 10 --daemon --masterpid $RESPAWNPIDFILE $VDSM_BIN
+    LC_ALL=C NICELEVEL=$vdsm_nice $RUNDAEMON @VDSMDIR@/respawn --minlifetime 10 --daemon --masterpid $RESPAWNPIDFILE $VDSM_BIN
     RETVAL=$?
     [ "$RETVAL" -eq 0 ] && log_success_msg $"$prog start" || log_failure_msg $"$prog start"
-    [ "$RETVAL" -eq 0 ] && touch /var/lock/subsys/vdsmd
+    [ "$RETVAL" -eq 0 ] && touch "$LOCK_PATH/vdsmd"
 }
 
 stop() {
@@ -525,7 +576,7 @@
         killproc -p $PIDFILE -d 2
         RETVAL=$?
         [ "$RETVAL" -eq 0 ] && log_success_msg $"$prog stop" || log_failure_msg $"$prog stop"
-        [ "$RETVAL" -eq 0 ] && rm -f /var/lock/subsys/vdsmd
+        [ "$RETVAL" -eq 0 ] && rm -f "LOCK_PATH/vdsmd"
     fi
     python @VDSMDIR@/hooks.pyc after_vdsm_stop
     return $RETVAL


--
To view, visit http://gerrit.ovirt.org/13489
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I186743ed7fd345bf150047d4005818e1df3c07fc
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Zhou Zheng Sheng <zhshzhou at linux.vnet.ibm.com>


More information about the vdsm-patches mailing list