this patch does * add NFS support for stage3 probing in stage2 * add shutdown and enchance reboot rc scripts * add more error checking and fix bugs in gex tool Regards Harshavardhana
? gex-nfs-reboot.diff ? extensions/core/Gluster/GArgs.pyc ? extensions/core/Gluster/GConf.pyc ? extensions/core/Gluster/GPackage.pyc ? extensions/core/Gluster/GRegistry.pyc ? extensions/core/Gluster/__init__.pyc ? extensions/core/Gluster/GFrontEnd/UI.pyc ? extensions/core/Gluster/GFrontEnd/__init__.pyc ? extensions/core/Gluster/GFrontEnd/dialog.pyc ? extensions/core/Gluster/GTmp/Dir.pyc ? extensions/core/Gluster/GTmp/__init__.pyc ? stage2/skel-master/etc/rc.d/rc.halt ? stage2/skel-slave/etc/rc.d/rc.halt ? stage3/e2fsprogs.mk ? stage3/jfsutils.mk ? stage3/reiserfsprogs.mk ? stage3/xfsprogs.mk Index: extensions/core/bin/gex =================================================================== RCS file: /cvsroot/gluster/gluster-alpha1/extensions/core/bin/gex,v retrieving revision 1.2 diff -p -u -r1.2 gex --- extensions/core/bin/gex 2 Feb 2006 06:59:11 -0000 1.2 +++ extensions/core/bin/gex 21 Feb 2006 12:33:21 -0000 @@ -10,9 +10,17 @@ dlg = dialog.Dialog (); def file_to_dict (filename): _dict = {}; for line in open (filename).readlines (): + line = line.strip () + if not line.strip(): + continue pieces = line.strip ().split (":", 1) - if pieces[1] is not None: - _dict[pieces[0]] = pieces[1]; + if len(pieces) == 2: + if not (pieces[0].strip() and pieces[1].strip()): + print " Warning: invalid key or value in line `" + line + "'"; + continue + _dict[pieces[0]] = pieces[1] + else: + print " Warning: at `" + line + "' \":\" not specified "; return _dict; def GpkgInstall (option, opt_str, value, parser): @@ -20,19 +28,43 @@ def GpkgInstall (option, opt_str, value, print value + ": cant read"; return contents = file_to_dict (value); - for tgz in contents['package-contents'].split (" "): - if tgz == '': continue + if not 'package-contents' in contents.keys (): + print " Error: package-contents not specified in " + value; + return + if 'package-contents' in contents.keys (): + tgz = contents['package-contents'].strip () + if not tgz: + print " Error: `package-contents' not specified in file " + value + package_exec = 'runme' + if not 'package-exec' in contents.keys (): + print " Warning: assuming package-exec as `runme' "; + else: + package_exec = contents['package-exec'].strip (); dir = Dir.TmpDir (); - ftgz = os.path.dirname (value) + "/" + tgz; - os.system ("tar -C " + dir.Name () + " -xzvf " + ftgz); - os.system (dir.Name () + "/" + contents['package-exec'].strip ()); + if not os.path.dirname (value): + ftgz = "./" + tgz + else: + ftgz = os.path.dirname (value) + "/" + tgz; + if not os.access (ftgz, os.R_OK): + print " Error: cannot open file `" + ftgz + "' for reading" + return + os.system ("tar -C " + dir.Name () + " -xzf " + ftgz); + if not os.access (dir.Name () + "/" + package_exec, os.X_OK): + print " Error: cannot execute `" + package_exec + "' in " + ftgz + return + os.system (dir.Name () + "/" + package_exec); + else: + print " Error: `package-contents' not specified in file " + value return ; def GpkgDetails (option, opt_str, value, parser): contents = file_to_dict (value); - print "Name : " + contents['package-name']; - print "Maintainer : " + contents['package-maintainer']; - print "Description: " + contents['package-description']; + if 'package-name' in contents.keys (): + print "Name : " + contents['package-name']; + if 'package-maintainer' in contents.keys (): + print "Maintainer : " + contents['package-maintainer']; + if 'package-description' in contents.keys (): + print "Description: " + contents['package-description']; return ; def GpkgListApps (option, opt_str, value, parser): Index: stage2/skel-master/etc/inittab =================================================================== RCS file: /cvsroot/gluster/gluster-alpha1/stage2/skel-master/etc/inittab,v retrieving revision 1.4 diff -p -u -r1.4 inittab --- stage2/skel-master/etc/inittab 10 Feb 2006 17:48:05 -0000 1.4 +++ stage2/skel-master/etc/inittab 21 Feb 2006 12:33:21 -0000 @@ -19,3 +19,5 @@ c12:12:respawn:/sbin/agetty -n -l /bin/b ca::ctrlaltdel:/sbin/reboot r:6:wait:/etc/rc.d/rc.reboot + +h:0:wait:/etc/rc.d/rc.halt \ No newline at end of file Index: stage2/skel-master/etc/rc.d/rc.reboot =================================================================== RCS file: /cvsroot/gluster/gluster-alpha1/stage2/skel-master/etc/rc.d/rc.reboot,v retrieving revision 1.1.1.1 diff -p -u -r1.1.1.1 rc.reboot --- stage2/skel-master/etc/rc.d/rc.reboot 24 Jan 2006 06:31:43 -0000 1.1.1.1 +++ stage2/skel-master/etc/rc.d/rc.reboot 21 Feb 2006 12:33:22 -0000 @@ -1,9 +1,21 @@ #!/bin/sh cd /; -killall5 -15; -killall5 -9; -umount -a; +echo " Sending SIGTERM to all processes " +killall5 -15 && sleep 1; -/sbin/reboot -hif; \ No newline at end of file +echo " Sending SIGKILL to all processes " +killall5 -9 && sleep 1; + +echo " Umounting all filesystems " +umount -a -f; + +echo " Syncing hardware clock with system time " +hwclock --systohc; + +echo " Syncing disks " +sync && sleep 1; + +echo " Powering down " +reboot -hif; \ No newline at end of file Index: stage2/skel-master/etc/stage2/locate_stage3.sh =================================================================== RCS file: /cvsroot/gluster/gluster-alpha1/stage2/skel-master/etc/stage2/locate_stage3.sh,v retrieving revision 1.4 diff -p -u -r1.4 locate_stage3.sh --- stage2/skel-master/etc/stage2/locate_stage3.sh 6 Feb 2006 09:19:02 -0000 1.4 +++ stage2/skel-master/etc/stage2/locate_stage3.sh 21 Feb 2006 12:33:22 -0000 @@ -34,7 +34,24 @@ method_nfs () done /sbin/ip route get "${ip}"; [ $? -eq 0 ] || continue; - dialog --msgbox "Incomplete feature" 0 0; + mkdir -p /mnt/nfs; + 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 export " 0 0; + umount /mnt/nfs; + continue; + } + rm -rf /stage3 && ln -sf /mnt/nfs /stage3; + [ $? -eq 0 ] || { + dialog --msgbox " Could not create symlink " 0 0; + umount /mnt/nfs; + continue; + } + return 0; done } Index: stage2/skel-slave/etc/rc.d/rc.reboot =================================================================== RCS file: /cvsroot/gluster/gluster-alpha1/stage2/skel-slave/etc/rc.d/rc.reboot,v retrieving revision 1.1.1.1 diff -p -u -r1.1.1.1 rc.reboot --- stage2/skel-slave/etc/rc.d/rc.reboot 24 Jan 2006 06:31:49 -0000 1.1.1.1 +++ stage2/skel-slave/etc/rc.d/rc.reboot 21 Feb 2006 12:33:22 -0000 @@ -1,9 +1,21 @@ #!/bin/sh cd /; -killall5 -15; -killall5 -9; -umount -a; +echo " Sending SIGTERM to all processes " +killall5 -15 && sleep 1; -/sbin/reboot -hif; \ No newline at end of file +echo " Sending SIGKILL to all processes " +killall5 -9 && sleep 1; + +echo " Umounting all filesystems " +umount -a -f; + +echo " Syncing hardware clock with system time " +hwclock --systohc; + +echo " Syncing disks " +sync && sleep 1; + +echo " Powering down " +reboot -hif; \ No newline at end of file
#!/bin/sh cd /; echo " Sending SIGTERM to all processes " killall5 -15 && sleep 1; echo " Sending SIGKILL to all processes " killall5 -9 && sleep 1; echo " Umounting all filesystems " umount -a -f; echo " Syncing hardware clock with system time " hwclock --systohc; echo " Syncing disks " sync && sleep 1; echo " Powering down " poweroff -f;