X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/84f790e67f2d35e5d4ab3fc900a50e757054a4cf..745dae57563d2f102ec8cd30349d663336309692:/lib/errors.py diff --git a/lib/errors.py b/lib/errors.py index 9374978..3847353 100644 --- a/lib/errors.py +++ b/lib/errors.py @@ -1,7 +1,7 @@ # # -# Copyright (C) 2006, 2007 Google Inc. +# Copyright (C) 2006, 2007, 2008, 2009, 2010 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 @@ -43,6 +43,19 @@ ECODE_FAULT = "internal_error" # 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. @@ -69,6 +82,12 @@ class LockError(GenericError): pass +class PidFileLockError(LockError): + """PID file is already locked by another process. + + """ + + class HypervisorError(GenericError): """Hypervisor-related exception. @@ -110,6 +129,16 @@ class ConfigurationError(GenericError): pass +class ConfigVersionMismatch(ConfigurationError): + """Version mismatch in the configuration file. + + The error has two arguments: the expected and the actual found + version. + + """ + pass + + class ReservationError(GenericError): """Errors reserving a resource. @@ -166,6 +195,12 @@ class OpExecError(GenericError): """ +class OpResultError(GenericError): + """Issue with OpCode result. + + """ + + class OpCodeUnknown(GenericError): """Unknown opcode submitted. @@ -248,6 +283,14 @@ class SshKeyError(GenericError): """ +class X509CertError(GenericError): + """Invalid X509 certificate. + + This error has two arguments: the certificate filename and the error cause. + + """ + + class TagError(GenericError): """Generic tag error. @@ -275,7 +318,7 @@ class InotifyError(GenericError): class QuitGanetiException(Exception): - """Signal that Ganeti that it must quit. + """Signal Ganeti that it must quit. This is not necessarily an error (and thus not a subclass of GenericError), but it's an exceptional circumstance and it is thus @@ -356,6 +399,36 @@ class NoCtypesError(GenericError): """ +class IPAddressError(GenericError): + """Generic IP address error. + + """ + + +class LuxiError(GenericError): + """LUXI 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)] + + # errors should be added above @@ -423,4 +496,4 @@ def MaybeRaise(result): error = GetEncodedError(result) if error: (errcls, args) = error - raise errcls, args + raise errcls(args)