diff --git a/lib/errors.py b/lib/errors.py
index a44826c03b1bdf6810c8dedd331d4c59c1ac0704..646bf91539552bd05b999c5df89db2201a90ca5e 100644
--- a/lib/errors.py
+++ b/lib/errors.py
@@ -217,3 +217,22 @@ class CommandError(GenericError):
   """External command error.
 
   """
+
+
+class QuitGanetiException(Exception):
+  """Signal that Ganeti that it must quit.
+
+  This is not necessarily an error (and thus not a subclass of GenericError),
+  but it's an exceptional circumstance and it is thus treated. This instance
+  should be instantiated with a tuple of two values. The first value will
+  specify whether an error should returned to the caller, and the second one
+  will be the returned result (either as an error or as a normal result).
+
+  Examples:
+    # Return a result of "True" to the caller, but quit ganeti afterwards
+    raise QuitGanetiException((False, True))
+    # Send an error to the caller, and quit ganeti
+    raise QuitGanetiException((True, "Fatal safety violation, shutting down"))
+
+  """
+