modify follow files for new datastructure
modified: interface/ri_data.py
remove MountPoint use new datastructure for instead
modified: interface/ri_install.py
add MakePartitions for partition
modified: interface/ri_oper.py
1.add MakePartitions class
2.modify Format, Mount, ConfigureFstab class
modified: new_partition/partition_data.py
1.add disk_from_os attribute to Partition class for disk
2.add process linux-swap(v1) in Partition class
3.force convert num and sn to int, beacause when read from install.xml
sn and num is still string.
modified: operation/format_partition.sh
1.add timeout beacause use MakePartitions, need time to generate
device file
2.add linux-swap for swap
modified: operation/functions
1.add % support, beacause of partition may use 1% to partition
disks.
new file: operation/partition_disks.sh
1.use partition_disks as parted stdin wrapper.
Signed-off-by: Qin Bo <bqin@linx-info.com>
This commit is contained in:
@@ -18,9 +18,11 @@
|
||||
|
||||
import ri_data
|
||||
import ri_dep
|
||||
import os
|
||||
import os,sys
|
||||
import subprocess
|
||||
import signal
|
||||
sys.path.append('../new_partition/')
|
||||
import partition_data as p_d
|
||||
|
||||
display_operation = None
|
||||
display_sub_operation = None
|
||||
@@ -113,6 +115,44 @@ class Operation:
|
||||
arch = result.stdout.readline().rstrip()
|
||||
return arch
|
||||
|
||||
class MakePartitions(Operation):
|
||||
'''class for make partitions'''
|
||||
def __init__(self, scr):
|
||||
Operation.__init__(self, 'Make partition', u'磁盘分区', 'partition_disks.sh', scr)
|
||||
|
||||
def get_stdin(self):
|
||||
args = ' '
|
||||
n = 0
|
||||
disks = p_d.Partition.dict.keys()
|
||||
disks.sort()
|
||||
for d in disks:
|
||||
if p_d.Partition.dict[d]['from_os'] == 'no':
|
||||
args += '%s mklabel %s\n' %(d, p_d.Partition.dict[d]['partition_table'])
|
||||
partitions = p_d.sort_partitions(p_d.Partition.dict, d, 'partition')
|
||||
for p in partitions:
|
||||
fs_type = ''
|
||||
p_type = ''
|
||||
flags = ''
|
||||
set_flg = ''
|
||||
if p_d.Partition.dict[d]['partition'][p]['from_os'] == 'yes':
|
||||
continue
|
||||
fs_type = p_d.Partition.dict[d]['partition'][p]['filesystem']
|
||||
start = p_d.Partition.dict[d]['partition'][p]['start']
|
||||
end = p_d.Partition.dict[d]['partition'][p]['end']
|
||||
p_type = p_d.Partition.dict[d]['partition'][p]['type']
|
||||
partition = p_d.Partition.dict[d]['partition'][p]['num']
|
||||
flags = p_d.Partition.dict[d]['partition'][p]['flags']
|
||||
mkpart = "%s mkpart %s %s %s %s" %(d, p_type, fs_type, start, end)
|
||||
if flags.strip():
|
||||
set_flg = "set %s %s on" %(partition, flags)
|
||||
|
||||
n += 1
|
||||
args += "%s %s\n" %(mkpart, set_flg)
|
||||
|
||||
self.steps += n
|
||||
return args
|
||||
|
||||
|
||||
class Format(Operation):
|
||||
''' class for format partition '''
|
||||
def __init__(self, scr):
|
||||
@@ -120,14 +160,21 @@ class Format(Operation):
|
||||
self.return_value[127] = ('No tool to format partitions', u'没有格式化硬盘分区的工具')
|
||||
|
||||
def get_stdin(self):
|
||||
format=''
|
||||
n = 0
|
||||
for instance in ri_data.MountPoint.dict.values():
|
||||
if instance.format == "yes" and instance.filesystem != '':
|
||||
format+="/dev/%s %s\n"%(instance.device,instance.filesystem)
|
||||
n += 1
|
||||
self.steps += n
|
||||
return format
|
||||
format = ''
|
||||
n = 0
|
||||
disks = p_d.Partition.dict.keys()
|
||||
disks.sort()
|
||||
for d in disks:
|
||||
partitions = p_d.sort_partitions(p_d.Partition.dict, d, 'partition')
|
||||
for p in partitions:
|
||||
fs_type = p_d.Partition.dict[d]['partition'][p]['filesystem']
|
||||
fmt = p_d.Partition.dict[d]['partition'][p]['format']
|
||||
if fmt.strip() == 'yes' and fs_type.strip():
|
||||
format += "%s %s\n" %(p, fs_type)
|
||||
n += 1
|
||||
|
||||
self.steps += n
|
||||
return format
|
||||
|
||||
class MakeRaid(Operation):
|
||||
"""class for make raid"""
|
||||
@@ -177,16 +224,18 @@ class Mount(Operation):
|
||||
Operation.__init__(self,'Mount partition', u'挂载分区', 'mount_partition.sh',scr)
|
||||
|
||||
def get_stdin(self):
|
||||
mount=''
|
||||
mount = ''
|
||||
n = 0
|
||||
for dir in set([ m.directory for m in ri_data.MountPoint.dict.values() if m.directory ]):
|
||||
for k in ri_data.MountPoint.dict.keys():
|
||||
if ri_data.MountPoint.dict[k].directory == dir and ri_data.MountPoint.dict[k].filesystem:
|
||||
# during configure fstab, use dict of Mount
|
||||
Mount.dict[k]=dir
|
||||
mount+='/dev/%s %s %s\n' %(k,dir,ri_data.MountPoint.dict[k].filesystem)
|
||||
n+=1
|
||||
break
|
||||
disks = p_d.Partition.dict.keys()
|
||||
disks.sort()
|
||||
for d in disks:
|
||||
partitions = p_d.sort_partitions(p_d.Partition.dict, d, 'partition')
|
||||
for p in partitions:
|
||||
mp = p_d.Partition.dict[d]['partition'][p]['mount_point']
|
||||
fs = p_d.Partition.dict[d]['partition'][p]['filesystem']
|
||||
if mp.strip() and fs.strip():
|
||||
mount += "%s %s %s\n" %(p, mp, fs)
|
||||
n += 1
|
||||
self.steps += n
|
||||
return mount
|
||||
|
||||
@@ -217,15 +266,18 @@ class ConfigureFstab(Mount):
|
||||
|
||||
def get_stdin(self):
|
||||
fstab=''
|
||||
# Note: Mount.dict are mount point. it isn't equal ri_data.MountPoint.dict
|
||||
for k in Mount.dict.keys():
|
||||
if ri_data.MountPoint.dict[k].filesystem != 'swap':
|
||||
fstab += "/dev/%s %s %s\n" %(k,Mount.dict[k],ri_data.MountPoint.dict[k].filesystem)
|
||||
|
||||
for k in ri_data.MountPoint.dict.keys():
|
||||
if ri_data.MountPoint.dict[k].filesystem == 'swap':
|
||||
fstab += '/dev/%s swap swap\n' %k
|
||||
break
|
||||
disks = p_d.Partition.dict.keys()
|
||||
disks.sort()
|
||||
for d in disks:
|
||||
partitions = p_d.sort_partitions(p_d.Partition.dict, d, 'partition')
|
||||
for p in partitions:
|
||||
mp = p_d.Partition.dict[d]['partition'][p]['mount_point']
|
||||
fs = p_d.Partition.dict[d]['partition'][p]['filesystem']
|
||||
if fs.strip() == 'linux-swap':
|
||||
fs = 'swap'
|
||||
mp = 'swap'
|
||||
if mp.strip() and fs.strip():
|
||||
fstab += "%s %s %s\n" %(p, mp, fs)
|
||||
|
||||
# process fstab to sort
|
||||
fstab_new = ''
|
||||
|
||||
Reference in New Issue
Block a user