Merge branch 'devel-2.7'
[ganeti-local] / lib / errors.py
index 035df49..3a264c3 100644 (file)
 # 02110-1301, USA.
 
 
-"""Ganeti exception handling"""
+"""Ganeti exception handling.
+
+"""
+
+from ganeti import compat
 
 
 # OpPrereqError failure types
 
-# resolver errors
+#: Resolver errors
 ECODE_RESOLVER = "resolver_error"
-# not enough resources (iallocator failure, disk space, memory, etc.)
+
+#: Not enough resources (iallocator failure, disk space, memory, etc.)
 ECODE_NORES = "insufficient_resources"
-# wrong arguments (at syntax level)
+
+#: Temporarily out of resources; operation can be tried again
+ECODE_TEMP_NORES = "temp_insufficient_resources"
+
+#: Wrong arguments (at syntax level)
 ECODE_INVAL = "wrong_input"
-# wrong entity state
+
+#: Wrong entity state
 ECODE_STATE = "wrong_state"
-# entity not found
+
+#: Entity not found
 ECODE_NOENT = "unknown_entity"
-# entity already exists
+
+#: Entity already exists
 ECODE_EXISTS = "already_exists"
-# resource not unique (e.g. MAC or IP duplication)
+
+#: Resource not unique (e.g. MAC or IP duplication)
 ECODE_NOTUNIQUE = "resource_not_unique"
-# internal cluster error
+
+#: Internal cluster error
 ECODE_FAULT = "internal_error"
-# environment error (e.g. node disk error)
+
+#: Environment error (e.g. node disk error)
 ECODE_ENVIRON = "environment_error"
 
 #: List of all failure types
-ECODE_ALL = frozenset([
+ECODE_ALL = compat.UniqueFrozenset([
   ECODE_RESOLVER,
   ECODE_NORES,
+  ECODE_TEMP_NORES,
   ECODE_INVAL,
   ECODE_STATE,
   ECODE_NOENT,
@@ -123,6 +139,12 @@ class ConfigVersionMismatch(ConfigurationError):
   """
 
 
+class AddressPoolError(GenericError):
+  """Errors related to IP address pools.
+
+  """
+
+
 class ReservationError(GenericError):
   """Errors reserving a resource.
 
@@ -169,8 +191,7 @@ class ResultValidationError(GenericError):
 class OpPrereqError(GenericError):
   """Prerequisites for the OpCode are not fulfilled.
 
-  This exception will have either one or two arguments. For the
-  two-argument construction, the second argument should be one of the
+  This exception has two arguments: an error message, and one of the
   ECODE_* codes.
 
   """