# 02110-1301, USA.
-"""Ganeti exception handling"""
+"""Ganeti exception handling.
+
+"""
+
+from ganeti import compat
# OpPrereqError failure types
#: Not enough resources (iallocator failure, disk space, memory, etc.)
ECODE_NORES = "insufficient_resources"
+#: Temporarily out of resources; operation can be tried again
+ECODE_TEMP_NORES = "temp_insufficient_resources"
+
#: Wrong arguments (at syntax level)
ECODE_INVAL = "wrong_input"
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,
"""
+class HotplugError(HypervisorError):
+ """Hotplug-related exception.
+
+ This is raised in case a hotplug action fails or is not supported.
+ It is currently used only by KVM hypervisor.
+
+ """
+
+
class ProgrammerError(GenericError):
"""Programming-related error.
"""
+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.