summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Schwenke <martin@meltin.net>2012-08-21 15:52:03 +1000
committerMartin Schwenke <martin@meltin.net>2012-10-10 14:54:53 +1100
commitd33b12a1c56e379c945163f5798e4fa3305d3aa7 (patch)
treef9335224aebe6a503088b1015f47d398fa1ec71f
parent9aa9abcc19eeb5986620d052e192ff5deea09d71 (diff)
downloadsamba-d33b12a1c56e379c945163f5798e4fa3305d3aa7.tar.gz
samba-d33b12a1c56e379c945163f5798e4fa3305d3aa7.tar.xz
samba-d33b12a1c56e379c945163f5798e4fa3305d3aa7.zip
Eventscripts: Add service-start and service-stop pseudo-events
Signed-off-by: Martin Schwenke <martin@meltin.net> (This used to be ctdb commit be4ad110ede9981b181ac28f31ffd855a879d5df)
-rwxr-xr-xctdb/config/functions30
1 files changed, 28 insertions, 2 deletions
diff --git a/ctdb/config/functions b/ctdb/config/functions
index e2a9b03c84..32c6f4a14a 100755
--- a/ctdb/config/functions
+++ b/ctdb/config/functions
@@ -1286,11 +1286,37 @@ is_ctdb_managed_service ()
ctdb_start_stop_service ()
{
+ _service_name="${1:-${service_name}}"
+
+ # Allow service-start/service-stop pseudo-events to start/stop
+ # services when we're not auto-starting/stopping and we're not
+ # monitoring.
+ case "$event_name" in
+ service-start)
+ if is_ctdb_managed_service "$_service_name" ; then
+ die 'service-start event not permitted when service is managed'
+ fi
+ if [ "$CTDB_SERVICE_AUTOSTARTSTOP" = "yes" ] ; then
+ die 'service-start event not permitted with $CTDB_SERVICE_AUTOSTARTSTOP = yes'
+ fi
+ ctdb_service_start "$_service_name"
+ exit $?
+ ;;
+ service-stop)
+ if is_ctdb_managed_service "$_service_name" ; then
+ die 'service-stop event not permitted when service is managed'
+ fi
+ if [ "$CTDB_SERVICE_AUTOSTARTSTOP" = "yes" ] ; then
+ die 'service-stop event not permitted with $CTDB_SERVICE_AUTOSTARTSTOP = yes'
+ fi
+ ctdb_service_stop "$_service_name"
+ exit $?
+ ;;
+ esac
+
# Do nothing unless configured to...
[ "$CTDB_SERVICE_AUTOSTARTSTOP" = "yes" ] || return 0
- _service_name="${1:-${service_name}}"
-
[ "$event_name" = "monitor" ] || return 0
if is_ctdb_managed_service "$_service_name" ; then