Extract query related logical units from cmdlib
[ganeti-local] / lib / errors.py
index 7fc3efe..22b7502 100644 (file)
 # 02110-1301, USA.
 
 
-"""Ganeti exception handling"""
+"""Ganeti exception handling.
+
+"""
+
+from ganeti import compat
 
 
 # OpPrereqError failure types
@@ -31,7 +35,7 @@ ECODE_RESOLVER = "resolver_error"
 ECODE_NORES = "insufficient_resources"
 
 #: Temporarily out of resources; operation can be tried again
-ECODE_TEMP_NORES = "insufficient_resources"
+ECODE_TEMP_NORES = "temp_insufficient_resources"
 
 #: Wrong arguments (at syntax level)
 ECODE_INVAL = "wrong_input"
@@ -55,7 +59,7 @@ ECODE_FAULT = "internal_error"
 ECODE_ENVIRON = "environment_error"
 
 #: List of all failure types
-ECODE_ALL = frozenset([
+ECODE_ALL = compat.UniqueFrozenset([
   ECODE_RESOLVER,
   ECODE_NORES,
   ECODE_TEMP_NORES,
@@ -205,6 +209,22 @@ class OpResultError(GenericError):
   """
 
 
+class DeviceCreationError(GenericError):
+  """Error during the creation of a device.
+
+  This exception should contain the list of the devices actually created
+  up to now, in the form of pairs (node, device)
+
+  """
+  def __init__(self, message, created_devices):
+    GenericError.__init__(self)
+    self.message = message
+    self.created_devices = created_devices
+
+  def __str__(self):
+    return self.message
+
+
 class OpCodeUnknown(GenericError):
   """Unknown opcode submitted.