Prevent race condition on MAC addresses
[ganeti-local] / lib / errors.py
index 646bf91..80a49d6 100644 (file)
@@ -198,6 +198,10 @@ class UnitParseError(GenericError):
 
   """
 
 
   """
 
+class TypeEnforcementError(GenericError):
+  """Unable to enforce data type.
+
+  """
 
 class SshKeyError(GenericError):
   """Invalid SSH key.
 
 class SshKeyError(GenericError):
   """Invalid SSH key.
@@ -224,15 +228,60 @@ class QuitGanetiException(Exception):
 
   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
 
   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).
+  should be instantiated with two values. The first one 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::
 
 
-  Examples:
     # Return a result of "True" to the caller, but quit ganeti afterwards
     # Return a result of "True" to the caller, but quit ganeti afterwards
-    raise QuitGanetiException((False, True))
+    raise QuitGanetiException(False, True)
     # Send an error to the caller, and quit ganeti
     # Send an error to the caller, and quit ganeti
-    raise QuitGanetiException((True, "Fatal safety violation, shutting down"))
+    raise QuitGanetiException(True, "Fatal safety violation, shutting down")
+
+  """
+
+
+class JobQueueError(GenericError):
+  """Job queue error.
+
+  """
+
+
+class JobQueueDrainError(JobQueueError):
+  """Job queue is marked for drain error.
+
+  This is raised when a job submission attempt is made but the queue
+  is marked for drain.
 
   """
 
 
   """
 
+
+class JobQueueFull(JobQueueError):
+  """Job queue full error.
+
+  Raised when job queue size reached its hard limit.
+
+  """
+
+
+# errors should be added above
+
+
+def GetErrorClass(name):
+  """Return the class of an exception.
+
+  Given the class name, return the class itself.
+
+  @type name: str
+  @param name: the exception name
+  @rtype: class
+  @return: the actual class, or None if not found
+
+  """
+  item = globals().get(name, None)
+  if item is not None:
+    if not (isinstance(item, type(Exception)) and
+            issubclass(item, GenericError)):
+      item = None
+  return item