modified: ri_tk_cmd.py

fix
        display index data of Mount.dict, top_windows, raid, etc.
This commit is contained in:
fling
2010-10-17 00:21:01 +08:00
parent f536b578c5
commit 9322af8a4f

View File

@@ -38,29 +38,25 @@ def mount_list_modify(*args):
def mp_top_init():
''' mount dir top window initialize '''
ml_win = ri_widget.Widget.dict['mount.list'].tk_widget
idxs = ml_win.curselection()
key_sort_list=ri_data.MountPoint.dict.keys()
key_sort_list.sort()
if len(idxs) == 1:
idx = int(idxs[0])
mp = ri_data.MountPoint.dict[key_sort_list[idx]]
dev = mp.device
dir = mp.directory
fs = mp.filesystem
fm = mp.format
sz = ri_data.Partition.dict.has_key(dev) and ri_data.Partition.dict[dev].size or ri_data.Raid.get_size(dev)
display.var_dict['mp_top_dev'].set(value=dev)
display.var_dict['mp_top_size'].set(value=sz)
display.var_dict['mp_top_dir'].set(value=dir)
if fm == 'yes':
ri_widget.Widget.dict['mp_top_format'].tk_widget.select()
else:
ri_widget.Widget.dict['mp_top_not_format'].tk_widget.select()
get_dev = ml_win.selection_get().split(' ')[0]
mp = ri_data.MountPoint.dict[get_dev]
dev = mp.device
dir = mp.directory
fs = mp.filesystem
fm = mp.format
sz = ri_data.Partition.dict.has_key(dev) and ri_data.Partition.dict[dev].size or ri_data.Raid.get_size(dev)
display.var_dict['mp_top_dev'].set(value=dev)
display.var_dict['mp_top_size'].set(value=sz)
display.var_dict['mp_top_dir'].set(value=dir)
if fm == 'yes':
ri_widget.Widget.dict['mp_top_format'].tk_widget.select()
else:
ri_widget.Widget.dict['mp_top_not_format'].tk_widget.select()
fs_values = eval(display.var_dict['mp_top_fs'].get())
for i in range(len(fs_values)):
if fs == fs_values[i]:
ri_widget.Widget.dict['mp_top_fs'].tk_widget.selection_set(i)
fs_values = eval(display.var_dict['mp_top_fs'].get())
for i in range(len(fs_values)):
if fs == fs_values[i]:
ri_widget.Widget.dict['mp_top_fs'].tk_widget.selection_set(i)
def mp_top_ok():
''' mount dir top window OK '''
@@ -75,13 +71,13 @@ def mp_top_ok():
fm = display.var_dict['mp_top_format'].get()
idxs2 = ri_widget.Widget.dict['mp_top_fs'].tk_widget.curselection()
for m in ri_data.Partition.dict.values():
if m.device == dev2:
base_fs = m.filesystem
if m.device == dev2:
base_fs = m.filesystem
if len(idxs2) and fm =='yes' :
idx2 = int(idxs2[0])
fs = eval(display.var_dict['mp_top_fs'].get())[idx2]
idx2 = int(idxs2[0])
fs = eval(display.var_dict['mp_top_fs'].get())[idx2]
elif fm=='no':
fs = base_fs
fs = base_fs
s2 = dev.ljust(10) + dir.ljust(10) + fs.ljust(10) + fm.ljust(4) + sz.ljust(6)+ri_data.Partition.unit
l.append(s2)
# make change in internal data structure
@@ -283,6 +279,7 @@ def list_to_list(list_from, var_from, var_to):
l_to.append(itm)
else:
l_to = [ itm ]
l_to.sort()
display.var_dict[var_to].set(value=tuple(l_to))
def raid_raw_to_active():
@@ -303,31 +300,10 @@ def raid_spare_to_raw():
def raid_device_init():
''' initialize raid device list '''
raid_devs = [ r.device for r in ri_data.Raid.dict.values()]
raid_devs = [ d for d in ri_data.Raid.dict.keys()]
raid_devs.sort()
display.var_dict['raid_devs'].set(value=tuple(raid_devs))
def raid_calc_size(level, devs):
''' calculate raid device size
level - raid level (0/1/5)
devs - raid component devices
'''
# all devs shall have same size.
unit=ri_data.Partition.unit
dev_size_list=[]
for p in ri_data.Partition.dict.values():
if p.device in devs:
dev_size_list.append(float(p.size))
dev_size_list.sort()
sz=float(dev_size_list[0])
if level == '0':
sz=sz*len(devs)
return str(sz)
elif level == '1':
return str(sz)
elif level == '5':
sz=sz*(len(devs)-1)
return str(sz)
def raid_device_add():
''' add a new raid device '''
if display.var_dict['raid_active_devs'].get()=='':
@@ -365,40 +341,36 @@ def raid_device_add():
def raid_device_delete():
''' delete a raid device, put its component devices into active/spare device list '''
win_dev = ri_widget.Widget.dict['raid_dev.list'].tk_widget
idxs = win_dev.curselection()
if len(idxs) == 1:
idx = int(idxs[0])
r = ri_data.Raid.dict.values()[idx]
if r.from_os == 'yes':
ri_widget.MessageBox.dict["raid_delete_warning"].show()
return
if display.var_dict['raid_active_devs'].get() == '':
active=[]
else:
active = list(eval(display.var_dict['raid_active_devs'].get()))
if display.var_dict['raid_spare_devs'].get()=='':
spare=[]
else:
spare = list(eval(display.var_dict['raid_spare_devs'].get()))
get_dev=win_dev.selection_get()
r = ri_data.Raid.dict[get_dev]
if r.from_os == 'yes':
ri_widget.MessageBox.dict["raid_delete_warning"].show()
return
if display.var_dict['raid_active_devs'].get() == '':
active=[]
else:
active = list(eval(display.var_dict['raid_active_devs'].get()))
if display.var_dict['raid_spare_devs'].get()=='':
spare=[]
else:
spare = list(eval(display.var_dict['raid_spare_devs'].get()))
active.extend(r.active_components)
spare.extend(r.spare_components)
# do not touch level
display.var_dict['raid_active_devs'].set(value=tuple(active))
display.var_dict['raid_spare_devs'].set(value=tuple(spare))
del ri_data.Raid.dict.values()[idx]
raid_device_init()
active.extend(r.active_components)
spare.extend(r.spare_components)
# do not touch level
display.var_dict['raid_active_devs'].set(value=tuple(active))
display.var_dict['raid_spare_devs'].set(value=tuple(spare))
del ri_data.Raid.dict[get_dev]
raid_device_init()
def raid_device_list_detail(*args):
''' show details of a raid device '''
win = ri_widget.Widget.dict['raid_dev.list'].tk_widget
idxs = win.curselection()
if len(idxs) == 1:
idx = int(idxs[0])
r = ri_data.Raid.dict.values()[idx]
display.var_dict['raid_detail_active'].set(value='active: %s' %(str(r.active_components)))
display.var_dict['raid_detail_spare'].set(value='spare: %s' %(str(r.spare_components)))
display.var_dict['raid_detail_level'].set(value='level: %s' %(str(r.level)))
get_dev = win.selection_get()
r = ri_data.Raid.dict[get_dev]
display.var_dict['raid_detail_active'].set(value='active: %s' %(str(r.active_components)))
display.var_dict['raid_detail_spare'].set(value='spare: %s' %(str(r.spare_components)))
display.var_dict['raid_detail_level'].set(value='level: %s' %(str(r.level)))
def install_information_init():
'''install information initialize'''