Merge branch 'status-test-2'
[metze/ctdb/wip.git] / config / events.d / 00.ctdb
1 #!/bin/sh
2 ############################
3 # main event script for ctdb
4 #
5 # This script is called with one of the following sets of arguments
6 #     startup    : called when ctdb starts
7 #     shutdown   : called when ctdb shuts down
8 #     takeip     : called when an IP address is taken over
9 #     releaseip  : called when an IP address is released
10 #     recovered  : called when ctdb has finished a recovery event
11
12 . $CTDB_BASE/functions
13 loadconfig
14
15 case "$1" in 
16      startup)
17         # make sure we have a blank state directory for the scripts to work with
18         /bin/rm -rf $CTDB_BASE/state
19         /bin/mkdir -p $CTDB_BASE/state
20
21         # set any tunables from the config file
22         set | grep ^CTDB_SET_ | cut -d_ -f3- | 
23         while read v; do
24             varname=`echo $v | cut -d= -f1`
25             value=`echo $v | cut -d= -f2`
26             ctdb setvar $varname $value || exit 1
27             echo "Set $varname to $value"
28         done || exit 1
29         ;;
30
31     monitor)
32         # monitor that we are not running out of memory
33         [ -z "$CTDB_MONITOR_FREE_MEMORY" ] || {
34                 FREE_MEM=`free -m | grep "buffers/cache" | while read A B C D ;do /bin/echo -n $D ; done`
35                 [ `expr "$FREE_MEM" "<" "$CTDB_MONITOR_FREE_MEMORY"` != "0" ] && {
36                         echo "OOM. Free:$FREE_MEM while CTDB treshold is $CTDB_MONITOR_FREE_MEMORY"
37                         ctdb disable
38                         sleep 3
39                         ctdb shutdown
40                 }
41         }
42         ;;
43
44     *)
45         ctdb_standard_event_handler "$@"
46         ;;
47 esac
48
49 # all OK
50 exit 0