|
Packit Service |
a90fdc |
#!/bin/bash
|
|
Packit Service |
a90fdc |
#
|
|
Packit Service |
a90fdc |
# Copyright (c) 2014 Anand Subramanian anands@redhat.com
|
|
Packit Service |
a90fdc |
# Copyright (c) 2015 Red Hat Inc.
|
|
Packit Service |
a90fdc |
# All Rights Reserved.
|
|
Packit Service |
a90fdc |
#
|
|
Packit Service |
a90fdc |
# This program is free software; you can redistribute it and/or modify
|
|
Packit Service |
a90fdc |
# it under the terms of version 2 of the GNU General Public License as
|
|
Packit Service |
a90fdc |
# published by the Free Software Foundation.
|
|
Packit Service |
a90fdc |
#
|
|
Packit Service |
a90fdc |
# This program is distributed in the hope that it would be useful, but
|
|
Packit Service |
a90fdc |
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
a90fdc |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
Packit Service |
a90fdc |
#
|
|
Packit Service |
a90fdc |
# Further, this software is distributed without any warranty that it is
|
|
Packit Service |
a90fdc |
# free of the rightful claim of any third person regarding infringement
|
|
Packit Service |
a90fdc |
# or the like. Any license provided herein, whether implied or
|
|
Packit Service |
a90fdc |
# otherwise, applies only to this software file. Patent licenses, if
|
|
Packit Service |
a90fdc |
# any, provided herein do not apply to combinations of this program with
|
|
Packit Service |
a90fdc |
# other software, or any other product whatsoever.
|
|
Packit Service |
a90fdc |
#
|
|
Packit Service |
a90fdc |
# You should have received a copy of the GNU General Public License
|
|
Packit Service |
a90fdc |
# along with this program; if not, write the Free Software Foundation,
|
|
Packit Service |
a90fdc |
# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
|
Packit Service |
a90fdc |
#
|
|
Packit Service |
a90fdc |
#
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
# Initialization:
|
|
Packit Service |
a90fdc |
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
|
Packit Service |
a90fdc |
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
if [ -n "${OCF_DEBUG_LIBRARY}" ]; then
|
|
Packit Service |
a90fdc |
. ${OCF_DEBUG_LIBRARY}
|
|
Packit Service |
a90fdc |
else
|
|
Packit Service |
a90fdc |
: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat}
|
|
Packit Service |
a90fdc |
. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs
|
|
Packit Service |
a90fdc |
fi
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
OCF_RESKEY_ha_vol_mnt_default="/run/gluster/shared_storage"
|
|
Packit Service |
a90fdc |
: ${OCF_RESKEY_ha_vol_mnt=${OCF_RESKEY_ha_vol_mnt_default}}
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
ganesha_meta_data() {
|
|
Packit Service |
a90fdc |
cat <
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
<resource-agent name="ganesha_nfsd">
|
|
Packit Service |
a90fdc |
<version>1.0</version>
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
<longdesc lang="en">
|
|
Packit Service |
a90fdc |
This Linux-specific resource agent acts as a dummy
|
|
Packit Service |
a90fdc |
resource agent for nfs-ganesha.
|
|
Packit Service |
a90fdc |
</longdesc>
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
<shortdesc lang="en">Manages the user-space nfs-ganesha NFS server</shortdesc>
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
<parameters>
|
|
Packit Service |
a90fdc |
<parameter name="ha_vol_mnt">
|
|
Packit Service |
a90fdc |
<longdesc lang="en">HA State Volume Mount Point</longdesc>
|
|
Packit Service |
a90fdc |
<shortdesc lang="en">HA_State Volume Mount Point</shortdesc>
|
|
Packit Service |
a90fdc |
<content type="string" default="" />
|
|
Packit Service |
a90fdc |
</parameter>
|
|
Packit Service |
a90fdc |
</parameters>
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
<actions>
|
|
Packit Service |
a90fdc |
<action name="start" timeout="5s" />
|
|
Packit Service |
a90fdc |
<action name="stop" timeout="5s" />
|
|
Packit Service |
a90fdc |
<action name="status" depth="0" timeout="5s" interval="0" />
|
|
Packit Service |
a90fdc |
<action name="monitor" depth="0" timeout="5s" interval="0" />
|
|
Packit Service |
a90fdc |
<action name="meta-data" timeout="20s" />
|
|
Packit Service |
a90fdc |
</actions>
|
|
Packit Service |
a90fdc |
</resource-agent>
|
|
Packit Service |
a90fdc |
END
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
return ${OCF_SUCCESS}
|
|
Packit Service |
a90fdc |
}
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
ganesha_nfsd_usage() {
|
|
Packit Service |
a90fdc |
echo "ganesha.nfsd USAGE"
|
|
Packit Service |
a90fdc |
}
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
# Make sure meta-data and usage always succeed
|
|
Packit Service |
a90fdc |
case $__OCF_ACTION in
|
|
Packit Service |
a90fdc |
meta-data) ganesha_meta_data
|
|
Packit Service |
a90fdc |
exit ${OCF_SUCCESS}
|
|
Packit Service |
a90fdc |
;;
|
|
Packit Service |
a90fdc |
usage|help) ganesha_usage
|
|
Packit Service |
a90fdc |
exit ${OCF_SUCCESS}
|
|
Packit Service |
a90fdc |
;;
|
|
Packit Service |
a90fdc |
*)
|
|
Packit Service |
a90fdc |
;;
|
|
Packit Service |
a90fdc |
esac
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
ganesha_nfsd_start()
|
|
Packit Service |
a90fdc |
{
|
|
Packit Service |
a90fdc |
local long_host=$(hostname)
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
if [[ -d /var/lib/nfs ]]; then
|
|
Packit Service |
a90fdc |
mv /var/lib/nfs /var/lib/nfs.backup
|
|
Packit Service |
a90fdc |
if [ $? -ne 0 ]; then
|
|
Packit Service |
a90fdc |
ocf_log notice "mv /var/lib/nfs /var/lib/nfs.backup failed"
|
|
Packit Service |
a90fdc |
fi
|
|
Packit Service |
a90fdc |
ln -s ${OCF_RESKEY_ha_vol_mnt}/nfs-ganesha/${long_host}/nfs /var/lib/nfs
|
|
Packit Service |
a90fdc |
if [ $? -ne 0 ]; then
|
|
Packit Service |
a90fdc |
ocf_log notice "ln -s ${OCF_RESKEY_ha_vol_mnt}/nfs-ganesha/${long_host}/nfs /var/lib/nfs failed"
|
|
Packit Service |
a90fdc |
fi
|
|
Packit Service |
a90fdc |
fi
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
return ${OCF_SUCCESS}
|
|
Packit Service |
a90fdc |
}
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
ganesha_nfsd_stop()
|
|
Packit Service |
a90fdc |
{
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
if [ -L /var/lib/nfs -a -d /var/lib/nfs.backup ]; then
|
|
Packit Service |
a90fdc |
rm -f /var/lib/nfs
|
|
Packit Service |
a90fdc |
if [ $? -ne 0 ]; then
|
|
Packit Service |
a90fdc |
ocf_log notice "rm -f /var/lib/nfs failed"
|
|
Packit Service |
a90fdc |
fi
|
|
Packit Service |
a90fdc |
mv /var/lib/nfs.backup /var/lib/nfs
|
|
Packit Service |
a90fdc |
if [ $? -ne 0 ]; then
|
|
Packit Service |
a90fdc |
ocf_log notice "mv /var/lib/nfs.backup /var/lib/nfs failed"
|
|
Packit Service |
a90fdc |
fi
|
|
Packit Service |
a90fdc |
fi
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
return ${OCF_SUCCESS}
|
|
Packit Service |
a90fdc |
}
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
ganesha_nfsd_monitor()
|
|
Packit Service |
a90fdc |
{
|
|
Packit Service |
a90fdc |
# pacemaker checks to see if RA is already running before starting it.
|
|
Packit Service |
a90fdc |
# if we return success, then it's presumed it's already running and
|
|
Packit Service |
a90fdc |
# doesn't need to be started, i.e. invoke the start action.
|
|
Packit Service |
a90fdc |
# return something other than success to make pacemaker invoke the
|
|
Packit Service |
a90fdc |
# start action
|
|
Packit Service |
a90fdc |
if [[ -L /var/lib/nfs ]]; then
|
|
Packit Service |
a90fdc |
return ${OCF_SUCCESS}
|
|
Packit Service |
a90fdc |
fi
|
|
Packit Service |
a90fdc |
return ${OCF_NOT_RUNNING}
|
|
Packit Service |
a90fdc |
}
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
ganesha_nfsd_validate()
|
|
Packit Service |
a90fdc |
{
|
|
Packit Service |
a90fdc |
return ${OCF_SUCCESS}
|
|
Packit Service |
a90fdc |
}
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
ganesha_nfsd_validate
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
# ocf_log notice "ganesha_nfsd ${OCF_RESOURCE_INSTANCE} $__OCF_ACTION"
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
# Translate each action into the appropriate function call
|
|
Packit Service |
a90fdc |
case $__OCF_ACTION in
|
|
Packit Service |
a90fdc |
start) ganesha_nfsd_start
|
|
Packit Service |
a90fdc |
;;
|
|
Packit Service |
a90fdc |
stop) ganesha_nfsd_stop
|
|
Packit Service |
a90fdc |
;;
|
|
Packit Service |
a90fdc |
status|monitor) ganesha_nfsd_monitor
|
|
Packit Service |
a90fdc |
;;
|
|
Packit Service |
a90fdc |
*) ganesha_nfsd_usage
|
|
Packit Service |
a90fdc |
exit ${OCF_ERR_UNIMPLEMENTED}
|
|
Packit Service |
a90fdc |
;;
|
|
Packit Service |
a90fdc |
esac
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
rc=$?
|
|
Packit Service |
a90fdc |
|
|
Packit Service |
a90fdc |
# The resource agent may optionally log a debug message
|
|
Packit Service |
a90fdc |
ocf_log debug "${OCF_RESOURCE_INSTANCE} ${__OCF_ACTION} returned $rc"
|
|
Packit Service |
a90fdc |
exit $rc
|