From fb54944e588be376fcd3fc9e01d8592a86731c41 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Tue, 31 Jan 2006 10:24:12 +0000 Subject: * python/*: update of the python bindings, fix names, add missing features like list of domains and domain info extraction Daniel --- libvir.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'libvir.c') diff --git a/libvir.c b/libvir.c index 2f18660..5956fdd 100644 --- a/libvir.c +++ b/libvir.c @@ -48,6 +48,58 @@ libvir_virConnectClose(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { return(py_retval); } +static PyObject * +libvir_virConnectListDomainsID(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) { + PyObject *py_retval; + int ids[500], 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 = virConnectListDomains(conn, &ids[0], 500); + if (c_retval < 0) { + Py_INCREF(Py_None); + return(Py_None); + } + py_retval = PyList_New(c_retval); + for (i = 0;i < c_retval;i++) { + PyList_SetItem(py_retval, i, libvir_intWrap(ids[i])); + } + return(py_retval); +} + +static PyObject * +libvir_virDomainGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { + PyObject *py_retval; + int c_retval; + virDomainPtr domain; + PyObject *pyobj_domain; + virDomainInfo info; + + if (!PyArg_ParseTuple(args, (char *)"O:virDomainGetInfo", &pyobj_domain)) + return(NULL); + domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain); + + c_retval = virDomainGetInfo(domain, &info); + if (c_retval < 0) { + Py_INCREF(Py_None); + return(Py_None); + } + py_retval = PyList_New(5); + PyList_SetItem(py_retval, 0, libvir_intWrap((int) info.state)); + PyList_SetItem(py_retval, 1, libvir_longWrap((long) info.maxMem)); + PyList_SetItem(py_retval, 2, libvir_longWrap((long) info.memory)); + PyList_SetItem(py_retval, 3, libvir_intWrap((int) info.nrVirtCpu)); + PyList_SetItem(py_retval, 4, + libvir_longlongWrap((unsigned long long) info.cpuTime)); + return(py_retval); +} + /************************************************************************ * * * The registration stuff * @@ -57,6 +109,8 @@ static PyMethodDef libvirMethods[] = { #include "libvir-export.c" {(char *) "virDomainFree", libvir_virDomainFree, METH_VARARGS, NULL}, {(char *) "virConnectClose", libvir_virConnectClose, METH_VARARGS, NULL}, + {(char *) "virConnectListDomainsID", libvir_virConnectListDomainsID, METH_VARARGS, NULL}, + {(char *) "virDomainGetInfo", libvir_virDomainGetInfo, METH_VARARGS, NULL}, {NULL, NULL, 0, NULL} }; -- cgit