diff options
Diffstat (limited to 'extras/ganesha/scripts/dbus-send.sh')
-rwxr-xr-x | extras/ganesha/scripts/dbus-send.sh | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/extras/ganesha/scripts/dbus-send.sh b/extras/ganesha/scripts/dbus-send.sh new file mode 100755 index 00000000000..406162f0747 --- /dev/null +++ b/extras/ganesha/scripts/dbus-send.sh @@ -0,0 +1,74 @@ +#/bin/bash + +declare -i EXPORT_ID +GANESHA_DIR=$1 +OPTION=$1 +VOL=$2 + +function check_cmd_status() +{ + if [ "$1" != "0" ] + then + rm -rf $GANESHA_DIR/exports/export.$VOL.conf + exit 1 + fi +} + +#This function keeps track of export IDs and increments it with every new entry +function dynamic_export_add() +{ + count=`ls -l $GANESHA_DIR/exports/*.conf | wc -l` + if [ "$count" = "1" ] ; + then + EXPORT_ID=2 + else + #if [ -s /var/lib/ganesha/export_removed ]; + # then + # EXPORT_ID=`head -1 /var/lib/ganesha/export_removed` + # sed -i -e "1d" /var/lib/ganesha/export_removed + # else + + EXPORT_ID=`cat $GANESHA_DIR/.export_added` + check_cmd_status `echo $?` + EXPORT_ID=EXPORT_ID+1 + #fi + fi + 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 --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)" + +} + +#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 " " -f3` + echo $removed_id + 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 $?` + rm -rf $GANESHA_DIR/exports/export.$VOL.conf + +} + +if [ "$OPTION" = "on" ]; +then + dynamic_export_add $@ + check_cmd_status `echo $?` +fi + +if [ "$OPTION" = "off" ]; +then + dynamic_export_remove $@ + check_cmd_status `echo $?` +fi + |