On 11/21/18 8:17 AM, Philipp Hahn wrote:
> Hi,
> 
> while working on the Python type annotations for the Python libvirt
> binding I noticed the following code in
> libvirt-override-virDomainSnapshot.py:
> 
>>     def listAllChildren(self, flags=0):
>>         """List all child snapshots and returns a list of snapshot objects"""
> ...
>>             raise libvirtError("..., conn=self)
> 
> "self" is an instance of virDomainSnapshot here.
> 
> I found two similar cases where "conn" was not a "virConnect" instance
> in listAllSnapshots() and listAllVolumes().
> 
> Compare that with the declaration of libvirtError in libvirt-override.py:
> 
>> class libvirtError(Exception):
>>     def __init__(self, defmsg, conn=None, dom=None, net=None, pool=None, 
>> vol=None):
> 
> Looking further at the implementation of that method only "defmsg" is
> used; all other references are not accessed and never stored in an
> instance variable.
> 
> Should I add a new "snap" argument to libvirtError.__init__() or should
> we stop passing those references to the constructor altogether?

I think we should pass whatever object the error occurred on. Your patch
#2 demonstrates this beautifully - with the current code conn will point
to something that is not instance of virConnect rather than virDomain class.

> 
> Patch 2 and 3 might be applied to the current branch already, patch 1
> currently depends on my other work.

ACK to them, do you want me to apply them now or should I wait (e.g.
will you send them in some series?)

Michal

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to