add raid screen
modify raid data layout in install.xml
This commit is contained in:
@@ -120,12 +120,13 @@ p_node - xml node (parent node)'''
|
||||
class Raid:
|
||||
''' raid information '''
|
||||
list = []
|
||||
def __init__(self, raid_dev, raid_type, raid_size, raw_devs):
|
||||
def __init__(self, dev, level, sz, a_devs, s_devs=[]):
|
||||
''' Raid init function '''
|
||||
self.raid_device = raid_dev
|
||||
self.raid_type = raid_type
|
||||
self.raid_size = raid_size
|
||||
self.raw_devices = raw_devs
|
||||
self.device = dev
|
||||
self.level = level
|
||||
self.size = sz
|
||||
self.active_components = a_devs
|
||||
self.spare_components = s_devs
|
||||
Raid.list.append(self)
|
||||
|
||||
@staticmethod
|
||||
@@ -146,25 +147,40 @@ class Raid:
|
||||
if len(dev_res)>1: # matched
|
||||
# dev_res[0] is ''
|
||||
raid_dev = dev_res[1]
|
||||
raid_type = dev_res[2]
|
||||
raw_devs =[]
|
||||
raid_level = dev_res[2]
|
||||
act_cmpts =[]
|
||||
for ss in dev_res[3].split():
|
||||
raw_devs.append(ss[:ss.index('[')])
|
||||
Raid(raid_dev, raid_type, '-1', raw_devs)
|
||||
act_cmpts.append(ss[:ss.index('[')])
|
||||
Raid(raid_dev, raid_level, '-1', act_cmpts)
|
||||
|
||||
@staticmethod
|
||||
def add_component(node, l):
|
||||
''' add component devices (in xml node) to list
|
||||
node - xml node
|
||||
l - list
|
||||
'''
|
||||
for sub in node.childNodes:
|
||||
if sub.nodeType == sub.ELEMENT_NODE and sub.nodeName == 'component':
|
||||
l.append(sub.firstChild.data.encode('ascii'))
|
||||
|
||||
@staticmethod
|
||||
def init_from_xml(node):
|
||||
''' create Raid instances from xml node '''
|
||||
for e in node.childNodes:
|
||||
if e.nodeType == e.ELEMENT_NODE and e.nodeName == 'raid':
|
||||
raid_dev = e.attributes['raid-device'].value
|
||||
raid_type = e.attributes['raid-type'].value
|
||||
raid_size = e.attributes['raid-size'].value
|
||||
raw_devs = []
|
||||
raid_dev = e.attributes['device'].value
|
||||
raid_level = e.attributes['level'].value
|
||||
raid_size = e.attributes['size'].value
|
||||
act_cmpts = []
|
||||
spr_cmpts = []
|
||||
for sub_e in e.childNodes:
|
||||
if sub_e.nodeType == sub_e.ELEMENT_NODE and sub_e.nodeName == 'raw-device':
|
||||
raw_devs.append(sub_e.firstChild.data.encode('ascii'))
|
||||
Raid(raid_dev, raid_type, raid_size, raw_devs)
|
||||
if sub_e.nodeType == sub_e.ELEMENT_NODE:
|
||||
if sub_e.nodeName == 'active':
|
||||
Raid.add_component(sub_e, act_cmpts)
|
||||
elif sub_e.nodeName == 'spare':
|
||||
Raid.add_component(sub_e, spr_cmpts)
|
||||
|
||||
Raid(raid_dev, raid_level, raid_size, act_cmpts, spr_cmpts)
|
||||
|
||||
@staticmethod
|
||||
def to_xml(doc, p_node):
|
||||
@@ -175,23 +191,33 @@ p_node - xml node (parent node) '''
|
||||
for r in Raid.list:
|
||||
rd = doc.createElement('raid')
|
||||
|
||||
rd_dev_attr = doc.createAttribute('raid-device')
|
||||
rd_dev_attr.value = r.raid_device
|
||||
rd_dev_attr = doc.createAttribute('device')
|
||||
rd_dev_attr.value = r.device
|
||||
rd.setAttributeNode(rd_dev_attr)
|
||||
|
||||
rd_type_attr = doc.createAttribute('raid-type')
|
||||
rd_type_attr.value = r.raid_type
|
||||
rd.setAttributeNode(rd_type_attr)
|
||||
rd_level_attr = doc.createAttribute('level')
|
||||
rd_level_attr.value = r.level
|
||||
rd.setAttributeNode(rd_level_attr)
|
||||
|
||||
rd_size_attr = doc.createAttribute('raid-size')
|
||||
rd_size_attr.value = r.raid_size
|
||||
rd_size_attr = doc.createAttribute('size')
|
||||
rd_size_attr.value = r.size
|
||||
rd.setAttributeNode(rd_size_attr)
|
||||
|
||||
for raw_dev in r.raw_devices:
|
||||
raw_dev_e = doc.createElement('raw-device')
|
||||
raw_dev_tn = doc.createTextNode(raw_dev)
|
||||
raw_dev_e.appendChild(raw_dev_tn)
|
||||
rd.appendChild(raw_dev_e)
|
||||
rd_act_elem = doc.createElement('active')
|
||||
for act_c in r.active_components:
|
||||
act_c_e = doc.createElement('component')
|
||||
act_c_tn = doc.createTextNode(act_c)
|
||||
act_c_e.appendChild(act_c_tn)
|
||||
rd_act_elem.appendChild(act_c_e)
|
||||
rd.appendChild(rd_act_elem)
|
||||
|
||||
rd_spr_elem = doc.createElement('spare')
|
||||
for spr_c in r.spare_components:
|
||||
spr_c_e = doc.createElement('component')
|
||||
spr_c_tn = doc.createTextNode(spr_c)
|
||||
spr_c_e.appendChild(act_c_tn)
|
||||
rd_spr_elem.appendChild(spr_c_e)
|
||||
rd.appendChild(rd_spr_elem)
|
||||
|
||||
raids.appendChild(rd)
|
||||
|
||||
@@ -200,8 +226,8 @@ p_node - xml node (parent node) '''
|
||||
@staticmethod
|
||||
def get_size(dev):
|
||||
for r in Raid.list:
|
||||
if r.raid_device == dev:
|
||||
return r.raid_size
|
||||
if r.device == dev:
|
||||
return r.size
|
||||
|
||||
class MountPoint:
|
||||
''' mount-points '''
|
||||
|
||||
Reference in New Issue
Block a user