]> git.ipfire.org Git - thirdparty/libvirt.git/commit
python: fix bindings that don't raise an exception
authorGuannan Ren <gren@redhat.com>
Thu, 21 Mar 2013 03:24:49 +0000 (11:24 +0800)
committerGuannan Ren <gren@redhat.com>
Thu, 21 Mar 2013 03:24:49 +0000 (11:24 +0800)
commit4b143ab23173000d1afa258726be0ff38cf2b386
tree0c33fb52fb0ed52bbaaa1763132fed1065207638
parent1d94891288286bdd1c2d4eea1940f32de56bb09c
python: fix bindings that don't raise an exception

For example:
 >>> dom.memoryStats()
 libvir: QEMU Driver error : Requested operation is not valid:\
         domain is not running

There are six such python API functions like so.
The root reason is that generator.py script checks the type of return
value of a python stub function defined in libvirt-api.xml or
libvirt-override-api.xml to see whether to add the raise clause or not
in python wrapper code in libvirt.py.

The type of return value is supposed to be C types.
For those stub functions which return python non-integer data type like
string, list, tuple, dictionary, the existing type in functions varies
from each other which leads problem like this.

Currently, in generator.py, it maintains a buggy whitelist for stub functions
returning a list type. I think it is easy to forget adding new function name
in the whitelist.

This patch makes the value of type consistent with C type "char *"
in libvirt-override-api.xml. For python, any of types could be printed
as string, so I choose "char *" in this case. And the comment in xml
could explain it when adding new function definition.

      <function name='virNodeGetCPUStats' file='python'>
        ...
 -      <return type='virNodeCPUStats' info='...'/>
 +      <return type='char *' info='...'/>
        ...
      </function>
python/generator.py
python/libvirt-override-api.xml