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?