def download_disk(connection, backup_uuid, disk, disk_path, args, incremental=False): transfer = create_transfer(connection, backup_uuid, disk) try: # We must use the daemon for downloading a backup disk. download_url = transfer.transfer_url with client.ProgressBar() as pb: client.download(download_url, disk_path, args.cafile, incremental=incremental, secure=args.secure, progress=pb) finally: finalize_transfer(connection, transfer)
def download_disk(connection, backup_uuid, disk, disk_path, args, incremental=False): progress("Creating image transfer for disk %s" % disk.id) transfer = imagetransfer.create_transfer( connection, disk, types.ImageTransferDirection.DOWNLOAD, backup=types.Backup(id=backup_uuid)) try: progress("Image transfer %s is ready" % transfer.id) download_url = transfer.transfer_url extra_args = {} parameters = inspect.signature(client.download).parameters # Use multiple workers to speed up the download. if "max_workers" in parameters: extra_args["max_workers"] = args.max_workers # Use proxy_url if available. Download will use proxy_url if # transfer_url is not available. if "proxy_url" in parameters: extra_args["proxy_url"] = transfer.proxy_url with client.ProgressBar() as pb: client.download(download_url, disk_path, args.cafile, incremental=incremental, secure=args.secure, buffer_size=args.buffer_size, progress=pb, **extra_args) finally: progress("Finalizing image transfer") imagetransfer.finalize_transfer(connection, transfer, disk)
# Use multiple workers to speed up the upload. if "max_workers" in parameters: extra_args["max_workers"] = args.max_workers if args.use_proxy: upload_url = transfer.proxy_url else: upload_url = transfer.transfer_url # Use fallback to proxy_url if feature is available. Upload will use the # proxy_url if transfer_url is not accessible. if "proxy_url" in parameters: extra_args["proxy_url"] = transfer.proxy_url progress("Uploading image...") with client.ProgressBar() as pb: client.upload(args.filename, upload_url, args.cafile, secure=args.secure, buffer_size=args.buffer_size, progress=pb, **extra_args) progress("Finalizing image transfer...") imagetransfer.finalize_transfer(connection, transfer, disk) connection.close() progress("Upload completed successfully")