Ejemplo n.º 1
0
    def set_fields(cls, drive, data, context=None):
        try:
            if XML_NODE in data.keys():
                if isinstance(data[XML_NODE], dict):
                    if data[XML_NODE][XML_AT_ID].startswith(LSHW_DISK):
                        data = data[XML_NODE]
            capabilities = data[LSHW_CAPABILITIES][LSHW_CAPABILITY]
            if not isinstance(capabilities, list):
                capabilities = [capabilities]
            for cap in capabilities:
                rpm_info = cap[XML_AT_ID].split(LSHW_RPM)
                if len(rpm_info) == DRIVE_RPM_DATA_SIZE:
                    try:
                        drive_hdparm = ShellCommand(
                            "hdparm -I " + str(data[LSHW_LOGICALNAME]) +
                            " | grep Rotation | cut -d':' -f2")
                        drive_hdparm.execute()
                        drive.rpm = int(drive_hdparm.get_stdout())
                    except ValueError:
                        # unable to parse hdparm output - it returned "solid state drive" in "rotation" section
                        drive.rpm = 0

            if DISK_SSD_TYPE in data[XML_PRODUCT]:
                drive.type = DISK_SSD_TYPE
                del drive.rpm
            else:
                drive.type = DISK_HDD_TYPE
            drive.capacityGB = int(
                int(data[LSHW_SIZE][XML_HASH_TEXT]) / 1000**3)
            drive.physicalId = data[LSHW_PHYSID]
            drive.firmwareVersion = data[XML_VERSION]
        except (KeyError, TypeError):
            return None
        return drive
Ejemplo n.º 2
0
    def set_fields(cls, drive, data, context=None):
        try:
            if XML_NODE in data.keys():
                if isinstance(data[XML_NODE], dict):
                    if data[XML_NODE][XML_AT_ID].startswith(LSHW_DISK):
                        data = data[XML_NODE]
            capabilities = data[LSHW_CAPABILITIES][LSHW_CAPABILITY]
            if not isinstance(capabilities, list):
                capabilities = [capabilities]
            for cap in capabilities:
                rpm_info = cap[XML_AT_ID].split(LSHW_RPM)
                if len(rpm_info) == DRIVE_RPM_DATA_SIZE:
                    try:
                        drive_hdparm = ShellCommand("hdparm -I " + str(data[LSHW_LOGICALNAME]) + " | grep Rotation | cut -d':' -f2")
                        drive_hdparm.execute()
                        drive.rpm = int(drive_hdparm.get_stdout())
                    except ValueError:
                        # unable to parse hdparm output - it returned "solid state drive" in "rotation" section
                        drive.rpm = 0

            if DISK_SSD_TYPE in data[XML_PRODUCT]:
                drive.type = DISK_SSD_TYPE
                del drive.rpm
            else:
                drive.type = DISK_HDD_TYPE
            drive.capacityGB = int(int(data[LSHW_SIZE][XML_HASH_TEXT]) / 1000 ** 3)
            drive.physicalId = data[LSHW_PHYSID]
            drive.firmwareVersion = data[XML_VERSION]
        except (KeyError, TypeError):
            return None
        return drive
Ejemplo n.º 3
0
def get_nic_mtu(nic):
    iplink = ShellCommand("ip link show " + nic)
    iplink.execute()
    try:
        mtu = iplink.get_stdout().split("mtu")[1]
        mtu = mtu.split(" ")[1]
        mtu = int(mtu)
    except IndexError, ValueError:
        return ""
Ejemplo n.º 4
0
def get_nic_mtu(nic):
    iplink = ShellCommand("ip link show " + nic)
    iplink.execute()
    try:
        mtu = iplink.get_stdout().split("mtu")[1]
        mtu = mtu.split(" ")[1]
        mtu = int(mtu)
    except IndexError, ValueError:
        return ""
Ejemplo n.º 5
0
 def get_drives(cls, data):
     drives = []
     for node in data:
         try:
             if node[XML_AT_ID].startswith(LSHW_SCSI):
                 # find pci bus where disk is connected
                 cmd = "udevadm info -q all -n " +\
                       str(node[XML_NODE][LSHW_LOGICALNAME]) +\
                       " | grep 'DEVPATH' | cut -d/  -f 4 "
                 pci_bus_command = ShellCommand(cmd, [])
                 pci_bus_command.execute()
                 if pci_bus_command.get_exitcode() == EXIT_CODE_SUCCESS:
                     node[
                         LSHW_PCI_STORAGE_CNTRL] = pci_bus_command.get_stdout(
                         )[:-1]
                 else:
                     node[LSHW_PCI_STORAGE_CNTRL] = None
                 drives.append(node)
             elif node[XML_AT_ID].startswith(LSHW_PCI):
                 pci_list = node[XML_NODE]
                 if not isinstance(pci_list, list):
                     pci_list = [pci_list]
                 for pci in pci_list:
                     if pci[XML_AT_ID].startswith(LSHW_PCI):
                         if isinstance(pci[XML_NODE], dict):
                             if pci[XML_NODE][XML_AT_ID] == LSHW_STORAGE:
                                 resources = pci[XML_NODE][XML_NODE]
                                 if not isinstance(resources, list):
                                     resources = [resources]
                                 for disk in resources:
                                     if disk[XML_AT_ID].startswith(
                                             LSHW_DISK):
                                         disk[LSHW_PCI_STORAGE_CNTRL] = pci[
                                             XML_NODE][LSHW_BUSINFO]
                                         drives.append(disk)
                         elif isinstance(pci[XML_NODE], dict):
                             for dev in pci[XML_NODE]:
                                 if isinstance(dev[XML_NODE], dict):
                                     if dev[XML_NODE][
                                             XML_AT_ID] == LSHW_STORAGE:
                                         resources = dev[XML_NODE][XML_NODE]
                                         if not isinstance(resources, list):
                                             resources = [resources]
                                         for disk in resources:
                                             if disk[XML_AT_ID].startswith(
                                                     LSHW_DISK):
                                                 disk[
                                                     LSHW_PCI_STORAGE_CNTRL] = dev[
                                                         XML_NODE][
                                                             LSHW_BUSINFO]
                                                 drives.append(disk)
         except KeyError:
             pass
     return drives
Ejemplo n.º 6
0
def read_location():
    kernel_params = ShellCommand("cat /proc/cmdline")
    kernel_params.execute()
    location = Location()
    try:
        location_param = kernel_params.get_stdout().split("location=")[1]
        parsed_params = location_param.split(",")
        try:
            pod, rack, drawer, module, blade = parsed_params
        except ValueError:
            pod = "pod=0"
            rack, drawer, module, blade = parsed_params
        location = Location(pod.split("=")[1], rack.split("=")[1],
                drawer.split("=")[1], module.split("=")[1], blade.split("=")[1])
    except IndexError, ValueError:
        pass
Ejemplo n.º 7
0
 def get_drives(cls, data):
     drives = []
     for node in data:
         try:
             if node[XML_AT_ID].startswith(LSHW_SCSI):
                 # find pci bus where disk is connected
                 cmd = "udevadm info -q all -n " +\
                       str(node[XML_NODE][LSHW_LOGICALNAME]) +\
                       " | grep 'DEVPATH' | cut -d/  -f 4 "
                 pci_bus_command = ShellCommand(cmd, [])
                 pci_bus_command.execute()
                 if pci_bus_command.get_exitcode() == EXIT_CODE_SUCCESS:
                     node[LSHW_PCI_STORAGE_CNTRL] = pci_bus_command.get_stdout()[:-1]
                 else:
                     node[LSHW_PCI_STORAGE_CNTRL] = None
                 drives.append(node)
             elif node[XML_AT_ID].startswith(LSHW_PCI):
                 pci_list = node[XML_NODE]
                 if not isinstance(pci_list , list):
                     pci_list = [pci_list]
                 for pci in pci_list:
                     if pci[XML_AT_ID].startswith(LSHW_PCI):
                         if isinstance(pci[XML_NODE], dict):
                             if pci[XML_NODE][XML_AT_ID] == LSHW_STORAGE:
                                 resources = pci[XML_NODE][XML_NODE]
                                 if not isinstance(resources , list):
                                     resources = [resources]
                                 for disk in resources:
                                     if disk[XML_AT_ID].startswith(LSHW_DISK):
                                         disk[LSHW_PCI_STORAGE_CNTRL] = pci[XML_NODE][LSHW_BUSINFO]
                                         drives.append(disk)
                         elif isinstance(pci[XML_NODE], dict):
                             for dev in pci[XML_NODE]:
                                 if isinstance(dev[XML_NODE], dict):
                                     if dev[XML_NODE][XML_AT_ID] == LSHW_STORAGE:
                                         resources = dev[XML_NODE][XML_NODE]
                                         if not isinstance(resources , list):
                                             resources = [resources]
                                         for disk in resources:
                                             if disk[XML_AT_ID].startswith(LSHW_DISK):
                                                 disk[LSHW_PCI_STORAGE_CNTRL] = dev[XML_NODE][LSHW_BUSINFO]
                                                 drives.append(disk)
         except KeyError:
                 pass
     return drives
Ejemplo n.º 8
0
def _profile(type):
    dmi = ShellCommand("dmidecode")
    dmi.execute()
    info = _parse_dmi(dmi.get_stdout(), type)
    return info
Ejemplo n.º 9
0
def get_lspci_info():
    lspci = ShellCommand("lspci -n")
    lspci.execute()
    info = _parse_lspci(lspci.get_stdout())
    return info
Ejemplo n.º 10
0
def get_lsusb_info():
    lsusb = ShellCommand("lsusb")
    lsusb.execute()
    info = _parse_lsusb(lsusb.get_stdout())
    return info
Ejemplo n.º 11
0
 def get_udevadm_info(device):
     udevadm = ShellCommand("/sbin/udevadm info --query=property --name=" +
                            device)
     udevadm.execute()
     info = Udevadm.parse_udevadm(udevadm.get_stdout())
     return info
Ejemplo n.º 12
0
def get_ethtool_info(interface):
    ethtool = ShellCommand("ethtool " + interface)
    ethtool.execute()
    info = _parse_ehtool(ethtool.get_stdout())
    return info
Ejemplo n.º 13
0
def get_lspci_info():
    lspci = ShellCommand("lspci -n")
    lspci.execute()
    info = _parse_lspci(lspci.get_stdout())
    return info
Ejemplo n.º 14
0
def get_ethtool_info(interface):
    ethtool = ShellCommand("ethtool " + interface)
    ethtool.execute()
    info = _parse_ehtool(ethtool.get_stdout())
    return info
Ejemplo n.º 15
0
 def get_udevadm_info(device):
     udevadm = ShellCommand("/sbin/udevadm info --query=property --name=" + device)
     udevadm.execute()
     info = Udevadm.parse_udevadm(udevadm.get_stdout())
     return info