aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hubbs <w.d.hubbs@gmail.com>2015-05-09 17:56:45 -0500
committerWilliam Hubbs <w.d.hubbs@gmail.com>2015-05-11 09:44:06 -0500
commita15fa1a3b12a5372c1b3c8d5df7e489648bef913 (patch)
tree1a30f9aab44612a238a0529794c51fc34b2517de
parent0198affc742297b6e203bbcecc14436682119cc7 (diff)
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.
-rw-r--r--etc/rc.conf.in6
-rw-r--r--sh/openrc-run.sh.in44
-rw-r--r--sh/start-stop-daemon.sh8
3 files changed, 41 insertions, 17 deletions
diff --git a/etc/rc.conf.in b/etc/rc.conf.in
index 7fcdfe87..69a5cf24 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 4d286b2a..67e47b75 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 aae67920..6a3e2050 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 <roy@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
}