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. BUG: 1309238 Change-Id: Id39b3a0ce2614ee611282ff2bee04cede1fc129d 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> Reviewed-on: http://review.gluster.org/13726 Tested-by: Kaleb KEITHLEY <kkeithle@redhat.com>
This commit is contained in:
parent
5bdfaf9890
commit
ef1b79a867
extras/ganesha/scripts
@ -89,20 +89,26 @@ function dynamic_export_add()
|
||||
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)"
|
||||
check_cmd_status `echo $?`
|
||||
}
|
||||
|
||||
#This function removes an export dynamically(uses the export_id of the export)
|
||||
function dynamic_export_remove()
|
||||
{
|
||||
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
|
||||
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 $?`
|
||||
sed -i /$VOL.conf/d $CONF
|
||||
rm -rf $GANESHA_DIR/exports/export.$VOL.conf
|
||||
|
||||
|
@ -247,45 +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
|
||||
fi
|
||||
shift
|
||||
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
|
||||
done
|
||||
else
|
||||
echo "Error: refresh-config failed. Passwordless ssh is not enabled."
|
||||
@ -293,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)
|
||||
@ -315,6 +330,7 @@ string:"EXPORT(Path=/$VOL)" 2>&1)
|
||||
else
|
||||
echo "Success: refresh-config completed."
|
||||
fi
|
||||
rm -f ${tganesha_vol_conf}
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user