Eventscript functions: new functions to remember/check if service managed.
authorMartin Schwenke <martin@meltin.net>
Tue, 14 Dec 2010 23:45:17 +0000 (10:45 +1100)
committerMartin Schwenke <martin@meltin.net>
Tue, 9 Aug 2011 06:20:08 +0000 (16:20 +1000)
This was done ad hoc and was badly named.

Signed-off-by: Martin Schwenke <martin@meltin.net>
config/functions

index 312234546e9e998ee8d9f2ff328c2543af54cc35..577471af0ab27435200a9fa46db22220fbb645eb 100755 (executable)
@@ -561,7 +561,39 @@ ctdb_check_counter_equal () {
 
 ctdb_status_dir="$CTDB_VARDIR/status"
 ctdb_fail_dir="$CTDB_VARDIR/failcount"
-ctdb_active_dir="$CTDB_VARDIR/active"
+
+########################################################
+# Managed status history, for auto-start/stop
+
+ctdb_managed_dir="$CTDB_VARDIR/managed_history"
+
+_ctdb_managed_common ()
+{
+    _service_name="${1:-${service_name}}"
+    _ctdb_managed_file="$ctdb_managed_dir/$_service_name"
+}
+
+ctdb_service_managed ()
+{
+    _ctdb_managed_common "$@"
+    mkdir -p "$ctdb_managed_dir"
+    touch "$_ctdb_managed_file"
+}
+
+ctdb_service_unmanaged ()
+{
+    _ctdb_managed_common "$@"
+    rm -f "$_ctdb_managed_file"
+}
+
+is_ctdb_previously_managed_service ()
+{
+    _ctdb_managed_common "$@"
+    [ -f "$_ctdb_managed_file" ]
+}
+
+########################################################
+# Check and set status
 
 log_status_cat ()
 {
@@ -659,20 +691,18 @@ ctdb_start_stop_service ()
 
     [ "$event_name" = "monitor" ] || return 0
 
-    _active="$ctdb_active_dir/$_service_name"
-    if is_ctdb_managed_service "$_service_name"; then
-       if ! [ -e "$_active" ] ; then
+    if is_ctdb_managed_service "$_service_name" ; then
+       if ! is_ctdb_previously_managed_service "$_service_name" ; then
            echo "Starting service $_service_name"
            ctdb_service_start || exit $?
-           mkdir -p "$ctdb_active_dir"
-           touch "$_active"
+           ctdb_service_managed "$_service_name"
            exit 0
        fi
     else
-       if [ -e "$_active" ] ; then
+       if is_ctdb_previously_managed_service "$_service_name" ; then
            echo "Stopping service $_service_name"
            ctdb_service_stop || exit $?
-           rm -f "$_active"
+           ctdb_service_unmanaged "$_service_name"
            exit 0
        fi
     fi