On Tue, Mar 27, 2007 at 12:58:08PM +0100, Richard W.M. Jones wrote:
virDomainGetUUIDString,
virDomainPinVcpu,
virNetworkGetUUIDString:
These functions don't seem to check whether the parameters are
correct. For example, virDomainGetUUIDString doesn't check if the
buffer parameter passed from Python is large enough to take the UUID string.
virDomainPinVcpu is just plain strange (but I guess that strangeness
eminates from the Xen implementation), but it seems possible for the
Python code to be wrong about the length of the Vcpu map (string).
Shouldn't the length be taken from the string itself?
I'm pretty sure all 3 of those methods will need to be hand-written rather
than letting the generator do its thing. For the GetUUIDString() functions
the C prototype has the caller pass in a pre-allocate char * - which is
getting translated in Python as the caller passing in a string object. This
is dumb from the python POV where we have garbage collection. The Python
wrapper code should allocate the correct sized char * when calling the
GetUUIDString methods & then return a python string object. For the PingVCPU
method things are more complicated - in C its a large bit field, although it
is represented as a char *. In python I think we need to represent it as a
list of VCPU numbers.
virDomainUndefine,
virNetworkUndefine:
It's unclear from the libvirt documentation, but it sounds as if
these functions invalidate (free) the virDomainPtr / virNetworkPtr
object passed to them. (In fact, the Xen implementation of virDomainPtr
at least _doesn't_ free it - is that a bug?) If this is the case, then
the Python bindings ought to set self._o = None.
Yes, the virDomainPtr objects ought to be free'd by these two functions,
so the python should clear the _o member after the calls complete. It
should also clear it after virDomainDestroy if it doesn't already.
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|