From aa053ba2c5059f3f60c1eaa95f3c72cc5cf984b4 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 25 Jun 2007 15:56:18 +0000 Subject: [PATCH] Mon Jun 25 16:55:00 BST 2007 Richard W.M. Jones * include/libvirt/libvirt.h.in, src/libvirt.c, src/libvirt_sym.version, python/generator.py: Added virDomainGetConnect and virNetworkGetConnect to allow us to get the "hidden" connection associated with each domain or network. --- ChangeLog | 7 +++++++ include/libvirt/libvirt.h | 10 +++++++++ include/libvirt/libvirt.h.in | 10 +++++++++ python/generator.py | 4 ++++ src/libvirt.c | 40 ++++++++++++++++++++++++++++++++++++ src/libvirt_sym.version | 6 ++++-- 6 files changed, 75 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d243dd6de..426ca509cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Jun 25 16:55:00 BST 2007 Richard W.M. Jones + + * include/libvirt/libvirt.h.in, src/libvirt.c, src/libvirt_sym.version, + python/generator.py: Added virDomainGetConnect and + virNetworkGetConnect to allow us to get the "hidden" + connection associated with each domain or network. + Mon Jun 25 14:30:00 BST 2007 Richard W.M. Jones * include/libvirt/libvirt.h, include/libvirt/libvirt.h.in, diff --git a/include/libvirt/libvirt.h b/include/libvirt/libvirt.h index 5153274a60..f733541366 100644 --- a/include/libvirt/libvirt.h +++ b/include/libvirt/libvirt.h @@ -295,6 +295,11 @@ int virConnectListDomains (virConnectPtr conn, int virConnectNumOfDomains (virConnectPtr conn); +/* + * Get connection from domain. + */ +virConnectPtr virDomainGetConnect (virDomainPtr domain); + /* * Domain creation and destruction */ @@ -523,6 +528,11 @@ typedef struct _virNetwork virNetwork; */ typedef virNetwork *virNetworkPtr; +/* + * Get connection from network. + */ +virConnectPtr virNetworkGetConnect (virNetworkPtr network); + /* * List active networks */ diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in index cf8de162b9..9f5e070999 100644 --- a/include/libvirt/libvirt.h.in +++ b/include/libvirt/libvirt.h.in @@ -295,6 +295,11 @@ int virConnectListDomains (virConnectPtr conn, int virConnectNumOfDomains (virConnectPtr conn); +/* + * Get connection from domain. + */ +virConnectPtr virDomainGetConnect (virDomainPtr domain); + /* * Domain creation and destruction */ @@ -523,6 +528,11 @@ typedef struct _virNetwork virNetwork; */ typedef virNetwork *virNetworkPtr; +/* + * Get connection from network. + */ +virConnectPtr virNetworkGetConnect (virNetworkPtr network); + /* * List active networks */ diff --git a/python/generator.py b/python/generator.py index 3dc321234d..4f7c129337 100755 --- a/python/generator.py +++ b/python/generator.py @@ -870,6 +870,10 @@ def buildWrappers(): txt.write("Class %s()\n" % (classname)) classes.write("class %s:\n" % (classname)) if classname == "virDomain" or classname == "virNetwork": + # NB: Earlier versions of libvirt did not provide + # vir{Domain,Network}GetConnect, so we had to explicitly + # store the connection object in _conn. In future + # we won't need to do this. classes.write(" def __init__(self, conn, _obj=None):\n") else: classes.write(" def __init__(self, _obj=None):\n") diff --git a/src/libvirt.c b/src/libvirt.c index 4e1d885b3e..f50c91926f 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -545,6 +545,26 @@ virConnectNumOfDomains(virConnectPtr conn) return -1; } +/** + * virDomainGetConnect: + * @dom: pointer to a domain + * + * Returns the connection pointer associated with a domain. The + * reference counter on the connection is not increased by this + * call. + * + * Returns the virConnectPtr or NULL in case of failure. + */ +virConnectPtr +virDomainGetConnect (virDomainPtr dom) +{ + if (!VIR_IS_DOMAIN (dom)) { + virLibDomainError (dom, VIR_ERR_INVALID_DOMAIN, __FUNCTION__); + return NULL; + } + return dom->conn; +} + /** * virDomainCreateLinux: * @conn: pointer to the hypervisor connection @@ -2036,6 +2056,26 @@ virDomainDetachDevice(virDomainPtr domain, char *xml) return -1; } +/** + * virNetworkGetConnect: + * @net: pointer to a network + * + * Returns the connection pointer associated with a network. The + * reference counter on the connection is not increased by this + * call. + * + * Returns the virConnectPtr or NULL in case of failure. + */ +virConnectPtr +virNetworkGetConnect (virNetworkPtr net) +{ + if (!VIR_IS_NETWORK (net)) { + virLibNetworkError (net, VIR_ERR_INVALID_NETWORK, __FUNCTION__); + return NULL; + } + return net->conn; +} + /** * virConnectNumOfNetworks: * @conn: pointer to the hypervisor connection diff --git a/src/libvirt_sym.version b/src/libvirt_sym.version index e705bc8a23..9b9f189542 100644 --- a/src/libvirt_sym.version +++ b/src/libvirt_sym.version @@ -1,13 +1,14 @@ { global: virInitialize; + virConnectOpen; + virConnectOpenReadOnly; virConnectClose; virConnectGetType; virConnectGetVersion; + virDomainGetConnect; virConnectListDomains; virConnectNumOfDomains; - virConnectOpen; - virConnectOpenReadOnly; virDomainCreate; virDomainCreateLinux; virDomainDefineXML; @@ -66,6 +67,7 @@ virDomainAttachDevice; virDomainDetachDevice; + virNetworkGetConnect; virConnectNumOfNetworks; virConnectListNetworks; virConnectNumOfDefinedNetworks;