From 7b35fd718d2156224797ace08f752dfbb9884520 Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Wed, 23 Jan 2013 12:14:57 +0100 Subject: [PATCH] python: Fix bindings for virDomainSnapshotGet{Domain,Connect} https://bugzilla.redhat.com/show_bug.cgi?id=895882 virDomainSnapshot.getDomain() and virDomainSnapshot.getConnect() wrappers around virDomainSnapshotGet{Domain,Connect} were not supposed to be ever implemented. The class should contain proper domain() and connect() accessors that fetch python objects stored internally within the class. While domain() was already provided, connect() was missing. This patch adds connect() method to virDomainSnapshot class and reimplements getDomain() and getConnect() methods as aliases to domain() and connect() for backward compatibility. --- python/generator.py | 4 +++- python/libvirt-override-virDomainSnapshot.py | 8 ++++++++ src/libvirt.c | 14 ++++++++++++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/python/generator.py b/python/generator.py index a079fc57f9..5d27f66c05 100755 --- a/python/generator.py +++ b/python/generator.py @@ -527,6 +527,8 @@ skip_function = ( "virNWFilterGetConnect", "virStoragePoolGetConnect", "virStorageVolGetConnect", + "virDomainSnapshotGetConnect", + "virDomainSnapshotGetDomain", # only useful in C code, python code uses dict for typed parameters "virTypedParamsAddBoolean", @@ -953,7 +955,6 @@ classes_destructors = { class_skip_connect_impl = { "virConnect" : True, - "virDomainSnapshot": True, } class_domain_impl = { @@ -1436,6 +1437,7 @@ def buildWrappers(module): " self._conn = conn._conn\n") elif classname in [ "virDomainSnapshot" ]: classes.write(" self._dom = dom\n") + classes.write(" self._conn = dom.connect()\n") classes.write(" if _obj != None:self._o = _obj;return\n") classes.write(" self._o = None\n\n"); destruct=None diff --git a/python/libvirt-override-virDomainSnapshot.py b/python/libvirt-override-virDomainSnapshot.py index 3da7bfd903..bf708a52bd 100644 --- a/python/libvirt-override-virDomainSnapshot.py +++ b/python/libvirt-override-virDomainSnapshot.py @@ -1,3 +1,11 @@ + def getConnect(self): + """Get the connection that owns the domain that a snapshot was created for""" + return self.connect() + + def getDomain(self): + """Get the domain that a snapshot was created for""" + return self.domain() + def listAllChildren(self, flags): """List all child snapshots and returns a list of snapshot objects""" ret = libvirtmod.virDomainSnapshotListAllChildren(self._o, flags) diff --git a/src/libvirt.c b/src/libvirt.c index d5d561c0b5..f81a3de76b 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -17850,7 +17850,12 @@ virDomainSnapshotGetName(virDomainSnapshotPtr snapshot) * virDomainSnapshotGetDomain: * @snapshot: a snapshot object * - * Get the domain that a snapshot was created for + * Provides the domain pointer associated with a snapshot. The + * reference counter on the domain is not increased by this + * call. + * + * WARNING: When writing libvirt bindings in other languages, do not use this + * function. Instead, store the domain and the snapshot object together. * * Returns the domain or NULL. */ @@ -17874,7 +17879,12 @@ virDomainSnapshotGetDomain(virDomainSnapshotPtr snapshot) * virDomainSnapshotGetConnect: * @snapshot: a snapshot object * - * Get the connection that owns the domain that a snapshot was created for + * Provides the connection pointer associated with a snapshot. The + * reference counter on the connection is not increased by this + * call. + * + * WARNING: When writing libvirt bindings in other languages, do not use this + * function. Instead, store the connection and the snapshot object together. * * Returns the connection or NULL. */