diff options
Diffstat (limited to 'extras/hook-scripts/stop')
| -rw-r--r-- | extras/hook-scripts/stop/Makefile.am | 2 | ||||
| -rw-r--r-- | extras/hook-scripts/stop/pre/Makefile.am | 1 | ||||
| -rwxr-xr-x | extras/hook-scripts/stop/pre/S29CTDB-teardown.sh | 80 | ||||
| -rwxr-xr-x | extras/hook-scripts/stop/pre/S30samba-stop.sh | 71 | 
4 files changed, 154 insertions, 0 deletions
diff --git a/extras/hook-scripts/stop/Makefile.am b/extras/hook-scripts/stop/Makefile.am new file mode 100644 index 00000000000..e2ac8e2740b --- /dev/null +++ b/extras/hook-scripts/stop/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS = pre +CLEANFILES = diff --git a/extras/hook-scripts/stop/pre/Makefile.am b/extras/hook-scripts/stop/pre/Makefile.am new file mode 100644 index 00000000000..85243adbec9 --- /dev/null +++ b/extras/hook-scripts/stop/pre/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST =  S29CTDB-teardown.sh S30samba-stop.sh diff --git a/extras/hook-scripts/stop/pre/S29CTDB-teardown.sh b/extras/hook-scripts/stop/pre/S29CTDB-teardown.sh new file mode 100755 index 00000000000..0b6e50ead0d --- /dev/null +++ b/extras/hook-scripts/stop/pre/S29CTDB-teardown.sh @@ -0,0 +1,80 @@ +#! /bin/bash +#non-portable - RHS-2.0 only +SMB_CONF=/etc/samba/smb.conf + +CTDB_MNT=/gluster/lock +PROGNAME="ctdb" +OPTSPEC="volname:" +VOL= +# $META is the volume that will be used by CTDB as a shared filesystem. +# It is not desirable to use this volume for storing 'data' as well. +# META is set to 'all' (viz. a keyword and hence not a legal volume name) +# to prevent the script from running for volumes it was not intended. +# User needs to set META to the volume that serves CTDB lockfile. +META="all" + +function sighup_samba () { +        pid=`cat /var/run/smbd.pid` +        if [ "$pid" != "" ] +        then +                kill -HUP $pid; +        else +                /etc/init.d/smb start +        fi +} + +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 remove_ctdb_options () { +        IFS=$'\n' +        GLUSTER_CTDB_CONFIG=$'# ctdb config for glusterfs\n\tclustering = yes\n\tidmap backend = tdb2\n' + +        for line in $GLUSTER_CTDB_CONFIG +        do +                sed -i /"$line"/d $SMB_CONF +        done +        unset IFS +} + +function remove_fstab_entry () { +	volname=$1 +	mntpt=$2 +	mntent="`hostname`:/$volname $mntpt glusterfs defaults,transport=tcp 0 0" +	esc_mntent=$(echo -e "$mntent" | sed 's/\//\\\//g') +	exists=`grep "^$mntent" /etc/fstab` +	if [ "$exists" != " " ] +	then +		sed -i /"$esc_mntent"/d /etc/fstab +	fi +} + +parse_args $@ +if [ "$META" = "$VOL" ] +then +        umount "$CTDB_MNT" +        chkconfig ctdb off +	remove_fstab_entry $VOL $CTDB_MNT +        remove_ctdb_options +        sighup_samba +fi diff --git a/extras/hook-scripts/stop/pre/S30samba-stop.sh b/extras/hook-scripts/stop/pre/S30samba-stop.sh new file mode 100755 index 00000000000..8950eea436e --- /dev/null +++ b/extras/hook-scripts/stop/pre/S30samba-stop.sh @@ -0,0 +1,71 @@ +#! /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  | 
