Commit e24999ab authored by Guido Trotter's avatar Guido Trotter
Browse files

example ethers hook: use lockfile-progs



Rather than writing our own locking routing, use the one implemented by
the lockfile-create program.
Signed-off-by: default avatarGuido Trotter <ultrotter@google.com>
Reviewed-by: default avatarIustin Pop <iustin@google.com>
parent d98b37a1
......@@ -35,9 +35,13 @@
# bridge to /etc/ethers.
TARGET_BRIDGE="br0"
DAEMON_PID_FILE="/var/run/dnsmasq.pid"
# In order to handle concurrent execution of this lock, we use the $LOCKFILE.
# LOCKFILE_CREATE and LOCKFILE_REMOVE are the path names for the lockfile-progs
# programs which we use as helpers.
LOCKFILE="/var/lock/ganeti_ethers.lock"
LOCKTIMEOUT=10
LOCKSLEEP=2
LOCKFILE_CREATE="/usr/bin/lockfile-create"
LOCKFILE_REMOVE="/usr/bin/lockfile-remove"
hooks_path=$GANETI_HOOKS_PATH
[ -n "$hooks_path" ] || exit 1
......@@ -46,18 +50,8 @@ instance=$GANETI_INSTANCE_NAME
nic_count=$GANETI_INSTANCE_NIC_COUNT
acquire_lockfile() {
NOW=$(date +%s)
TIMEOUT=$(($NOW + $LOCKTIMEOUT))
while ! ( set -o noclobber; echo "$$" > $LOCKFILE) 2> /dev/null ; do
NOW=$(date +%s)
if [ $NOW -ge $TIMEOUT ]; then
logger -s "Cannot acquire lockfile for ethers update, giving up"
exit 1
fi
logger -s "Cannot acquire lockfile for ethers update, waiting"
sleep $LOCKSLEEP
done
trap "rm -f $LOCKFILE" EXIT
$LOCKFILE_CREATE -l $LOCKFILE || exit 1
trap "$LOCKFILE_REMOVE -l $LOCKFILE" EXIT
}
update_ethers_from_new() {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment