[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Add gather function and robustify class methods' failure handling.



# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID eb6fbb3d0a7b1bde4546957314b12ed3557b1d71
# Parent  9c9a3bb878c2c1c9cc932cbc90335ad701b0e009
Add gather function and robustify class methods' failure handling.
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>

diff -r 9c9a3bb878c2 -r eb6fbb3d0a7b 
tools/python/xen/xend/xenstore/xstransact.py
--- a/tools/python/xen/xend/xenstore/xstransact.py      Wed Sep 14 17:06:37 2005
+++ b/tools/python/xen/xend/xenstore/xstransact.py      Wed Sep 14 18:24:25 2005
@@ -106,6 +106,23 @@
             ret.extend(self._list(key))
         return ret
 
+    def gather(self, *args):
+        ret = []
+        for tup in args:
+            if len(tup) == 2:
+                (key, fn) = tup
+                defval = None
+            else:
+                (key, fn, defval) = tup
+            try:
+                val = fn(self.read(key))
+            except TypeError:
+                val = defval
+            ret.append(val)
+        if len(ret) == 1:
+            return ret[0]
+        return ret
+
 
     def Read(cls, path, *args):
         while True:
@@ -115,10 +132,14 @@
                 t.commit()
                 return v
             except RuntimeError, ex:
-                if ex.args[0] == errno.ETIMEDOUT:
-                    pass
-                else:
-                    raise
+                t.abort()
+                if ex.args[0] == errno.ETIMEDOUT:
+                    pass
+                else:
+                    raise
+            except:
+                t.abort()
+                raise
 
     Read = classmethod(Read)
 
@@ -130,10 +151,14 @@
                 t.commit()
                 return
             except RuntimeError, ex:
-                if ex.args[0] == errno.ETIMEDOUT:
-                    pass
-                else:
-                    raise
+                t.abort()
+                if ex.args[0] == errno.ETIMEDOUT:
+                    pass
+                else:
+                    raise
+            except:
+                t.abort()
+                raise
 
     Write = classmethod(Write)
 
@@ -145,10 +170,14 @@
                 t.commit()
                 return
             except RuntimeError, ex:
-                if ex.args[0] == errno.ETIMEDOUT:
-                    pass
-                else:
-                    raise
+                t.abort()
+                if ex.args[0] == errno.ETIMEDOUT:
+                    pass
+                else:
+                    raise
+            except:
+                t.abort()
+                raise
 
     Remove = classmethod(Remove)
 
@@ -160,9 +189,32 @@
                 t.commit()
                 return v
             except RuntimeError, ex:
-                if ex.args[0] == errno.ETIMEDOUT:
-                    pass
-                else:
-                    raise
+                t.abort()
+                if ex.args[0] == errno.ETIMEDOUT:
+                    pass
+                else:
+                    raise
+            except:
+                t.abort()
+                raise
 
     List = classmethod(List)
+
+    def Gather(cls, path, *args):
+        while True:
+            try:
+                t = cls(path)
+                v = t.gather(*args)
+                t.commit()
+                return v
+            except RuntimeError, ex:
+                t.abort()
+                if ex.args[0] == errno.ETIMEDOUT:
+                    pass
+                else:
+                    raise
+            except:
+                t.abort()
+                raise
+
+    Gather = classmethod(Gather)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.