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)
Пример #2
0
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")