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  | 
