def default_vol_name(self): if not self.name_hint: return "" suffix = self.default_suffix() ret = "" try: ret = StorageVolume.find_free_name( self.parent_pool.get_backend(), self.name_hint, suffix=suffix) except: logging.exception("Error finding a default vol name") return ret
def default_vol_name(self): if not self.name_hint: return "" suffix = self.default_suffix() ret = "" try: ret = StorageVolume.find_free_name( self.parent_pool.get_backend(), self.name_hint, suffix=suffix) except Exception: logging.exception("Error finding a default vol name") return ret
def _default_vol_name(self): hint = self._name_hint or "vol" suffix = self._default_suffix() ret = "" try: ret = StorageVolume.find_free_name(self._parent_pool.get_backend(), hint, suffix=suffix) if ret and suffix: ret = ret.rsplit(".", 1)[0] except Exception: logging.exception("Error finding a default vol name") return ret
def _upload_file(conn, meter, destpool, src): # Build stream object stream = conn.newStream(0) def safe_send(data): while True: ret = stream.send(data) if ret == 0 or ret == len(data): break data = data[ret:] if meter is None: meter = urlgrabber.progress.BaseMeter() # Build placeholder volume size = os.path.getsize(src) basename = os.path.basename(src) xmlobj = StoragePool(conn, parsexml=destpool.XMLDesc(0)) poolpath = xmlobj.target_path name = StorageVolume.find_free_name(destpool, basename) if name != basename: logging.debug("Generated non-colliding volume name %s", name) vol_install = VirtualDisk.build_vol_install(conn, name, destpool, (float(size) / 1024.0 / 1024.0 / 1024.0), True) disk = VirtualDisk(conn) disk.path = os.path.join(poolpath, name) disk.set_create_storage(vol_install=vol_install) disk.validate() disk.setup(meter=meter) vol = disk.get_vol_object() if not vol: raise RuntimeError(_("Failed to lookup scratch media volume")) try: # Register upload offset = 0 length = size flags = 0 vol.upload(stream, offset, length, flags) # Open source file fileobj = file(src, "r") # Start transfer total = 0 meter.start(size=size, text=_("Transferring %s") % os.path.basename(src)) while True: # blocksize = (1024 ** 2) blocksize = 1024 data = fileobj.read(blocksize) if not data: break safe_send(data) total += len(data) meter.update(total) # Cleanup stream.finish() meter.end(size) except: if vol: vol.delete(0) raise return vol