I can refer again to what we do in the ovirt-system-tests:

    testlib.assert_true_within_long(
        lambda:
        vm1_snapshots_service.list()[-1].snapshot_status ==
types.SnapshotStatus.OK
    )


Which tests whether the status change to desirable one within a given
period of time (I think ten minutes in case of assert_true_within_long),
the assert code itself is in ovirtlago:

https://github.com/lago-project/lago-ost-plugin/blob/130bed27a04c9b63161d6fc9cd3e68cd7b54d0c6/ovirtlago/testlib.py#L224

So instead of just asserting you can modify it to do whatever you need

On Thu, Jun 21, 2018 at 4:06 PM Gianluca Cecchi <gianluca.cec...@gmail.com>
wrote:

> On Thu, Jun 21, 2018 at 2:00 PM, Benny Zlotnik <bzlot...@redhat.com>
> wrote:
>
>> You could something like this (IIUC):
>>     dead_snap1_params = types.Snapshot(
>>         description=SNAPSHOT_DESC_1,
>>         persist_memorystate=False,
>>         disk_attachments=[
>>             types.DiskAttachment(
>>                 disk=types.Disk(
>>                     id=disk.id
>>                 )
>>             )
>>         ]
>>     )
>>
>> Taken from ovirt-system-tests[1]
>>
>> [1] -
>> https://github.com/oVirt/ovirt-system-tests/blob/master/basic-suite-master/test-scenarios/004_basic_sanity.py#L340
>>
>>
>>
> Hi, thanks for your input!
> It seems I was able to reach my target
>
> What I've done
>
> # Locate the service that manages the disk attachments of the virtual
> # machine:
> disk_attachments_service = vm_service.disk_attachments_service()
>
> # Retrieve the list of disk attachments and then the bootable disk
> disk_attachments = disk_attachments_service.list()
>
> bootdisk = None
> for disk_attachment in disk_attachments:
>     disk = connection.follow_link(disk_attachment.disk)
>     if disk_attachment.bootable == True:
>         bootdisk = connection.follow_link(disk_attachment.disk)
>         break
>
> snaps_service = vm_service.snapshots_service()
> snap = snaps_service.add(
>     snapshot=types.Snapshot(
>         description=snap_description,
>         persist_memorystate=False,
>         disk_attachments=[
>             types.DiskAttachment(
>                 disk=types.Disk(
>                     id=bootdisk.id
>                 )
>             )
>         ]
>     ),
> )
> logging.info(
>     'Sent request to create snapshot \'%s\', the id is \'%s\'.',
>     snap.description, snap.id,
> )
>
>
> It seems also the monitor function already present in backup.py of the sdk
> examples linked in my previous message is working ok,
>
> # Poll and wait till the status of the snapshot is 'ok', which means
> # that it is completely created:
> snap_service = snaps_service.snapshot_service(snap.id)
> while snap.snapshot_status != types.SnapshotStatus.OK:
>     logging.info(
>         'Waiting till the snapshot is created, the status is now \'%s\'.',
>         snap.snapshot_status,
>     )
>     time.sleep(1)
>     snap = snap_service.get()
> logging.info('The snapshot is now complete.')
>
>
> In fact in the log file I have
>
> INFO:root:Sent request to create snapshot
> 'padnpro_imp-backup-0e0c7064-bec5-429b-9ad7-cd8d1e5b25be', the id is
> '4135e8cb-87e8-4f09-82f5-b9ad0ed2f5be'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:Waiting till the snapshot is created, the status is now 'locked'.
> INFO:root:The snapshot is now complete.
>
> What if I would like to emit an event if for any reason the creation of
> the snapshot doesn't complete in a predefined elapsed time and manage it?
> I think I have also to manage the case when for any reason no disk is
> marked as bootable inside the VM I'm backing up...
>
> Gianluca
>
>
_______________________________________________
Users mailing list -- users@ovirt.org
To unsubscribe send an email to users-le...@ovirt.org
Privacy Statement: https://www.ovirt.org/site/privacy-policy/
oVirt Code of Conduct: 
https://www.ovirt.org/community/about/community-guidelines/
List Archives: 
https://lists.ovirt.org/archives/list/users@ovirt.org/message/6CJI7H4V7LG65MOQWP32AHJHVYYUYIG3/

Reply via email to