#
#
-# Copyright (C) 2006, 2007, 2008, 2009, 2010 Google Inc.
+# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# environment error (e.g. node disk error)
ECODE_ENVIRON = "environment_error"
+#: List of all failure types
+ECODE_ALL = frozenset([
+ ECODE_RESOLVER,
+ ECODE_NORES,
+ ECODE_INVAL,
+ ECODE_STATE,
+ ECODE_NOENT,
+ ECODE_EXISTS,
+ ECODE_NOTUNIQUE,
+ ECODE_FAULT,
+ ECODE_ENVIRON,
+ ])
+
class GenericError(Exception):
"""Base exception for Ganeti.
"""
- pass
class LVMError(GenericError):
This exception codifies problems with LVM setup.
"""
- pass
class LockError(GenericError):
This signifies problems in the locking subsystem.
"""
- pass
+
+
+class PidFileLockError(LockError):
+ """PID file is already locked by another process.
+
+ """
class HypervisorError(GenericError):
properly.
"""
- pass
class ProgrammerError(GenericError):
parts of our code. It signifies a real programming bug.
"""
- pass
class BlockDeviceError(GenericError):
properly.
"""
- pass
class ConfigurationError(GenericError):
exist in the config or such raise this exception.
"""
- pass
class ConfigVersionMismatch(ConfigurationError):
version.
"""
- pass
class ReservationError(GenericError):
remote node. It usually signifies a real programming bug.
"""
- pass
class SignatureError(GenericError):
because of spurious traffic.
"""
- pass
class ParameterError(GenericError):
The argument to this exception should be the parameter name.
"""
- pass
class OpPrereqError(GenericError):
"""
+class OpResultError(GenericError):
+ """Issue with OpCode result.
+
+ """
+
+
class OpCodeUnknown(GenericError):
"""Unknown opcode submitted.
"""
+class X509CertError(GenericError):
+ """Invalid X509 certificate.
+
+ This error has two arguments: the certificate filename and the error cause.
+
+ """
+
+
class TagError(GenericError):
"""Generic tag error.
"""
+class QueryFilterParseError(ParseError):
+ """Error while parsing query filter.
+
+ """
+ def GetDetails(self):
+ """Returns a list of strings with details about the error.
+
+ """
+ try:
+ (_, inner) = self.args
+ except IndexError:
+ return None
+
+ return [str(inner.line),
+ (" " * (inner.column - 1)) + "^",
+ str(inner)]
+
+
+class RapiTestResult(GenericError):
+ """Exception containing results from RAPI test utilities.
+
+ """
+
+
# errors should be added above
error = GetEncodedError(result)
if error:
(errcls, args) = error
- raise errcls, args
+ # pylint: disable=W0142
+ raise errcls(*args)