finish the code of the interface of the partition-tool
modified: new_partition/interface_partition.py
This commit is contained in:
@@ -8,13 +8,6 @@ screen = SnackScreen()
|
||||
screen.drawRootText(0, 0, "Welcome to Rocky Security OS")
|
||||
screen.pushHelpLine( (" F1-New F2-Delete F3-Boot F4-Raid F12-OK "))
|
||||
|
||||
global count
|
||||
count = 0
|
||||
def DEBUG():
|
||||
global count
|
||||
print 'debug' + str(count)
|
||||
count = count + 1
|
||||
|
||||
global base_unit
|
||||
base_unit = 'B'
|
||||
|
||||
@@ -84,18 +77,6 @@ def unit_to_byte(num_unit):
|
||||
num_byte = num*1000*1000*1000
|
||||
return num_byte
|
||||
|
||||
def sort_partition(dev):
|
||||
list_partition = []
|
||||
list_partition_sorted = []
|
||||
for partition in p_d.Partition.dict[dev]['partition'].keys():
|
||||
list_partition.append(partition)
|
||||
list_partition_sorted.append(partition)
|
||||
print list_partition
|
||||
for partition in list_partition:
|
||||
sn = p_d.Partition.dict[dev]['partition'][partition]['sn']
|
||||
list_partition_sorted[int(sn)-1] = partition
|
||||
return list_partition_sorted
|
||||
|
||||
def showPartitionWindow():
|
||||
global clb
|
||||
global bb
|
||||
@@ -114,7 +95,6 @@ def showPartitionWindow():
|
||||
dev_name = dev.split('/dev/')[1]
|
||||
partition_table = p_d.Partition.dict[dev]['partition_table']
|
||||
dev_size = p_d.Partition.dict[dev]['disk_size']
|
||||
#dev_size_pretty = pretty_unit(filter(str.isdigit, dev_size))
|
||||
|
||||
clb.append(["%s" %(dev),"","","","",""], \
|
||||
"dev:%s:%s" %(dev,dev_size), [LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT])
|
||||
@@ -122,6 +102,11 @@ def showPartitionWindow():
|
||||
if partition_table == None:
|
||||
continue
|
||||
|
||||
if re.search('/cciss/', dev):
|
||||
pre_partition_name = dev + 'p'
|
||||
else:
|
||||
pre_partition_name = dev
|
||||
|
||||
list_partition_all_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "all")
|
||||
for partition in list_partition_all_sorted:
|
||||
start = p_d.Partition.dict[dev]['partition'][partition]['start']
|
||||
@@ -148,7 +133,7 @@ def showPartitionWindow():
|
||||
partition_pretty = partition
|
||||
|
||||
clb.append([" %s" %(partition_pretty),"%s" %(start_pretty),"%s" %(end_pretty),"%s" %(size_pretty),"%s" %(ptype),"%s" %(flags)],\
|
||||
"partition:%s:%s:%s:%s:%s:%s:%s" %(partition, dev, size, start, end, partition_table, size_pretty),\
|
||||
"partition:%s:%s:%s:%s:%s:%s:%s:%s" %(partition, dev, size, start, end, partition_table, size_pretty, pre_partition_name),\
|
||||
[LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT])
|
||||
|
||||
sg = Grid(2, 3)
|
||||
@@ -224,15 +209,8 @@ def add_partition(ptype='', extended='', label=''):
|
||||
free_space_end = filter(str.isdigit, clb.current().split(":")[5])
|
||||
free_space_sn = int(p_d.Partition.dict[dev]['partition'][free_space]['sn'])
|
||||
|
||||
# 4k assign
|
||||
#if int(free_space_start) < 2*1000*1000:
|
||||
# free_space_start_real = free_space_start
|
||||
# free_space_start = '0%'
|
||||
|
||||
size_num = filter(str.isdigit, size)
|
||||
#size_num = get_size_num(size)
|
||||
unit = filter(str.isalpha, size_pretty)
|
||||
#size_pretty_num = filter(str.isdigit, size_pretty)
|
||||
size_pretty_num = get_size_num(size_pretty)
|
||||
|
||||
bb2 = ButtonBar(screen, (("OK", "ok"), ("Cancel", "cancel")))
|
||||
@@ -285,8 +263,6 @@ def add_partition(ptype='', extended='', label=''):
|
||||
ptype = 'extended'
|
||||
|
||||
if bb2.buttonPressed(res2) == "ok":
|
||||
#if ptype == 'extended' and count_extended != 0:
|
||||
# show_error('An extended partition has existed !You can not create any more !')
|
||||
fs_set = lb_fstype.current()
|
||||
tips = check_size_set(entry_size.value(),size_pretty_num)
|
||||
if tips:
|
||||
@@ -297,7 +273,7 @@ def add_partition(ptype='', extended='', label=''):
|
||||
size_set = str(size_set_num) + base_unit
|
||||
partition_start = free_space_start + base_unit
|
||||
partition_end = str(int(free_space_start) + size_set_num) + base_unit
|
||||
|
||||
|
||||
flags = ''
|
||||
if cb_boot.value() == 1:
|
||||
if flags == '':
|
||||
@@ -324,28 +300,25 @@ def add_partition(ptype='', extended='', label=''):
|
||||
and p_d.Partition.dict[dev]['partition'][p]['type'] =='logical':
|
||||
partition_num = int(p_d.Partition.dict[dev]['partition'][p]['num'])
|
||||
else:
|
||||
if label == 'msdos':
|
||||
for p in list_partition_sorted:
|
||||
if int(p_d.Partition.dict[dev]['partition'][p]['num']) > partition_num \
|
||||
and p_d.Partition.dict[dev]['partition'][p]['type'] != 'logical':
|
||||
partition_num = int(p_d.Partition.dict[dev]['partition'][p]['num'])
|
||||
elif label == 'gpt':
|
||||
if int(p_d.Partition.dict[dev]['partition'][list_partition_sorted[0]]['num']) != 1:
|
||||
pass
|
||||
else:
|
||||
for i in range(len(list_partition_sorted)):
|
||||
#print int(p_d.Partition.dict[dev]['partition'][sorted(list_partition)[i]]['num'])
|
||||
if i == len(list_partition_sorted) - 1 or \
|
||||
int(p_d.Partition.dict[dev]['partition'][list_partition_sorted[i]]['num']) \
|
||||
!= int(p_d.Partition.dict[dev]['partition'][list_partition_sorted[i+1]]['num']) - 1:
|
||||
partition_num = int(p_d.Partition.dict[dev]['partition'][list_partition_sorted[i]]['num'])
|
||||
break
|
||||
if int(p_d.Partition.dict[dev]['partition'][list_partition_sorted[0]]['num']) != 1:
|
||||
pass
|
||||
else:
|
||||
for i in range(len(list_partition_sorted)):
|
||||
if i == len(list_partition_sorted) - 1 or \
|
||||
int(p_d.Partition.dict[dev]['partition'][list_partition_sorted[i]]['num']) \
|
||||
!= int(p_d.Partition.dict[dev]['partition'][list_partition_sorted[i+1]]['num']) - 1:
|
||||
partition_num = int(p_d.Partition.dict[dev]['partition'][list_partition_sorted[i]]['num'])
|
||||
break
|
||||
|
||||
partition_num += 1
|
||||
partition = dev + str(partition_num)
|
||||
#if re.search('/cciss/',dev):
|
||||
# partition = dev + 'p' + str(partition_num)
|
||||
#else:
|
||||
# partition = dev + str(partition_num)
|
||||
partition = pre_partition_name + str(partition_num)
|
||||
partition_sn = free_space_sn
|
||||
|
||||
if size_set_pretty == size_pretty:
|
||||
if float(get_size_num(size_set_pretty)) == float(get_size_num(size_pretty)):
|
||||
partition_end = free_space_end
|
||||
if len(list_free_sorted) > 1:
|
||||
for p in list_free_sorted:
|
||||
@@ -394,7 +367,8 @@ def add_partition(ptype='', extended='', label=''):
|
||||
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
|
||||
if re.search('free', p):
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num+1)]['sn'] = p_d.Partition.dict[dev]['partition'][p]['sn']+1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num+1)]['sn'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn']+1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num+1)]['num'] = p_num + 1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num+1)]['start'] =\
|
||||
p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
@@ -420,10 +394,10 @@ def add_partition(ptype='', extended='', label=''):
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['size'] = size_set
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['type'] = ''
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['flags'] = ''
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['type'] = ' '
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['flags'] = ' '
|
||||
|
||||
def del_partition(partition,dev):
|
||||
def del_msdos_partition(partition,dev):
|
||||
bb3 = ButtonBar(screen, (("Cancel", "cancel"), ("Delete", "delete")))
|
||||
g3 = GridForm(screen, "Del Partition", 1, 3)
|
||||
g3.add(TextboxReflowed(45, 'You are about to delete the partition "%s".' \
|
||||
@@ -431,17 +405,688 @@ def del_partition(partition,dev):
|
||||
g3.add(Label(""),0,1)
|
||||
g3.add(bb3, 0, 2)
|
||||
res3 = g3.runOnce()
|
||||
|
||||
if bb3.buttonPressed(res3) == "delete":
|
||||
list_partition_all_sorted = p_d.sort_partition(p_d.Partition.dict, dev, "all")
|
||||
partition_sn = int(p_d.Partition.dict[dev]['partition'][partition]['sn'])
|
||||
list_partition_all_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "all")
|
||||
partition_sn = p_d.Partition.dict[dev]['partition'][partition]['sn']
|
||||
partition_num = p_d.Partition.dict[dev]['partition'][partition]['num']
|
||||
partition_start = p_d.Partition.dict[dev]['partition'][partition]['start']
|
||||
partition_end = p_d.Partition.dict[dev]['partition'][partition]['end']
|
||||
partition_size = p_d.Partition.dict[dev]['partition'][partition]['size']
|
||||
partition_type = p_d.Partition.dict[dev]['partition'][partition]['type']
|
||||
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, partition)
|
||||
|
||||
if partition_type == 'extended':
|
||||
del_partition_count = 0
|
||||
del_free_count = 0
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
#for p in list_partition_all_sorted:
|
||||
p_start = p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
p_end = p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
if int(filter(str.isdigit, p_start)) >= int(filter(str.isdigit, partition_start)) and \
|
||||
int(filter(str.isdigit, p_end)) <= int(filter(str.isdigit, partition_end)):
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, p)
|
||||
del_partition_count += 1
|
||||
if re.search('free', p):
|
||||
del_free_count += 1
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
p_sn = p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
if p_sn > partition_sn:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] = p_sn - del_partition_count
|
||||
if re.search('free', p):
|
||||
p_sn = p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
p_start = p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
p_end = p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
p_size = p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, p)
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-del_free_count)]['num'] = p_num - del_free_count
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-del_free_count)]['sn'] = p_sn
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-del_free_count)]['start'] = p_start
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-del_free_count)]['end'] = p_end
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-del_free_count)]['size'] = p_size
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-del_free_count)]['type'] = ' '
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-del_free_count)]['flags'] = ' '
|
||||
|
||||
list_partition_all_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "all")
|
||||
for p in list_partition_all_sorted:
|
||||
p_sn = p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
if p_sn == partition_sn -1 and re.search('free', p):
|
||||
p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
if p_sn == partition_sn -1:
|
||||
pre_partition = p
|
||||
elif p_sn == partition_sn + 1:
|
||||
next_partition = p
|
||||
|
||||
#if re.search('/cciss/', dev):
|
||||
# pre_partition_name = dev + 'p'
|
||||
#else:
|
||||
# pre_partition_name = dev
|
||||
|
||||
try:
|
||||
(extended_start, extended_end) = get_extended_start_end(dev)
|
||||
except:
|
||||
pass
|
||||
|
||||
if partition_type == 'logical':
|
||||
# pre_partition must exist
|
||||
if locals().has_key('next_partition'):
|
||||
if re.search('free',next_partition) and \
|
||||
int(filter(str.isdigit, p_d.Partition.dict[dev]['partition'][next_partition]['end']))\
|
||||
<= int(filter(str.isdigit,extended_end)):
|
||||
if re.search('free', pre_partition):
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['end']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['size'] = \
|
||||
str(int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][next_partition]['end']))-\
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start'])))+\
|
||||
base_unit
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, next_partition)
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev,partition)
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn + 1:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 2
|
||||
if p_num > partition_num and not re.search('free', p):
|
||||
p_num -= 1
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['num'] = \
|
||||
p_num
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['sn'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['start'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['size'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['type'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['flags'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
if re.search('free',p):
|
||||
p_num -= 1
|
||||
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['num'] = \
|
||||
p_num
|
||||
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['sn'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['start'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['size'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['type'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
p_d.Partition.dict[dev]['partition']['free '+ str(p_num)]['flags'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
|
||||
p_num_max = 1
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "partition"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['num'] > p_num_max:
|
||||
p_num_max = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
if p_num_max > partition_num:
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, pre_partition_name+str(p_num_max))
|
||||
f_num_max = 1
|
||||
for f in p_d.sort_partitions(p_d.Partition.dict, dev, "free"):
|
||||
if p_d.Partition.dict[dev]['partition'][f]['num'] > f_num_max:
|
||||
f_num_max = p_d.Partition.dict[dev]['partition'][f]['num']
|
||||
if f_num_max > p_d.Partition.dict[dev]['partition'][next_partition]['num']:
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, pre_partition_name+str(p_num_max))
|
||||
|
||||
else:
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['sn'] = partition_sn
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
|
||||
if p_num > partition_num and not re.search('free', p):
|
||||
p_num -= 1
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['num'] = \
|
||||
p_num
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['sn'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['start'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['size'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['type'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['flags'] = \
|
||||
p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
p_num_max = 1
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "partition"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['num'] > p_num_max:
|
||||
p_num_max = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
if p_num_max > partition_num:
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, pre_partition_name+str(p_num_max))
|
||||
else:
|
||||
if re.search('free', pre_partition):
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['size'] = \
|
||||
str(int(filter.isdigit, partition_end) - \
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start'])))+base_unit
|
||||
else:
|
||||
free_num = 0
|
||||
list_free_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "free")
|
||||
if p_d.Partition.dict[dev]['partition'][list_free_sorted[0]]['sn'] > partition_sn:
|
||||
pass
|
||||
else:
|
||||
for i in range(len(list_free_sorted)):
|
||||
if i == len(list_free_sorted) - 1 or \
|
||||
( p_d.Partition.dict[dev]['partition'][list_free_sorted[i]]['sn'] \
|
||||
< partition_sn and p_d.Partition.dict[dev]['partition'][list_free_sorted[i+1]]['sn']\
|
||||
>partition_sn):
|
||||
free_num = int(p_d.Partition.dict[dev]['partition'][list_free_sorted[i]]['num'])
|
||||
break
|
||||
for f in p_d.sort_partitions(p_d.Partition.dict, dev, "free")[::-1]:
|
||||
if p_d.Partition.dict[dev]['partition'][f]['sn'] > partition_sn:
|
||||
f_num = p_d.Partition.dict[dev]['partition'][f]['num']
|
||||
f_num += 1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(f_num)]['num']= \
|
||||
f_num
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(f_num)]['sn']= \
|
||||
p_d.Partition.dict[dev]['partition'][f]['sn']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(f_num)]['start']= \
|
||||
p_d.Partition.dict[dev]['partition'][f]['start']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(f_num)]['end']= \
|
||||
p_d.Partition.dict[dev]['partition'][f]['end']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(f_num)]['size']= \
|
||||
p_d.Partition.dict[dev]['partition'][f]['size']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(f_num)]['type']= \
|
||||
p_d.Partition.dict[dev]['partition'][f]['type']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(f_num)]['flags']= \
|
||||
p_d.Partition.dict[dev]['partition'][f]['flags']
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "partition"):
|
||||
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] >partition_sn \
|
||||
and p_num > 4:
|
||||
p_num -= 1
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['num']=\
|
||||
p_num
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['sn']=\
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['start']=\
|
||||
p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['end']=\
|
||||
p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['size']=\
|
||||
p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['type']=\
|
||||
p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['flags']=\
|
||||
p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, \
|
||||
p_d.sort_partitions(p_d.Partition.dict,dev,"partition")[::-1][0])
|
||||
|
||||
free_num += 1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['num'] = free_num
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['size'] = partition_size
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['type'] = ' '
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num)]['flags'] = ' '
|
||||
|
||||
else:
|
||||
free_num_max = 1
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "free"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['num'] > free_max_num:
|
||||
free_max_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max)]['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max)]['num'] = free_max_num
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max)]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max)]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max)]['size'] = partition_size
|
||||
|
||||
else:
|
||||
if locals().has_key('pre_partition') and locals().has_key('next_partition'):
|
||||
if re.search('free', pre_partition) and re.search('free', next_partition):
|
||||
if locals().has_key('extended_start') and \
|
||||
(int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start']))\
|
||||
>= int(filter(str.isdigit, extended_start)) and \
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['end']))\
|
||||
<= int(filter(str.isdigit, extended_end))):
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['size'] = \
|
||||
str(int(filter(str.isdigit, p_d.Partition.dict[dev]['partition'][next_partition]['end']))-\
|
||||
int(filter(str.isdigit, partition_start))) + base_unit
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
|
||||
#if not re.search('free', p):
|
||||
# p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['num']\
|
||||
# = p_num -1
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['sn']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['sn']-1
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['start']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['end']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['size']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['type']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['flags']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
#else:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
|
||||
#partition_last = p_d.sort_partitions(p_d.Partition.dict,dev,"partition")[::-1][0]
|
||||
#if p_d.Partition.dict[dev]['partition'][partition_last]['sn'] > partition_sn:
|
||||
# p_d.delete_one_partition(p_d.Partition.dict,dev,partition_last)
|
||||
|
||||
else:
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['end']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['size'] = \
|
||||
str(int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][next_partition]['end']))-\
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start'])))+\
|
||||
base_unit
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn + 1:
|
||||
if re.search('free', p):
|
||||
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['num']\
|
||||
= p_num -1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['sn']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['sn']-2
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['start']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['end']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['size']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['type']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['flags']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
else:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 2
|
||||
if len(p_d.sort_partitions(p_d.Partition.dict, dev,"free")) > 1:
|
||||
free_last = p_d.sort_partitions(p_d.Partition.dict, dev,"free")[::-1][0]
|
||||
p_d.delete_one_partition(p_d.Partition.dict,dev,free_last)
|
||||
|
||||
elif re.search('free', pre_partition) and not re.search('free', next_partition):
|
||||
if locals().has_key('extended_start') and \
|
||||
(int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start']))\
|
||||
>= int(filter(str.isdigit, extended_start)) or \
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['end']))\
|
||||
<= int(filter(str.isdigit, extended_end))):
|
||||
len_free_list = len(p_d.sort_partitions(p_d.Partition.dict, dev, "free"))
|
||||
free_num_mid = 0
|
||||
for i in range(len_free_list)[::-1]:
|
||||
if p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn'] > partition_sn:
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['sn'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['num'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['num']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['start'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['start']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['end']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['size'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['size']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['type'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['type']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['flags'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['flags']
|
||||
if p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn'] < partition_sn:
|
||||
free_num_mid = p_d.Partition.dict[dev]['partition']['free '+str(i+1)]['num']
|
||||
break
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['num'] = free_num_mid+1
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['size'] = partition_size
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['type'] = ' '
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['flags'] = ' '
|
||||
else:
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['size'] = \
|
||||
str(int(filter(str.isdigit, partition_end)) - \
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start'])))+\
|
||||
base_unit
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
|
||||
#if not re.search('free', p):
|
||||
# p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['num']\
|
||||
# = p_num -1
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['sn']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['sn']-1
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['start']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['end']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['size']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['type']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['flags']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
#else:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
|
||||
#partition_last = p_d.sort_partitions(p_d.Partition.dict,dev,"partition")[::-1][0]
|
||||
#p_d.delete_one_partition(p_d.Partition.dict,dev,partition_last)
|
||||
|
||||
elif not re.search('free', pre_partition) and re.search('free',next_partition):
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['size'] = \
|
||||
str(int(filter(str.isdigit, p_d.Partition.dict[dev]['partition'][next_partition]['end']))-\
|
||||
int(filter(str.isdigit, partition_start))) + base_unit
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
|
||||
#if not re.search('free', p):
|
||||
# p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['num']\
|
||||
# = p_num -1
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['sn']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['sn']-1
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['start']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['end']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['size']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['type']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num-1)]['flags']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
#else:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
|
||||
#partition_last = p_d.sort_partitions(p_d.Partition.dict,dev,"partition")[::-1][0]
|
||||
#if p_d.Partition.dict[dev]['partition'][partition_last]['sn'] > partition_sn:
|
||||
# p_d.delete_one_partition(p_d.Partition.dict,dev,partition_last)
|
||||
|
||||
else:
|
||||
len_free_list = len(p_d.sort_partitions(p_d.Partition.dict, dev, "free"))
|
||||
free_num_mid = 0
|
||||
for i in range(len_free_list)[::-1]:
|
||||
if p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn'] > partition_sn:
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['sn'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['num'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['num']+1
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['start'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['start']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['end']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['size'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['size']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['type'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['type']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['flags'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['flags']
|
||||
if p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn'] < partition_sn:
|
||||
free_num_mid = p_d.Partition.dict[dev]['partition']['free '+str(i+1)]['num']
|
||||
break
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['num'] = free_num_mid+1
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['size'] = partition_size
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['type'] = ' '
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['flags'] = ' '
|
||||
|
||||
#for p in p_d.sort_partitions(p_d.Partition.dict, dev, "partition"):
|
||||
# p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
# p_sn = p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
# if p_sn > partition_sn and p_num < 5:
|
||||
# p_num -= 1
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['num'] = p_num
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['sn'] = p_sn
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['start']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['end']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['size']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['type']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
# p_d.Partition.dict[dev]['partition'][pre_partition_name+str(p_num)]['flags']\
|
||||
# = p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
# p_d.delete_one_partition(p_d.Partition.dict,dev,p)
|
||||
|
||||
|
||||
elif locals().has_key('pre_partition') and not locals().has_key('next_partition'):
|
||||
if re.search('free', pre_partition) and ((locals().has_key('extended_start') and\
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start']))\
|
||||
>= int(filter(str.isdigit, extended_end))) or \
|
||||
not locals().has_key('extended_start')) :
|
||||
free = p_d.sort_partitions(p_d.Partition.dict, dev,"free")[::-1][0]
|
||||
p_d.Partition.dict[dev]['partition'][free]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition'][free]['size'] = \
|
||||
partition_end - p_d.Partition.dict[dev]['partition'][free]['start']
|
||||
else:
|
||||
free_num_max = 0
|
||||
for f in p_d.sort_partitions(p_d.Partition.dict, dev, "free"):
|
||||
f_num = p_d.Partition.dict[dev]['partition'][f]['num']
|
||||
if f_num > free_num_max:
|
||||
free_num_max = f_num
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['num']\
|
||||
= free_num_max+1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['sn']\
|
||||
= partition_sn
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['start']\
|
||||
= partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['end']\
|
||||
= partition_end
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['size']\
|
||||
= partition_size
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['type']\
|
||||
= ' '
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['flags']\
|
||||
= ' '
|
||||
|
||||
elif not locals().has_key('pre_partition') and locals().has_key('next_partition'):
|
||||
if re.search('free', next_partition):
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev,"all"):
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['num'] = partition_num
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['size'] = \
|
||||
str(int(filter(str.isdigit, p_d.Partition.dict[dev]['partition']['free 1']['end']))\
|
||||
- int(filter(str.isdigit, partition_start))) + base_unit
|
||||
else:
|
||||
for f in p_d.sort_partitions(p_d.Partition.dict, dev,"free")[::-1]:
|
||||
free_num = p_d.Partition.dict[dev]['partition'][f]['num']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['num']\
|
||||
= free_num + 1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['sn']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['sn']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['start']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['start']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['end']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['end']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['size']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['size']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['type']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['type']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['flags']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['flags']
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['num'] = partition_num
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['size'] = partition_size
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['type'] = ' '
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['flags'] = ' '
|
||||
|
||||
else:
|
||||
p_d.delete_all_partitions(p_d.Partition.dict, dev)
|
||||
|
||||
def del_gpt_partition(partition,dev):
|
||||
bb3 = ButtonBar(screen, (("Cancel", "cancel"), ("Delete", "delete")))
|
||||
g3 = GridForm(screen, "Del Partition", 1, 3)
|
||||
g3.add(TextboxReflowed(45, 'You are about to delete the partition "%s".' \
|
||||
%(partition)), 0, 0)
|
||||
g3.add(Label(""),0,1)
|
||||
g3.add(bb3, 0, 2)
|
||||
res3 = g3.runOnce()
|
||||
|
||||
if bb3.buttonPressed(res3) == "delete":
|
||||
list_partition_all_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "all")
|
||||
partition_sn = p_d.Partition.dict[dev]['partition'][partition]['sn']
|
||||
partition_num = p_d.Partition.dict[dev]['partition'][partition]['num']
|
||||
partition_start = p_d.Partition.dict[dev]['partition'][partition]['start']
|
||||
partition_end = p_d.Partition.dict[dev]['partition'][partition]['end']
|
||||
partition_size = p_d.Partition.dict[dev]['partition'][partition]['size']
|
||||
partition_type = p_d.Partition.dict[dev]['partition'][partition]['type']
|
||||
|
||||
|
||||
p_d.delete_one_partition(p_d.Partition.dict, dev, partition)
|
||||
|
||||
list_partition_all_sorted = p_d.sort_partitions(p_d.Partition.dict, dev, "all")
|
||||
for p in list_partition_all_sorted:
|
||||
p_sn = p_d.Partition.dict[dev]['partition'][p]['sn']
|
||||
if p_sn == partition_sn -1:
|
||||
pre_partition = p
|
||||
elif p_sn == partition_sn + 1:
|
||||
next_partition = p
|
||||
|
||||
if locals().has_key('pre_partition') and locals().has_key('next_partition'):
|
||||
if re.search('free', pre_partition) and re.search('free', next_partition):
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['end']
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['size'] = \
|
||||
str(int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][next_partition]['end']))-\
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start'])))+\
|
||||
base_unit
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn + 1:
|
||||
if re.search('free', p):
|
||||
p_num = p_d.Partition.dict[dev]['partition'][p]['num']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['num']\
|
||||
= p_num -1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['sn']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['sn']-2
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['start']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['start']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['end']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['end']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['size']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['size']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['type']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['type']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(p_num-1)]['flags']\
|
||||
= p_d.Partition.dict[dev]['partition'][p]['flags']
|
||||
else:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 2
|
||||
if len(p_d.sort_partitions(p_d.Partition.dict, dev,"free")) > 1:
|
||||
free_last = p_d.sort_partitions(p_d.Partition.dict, dev,"free")[::-1][0]
|
||||
p_d.delete_one_partition(p_d.Partition.dict,dev,free_last)
|
||||
elif re.search('free', pre_partition) and not re.search('free', next_partition):
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition'][pre_partition]['size'] = \
|
||||
str(int(filter(str.isdigit, partition_end)) - \
|
||||
int(filter(str.isdigit,p_d.Partition.dict[dev]['partition'][pre_partition]['start'])))+\
|
||||
base_unit
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
|
||||
elif not re.search('free', pre_partition) and re.search('free',next_partition):
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition'][next_partition]['size'] = \
|
||||
str(int(filter(str.isdigit, p_d.Partition.dict[dev]['partition'][next_partition]['end']))-\
|
||||
int(filter(str.isdigit, partition_start))) + base_unit
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev, "all"):
|
||||
if p_d.Partition.dict[dev]['partition'][p]['sn'] > partition_sn:
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
|
||||
else:
|
||||
len_free_list = len(p_d.sort_partitions(p_d.Partition.dict, dev, "free"))
|
||||
free_num_mid = 0
|
||||
for i in range(len_free_list)[::-1]:
|
||||
if p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn'] > partition_sn:
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['sn'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['num'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['num']+1
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['start'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['start']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['end'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['end']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['size'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['size']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['type'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['type']
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+2)]['flags'] = \
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['flags']
|
||||
if p_d.Partition.dict[dev]['partition'] ['free '+str(i+1)]['sn'] < partition_sn:
|
||||
free_num_mid = p_d.Partition.dict[dev]['partition']['free '+str(i+1)]['num']
|
||||
break
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['num'] = free_num_mid+1
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['size'] = partition_size
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['type'] = ' '
|
||||
p_d.Partition.dict[dev]['partition'] ['free '+str(free_num_mid+1)]['flags'] = ' '
|
||||
|
||||
elif locals().has_key('pre_partition') and not locals().has_key('next_partition'):
|
||||
if re.search('free', pre_partition):
|
||||
free = p_d.sort_partitions(p_d.Partition.dict, dev,"free")[::-1][0]
|
||||
p_d.Partition.dict[dev]['partition'][free]['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition'][free]['size'] = \
|
||||
partition_end - p_d.Partition.dict[dev]['partition'][free]['start']
|
||||
else:
|
||||
free_num_max = 0
|
||||
for f in p_d.sort_partitions(p_d.Partition.dict, dev, "free"):
|
||||
f_num = p_d.Partition.dict[dev]['partition'][f]['num']
|
||||
if f_num > free_num_max:
|
||||
free_num_max = f_num
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['num']\
|
||||
= free_num_max+1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['sn']\
|
||||
= partition_sn
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['start']\
|
||||
= partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['end']\
|
||||
= partition_end
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['size']\
|
||||
= partition_size
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['type']\
|
||||
= ' '
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num_max+1)]['flags']\
|
||||
= ' '
|
||||
|
||||
elif not locals().has_key('pre_partition') and locals().has_key('next_partition'):
|
||||
if re.search('free', next_partition):
|
||||
for p in p_d.sort_partitions(p_d.Partition.dict, dev,"all"):
|
||||
p_d.Partition.dict[dev]['partition'][p]['sn'] -= 1
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['num'] = partition_num
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['size'] = \
|
||||
str(int(filter(str.isdigit, p_d.Partition.dict[dev]['partition']['free 1']['end']))\
|
||||
- int(filter(str.isdigit, partition_start))) + base_unit
|
||||
else:
|
||||
for f in p_d.sort_partitions(p_d.Partition.dict, dev,"free")[::-1]:
|
||||
free_num = p_d.Partition.dict[dev]['partition'][f]['num']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['num']\
|
||||
= free_num + 1
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['sn']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['sn']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['start']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['start']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['end']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['end']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['size']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['size']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['type']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['type']
|
||||
p_d.Partition.dict[dev]['partition']['free '+str(free_num+1)]['flags']\
|
||||
= p_d.Partition.dict[dev]['partition'][f]['flags']
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['num'] = partition_num
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['sn'] = partition_sn
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['start'] = partition_start
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['end'] = partition_end
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['size'] = partition_size
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['type'] = ' '
|
||||
p_d.Partition.dict[dev]['partition']['free 1']['flags'] = ' '
|
||||
|
||||
else:
|
||||
p_d.delete_all_partitions(p_d.Partition.dict, dev)
|
||||
|
||||
p_d.Partition.init_from_os()
|
||||
|
||||
@@ -481,7 +1126,7 @@ while(1):
|
||||
free_space_start = clb.current().split(":")[4]
|
||||
free_space_end = clb.current().split(":")[5]
|
||||
free_space_size = clb.current().split(":")[3]
|
||||
|
||||
pre_partition_name = clb.current().split(':')[8]
|
||||
(count_primary, count_extended) = count_primary_extended(dev)
|
||||
# add logical partition when an extended partition exists
|
||||
if re.search('extended', str(p_d.Partition.dict[dev])):
|
||||
@@ -489,8 +1134,6 @@ while(1):
|
||||
if int(filter(str.isdigit,free_space_start)) >= int(filter(str.isdigit,extended_start)) \
|
||||
and int(filter(str.isdigit,free_space_end)) <= int(filter(str.isdigit,extended_end)):
|
||||
ptype = 'logical'
|
||||
#print 'ptype'
|
||||
#time.sleep(5)
|
||||
add_partition(ptype, 'extended', 'msdos')
|
||||
elif int(filter(str.isdigit,free_space_start)) >= int(filter(str.isdigit,extended_end)):
|
||||
show_error("Bad partition scheme ! This free space can't be used any more !")
|
||||
@@ -512,16 +1155,23 @@ while(1):
|
||||
free_space_start = clb.current().split(":")[4]
|
||||
free_space_end = clb.current().split(":")[5]
|
||||
free_space_size = clb.current().split(":")[3]
|
||||
pre_partition_name = clb.current().split(':')[8]
|
||||
add_partition(ptype='primary', extended='', label='gpt')
|
||||
elif re.search("partition:free", clb.current()) == None and \
|
||||
re.search("dev:", clb.current()) == None and \
|
||||
bb.buttonPressed(res) == "delete":
|
||||
msdos_or_gpt = clb.current().split(':')[6]
|
||||
dev = clb.current().split(":")[2]
|
||||
partition = clb.current().split(":")[1]
|
||||
del_partition(partition, dev)
|
||||
pre_partition_name = clb.current().split(':')[8]
|
||||
if msdos_or_gpt == 'msdos':
|
||||
del_msdos_partition(partition, dev)
|
||||
elif msdos_or_gpt == 'gpt':
|
||||
del_gpt_partition(partition, dev)
|
||||
|
||||
|
||||
|
||||
screen.finish()
|
||||
#p_d.pretty(p_d.Partition.dict)
|
||||
p_d.write_to_xml_file()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user