summaryrefslogtreecommitdiffstats
path: root/libvirt-override.c
diff options
context:
space:
mode:
authorChris Lalancette <clalance@redhat.com>2010-05-19 09:02:30 -0400
committerChris Lalancette <clalance@redhat.com>2010-05-20 13:49:38 -0400
commita4079e7ec63c7ecdc5fcd23b33831c58e3679d46 (patch)
tree1041013675a52335025db9088bd09081eb64de7a /libvirt-override.c
parenta6daa0108e072db02855e4203b7cd6066ddc2b39 (diff)
downloadlibvirt-python-split-a4079e7ec63c7ecdc5fcd23b33831c58e3679d46.tar.gz
libvirt-python-split-a4079e7ec63c7ecdc5fcd23b33831c58e3679d46.tar.xz
libvirt-python-split-a4079e7ec63c7ecdc5fcd23b33831c58e3679d46.zip
Fix up the python bindings for snapshotting.
This involved a few fixes. To start with, an virDomainSnapshot object is really tied to a domain, not a connection, so we have to generate a slightly different object so that we can get at self._dom for the object. Next, we had to "dummy" up an override piece of XML with a bogus argument that the function doesn't actually take. That's so that the generator places virDomainRevertToSnapshot underneath the correct class (namely, the virDomain class). Finally, we had to hand-implement the virDomainRevertToSnapshot implementation, ignoring the bogus pointer we are being passed. With all of this in place, I was able to successfully take a snapshot and revert to it using only the Python bindings. Signed-off-by: Chris Lalancette <clalance@redhat.com>
Diffstat (limited to 'libvirt-override.c')
-rw-r--r--libvirt-override.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/libvirt-override.c b/libvirt-override.c
index c9721f7..ad55940 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -988,6 +988,28 @@ libvirt_virDomainSnapshotListNames(PyObject *self ATTRIBUTE_UNUSED,
}
static PyObject *
+libvirt_virDomainRevertToSnapshot(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args) {
+ int c_retval;
+ virDomainSnapshotPtr snap;
+ PyObject *pyobj_snap;
+ PyObject *pyobj_dom;
+ int flags;
+
+ if (!PyArg_ParseTuple(args, (char *)"OOi:virDomainRevertToSnapshot", &pyobj_dom, &pyobj_snap, &flags))
+ return(NULL);
+ snap = (virDomainSnapshotPtr) PyvirDomainSnapshot_Get(pyobj_snap);
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ c_retval = virDomainRevertToSnapshot(snap, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+ if (c_retval < 0)
+ return VIR_PY_INT_FAIL;
+
+ return PyInt_FromLong(c_retval);
+}
+
+static PyObject *
libvirt_virDomainGetInfo(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
PyObject *py_retval;
int c_retval;
@@ -3527,6 +3549,7 @@ static PyMethodDef libvirtMethods[] = {
{(char *) "virConnectBaselineCPU", libvirt_virConnectBaselineCPU, METH_VARARGS, NULL},
{(char *) "virDomainGetJobInfo", libvirt_virDomainGetJobInfo, METH_VARARGS, NULL},
{(char *) "virDomainSnapshotListNames", libvirt_virDomainSnapshotListNames, METH_VARARGS, NULL},
+ {(char *) "virDomainRevertToSnapshot", libvirt_virDomainRevertToSnapshot, METH_VARARGS, NULL},
{NULL, NULL, 0, NULL}
};