mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 17:57:43 +03:00
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>
libvirt Python Bindings README ============================== Most of the libvirt python binding code is automatically generated using the script generator.py, and the API description from docs/libvirt-api.xml Manually written files: - libvirt-override.c: methods where the C binding needs to be hand crafted - libvirt-override.py: global methods where the C and python bindings have different args - libvirt-override-api.xml: methods where the auto-extracted API docs are not suitable for python auto-generator. Overriding this if the method is going into libvirt-override.c, but we still want auto-generated libvirt-override.py - libvirt-override-virConnect.py: virConnect class methods - typewrappers.h,.c: Python object wrappers for each libvirt C object Auto-generated files: - libvirt.py: The main python binding. Comprises auto-generated code, along with contents from libvirt-override.py and libvirt-override-virConnect.py - libvirt.c, libvirt.h: The C glue layer for the python binding. Comprises auto-generated code, along with libvirt-override.c - libvirt-export.c: List of auto-generated C methods, included into the libvirt-override.c method table