summaryrefslogtreecommitdiffstats
path: root/extras/ganesha/ocf/ganesha_nfsd
diff options
context:
space:
mode:
Diffstat (limited to 'extras/ganesha/ocf/ganesha_nfsd')
-rw-r--r--extras/ganesha/ocf/ganesha_nfsd127
1 files changed, 49 insertions, 78 deletions
diff --git a/extras/ganesha/ocf/ganesha_nfsd b/extras/ganesha/ocf/ganesha_nfsd
index 2c0b32c7817..f91e8b6b8f7 100644
--- a/extras/ganesha/ocf/ganesha_nfsd
+++ b/extras/ganesha/ocf/ganesha_nfsd
@@ -29,15 +29,18 @@
: ${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
+ : ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
+ . ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
fi
+OCF_RESKEY_ha_vol_mnt_default="/run/gluster/shared_storage"
+: ${OCF_RESKEY_ha_vol_mnt=${OCF_RESKEY_ha_vol_mnt_default}}
+
ganesha_meta_data() {
- cat <<END
+ cat <<END
<?xml version="1.0"?>
<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
<resource-agent name="ganesha_nfsd">
@@ -51,36 +54,24 @@ resource agent for nfs-ganesha.
<shortdesc lang="en">Manages the user-space nfs-ganesha NFS server</shortdesc>
<parameters>
-<parameter name="ha_vol_name">
-<longdesc lang="en">HA State Volume Name</longdesc>
-<shortdesc lang="en">HA_State Volume Name</shortdesc>
-<content type="string" default="" />
-</parameter>
-
<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>
-
-<parameter name="ha_vol_server">
-<longdesc lang="en">HA State Volume Server</longdesc>
-<shortdesc lang="en">HA_State Volume Server</shortdesc>
-<content type="string" default="" />
-</parameter>
</parameters>
<actions>
-<action name="start" timeout="40s" />
-<action name="stop" timeout="40s" />
-<action name="status" depth="0" timeout="20s" interval="1m" />
-<action name="monitor" depth="0" timeout="10s" interval="1m" />
+<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
+return ${OCF_SUCCESS}
}
ganesha_nfsd_usage() {
@@ -90,10 +81,10 @@ ganesha_nfsd_usage() {
# Make sure meta-data and usage always succeed
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}
;;
*)
;;
@@ -101,79 +92,60 @@ esac
ganesha_nfsd_start()
{
- return $OCF_SUCCESS
+ 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()
{
- local mounted=""
- local mntptinuse=""
- local instance_host=""
- local short_host=""
- local resource_prefix=${OCF_RESOURCE_INSTANCE:0:9}
-
- if [ "X${resource_prefix}X" = "Xnfs_startX" ]; then
-
- mounted=$(mount | grep $OCF_RESKEY_ha_vol_name)
- mntptinuse=$(mount | grep -o $OCF_RESKEY_ha_vol_mnt)
- short_host=$(hostname -s)
- long_host=$(hostname)
-
- if [[ ! ${mounted} ]]; then
-
- if [ -d $OCF_RESKEY_ha_vol_mnt ]; then
- if [[ ${mntptinuse} ]]; then
- return $OCF_ERR_GENERIC
- fi
- else
- mkdir ${mntpt}
- fi
-
- mount -t glusterfs $OCF_RESKEY_ha_vol_server:$OCF_RESKEY_ha_vol_name $OCF_RESKEY_ha_vol_mnt
- if [ $? -ne 0 ]; then
- logger "warning: mount -t glusterfs $OCF_RESKEY_ha_vol_server:$OCF_RESKEY_ha_vol_name $OCF_RESKEY_ha_vol_mnt failed"
- fi
-
- mv /var/lib/nfs /var/lib/nfs.backup
- ln -s $OCF_RESKEY_ha_vol_mnt/${long_host}/nfs /var/lib/nfs
- if [ $? -ne 0 ]; then
- logger "warning: ln -s $OCF_RESKEY_ha_vol_mnt/${long_host}/nfs /var/lib/nfs failed"
- fi
- fi
-
- service nfs-ganesha start
+ if [ -L /var/lib/nfs -a -d /var/lib/nfs.backup ]; then
+ rm -f /var/lib/nfs
if [ $? -ne 0 ]; then
- logger "warning: service nfs-ganesha start failed"
+ ocf_log notice "rm -f /var/lib/nfs failed"
fi
- else
- umount $OCF_RESKEY_ha_vol_mnt
+ mv /var/lib/nfs.backup /var/lib/nfs
if [ $? -ne 0 ]; then
- logger "warning: umount $OCF_RESKEY_ha_vol_mnt failed"
- fi
-
- service nfs-ganesha stop
- if [ $? -ne 0 ]; then
- logger "warning: service nfs-ganesha stop failed"
+ ocf_log notice "mv /var/lib/nfs.backup /var/lib/nfs failed"
fi
fi
- return $OCF_SUCCESS
+ return ${OCF_SUCCESS}
}
ganesha_nfsd_monitor()
{
- return $OCF_SUCCESS
+ # 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
+ return ${OCF_SUCCESS}
}
ganesha_nfsd_validate
-# logger "ganesha_nfsd ${OCF_RESOURCE_INSTANCE} $__OCF_ACTION"
+# ocf_log notice "ganesha_nfsd ${OCF_RESOURCE_INSTANCE} $__OCF_ACTION"
# Translate each action into the appropriate function call
case $__OCF_ACTION in
@@ -184,13 +156,12 @@ stop) ganesha_nfsd_stop
status|monitor) ganesha_nfsd_monitor
;;
*) ganesha_nfsd_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
-