3149: Merge branch 'master' into 3149-server-side-search
[arvados.git] / sdk / python / arvados / errors.py
index e4c69a3c83dff24ebc70f1ce0212931b4b77ba06..1d9c77851eacde7f1f9571e697361c1a75a8849b 100644 (file)
@@ -1,5 +1,16 @@
 # errors.py - Arvados-specific exceptions.
 
+import apiclient.errors
+import json
+
+class ApiError(apiclient.errors.HttpError):
+    def _get_reason(self):
+        try:
+            return '; '.join(json.loads(self.content)['errors'])
+        except (KeyError, TypeError, ValueError):
+            return super(ApiError, self)._get_reason()
+
+
 class ArgumentError(Exception):
     pass
 class SyntaxError(Exception):
@@ -14,3 +25,7 @@ class KeepWriteError(Exception):
     pass
 class NotImplementedError(Exception):
     pass
+class NoKeepServersError(Exception):
+    pass
+class StaleWriterStateError(Exception):
+    pass