Viewing: Lustre.ha_v2
#!/usr/bin/bash
#
# Lustre - Heartbeat R1 Resource Agent for the Lustre file system
#
# Usage: Lustre <resource-name> start|stop|status
# where <resource-name> has the form "<hostname>-targets"
#
warn ()
{
if [ -e /etc/logd.cf ] && [ -x /usr/sbin/ha_logger ]; then
/usr/sbin/ha_logger -t heartbeat "Lustre: $*"
elif [ -x /usr/bin/logger ]; then
/usr/bin/logger -t heartbeat "Lustre: $*"
elif [ -x /bin/logger ]; then
/bin/logger -t heartbeat "Lustre: $*"
else
echo "Lustre: $*"
fi
}
die ()
{
warn "$*"
exit 1
}
if [ $# != 2 ]; then
die "wrong number of arguments: $*"
fi
if ! [ "$2" == "start" -o "$2" == "stop" -o "$2" == "status" ]; then
die "bad action arg[2]: $*"
fi
if ! [ -x /usr/sbin/ldev ]; then
die "/usr/sbin/ldev is missing or not executable"
fi
if ! [ -x /etc/init.d/lustre ]; then
die "/etc/init.d/lustre is missing or not executable"
fi
action=$2
if [ "`uname -n`-targets" == "$1" ]; then
service=local
elif [ "`/usr/sbin/ldev -p`-targets" == "$1" ]; then
service=foreign
else
die "bad service arg[1]: $*"
fi
# Until multi-mount protect is implemented for ZFS we allow heartbeat to
# force import a pool. This is required because ZFS will not allow you to
# import a pool on a new host unless you have cleanly exported it.
export ZPOOL_IMPORT_ARGS='-f'
# N.B. If status action reports "running", this must pass through to
# heartbeat unmodified. Otherwise, stdout/stderr is discarded by heartbeat,
# so if we want to log diagnostic output from init scripts, we have to
# redirect it here.
warn /etc/init.d/lustre $action $service
tmpout=`mktemp` || die "mktemp failed"
/etc/init.d/lustre $action $service >$tmpout
result=$?
cat $tmpout | while read line; do
echo "$line"
warn "$line"
done
rm -f $tmpout
exit $result