Eventscripts: 00.ctdb uses $service_state_dir, neaten update_config_from_tdb().
authorMartin Schwenke <martin@meltin.net>
Fri, 17 Dec 2010 05:21:53 +0000 (16:21 +1100)
committerMartin Schwenke <martin@meltin.net>
Tue, 9 Aug 2011 06:45:50 +0000 (16:45 +1000)
This also fixes a bug where update_config_from_tdb() used an incorrect
filename in one place.

Signed-off-by: Martin Schwenke <martin@meltin.net>
config/events.d/00.ctdb

index bf77b9c9a468373eedd35563555d0856e5a764f8..2111c237883bf24d1abbb8c19e17e1ac02a29e33 100755 (executable)
 . $CTDB_BASE/functions
 loadconfig
 
+ctdb_setup_service_state_dir "ctdb"
+
+#
 update_config_from_tdb() {
-       # Pull optional ctdb configuration data out of config.tdb
-       PUBLICADDRESSESKEY='public_addresses:node#'`ctdb -t 1 xpnn|sed -e "s/.*://"`
-       rm -f $CTDB_VARDIR/state/public_addresses
-       ctdb pfetch config.tdb $PUBLICADDRESSESKEY $CTDB_VARDIR/state/public_addresses 2>/dev/null
-       [ "$?" = "0" ] && [ `stat --format="%s" /etc/ctdb/state/public_addresses` != "0" ] && [ ! -z "$CTDB_PUBLIC_ADDRESSES" ] && {
-               diff $CTDB_VARDIR/state/public_addresses $CTDB_PUBLIC_ADDRESSES >/dev/null 2>/dev/null
-               [ $? = "0" ] || {
-                       echo CTDB public address configuration had been updated.
-                       echo Extracting new configuration from database.
-                       diff $CTDB_VARDIR/state/public_addresses $CTDB_PUBLIC_ADDRESSES
-                       cp $CTDB_VARDIR/state/public_addresses $CTDB_PUBLIC_ADDRESSES
-                       echo Restarting CTDB
-                       service ctdb restart &
-               }
-       }
+
+    # Pull optional ctdb configuration data out of config.tdb
+    _key="public_addresses:node#$(ctdb -t 1 xpnn|sed -e 's/.*://')"
+    _t="$service_state_dir/public_addresses"
+    rm -f "$_t"
+
+    if ctdb pfetch config.tdb "$_key" "$_t" 2>/dev/null && \
+       [ -s "$_t" -a -n "$CTDB_PUBLIC_ADDRESSES"] && \
+       ! cmp -s "$_t" "$CTDB_PUBLIC_ADDRESSES" ; then
+
+       echo "CTDB public address configuration has changed."
+       echo "Extracting new configuration from database."
+       diff "$_t" "$CTDB_PUBLIC_ADDRESSES"
+       cp "$_t" "$CTDB_PUBLIC_ADDRESSES"
+       echo "Restarting CTDB"
+       service ctdb restart &
+    fi
 }
 
 case "$1" in