summaryrefslogtreecommitdiffstats
path: root/extras/ganesha/ocf/ganesha_mon
diff options
context:
space:
mode:
Diffstat (limited to 'extras/ganesha/ocf/ganesha_mon')
-rw-r--r--extras/ganesha/ocf/ganesha_mon110
1 files changed, 72 insertions, 38 deletions
diff --git a/extras/ganesha/ocf/ganesha_mon b/extras/ganesha/ocf/ganesha_mon
index c8e7de9c45e..f55cf7f2af3 100644
--- a/extras/ganesha/ocf/ganesha_mon
+++ b/extras/ganesha/ocf/ganesha_mon
@@ -29,14 +29,21 @@
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
-if [ -n "$OCF_DEBUG_LIBRARY" ]; then
- . $OCF_DEBUG_LIBRARY
+if [ -n "${OCF_DEBUG_LIBRARY}" ]; then
+ . ${OCF_DEBUG_LIBRARY}
else
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
fi
-GRACE_DELAY=7
+# Defaults
+OCF_RESKEY_ganesha_active_default="ganesha-active"
+OCF_RESKEY_grace_active_default="grace-active"
+OCF_RESKEY_grace_delay_default="5"
+
+: ${OCF_RESKEY_ganesha_active=${OCF_RESKEY_ganesha_active_default}}
+: ${OCF_RESKEY_grace_active=${OCF_RESKEY_grace_active_default}}
+: ${OCF_RESKEY_grace_delay=${OCF_RESKEY_grace_delay_default}}
ganesha_meta_data() {
cat <<END
@@ -53,19 +60,37 @@ resource agent for nfs-ganesha.
<shortdesc lang="en">Manages the user-space nfs-ganesha NFS server</shortdesc>
<parameters>
+<parameter name="ganesha_active">
+<longdesc lang="en">NFS-Ganesha daemon active attribute</longdesc>
+<shortdesc lang="en">NFS-Ganesha daemon active attribute</shortdesc>
+<content type="string" default="ganesha-active" />
+</parameter>
+<parameter name="grace_active">
+<longdesc lang="en">NFS-Ganesha grace active attribute</longdesc>
+<shortdesc lang="en">NFS-Ganesha grace active attribute</shortdesc>
+<content type="string" default="grace-active" />
+</parameter>
+<parameter name="grace_delay">
+<longdesc lang="en">
+NFS-Ganesha grace delay.
+When changing this, adjust the ganesha_grace RA's monitor interval to match.
+</longdesc>
+<shortdesc lang="en">NFS-Ganesha grace delay</shortdesc>
+<content type="string" default="5" />
+</parameter>
</parameters>
<actions>
<action name="start" timeout="40s" />
<action name="stop" timeout="40s" />
-<action name="status" depth="0" timeout="20s" interval="10s" />
+<action name="status" timeout="20s" interval="60s" />
<action name="monitor" depth="0" timeout="10s" interval="10s" />
<action name="meta-data" timeout="20s" />
</actions>
</resource-agent>
END
-return $OCF_SUCCESS
+return ${OCF_SUCCESS}
}
ganesha_mon_usage() {
@@ -73,12 +98,12 @@ ganesha_mon_usage() {
}
# Make sure meta-data and usage always succeed
-case $__OCF_ACTION in
+case ${__OCF_ACTION} in
meta-data) ganesha_meta_data
- exit $OCF_SUCCESS
+ exit ${OCF_SUCCESS}
;;
usage|help) ganesha_usage
- exit $OCF_SUCCESS
+ exit ${OCF_SUCCESS}
;;
*)
;;
@@ -86,12 +111,15 @@ esac
ganesha_mon_start()
{
- return $OCF_SUCCESS
+ ocf_log debug "ganesha_mon_start"
+ ganesha_mon_monitor
+ return $OCF_SUCCESS
}
ganesha_mon_stop()
{
- return $OCF_SUCCESS
+ ocf_log debug "ganesha_mon_stop"
+ return $OCF_SUCCESS
}
ganesha_mon_monitor()
@@ -108,50 +136,56 @@ ganesha_mon_monitor()
if [ -e ${pid_file} -a \
-d /proc/$(cat ${pid_file} ) ]; then
- ( pcs resource delete ${short_host}-dead_ip-1 > /dev/null 2>&1 )
- attrd_updater -n ganesha-active -v 1
+ attrd_updater -n ${OCF_RESKEY_ganesha_active} -v 1
if [ $? -ne 0 ]; then
- logger "warning: attrd_updater -n ganesha-active -v 1 failed"
+ ocf_log info "warning: attrd_updater -n ${OCF_RESKEY_ganesha_active} -v 1 failed"
fi
- else
- ( pcs resource create ${short_host}-dead_ip-1 ocf:heartbeat:Dummy > /dev/null 2>&1 )
+ attrd_updater -n ${OCF_RESKEY_grace_active} -v 1
if [ $? -ne 0 ]; then
- logger "warning: pcs resource create ${short_host}-dead_ip-1 ocf:heartbeat:Dummy failed"
+ ocf_log info "warning: attrd_updater -n ${OCF_RESKEY_grace_active} -v 1 failed"
fi
- # The ${this-node}-dead_ip-1 resource is used to indicate
- # that this ganesha.nfsd has died.
- # VIP fail-over is then triggered by clearing the
- # ganesha-active node attribute on this node.
- #
- # Meanwhile the ganesha_grace monitor() runs every 5
- # seconds. We need to allow time for it to run and put
- # the remaining ganesha.nfsds into grace before initiating
- # the VIP fail-over.
- sleep ${GRACE_DELAY}
-
- attrd_updater -D -n ganesha-active
- if [ $? -ne 0 ]; then
- logger "warning: attrd_updater -D -n ganesha-active failed"
- fi
+ return ${OCF_SUCCESS}
fi
- return $OCF_SUCCESS
+ # VIP fail-over is triggered by clearing the
+ # ganesha-active node attribute on this node.
+ #
+ # Meanwhile the ganesha_grace notify() runs when its
+ # nfs-grace resource is disabled on a node; which
+ # is triggered by clearing the ganesha-grace node
+ # attribute on this node.
+ #
+ # We need to allow time for it to run and put
+ # the remaining ganesha.nfsds into grace before
+ # initiating the VIP fail-over.
+
+ attrd_updater -D -n ${OCF_RESKEY_grace_active}
+ if [ $? -ne 0 ]; then
+ ocf_log info "warning: attrd_updater -D -n ${OCF_RESKEY_grace_active} failed"
+ fi
+
+ sleep ${OCF_RESKEY_grace_delay}
+
+ attrd_updater -D -n ${OCF_RESKEY_ganesha_active}
+ if [ $? -ne 0 ]; then
+ ocf_log info "warning: attrd_updater -D -n ${OCF_RESKEY_ganesha_active} failed"
+ fi
+
+ return ${OCF_SUCCESS}
}
ganesha_mon_validate()
{
- return $OCF_SUCCESS
+ return ${OCF_SUCCESS}
}
ganesha_mon_validate
-# logger "ganesha_mon ${OCF_RESOURCE_INSTANCE} $__OCF_ACTION"
-
# Translate each action into the appropriate function call
-case $__OCF_ACTION in
+case ${__OCF_ACTION} in
start) ganesha_mon_start
;;
stop) ganesha_mon_stop
@@ -159,13 +193,13 @@ stop) ganesha_mon_stop
status|monitor) ganesha_mon_monitor
;;
*) ganesha_mon_usage
- exit $OCF_ERR_UNIMPLEMENTED
+ exit ${OCF_ERR_UNIMPLEMENTED}
;;
esac
rc=$?
# The resource agent may optionally log a debug message
-ocf_log debug "${OCF_RESOURCE_INSTANCE} $__OCF_ACTION returned $rc"
+ocf_log debug "${OCF_RESOURCE_INSTANCE} ${__OCF_ACTION} returned $rc"
exit $rc