コード例 #1
0
ファイル: backup_vm.py プロジェクト: bchoaz/ovirt-engine-sdk
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)
コード例 #2
0
args = parser.parse_args()
common.configure_logging(args)

connection = common.create_connection(args)
with closing(connection):
    system_service = connection.system_service()
    disks_service = connection.system_service().disks_service()
    disk_service = disks_service.disk_service(args.disk_uuid)
    disk = disk_service.get()

    transfer = imagetransfer.create_transfer(
        connection, disk, types.ImageTransferDirection.DOWNLOAD)
    try:
        url = urlparse(transfer.transfer_url)
        con = client.HTTPSConnection(
            url.netloc, context=ssl.create_default_context(cafile=args.cafile))
        with closing(con):
            con.request("GET", url.path + "/checksum")
            res = con.getresponse()

            if res.status != client.OK:
                error = res.read().decode("utf-8", "replace")
                raise RuntimeError(
                    "Error computing checksum: {}".format(error))

            result = json.loads(res.read())
            print(json.dumps(result, indent=4))
    finally:
        imagetransfer.finalize_transfer(connection, transfer, disk)
コード例 #3
0
        progress("Transfer ID: %s" % transfer.id)
        progress("Transfer host name: %s" % transfer.host.name)

        extra_args = {}

        if args.use_proxy:
            download_url = transfer.proxy_url
        else:
            download_url = transfer.transfer_url
            extra_args["proxy_url"] = transfer.proxy_url

        if args.backing_file:
            extra_args["backing_file"] = os.path.basename(args.backing_file)
            extra_args["backing_format"] = "qcow2"

        progress("Downloading image...")

        with client.ProgressBar() as pb:
            client.download(download_url,
                            args.filename,
                            args.cafile,
                            secure=args.secure,
                            max_workers=args.max_workers,
                            buffer_size=args.buffer_size,
                            progress=pb,
                            **extra_args)
    finally:
        progress("Finalizing image transfer...")
        imagetransfer.finalize_transfer(connection, transfer,
                                        disk_snapshot.disk)