def parseHdiskToScsiCorres(output, splitPattern = "\s+"):
    hdisks = []
    devices = []
    if output:
        lines = [line.strip() for line in ibm_hmc_lib.splitCommandOutput(output) if line and re.match('\s*hdisk', line)]
        for line in lines:
            vals = re.split(splitPattern, line.strip())
            hdiskName = vals[0]
            deviceName = vals[1]
            hdisks.append(hdiskName)
            devices.append(deviceName)
    return (hdisks, devices)
def parseHdiskToScsiCorres(output, splitPattern="\s+"):
    hdisks = []
    devices = []
    if output:
        lines = [
            line.strip() for line in ibm_hmc_lib.splitCommandOutput(output)
            if line and re.match('\s*hdisk', line)
        ]
        for line in lines:
            vals = re.split(splitPattern, line.strip())
            hdiskName = vals[0]
            deviceName = vals[1]
            hdisks.append(hdiskName)
            devices.append(deviceName)
    return (hdisks, devices)
def parsePhysicalVolume(output):
    pvDoDict = {}
    if output:
        lines = ibm_hmc_lib.splitCommandOutput(output)
        if lines:
            if re.match("\s*NAME\s+PVID", output):
                lines = lines[1:]
            for line in lines:
                tokens = re.split("\s+", line)
                if len(tokens) >= 3:
                    pv = storage_topology.PhysicalVolume()
                    pv.pvName = tokens[0]
                    if tokens[1] and tokens[1].lower() != 'none':
                        pv.pvId = tokens[1]
                    if tokens[2] and tokens[2].lower() != 'none':
                        pv.volumeGroupName = tokens[2]
                    pvDoDict[pv.pvName] = pv
    return pvDoDict
def parseLogicalVolumes(output, vgName):
    lvDict = {}
    if output:
        lines = ibm_hmc_lib.splitCommandOutput(output)
        if len(lines) > 2:
            lines = lines[2:]
        for line in lines:
            tokens = re.split("\s+", line.strip())
            if tokens and len(tokens) >= 7:
                lv = storage_topology.LogicalVolume()
                lv.lvName = tokens[0]
                lv.lvFsType = tokens[1]
                lv.lvState = tokens[5]
                if tokens[6].upper() != "N/A":
                    lv.mountPoint = tokens[6]
                lv.volumeGroupName = vgName
                lvDict[lv.lvName] = lv
    return lvDict
def parseLinuxVScsiAdapters(output):
    scsiList = []
    if output:
        lines = ibm_hmc_lib.splitCommandOutput(output)
        for line in lines:
            scsi = storage_topology.ScsiAdapter()
            match = re.match("\s*(v\-scsi\d+)\s+(.*)", line)
            if match:
                scsi.name = match.group(1).strip()
                scsi.physicalPath = match.group(2).strip()
                slotNumber = re.match(".*\-C(\d+)", scsi.physicalPath)
                if not slotNumber:
                    continue
                scsi.slotNumber = slotNumber.group(1).strip()
                scsi.slotNumber
                scsi.isVirtual = 1
                scsiList.append(scsi)
    return scsiList
def parsePhysicalVolume(output):
    pvDoDict = {}
    if output:
        lines = ibm_hmc_lib.splitCommandOutput(output)
        if lines:
            if re.match("\s*NAME\s+PVID", output):
                lines = lines[1:]
            for line in lines:
                tokens = re.split("\s+", line)
                if len(tokens) >= 3:
                    pv = storage_topology.PhysicalVolume()
                    pv.pvName = tokens[0]
                    if tokens[1] and tokens[1].lower() != 'none':
                        pv.pvId = tokens[1]
                    if tokens[2] and tokens[2].lower() != 'none':
                        pv.volumeGroupName = tokens[2]
                    pvDoDict[pv.pvName] = pv
    return pvDoDict
def parseLogicalVolumes(output, vgName):
    lvDict = {}
    if output:
        lines = ibm_hmc_lib.splitCommandOutput(output)
        if len(lines) > 2:
            lines = lines[2:]
        for line in lines:
            tokens = re.split("\s+", line.strip())
            if tokens and len(tokens) >= 7:
                lv = storage_topology.LogicalVolume()
                lv.lvName = tokens[0]
                lv.lvFsType = tokens[1]
                lv.lvState = tokens[5]
                if tokens[6].upper() != "N/A":
                    lv.mountPoint = tokens[6]
                lv.volumeGroupName = vgName
                lvDict[lv.lvName] = lv
    return lvDict
def parseLinuxVScsiAdapters(output):
    scsiList = []
    if output:
        lines = ibm_hmc_lib.splitCommandOutput(output)
        for line in lines:
            scsi = storage_topology.ScsiAdapter()
            match = re.match("\s*([v\-]*scsi\d+)\s+(.*)", line)
            if match:
                scsi.name = match.group(1).strip()
                scsi.physicalPath = match.group(2).strip()
                slotNumber = re.match(".*\-C(\d+)", scsi.physicalPath)
                if not slotNumber:
                    continue
                scsi.slotNumber = slotNumber.group(1).strip()
                scsi.slotNumber
                scsi.isVirtual = 1
                scsiList.append(scsi)
    return scsiList
def parseEthernetAdapters(output):
    adaptersDict = {}
    if output:
        entries = ibm_hmc_lib.splitCommandOutput(output)
        for entrie in entries:
            if entrie and entrie.find(':') != -1:
                try:
                    iface = ibm_hmc_lib.LparNetworkInterface()
                    tokens = entrie.split(':')
                    iface.name = tokens[0].strip()
                    if iface.name:
                        ifaceIndex = re.match('\s*[A-Za-z]+(\d+)', iface.name)
                        if ifaceIndex:
                            iface.interfaceIndex = ibm_hmc_lib.toInteger(ifaceIndex.group(1))
                    iface.physicalPath = tokens[1].strip()
                    iface.interfaceType = ibm_hmc_lib.ETH_ADAPTER
                    adaptersDict[iface.name] = iface
                except:
                    logger.warn('Failed parsing interface from string %s' % entrie)
    return adaptersDict
Esempio n. 10
0
def parseEthernetAdapters(output):
    adaptersDict = {}
    if output:
        entries = ibm_hmc_lib.splitCommandOutput(output)
        for entrie in entries:
            if entrie and entrie.find(':') != -1:
                try:
                    iface = ibm_hmc_lib.LparNetworkInterface()
                    tokens = entrie.split(':')
                    iface.name = tokens[0].strip()
                    if iface.name:
                        ifaceIndex = re.match('\s*[A-Za-z]+(\d+)', iface.name)
                        if ifaceIndex:
                            iface.interfaceIndex = ibm_hmc_lib.toInteger(
                                ifaceIndex.group(1))
                    iface.physicalPath = tokens[1].strip()
                    iface.interfaceType = ibm_hmc_lib.ETH_ADAPTER
                    adaptersDict[iface.name] = iface
                except:
                    logger.warn('Failed parsing interface from string %s' %
                                entrie)
    return adaptersDict