summaryrefslogtreecommitdiffstats
path: root/libvirt-override.py
diff options
context:
space:
mode:
Diffstat (limited to 'libvirt-override.py')
-rw-r--r--libvirt-override.py144
1 files changed, 144 insertions, 0 deletions
diff --git a/libvirt-override.py b/libvirt-override.py
new file mode 100644
index 0000000..92c6e03
--- /dev/null
+++ b/libvirt-override.py
@@ -0,0 +1,144 @@
+#
+# Manually written part of python bindings for libvirt
+#
+
+# On cygwin, the DLL is called cygvirtmod.dll
+try:
+ import libvirtmod
+except ImportError, lib_e:
+ try:
+ import cygvirtmod as libvirtmod
+ except ImportError, cyg_e:
+ if str(cyg_e).count("No module named"):
+ raise lib_e
+
+import types
+
+# The root of all libvirt errors.
+class libvirtError(Exception):
+ def __init__(self, defmsg, conn=None, dom=None, net=None, pool=None, vol=None):
+
+ if dom is not None:
+ conn = dom._conn
+ elif net is not None:
+ conn = net._conn
+ elif pool is not None:
+ conn = pool._conn
+ elif vol is not None:
+ conn = vol._conn
+
+ # Never call virConnGetLastError().
+ # virGetLastError() is now thread local
+ err = virGetLastError()
+ if err is None:
+ msg = defmsg
+ else:
+ msg = err[2]
+
+ Exception.__init__(self, msg)
+
+ self.err = err
+
+ def get_error_code(self):
+ if self.err is None:
+ return None
+ return self.err[0]
+
+ def get_error_domain(self):
+ if self.err is None:
+ return None
+ return self.err[1]
+
+ def get_error_message(self):
+ if self.err is None:
+ return None
+ return self.err[2]
+
+ def get_error_level(self):
+ if self.err is None:
+ return None
+ return self.err[3]
+
+ def get_str1(self):
+ if self.err is None:
+ return None
+ return self.err[4]
+
+ def get_str2(self):
+ if self.err is None:
+ return None
+ return self.err[5]
+
+ def get_str3(self):
+ if self.err is None:
+ return None
+ return self.err[6]
+
+ def get_int1(self):
+ if self.err is None:
+ return None
+ return self.err[7]
+
+ def get_int2(self):
+ if self.err is None:
+ return None
+ return self.err[8]
+
+#
+# register the libvirt global error handler
+#
+def registerErrorHandler(f, ctx):
+ """Register a Python written function to for error reporting.
+ The function is called back as f(ctx, error), with error
+ being a list of information about the error being raised.
+ Returns 1 in case of success."""
+ return libvirtmod.virRegisterErrorHandler(f,ctx)
+
+def openAuth(uri, auth, flags):
+ ret = libvirtmod.virConnectOpenAuth(uri, auth, flags)
+ if ret is None:raise libvirtError('virConnectOpenAuth() failed')
+ return virConnect(_obj=ret)
+
+
+#
+# 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."""
+ if name is None:
+ ret = libvirtmod.virGetVersion ();
+ else:
+ ret = libvirtmod.virGetVersion (name);
+ if ret is None: raise libvirtError ("virGetVersion() failed")
+ return ret
+
+
+#
+# Invoke an EventHandle callback
+#
+def eventInvokeHandleCallback (watch, fd, event, callback, opaque):
+ """
+ Invoke the Event Impl Handle Callback in C
+ """
+ libvirtmod.virEventInvokeHandleCallback(watch, fd, event, callback, opaque);
+
+#
+# Invoke an EventTimeout callback
+#
+def eventInvokeTimeoutCallback (timer, callback, opaque):
+ """
+ Invoke the Event Impl Timeout Callback in C
+ """
+ libvirtmod.virEventInvokeTimeoutCallback(timer, callback, opaque);
+
+