commit:     a15fa1a3b12a5372c1b3c8d5df7e489648bef913
Author:     William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Sat May  9 22:56:45 2015 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Mon May 11 14:44:06 2015 +0000
URL:        https://gitweb.gentoo.org/proj/openrc.git/commit/?id=a15fa1a3

Rework supervisor integration framework

The original way of doing this allowed users to change the supervisor in
conf.d/*. This changes this so that the supervisor setup can be done in
the service script itself.

 etc/rc.conf.in          |  6 ------
 sh/openrc-run.sh.in     | 44 +++++++++++++++++++++++++++++++++++++-------
 sh/start-stop-daemon.sh |  8 ++++----
 3 files changed, 41 insertions(+), 17 deletions(-)

diff --git a/etc/rc.conf.in b/etc/rc.conf.in
index 7fcdfe8..69a5cf2 100644
--- a/etc/rc.conf.in
+++ b/etc/rc.conf.in
@@ -111,12 +111,6 @@
 # file, those characters should be replaced with underscores in the
 # variable names as shown below.
 
-# Set rc_supervisor to use a program to monitor your daemons and restart
-# them when they crash.
-# Leaving this undefined uses start-stop-daemon, which is OpenRC's
-# default.
-#rc_supervisor=""
-
 # Some daemons are started and stopped via start-stop-daemon.
 # We can set some things on a per service basis, like the nicelevel.
 #SSD_NICELEVEL="-19"

diff --git a/sh/openrc-run.sh.in b/sh/openrc-run.sh.in
index 4d286b2..67e47b7 100644
--- a/sh/openrc-run.sh.in
+++ b/sh/openrc-run.sh.in
@@ -125,6 +125,42 @@ _status()
        fi
 }
 
+# Template start / stop / status functions
+# These functions select the appropriate function to call from the
+# supervisor modules
+start()
+{
+       local func=ssd_start
+       case "$supervisor" in
+               ?*)
+                       ewarn "Invalid supervisor, \"$supervisor\", using 
start-stop-daemon"
+                       ;;
+       esac
+       $func
+}
+
+stop()
+{
+       local func=ssd_stop
+       case "$supervisor" in
+               ?*)
+                       ewarn "Invalid supervisor, \"$supervisor\", using 
start-stop-daemon"
+                       ;;
+       esac
+       $func
+}
+
+status()
+{
+       local func=ssd_status
+       case "$supervisor" in
+               ?*)
+                       ewarn "Invalid supervisor, \"$supervisor\", using 
start-stop-daemon"
+                       ;;
+       esac
+       $func
+}
+
 yesno $RC_DEBUG && set -x
 
 _conf_d=${RC_SERVICE%/*}/../conf.d
@@ -146,14 +182,8 @@ unset _conf_d
 # Load any system overrides
 sourcex -e "@SYSCONFDIR@/rc.conf"
 
-# load a service supervisor
+# load service supervisor functions
 sourcex "@LIBEXECDIR@/sh/start-stop-daemon.sh"
-if [ -n "$rc_supervisor" ]; then
-       if ! sourcex -e "@LIBEXECDIR@/sh/${rc_supervisor}.sh"; then
-               ewarn "$rc_supervisor is an invalid value for rc_supervisor"
-               ewarn "Using the default."
-       fi
-fi
 
 # Set verbose mode
 if yesno "${rc_verbose:-$RC_VERBOSE}"; then

diff --git a/sh/start-stop-daemon.sh b/sh/start-stop-daemon.sh
index aae6792..6a3e205 100644
--- a/sh/start-stop-daemon.sh
+++ b/sh/start-stop-daemon.sh
@@ -1,8 +1,8 @@
-# Default start / stop / status functions
+# start / stop / status functions for start-stop-daemon
 # Copyright (c) 2007-2009 Roy Marples <r...@marples.name>
 # Released under the 2-clause BSD license.
 
-start()
+ssd_start()
 {
        [ -n "$command" ] || return 0
 
@@ -45,7 +45,7 @@ start()
        return 1
 }
 
-stop()
+ssd_stop()
 {
        local startcommand="$(service_get_value "command")"
        local startpidfile="$(service_get_value "pidfile")"
@@ -65,7 +65,7 @@ stop()
        eend $? "Failed to stop $RC_SVCNAME"
 }
 
-status()
+ssd_status()
 {
        _status
 }

Reply via email to