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