refactor exceptions to koji.exceptions
Move Koji's custom exceptions classes to a dedicated koji.exceptions library. This organizes the code so it's easier to maintain, and matches patterns in other well-known projects, like requests.exceptions or cryptography.exceptions.
This commit is contained in:
parent
e73b0680ae
commit
1e00081991
2 changed files with 160 additions and 139 deletions
167
koji/__init__.py
167
koji/__init__.py
|
|
@ -76,6 +76,34 @@ from . import _version
|
|||
__version__ = _version.__version__
|
||||
__version_info__ = _version.__version_info__
|
||||
|
||||
from koji.exceptions import (
|
||||
PythonImportError,
|
||||
GenericError,
|
||||
LockError,
|
||||
AuthError,
|
||||
TagError,
|
||||
ActionNotAllowed,
|
||||
BuildError,
|
||||
AuthLockError,
|
||||
AuthExpired,
|
||||
SequenceError,
|
||||
RetryError,
|
||||
PreBuildError,
|
||||
PostBuildError,
|
||||
BuildrootError,
|
||||
FunctionDeprecated,
|
||||
ServerOffline,
|
||||
LiveCDError,
|
||||
PluginError,
|
||||
CallbackError,
|
||||
ApplianceError,
|
||||
ParameterError,
|
||||
ImportError,
|
||||
ConfigurationError,
|
||||
LiveMediaError,
|
||||
GSSAPIAuthError,
|
||||
)
|
||||
|
||||
try:
|
||||
import requests_gssapi as reqgssapi
|
||||
except ImportError: # pragma: no cover
|
||||
|
|
@ -292,145 +320,6 @@ PRIO_DEFAULT = 20
|
|||
DEFAULT_REQUEST_TIMEOUT = 60 * 60 * 12
|
||||
DEFAULT_AUTH_TIMEOUT = 60
|
||||
|
||||
# BEGIN kojikamid dup #
|
||||
|
||||
# Exceptions
|
||||
PythonImportError = ImportError # will be masked by koji's one
|
||||
|
||||
|
||||
class GenericError(Exception):
|
||||
"""Base class for our custom exceptions"""
|
||||
faultCode = 1000
|
||||
fromFault = False
|
||||
|
||||
def __str__(self):
|
||||
try:
|
||||
return str(self.args[0]['args'][0])
|
||||
except Exception:
|
||||
try:
|
||||
return str(self.args[0])
|
||||
except Exception:
|
||||
return str(self.__dict__)
|
||||
# END kojikamid dup #
|
||||
|
||||
|
||||
class LockError(GenericError):
|
||||
"""Raised when there is a lock conflict"""
|
||||
faultCode = 1001
|
||||
|
||||
|
||||
class AuthError(GenericError):
|
||||
"""Raised when there is an error in authentication"""
|
||||
faultCode = 1002
|
||||
|
||||
|
||||
class TagError(GenericError):
|
||||
"""Raised when a tagging operation fails"""
|
||||
faultCode = 1003
|
||||
|
||||
|
||||
class ActionNotAllowed(GenericError):
|
||||
"""Raised when the session does not have permission to take some action"""
|
||||
faultCode = 1004
|
||||
|
||||
# BEGIN kojikamid dup #
|
||||
|
||||
|
||||
class BuildError(GenericError):
|
||||
"""Raised when a build fails"""
|
||||
faultCode = 1005
|
||||
# END kojikamid dup #
|
||||
|
||||
|
||||
class AuthLockError(AuthError):
|
||||
"""Raised when a lock prevents authentication"""
|
||||
faultCode = 1006
|
||||
|
||||
|
||||
class AuthExpired(AuthError):
|
||||
"""Raised when a session has expired"""
|
||||
faultCode = 1007
|
||||
|
||||
|
||||
class SequenceError(AuthError):
|
||||
"""Raised when requests are received out of sequence"""
|
||||
faultCode = 1008
|
||||
|
||||
|
||||
class RetryError(AuthError):
|
||||
"""Raised when a request is received twice and cannot be rerun"""
|
||||
faultCode = 1009
|
||||
|
||||
|
||||
class PreBuildError(BuildError):
|
||||
"""Raised when a build fails during pre-checks"""
|
||||
faultCode = 1010
|
||||
|
||||
|
||||
class PostBuildError(BuildError):
|
||||
"""Raised when a build fails during post-checks"""
|
||||
faultCode = 1011
|
||||
|
||||
|
||||
class BuildrootError(BuildError):
|
||||
"""Raised when there is an error with the buildroot"""
|
||||
faultCode = 1012
|
||||
|
||||
|
||||
class FunctionDeprecated(GenericError):
|
||||
"""Raised by a deprecated function"""
|
||||
faultCode = 1013
|
||||
|
||||
|
||||
class ServerOffline(GenericError):
|
||||
"""Raised when the server is offline"""
|
||||
faultCode = 1014
|
||||
|
||||
|
||||
class LiveCDError(GenericError):
|
||||
"""Raised when LiveCD Image creation fails"""
|
||||
faultCode = 1015
|
||||
|
||||
|
||||
class PluginError(GenericError):
|
||||
"""Raised when there is an error with a plugin"""
|
||||
faultCode = 1016
|
||||
|
||||
|
||||
class CallbackError(PluginError):
|
||||
"""Raised when there is an error executing a callback"""
|
||||
faultCode = 1017
|
||||
|
||||
|
||||
class ApplianceError(GenericError):
|
||||
"""Raised when Appliance Image creation fails"""
|
||||
faultCode = 1018
|
||||
|
||||
|
||||
class ParameterError(GenericError):
|
||||
"""Raised when an rpc call receives incorrect arguments"""
|
||||
faultCode = 1019
|
||||
|
||||
|
||||
class ImportError(GenericError):
|
||||
"""Raised when an import fails"""
|
||||
faultCode = 1020
|
||||
|
||||
|
||||
class ConfigurationError(GenericError):
|
||||
"""Raised when load of koji configuration fails"""
|
||||
faultCode = 1021
|
||||
|
||||
|
||||
class LiveMediaError(GenericError):
|
||||
"""Raised when LiveMedia Image creation fails"""
|
||||
faultCode = 1022
|
||||
|
||||
|
||||
class GSSAPIAuthError(AuthError):
|
||||
"""Raised when GSSAPI issue in authentication"""
|
||||
faultCode = 1023
|
||||
|
||||
|
||||
class NameValidationError(GenericError):
|
||||
"""Raised when name validation fails
|
||||
|
|
|
|||
132
koji/exceptions.py
Normal file
132
koji/exceptions.py
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
# Exceptions
|
||||
PythonImportError = ImportError # will be masked by koji's one
|
||||
|
||||
|
||||
class GenericError(Exception):
|
||||
"""Base class for our custom exceptions"""
|
||||
faultCode = 1000
|
||||
fromFault = False
|
||||
|
||||
def __str__(self):
|
||||
try:
|
||||
return str(self.args[0]['args'][0])
|
||||
except Exception:
|
||||
try:
|
||||
return str(self.args[0])
|
||||
except Exception:
|
||||
return str(self.__dict__)
|
||||
|
||||
|
||||
class LockError(GenericError):
|
||||
"""Raised when there is a lock conflict"""
|
||||
faultCode = 1001
|
||||
|
||||
|
||||
class AuthError(GenericError):
|
||||
"""Raised when there is an error in authentication"""
|
||||
faultCode = 1002
|
||||
|
||||
|
||||
class TagError(GenericError):
|
||||
"""Raised when a tagging operation fails"""
|
||||
faultCode = 1003
|
||||
|
||||
|
||||
class ActionNotAllowed(GenericError):
|
||||
"""Raised when the session does not have permission to take some action"""
|
||||
faultCode = 1004
|
||||
|
||||
|
||||
class BuildError(GenericError):
|
||||
"""Raised when a build fails"""
|
||||
faultCode = 1005
|
||||
|
||||
|
||||
class AuthLockError(AuthError):
|
||||
"""Raised when a lock prevents authentication"""
|
||||
faultCode = 1006
|
||||
|
||||
|
||||
class AuthExpired(AuthError):
|
||||
"""Raised when a session has expired"""
|
||||
faultCode = 1007
|
||||
|
||||
|
||||
class SequenceError(AuthError):
|
||||
"""Raised when requests are received out of sequence"""
|
||||
faultCode = 1008
|
||||
|
||||
|
||||
class RetryError(AuthError):
|
||||
"""Raised when a request is received twice and cannot be rerun"""
|
||||
faultCode = 1009
|
||||
|
||||
|
||||
class PreBuildError(BuildError):
|
||||
"""Raised when a build fails during pre-checks"""
|
||||
faultCode = 1010
|
||||
|
||||
|
||||
class PostBuildError(BuildError):
|
||||
"""Raised when a build fails during post-checks"""
|
||||
faultCode = 1011
|
||||
|
||||
|
||||
class BuildrootError(BuildError):
|
||||
"""Raised when there is an error with the buildroot"""
|
||||
faultCode = 1012
|
||||
|
||||
|
||||
class FunctionDeprecated(GenericError):
|
||||
"""Raised by a deprecated function"""
|
||||
faultCode = 1013
|
||||
|
||||
|
||||
class ServerOffline(GenericError):
|
||||
"""Raised when the server is offline"""
|
||||
faultCode = 1014
|
||||
|
||||
|
||||
class LiveCDError(GenericError):
|
||||
"""Raised when LiveCD Image creation fails"""
|
||||
faultCode = 1015
|
||||
|
||||
|
||||
class PluginError(GenericError):
|
||||
"""Raised when there is an error with a plugin"""
|
||||
faultCode = 1016
|
||||
|
||||
|
||||
class CallbackError(PluginError):
|
||||
"""Raised when there is an error executing a callback"""
|
||||
faultCode = 1017
|
||||
|
||||
|
||||
class ApplianceError(GenericError):
|
||||
"""Raised when Appliance Image creation fails"""
|
||||
faultCode = 1018
|
||||
|
||||
|
||||
class ParameterError(GenericError):
|
||||
"""Raised when an rpc call receives incorrect arguments"""
|
||||
faultCode = 1019
|
||||
|
||||
|
||||
class ImportError(GenericError):
|
||||
"""Raised when an import fails"""
|
||||
faultCode = 1020
|
||||
|
||||
|
||||
class ConfigurationError(GenericError):
|
||||
"""Raised when load of koji configuration fails"""
|
||||
faultCode = 1021
|
||||
|
||||
|
||||
class LiveMediaError(GenericError):
|
||||
"""Raised when LiveMedia Image creation fails"""
|
||||
faultCode = 1022
|
||||
|
||||
|
||||
class GSSAPIAuthError(AuthError):
|
||||
"""Raised when GSSAPI issue in authentication"""
|
||||
faultCode = 1023
|
||||
Loading…
Add table
Add a link
Reference in a new issue