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