summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoumya Koduri <skoduri@redhat.com>2016-02-17 15:34:44 +0530
committerKaleb KEITHLEY <kkeithle@redhat.com>2016-02-28 12:14:35 -0800
commite0e633cdce7586af92490730257ed7f0cffcff61 (patch)
treee75f31988d528846682e403b131706550bedb2b7
parent7e65e1b5a9a7bdaa7ca28bc5c1773bc5472f19af (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-xextras/ganesha/scripts/dbus-send.sh3
-rw-r--r--extras/ganesha/scripts/ganesha-ha.sh61
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}
}