summaryrefslogtreecommitdiffstats
path: root/libvirt-override.c
diff options
context:
space:
mode:
authorJiri Denemark <jdenemar@redhat.com>2012-01-31 07:34:51 +0100
committerJiri Denemark <jdenemar@redhat.com>2012-02-01 10:59:27 +0100
commit340ef52421ef1ac903a97b64ab0572da05175970 (patch)
tree61d1c9daafe609d30d479e1f5e7594230955cbe2 /libvirt-override.c
parentd033c9577c3c6c080f13de6f7a025c95964eae47 (diff)
downloadlibvirt-python-split-340ef52421ef1ac903a97b64ab0572da05175970.tar.gz
libvirt-python-split-340ef52421ef1ac903a97b64ab0572da05175970.tar.xz
libvirt-python-split-340ef52421ef1ac903a97b64ab0572da05175970.zip
python: Add binding for virDomainGetDiskErrors
Diffstat (limited to 'libvirt-override.c')
-rw-r--r--libvirt-override.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/libvirt-override.c b/libvirt-override.c
index d2aad0f..18849f8 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -3484,6 +3484,59 @@ libvirt_virDomainGetBlockIoTune(PyObject *self ATTRIBUTE_UNUSED,
return(pyreply);
}
+static PyObject *
+libvirt_virDomainGetDiskErrors(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args)
+{
+ PyObject *py_retval = VIR_PY_NONE;
+ virDomainPtr domain;
+ PyObject *pyobj_domain;
+ unsigned int flags;
+ virDomainDiskErrorPtr disks = NULL;
+ unsigned int ndisks;
+ int count;
+ int i;
+
+ if (!PyArg_ParseTuple(args, (char *) "Oi:virDomainGetDiskErrors",
+ &pyobj_domain, &flags))
+ return NULL;
+
+ domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
+
+ if ((count = virDomainGetDiskErrors(domain, NULL, 0, 0)) < 0)
+ return VIR_PY_NONE;
+ ndisks = count;
+
+ if (ndisks) {
+ if (!(disks = malloc(sizeof(*disks) * ndisks)))
+ return VIR_PY_NONE;
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ count = virDomainGetDiskErrors(domain, disks, ndisks, 0);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (count < 0)
+ goto cleanup;
+ }
+
+ if (!(py_retval = PyDict_New()))
+ goto cleanup;
+
+ for (i = 0; i < count; i++) {
+ PyDict_SetItem(py_retval,
+ libvirt_constcharPtrWrap(disks[i].disk),
+ libvirt_intWrap(disks[i].error));
+ }
+
+cleanup:
+ if (disks) {
+ for (i = 0; i < count; i++)
+ free(disks[i].disk);
+ free(disks);
+ }
+ return py_retval;
+}
+
/*******************************************
* Helper functions to avoid importing modules
* for every callback
@@ -5206,6 +5259,7 @@ static PyMethodDef libvirtMethods[] = {
{(char *) "virDomainMigrateGetMaxSpeed", libvirt_virDomainMigrateGetMaxSpeed, METH_VARARGS, NULL},
{(char *) "virDomainBlockPeek", libvirt_virDomainBlockPeek, METH_VARARGS, NULL},
{(char *) "virDomainMemoryPeek", libvirt_virDomainMemoryPeek, METH_VARARGS, NULL},
+ {(char *) "virDomainGetDiskErrors", libvirt_virDomainGetDiskErrors, METH_VARARGS, NULL},
{NULL, NULL, 0, NULL}
};