diff options
| author | Krishnan Parthasarathi <kparthas@redhat.com> | 2012-08-16 12:53:47 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2012-12-12 00:12:58 -0500 | 
| commit | e8013c280e3a9f79490b39e51fd8c24ad39a5a04 (patch) | |
| tree | 57fd04a1ad7eb2f811236a19b461857e55d9b4bb /extras/hook-scripts/set/post/S30samba-set.sh | |
| parent | c2d72cb5bd9084786ceff03e4df032541461e183 (diff) | |
hooks: Modified samba hook scripts to handle user.cifs
Change-Id: I079636e2be4bc097df33355b6a60c0e04d69ef57
BUG: 877992
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/1856
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'extras/hook-scripts/set/post/S30samba-set.sh')
| -rw-r--r-- | extras/hook-scripts/set/post/S30samba-set.sh | 127 | 
1 files changed, 127 insertions, 0 deletions
diff --git a/extras/hook-scripts/set/post/S30samba-set.sh b/extras/hook-scripts/set/post/S30samba-set.sh new file mode 100644 index 00000000000..bec3ac270b3 --- /dev/null +++ b/extras/hook-scripts/set/post/S30samba-set.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +PROGNAME="Ssamba-set" +OPTSPEC="volname:" +VOL= +MNT_PRE="/mnt/samba" + +enable_cifs="" + +function parse_args () { +        ARGS=$(getopt -l $OPTSPEC  -o "o" -name $PROGNAME $@) +        eval set -- "$ARGS" + +        while true; do +            case $1 in +            --volname) +                shift +                VOL=$1 +                ;; +            *) +                shift +                for pair in $@; do +                        read key value < <(echo "$pair" | tr "=" " ") +                        case "$key" in +                            "user.cifs")    enable_cifs=$value;; +                            *) ;; +                        esac +                done + +                shift +                break +                ;; +            esac +            shift +        done +} + +function add_samba_export () { +        volname=$1 +        mnt_pre=$2 +        mkdir -p $mnt_pre/$volname && \ +        printf "\n[gluster-$volname]\ncomment=For samba export of volume $volname\npath=$mnt_pre/$volname\nread only=no\nguest ok=yes\n" >> /etc/samba/smb.conf +} + +function sighup_samba () { +        pid=`cat /var/run/smbd.pid` +        if [ "$pid" != "" ] +        then +                kill -HUP "$pid"; +        else +                /etc/init.d/smb start +        fi +} + +function add_fstab_entry () { +        volname=$1 +        mntpt=$2 +        mntent="`hostname`:/$volname $mntpt glusterfs defaults,transport=tcp 0 0" +        exists=`grep "$mntent" /etc/fstab` +        if [ "$exists" == "" ] +        then +            echo "$mntent" >> /etc/fstab +        fi +} + +function del_samba_export () { +        volname=$1 +        cp /etc/samba/smb.conf /tmp/smb.conf +        sed -i "/gluster-$volname/,/^$/d" /tmp/smb.conf &&\ +                mv /tmp/smb.conf /etc/samba/smb.conf +} + +function umount_volume () { +        volname=$1 +        mnt_pre=$2 +        umount -l $mnt_pre/$volname +} + +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 +} + +function is_volume_started () { +        volname=$1 +        echo "$(grep status /var/lib/glusterd/vols/"$volname"/info | cut -d"=" -f2)" +} + +function get_cifs () { +        volname=$1 +        echo "$(grep user.cifs /var/lib/glusterd/vols/"$volname"/info | cut -d"=" -f2)" +} + +function mount_volume () { +	volname=$1 +	mntpt=$2 +	if [ "$(cat /proc/mounts | grep "$mntpt")" == "" ]; then +		mount -t glusterfs `hostname`:$volname $mntpt && \ +				add_fstab_entry $volname $mntpt +	fi +} + +parse_args $@ +if [ "0" = $(is_volume_started "$VOL") ]; then +    exit 0 +fi + +if [ "$enable_cifs" = "enable" ]; then +    add_samba_export $VOL $MNT_PRE +    mkdir -p $MNT_PRE/$VOL +    sleep 5 +    mount_volume $VOL $MNT_PRE/$VOL +    sighup_samba + +elif [ "$enable_cifs" = "disable" ]; then +    del_samba_export $VOL +    umount_volume $VOL $MNT_PRE +    remove_fstab_entry $VOL $MNT_PRE/$VOL +    sighup_samba +fi  | 
