0

我是 ovirt 的新手,正在尝试增加已连接到我的 VM 的磁盘的大小。这是一个很好的例子:Ovirt SDK 示例

唯一的问题是,在这个例子中,我们首先附加磁盘,然后调整它的大小。这样我就可以访问disk_attachment 稍后用于更新大小。对我来说,这不是一个选项,因为我自己没有附加磁盘,因为它是从模板自动发生的。

//先挂载磁盘

disk_attachment = disk_attachments_service.add(
    types.DiskAttachment(
        disk=types.Disk(
            name='mydisk',
            description='my disk',
            format=types.DiskFormat.COW,
            provisioned_size=10 * 2**30,
            storage_domains=[
                types.StorageDomain(
                    name='bs-scsi-012',
                ),
            ],
        ),
        interface=types.DiskInterface.VIRTIO,
        bootable=False,
        active=True,
    ),
)

//更新

# Find the service that manages the disk attachment that was added in the
# previous step:
disk_attachment_service = disk_attachments_service.attachment_service(disk_attachment.id)

有没有办法可以让我的手在disk_attachment.id上,以便我可以触发更新操作,或者是否有其他方法可以实现相同的目的?

4

1 回答 1

1

如果您需要查找磁盘附件 ID,可以使用此SDK 示例。这一个列出了 VM 磁盘和它们的一些参数,包括它们的 id。

获得所需的磁盘 ID 后,您可以使用以下代码(基于您剪切的示例):

# Locate the virtual machines service and use it to find the virtual
# machine:
vms_service = connection.system_service().vms_service()
vm = vms_service.list(search='name=vm1')[0]

# Locate the disk attachments service and use it to find the revelant 
# disk attachment:
disk_attachments_service = vms_service.vm_service(vm.id).disk_attachments_service()
disk_attachment = disk_attachments_service.list(search='id=<the-disk-id>')[0]
disk_attachment_service = disk_attachments_service.attachment_service(disk_attachment.id)

# Extend the disk size to 3 GiB.
disk_attachment_service.update(
    types.DiskAttachment(
        disk=types.Disk(
            provisioned_size=3 * 2**30,
        ),
    ),
)

disks_service = connection.system_service().disks_service()
disk_service = disks_service.disk_service(disk_attachment.disk.id)

# Wait till the disk is OK:
while True:
    time.sleep(5)
    disk = disk_service.get()
    if disk.status == types.DiskStatus.OK:
        break

# Close the connection to the server:
connection.close()

我希望它有所帮助。

于 2020-03-05T12:37:34.193 回答