summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiffin Tony Thottan <jthottan@gmail.com>2016-01-22 17:47:07 +0530
committerJeff Darcy <jdarcy@redhat.com>2016-03-01 00:00:04 -0800
commitea00992d3d52a51b7c8311ad9565bbbb6e395f9d (patch)
tree5f1ba7aecc99f3a0413c6891ff349861304a5cdc
parent487b3a65d3cebefac93a30222eb81b0a7465c778 (diff)
NFS-Ganesha : scripts related changes for supporting multiple export entires for volume
Previously script such as dbus-send.sh, ganesha-ha.sh can handle only one EXPORT{} block. Change-Id: I2286af4877f96f4334435818f67beea87efa2b1f BUG: 1275966 Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com> Reviewed-on: http://review.gluster.org/13283 Smoke: Gluster Build System <jenkins@build.gluster.com> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
-rwxr-xr-xextras/ganesha/scripts/dbus-send.sh37
-rw-r--r--extras/ganesha/scripts/ganesha-ha.sh55
-rwxr-xr-xextras/hook-scripts/start/post/S31ganesha-start.sh26
3 files changed, 68 insertions, 50 deletions
diff --git a/extras/ganesha/scripts/dbus-send.sh b/extras/ganesha/scripts/dbus-send.sh
index 4840be830d6..5f268eb37c2 100755
--- a/extras/ganesha/scripts/dbus-send.sh
+++ b/extras/ganesha/scripts/dbus-send.sh
@@ -63,30 +63,37 @@ function dynamic_export_add()
EXPORT_ID=`cat $GANESHA_DIR/.export_added`
check_cmd_status `echo $?`
- EXPORT_ID=EXPORT_ID+1
#fi
fi
+ for entry in `grep -n Export_Id $GANESHA_DIR/exports/export.$VOL.conf \
+ | awk -F":" '{print$1}'`
+ do
+ sed -e "$entry s/Export_Id.*/Export_Id=$EXPORT_ID ;/" -i \
+ $GANESHA_DIR/exports/export.$VOL.conf
+ check_cmd_status `echo $?`
+ dbus-send --system \
+ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
+ org.ganesha.nfsd.exportmgr.AddExport \
+ string:$GANESHA_DIR/exports/export.$VOL.conf \
+ string:"EXPORT(Export_Id=$EXPORT_ID)"
+ EXPORT_ID=EXPORT_ID+1
+ done
echo $EXPORT_ID > $GANESHA_DIR/.export_added
check_cmd_status `echo $?`
- sed -i s/Export_Id.*/"Export_Id= $EXPORT_ID ;"/ \
-$GANESHA_DIR/exports/export.$VOL.conf
- check_cmd_status `echo $?`
- dbus-send --system \
---dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
-org.ganesha.nfsd.exportmgr.AddExport string:$GANESHA_DIR/exports/export.$VOL.conf \
-string:"EXPORT(Path=/$VOL)"
}
#This function removes an export dynamically(uses the export_id of the export)
function dynamic_export_remove()
{
- removed_id=`cat $GANESHA_DIR/exports/export.$VOL.conf |\
-grep Export_Id | cut -d " " -f8`
- check_cmd_status `echo $?`
- dbus-send --print-reply --system \
---dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
-org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id
- check_cmd_status `echo $?`
+ grep Export_Id $GANESHA_DIR/exports/export.$VOL.conf | \
+ while read entry;
+ do
+ dbus-send --print-reply --system \
+ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
+ org.ganesha.nfsd.exportmgr.RemoveExport \
+ uint16:$(echo $entry | awk -F"[=,;]" '{print$2}')
+ check_cmd_status `echo $?`
+ done
sed -i /$VOL.conf/d $CONF
rm -rf $GANESHA_DIR/exports/export.$VOL.conf
diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh
index 9c82c091304..f17582b727a 100644
--- a/extras/ganesha/scripts/ganesha-ha.sh
+++ b/extras/ganesha/scripts/ganesha-ha.sh
@@ -248,19 +248,26 @@ grep Export_Id | cut -d " " -f8`
scp -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \
${SECRET_PEM} ${HA_CONFDIR}/exports/export.$VOL.conf \
${current_host}:${HA_CONFDIR}/exports/
- ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \
-${SECRET_PEM} root@${current_host} "dbus-send --print-reply --system \
---dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
-org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id"
- sleep 1
- ssh -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \
-${SECRET_PEM} root@${current_host} "dbus-send --system \
---dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
-org.ganesha.nfsd.exportmgr.AddExport string:$HA_CONFDIR/exports/export.$VOL.conf \
-string:\"EXPORT(Path=/$VOL)\""
- if [ $? -ne 0 ]; then
- echo "warning: refresh-config failed on ${current_host}"
- fi
+ grep Export_Id $HA_CONFDIR/exports/export.$VOL.conf | \
+ while read entry;
+ do
+ export_id=$(echo $entry | awk -F"[=,;]" '{print$2}')
+ ssh -oPasswordAuthentication=no \
+-oStrictHostKeyChecking=no -i ${SECRET_PEM} root@${current_host} \
+"dbus-send --print-reply --system --dest=org.ganesha.nfsd \
+/org/ganesha/nfsd/ExportMgr org.ganesha.nfsd.exportmgr.RemoveExport \
+uint16:$export_id"
+ sleep 1
+ ssh -oPasswordAuthentication=no \
+-oStrictHostKeyChecking=no -i ${SECRET_PEM} root@${current_host} \
+"dbus-send --system --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
+org.ganesha.nfsd.exportmgr.AddExport string:$HA_CONFDIR/exports/export.$VOL.conf \
+string:\"EXPORT(Export_Id=$export_id)\""
+ if [ $? -ne 0 ]; then
+ echo "warning: refresh-config failed on" \
+ " ${current_host}"
+ fi
+ done
fi
shift
done
@@ -269,14 +276,20 @@ string:\"EXPORT(Path=/$VOL)\""
fi
#Run the same command on the localhost,
- dbus-send --print-reply --system \
---dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
-org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id
- sleep 1
- dbus-send --system \
---dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
-org.ganesha.nfsd.exportmgr.AddExport string:$HA_CONFDIR/exports/export.$VOL.conf \
-string:"EXPORT(Path=/$VOL)"
+ grep Export_Id $HA_CONFDIR/exports/export.$VOL.conf | \
+ while read entry;
+ do
+ export_id=$(echo $entry | awk -F"[=,;]" '{print$2}')
+ dbus-send --print-reply --system \
+ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
+ org.ganesha.nfsd.exportmgr.RemoveExport uint16:$removed_id
+ sleep 1
+ dbus-send --system \
+ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
+ org.ganesha.nfsd.exportmgr.AddExport \
+ string:$HA_CONFDIR/exports/export.$VOL.conf \
+ string:"EXPORT(Export_Id=$export_id)"
+ done
}
copy_export_config ()
diff --git a/extras/hook-scripts/start/post/S31ganesha-start.sh b/extras/hook-scripts/start/post/S31ganesha-start.sh
index b85c789b9ed..513402eaa16 100755
--- a/extras/hook-scripts/start/post/S31ganesha-start.sh
+++ b/extras/hook-scripts/start/post/S31ganesha-start.sh
@@ -75,32 +75,30 @@ function export_add()
# else
EXPORT_ID=`cat $GANESHA_DIR/.export_added`
- EXPORT_ID=EXPORT_ID+1
#fi
fi
+ for entry in `grep -n Export_Id $GANESHA_DIR/exports/export.$VOL.conf \
+ | awk -F":" '{print$1}'`
+ do
+ sed -e "$entry s/Export_Id.*/Export_Id=$EXPORT_ID ;/" -i \
+ $GANESHA_DIR/exports/export.$VOL.conf
+ dbus-send --system \
+ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \
+ org.ganesha.nfsd.exportmgr.AddExport \
+ string:$GANESHA_DIR/exports/export.$VOL.conf \
+ string:"EXPORT(Export_Id=$EXPORT_ID)"
+ EXPORT_ID=EXPORT_ID+1
+ done
echo $EXPORT_ID > $GANESHA_DIR/.export_added
- sed -i s/Export_Id.*/"Export_Id= $EXPORT_ID ;"/ \
-$GANESHA_DIR/exports/export.$VOL.conf
echo "%include \"$GANESHA_DIR/exports/export.$VOL.conf\"" >> $CONF1
}
-#This function adds a new export dynamically by sending dbus signals
-function dynamic_export_add()
-{
- dbus-send --print-reply --system --dest=org.ganesha.nfsd \
-/org/ganesha/nfsd/ExportMgr org.ganesha.nfsd.exportmgr.AddExport \
-string:$GANESHA_DIR/exports/export.$VOL.conf string:"EXPORT(Path=/$VOL)"
-
-}
-
function start_ganesha()
{
#Remove export entry from nfs-ganesha.conf
sed -i /$VOL.conf/d $CONF1
#Create a new export entry
export_add $VOL
- dynamic_export_add $VOL
-
}
# based on src/scripts/ganeshactl/Ganesha/export_mgr.py