コード例 #1
0
    def get_dev_type(self):
        """
        Return disk 'type' value per storage settings
        """
        if self._dev_type is None:
            if self._vol_object:
                t = self._vol_object.info()[0]
                if t == libvirt.VIR_STORAGE_VOL_FILE:
                    self._dev_type = "file"
                elif t == libvirt.VIR_STORAGE_VOL_BLOCK:
                    self._dev_type = "block"
                else:
                    self._dev_type = "file"

            elif self._pool_object:
                xml = self._get_pool_xml()
                for source, source_type in [
                    ("dir", "dir"),
                    ("device", "block"),
                    ("adapter", "block")]:
                    if util.xpath(xml, "/pool/source/%s/@dev" % source):
                        self._dev_type = source_type
                        break

            elif self._path:
                if os.path.isdir(self._path):
                    self._dev_type = "dir"
                elif util.stat_disk(self._path)[0]:
                    self._dev_type = "file"
                else:
                    self._dev_type = "block"

            if not self._dev_type:
                self._dev_type = "block"
        return self._dev_type
コード例 #2
0
    def get_dev_type(self):
        """
        Return disk 'type' value per storage settings
        """
        if self._dev_type is None:
            if self._vol_object:
                t = self._vol_object.info()[0]
                if t == libvirt.VIR_STORAGE_VOL_FILE:
                    self._dev_type = "file"
                elif t == libvirt.VIR_STORAGE_VOL_BLOCK:
                    self._dev_type = "block"
                else:
                    self._dev_type = "file"

            elif self._pool_object:
                self._dev_type = self._get_pool_xml().get_vm_disk_type()

            elif self._path and not self._conn.is_remote():
                if os.path.isdir(self._path):
                    self._dev_type = "dir"
                elif util.stat_disk(self._path)[0]:
                    self._dev_type = "file"
                else:
                    self._dev_type = "block"

            if not self._dev_type:
                self._dev_type = "block"
        return self._dev_type
コード例 #3
0
    def stat_local_path(path):
        """
        Return tuple (storage type, storage size) for the passed path on
        the local machine. This is a best effort attempt.

        @return: tuple of
                 (True if regular file, False otherwise, default is True,
                 max size of storage, default is 0)
        """
        try:
            return util.stat_disk(path)
        except:
            return (True, 0)
コード例 #4
0
 def get_size(self):
     """
     Return size of existing storage
     """
     if self._size is None:
         ret = 0
         if self._vol_object:
             ret = util.xpath(self._get_vol_xml(), "/volume/capacity")
         elif self._pool_object:
             ret = util.xpath(self._get_pool_xml(), "/pool/capacity")
         elif self._path:
             ignore, ret = util.stat_disk(self.path)
         self._size = (float(ret) / 1024.0 / 1024.0 / 1024.0)
     return self._size