summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2007-04-16 12:37:59 +0000
committerDaniel P. Berrange <berrange@redhat.com>2007-04-16 12:37:59 +0000
commit33af9b643ad0c342bb058453ae50035e8abdbb0e (patch)
tree9b36f1705f1287c514a87e0cc3039050b03f1ad4
parent09e33225d13297467fd7fd863ea55cbe04b3f486 (diff)
downloadlibvirt-python-split-0.2.2.tar.gz
libvirt-python-split-0.2.2.tar.xz
libvirt-python-split-0.2.2.zip
Fixed exception reporting for domain/network operationsv0.2.2
-rwxr-xr-xgenerator.py50
-rw-r--r--libvir.py7
2 files changed, 40 insertions, 17 deletions
diff --git a/generator.py b/generator.py
index 567cc52..c3c79dc 100755
--- a/generator.py
+++ b/generator.py
@@ -535,10 +535,10 @@ def buildStubs():
# The type automatically remapped to generated classes
#
classes_type = {
- "virDomainPtr": ("._o", "virDomain(_obj=%s)", "virDomain"),
- "virDomain *": ("._o", "virDomain(_obj=%s)", "virDomain"),
- "virNetworkPtr": ("._o", "virNetwork(_obj=%s)", "virNetwork"),
- "virNetwork *": ("._o", "virNetwork(_obj=%s)", "virNetwork"),
+ "virDomainPtr": ("._o", "virDomain(self,_obj=%s)", "virDomain"),
+ "virDomain *": ("._o", "virDomain(self, _obj=%s)", "virDomain"),
+ "virNetworkPtr": ("._o", "virNetwork(self, _obj=%s)", "virNetwork"),
+ "virNetwork *": ("._o", "virNetwork(self, _obj=%s)", "virNetwork"),
"virConnectPtr": ("._o", "virConnect(_obj=%s)", "virConnect"),
"virConnect *": ("._o", "virConnect(_obj=%s)", "virConnect"),
}
@@ -556,11 +556,6 @@ classes_destructors = {
"virConnect": "virConnectClose",
}
-classes_references = {
- "virDomain": "virConnect",
- "virNetwork": "virConnect",
-}
-
functions_noexcept = {
'virDomainGetID': True,
'virDomainGetName': True,
@@ -872,11 +867,16 @@ def buildWrappers():
else:
txt.write("Class %s()\n" % (classname))
classes.write("class %s:\n" % (classname))
- classes.write(" def __init__(self, _obj=None):\n")
+ if classname == "virDomain" or classname == "virNetwork":
+ classes.write(" def __init__(self, conn, _obj=None):\n")
+ else:
+ classes.write(" def __init__(self, _obj=None):\n")
if reference_keepers.has_key(classname):
list = reference_keepers[classname]
for ref in list:
classes.write(" self.%s = None\n" % ref[1])
+ if classname == "virDomain" or classname == "virNetwork":
+ classes.write(" self._conn = conn\n")
classes.write(" if _obj != None:self._o = _obj;return\n")
classes.write(" self._o = None\n\n");
destruct=None
@@ -961,6 +961,14 @@ def buildWrappers():
classes.write(
" if ret is None:raise libvirtError('%s() failed', conn=self)\n" %
(name))
+ elif classname == "virDomain":
+ classes.write(
+ " if ret is None:raise libvirtError('%s() failed', dom=self)\n" %
+ (name))
+ elif classname == "virNetwork":
+ classes.write(
+ " if ret is None:raise libvirtError('%s() failed', net=self)\n" %
+ (name))
else:
classes.write(
" if ret is None:raise libvirtError('%s() failed')\n" %
@@ -973,12 +981,6 @@ def buildWrappers():
classes.write(classes_type[ret[0]][1] % ("ret"));
classes.write("\n");
- #
- # hook up a reference if needed
- #
- if classes_references.has_key(classes_type[ret[0]][2]):
- classes.write(" __tmp.ref = self\n");
-
#
# Sometime one need to keep references of the source
# class in the returned class object.
@@ -1031,6 +1033,14 @@ def buildWrappers():
classes.write ((" if " + test +
": raise libvirtError ('%s() failed', conn=self)\n") %
("ret", name))
+ elif classname == "virDomain":
+ classes.write ((" if " + test +
+ ": raise libvirtError ('%s() failed', dom=self)\n") %
+ ("ret", name))
+ elif classname == "virNetwork":
+ classes.write ((" if " + test +
+ ": raise libvirtError ('%s() failed', net=self)\n") %
+ ("ret", name))
else:
classes.write ((" if " + test +
": raise libvirtError ('%s() failed')\n") %
@@ -1053,6 +1063,14 @@ def buildWrappers():
classes.write ((" if " + test +
": raise libvirtError ('%s() failed', conn=self)\n") %
("ret", name))
+ elif classname == "virDomain":
+ classes.write ((" if " + test +
+ ": raise libvirtError ('%s() failed', dom=self)\n") %
+ ("ret", name))
+ elif classname == "virNetwork":
+ classes.write ((" if " + test +
+ ": raise libvirtError ('%s() failed', net=self)\n") %
+ ("ret", name))
else:
classes.write ((" if " + test +
": raise libvirtError ('%s() failed')\n") %
diff --git a/libvir.py b/libvir.py
index dc4bc29..e1c4ff3 100644
--- a/libvir.py
+++ b/libvir.py
@@ -9,9 +9,14 @@ import types
# The root of all libvirt errors.
class libvirtError(Exception):
- def __init__(self, msg, conn=None):
+ def __init__(self, msg, conn=None, dom=None, net=None):
Exception.__init__(self, msg)
+ if dom is not None:
+ conn = dom._conn
+ elif net is not None:
+ conn = net._conn
+
if conn is None:
self.err = virGetLastError()
else: