From: Daniel Veillard Date: Fri, 7 Dec 2007 08:41:01 +0000 (+0000) Subject: * python/generator.py python/libvir.c python/libvirt-python-api.xml: X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=a56281c0a8e6ef447e9dec541c539d0f677a3feb;p=libvirt.git * python/generator.py python/libvir.c python/libvirt-python-api.xml: add a python binding for virNodeGetCellsFreeMemory Daniel --- diff --git a/ChangeLog b/ChangeLog index 4eadab2d5a..fe255aed48 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Dec 7 09:39:41 CET 2007 Daniel Veillard + + * python/generator.py python/libvir.c python/libvirt-python-api.xml: + add a python binding for virNodeGetCellsFreeMemory + Thu Dec 6 12:41:18 CET 2007 Jim Meyering * qemud/qemud.c (qemudInitPaths): Remove unused code. diff --git a/python/generator.py b/python/generator.py index bf384e1c18..5d94ec9117 100755 --- a/python/generator.py +++ b/python/generator.py @@ -278,6 +278,7 @@ skip_impl = ( 'virNetworkLookupByUUID', 'virDomainBlockStats', 'virDomainInterfaceStats', + 'virNodeGetCellsFreeMemory', ) def skip_function(name): diff --git a/python/libvir.c b/python/libvir.c index bab34b3ad8..91f3acc3ce 100644 --- a/python/libvir.c +++ b/python/libvir.c @@ -27,6 +27,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); /************************************************************************ * * @@ -844,7 +845,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); +} /************************************************************************ * * @@ -875,6 +914,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} }; diff --git a/python/libvirt-python-api.xml b/python/libvirt-python-api.xml index b6154e75ab..46b2fa2e61 100644 --- a/python/libvirt-python-api.xml +++ b/python/libvirt-python-api.xml @@ -75,5 +75,12 @@ + + Returns the availbale memory for a list of cells + + + + +