glusterfs/extras/hook-scripts/S30samba-stop.sh
Raghavendra Talur 11bb1fc584 extras/hookscripts: Fix the multiple entries in smb.conf problem.
Problem:
1. Force starts and user.smb sets were adding multiple entries to
the smb.conf file for the same volume.
Make a check for the entry and search with exact name.

2. Again, while deleting the share name from smb.conf search with
exact name so that volumes with names which are substrings of ones to
be deleted don't get deleted.

3. We don't need to use a tmp file while using sed -i, fixed that.

Change-Id: Ie0f7c9d4790ef9a177a043378a761c9ffe1628e5
BUG: 994727
Signed-off-by: Raghavendra Talur <rtalur@redhat.com>
Reviewed-on: http://review.gluster.org/6043
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Reviewed-by: Lalatendu Mohanty <lmohanty@redhat.com>
Tested-by: Lalatendu Mohanty <lmohanty@redhat.com>
2013-10-08 09:22:00 -07:00

72 lines
1.7 KiB
Bash
Executable File

#! /bin/bash
#Need to be copied to hooks/<HOOKS_VER>/stop/pre
#TODO: All gluster and samba paths are assumed for fedora like systems.
#Some efforts are required to make it work on other distros.
#The preferred way of creating a smb share of a gluster volume has changed.
#The old method was to create a fuse mount of the volume and share the mount
#point through samba.
#
#New method eliminates the requirement of fuse mount and changes in fstab.
#glusterfs_vfs plugin for samba makes call to libgfapi to access the volume.
#
#This hook script automagically removes shares for volume on every volume stop
#event by removing the volume related entries(if any) in smb.conf file.
PROGNAME="Ssamba-stop"
OPTSPEC="volname:"
VOL=
CONFIGFILE=
PIDDIR=
function parse_args () {
ARGS=$(getopt -l $OPTSPEC -name $PROGNAME $@)
eval set -- "$ARGS"
while true; do
case $1 in
--volname)
shift
VOL=$1
;;
*)
shift
break
;;
esac
shift
done
}
function find_config_info () {
cmdout=`smbd -b | grep smb.conf`
if [ $? -ne 0 ];then
echo "Samba is not installed"
exit 1
fi
CONFIGFILE=`echo $cmdout | awk {'print $2'}`
PIDDIR=`smbd -b | grep PIDDIR | awk {'print $2'}`
}
function del_samba_share () {
volname=$1
sed -i "/\[gluster-$volname\]/,/^$/d" ${CONFIGFILE}
}
function sighup_samba () {
pid=`cat ${PIDDIR}/smbd.pid`
if [ "x$pid" != "x" ]
then
kill -HUP $pid;
else
/etc/init.d/smb condrestart
fi
}
parse_args $@
find_config_info
del_samba_share $VOL
sighup_samba