Eventscripts: Add service-start and service-stop pseudo-events
authorMartin Schwenke <martin@meltin.net>
Tue, 21 Aug 2012 05:52:03 +0000 (15:52 +1000)
committerMartin Schwenke <martin@meltin.net>
Wed, 10 Oct 2012 03:54:53 +0000 (14:54 +1100)
Signed-off-by: Martin Schwenke <martin@meltin.net>
(This used to be ctdb commit be4ad110ede9981b181ac28f31ffd855a879d5df)

ctdb/config/functions

index e2a9b03c8434e42db2233bba6e3a21b8125cddae..32c6f4a14a72408b83d8b2fb94ec27822efeb58f 100755 (executable)
@@ -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