#!/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 ganesha_meta_data() { cat < 1.0 This Linux-specific resource agent acts as a dummy resource agent for nfs-ganesha. Manages the user-space nfs-ganesha NFS server HA State Volume Name HA_State Volume Name HA State Volume Mount Point HA_State Volume Mount Point HA State Volume Server HA_State Volume Server 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() { 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 [ $? -ne 0 ]; then logger "warning: service nfs-ganesha start failed" fi else umount $OCF_RESKEY_ha_vol_mnt 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" fi fi return $OCF_SUCCESS } ganesha_nfsd_monitor() { return $OCF_SUCCESS } ganesha_nfsd_validate() { return $OCF_SUCCESS } ganesha_nfsd_validate # logger "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