[Gluster-devel] gutils,GlusterHPC,GlusterEP - xml IPC patch!
Harshavardhana Ranganath
harsha at zresearch.com
Fri Aug 11 14:00:04 UTC 2006
patch includes support for xml ipc at the backend,
and many changes inside the gluster utilities,
Likewise changes inside GlusterHPC and EP.
parted version has been upgraded to 1.7.0,
patch for parted print is also attached.
-Harshavardhana
http://harsha.80x25.org/
-------------- next part --------------
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/GlusterHPC/GlusterHPC GlusterHPC/GlusterHPC
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/GlusterHPC/GlusterHPC 2006-08-04 12:39:07.000000000 -0700
+++ GlusterHPC/GlusterHPC 2006-08-11 18:05:19.000000000 -0700
@@ -79,7 +79,7 @@ def get_slaves (node):
return
def source_config (node):
- if os.system ("ssh -t %s 'gprobe | gpart-sel -o /tmp/ghpc.spec -c /tmp/ghpc_tar_cmds -m /tmp/ghpc_approx_max' 2>>/var/log/proglog" % node) != 0:
+ if os.system ("ssh -t %s 'gprobe | gpart-sel -o /tmp/ghpc.xml -c /tmp/ghpc_tar_cmds -m /tmp/ghpc_approx_max' 2>>/var/log/proglog" % node) != 0:
return 1
else:
return 0
@@ -97,10 +97,12 @@ def make_slaves (slave_list):
def source_action (node):
- partlist = gdump_partlist (read_gdump (os.popen ("ssh %s 'cat /tmp/ghpc.spec' 2>>/var/log/proglog" % node)))
+ partlist = gdump_partlist (read_xml_to_gdump (os.popen ("ssh %s 'cat /tmp/ghpc.xml' 2>>/var/log/proglog" % node)))
parts = partlist.keys ()
parts = filter ((lambda x:
- partlist[x]['FS'] != 'linux-swap' and partlist[x]['XFER'] == 'Y'),
+ partlist[x]['FS'] != 'linux-swap' \
+ and partlist[x].has_key ('XFER') \
+ and partlist[x]['XFER'] == 'Y'),
parts)
no_parts = len (parts)
min_clients = os.popen ('gping -p 1332 -i /tmp/session_hosts | grep slave | wc -l').readline ().strip ()
@@ -120,10 +122,12 @@ def dest_config (node):
# Send all the gex packages to clients
os.system ("ghpc_send >>/var/log/proglog 2>&1")
- partlist = gdump_partlist (read_gdump (os.popen ('ssh %s cat /tmp/ghpc.spec 2>>/var/log/proglog' % node)))
+ partlist = gdump_partlist (read_xml_to_gdump (os.popen ('ssh %s cat /tmp/ghpc.xml 2>>/var/log/proglog' % node)))
parts = partlist.keys ()
parts = filter ((lambda x:
- partlist[x]['FS'] != 'linux-swap' and partlist[x]['XFER'] == 'Y'),
+ partlist[x]['FS'] != 'linux-swap' \
+ and partlist[x]['XFER'] \
+ and partlist[x]['XFER'] == 'Y'),
parts)
no_parts = len (parts)
cmd_file = os.popen ('ssh %s dd of=/tmp/ghpc_dest_cmds 2>>/var/log/proglog' % node, "w")
@@ -137,7 +141,7 @@ def dest_config (node):
def hpc_action (node):
# TODO: Give a hook to user inbetween
- os.system ("ssh %s 'gmeta-installer --auto --input /tmp/ghpc.spec -c /tmp/ghpc_dest_cmds' >>/var/log/proglog 2>&1" % node)
+ os.system ("ssh %s 'gmeta-installer --auto --input /tmp/ghpc.xml -c /tmp/ghpc_dest_cmds' >>/var/log/proglog 2>&1" % node)
if get_hostname ('1') != node:
os.system ("rm -rf /tmp/gmi")
os.system ("scp -r %s:/tmp/gmi /tmp" % node)
@@ -204,7 +208,7 @@ def get_dst_nodes (dst_nodes):
if len (x) == 1:
fd.write ("%s%s\n" % (get_hostname (), x[0]))
elif len (x) == 2:
- if int (x[0]) < int (x[1]):
+ if x[0] < x[1]:
for a in range (int (x[0]), int (x[1]) + 1):
fd.write ("%s%s\n" % (get_hostname (), a))
else:
-------------- next part --------------
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/.arch-ids/gprobe.id gutils/.arch-ids/gprobe.id
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/.arch-ids/gprobe.id 2006-08-04 12:39:12.000000000 -0700
+++ gutils/.arch-ids/gprobe.id 1969-12-31 16:00:00.000000000 -0800
@@ -1 +0,0 @@
-Anand Babu <ab at zresearch.com> Mon May 22 01:49:50 2006 14360.0
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gimage-dump gutils/gimage-dump
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gimage-dump 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gimage-dump 2006-08-09 00:28:53.000000000 -0700
@@ -62,7 +62,7 @@ def main ():
if o == '-s' or o == '--spec':
try:
spec_fd = file (val)
- partlist = gdump_partlist (read_gdump (spec_fd))
+ partlist = gdump_partlist (read_xml_to_gdump (spec_fd))
except:
sys.exit (1)
@@ -93,7 +93,9 @@ def main ():
parts = partlist.keys ()
parts.sort ()
parts = filter ((lambda x:
- partlist[x]['XFER'] == 'Y' and partlist[x]['FS'] != 'linux-swap'),
+ partlist[x].has_key ('XFER') \
+ and partlist[x]['XFER'] == 'Y'\
+ and partlist[x]['FS'] != 'linux-swap'),
parts)
gmap.gmap (xfer_fn, map (None, parts, commands))
else:
@@ -117,8 +119,11 @@ def main ():
namelist = []
for p in partlist.keys ():
- if partlist[p]['OS'] != '' and partlist[p]['XFER'] == 'Y':
- namelist.append (partlist[p]['OS'])
+ if partlist[p].has_key ('OS') \
+ and partlist[p].has_key ('XFER') \
+ and partlist[p]['XFER'] == 'Y':
+ os = partlist[p]['OS']['type'] + partlist[p]['OS']['distro']
+ namelist.append (os)
namelist.append (time.strftime ('%Y-%m-%d-%H%M%S'))
name = string.join (namelist, '-')
while True:
@@ -136,8 +141,8 @@ def main ():
namefile.write ('%s\n' % newname)
namefile.close ()
- specfile = file ('%s/provision.spec' % dirname, "w")
- write_dump (specfile, partlist_gdump (partlist))
+ specfile = file ('%s/provision.xml' % dirname, "w")
+ write_gdump_to_xml (specfile, partlist_gdump (partlist))
specfile.close ()
output_fd.write ('%s\n' % os.path.basename (dirname))
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gimage-sel gutils/gimage-sel
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gimage-sel 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gimage-sel 2006-08-09 00:17:10.000000000 -0700
@@ -82,20 +82,22 @@ def main ():
if do_xfer:
try:
- spec_fd = file ('system-images/%s/provision.spec' % cookie)
+ spec_fd = file ('system-images/%s/provision.xml' % cookie)
except:
sys.exit (1)
- partlist = gdump_partlist (read_gdump (spec_fd))
+ partlist = gdump_partlist (read_xml_to_gdump (spec_fd))
parts = partlist.keys ()
parts.sort ()
parts = filter ((lambda x:
- partlist[x]['XFER'] == 'Y' and partlist[x]['FS'] != 'linux-swap'),
+ partlist[x].has_key ('XFER') \
+ and partlist[x]['XFER'] == 'Y' \
+ and partlist[x]['FS'] != 'linux-swap'),
parts)
print map (None, parts, commands)
sys.stdout.flush ()
gmap.gmap (xfer_fn, map (None, parts, commands))
else:
- fd = os.popen ("find system-images -name provision.spec -type f")
+ fd = os.popen ("find system-images -name provision.xml -type f")
specfiles = fd.readlines ()
fd.close ()
specfiles = map (string.strip, specfiles)
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gmeta-installer gutils/gmeta-installer
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gmeta-installer 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gmeta-installer 2006-08-11 18:09:25.000000000 -0700
@@ -137,14 +137,14 @@ def fstab_section (tx_buffer, mnt_buffer
chroot = "/tmp/ginstaller/%s" % array[1]
fstab = "%s/etc/fstab" % chroot
if array[2] == 'swap':
- if _parts[array[0]]['LABEL'] == '':
+ if not _parts[array[0]].has_key ('LABEL'):
fd.write ("echo \"%s none swap defaults 0 0\" >> %s\n" %
(array[0], fstab))
else:
fd.write ("echo \"LABEL=%s none swap defaults 0 0\" >> %s\n" %
(_parts[array[0]]['LABEL'], fstab))
else:
- if _parts[array[0]]['LABEL'] == '':
+ if not _parts[array[0]].has_key ('LABEL'):
fd.write ("echo \"%s %s auto defaults 1 1\" >> %s\n" %
(array[0], array[2], fstab))
else:
@@ -175,7 +175,7 @@ def bootloader_section (mnt_buf, tx_buf,
if pieces[2] != '/':
continue
- if partlist[pieces[0]]['OS'] == '':
+ if not partlist[pieces[0]].has_key ('OS'):
continue
bl_dict['%s' % pieces[0]] = None
@@ -185,7 +185,7 @@ def bootloader_section (mnt_buf, tx_buf,
continue
if len (src_partlist[part]['BLOADER']) == 0:
continue
- if src_partlist[part]['XFER'] == 'N':
+ if not src_partlist[part].has_key ('XFER'):
continue
teh_key = None
for tx_line in tx_buf:
@@ -451,8 +451,8 @@ def main ():
mnt_buf = map (string.strip, mnt_buf)
tx_buf = file (tx, "r").readlines ()
tx_buf = map (string.strip, tx_buf)
- partlist = gdump_partlist (read_gdump (file (dump)))
- src_partlist = gdump_partlist (read_gdump (file (inp_file)))
+ partlist = gdump_partlist (read_xml_to_gdump (file (dump)))
+ src_partlist = gdump_partlist (read_xml_to_gdump (file (inp_file)))
cmds_buf = file (commands_file).readlines ()
cmds_buf = map (string.strip, cmds_buf)
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gmount gutils/gmount
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gmount 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gmount 2006-08-08 18:41:47.000000000 -0700
@@ -23,14 +23,15 @@ from Gluster.GTmp import Dir
from Gluster.gpartdump import *
def mount_partitions (os_part, num):
- os_name = os_part['OS']
+ os_name = "%s%s" % (os_part['OS']['type'],
+ os_part['OS']['distro'])
mnt_pt = []
- for part in os_part['FSTAB'].keys ():
- if os_part['FSTAB'][part] == 'none' or \
- os_part['FSTAB'][part] == 'swap':
+ for entry in os_part['FSTAB']:
+ if entry[1] == 'none' or \
+ entry[1] == 'swap':
continue
mnt_pt.append ("%s:/tmp/ginstaller/%s%d%s" %
- (part, os_name, num, os_part['FSTAB'][part]))
+ (entry[0], os_name, num, entry[1]))
mnt_pt.sort (key=len)
for part in mnt_pt:
@@ -40,7 +41,7 @@ def mount_partitions (os_part, num):
os.system ("mount %s %s" % (dev, mp))
continue
- return
+ return None
def main ():
@@ -67,25 +68,29 @@ def main ():
if inp_file == None:
inp_file = os.popen ("gprobe")
- partlist = gdump_partlist (read_gdump (inp_file))
+ partlist = gdump_partlist (read_xml_to_gdump (inp_file))
parts = partlist.keys ()
parts.sort ()
if show_option == True:
for _part in parts:
- if partlist[_part]['OS'] == '':
+ if not partlist[_part].has_key ('OS'):
continue
- print "%s%d" % (partlist[_part]['OS'], part_num)
+ print "%s%s%d" % (partlist[_part]['OS']['type'],
+ partlist[_part]['OS']['distro'],
+ part_num)
part_num += 1
return
for _part in parts:
- if partlist[_part]['OS'] == '':
+ if not partlist[_part].has_key ('OS'):
continue
if os_key != 'all':
- if os_key != "%s%d" % (partlist[_part]['OS'], part_num):
+ if os_key != "%s%s%d" % (partlist[_part]['OS']['type'],
+ partlist[_part]['OS']['distro'],
+ part_num):
continue
- if len (partlist[_part]['FSTAB']) == 0:
+ if partlist[_part].has_key ('FSTAB'):
continue
mount_partitions (partlist[_part], part_num)
part_num += 1
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gmountmap gutils/gmountmap
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gmountmap 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gmountmap 2006-08-10 09:59:34.000000000 -0700
@@ -44,7 +44,7 @@ auto = False
#
#
-linux_group = ['ext2', 'ext3', 'reiserfs', 'jfx', 'xfs']
+linux_group = ['ext2', 'ext3', 'reiserfs', 'jfs', 'xfs']
windows_group = ['fat32', 'ntfs']
all_commands = []
@@ -54,7 +54,7 @@ def gpart_call (dest_partlist, os_dict,
d = Dir.TmpDir ()
inp = file (d.Name () + '/input', "w")
- write_dump (inp, partlist_gdump (dest_partlist))
+ write_gdump_to_xml (inp, partlist_gdump (dest_partlist))
inp.close ()
fmt = "gpart -c %s/commands -d %s/dump -i %s/input"
@@ -66,7 +66,7 @@ def gpart_call (dest_partlist, os_dict,
return (dest_partlist, os_dict)
dump_fd = file (d.Name () + '/dump')
- new_partlist = gdump_partlist (read_gdump (dump_fd))
+ new_partlist = gdump_partlist (read_xml_to_gdump (dump_fd))
dump_fd.close ()
if not auto:
@@ -100,22 +100,26 @@ def get_part_dict (partlist):
part_dict = {}
for part in partlist.keys ():
mountlist = {}
- if partlist[part]['XFER'] == 'N':
+ if partlist[part].has_key ('XFER'):
continue
for os_part in partlist.keys ():
- if partlist[os_part]['FSTAB'].has_key (part):
- mountlist[os_part] = partlist[os_part]['FSTAB'][part]
+ if partlist[os_part].has_key ('FSTAB'):
+ for entry in partlist[os_part]['FSTAB']:
+ if part == entry[0]:
+ mountlist[os_part] = entry[1]
part_dict[part] = mountlist.copy ()
return part_dict
def get_os_dict (partlist, part_dict, is_auto):
os_dict = {}
for part in partlist.keys ():
- if partlist[part]['XFER'] == 'N':
+ if partlist[part].has_key ('XFER'):
continue
- if partlist[part]['OS'] != '':
+ if partlist[part].has_key ('OS'):
os_dict[part] = {}
- os_dict[part]['OS'] = partlist[part]['OS']
+ os_dict[part]['OS'] = {}
+ os_dict[part]['OS']['type'] = partlist[part]['OS']['type']
+ os_dict[part]['OS']['distro'] = partlist[part]['OS']['distro']
os_dict[part]['SWAP'] = []
if is_auto:
os_dict[part]['FSTAB'] = { '/' : [part, True] }
@@ -123,9 +127,9 @@ def get_os_dict (partlist, part_dict, is
os_dict[part]['FSTAB'] = { '/' : [None, True] }
for part in partlist.keys ():
- if partlist[part]['XFER'] == 'N':
+ if partlist[part].has_key ('XFER'):
continue
- if partlist[part]['OS'] == '':
+ if not partlist[part].has_key ('OS') :
if not partlist[part]['TYPE'] in ['primary', 'logical']:
continue
@@ -139,7 +143,7 @@ def get_os_dict (partlist, part_dict, is
num_mounts = len (part_dict[part])
if num_mounts == 0:
os_dict[part] = {}
- os_dict[part]['OS'] = ''
+ # os_dict[part]['OS'] = ''
if is_auto:
os_dict[part]['FSTAB'] = { '/' : [part, True] }
else:
@@ -171,19 +175,19 @@ def run_map (os_dict, part_dict, source_
choices.append(('--------','----------------'))
idx = idx + 1
desc = ''
- if source_dump[os]['DESC'] != '':
- desc = '%s (%s on source) ' % (source_dump[os]['DESC'], os)
- key = '%s%d' % (source_dump[os]['OS'], idx)
+ if source_dump[os].has_key ('OS'):
+ desc = '%s (%s on source) ' % (source_dump[os]['OS']['desc'], os)
+ key = '%s%d' % (source_dump[os]['OS']['distro'], idx)
key_to_os[key] = os
else:
key = 'misc%d' % idx
key_to_os[key] = os
- if source_dump[os]['LABEL'] != '':
+ if source_dump[os].has_key ('LABEL'):
desc = 'LABEL=%s (%s on source)' % (source_dump[os]['LABEL'], os)
else:
desc = '(%s on source) %s' % (os, source_dump[os]['FS'])
- choices.append ((key,desc))
- os_name = source_dump[os]['OS']
+ choices.append ((key, desc))
+ os_name = source_dump[os]['OS']['distro']
for mp in os_dict[os]['FSTAB'].keys ():
k = '%s: %s' % (key, mp)
@@ -195,7 +199,7 @@ def run_map (os_dict, part_dict, source_
p = '*merged*'
choices.append ((k, p))
- if source_dump[os]['FSTAB'] != {}:
+ if source_dump[os]['FSTAB'] != []:
k = '%s: swap' % key
if len (os_dict[os]['SWAP']) > 0:
choices.append ((k, string.join (os_dict[os]['SWAP'])))
@@ -244,11 +248,11 @@ def run_map (os_dict, part_dict, source_
os = key_to_os[sel_os]
- if os_dict[os]['OS'] == '' and sel_mp == None:
+ if not os_dict[os].has_key ('OS') and sel_mp == None:
continue
if not sel_mp:
- if source_dump[os]['FSTAB'] != {}:
+ if source_dump[os]['FSTAB'] != []:
while True:
(ret, sel) = dlg.menu ('select action',
choices=[('add',
@@ -443,16 +447,17 @@ def get_key_from_os (part):
def fix_fstab (dest_partlist, os_dict):
for p in dest_partlist.keys ():
- dest_partlist[p]['FSTAB'] = {}
+ dest_partlist[p]['FSTAB'] = []
for os in os_dict.keys ():
- if os_dict[os]['OS'] == '':
+ if not os_dict[os].has_key ('OS'):
continue
os_part = os_dict[os]['FSTAB']['/'][0]
for mp, stuff in os_dict[os]['FSTAB'].iteritems ():
if not stuff[0]:
continue
- dest_partlist[os_part]['FSTAB'][stuff[0]] = mp
- dest_partlist[os_part]['OS'] = os_dict[os]['OS']
+ dest_partlist[os_part]['FSTAB'].append ((stuff[0], mp))
+ dest_partlist[os_part]['OS']['type'] = os_dict[os]['OS']['type']
+ dest_partlist[os_part]['OS']['distro'] = os_dict[os]['OS']['distro']
if 'SWAP' in os_dict[os].keys ():
for sp in os_dict[os]['SWAP']:
dest_partlist[os_part]['FSTAB'][sp] = 'swap'
@@ -480,7 +485,7 @@ def write_map (map_fd, source_partlist,
for part in parts:
if source_partlist[part]['FS'] == 'linux-swap':
continue
- if source_partlist[part]['XFER'] == 'N':
+ if source_partlist[part].has_key ('XFER'):
continue
if source_partlist[part]['TYPE'] in ['extended', 'disk']:
continue
@@ -542,7 +547,7 @@ def main ():
except:
sys.exit (1)
- source_dump = read_gdump (input_fd)
+ source_dump = read_xml_to_gdump (input_fd)
source_partlist = gdump_partlist (source_dump)
part_dict = get_part_dict (source_partlist)
@@ -552,7 +557,7 @@ def main ():
dest_dump = copy.deepcopy (source_dump)
else:
gprobe_fd = os.popen ("gprobe")
- dest_dump = read_gdump (gprobe_fd)
+ dest_dump = read_xml_to_gdump (gprobe_fd)
gprobe_fd.close ()
dest_partlist = gdump_partlist (dest_dump)
@@ -561,7 +566,7 @@ def main ():
if done:
fix_fstab (dest_partlist, os_dict)
- write_dump (dump_fd, partlist_gdump (dest_partlist))
+ write_gdump_to_xml (dump_fd, partlist_gdump (dest_partlist))
write_map (map_fd, source_partlist, part_dict)
@@ -570,7 +575,7 @@ def main ():
if auto:
d = Dir.TmpDir ()
dump_file = file (d.Name () + '/input', "w")
- write_dump (dump_file, partlist_gdump (dest_partlist))
+ write_gdump_to_xml (dump_file, partlist_gdump (dest_partlist))
dump_file.close ()
fmt = "gpart -a -i %s/input -d %s/dump -c %s/cmds"
os.system (fmt % (d.Name (), d.Name (), d.Name ()))
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gpart gutils/gpart
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gpart 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gpart 2006-08-08 23:24:58.000000000 -0700
@@ -261,7 +261,7 @@ def gpart_out (dump):
global dump_fd
if not dump:
return
- write_dump (dump_fd, dump)
+ write_gdump_to_xml (dump_fd, dump)
map (commands_fd.write, commands)
return
@@ -439,7 +439,8 @@ def alter_parts (partlist):
item = 'done'
backup = copy.deepcopy (partlist)
while True:
- label_len = max (map (lambda x: len (partlist[x]['LABEL']), partlist))
+ label_len = max (map (lambda x: partlist[x].has_key ('LABEL') \
+ and len (partlist[x]['LABEL']), partlist))
if label_len < 6:
label_len = 6
choices = [('parts',
@@ -593,11 +594,7 @@ def alter_parts (partlist):
'START' : start,
'SIZE' : size,
'END' : '%.2f%%' % end_p,
- 'OS' : '',
- 'DESC' : '',
'XFER' : 'N',
- 'FSTAB' : {},
- 'BLOADER' : {},
'TAINTED' : True}
if not validate (testlist):
continue
@@ -663,7 +660,7 @@ def main ():
except:
sys.exit (1)
- dump = read_gdump (input_fd)
+ dump = read_xml_to_gdump (input_fd)
if auto:
auto_out (dump)
else:
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gpartdump.py gutils/gpartdump.py
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gpartdump.py 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gpartdump.py 2006-08-08 18:43:24.000000000 -0700
@@ -20,6 +20,8 @@
import os, string, sys
from Gluster.GTmp import Dir
+import xml.dom.minidom
+from xml.dom.minidom import parse
def uniq (orig_list):
uniq_list = []
@@ -29,6 +31,9 @@ def uniq (orig_list):
return uniq_list
def get_mpoint (part):
+
+ """ Mount HDD """
+
hnd = os.popen ("mount | grep '^ *%s ' | awk '{print $3}'" % part)
line = hnd.readline ().strip ()
hnd.close ()
@@ -44,6 +49,9 @@ def get_mpoint (part):
return (True, tmpdir.Name ())
def unget_mpoint (need_umount, mpoint):
+
+ """ Umount HDD """
+
if not need_umount or not mpoint:
return
if need_umount:
@@ -52,72 +60,146 @@ def unget_mpoint (need_umount, mpoint):
def get_disk_part (partname):
diskname = partname.strip ('0123456789')
if diskname == partname:
- return (diskname, 0)
+ return (diskname, 0)
partnum = string.atoi (partname[len (diskname):])
return (diskname, partnum)
-def write_dump (fd, disks):
+def write_gdump_to_xml (fd, disks):
+
+ """ Dictionary to XML generator """
+
+ spec = xml.dom.minidom.Document ()
+ spec_element = spec.createElement ("spec")
+ spec.appendChild (spec_element)
+
+ # initial disc section
for disk_name in disks.keys ():
disk = disks[disk_name]
if not disk:
continue
- for part_no in disk.keys ():
+ disk_element = spec.createElement ("disk")
+ spec_element.appendChild (disk_element)
+ disk_element.setAttribute ("name", disk_name)
+ disk_element.setAttribute ("size", disk[0]['SIZE'])
+ disk_element.setAttribute ("type", disk[0]['TYPE'])
+
+ # partition section
+ for part_no in disk.keys ():
if part_no == 0:
- part_name = disk_name
- else:
- part_name = '%s%d' % (disk_name, part_no)
- fmt = '%s:%s:%s:%s:%s:%s:%s:%s:%s:%s\n'
- fd.write (fmt % (part_name,
- disk[part_no]['TYPE'],
- disk[part_no]['FS'],
- disk[part_no]['LABEL'],
- disk[part_no]['START'],
- disk[part_no]['END'],
- disk[part_no]['SIZE'],
- disk[part_no]['OS'],
- disk[part_no]['DESC'],
- disk[part_no]['XFER']))
- for fstab_part in disk[part_no]['FSTAB'].keys ():
- fd.write ('fstab:%s:%s:%s\n' %
- (part_name,
- fstab_part,
- disk[part_no]['FSTAB'][fstab_part]))
- for bootloader in disk[part_no]['BLOADER'].keys ():
- fd.write ('bootloader:%s:%s:%s\n' %
- (part_name,
- bootloader,
- disk[part_no]['BLOADER'][bootloader]))
+ continue
+ part_name = '%s%d' % (disk_name, part_no)
+ part_element = spec.createElement ("part")
+ disk_element.appendChild (part_element)
+ part_element.setAttribute ("number", str (part_no))
+ part_element.setAttribute ("start", disk[part_no]['START'])
+ part_element.setAttribute ("end", disk[part_no]['END'])
+ part_element.setAttribute ("size", disk[part_no]['SIZE'])
+ part_element.setAttribute ("type", disk[part_no]['TYPE'])
+ part = disk[part_no]
+
+ for attribute in part.keys ():
+ if attribute == 'FLAGS':
+ part_element.setAttribute ("flags", disk[part_no]['FLAGS'])
+ if attribute == 'FS':
+ part_element.setAttribute ("fs", disk[part_no]['FS'])
+ if attribute == 'LABEL':
+ part_element.setAttribute ("LABEL", disk[part_no]['LABEL'])
+ if attribute == 'XFER':
+ if disk[part_no]['XFER'] == 'Y':
+ part_element.setAttribute ("transfer", "yes")
+ else:
+ part_element.setAttribute ("transfer", "no")
+
+ # OS, and it's respective fstab section
+ if disk[part_no]['TYPE'] != 'extended':
+ if disk[part_no].has_key ('OS'):
+ os_element = spec.createElement ("os")
+ part_element.appendChild (os_element)
+ os_element.setAttribute ("type", disk[part_no]['OS']['type'])
+ os_element.setAttribute ("distro", disk[part_no]['OS']['distro'])
+ os_element.setAttribute ("desc", disk[part_no]['OS']['desc'])
+ if disk[part_no].has_key ('FSTAB'):
+ fstab_element = spec.createElement ("fstab")
+ os_element.appendChild (fstab_element)
+ for i in range (0,len (disk[part_no]['FSTAB'])):
+ entry_element = spec.createElement ("entry")
+ fstab_element.appendChild (entry_element)
+ entry_element.setAttribute ("source",
+ disk[part_no]['FSTAB'][i][0])
+ entry_element.setAttribute ("mpoint",
+ disk[part_no]['FSTAB'][i][1])
+ entry_element.setAttribute ("type",
+ disk[part_no]['FSTAB'][i][2])
+ entry_element.setAttribute ("flags",
+ disk[part_no]['FSTAB'][i][3])
+ entry_element.setAttribute ("boot",
+ disk[part_no]['FSTAB'][i][4])
+ entry_element.setAttribute ("pass",
+ disk[part_no]['FSTAB'][i][5])
+ # Boot loader section
+ if disk[part_no].has_key ('BLOADER'):
+ for bootloader in disk[part_no]['BLOADER'].keys ():
+ boot = disk[part_no]['BLOADER'][bootloader]
+ bloader_element = spec.createElement ("bootloader")
+ part_element.appendChild (bloader_element)
+ bloader_element.setAttribute ("type", bootloader)
+ bloader_element.setAttribute ("boot", boot)
+
+ spec.writexml (fd, newl="\n", addindent=" ")
+ return None
+def read_xml_to_gdump (fd):
-def read_gdump (fd):
+ """ XML to Dictionary Converter """
+
_disks = {}
- all_lines = fd.readlines ()
- for line in all_lines:
- pieces = line.strip (). split (':')
- if pieces[0] == 'fstab':
- (d, p) = get_disk_part (pieces[1])
- _disks[d][p]['FSTAB'][pieces[2]] = pieces[3]
- continue
- if pieces[0] == 'bootloader':
- (d, p) = get_disk_part (pieces[1])
- _disks[d][p]['BLOADER'][pieces[2]] = pieces[3]
- continue
- (d, p) = get_disk_part (pieces[0])
+ xml_doc = parse (fd)
+ spec = xml_doc._get_firstChild ()
+ for disk_element in spec.getElementsByTagName ("disk"):
+ d = disk_element.getAttribute ("name")
if not _disks.has_key (d):
_disks[d] = {}
- if not _disks[d].has_key (p):
- _disks[d][p] = {}
- _disks[d][p]['FSTAB'] = {}
- _disks[d][p]['BLOADER'] = {}
- _disks[d][p]['TYPE'] = pieces[1]
- _disks[d][p]['FS'] = pieces[2]
- _disks[d][p]['LABEL'] = pieces[3]
- _disks[d][p]['START'] = pieces[4]
- _disks[d][p]['END'] = pieces[5]
- _disks[d][p]['SIZE'] = pieces[6]
- _disks[d][p]['OS'] = pieces[7]
- _disks[d][p]['DESC'] = pieces[8]
- _disks[d][p]['XFER'] = pieces[9]
+ _disks[d][0] = {}
+ _disks[d][0]['START'] = ''
+ _disks[d][0]['END'] = ''
+ _disks[d][0]['SIZE'] = disk_element.getAttribute ("size")
+ _disks[d][0]['TYPE'] = disk_element.getAttribute ("type")
+ _disks[d][0]['FS'] = ''
+ for part_element in disk_element.getElementsByTagName ("part"):
+ p = int (part_element.getAttribute ("number"))
+ if not _disks[d].has_key (p):
+ _disks[d][p] = {}
+ _disks[d][p]['TYPE'] = part_element.getAttribute ("type")
+ _disks[d][p]['FS'] = part_element.getAttribute ("fs")
+ _disks[d][p]['LABEL'] = part_element.getAttribute ("LABEL")
+ _disks[d][p]['START'] = part_element.getAttribute ("start")
+ _disks[d][p]['END'] = part_element.getAttribute ("end")
+ _disks[d][p]['SIZE'] = part_element.getAttribute ("size")
+ if part_element.getAttribute ("transfer") != '':
+ if part_element.getAttribute ("transfer") == "yes":
+ _disks[d][p]['XFER'] = 'Y'
+ else:
+ _disks[d][p]['XFER'] = 'N'
+
+ for os_element in part_element.getElementsByTagName ("os"):
+ _disks[d][p]['OS'] = {}
+ _disks[d][p]['OS']['type'] = os_element.getAttribute ("type")
+ _disks[d][p]['OS']['distro'] = os_element.getAttribute ("distro")
+ _disks[d][p]['OS']['desc'] = os_element.getAttribute ("desc")
+ for boot_ele in part_element.getElementsByTagName ("bootloader"):
+ _disks[d][p]['BLOADER'] = {}
+ bloader_type = boot_ele.getAttribute ("type")
+ _disks[d][p]['BLOADER'][bloader_type] = boot_ele.getAttribute ("boot")
+
+ for fstab_element in part_element.getElementsByTagName ("fstab"):
+ _disks[d][p]['FSTAB'] = []
+ for entry_e in fstab_element.getElementsByTagName ("entry"):
+ _disks[d][p]['FSTAB'].append ((entry_e.getAttribute ("source"),
+ entry_e.getAttribute ("mpoint"),
+ entry_e.getAttribute ("type"),
+ entry_e.getAttribute ("flags"),
+ entry_e.getAttribute ("boot"),
+ entry_e.getAttribute ("pass")))
return _disks
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gpart-sel gutils/gpart-sel
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gpart-sel 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gpart-sel 2006-08-08 23:11:21.000000000 -0700
@@ -45,28 +45,33 @@ def sel_parts (_parts):
i = 0
idx_to_part = {}
for _part in _parts:
- if _parts[_part]['OS'] != '':
- if _parts[_part]['FS'] != '':
- i = i + 1
- sel_os.append ((str (i),_parts[_part]['DESC'],"on"))
- idx_to_part[i] = _part
-
- for _part in _parts:
- if _part in idx_to_part.values ():
+ if _parts[_part]['FS'] in ['*', '']:
continue
- found = False
- for os_part in idx_to_part.values ():
- if _part in _parts[os_part]['FSTAB'].keys ():
- found = True
- break
- if found:
+ if _parts[_part]['TYPE'] not in ['logical', 'primary']:
continue
- if _parts[_part]['FS'] != '':
+ if _parts[_part].has_key('OS'):
+ i = i + 1
+ desc = "%s %s" % (_parts[_part]['OS']['distro'],
+ _parts[_part]['OS']['desc'])
+ sel_os.append ((str (i),
+ desc,
+ "on"))
+ idx_to_part[i] = _part
+ else:
+ found = False
+ for os_part in _parts.keys ():
+ if _parts[os_part].has_key ('FSTAB'):
+ for entry in _parts[os_part]['FSTAB']:
+ if _part == entry[0]:
+ found = True
+ break
+ if found:
+ continue
i = i + 1
sel_os.append ((str (i),
"%s ( %s | %s )" % (_part,
- _parts[_part]['FS'],
- _parts[_part]['SIZE']),
+ _parts[_part]['FS'],
+ _parts[_part]['SIZE']),
"on"))
idx_to_part[i] = _part
@@ -83,39 +88,45 @@ def sel_parts (_parts):
return (1, None)
else:
sel_ids = map (lambda (x, y, z): x, sel_os)
-
+
sel_parts = map (idx_to_part.get, map (string.atoi, sel_ids))
new_parts = []
for sel_part in sel_parts:
- if _parts[sel_part]['OS'] == '':
+ if not _parts[sel_part].has_key ('OS'):
new_parts.append (sel_part)
continue
fstab_list = []
- for f in _parts[sel_part]['FSTAB'].keys ():
- if f in _parts.keys () and _parts[f]['FS'] != '':
- fstab_list.append ((f, _parts[sel_part]['FSTAB'][f], "on"))
+ if _parts[sel_part].has_key ('FSTAB'):
+ for entry in _parts[sel_part]['FSTAB']:
+ if entry[0] in _parts.keys () and _parts[entry[0]]['FS'] != '':
+ fstab_list.append ((entry[0],
+ entry[1],
+ "on"))
if len (fstab_list) == 0:
continue
+ desc = "%s %s" % (_parts[sel_part]['OS']['distro'],
+ _parts[sel_part]['OS']['desc'])
(ret,
- small_parts) = dlg.checklist ('\n%s\n\n' % _parts[sel_part]['DESC'],
+ small_parts) = dlg.checklist ('\n%s\n\n' %
+ desc,
title='[ Select Partitions ]',
choices=fstab_list,
ok_label=' Select ')
if ret != 0:
continue
# this is for the sake of merging partitions in destination
- for del_part in _parts[sel_part]['FSTAB'].keys ():
- if not del_part in small_parts:
- _parts[sel_part]['FSTAB'].pop (del_part)
+ if _parts[sel_part].has_key ('FSTAB'):
+ for entry in _parts[sel_part]['FSTAB']:
+ del_part = entry[0]
+ if not del_part in small_parts:
+ _parts[sel_part]['FSTAB'].remove (entry)
new_parts += small_parts
-
+
if new_parts == []:
return (1, [])
- return (0,uniq (sel_parts + new_parts))
+ return (0, uniq (sel_parts + new_parts))
def main ():
- global port_base
- global xfer_cmd
global _parts
spec_fd = sys.stdin
cfd = sys.stdout
@@ -155,8 +166,7 @@ def main ():
except:
sys.exit (1)
- _parts = gdump_partlist (read_gdump (spec_fd))
-
+ _parts = gdump_partlist (read_xml_to_gdump (spec_fd))
(ret, parts_selected) = sel_parts (_parts)
if ret != 0:
sys.exit (1)
@@ -167,19 +177,23 @@ def main ():
for part in parts_selected:
_parts[part]['XFER'] = 'Y'
- write_dump (cfd, partlist_gdump (_parts))
-
+ write_gdump_to_xml (cfd, partlist_gdump (_parts))
- partlist = _parts
- parts = partlist.keys ()
- parts.sort ()
+ parts = _parts.keys ()
parts = filter ((lambda x:
- partlist[x]['XFER'] == 'Y' and partlist[x]['FS'] != 'linux-swap'),
+ _parts[x].has_key ('XFER') \
+ and _parts[x]['XFER'] == 'Y' \
+ and _parts[x]['FS'] != 'linux-swap'),
parts)
bytes = 0
+ print parts
+ os.system ("read")
for part in parts:
(need_umount, mp) = get_mpoint (part)
+ print mp
+ print need_umount
+ os.system ("read")
if not mp:
dlg.msgbox ('could not mount %s' % part)
sys.exit (1)
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gprobe gutils/gprobe
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gprobe 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gprobe 2006-08-09 00:04:41.000000000 -0700
@@ -44,7 +44,10 @@ distro_db = {
'echo unknown Redhat style distribution']
}
-def get_bootloader (part, _fstab):
+def get_bootloader (part):
+
+ """ Bootloader Dictionary """
+
(need_umount, mpoint) = get_mpoint (part)
if not mpoint:
return {}
@@ -59,61 +62,65 @@ def get_bootloader (part, _fstab):
bootloader['grub'] = 'default'
# If /boot is mapped to another partition, then check for
# grub/menu.lst in the path
- for k, v in _fstab.iteritems ():
- if '/boot' == v:
- (tmp_need_umount, tmp_mpoint) = get_mpoint (k)
- if not tmp_mpoint:
- unget_mpoint (need_umount, mpoint)
- return {}
- if os.access ("%s/grub/menu.lst" % tmp_mpoint, os.R_OK):
- bootloader['grub'] = 'default'
- unget_mpoint (tmp_need_umount, tmp_mpoint)
-
- if os.access ("%s/ntldr" % mpoint, os.R_OK) \
- or os.access ("%s/boot.ini" % mpoint, os.R_OK):
- bootloader['windows'] = part #need to check this still
+ # for i in range (0, len (_fstab)):
+ # if '/boot' == _fstab[i][1]:
+ # (tmp_need_umount, tmp_mpoint) = get_mpoint (_fstab[i][0])
+ # if not tmp_mpoint:
+ # unget_mpoint (need_umount, mpoint)
+ # return {}
+ # if os.access ("%s/grub/menu.lst" % tmp_mpoint, os.R_OK):
+ # bootloader['grub'] = 'default'
+ # unget_mpoint (tmp_need_umount, tmp_mpoint)
+
+ #if os.access ("%s/ntldr" % mpoint, os.R_OK) \
+ # or os.access ("%s/boot.ini" % mpoint, os.R_OK):
+ # bootloader['windows'] = part # Decision yet to be done !!!
unget_mpoint (need_umount, mpoint)
return bootloader
-def get_fstab (part, _parts):
+def get_fstab (part):
+
+ """ Filesystem table List """
+
(need_umount, mpoint) = get_mpoint (part)
if not mpoint:
- return {}
- fstab = {}
- hnd = os.popen ("cat %s/etc/fstab | grep -v '^#' | awk '{print $1\":\"$2}'" %
+ return []
+ fstab = []
+ hnd = os.popen ("cat %s/etc/fstab | grep -v '^#' 2>/dev/null" %
mpoint)
fstab_entries = hnd.readlines ()
-
+
for entry in fstab_entries:
- entry_pieces = entry.strip (). split (':')
- if len (entry_pieces) != 2:
- continue
- if len (entry_pieces[0].split ("=")) == 2:
- (l1, l2) = entry_pieces[0].split ("=")
- l2 = l2.strip ('"')
- for p in _parts.keys ():
- if l1 in _parts[p].keys () and l2 == _parts[p][l1]:
- fstab[p] = entry_pieces[1]
- else:
- if entry_pieces[0] in _parts.keys ():
- fstab[entry_pieces[0]] = entry_pieces[1]
+ (source, mpoint, type, flags, boot, pas) = (entry.strip ().split ()[0],
+ entry.strip ().split ()[1],
+ entry.strip ().split ()[2],
+ entry.strip ().split ()[3],
+ entry.strip ().split ()[4],
+ entry.strip ().split ()[5])
+ entry_pieces = (source, mpoint, type, flags, boot, pas)
+ fstab.append (entry_pieces)
unget_mpoint (need_umount, mpoint)
return fstab
def get_os_desc (part):
+
+ """ Operating System Dictionary """
+
(need_umount, mpoint) = get_mpoint (part)
if not mpoint:
- return ('', '')
-
+ return ('', '', '')
+
+ the_os = ''
the_distro = ''
the_desc = ''
if os.system ("ls %s/lib/ld-* >/dev/null 2>/dev/null" % mpoint) == 0 \
or os.system ("ls %s/lib64/ld-* >/dev/null 2>&1" % mpoint) == 0:
+ the_os = 'Linux'
the_distro = 'unknown_gnu/linux'
the_desc = 'Unknown GNU/Linux distribution'
for k,v in distro_db.iteritems ():
@@ -123,18 +130,26 @@ def get_os_desc (part):
the_desc = hnd.readline ().strip ()
hnd.close ()
break
-
+ #if os.access ("%s/windows/system32/ntoskrnl.exe" % mpoint, os.R_OK) \
+ # or os.access ("%s/pagefile.sys" % mpoint, os.R_OK):
+ # the_os = 'Windows'
+ # the_distro = 'Unknown Windows NT'
+ # the_desc = 'Unknown Version'
+
unget_mpoint (need_umount, mpoint)
- return (the_distro, the_desc)
+ return (the_os, the_distro, the_desc)
def get_parts ():
+
+ """ Partitions dictionary """
+
_parts = {}
hnd = os.popen ("blkid -c /dev/null 2>/dev/null")
blk_lines = hnd.readlines ()
hnd.close ()
for blk_line in blk_lines:
- blk_line_pieces = blk_line.strip ().split ()
+ blk_line_pieces = blk_line.split ()
dev_part = blk_line_pieces[0].split (':')[0]
part_val = {}
for other_part in blk_line_pieces[1:]:
@@ -146,21 +161,24 @@ def get_parts ():
return _parts
def get_disk_info (_disk):
+
+ """ Disk database generator """
+
_disk_db = {}
parted_fd = os.popen ("parted -s %s unit %% print" % _disk)
parted_lines = parted_fd.readlines ()
parted_fd.close ()
if len(parted_lines) == 0:
return None
- _pieces = parted_lines[0].split()
+ _pieces = parted_lines[1].split()
_disk_db[0] = {}
- _disk_db[0]['START'] = _pieces[4]
- _disk_db[0]['END'] = _pieces[6]
- _disk_db[0]['SIZE'] = _pieces[6]
+ _disk_db[0]['START'] = ''
+ _disk_db[0]['END'] = ''
+ _disk_db[0]['SIZE'] = _pieces[2]
_disk_db[0]['TYPE'] = 'disk'
_disk_db[0]['FS'] = ''
- for part_line in parted_lines[3:]:
- _pieces = part_line.strip ().split ()
+ for part_line in parted_lines[6:-1]:
+ _pieces = part_line.split ()
_ent = string.atoi (_pieces[0])
_disk_db[_ent] = {}
_disk_db[_ent]['START'] = _pieces[1]
@@ -170,11 +188,12 @@ def get_disk_info (_disk):
_disk_db[_ent]['FS'] = ''
if _disk_db[_ent]['TYPE'] in ['logical', 'primary']:
_disk_db[_ent]['FS'] = _pieces[5]
- if len (_pieces) > 6:
- _disk_db[_ent]['FLAGS'] = _pieces[6:]
- else:
- if len (_pieces) > 5:
- _disk_db[_ent]['FLAGS'] = _pieces[5:]
+ if len (_pieces) > 7:
+ _disk_db[_ent]['FLAGS'] = _pieces[6] + _pieces[7]
+ else:
+ _disk_db[_ent]['FS'] = _pieces[5]
+ if len (_pieces) > 6:
+ _disk_db[_ent]['FLAGS'] = _pieces[6]
return _disk_db
def get_disks ():
@@ -182,9 +201,12 @@ def get_disks ():
probe_lines = probe_fd.readlines ()
probe_fd.close ()
probe_lines = map (string.strip, probe_lines)
- return probe_lines
+ return probe_lines
def main ():
+
+ """ Gluster Partition Prober """
+
_disks = get_disks ()
_parts = get_parts ()
disks = {}
@@ -195,25 +217,28 @@ def main ():
for part_no in disks[_disk].keys ():
part_name = '%s%d' % (_disk, part_no)
if disks[_disk][part_no]['TYPE'] == 'extended':
- os, desc = '', ''
+ os_type, os_distro, os_desc = '', '', ''
else:
- (os, desc) = get_os_desc (part_name)
+ (os_type, os_distro, os_desc) = get_os_desc (part_name)
disks[_disk][part_no]['XFER'] = 'N'
- disks[_disk][part_no]['OS'] = os
- disks[_disk][part_no]['DESC'] = desc
- disks[_disk][part_no]['FSTAB'] = {}
+
+ if os_type != '':
+ disks[_disk][part_no]['OS'] = {}
+ disks[_disk][part_no]['OS']['type'] = os_type
+ disks[_disk][part_no]['OS']['distro'] = os_distro
+ disks[_disk][part_no]['OS']['desc'] = os_desc
+ disks[_disk][part_no]['FSTAB'] = []
+ fstab = get_fstab (part_name)
+ disks[_disk][part_no]['FSTAB'] = fstab
disks[_disk][part_no]['BLOADER'] = {}
- if os != '':
- fstab = get_fstab (part_name, _parts)
- disks[_disk][part_no]['FSTAB'] = fstab
- bootloader = get_bootloader (part_name, fstab)
- disks[_disk][part_no]['BLOADER'] = bootloader
+ bootloader = get_bootloader (part_name)
+ disks[_disk][part_no]['BLOADER'] = bootloader
disks[_disk][part_no]['LABEL'] = ''
if part_name in _parts.keys ():
if 'LABEL' in _parts[part_name].keys ():
disks[_disk][part_no]['LABEL'] = _parts[part_name]['LABEL']
- write_dump (sys.stdout, disks)
+ write_gdump_to_xml (sys.stdout, disks)
return
main ()
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gstate-sel gutils/gstate-sel
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gstate-sel 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gstate-sel 2006-08-08 18:41:47.000000000 -0700
@@ -66,14 +66,13 @@ def set_part (part, fresh=False):
return True
def get_cmdline_state ():
- # gluster_state=/dev/sda1 should return 'sda1'
cmdline = file ('/proc/cmdline').readline ().strip ()
pieces = cmdline.split ()
for piece in pieces:
sub_pieces = piece.split ('=')
if len (sub_pieces) > 1:
if sub_pieces[0] == 'gluster_state':
- return sub_pieces[1].split ('/')[-1]
+ return sub_pieces[1]
return None
def init_fix (parts):
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gumount gutils/gumount
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/gutils/gumount 2006-08-04 12:39:13.000000000 -0700
+++ gutils/gumount 2006-08-09 00:12:52.000000000 -0700
@@ -23,14 +23,14 @@ from Gluster.GTmp import Dir
from Gluster.gpartdump import *
def umount_partitions (os_part, num):
- os_name = os_part['OS']
+ os_name = os_part['OS']['type'] + os_part['OS']['distro']
mnt_pt = []
- for part in os_part['FSTAB'].keys ():
- if os_part['FSTAB'][part] == 'none' or \
- os_part['FSTAB'][part] == 'swap':
+ for entry in os_part['FSTAB']:
+ if entry[1] == 'none' or \
+ entry[1] == 'swap':
continue
mnt_pt.append ("/tmp/ginstaller/%s%d%s" %
- (os_name, num, os_part['FSTAB'][part]))
+ (os_name, num, entry[1]))
mnt_pt.sort (key=len, reverse=True)
for mp in mnt_pt:
@@ -64,25 +64,25 @@ def main ():
if inp_file == None:
inp_file = os.popen ("gprobe")
- partlist = gdump_partlist (read_gdump (inp_file))
+ partlist = gdump_partlist (read_xml_to_gdump (inp_file))
parts = partlist.keys ()
parts.sort ()
if show_option == True:
for _part in parts:
- if partlist[_part]['OS'] == '':
+ if not partlist[_part].has_key ('OS'):
continue
print "%s%d" % (partlist[_part]['OS'], part_num)
part_num += 1
return
for _part in parts:
- if partlist[_part]['OS'] == '':
+ if not partlist[_part].has_key ('OS'):
continue
if os_key != 'all':
if os_key != "%s%d" % (partlist[_part]['OS'], part_num):
continue
- if len (partlist[_part]['FSTAB']) == 0:
+ if partlist[_part].has_key ('FSTAB'):
continue
umount_partitions (partlist[_part], part_num)
part_num += 1
-------------- next part --------------
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/GlusterEP/GCapture GlusterEP/GCapture
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/GlusterEP/GCapture 2006-08-04 12:39:07.000000000 -0700
+++ GlusterEP/GCapture 2006-08-10 10:24:34.000000000 -0700
@@ -30,7 +30,7 @@ my_ip = os.popen ("ifconfig -a | sed -n
port_base = 13370
def source_config ():
- if os.system ('gprobe | gpart-sel -o /tmp/gc.spec -m /tmp/gc_approx_max -c /tmp/gc.tar.cmds') == 0:
+ if os.system ('gprobe | gpart-sel -o /tmp/gc.xml -m /tmp/gc_approx_max -c /tmp/gc.tar.cmds') == 0:
return
else:
sys.exit (1)
@@ -39,16 +39,18 @@ def source_config ():
def dest_config ():
os.system ('ssh master-node mkdir -p /var/tmp/%s' % my_ip)
os.system ('scp /tmp/gc.spec master-node:/var/tmp/%s' % my_ip)
- if os.system ("ssh -t master-node 'gimage-dump -s /var/tmp/%s/gc.spec -o /var/tmp/%s/cookie'" % (my_ip, my_ip)) != 0:
+ if os.system ("ssh -t master-node 'gimage-dump -s /var/tmp/%s/gc.xml -o /var/tmp/%s/cookie'" % (my_ip, my_ip)) != 0:
sys.exit (1)
return
return
def source_action ():
- partlist = gdump_partlist (read_gdump (file ('/tmp/gc.spec')))
+ partlist = gdump_partlist (read_xml_to_gdump (file ('/tmp/gc.xml')))
parts = partlist.keys ()
parts = filter ((lambda x:
- partlist[x]['FS'] != 'linux-swap' and partlist[x]['XFER'] == 'Y'),
+ partlist[x]['FS'] != 'linux-swap' \
+ and partlist[x].has_key ('XFER') \
+ and partlist[x]['XFER'] == 'Y'),
parts)
parts.sort ()
no_parts = len (parts)
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/GlusterEP/GlusterEP GlusterEP/GlusterEP
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/GlusterEP/GlusterEP 2006-08-04 12:39:07.000000000 -0700
+++ GlusterEP/GlusterEP 2006-08-08 18:41:49.000000000 -0700
@@ -101,7 +101,6 @@ def image_management ():
return
def config_client ():
- os.system ("rm /var/gluster/EP/bootp.iface -f")
os.system ("/etc/stage2/config_network.sh")
os.system ("gdump-netstate /var/gluster/EP/rc.local")
os.system ("chmod +x /var/gluster/EP/rc.local")
@@ -144,12 +143,7 @@ def master ():
os.system ("/var/gluster/EP/rc.local")
# GExtension.run ('client-reg')
- while True:
- if GExtension.run ('bootp-manager', '--allow 2>>/var/log/proglog') != 1:
- break
- os.system ("/etc/stage2/config_network.sh")
- os.system ("gdump-netstate /var/gluster/EP/rc.local")
- os.system ("chmod +x /var/gluster/EP/rc.local")
+ GExtension.run ('bootp-manager', '--allow 2>>/var/log/proglog')
first_time = True
while ('<no users>', '') in get_usernames ():
diff -pruN /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/GlusterEP/GProvision GlusterEP/GProvision
--- /home/harsha/gluster-work/current-rc3/gluster--mainline--1.0--patch-93/extensions/GlusterEP/GProvision 2006-08-04 12:39:07.000000000 -0700
+++ GlusterEP/GProvision 2006-08-11 18:07:50.000000000 -0700
@@ -37,9 +37,9 @@ def source_config ():
cookie = os.popen ('ssh master-node cat /var/tmp/%s/cookie' % my_ip).readline ().strip ()
if not cookie:
return None
- spec_fd = os.popen ('ssh master-node cat system-images/%s/provision.spec'
+ spec_fd = os.popen ('ssh master-node cat system-images/%s/provision.xml'
% cookie)
- partlist = gdump_partlist (read_gdump (spec_fd))
+ partlist = gdump_partlist (read_xml_to_gdump (spec_fd))
spec_fd.close ()
return partlist
@@ -48,7 +48,9 @@ def source_action (partlist):
global cookie
parts = partlist.keys ()
parts = filter ((lambda x:
- partlist[x]['FS'] != 'linux-swap' and partlist[x]['XFER'] == 'Y'),
+ partlist[x]['FS'] != 'linux-swap' \
+ and partlist[x].has_key ('XFER') \
+ and partlist[x]['XFER'] == 'Y'),
parts)
parts.sort ()
no_parts = len (parts)
@@ -68,14 +70,16 @@ def source_action (partlist):
return
def dest_config (partlist):
- spec_fd = file ('/tmp/provision.spec', "w")
- write_dump (spec_fd, partlist_gdump (partlist))
+ spec_fd = file ('/tmp/provision.xml', "w")
+ write_gdump_to_xml (spec_fd, partlist_gdump (partlist))
spec_fd.flush ()
spec_fd.close ()
parts = partlist.keys ()
parts = filter ((lambda x:
- partlist[x]['FS'] != 'linux-swap' and partlist[x]['XFER'] == 'Y'),
+ partlist[x]['FS'] != 'linux-swap' \
+ and partlist[x].has_key ('XFER') \
+ and partlist[x]['XFER'] == 'Y'),
parts)
parts.sort ()
no_parts = len (parts)
@@ -90,12 +94,12 @@ def dest_config (partlist):
title='[ Partition Assignment ]',
yes_label='Auto',
no_label='Manual'):
- if os.system ('gmeta-installer -i /tmp/provision.spec -c /tmp/gprov.dest.cmds') == 0:
+ if os.system ('gmeta-installer -i /tmp/provision.xml -c /tmp/gprov.dest.cmds') == 0:
return
else:
sys.exit (0)
else:
- os.system ('gmeta-installer --auto -i /tmp/provision.spec -c /tmp/gprov.dest.cmds')
+ os.system ('gmeta-installer --auto -i /tmp/provision.xml -c /tmp/gprov.dest.cmds')
return
def gprov_action (spec):
-------------- next part --------------
diff -pruN parted-1.7.0/parted/parted.c parted-1.7.0-h/parted/parted.c
--- parted-1.7.0/parted/parted.c 2006-05-15 03:09:26.000000000 -0700
+++ parted-1.7.0-h/parted/parted.c 2006-08-03 17:28:27.000000000 -0700
@@ -1113,7 +1113,9 @@ partition_print_flags (PedPartition* par
strncat (res, name, 21);
}
}
-
+ if (first_flag) {
+ strncat (res, "*", 1);
+ }
return res;
}
@@ -1340,7 +1342,7 @@ do_print (PedDevice** dev)
str_list_append (row, name);
str_list_append (row, part->fs_type ?
- part->fs_type->name : "");
+ part->fs_type->name : "*");
if (has_name)
str_list_append (row, name);
More information about the Gluster-devel
mailing list