diff options
Diffstat (limited to 'extras')
-rw-r--r-- | extras/ganesha/scripts/Makefile.am | 4 | ||||
-rwxr-xr-x | extras/ganesha/scripts/copy-export-ganesha.sh | 97 |
2 files changed, 99 insertions, 2 deletions
diff --git a/extras/ganesha/scripts/Makefile.am b/extras/ganesha/scripts/Makefile.am index 224ed26e75b..c326fc2f136 100644 --- a/extras/ganesha/scripts/Makefile.am +++ b/extras/ganesha/scripts/Makefile.am @@ -1,6 +1,6 @@ EXTRA_DIST= ganesha-ha.sh dbus-send.sh create-export-ganesha.sh \ - generate-epoch.py + generate-epoch.py copy-export-ganesha.sh scriptsdir = $(libexecdir)/ganesha scripts_SCRIPTS = create-export-ganesha.sh dbus-send.sh ganesha-ha.sh \ - generate-epoch.py + generate-epoch.py copy-export-ganesha.sh diff --git a/extras/ganesha/scripts/copy-export-ganesha.sh b/extras/ganesha/scripts/copy-export-ganesha.sh new file mode 100755 index 00000000000..e8cdc98056c --- /dev/null +++ b/extras/ganesha/scripts/copy-export-ganesha.sh @@ -0,0 +1,97 @@ +#/bin/bash + +#This script is called by glusterd when in case of +#reboot.An export file specific to a volume +#is copied in GANESHA_DIR/exports from online node. + +# Try loading the config from any of the distro +# specific configuration locations +if [ -f /etc/sysconfig/ganesha ] + then + . /etc/sysconfig/ganesha +fi +if [ -f /etc/conf.d/ganesha ] + then + . /etc/conf.d/ganesha +fi +if [ -f /etc/default/ganesha ] + then + . /etc/default/ganesha +fi + +GANESHA_DIR=${1%/} +VOL=$2 +CONF= +host=$(hostname -s) +SECRET_PEM="/var/lib/glusterd/nfs/secret.pem" + +function check_cmd_status() +{ + if [ "$1" != "0" ] + then + rm -rf $GANESHA_DIR/exports/export.$VOL.conf + exit 1 + fi +} + + +if [ ! -d "$GANESHA_DIR/exports" ]; + then + mkdir $GANESHA_DIR/exports + check_cmd_status `echo $?` +fi + +function find_rhel7_conf +{ + while [[ $# > 0 ]] + do + key="$1" + case $key in + -f) + CONFFILE="$2" + ;; + *) + ;; + esac + shift + done +} + +if [ -z $CONFFILE ]; then + find_rhel7_conf $OPTIONS + +fi +CONF=${CONFFILE:-/etc/ganesha/ganesha.conf} + +#remove the old export entry from NFS-Ganesha +#if already exported +dbus-send --type=method_call --print-reply --system \ + --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \ + org.ganesha.nfsd.exportmgr.ShowExports \ + | grep -w -q "/$VOL" +if [ $? -eq 0 ]; then + removed_id=`cat $GANESHA_DIR/exports/export.$VOL.conf |\ + grep Export_Id | awk -F"[=,;]" '{print$2}' | tr -d '[[:space:]]'` + + dbus-send --print-reply --system --dest=org.ganesha.nfsd \ + /org/ganesha/nfsd/ExportMgr org.ganesha.nfsd.exportmgr.RemoveExport \ + uint16:$removed_id 2>&1 +fi + +ha_servers=$(pcs status | grep "Online:" | grep -o '\[.*\]' | sed -e 's/\[//' | sed -e 's/\]//') +IFS=$' ' +for server in ${ha_servers} ; do + current_host=`echo $server | cut -d "." -f 1` + if [ $host != $current_host ] + then + scp -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ + ${SECRET_PEM} $server:$GANESHA_DIR/exports/export.$VOL.conf \ + $GANESHA_DIR/exports/export.$VOL.conf + break + fi +done + +if ! (cat $CONF | grep $VOL.conf\"$ ) +then +echo "%include \"$GANESHA_DIR/exports/export.$VOL.conf\"" >> $CONF +fi |