summaryrefslogtreecommitdiff
path: root/ctdb/config/events.d/10.external
blob: 3fcb0e105b56b43d48e7c0c81757b4111edf9695 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/sh

# Eventscript for CTDB to cope with externally managed public IP addresses

# If DisableIPFailover is set:
#
# * 10.interface must be disabled.
# * For connection tracking/killing to work this script must be enabled.

[ -n "$CTDB_BASE" ] || \
    export CTDB_BASE=$(cd -P $(dirname "$0") ; dirname "$PWD")

. $CTDB_BASE/functions
loadconfig

if [ -z "$CTDB_PUBLIC_ADDRESSES" ] ; then
    exit 0
fi

if [ ! -f "$CTDB_PUBLIC_ADDRESSES" ] ; then
    if [ "$1" = "init" ]; then
	echo "No public addresses file found. Nothing to do for 10.interfaces.external"
    fi
    exit 0
fi

takeover_assigned_ips ()
{
    ctdb_get_pnn

    ctdb -X ip |
    awk -F'|' '{print $2}' |
    while read ip ; do
	if [ -n "$(ip_maskbits_iface $ip)" ] ; then
	    echo "Assigning $ip to this node ($pnn)"
	    ctdb moveip "$ip" "$pnn"
	fi
    done
}

ctdb_check_args "$@"

case "$1" in
    startup)
	takeover_assigned_ips
	;;
esac

exit 0