[Gluster-devel] NFS,SAMBA probing support for stage3

Harshavardhana Ranganath harsha at 80x25.org
Thu Apr 6 18:07:12 UTC 2006


locate_stage3.sh now supports. NFS and SAMBA
support. for stage3 sources.
HTTP framework ready..but not fully supported.

Regards
Harshavardhana
-------------- next part --------------
? locate-stage3.diff
Index: stage2/skel-master/etc/stage2/locate_stage3.sh
===================================================================
RCS file: /sources/gluster/gluster-alpha1/stage2/skel-master/etc/stage2/locate_stage3.sh,v
retrieving revision 1.5
diff -p -u -r1.5 locate_stage3.sh
--- stage2/skel-master/etc/stage2/locate_stage3.sh	21 Feb 2006 12:48:13 -0000	1.5
+++ stage2/skel-master/etc/stage2/locate_stage3.sh	6 Apr 2006 18:01:59 -0000
@@ -15,36 +15,66 @@ list_cdrom_devices ()
     done
 }
 
+
 method_nfs ()
 {
     local ip;
-    local exportpoint;
+    local share;
+    local ip_exportpoint;
+    local exportpoint_subdir;
 
     while :
     do
-      ip=$( dialog --inputbox "NFS server IP" 0 0 "${ip}" 2>&1 >&3 ) || return 1;
-      exportpoint=$( dialog --inputbox "NFS server export path" 0 0 "${exportpoint}" 2>&1 >&3 ) || return 1;
-
+      ip_exportpoint=$( dialog --inputbox " Specify NFS share address as \n example: HOSTNAME:/YOURSHARNAME,\n HOSTNAME example: 192.168.0.1 \n
+ NFS server share path " 0 0 "${ip_exportpoint}" 2>&1 >&3 ) || return 1;
+      [ -z "${ip_exportpoint}" ] && { 
+	  dialog --msgbox " Given NFS share path is invalid " 0 0;
+	  continue;
+      }
+      ip=$(echo $ip_exportpoint | cut -f1 -d':');
+      [ -z "{ip}" ] && {
+	  dialog --msgbox " Specified HOSTNAME is invalid... " 0 0;
+	  continue;
+      }
+      share=$(echo $ip_exportpoint | cut -f2 -d':');
+      [ -z "${share}" ] && {
+	  dialog --msgbox " Specified share point is invalid... " 0 0;
+	  continue;
+      }
+      exportpoint_subdir=$( dialog --inputbox " if remote directory path is \n 192.168.0.1:/YOURSHARENAME/Gluster/extensions \n then enter example: /Gluster/extensions \n NFS server subdirectory path " 0 0 "${exportpoint_subdir}" 2>&1 >&3 ) || return 1;
       while :
-      do
+	do
 	/sbin/ip route get "${ip}";
 	[ $? -eq 0 ] && break;
-	dialog --yesno "${ip} is not reachable. configure network?" 0 0 || break
+	dialog --yesno " ${ip} is not reachable. configure network? " 0 0 || break;
 	/etc/stage2/config_network.sh;
       done
       /sbin/ip route get "${ip}";
       [ $? -eq 0 ] || continue;
       mkdir -p /mnt/nfs;
-      mount -t nfs $ip:$exportpoint /mnt/nfs;
+      [ -z "${exportpoint_subdir}" ] && {
+	  mount -t nfs $ip_exportpoint /mnt/nfs;
+	  [ $? -eq 0 ] || {
+	      dialog --msgbox " Could not mount NFS volume from $ip_exportpoint " 0 0;
+	      continue;
+	  }
+	  [ -f /mnt/nfs/core.gex ] || {
+	      dialog --msgbox " $ip_exportpoint is not a valid gluster stage3 directory " 0 0;
+	      umount /mnt/nfs;
+	      continue;
+	  }
+      }
+      mount -t nfs $ip_exportpoint$exportpoint_subdir /mnt/nfs;
       [ $? -eq 0 ] || {
-	  dialog --msgbox " Could not mount NFS volume from $ip:$exportpoint " 0 0;
+	  dialog --msgbox " Could not mount NFS volume from $ip_exportpoint$exportpoint_subdir " 0 0 ;
 	  continue;
       }
       [ -f /mnt/nfs/core.gex ] || {
-	  dialog --msgbox " $ip:$exportpoint is not a valid gluster stage3 export " 0 0;
+	  dialog --msgbox " $ip_exportpoint$exportpoint_subdir is not a valid gluster stage3 directory " 0 0;
 	  umount /mnt/nfs;
 	  continue;
       }
+      
       rm -rf /stage3 && ln -sf /mnt/nfs /stage3;
       [ $? -eq 0 ] || {
 	  dialog --msgbox " Could not create symlink " 0 0;
@@ -54,7 +84,100 @@ method_nfs ()
       return 0;
     done
 }
+method_samba()
+{
+    local ip;
+    local share;
+    local ip_sambapath;
+    local samba_subdir;
+    while :
+    do 
+    ip_sambapath=$( dialog --inputbox " Specify SAMBA share path as \n example : //HOSTNAME/YOURSHARE \n HOSTNAME example: 192.168.0.1 \n SAMBA server path " 0 0 "${ip_sambapath}" 2>&1 >&3) || return 1;
+    ip=$(echo $ip_sambapath | sed -e 's/^.*\/\///' | cut -f1 -d'/');
+    share=$(echo $ip_sambapath | sed -e 's/^.*\/\///' | cut -f2 -d'/');
+    [ -z "${ip_sambapath}" ] && {
+	dialog --msgbox " Given SMB share path is invalid " 0 0;
+	continue;
+    }
+    [ -z "${ip}" ] && {
+	dialog --msgbox " Given Hostname is invalid... " 0 0;
+	continue;
+    }
+    [ -z "${share}" ] && {
+	dialog --msgbox " Given Sharepath is invalid... " 0 0;
+	continue;
+    }
+    samba_subdir=$( dialog --inputbox " If remote directory path is \n /YOURSHARE/Gluster/extensions/ \n example: Gluster/extensions/ \n SAMBA server subdir path " 0 0 "${samba_subdir}" 2>&1 >&3) || return 1;
 
+    while :
+      do
+      /sbin/ip route get "${ip}";
+      [ $? -eq 0 ] && break;
+      dialog --yesno " $ip is not reachable. configure network? " || break;
+      /etc/stage2/config_network.sh
+    done
+    /sbin/ip route get "${ip}";
+    [ $? -eq 0 ] || continue;
+    mkdir -p /mnt/samba;
+    [ -z "${samba_subdir}" ] && {
+	mount -f smbfs $ip_sambapath /mnt/samba;
+	[ $? -eq 0 ] || {
+	    dialog --msgbox " Could not mount SAMBA volume from $ip_sambapath " 0 0;
+	    continue;
+	}
+	[ -f /mnt/samba/core.gex ] || {
+	    dialog --msgbox " $ip_sambapath is not a VALID gluster stage3 directory " 0 0;
+	    umount /mnt/samba;
+	    continue;
+	}
+    }
+    mount -t smbfs $ip_sambapath/$samba_subdir /mnt/samba;
+    [ $? -eq 0 ] || {
+	dialog --msgbox " Could not mount SAMBA volume from $ip_sambapath/$samba_subdir " 0 0;
+	continue;
+    }
+    [ -f /mnt/samba/core.gex ] || {
+	dialog --msgbox " $ip_sambapath/$samba_subdir is not a VALID gluster stage3 subdir " 0 0;
+	umount /mnt/samba;
+	continue;
+    }
+    rm -rf /stage3 && ln -sf /mnt/samba/ /stage3;
+    [ $? -eq 0 ] || {
+	dialog --msgbox " Could not create symlink " 0 0;
+	umount /mnt/samba;
+	continue;
+    }
+ done
+}
+
+method_http()
+{
+    local url;
+    local ip;
+    while :
+      do
+      http_path=$( dialog --inputbox "Specify HTTP server path for example: http://192.168.0.1/share/ \n HTTP server path " 0 0 "${http_path}" 2>&1 >&3 ) || return 1;
+      [ -z "${http_path}" ] && {
+	  dialog --msgbox " Specified HTTP path is invalid... " 0 0;
+	  continue;
+      }
+      ip=$(echo $http_path | sed 's/^.*http:\/\///' | cut -f1 -d'/');
+      subdir_path=$( dialog --inputbox "Specify the subdir path for example: http://192.168.0.1/share/Gluster/extensions/ " 0 0 "${subdir_path}" 2>&1 >&3 ) || return 1;
+      [ -z "${subdir_path}" ] && {
+	  dialog --msgbox " Specified SUBDIR path is invalid ..." 0 0;
+	  continue;
+      }
+      while :
+      do
+      /sbin/ip route get "${ip}";
+      [ $? -eq 0 ] && break;
+      dialog --yesno " $ip is not reachable. configure network? " || break;
+      /etc/stage2/config_network.sh
+      done
+      /sbin/ip route get "${ip}";
+      [ $? -eq 0 ] || continue;
+    done
+}
 method_cdrom ()
 {
     local dev;
@@ -142,10 +265,12 @@ main ()
         "Select method to reach gluster stage3" 0 0 0\
 	"cdrom" "Select Gluster CD/DVD-ROM device"\
         "nfs" "NFS mount stage3 extensions" \
+	"samba" "SAMBA mount stage3 extensions" \
 	"path" "Manually specify stage3 path" 2>&1 >&3) || break;
       [ "${method}" = "cdrom" ] && method_cdrom && break;
       [ "${method}" = "path" ] && method_path && break;
       [ "${method}" = "nfs" ] && method_nfs && break;
+      [ "${method}" = "samba" ] && method_samba && break;
     done
 
     exec /etc/stage2/load_stage3.sh /stage3/core.tgz


More information about the Gluster-devel mailing list