[ovirt-users] Unexpected behaviour during creating VM using oVirt API

Roman Chukov mailbox4ovirt at asgardahost.org
Fri Oct 7 18:59:08 UTC 2016


Hello, 

I am trying to create a virtual machine from a template using oVirt
API. Somehow like this:

---
def createVM(connection, cluster, vmname, vmtemplate):
        try:
                 param = params.VM( name=vmname, \
                 cluster=connection.clusters.get(name=cluster), \
                 template=connection.templates.get(name=vmtemplate), \
                 use_latest_template_version = True ) 
        except: 
		print "Could not construct a request to oVirtapi,please check parameters which were being sent to" 
		return None

        try:
                connection.vms.add(param)
        except:
                print "I was not able to commit my request into oVirt api."
                return None
        return "OK"
---

Everything is fine when I have only ONE version of a template. But I am 
used to create several number of versions for one template because it
is quite flexible. In this case, when I run my script, I receive an
"AmbiguousQueryError" error even if an option
"use_latest_template_version = True" is used.

I revised
file  /usr/lib/python2.7/site-packages/ovirtsdk/utils/filterhelper.py
and found near line 30 that this error is raised unquestionably:

--
if len(result) > 1:
	raise AmbiguousQueryError(query)
return result[0] if result else None
--

It seems quite strange. Either I do not understand the meaning of
option "use_latest_template_version" or using of this option does not
make sense, I mean query constructed in params.VM() function will not
be passed by filterhelper.py in current implementation.
I made a small patch that allows me to use the latest
version of the template during VM creation:

--
if len(result) > 1 :
	result = result[len(result) - 1]
	return result
	#raise AmbiguousQueryError(query)
return result[0] if result else Nonepython-2.7.5-34.el7.x86_64
--
But I am still not sure that original behaviour of filehelper.py is
unexpectable. I would be very pleasant if you explain me this issue.

My OS is CentOS 7. I use Python python-2.7.5-34.el7.x86_64. Version of
ovirt-engine-sdk is ovirt-engine-sdk-python-3.6.8.0-1.el7.centos.noarch

--
Thanks in advance, Roman A. Chukov.
https://asgardahost.org



More information about the Users mailing list