Indeed. A felt like there was need for a simple way to backup ovirt vms.
Ansible may just be the answer. After some more testing of the playbook I
plan to publish a blog post/guide on the subject so others can use it.
On Fri, Jan 24, 2020 at 4:42 AM Jan Zmeskal <jzmeskal(a)redhat.com> wrote:
Hi Lars, you might find this email thread interesting:
https://lists.ovirt.org/archives/list/users@ovirt.org/thread/PXYAQ7YEBQCU...
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.stolpe(a)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(a)ovirt.org
> To unsubscribe send an email to users-leave(a)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/ZVFUE32ORCM...
>
--
Jan Zmeskal
Quality Engineer, RHV Core System
Red Hat <
https://www.redhat.com>
<
https://www.redhat.com>