#!/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 Mount Point HA_State Volume Mount Point 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 short_host=$(hostname -s) local long_host="" if [ "X${OCF_RESOURCE_INSTANCE:0:9}X" = "Xnfs_startX" ]; then # if this is any nfs_start, go ahead. worst case we # find the link already exists and do nothing long_host=$(hostname) if [ -d /var/lib/nfs ]; then 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 else # if this is a clone resource or is specific to this node # remove the symlink and restore /var/lib/nfs if [ "X${OCF_RESOURCE_INSTANCE}X" = "Xnfs_stopX" ] || [ "X${OCF_RESOURCE_INSTANCE}X" = "Xnfs_stop-${short_host}X" ]; then if [ -L /var/lib/nfs -a -d /var/lib/nfs.backup ]; then rm -f /var/lib/nfs mv /var/lib/nfs.backup /var/lib/nfs fi 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