diff options
| author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2017-01-06 10:37:54 -0500 | 
|---|---|---|
| committer | Kaleb KEITHLEY <kkeithle@redhat.com> | 2017-01-17 16:53:30 -0800 | 
| commit | c822e354e16646adf18bbc5123798663faa543b2 (patch) | |
| tree | f22b87c6711639135f991293f5c406f06466ec92 /extras/ganesha/ocf | |
| parent | 7b61434257f68749bfceee481fa505de7f945747 (diff) | |
storhaug HA: first step, remove resource agents and setup script
resource agents and setup script(s) are now in storhaug
This is a phased switch-over to storhaug. Ultimately all components
here should be (re)moved to the storhaug project and its packages.
But for now some will linger here.
Change-Id: Ied3956972b14b14d8a76e22c583b1fe25869f8e7
BUG: 1410843
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/16349
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'extras/ganesha/ocf')
| -rw-r--r-- | extras/ganesha/ocf/Makefile.am | 12 | ||||
| -rw-r--r-- | extras/ganesha/ocf/ganesha_grace | 222 | ||||
| -rw-r--r-- | extras/ganesha/ocf/ganesha_mon | 235 | ||||
| -rw-r--r-- | extras/ganesha/ocf/ganesha_nfsd | 168 | 
4 files changed, 0 insertions, 637 deletions
diff --git a/extras/ganesha/ocf/Makefile.am b/extras/ganesha/ocf/Makefile.am deleted file mode 100644 index 6aed9548a0f..00000000000 --- a/extras/ganesha/ocf/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -EXTRA_DIST= ganesha_grace ganesha_mon ganesha_nfsd - -# The root of the OCF resource agent hierarchy -# Per the OCF standard, it's always "lib", -# not "lib64" (even on 64-bit platforms). -ocfdir = $(prefix)/lib/ocf - -# The provider directory -radir = $(ocfdir)/resource.d/heartbeat - -ra_SCRIPTS = ganesha_grace ganesha_mon ganesha_nfsd - diff --git a/extras/ganesha/ocf/ganesha_grace b/extras/ganesha/ocf/ganesha_grace deleted file mode 100644 index cb6dcc4e867..00000000000 --- a/extras/ganesha/ocf/ganesha_grace +++ /dev/null @@ -1,222 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2014 Anand Subramanian anands@redhat.com -# Copyright (c) 2015 Red Hat Inc. -#                    All Rights Reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of version 2 of the GNU General Public License as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Further, this software is distributed without any warranty that it is -# free of the rightful claim of any third person regarding infringement -# or the like.  Any license provided herein, whether implied or -# otherwise, applies only to this software file.  Patent licenses, if -# any, provided herein do not apply to combinations of this program with -# other software, or any other product whatsoever. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. -# -# - -# Initialization: -: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs - -if [ -n "$OCF_DEBUG_LIBRARY" ]; then -	. $OCF_DEBUG_LIBRARY -else -	: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -	. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs -fi - -OCF_RESKEY_grace_active_default="grace-active" -: ${OCF_RESKEY_grace_active=${OCF_RESKEY_grace_active_default}} - -ganesha_meta_data() { -	cat <<END -<?xml version="1.0"?> -<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> -<resource-agent name="ganesha_grace"> -<version>1.0</version> - -<longdesc lang="en"> -This Linux-specific resource agent acts as a dummy -resource agent for nfs-ganesha. -</longdesc> - -<shortdesc lang="en">Manages the user-space nfs-ganesha NFS server</shortdesc> - -<parameters> -<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> -</parameters> - -<actions> -<action name="start"   timeout="40s" /> -<action name="stop"    timeout="40s" /> -<action name="status"  timeout="20s" interval="60s" /> -<action name="monitor" depth="0" timeout="10s" interval="5s" /> -<action name="notify"  timeout="10s" /> -<action name="meta-data"  timeout="20s" /> -</actions> -</resource-agent> -END - -return ${OCF_SUCCESS} -} - -ganesha_grace_usage() { -	echo "ganesha.nfsd USAGE" -} - -# Make sure meta-data and usage always succeed -case $__OCF_ACTION in -	meta-data)	ganesha_meta_data -			exit ${OCF_SUCCESS} -			;; -	usage|help)	ganesha_usage -			exit ${OCF_SUCCESS} -			;; -	*) -			;; -esac - -ganesha_grace_start() -{ -	local rc=${OCF_ERR_GENERIC} -	local host=$(hostname -s) - -	ocf_log debug "ganesha_grace_start()" -	# give ganesha_mon RA a chance to set the crm_attr first -	# I mislike the sleep, but it's not clear that looping -	# with a small sleep is necessarily better -	# start has a 40sec timeout, so a 5sec sleep here is okay -        sleep 5 -	attr=$(crm_attribute --query --node=${host} --name=${OCF_RESKEY_grace_active} 2> /dev/null) -        if [ $? -ne 0 ]; then -		host=$(hostname) -		attr=$(crm_attribute --query --node=${host} --name=${OCF_RESKEY_grace_active} 2> /dev/null ) -                if [ $? -ne 0 ]; then -	                ocf_log info "grace start: crm_attribute --query --node=${host} --name=${OCF_RESKEY_grace_active} failed" -                fi -        fi - -	# Three possibilities: -	# 1. There is no attribute at all and attr_updater returns -	#    a zero length string. This happens when -	#    ganesha_mon::monitor hasn't run at least once to set -	#    the attribute. The assumption here is that the system -	#    is coming up. We pretend, for now, that the node is -	#    healthy, to allow the system to continue coming up. -	#    It will cure itself in a few seconds -	# 2. There is an attribute, and it has the value "1"; this -	#    node is healthy. -	# 3. There is an attribute, but it has no value or the value -	#    "0"; this node is not healthy. - -	# case 1 -	if [[ -z "${attr}" ]]; then -		return ${OCF_SUCCESS} -	fi - -	# case 2 -	if [[ "${attr}" = *"value=1" ]]; then -		return ${OCF_SUCCESS} -	fi - -	# case 3 -	return ${OCF_NOT_RUNNING} -} - -ganesha_grace_stop() -{ - -	ocf_log debug "ganesha_grace_stop()" -	return ${OCF_SUCCESS} -} - -ganesha_grace_notify() -{ -        # since this is a clone RA we should only ever see pre-start -        # or post-stop -	mode="${OCF_RESKEY_CRM_meta_notify_type}-${OCF_RESKEY_CRM_meta_notify_operation}" -	case "${mode}" in -	pre-start | post-stop) -		dbus-send --print-reply --system --dest=org.ganesha.nfsd /org/ganesha/nfsd/admin org.ganesha.nfsd.admin.grace string:${OCF_RESKEY_CRM_meta_notify_stop_uname} -		if [ $? -ne 0 ]; then -			ocf_log info "dbus-send --print-reply --system --dest=org.ganesha.nfsd /org/ganesha/nfsd/admin org.ganesha.nfsd.admin.grace string:${OCF_RESKEY_CRM_meta_notify_stop_uname} failed" -		fi -		;; -	esac - -	return ${OCF_SUCCESS} -} - -ganesha_grace_monitor() -{ -	local host=$(hostname -s) - -	ocf_log debug "monitor" - -	attr=$(crm_attribute --query --node=${host} --name=${OCF_RESKEY_grace_active} 2> /dev/null) -        if [ $? -ne 0 ]; then -		host=$(hostname) -	        attr=$(crm_attribute --query --node=${host} --name=${OCF_RESKEY_grace_active} 2> /dev/null) -                if [ $? -ne 0 ]; then -	                ocf_log info "crm_attribute --query --node=${host} --name=${OCF_RESKEY_grace_active} failed" -                fi -        fi - -	# if there is no attribute (yet), maybe it's because -	# this RA started before ganesha_mon (nfs-mon) has had -	# chance to create it. In which case we'll pretend -	# everything is okay this time around -	if [[ -z "${attr}" ]]; then -		return ${OCF_SUCCESS} -	fi - -	if [[ "${attr}" = *"value=1" ]]; then -		return ${OCF_SUCCESS} -	fi - -	return ${OCF_NOT_RUNNING} -} - -ganesha_grace_validate() -{ -	return ${OCF_SUCCESS} -} - -ganesha_grace_validate - -# Translate each action into the appropriate function call -case $__OCF_ACTION in -start)          ganesha_grace_start -		;; -stop)           ganesha_grace_stop -		;; -status|monitor) ganesha_grace_monitor -		;; -notify)         ganesha_grace_notify -		;; -*)              ganesha_grace_usage -		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" -exit $rc - diff --git a/extras/ganesha/ocf/ganesha_mon b/extras/ganesha/ocf/ganesha_mon deleted file mode 100644 index 7d2c268d412..00000000000 --- a/extras/ganesha/ocf/ganesha_mon +++ /dev/null @@ -1,235 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2014 Anand Subramanian anands@redhat.com -# Copyright (c) 2015 Red Hat Inc. -#                    All Rights Reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of version 2 of the GNU General Public License as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Further, this software is distributed without any warranty that it is -# free of the rightful claim of any third person regarding infringement -# or the like.  Any license provided herein, whether implied or -# otherwise, applies only to this software file.  Patent licenses, if -# any, provided herein do not apply to combinations of this program with -# other software, or any other product whatsoever. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. -# -# - -# Initialization: -: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs - -if [ -n "${OCF_DEBUG_LIBRARY}" ]; then -	. ${OCF_DEBUG_LIBRARY} -else -	: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -	. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs -fi - -# 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 -<?xml version="1.0"?> -<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> -<resource-agent name="ganesha_mon"> -<version>1.0</version> - -<longdesc lang="en"> -This Linux-specific resource agent acts as a dummy -resource agent for nfs-ganesha. -</longdesc> - -<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"  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} -} - -ganesha_mon_usage() { -	echo "ganesha.nfsd USAGE" -} - -# Make sure meta-data and usage always succeed -case ${__OCF_ACTION} in -	meta-data)	ganesha_meta_data -			exit ${OCF_SUCCESS} -			;; -	usage|help)	ganesha_usage -			exit ${OCF_SUCCESS} -			;; -	*) -			;; -esac - -ganesha_mon_start() -{ -	ocf_log debug "ganesha_mon_start" -	ganesha_mon_monitor -	return $OCF_SUCCESS -} - -ganesha_mon_stop() -{ -	ocf_log debug "ganesha_mon_stop" -	return $OCF_SUCCESS -} - -ganesha_mon_monitor() -{ -	local host=$(hostname -s) -	local pid_file="/var/run/ganesha.pid" -	local rhel6_pid_file="/var/run/ganesha.nfsd.pid" -	local proc_pid="/proc/" - -	# RHEL6 /etc/init.d/nfs-ganesha adds -p /var/run/ganesha.nfsd.pid -	# RHEL7 systemd does not. Would be nice if all distros used the -	# same pid file. -	if [ -e ${rhel6_pid_file} ]; then -		pid_file=${rhel6_pid_file} -	fi -	if [ -e ${pid_file} ]; then -		proc_pid="${proc_pid}$(cat ${pid_file})" -	fi - -	if [ "x${proc_pid}" != "x/proc/" -a -d ${proc_pid} ]; then - -		attrd_updater -n ${OCF_RESKEY_ganesha_active} -v 1 -		if [ $? -ne 0 ]; then -			ocf_log info "warning: attrd_updater -n ${OCF_RESKEY_ganesha_active} -v 1 failed" -		fi - -		# ganesha_grace (nfs-grace) RA follows grace-active attr -		# w/ constraint location -		attrd_updater -n ${OCF_RESKEY_grace_active} -v 1 -		if [ $? -ne 0 ]; then -			ocf_log info "warning: attrd_updater -n ${OCF_RESKEY_grace_active} -v 1 failed" -		fi - -		# ganesha_mon (nfs-mon) and ganesha_grace (nfs-grace) -		# track grace-active crm_attr (attr != crm_attr) -		# we can't just use the attr as there's no way to query -		# its value in RHEL6 pacemaker - -		crm_attribute --node=${host} --lifetime=forever --name=${OCF_RESKEY_grace_active} --update=1 2> /dev/null -		if [ $? -ne 0 ]; then -			host=$(hostname) -			crm_attribute --node=${host} --lifetime=forever --name=${OCF_RESKEY_grace_active} --update=1 2> /dev/null -			if [ $? -ne 0 ]; then -				ocf_log info "mon monitor warning: crm_attribute --node=${host} --lifetime=forever --name=${OCF_RESKEY_grace_active} --update=1 failed" -			fi -		fi - -		return ${OCF_SUCCESS} -	fi - -	# 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 grace-active 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 - -	host=$(hostname -s) -	crm_attribute --node=${host} --name=${OCF_RESKEY_grace_active} --update=0 2> /dev/null -	if [ $? -ne 0 ]; then -		host=$(hostname) -		crm_attribute --node=${host} --name=${OCF_RESKEY_grace_active} --update=0 2> /dev/null -		if [ $? -ne 0 ]; then -			ocf_log info "mon monitor warning: crm_attribute --node=${host} --name=${OCF_RESKEY_grace_active} --update=0 failed" -		fi -	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} -} - -ganesha_mon_validate - -# Translate each action into the appropriate function call -case ${__OCF_ACTION} in -start)          ganesha_mon_start -		;; -stop)           ganesha_mon_stop -		;; -status|monitor) ganesha_mon_monitor -		;; -*)              ganesha_mon_usage -		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" -exit $rc - diff --git a/extras/ganesha/ocf/ganesha_nfsd b/extras/ganesha/ocf/ganesha_nfsd deleted file mode 100644 index 29e333ca903..00000000000 --- a/extras/ganesha/ocf/ganesha_nfsd +++ /dev/null @@ -1,168 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2014 Anand Subramanian anands@redhat.com -# Copyright (c) 2015 Red Hat Inc. -#                    All Rights Reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of version 2 of the GNU General Public License as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Further, this software is distributed without any warranty that it is -# free of the rightful claim of any third person regarding infringement -# or the like.  Any license provided herein, whether implied or -# otherwise, applies only to this software file.  Patent licenses, if -# any, provided herein do not apply to combinations of this program with -# other software, or any other product whatsoever. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. -# -# - -# Initialization: -: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs - -if [ -n "${OCF_DEBUG_LIBRARY}" ]; then -	. ${OCF_DEBUG_LIBRARY} -else -	: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} -	. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs -fi - -OCF_RESKEY_ha_vol_mnt_default="/var/run/gluster/shared_storage" -: ${OCF_RESKEY_ha_vol_mnt=${OCF_RESKEY_ha_vol_mnt_default}} - -ganesha_meta_data() { -	cat <<END -<?xml version="1.0"?> -<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> -<resource-agent name="ganesha_nfsd"> -<version>1.0</version> - -<longdesc lang="en"> -This Linux-specific resource agent acts as a dummy -resource agent for nfs-ganesha. -</longdesc> - -<shortdesc lang="en">Manages the user-space nfs-ganesha NFS server</shortdesc> - -<parameters> -<parameter name="ha_vol_mnt"> -<longdesc lang="en">HA State Volume Mount Point</longdesc> -<shortdesc lang="en">HA_State Volume Mount Point</shortdesc> -<content type="string" default="" /> -</parameter> -</parameters> - -<actions> -<action name="start"   timeout="5s" /> -<action name="stop"    timeout="5s" /> -<action name="status" depth="0"  timeout="5s" interval="0" /> -<action name="monitor" depth="0"  timeout="5s" interval="0" /> -<action name="meta-data"  timeout="20s" /> -</actions> -</resource-agent> -END - -return ${OCF_SUCCESS} -} - -ganesha_nfsd_usage() { -	echo "ganesha.nfsd USAGE" -} - -# Make sure meta-data and usage always succeed -case $__OCF_ACTION in -	meta-data)	ganesha_meta_data -			exit ${OCF_SUCCESS} -			;; -	usage|help)	ganesha_usage -			exit ${OCF_SUCCESS} -			;; -	*) -			;; -esac - -ganesha_nfsd_start() -{ -	local long_host=$(hostname) - -	if [[ -d /var/lib/nfs ]]; then -		mv /var/lib/nfs /var/lib/nfs.backup -		if [ $? -ne 0 ]; then -			ocf_log notice "mv /var/lib/nfs /var/lib/nfs.backup failed" -		fi -		ln -s ${OCF_RESKEY_ha_vol_mnt}/nfs-ganesha/${long_host}/nfs /var/lib/nfs -		if [ $? -ne 0 ]; then -			ocf_log notice "ln -s ${OCF_RESKEY_ha_vol_mnt}/nfs-ganesha/${long_host}/nfs /var/lib/nfs failed" -		fi -	fi - -	return ${OCF_SUCCESS} -} - -ganesha_nfsd_stop() -{ - -	if [ -L /var/lib/nfs -a -d /var/lib/nfs.backup ]; then -		rm -f /var/lib/nfs -		if [ $? -ne 0 ]; then -			ocf_log notice "rm -f /var/lib/nfs failed" -		fi -		mv /var/lib/nfs.backup /var/lib/nfs -		if [ $? -ne 0 ]; then -			ocf_log notice "mv /var/lib/nfs.backup /var/lib/nfs failed" -		fi -	fi - -	return ${OCF_SUCCESS} -} - -ganesha_nfsd_monitor() -{ -	# pacemaker checks to see if RA is already running before starting it. -	# if we return success, then it's presumed it's already running and -	# doesn't need to be started, i.e. invoke the start action. -	# return something other than success to make pacemaker invoke the -	# start action -	if [[ -L /var/lib/nfs ]]; then -		return ${OCF_SUCCESS} -	fi -	return ${OCF_NOT_RUNNING} -} - -ganesha_nfsd_validate() -{ -	return ${OCF_SUCCESS} -} - -ganesha_nfsd_validate - -# ocf_log notice "ganesha_nfsd ${OCF_RESOURCE_INSTANCE} $__OCF_ACTION" - -# Translate each action into the appropriate function call -case $__OCF_ACTION in -start)          ganesha_nfsd_start -		;; -stop)           ganesha_nfsd_stop -		;; -status|monitor) ganesha_nfsd_monitor -		;; -*)              ganesha_nfsd_usage -		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" -exit $rc -  | 
