diff --git a/daemons/daemon-util.in b/daemons/daemon-util.in index 03decbffb0214375a7ba7e09859db130ec95bf36..5bf2c3fa0085286d7473e3a66469d8a499707117 100644 --- a/daemons/daemon-util.in +++ b/daemons/daemon-util.in @@ -45,6 +45,12 @@ if [[ -s $defaults_file ]]; then . $defaults_file fi +# Meant to facilitate use utilities in /etc/rc.d/init.d/functions in case +# start-stop-daemon is not available. +_ignore_error() { + eval "$@" || : +} + _daemon_pidfile() { echo "@LOCALSTATEDIR@/run/ganeti/$1.pid" } @@ -176,9 +182,17 @@ check() { fi local name="$1"; shift - - start-stop-daemon --stop --signal 0 --quiet \ - --pidfile $(_daemon_pidfile $name) + local pidfile=$(_daemon_pidfile $name) + local daemonexec=$(_daemon_executable $name) + + if type -p start-stop-daemon >/dev/null; then + start-stop-daemon --stop --signal 0 --quiet \ + --pidfile $pidfile + else + _ignore_error status \ + -p $pidfile \ + $daemonexec + fi } # Starts a daemon @@ -189,6 +203,9 @@ start() { fi local name="$1"; shift + local pidfile=$(_daemon_pidfile $name) + local usergroup=$(_daemon_usergroup $plain_name) + local daemonexec=$(_daemon_executable $name) if [[ "$name" == ganeti-confd && "@CUSTOM_ENABLE_CONFD@" == False ]]; then @@ -205,11 +222,20 @@ start() { @PKGLIBDIR@/ensure-dirs - start-stop-daemon --start --quiet --oknodo \ - --pidfile $(_daemon_pidfile $name) \ - --startas $(_daemon_executable $name) \ - --chuid $(_daemon_usergroup $plain_name) \ - -- $args "$@" + if type -p start-stop-daemon >/dev/null; then + start-stop-daemon --start --quiet --oknodo \ + --pidfile $pidfile \ + --startas $daemonexec \ + --chuid $usergroup \ + -- $args "$@" + else + # TODO: Find a way to start daemon with a group, until then the group must + # be removed + _ignore_error daemon \ + --pidfile $pidfile \ + --user ${usergroup%:*} \ + $daemonexec $args "$@" + fi } # Stops a daemon @@ -220,9 +246,14 @@ stop() { fi local name="$1"; shift + local pidfile=$(_daemon_pidfile $name) - start-stop-daemon --stop --quiet --oknodo --retry 30 \ - --pidfile $(_daemon_pidfile $name) + if type -p start-stop-daemon >/dev/null; then + start-stop-daemon --stop --quiet --oknodo --retry 30 \ + --pidfile $pidfile + else + _ignore_error killproc -p $pidfile $name + fi } # Starts a daemon if it's not yet running @@ -275,6 +306,12 @@ reload_ssh_keys() { @RPL_SSH_INITD_SCRIPT@ restart } +# Read @SYSCONFDIR@/rc.d/init.d/functions if start-stop-daemon not available +if ! type -p start-stop-daemon >/dev/null && \ + [[ -f @SYSCONFDIR@/rc.d/init.d/functions ]]; then + _ignore_error . @SYSCONFDIR@/rc.d/init.d/functions +fi + if [[ "$#" -lt 1 ]]; then echo "Usage: $0 <action>" >&2 exit 1