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