From e577043fd03c79e2755bf9d13f7117c170ce203c Mon Sep 17 00:00:00 2001 From: Dave Allan Date: Thu, 10 Jun 2010 20:53:59 +0000 Subject: libvirt-0.8.1-8.el6 - Ensure virtio serial has stable addressing - Resolves: rhbz#586665 - SELinux socket labelling on QEMU monitor socket for MLS - Resolves: rhbz#593739 - Fix enumeration of partitions in disks with a trailing digit in path - Resolves: rhbz#593785 - Enable probing of VPC disk format type - Resolves: rhbz#597981 - Delete UNIX domain sockets upon daemon shutdown - Resolves: rhbz#598163 - Fix Migration failure 'canonical hostname pointed to localhost' - Resolves: rhbz#589864 - Fix up the python bindings for snapshotting - Resolves: rhbz#591839 - Sanitize pool target paths - Resolves: rhbz#593565 - Prevent host network conflicts - Resolves: rhbz#594494 - Support 802.1Qbg and bh (vnlink/VEPA) (refresh) - Resolves: rhbz#590110 --- generator.py | 26 +++++++++++++++++++++++--- libvirt-override-api.xml | 7 +++++++ libvirt-override.c | 23 +++++++++++++++++++++++ 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/generator.py b/generator.py index a243c82..d876df6 100755 --- a/generator.py +++ b/generator.py @@ -331,7 +331,7 @@ skip_impl = ( 'virNodeListDevices', 'virNodeDeviceListCaps', 'virConnectBaselineCPU', - 'virDomainSnapshotListNames', + 'virDomainRevertToSnapshot', ) @@ -385,6 +385,10 @@ skip_function = ( "virStorageVolGetConnect", ) +function_skip_index_one = ( + "virDomainRevertToSnapshot", +) + def print_function_wrapper(name, output, export, include): global py_types @@ -688,9 +692,13 @@ classes_destructors = { } class_skip_connect_impl = { - "virConnect" : True + "virConnect" : True, + "virDomainSnapshot": True, } +class_domain_impl = { + "virDomainSnapshot": True, +} functions_noexcept = { 'virDomainGetID': True, @@ -986,7 +994,7 @@ def buildWrappers(): info = (0, func, name, ret, args, file) function_classes[classe].append(info) elif name[0:3] == "vir" and len(args) >= 2 and args[1][1] == type \ - and file != "python_accessor": + and file != "python_accessor" and not name in function_skip_index_one: found = 1 func = nameFixup(name, classe, type, file) info = (1, func, name, ret, args, file) @@ -1128,6 +1136,8 @@ def buildWrappers(): "virStorageVol", "virNodeDevice", "virSecret","virStream", "virNWFilter" ]: classes.write(" def __init__(self, conn, _obj=None):\n") + elif classname in [ 'virDomainSnapshot' ]: + classes.write(" def __init__(self, dom, _obj=None):\n") else: classes.write(" def __init__(self, _obj=None):\n") if reference_keepers.has_key(classname): @@ -1142,6 +1152,8 @@ def buildWrappers(): classes.write(" self._conn = conn\n" + \ " if not isinstance(conn, virConnect):\n" + \ " self._conn = conn._conn\n") + elif classname in [ "virDomainSnapshot" ]: + classes.write(" self._dom = dom\n") classes.write(" if _obj != None:self._o = _obj;return\n") classes.write(" self._o = None\n\n"); destruct=None @@ -1158,6 +1170,10 @@ def buildWrappers(): classes.write(" def connect(self):\n") classes.write(" return self._conn\n\n") + if class_domain_impl.has_key(classname): + classes.write(" def domain(self):\n") + classes.write(" return self._dom\n\n") + flist = function_classes[classname] flist.sort(functionCompare) oldfile = "" @@ -1252,6 +1268,10 @@ def buildWrappers(): classes.write( " if ret is None:raise libvirtError('%s() failed', vol=self)\n" % (name)) + elif classname == "virDomainSnapshot": + classes.write( + " if ret is None:raise libvirtError('%s() failed', dom=self._dom)\n" % + (name)) else: classes.write( " if ret is None:raise libvirtError('%s() failed')\n" % diff --git a/libvirt-override-api.xml b/libvirt-override-api.xml index 9ba8e4e..be28b40 100644 --- a/libvirt-override-api.xml +++ b/libvirt-override-api.xml @@ -277,5 +277,12 @@ + + revert the domain to the given snapshot + + + + + diff --git a/libvirt-override.c b/libvirt-override.c index b97445b..cef5c65 100644 --- a/libvirt-override.c +++ b/libvirt-override.c @@ -987,6 +987,28 @@ libvirt_virDomainSnapshotListNames(PyObject *self ATTRIBUTE_UNUSED, return(py_retval); } +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; @@ -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} }; -- cgit