From dffc9194cd4a6cc7bc9cd89b6141fb49ba6dbd4d Mon Sep 17 00:00:00 2001 From: fling Date: Sat, 16 Oct 2010 18:26:28 +0800 Subject: [PATCH] modified: ri_data.py add mothod of Raid.get_size --- interface/ri_data.py | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/interface/ri_data.py b/interface/ri_data.py index ae946df..483ae88 100644 --- a/interface/ri_data.py +++ b/interface/ri_data.py @@ -1,10 +1,10 @@ #!/usr/bin/python import re +import sys import commands from xml.dom import minidom from xml.dom.ext import PrettyPrint -from ri_tk_cmd import raid_calc_size # xml file names install_xml = '../xml/install.xml' @@ -49,15 +49,14 @@ class Partition: self.size = sz self.type = tp self.filesystem = fs - self.flags = fg + self.israid = fg self.from_os = fr Partition.dict[dev] = self @staticmethod def init_from_os(): ''' create a Partition instance from hardware info''' - device_list=[] - Partition.unit='GB' + Partition.unit='MB' cmd_cat = 'cat /proc/partitions' st,o = commands.getstatusoutput(cmd_cat) @@ -123,10 +122,10 @@ class Partition: s[sz_i:tp_i].strip().rstrip(Partition.unit), # size s[tp_i:fs_i].strip(), # type re.search('swap', s[fs_i:flg_i]) and 'swap' or s[fs_i:flg_i].strip(), # file system - re.search('raid',s[flg_i:]) and 'yes' or 'no' # flags + re.search('raid',s[flg_i:]) and 'yes' or 'no', # flags "yes" #from os ) - + @staticmethod def init_from_xml(node): ''' create Partition instances from xml node ''' @@ -138,7 +137,7 @@ class Partition: p.attributes['size'].value.encode('ascii'),\ p.attributes['type'].value.encode('ascii'),\ p.attributes['file-system'].value.encode('ascii'),\ - p.attributes['flags'].value.encode('ascii'),\ + p.attributes['israid'].value.encode('ascii'),\ p.attributes['from_os'].value.encode('ascii')) @@ -158,28 +157,30 @@ p_node - xml node (parent node)''' size_attr = doc.createAttribute('size') type_attr = doc.createAttribute('type') fs_attr = doc.createAttribute('file-system') - flags_attr = doc.createAttribute('flags') + israid_attr = doc.createAttribute('israid') from_attr = doc.createAttribute('from_os') dev_attr.value = p.device start_attr.value = p.start size_attr.value = p.size type_attr.value = p.type fs_attr.value = p.filesystem - flags_attr.value = p.flags + israid_attr.value = p.israid from_attr.value = p.from_os pt.setAttributeNode(dev_attr) pt.setAttributeNode(start_attr) pt.setAttributeNode(size_attr) pt.setAttributeNode(type_attr) pt.setAttributeNode(fs_attr) - pt.setAttributeNode(flags_attr) + pt.setAttributeNode(israid_attr) pt.setAttributeNode(from_attr) pts.appendChild(pt) p_node.appendChild(pts) # ri_tk_cmd.py use @staticmethod def get_size(dev): - return Partition.dict[dev].size + if Partition.dict.has_key(dev): + return Partition.dict[dev].size + return class Raid: ''' raid information ''' @@ -292,9 +293,20 @@ p_node - xml node (parent node) ''' #ri_tk_cmd.py use @staticmethod def get_size(dev): - active=Raid.dict[dev].active + sz=sys.maxint level=Raid.dict[dev].level - return raid_calc_size(level,active) + active=Raid.dict[dev].active_components + for d in active: + if float(Partition.dict[d].size) < float(sz): + sz=float(Partition.dict[d].size) + if level == '0': + sz=sz*len(active) + return str(sz) + elif level == '1': + return str(sz) + elif level == '5': + sz=sz*(len(active)-1) + return str(sz) @staticmethod def get_next_device(): @@ -353,6 +365,8 @@ class MountPoint: for dev in s1-s2: del MountPoint.dict[dev] + #MountPoint.dict.keys().sort() + #print "keys=",MountPoint.dict.keys() @staticmethod def init_from_xml(node):