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 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
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