summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronniesahlberg@gmail.com>2011-08-10 15:36:20 +1000
committerRonnie Sahlberg <ronniesahlberg@gmail.com>2011-08-10 15:36:20 +1000
commit65d5c512784ab300fd6832f15441302a7362a69a (patch)
tree2e7368de5b2136137c41bd550ee144c2c5ed4b17
parentf6508e8cb7393eacd668e3ec26d9d9287afc9f22 (diff)
parent06f1004da48149ae9422ec4a8e0ce0694f31b42b (diff)
downloadsamba-65d5c512784ab300fd6832f15441302a7362a69a.tar.gz
samba-65d5c512784ab300fd6832f15441302a7362a69a.tar.xz
samba-65d5c512784ab300fd6832f15441302a7362a69a.zip
Merge remote branch 'martins/eventscript.00.ctdb'
(This used to be ctdb commit 6c287861e780ba985e7ae7a61c1ee462b925e09e)
-rwxr-xr-xctdb/config/events.d/00.ctdb37
1 files changed, 22 insertions, 15 deletions
diff --git a/ctdb/config/events.d/00.ctdb b/ctdb/config/events.d/00.ctdb
index 9df5af447c..31f8fdc79b 100755
--- a/ctdb/config/events.d/00.ctdb
+++ b/ctdb/config/events.d/00.ctdb
@@ -12,28 +12,35 @@
. $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
init)
# make sure we have a blank state directory for the scripts to work with
rm -rf $CTDB_VARDIR/state
+ # Look at the pattern - this should not be -rf!!!
+ rm -f $ctdb_managed_dir/*
mkdir -p $CTDB_VARDIR/state || {
ret=$?
echo "mkdir -p $CTDB_VARDIR/state - failed - $ret"