diff options
author | Martin Schwenke <martin@meltin.net> | 2012-08-21 15:52:03 +1000 |
---|---|---|
committer | Martin Schwenke <martin@meltin.net> | 2012-10-10 14:54:53 +1100 |
commit | d33b12a1c56e379c945163f5798e4fa3305d3aa7 (patch) | |
tree | f9335224aebe6a503088b1015f47d398fa1ec71f | |
parent | 9aa9abcc19eeb5986620d052e192ff5deea09d71 (diff) | |
download | samba-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-x | ctdb/config/functions | 30 |
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 |