Как изменить размер уже подключенного диска к виртуальной машине с помощью Ovirt - PullRequest
0 голосов
/ 05 марта 2020

Я новичок в ovirt и пытаюсь увеличить размер уже подключенного диска к моей виртуальной машине. Вот хороший пример для того же: Пример 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,
    ),
)

// update

# 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 , чтобы я мог запустить операцию обновления или есть альтернативный способ добиться того же?

1 Ответ

1 голос
/ 05 марта 2020

Если вам нужно найти идентификатор диска, вы можете использовать этот пример SDK . В этом списке перечислены диски VM и некоторые их параметры, включая их идентификатор.

Когда у вас есть требуемый идентификатор диска, вы можете использовать следующий код (в зависимости от примера, который вы обработали):

# 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()

Надеюсь, это поможет.

...