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