From e8013c280e3a9f79490b39e51fd8c24ad39a5a04 Mon Sep 17 00:00:00 2001 From: Krishnan Parthasarathi Date: Thu, 16 Aug 2012 12:53:47 +0530 Subject: hooks: Modified samba hook scripts to handle user.cifs Change-Id: I079636e2be4bc097df33355b6a60c0e04d69ef57 BUG: 877992 Signed-off-by: Krishnan Parthasarathi Reviewed-on: https://code.engineering.redhat.com/gerrit/1856 Reviewed-by: Vijay Bellur Tested-by: Vijay Bellur --- extras/hook-scripts/set/post/S30samba-set.sh | 127 +++++++++++++++++++++++ extras/hook-scripts/start/post/S30samba-start.sh | 24 ++++- 2 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 extras/hook-scripts/set/post/S30samba-set.sh 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 diff --git a/extras/hook-scripts/start/post/S30samba-start.sh b/extras/hook-scripts/start/post/S30samba-start.sh index 5323cca76d5..70158e75590 100644 --- a/extras/hook-scripts/start/post/S30samba-start.sh +++ b/extras/hook-scripts/start/post/S30samba-start.sh @@ -33,9 +33,9 @@ function add_samba_export () { function sighup_samba () { pid=`cat /var/run/smbd.pid` - if [ $pid != " " ] + if [ "$pid" != "" ] then - kill -HUP $pid; + kill -HUP "$pid"; else /etc/init.d/smb condrestart fi @@ -52,11 +52,27 @@ function add_fstab_entry () { fi } +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 [ $(get_cifs "$VOL") = "disable" ]; then + exit 0 +fi + add_samba_export $VOL $MNT_PRE mkdir -p $MNT_PRE/$VOL sleep 5 -mount -t glusterfs `hostname`:$VOL $MNT_PRE/$VOL && \ - add_fstab_entry $VOL $MNT_PRE/$VOL +mount_volume $VOL $MNT_PRE/$VOL sighup_samba -- cgit