diff options
Diffstat (limited to 'extras/ganesha/ocf/ganesha_mon')
-rw-r--r-- | extras/ganesha/ocf/ganesha_mon | 110 |
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 |