diff options
-rwxr-xr-x | extras/ganesha/scripts/dbus-send.sh | 37 | ||||
-rw-r--r-- | extras/ganesha/scripts/ganesha-ha.sh | 55 | ||||
-rwxr-xr-x | extras/hook-scripts/start/post/S31ganesha-start.sh | 26 |
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 |