From 03c33f098186e38f4da8ae479678a34502b1ed5e Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Sun, 30 Sep 2007 13:48:31 +0000 Subject: libvirt-0.3.3-1.el5 - Update to 0.3.3 - Avahi support - NUMA support - APIs for collecting statistics on disks and interfaces - API for domains migration - localtime clock support - PS/2 and USB input devices - Secure remote access support - unification of daemons - lots of assorted improvements, bugfixes and cleanups - documentation and localization improvements - Resolves: rhbz#223833 - Resolves: rhbz#235851 - Resolves: rhbz#251641 - Resolves: rhbz#251706 - Resolves: rhbz#253494 - Resolves: rhbz#254051 - Resolves: rhbz#273421 - Resolves: rhbz#306931 - Resolves: rhbz#328841 - Resolves: rhbz#346281 --- libvir.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'libvir.c') diff --git a/libvir.c b/libvir.c index 0621eb2..83e0fd0 100644 --- a/libvir.c +++ b/libvir.c @@ -23,6 +23,7 @@ PyObject *libvirt_virGetLastError(PyObject *self ATTRIBUTE_UNUSED, PyObject *arg PyObject *libvirt_virConnGetLastError(PyObject *self ATTRIBUTE_UNUSED, PyObject *args); PyObject * libvirt_virDomainBlockStats(PyObject *self ATTRIBUTE_UNUSED, PyObject *args); PyObject * libvirt_virDomainInterfaceStats(PyObject *self ATTRIBUTE_UNUSED, PyObject *args); +PyObject * libvirt_virNodeGetCellsFreeMemory(PyObject *self ATTRIBUTE_UNUSED, PyObject *args); /************************************************************************ * * @@ -718,7 +719,45 @@ libvirt_virNetworkGetAutostart(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) return(py_retval); } +PyObject * libvirt_virNodeGetCellsFreeMemory(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) +{ + PyObject *py_retval; + PyObject *pyobj_conn; + int startCell, maxCells, c_retval, i; + virConnectPtr conn; + unsigned long long *freeMems; + + if (!PyArg_ParseTuple(args, (char *)"Oii:virNodeGetCellsFreeMemory", &pyobj_conn, &startCell, &maxCells)) + return(NULL); + if ((startCell < 0) || (maxCells <= 0) || (startCell + maxCells > 10000)) + goto error; + + conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn); + freeMems = (unsigned long long *) + malloc(maxCells * sizeof(unsigned long long)); + if (freeMems == NULL) + goto error; + + LIBVIRT_BEGIN_ALLOW_THREADS; + c_retval = virNodeGetCellsFreeMemory(conn, freeMems, startCell, maxCells); + LIBVIRT_END_ALLOW_THREADS; + + if (c_retval < 0) { + free(freeMems); +error: + 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, + libvirt_longlongWrap((long long) freeMems[i])); + } + free(freeMems); + return(py_retval); +} /************************************************************************ * * @@ -748,6 +787,7 @@ static PyMethodDef libvirtMethods[] = { {(char *) "virNetworkGetAutostart", libvirt_virNetworkGetAutostart, METH_VARARGS, NULL}, {(char *) "virDomainBlockStats", libvirt_virDomainBlockStats, METH_VARARGS, NULL}, {(char *) "virDomainInterfaceStats", libvirt_virDomainInterfaceStats, METH_VARARGS, NULL}, + {(char *) "virNodeGetCellsFreeMemory", libvirt_virNodeGetCellsFreeMemory, METH_VARARGS, NULL}, {NULL, NULL, 0, NULL} }; -- cgit