diff --git a/python/libvirt-override-api.xml b/python/libvirt-override-api.xml
index 0bafd21e8b6df01ae9344d6761490acb8e116e70..2fd6dec4edc96d8a3c635211c72bf93c4db5c5b2 100644
--- a/python/libvirt-override-api.xml
+++ b/python/libvirt-override-api.xml
@@ -19,17 +19,23 @@
list the defined domains, stores the pointers to the names in @names
-
+
+
+
+ returns list of all defined domains
+
+
+
list the networks, stores the pointers to the names in @names
-
+
list the defined networks, stores the pointers to the names in @names
-
+
Try to lookup a domain on the given hypervisor based on its UUID.
diff --git a/python/libvirt-override-virConnect.py b/python/libvirt-override-virConnect.py
index 811e16bbfa49d7687139bbb6102b1b00e40fd709..ecb5680538db7fb57d883d79813267898bb53626 100644
--- a/python/libvirt-override-virConnect.py
+++ b/python/libvirt-override-virConnect.py
@@ -185,3 +185,15 @@
raise libvirtError ('virConnectDomainEventRegisterAny() failed', conn=self)
self.domainEventCallbackID[ret] = opaque
return ret
+
+ def listAllDomains(self, flags):
+ """List all domains and returns a list of domain objects"""
+ ret = libvirtmod.virConnectListAllDomains(self._o, flags)
+ if ret is None:
+ raise libvirtError("virConnectListAllDomains() failed", conn=self)
+
+ retlist = list()
+ for domptr in ret:
+ retlist.append(virDomain(self, _obj=domptr))
+
+ return retlist
diff --git a/python/libvirt-override.c b/python/libvirt-override.c
index 676002c4b73c42bdfab66c7503c14b8aca0400f5..cfbf254a085ead1b22689b5d3f72db84f9f77b04 100644
--- a/python/libvirt-override.c
+++ b/python/libvirt-override.c
@@ -1938,7 +1938,7 @@ libvirt_virConnectGetLibVersion (PyObject *self ATTRIBUTE_UNUSED,
static PyObject *
libvirt_virConnectListDomainsID(PyObject *self ATTRIBUTE_UNUSED,
- PyObject *args) {
+ PyObject *args) {
PyObject *py_retval;
int *ids = NULL, c_retval, i;
virConnectPtr conn;
@@ -1979,6 +1979,53 @@ libvirt_virConnectListDomainsID(PyObject *self ATTRIBUTE_UNUSED,
return py_retval;
}
+static PyObject *
+libvirt_virConnectListAllDomains(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args)
+{
+ PyObject *pyobj_conn;
+ PyObject *py_retval = NULL;
+ PyObject *tmp = NULL;
+ virConnectPtr conn;
+ virDomainPtr *doms = NULL;
+ int c_retval = 0;
+ int i;
+ unsigned int flags;
+
+ if (!PyArg_ParseTuple(args, (char *)"Oi:virConnectListAllDomains",
+ &pyobj_conn, &flags))
+ return NULL;
+ conn = (virConnectPtr) PyvirConnect_Get(pyobj_conn);
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ c_retval = virConnectListAllDomains(conn, &doms, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (c_retval < 0)
+ return VIR_PY_NONE;
+
+ if (!(py_retval = PyList_New(c_retval)))
+ goto cleanup;
+
+ for (i = 0; i < c_retval; i++) {
+ if (!(tmp = libvirt_virDomainPtrWrap(doms[i])) ||
+ PyList_SetItem(py_retval, i, tmp) < 0) {
+ Py_XDECREF(tmp);
+ Py_DECREF(py_retval);
+ py_retval = NULL;
+ goto cleanup;
+ }
+ /* python steals the pointer */
+ doms[i] = NULL;
+ }
+
+cleanup:
+ for (i = 0; i < c_retval; i++)
+ if (doms[i])
+ virDomainFree(doms[i]);
+ VIR_FREE(doms);
+ return py_retval;
+}
+
static PyObject *
libvirt_virConnectListDefinedDomains(PyObject *self ATTRIBUTE_UNUSED,
PyObject *args) {
@@ -5634,6 +5681,7 @@ static PyMethodDef libvirtMethods[] = {
{(char *) "virConnectOpenAuth", libvirt_virConnectOpenAuth, METH_VARARGS, NULL},
{(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID, METH_VARARGS, NULL},
{(char *) "virConnectListDefinedDomains", libvirt_virConnectListDefinedDomains, METH_VARARGS, NULL},
+ {(char *) "virConnectListAllDomains", libvirt_virConnectListAllDomains, METH_VARARGS, NULL},
{(char *) "virConnectDomainEventRegister", libvirt_virConnectDomainEventRegister, METH_VARARGS, NULL},
{(char *) "virConnectDomainEventDeregister", libvirt_virConnectDomainEventDeregister, METH_VARARGS, NULL},
{(char *) "virConnectDomainEventRegisterAny", libvirt_virConnectDomainEventRegisterAny, METH_VARARGS, NULL},