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

Я новичок в 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,
    ),
)

//Обновить

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


person Naxi    schedule 05.03.2020    source источник


Ответы (1)


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

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

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

Я надеюсь, что это помогает.

person Shani    schedule 05.03.2020