From: Daniel P. Berrange Date: Thu, 16 Nov 2006 00:17:10 +0000 (+0000) Subject: Added binding for virConnectListDefinedDomains api X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=a26b33cb15ec44c91ea91ecaf6bf695c0b62fa71;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git Added binding for virConnectListDefinedDomains api --- diff --git a/ChangeLog b/ChangeLog index b03ea386d..362f3765b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Nov 15 18:23:13 EST 2006 Daniel Berrange + + * python/generator.py, python/libvir.c, python/libvirt-python-api.xml: + Added binding for virConnectListDefinedDomains API. + Wed Nov 15 15:08:13 EST 2006 Daniel Berrange * src/xen_internal.c, src/xs_internal.c, src/xend_internal.c, diff --git a/python/generator.py b/python/generator.py index d921f9807..48cd3ee3a 100755 --- a/python/generator.py +++ b/python/generator.py @@ -260,6 +260,7 @@ foreign_encoding_args = ( # code is still automatically generated (so they are not in skip_function()). skip_impl = ( 'virConnectListDomainsID', + 'virConnectListDefinedDomains', 'virConnGetLastError', 'virGetLastError', 'virDomainGetInfo', diff --git a/python/libvir.c b/python/libvir.c index 6d14fb2fe..1d8e422f2 100644 --- a/python/libvir.c +++ b/python/libvir.c @@ -240,6 +240,52 @@ libvirt_virConnectListDomainsID(PyObject *self ATTRIBUTE_UNUSED, return(py_retval); } +static PyObject * +libvirt_virConnectListDefinedDomains(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) { + PyObject *py_retval; + char **names = NULL; + int c_retval, i; + virConnectPtr conn; + PyObject *pyobj_conn; + + + if (!PyArg_ParseTuple(args, (char *)"O:virConnectListDomains", &pyobj_conn)) + return(NULL); + conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn); + + c_retval = virConnectNumOfDefinedDomains(conn); + if (c_retval < 0) { + Py_INCREF(Py_None); + return (Py_None); + } + + if (c_retval) { + names = malloc(sizeof(char *) * c_retval); + if (!names) { + Py_INCREF(Py_None); + return (Py_None); + } + c_retval = virConnectListDefinedDomains(conn, (const char **)names, c_retval); + if (c_retval < 0) { + free(names); + Py_INCREF(Py_None); + return(Py_None); + } + } + py_retval = PyList_New(c_retval); + + if (names) { + for (i = 0;i < c_retval;i++) { + PyList_SetItem(py_retval, i, libvirt_constcharPtrWrap(names[i])); + free(names[i]); + } + free(names); + } + + return(py_retval); +} + static PyObject * libvirt_virDomainGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; @@ -364,6 +410,7 @@ static PyMethodDef libvirtMethods[] = { {(char *) "virDomainFree", libvirt_virDomainFree, METH_VARARGS, NULL}, {(char *) "virConnectClose", libvirt_virConnectClose, METH_VARARGS, NULL}, {(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID, METH_VARARGS, NULL}, + {(char *) "virConnectListDefinedDomains", libvirt_virConnectListDefinedDomains, METH_VARARGS, NULL}, {(char *) "virDomainGetInfo", libvirt_virDomainGetInfo, METH_VARARGS, NULL}, {(char *) "virNodeGetInfo", libvirt_virNodeGetInfo, METH_VARARGS, NULL}, {(char *) "virDomainGetUUID", libvirt_virDomainGetUUID, METH_VARARGS, NULL}, diff --git a/python/libvirt-python-api.xml b/python/libvirt-python-api.xml index 302ba023b..1a658a34a 100644 --- a/python/libvirt-python-api.xml +++ b/python/libvirt-python-api.xml @@ -6,6 +6,11 @@ + + list the defined domains, stores the pointers to the names in @names + + + Try to lookup a domain on the given hypervisor based on its UUID.