summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/swift-ring-builder15
1 files changed, 14 insertions, 1 deletions
diff --git a/bin/swift-ring-builder b/bin/swift-ring-builder
index 4f8517995..f89b47441 100755
--- a/bin/swift-ring-builder
+++ b/bin/swift-ring-builder
@@ -16,9 +16,22 @@
import sys
+import traceback
-from swift.cli.ringbuilder import main
+# We exit code 1 on WARNING statuses, 2 on ERROR. This means we need
+# to handle any uncaught exceptions by printing the usual backtrace,
+# but then exiting 2 (not 1 as is usual for a python
+# exception).
+
+
+def exit_with_status_two(tp, val, tb):
+ traceback.print_exception(tp, val, tb)
+ sys.exit(2)
+sys.excepthook = exit_with_status_two
+
+from swift.cli.ringbuilder import main
+
if __name__ == "__main__":
sys.exit(main())