Hi Lars, you might find this email thread interesting:
https://lists.ovirt.org/archives/list/users@ovirt.org/thread/PXYAQ7YEBQCUWCAQCFAFXB3545LNB23X/

Jayme is trying to solve pretty much the same problem as you - although
he's using the Ansible approach instead of SDK. Feel free to join that
conversation. At this point it seems like he might have found a good
solution, but he needs to test it.

Jan

On Fri, Jan 24, 2020 at 8:33 AM <lars.sto...@bvg.de> wrote:

> hi,
>
> I tryed this with API 4.2 and 4.3.
> purpose of the following script is, to export a given list of vm as OVA
> one after another.
> To reach that i need to monitor the job status and pause the script till
> the actual export is done.
> The script works fine, but not the restriction of the returned jobs to the
> one spcificaly job i need to monitor.
> Therefor the script pauses on *any* running job.
> the working script:
>
> #!/usr/bin/python
>
> import logging
> import time
>
> import ovirtsdk4 as sdk
> import ovirtsdk4.types as types
>
> connection = sdk.Connection(
>     url='https://ovirtman12/ovirt-engine/api',
>     username='admin@internal',
>     password='***',
>     ca_file='/etc/pki/ovirt-engine/ca-ovirtman12.pem',
> )
>
>
> hosts_service = connection.system_service().hosts_service()
> hosts = hosts_service.list()[0]
>
> vms_service = connection.system_service().vms_service()
> vms = vms_service.list(search='name=blxlic954')
>
> for vm in vms:
> #     print("%s (%s)" % (vm.name, vm.id))
>     vm_service = vms_service.vm_service(vm.id)
>     start_time = (time.strftime('%Y%m%d_%H%M%S',
> time.localtime(int(time.time()))))
>     vm_service.export_to_path_on_host(
>         host=types.Host(id=hosts.id),
>         directory='/nfs_c3/export',
>         filename=('%s_backup_%s.ova' % (vm.name, start_time)),
>         wait=True,
>     )
> #    time.sleep(5)
>     jobs_service = connection.system_service().jobs_service()
>     jobs = jobs_service.list(search='')
>     for job in jobs:
>         print(job.id, job.description)
> #        job = jobs_service.job_service(job.id).get()
>         while job.status == types.JobStatus.STARTED:
>             time.sleep(10)
>             job = jobs_service.job_service(job.id).get()
>             print('job-status: %s' % (job.status))
>
> connection.close()
>
> The line
>     jobs = jobs_service.list(search='')
> works fine as long as the search pattern is empty.
>
> if i try to restrict the results returned like this:
>     jobs = jobs_service.list(search='description=*blxlic954*')
> i get an error:
>
>  bad sql grammar [select * from (select * from job where ( job id in
> (select distinct job.job id from  job   where  (  ) ))  order by start time
> asc) as t1 offset (1 -1) limit 2147483647]; nested exception is
> org.postgresql.util.psqlexception: error: syntax error at or near ")"
>
> looks like the 'where' clause is not filled correctly.
>
> Am i wrong with my syntax or ist that a bug?
> Is there another way to get the correct job id/status?
> _______________________________________________
> 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/ZVFUE32ORCMN7EBRR7PXKRWAJJV4MAIB/
>


-- 

Jan Zmeskal

Quality Engineer, RHV Core System

Red Hat <https://www.redhat.com>
<https://www.redhat.com>
_______________________________________________
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/3FAXEKVKJUMHEEBIMN4OREBA3H6QMTIS/

Reply via email to