Thanks Mark,
Here's a patch which does that.
Example usage:
>>> import libvirt;
>>> libvirt.getVersion ();
2002
>>> libvirt.getVersion ("QEMU");
(2002, 2002)
>>> libvirt.getVersion ("Test");
(2002, 2002)
>>> libvirt.getVersion ("Xen");
(2002, 3000001)
>>> libvirt.getVersion (None);
2002
Rich.
--
Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in
England and Wales under Company Registration No. 03798903
Index: python/generator.py
===================================================================
RCS file: /data/cvs/libvirt/python/generator.py,v
retrieving revision 1.20
diff -u -r1.20 generator.py
--- python/generator.py 16 Apr 2007 12:37:59 -0000 1.20
+++ python/generator.py 29 May 2007 11:41:02 -0000
@@ -287,6 +287,8 @@
return 1
if name == "vshRunConsole":
return 1
+ if name == "virGetVersion":
+ return 1
return 0
def print_function_wrapper(name, output, export, include):
Index: python/libvir.c
===================================================================
RCS file: /data/cvs/libvirt/python/libvir.c,v
retrieving revision 1.21
diff -u -r1.21 libvir.c
--- python/libvir.c 10 Apr 2007 23:15:58 -0000 1.21
+++ python/libvir.c 29 May 2007 11:41:02 -0000
@@ -179,6 +179,36 @@
************************************************************************/
static PyObject *
+libvirt_virGetVersion (PyObject *self ATTRIBUTE_UNUSED, PyObject *args)
+{
+ char *type = NULL;
+ unsigned long libVer, typeVer = 0;
+ int c_retval;
+
+ if (!PyArg_ParseTuple (args, (char *) "z", &type))
+ return NULL;
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+
+ if (type == NULL)
+ c_retval = virGetVersion (&libVer, NULL, NULL);
+ else
+ c_retval = virGetVersion (&libVer, type, &typeVer);
+
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (c_retval == -1) {
+ Py_INCREF(Py_None);
+ return (Py_None);
+ }
+
+ if (type == NULL)
+ return PyInt_FromLong (libVer);
+ else
+ return Py_BuildValue ((char *) "kk", libVer, typeVer);
+}
+
+static PyObject *
libvirt_virDomainFree(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
PyObject *py_retval;
int c_retval;
@@ -628,6 +658,7 @@
************************************************************************/
static PyMethodDef libvirtMethods[] = {
#include "libvirt-export.c"
+ {(char *) "virGetVersion", libvirt_virGetVersion, METH_VARARGS, NULL},
{(char *) "virDomainFree", libvirt_virDomainFree, METH_VARARGS, NULL},
{(char *) "virConnectClose", libvirt_virConnectClose, METH_VARARGS, NULL},
{(char *) "virConnectListDomainsID", libvirt_virConnectListDomainsID, METH_VARARGS, NULL},
@@ -664,3 +695,17 @@
initialized = 1;
}
+
+/*
+ * vim: set tabstop=4:
+ * vim: set shiftwidth=4:
+ * vim: set expandtab:
+ */
+/*
+ * Local variables:
+ * indent-tabs-mode: nil
+ * c-indent-level: 4
+ * c-basic-offset: 4
+ * tab-width: 4
+ * End:
+ */
Index: python/libvir.py
===================================================================
RCS file: /data/cvs/libvirt/python/libvir.py,v
retrieving revision 1.4
diff -u -r1.4 libvir.py
--- python/libvir.py 16 Apr 2007 12:37:59 -0000 1.4
+++ python/libvir.py 29 May 2007 11:41:02 -0000
@@ -83,6 +83,26 @@
Returns 1 in case of success."""
return libvirtmod.virRegisterErrorHandler(f,ctx)
+#
+# Return library version.
+#
+def getVersion (name = None):
+ """If no name parameter is passed (or name is None) then the
+ version of the libvirt library is returned as an integer.
+
+ If a name is passed and it refers to a driver linked to the
+ libvirt library, then this returns a tuple of (library version,
+ driver version).
+
+ If the name passed refers to a non-existent driver, then you
+ will get the exception 'no support for hypervisor'.
+
+ Versions numbers are integers: 1000000*major + 1000*minor + release."""
+ ret = libvirtmod.virGetVersion (name);
+ if ret is None: raise libvirtError ("virGetVersion() failed")
+ return ret
+
+
# WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
#
# Everything before this line comes from libvir.py
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature