From 15d35f3f7676b26ceb6c18095edfd7d24d388dde Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Thu, 16 Nov 2006 00:17:10 +0000 Subject: Added binding for virConnectListDefinedDomains api --- generator.py | 1 + libvir.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ libvirt-python-api.xml | 5 +++++ 3 files changed, 53 insertions(+) diff --git a/generator.py b/generator.py index d921f98..48cd3ee 100755 --- a/generator.py +++ b/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/libvir.c b/libvir.c index 6d14fb2..1d8e422 100644 --- a/libvir.c +++ b/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/libvirt-python-api.xml b/libvirt-python-api.xml index 302ba02..1a658a3 100644 --- a/libvirt-python-api.xml +++ b/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. -- cgit