def get_all_multipath_block_devices(self):
        from infi.multipathtools import MultipathClient
        from infi.multipathtools.connection import UnixDomainSocket
        client = MultipathClient(UnixDomainSocket(timeout=120))
        if not client.is_running():
            logger.warning("multipathd is not running")
            return []

        devices = self._get_list_of_active_devices(client)
        result = []
        logger.debug("Got {} devices from multipath client".format(len(devices)))
        for mpath_device in devices:
            block_dev = self.sysfs.find_block_device_by_devno(mpath_device.major_minor)
            if block_dev is not None:
                result.append(LinuxNativeMultipathBlockDevice(self.sysfs, block_dev, mpath_device))
        living_devices = filter(lambda device: device._is_there_atleast_one_path_up(), result)
        return living_devices
    def get_all_multipath_block_devices(self):
        from infi.multipathtools import MultipathClient
        client = MultipathClient()
        if not client.is_running():
            logger.info("MultipathD is not running")
            return []

        try:
            devices = self._get_list_of_active_devices(client)
        except IOError:
            raise DeviceDisappeared()
        result = []
        logger.debug("Got {} devices from multipath client".format(len(devices)))
        for mpath_device in devices:
            block_dev = self.sysfs.find_block_device_by_devno(mpath_device.major_minor)
            if block_dev is not None:
                result.append(LinuxNativeMultipathBlockDevice(self.sysfs, block_dev, mpath_device))
        living_devices = filter(lambda device: device._is_there_atleast_one_path_up(), result)
        return living_devices
示例#3
0
    def get_all_multipath_block_devices(self):
        from infi.multipathtools import MultipathClient
        from infi.multipathtools.connection import UnixDomainSocket
        client = MultipathClient(UnixDomainSocket(timeout=120))
        if not client.is_running():
            logger.warning("multipathd is not running")
            return []

        devices = self._get_list_of_active_devices(client)
        result = []
        logger.debug("Got {} devices from multipath client".format(
            len(devices)))
        for mpath_device in devices:
            block_dev = self.sysfs.find_block_device_by_devno(
                mpath_device.major_minor)
            if block_dev is not None:
                result.append(
                    LinuxNativeMultipathBlockDevice(self.sysfs, block_dev,
                                                    mpath_device))
        living_devices = [
            device for device in result
            if device._is_there_atleast_one_path_up()
        ]
        return living_devices