diff options
author | Soumya Koduri <skoduri@redhat.com> | 2016-02-17 15:34:44 +0530 |
---|---|---|
committer | Kaleb KEITHLEY <kkeithle@redhat.com> | 2016-02-28 12:14:35 -0800 |
commit | e0e633cdce7586af92490730257ed7f0cffcff61 (patch) | |
tree | e75f31988d528846682e403b131706550bedb2b7 | |
parent | 7e65e1b5a9a7bdaa7ca28bc5c1773bc5472f19af (diff) |
ganesha: Read export_id on each node while performing refresh-config
As mentioned in https://bugzilla.redhat.com/show_bug.cgi?id=1309238#c1,
there could be cases which shall result in having different ExportIDs
for the same volume on each node forming the ganesha cluster.
Hence during refresh-config, it is necessary to read the ExportID on
each of those nodes and re-export that volume with the same ID.
Change-Id: I44058352fe977ccc649d378da3b68bbfb992fcd7
BUG: 1309238
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
Reviewed-on: http://review.gluster.org/13459
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
-rwxr-xr-x | extras/ganesha/scripts/dbus-send.sh | 3 | ||||
-rw-r--r-- | extras/ganesha/scripts/ganesha-ha.sh | 61 |
2 files changed, 40 insertions, 24 deletions
diff --git a/extras/ganesha/scripts/dbus-send.sh b/extras/ganesha/scripts/dbus-send.sh index d390e1a2dc7..87e616c23a2 100755 --- a/extras/ganesha/scripts/dbus-send.sh +++ b/extras/ganesha/scripts/dbus-send.sh @@ -84,13 +84,14 @@ $GANESHA_DIR/exports/export.$VOL.conf --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \ org.ganesha.nfsd.exportmgr.AddExport string:$GANESHA_DIR/exports/export.$VOL.conf \ string:"EXPORT(Path=/$VOL)" + check_cmd_status `echo $?` } #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` +grep Export_Id | cut -d ' ' -f8` check_cmd_status `echo $?` dbus-send --print-reply --system \ --dest=org.ganesha.nfsd /org/ganesha/nfsd/ExportMgr \ diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh index 7bb7d0d81f6..e7d5641a4db 100644 --- a/extras/ganesha/scripts/ganesha-ha.sh +++ b/extras/ganesha/scripts/ganesha-ha.sh @@ -247,46 +247,58 @@ refresh_config () local short_host=$(hostname -s) local VOL=${1} local HA_CONFDIR=${2} + local tganesha_vol_conf=$(mktemp) + local short_host=$(hostname -s) - removed_id=`cat $HA_CONFDIR/exports/export.$VOL.conf |\ -grep Export_Id | cut -d " " -f8` + cp ${HA_CONFDIR}/exports/export.$VOL.conf \ +${tganesha_vol_conf} if [ -e ${SECRET_PEM} ]; then while [[ ${3} ]]; do current_host=`echo ${3} | cut -d "." -f 1` if [ ${short_host} != ${current_host} ]; then - scp -q -oPasswordAuthentication=no -oStrictHostKeyChecking=no -i \ -${SECRET_PEM} ${HA_CONFDIR}/exports/export.$VOL.conf \ -${current_host}:${HA_CONFDIR}/exports/ + removed_id=$(ssh -oPasswordAuthentication=no \ +-oStrictHostKeyChecking=no -i ${SECRET_PEM} root@${current_host} \ +"cat $HA_CONFDIR/exports/export.$VOL.conf |\ +grep Export_Id | cut -d ' ' -f8") + output=$(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 2>&1") - ret=$? - logger <<< "${output}" - if [ ${ret} -ne 0 ]; then - echo "Error: refresh-config failed on ${current_host}." - exit 1 - fi - sleep 1 - output=$(ssh -oPasswordAuthentication=no \ + ret=$? + logger <<< "${output}" + if [ ${ret} -ne 0 ]; then + echo "Error: refresh-config failed on ${current_host}." + exit 1 + fi + sleep 1 + sed -i s/Export_Id.*/"Export_Id= $removed_id ;"/ \ + ${tganesha_vol_conf} + + scp -q -oPasswordAuthentication=no \ +-oStrictHostKeyChecking=no -i \ +${SECRET_PEM} ${tganesha_vol_conf} \ +${current_host}:${HA_CONFDIR}/exports/export.$VOL.conf + + output=$(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.AddExport \ string:$HA_CONFDIR/exports/export.$VOL.conf \ string:\"EXPORT(Path=/$VOL)\" 2>&1") - ret=$? - logger <<< "${output}" - if [ ${ret} -ne 0 ]; then - echo "Error: refresh-config failed on ${current_host}." - exit 1 - else - echo "Refresh-config completed on ${current_host}." - fi + ret=$? + logger <<< "${output}" + if [ ${ret} -ne 0 ]; then + echo "Error: refresh-config failed on ${current_host}." + exit 1 + else + echo "Refresh-config completed on ${current_host}." + fi - fi - shift + fi + shift done else echo "Error: refresh-config failed. Passwordless ssh is not enabled." @@ -294,6 +306,8 @@ string:\"EXPORT(Path=/$VOL)\" 2>&1") fi # Run the same command on the localhost, + removed_id=`cat $HA_CONFDIR/exports/export.$VOL.conf |\ +grep Export_Id | cut -d " " -f8` output=$(dbus-send --print-reply --system --dest=org.ganesha.nfsd \ /org/ganesha/nfsd/ExportMgr org.ganesha.nfsd.exportmgr.RemoveExport \ uint16:$removed_id 2>&1) @@ -316,6 +330,7 @@ string:"EXPORT(Path=/$VOL)" 2>&1) else echo "Success: refresh-config completed." fi + rm -f ${tganesha_vol_conf} } |