def _vscsi_get_scsidevices_by_sysfs():
    """ get all scsi devices information by sysfs """

    devices = []
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
    except:
        return devices

    if sysfs_mnt is None:
        return devices

    for dirpath, dirnames, files in os.walk(sysfs_mnt + SYSFS_SCSI_PATH):
        for hctl in dirnames:
            paths = os.path.join(dirpath, hctl)
            devname = None
            sg = None
            scsi_id = None
            for f in os.listdir(paths):
                realpath = os.path.realpath(os.path.join(paths, f))
                if  re.match('^block', f) or \
                    re.match('^tape', f) or \
                    re.match('^scsi_changer', f) or \
                    re.match('^onstream_tape', f):
                    devname = os.path.basename(realpath)

                if re.match('^scsi_generic', f):
                    sg = os.path.basename(realpath)
                    scsi_id = _vscsi_get_scsiid(sg)
            devices.append([hctl, devname, sg, scsi_id])

    return devices
Beispiel #2
0
def _vscsi_get_scsidevices_by_sysfs():
    """ get all scsi devices information by sysfs """

    devices = []
    try:
        sysfs_mnt = utils.find_sysfs_mount()
    except:
        return devices

    for dirpath, dirnames, files in os.walk(sysfs_mnt + SYSFS_SCSI_PATH):
        for hctl in dirnames:
            paths = os.path.join(dirpath, hctl)
            devname = None
            sg = None
            scsi_id = None
            for f in os.listdir(paths):
                realpath = os.path.realpath(os.path.join(paths, f))
                if  re.match('^block', f) or \
                    re.match('^tape', f) or \
                    re.match('^scsi_changer', f) or \
                    re.match('^onstream_tape', f):
                    devname = os.path.basename(realpath)

                if re.match('^scsi_generic', f):
                    sg = os.path.basename(realpath)
                    scsi_id = _vscsi_get_scsiid(sg)
            devices.append([hctl, devname, sg, scsi_id])

    return devices
Beispiel #3
0
def find_sysfs_mnt():
    try:
        return utils.find_sysfs_mount()
    except IOError, (errno, strerr):
        raise PciDeviceParseError(
            ('Failed to locate sysfs mount: %s: %s (%d)' %
             (PROC_PCI_PATH, strerr, errno)))
Beispiel #4
0
def get_scsi_scsilevel(pHCTL):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_scsi_dev_path = os.path.join(sysfs_mnt + SYSFS_SCSI_PATH, pHCTL)
        scsi_scsilevel = os.popen("cat " + sysfs_scsi_dev_path + SYSFS_SCSI_DEV_SCSILEVEL_PATH).read()
        return int(scsi_scsilevel.splitlines()[0])
    except:
        return None
Beispiel #5
0
def get_scsi_revision(pHCTL):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_scsi_dev_path = os.path.join(sysfs_mnt + SYSFS_SCSI_PATH, pHCTL)
        scsi_revision = os.popen("cat " + sysfs_scsi_dev_path + SYSFS_SCSI_DEV_REVISION_PATH).read()
        return scsi_revision.splitlines()[0]
    except:
        return None
def get_all_usb_names():
    usb_names = []
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
        usb_names = os.popen('ls ' + sysfs_mnt + SYSFS_USB_DEVS_PATH).read().split()
    except:
        pass
    return usb_names
Beispiel #7
0
def get_scsi_vendor(pHCTL):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_scsi_dev_path = os.path.join(sysfs_mnt + SYSFS_SCSI_PATH, pHCTL)
        scsi_vendor = os.popen("cat " + sysfs_scsi_dev_path + SYSFS_SCSI_DEV_VENDOR_PATH).read()
        return scsi_vendor.splitlines()[0]
    except:
        return None
Beispiel #8
0
def get_all_usb_names():
    usb_names = []
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        usb_names = os.popen('ls ' + sysfs_mnt +
                             SYSFS_USB_DEVS_PATH).read().split()
    except:
        pass
    return usb_names
Beispiel #9
0
def get_scsi_typeid(pHCTL):
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
        sysfs_scsi_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_SCSI_PATH, pHCTL)
        scsi_typeid = \
            os.popen('cat ' + sysfs_scsi_dev_path + \
                              SYSFS_SCSI_DEV_TYPEID_PATH).read()
        return int(scsi_typeid.splitlines()[0])
    except:
        return None
Beispiel #10
0
def get_scsi_revision(pHCTL):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_scsi_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_SCSI_PATH, pHCTL)
        scsi_revision = \
            os.popen('cat ' + sysfs_scsi_dev_path + \
                              SYSFS_SCSI_DEV_REVISION_PATH).read()
        return scsi_revision.splitlines()[0]
    except:
        return None
def usb_device_is_connected(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_dev_path = \
                os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)
        if os.path.exists(sysfs_dev_path):
            return True
        else:
            return False
    except:
        raise UsbDeviceParseError("Can't get connection status (%s)." % dev)
Beispiel #12
0
def usb_device_is_connected(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_dev_path = \
                os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)
        if os.path.exists(sysfs_dev_path):
            return True
        else:
            return False
    except:
        raise UsbDeviceParseError("Can't get connection status (%s)." % dev)
Beispiel #13
0
def get_scsi_vendor(pHCTL):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_scsi_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_SCSI_PATH, pHCTL)
        scsi_vendor = \
            os.popen('cat ' + sysfs_scsi_dev_path + \
                              SYSFS_SCSI_DEV_VENDOR_PATH).read()
        return scsi_vendor.splitlines()[0]
    except:
        return None
Beispiel #14
0
def get_scsi_scsilevel(pHCTL):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_scsi_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_SCSI_PATH, pHCTL)
        scsi_scsilevel = \
            os.popen('cat ' + sysfs_scsi_dev_path + \
                              SYSFS_SCSI_DEV_SCSILEVEL_PATH).read()
        return int(scsi_scsilevel.splitlines()[0])
    except:
        return None
Beispiel #15
0
def get_scsi_model(pHCTL):
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
        sysfs_scsi_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_SCSI_PATH, pHCTL)
        scsi_model = \
            os.popen('cat ' + sysfs_scsi_dev_path + \
                              SYSFS_SCSI_DEV_MODEL_PATH).read()
        return scsi_model.splitlines()[0]
    except:
        return None
def get_assigned_buses():
    buses = []
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        if os.path.exists(sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH):
            portids = \
                os.popen('cat ' + sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH).read().splitlines()
            for portid in portids:
                buses.append(portid.split(':')[0])
    except:
        raise UsbDeviceParseError("Can't get assigned buses from port_ids.")
    return buses
Beispiel #17
0
def get_assigned_buses():
    buses = []
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        if os.path.exists(sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH):
            portids = \
                os.popen('cat ' + sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH).read().splitlines()
            for portid in portids:
                buses.append(portid.split(':')[0])
    except:
        raise UsbDeviceParseError("Can't get assigned buses from port_ids.")
    return buses
Beispiel #18
0
def bus_is_assigned(bus):
    assigned = False
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        if os.path.exists(sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH):
            portids = \
                os.popen('cat ' + sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH).read().splitlines()
        for portid in portids:
            if portid.split(':')[0] == bus:
                assigned = True
    except:
        raise UsbDeviceParseError("Can't get assignment status: (%s)." % bus)
    return assigned
def get_assigned_bus(domid, dev, port):
    bus = ""
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        if os.path.exists(sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH):
            portids = \
                os.popen('cat ' + sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH).read().splitlines()
        for portid in portids:
            if portid.split(':')[1] == str(domid) and portid.split(':')[2] == str(dev) and portid.split(':')[3] == str(port):
                bus = portid.split(':')[0]
    except:
        raise UsbDeviceParseError("Can't get assigned bus (%d:%d:%d)." % (domid, dev, port))
    return bus
def bus_is_assigned(bus):
    assigned = False    
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        if os.path.exists(sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH):
            portids = \
                os.popen('cat ' + sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH).read().splitlines()
        for portid in portids:
            if portid.split(':')[0] == bus:
                assigned = True
    except:
        raise UsbDeviceParseError("Can't get assignment status: (%s)." % bus)
    return assigned
Beispiel #21
0
def unbind_usb_device(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        for intf in get_usb_intfs(dev):
            sysfs_usb_intf_path = \
                os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, intf)
            if os.path.exists(sysfs_usb_intf_path + SYSFS_USB_DEV_DRIVER_PATH):
                fd = os.open(sysfs_usb_intf_path + \
                             SYSFS_USB_DEV_DRIVER_PATH + \
                             SYSFS_USB_DRIVER_UNBIND_PATH, os.O_WRONLY)
                os.write(fd, intf)
                os.close(fd)
    except:
        raise UsbDeviceBindingError("can't unbind intf (%s). " % intf)
def get_usb_product(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
        sysfs_usb_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)
        if os.path.exists(sysfs_usb_dev_path + SYSFS_USB_DEV_PRODUCT_PATH):
            usb_product = \
                os.popen('cat ' + sysfs_usb_dev_path + \
                              SYSFS_USB_DEV_PRODUCT_PATH).readline()
            return usb_product.splitlines()[0]
        else:
            return ""
    except:
        return None
def get_usb_idvendor(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
        sysfs_usb_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)
        if os.path.exists(sysfs_usb_dev_path + SYSFS_USB_DEV_IDVENDOR_PATH):
            usb_idvendor = \
                os.popen('cat ' + sysfs_usb_dev_path + \
                              SYSFS_USB_DEV_IDVENDOR_PATH).readline()
            return usb_idvendor.splitlines()[0]
        else:
            return ""
    except:
        return None
def get_usb_devnum(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
        sysfs_usb_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)
        if os.path.exists(sysfs_usb_dev_path + SYSFS_USB_DEV_DEVNUM_PATH):
            usb_devicesubclass = \
                os.popen('cat ' + sysfs_usb_dev_path + \
                              SYSFS_USB_DEV_DEVNUM_PATH).readline()
            return usb_devicesubclass.splitlines()[0]
        else:
            return ""
    except:
        return None
def unbind_usb_device(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        for intf in get_usb_intfs(dev): 
            sysfs_usb_intf_path = \
                os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, intf)
            if os.path.exists(sysfs_usb_intf_path + SYSFS_USB_DEV_DRIVER_PATH):
                fd = os.open(sysfs_usb_intf_path + \
                             SYSFS_USB_DEV_DRIVER_PATH + \
                             SYSFS_USB_DRIVER_UNBIND_PATH, os.O_WRONLY)
                os.write(fd, intf)
                os.close(fd)
    except:
        raise UsbDeviceBindingError("can't unbind intf (%s). " % intf)
Beispiel #26
0
def get_usb_devnum(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_usb_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)
        if os.path.exists(sysfs_usb_dev_path + SYSFS_USB_DEV_DEVNUM_PATH):
            usb_devicesubclass = \
                os.popen('cat ' + sysfs_usb_dev_path + \
                              SYSFS_USB_DEV_DEVNUM_PATH).readline()
            return usb_devicesubclass.splitlines()[0]
        else:
            return ""
    except:
        return None
Beispiel #27
0
def get_usb_idvendor(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_usb_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)
        if os.path.exists(sysfs_usb_dev_path + SYSFS_USB_DEV_IDVENDOR_PATH):
            usb_idvendor = \
                os.popen('cat ' + sysfs_usb_dev_path + \
                              SYSFS_USB_DEV_IDVENDOR_PATH).readline()
            return usb_idvendor.splitlines()[0]
        else:
            return ""
    except:
        return None
Beispiel #28
0
def get_usb_product(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_usb_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)
        if os.path.exists(sysfs_usb_dev_path + SYSFS_USB_DEV_PRODUCT_PATH):
            usb_product = \
                os.popen('cat ' + sysfs_usb_dev_path + \
                              SYSFS_USB_DEV_PRODUCT_PATH).readline()
            return usb_product.splitlines()[0]
        else:
            return ""
    except:
        return None
Beispiel #29
0
def get_assigned_bus(domid, dev, port):
    bus = ""
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        if os.path.exists(sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH):
            portids = \
                os.popen('cat ' + sysfs_mnt + SYSFS_USBBACK_PATH + SYSFS_PORTIDS_PATH).read().splitlines()
        for portid in portids:
            if portid.split(':')[1] == str(domid) and portid.split(
                    ':')[2] == str(dev) and portid.split(':')[3] == str(port):
                bus = portid.split(':')[0]
    except:
        raise UsbDeviceParseError("Can't get assigned bus (%d:%d:%d)." %
                                  (domid, dev, port))
    return bus
def get_usb_manufacturer(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
        sysfs_usb_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)

        if os.path.exists(sysfs_usb_dev_path + SYSFS_USB_DEV_MANUFACTURER_PATH):
            usb_manufacturer = \
                os.popen('cat ' + sysfs_usb_dev_path + \
                              SYSFS_USB_DEV_MANUFACTURER_PATH).readline()
            return usb_manufacturer.splitlines()[0]
        else:
            return ""
    except:
        return None
Beispiel #31
0
def _vscsi_get_scsidevices_by_sysfs():
    """ get all scsi devices information by sysfs """

    devices = []
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
    except:
        return devices

    if sysfs_mnt is None:
        return devices

    for dirpath, dirnames, files in os.walk(sysfs_mnt + SYSFS_SCSI_PATH):
        for hctl in dirnames:
            if len(hctl.split(':')) != 4:
                continue
            paths = os.path.join(dirpath, hctl)
            devname = None
            sg = None
            scsi_id = None
            for f in os.listdir(paths):
                realpath = os.path.realpath(os.path.join(paths, f))
                if  re.match('^block:', f) or \
                    re.match('^tape:', f) or \
                    re.match('^scsi_changer:', f) or \
                    re.match('^onstream_tape:', f):
                    devname = os.path.basename(realpath)
                elif f == "block" or \
                     f == "tape" or \
                     f == "scsi_changer" or \
                     f == "onstream_tape":
                    for dir in os.listdir(os.path.join(paths, f)):
                        if os.path.exists(os.path.join(paths, f, dir, "dev")):
                            devname = os.path.basename(dir)

                if re.match('^scsi_generic:', f):
                    sg = os.path.basename(realpath)
                elif f == "scsi_generic":
                    for dir in os.listdir(os.path.join(paths, f)):
                        if os.path.exists(os.path.join(paths, f, dir, "dev")):
                            sg = os.path.basename(dir)
                if sg:
                    if devname is None:
                        devname = sg
                    scsi_id = _vscsi_get_scsiid(sg)
            devices.append([hctl, devname, sg, scsi_id])

    return devices
Beispiel #32
0
def _vscsi_get_scsidevices_by_sysfs():
    """ get all scsi devices information by sysfs """

    devices = []
    try:
        sysfs_mnt = utils.find_sysfs_mount() 
    except:
        return devices

    if sysfs_mnt is None:
        return devices

    for dirpath, dirnames, files in os.walk(sysfs_mnt + SYSFS_SCSI_PATH):
        for hctl in dirnames:
            if len(hctl.split(':')) != 4:
                continue
            paths = os.path.join(dirpath, hctl)
            devname = None
            sg = None
            scsi_id = None
            for f in os.listdir(paths):
                realpath = os.path.realpath(os.path.join(paths, f))
                if  re.match('^block:', f) or \
                    re.match('^tape:', f) or \
                    re.match('^scsi_changer:', f) or \
                    re.match('^onstream_tape:', f):
                    devname = os.path.basename(realpath)
                elif f == "block" or \
                     f == "tape" or \
                     f == "scsi_changer" or \
                     f == "onstream_tape":
                    for dir in os.listdir(os.path.join(paths, f)):
                        if os.path.exists(os.path.join(paths, f, dir, "dev")):
                            devname = os.path.basename(dir)

                if re.match('^scsi_generic:', f):
                    sg = os.path.basename(realpath)
                elif f == "scsi_generic":
                    for dir in os.listdir(os.path.join(paths, f)):
                        if os.path.exists(os.path.join(paths, f, dir, "dev")):
                            sg = os.path.basename(dir)
                if sg:
                    if devname is None:
                        devname = sg
                    scsi_id = _vscsi_get_scsiid(sg)
            devices.append([hctl, devname, sg, scsi_id])

    return devices
Beispiel #33
0
def get_usb_manufacturer(dev):
    try:
        sysfs_mnt = utils.find_sysfs_mount()
        sysfs_usb_dev_path = \
            os.path.join(sysfs_mnt + SYSFS_USB_DEVS_PATH, dev)

        if os.path.exists(sysfs_usb_dev_path +
                          SYSFS_USB_DEV_MANUFACTURER_PATH):
            usb_manufacturer = \
                os.popen('cat ' + sysfs_usb_dev_path + \
                              SYSFS_USB_DEV_MANUFACTURER_PATH).readline()
            return usb_manufacturer.splitlines()[0]
        else:
            return ""
    except:
        return None
Beispiel #34
0
def find_sysfs_mnt():
    try:
        return utils.find_sysfs_mount()
    except IOError, (errno, strerr):
        raise PciDeviceParseError(('Failed to locate sysfs mount: %s: %s (%d)'%
            (PROC_PCI_PATH, strerr, errno)))