[Libvir] Python bindings, errors & exceptions

Richard W.M. Jones rjones at redhat.com
Fri Mar 23 14:12:28 UTC 2007


Daniel Veillard wrote:
> On Fri, Mar 23, 2007 at 01:28:36PM +0000, Richard W.M. Jones wrote:
>> Daniel P. Berrange wrote:
>>> Actually looks like it is the generated code actually. The generator.py
>>> appears to only add in the 'raise libvirtError' stuff if the return value
>>> is a virConnectPtr/virDomainPtr/virNeworkPtr  object - any other function
>>> with a non-object return value gives back None upon error. 
>> The generator.py code as it stands doesn't deal with the case where a 
>> function is prototyped (in C) as returning 'int'.
>>
>> If I were to modify generator.py so that it adds the check for functions 
>> returning int, then it doesn't work because there is not enough 
>> information from just the C return type to tell what the Python return 
>> type will be.
> 
>   Right and that's why the automatic generator does not raise exception
> automatically. For example getMaxMem could return -1 to mean unlimited
> (e.g. on Domain 0) which is a correct return code in my opinion and
> should not be considered and error, while getMem returning -1 should
> really mean an error occured.
>   No way automatic code could catch the subtle difference.

getMaxMem definitely sounds like a problem.  I wouldn't have spotted 
that on my own.

>> We could do some run-time type magic in the generated wrapper, although 
>> that seems evil.
> 
>   At best keep a list of functions where one would not want to generate
> exception automatically.

Yes, I'm working on this.

Thanks,

Rich.

-- 
Emerging Technologies, Red Hat  http://et.redhat.com/~rjones/
64 Baker Street, London, W1U 7DF     Mobile: +44 7866 314 421
  "[Negative numbers] darken the very whole doctrines of the equations
  and make dark of the things which are in their nature excessively
  obvious and simple" (Francis Maseres FRS, mathematician, 1759)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20070323/090b3a8f/attachment-0001.bin>


More information about the libvir-list mailing list