Perhaps you can query the status of job using the correlation id (taking the examples from ovirt-system-tests):
  dead_snap1_params = types.Snapshot(
        description=SNAPSHOT_DESC_1,
        persist_memorystate=False,
        disk_attachments=[
            types.DiskAttachment(
                disk=types.Disk(
                    id=disk.id
                )
            )
        ]
    )
    correlation_id = uuid.uuid4()

    vm1_snapshots_service.add(dead_snap1_params,
                              query={'correlation_id': correlation_id})

    testlib.assert_true_within_long(
        lambda:
        test_utils.all_jobs_finished(engine, correlation_id)
    )

All jobs finished checks that jobs with correlation_id have finished, it is implemented like this[2]:
def all_jobs_finished(engine, correlation_id):
    try:
        jobs = engine.jobs_service().list(
            search='correlation_id=%s' % correlation_id
        )
    except:
        jobs = engine.jobs_service().list()
    return all(job.status != types.JobStatus.STARTED for job in jobs)


You can instead do something like this:
 jobs = engine.jobs_service().list(
            search='correlation_id=%s' % correlation_id
        )

return any(job.status == types.JobStatus.FAILED for job in jobs)





[1] - https://github.com/oVirt/ovirt-system-tests/blob/master/basic-suite-master/test-scenarios/004_basic_sanity.py#L353
[2] - https://github.com/oVirt/ovirt-system-tests/blob/master/basic-suite-master/test_utils/__init__.py#L209

On Thu, Jul 12, 2018 at 10:28 AM <nicolas@devels.es> wrote:
Hi Ondra,

El 2018-07-12 08:02, Ondra Machacek escribió:
> On 07/11/2018 10:10 AM, nicolas@devels.es wrote:
>> Hi,
>>
>> We're using ovirt-engine-sdk-python 4.1.6 on oVirt 4.1.9, currently
>> we're trying to delete some snapshots via a script like this:
>>
>>      sys_serv = conn.system_service()
>>      vms_service = sys_serv.vms_service()
>>      vm_service = vms_service.vm_service(vmid)
>>      snaps_service = vm_service.snapshots_service()
>>      snaps_service.service('SNAPSHOT-ID').remove()
>
> In case of failure this line should raise Error, so you should know it
> failed.
>

It doesn't, actually. This call is asynchronous, and the snapshot
deletion seems to fail after about 10 seconds, so initially it seems to
be correct but fails afterwards, that's why I need a way to check if the
task ended correctly or not.

>>
>> This works, mostly... however, sometimes the deletion fails:
>>
>>      Failed to delete snapshot 'snapshot name' for VM 'vm'.
>>
>> Is it currently possible to know via Python-SDK that the deletion
>> actually failed? I know I can check the state of a snapshot, but I'd
>> like to check the result of the task. Is that possible somehow?
>>
>> Thanks.
>> _______________________________________________
>> Users mailing list -- users@ovirt.org
>> To unsubscribe send an email to users-leave@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/AFGSUUJ3RNWX6H66RRGDPFLM6YEL577F/
_______________________________________________
Users mailing list -- users@ovirt.org
To unsubscribe send an email to users-leave@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/XFPROJO4XHL36SJIQIYAAXUTPI6N4IIS/