"""Kazoo Exceptions"""
from collections import defaultdict
[docs]class KazooException(Exception):
"""Base Kazoo exception that all other kazoo library exceptions
inherit from"""
[docs]class ZookeeperError(KazooException):
"""Base Zookeeper exception for errors originating from the
Zookeeper server"""
[docs]class CancelledError(KazooException):
"""Raised when a process is cancelled by another thread"""
[docs]class ConfigurationError(KazooException):
"""Raised if the configuration arguments to an object are
invalid"""
[docs]class ZookeeperStoppedError(KazooException):
"""Raised when the kazoo client stopped (and thus not connected)"""
[docs]class ConnectionDropped(KazooException):
"""Internal error for jumping out of loops"""
[docs]class LockTimeout(KazooException):
"""Raised if failed to acquire a lock.
.. versionadded:: 1.1
"""
[docs]class WriterNotClosedException(KazooException):
"""Raised if the writer is unable to stop closing when requested.
.. versionadded:: 1.2
"""
def _invalid_error_code():
raise RuntimeError('Invalid error code')
EXCEPTIONS = defaultdict(_invalid_error_code)
def _zookeeper_exception(code):
def decorator(klass):
def create(*args, **kwargs):
return klass(args, kwargs)
EXCEPTIONS[code] = create
klass.code = code
return klass
return decorator
@_zookeeper_exception(0)
[docs]class RolledBackError(ZookeeperError):
pass
@_zookeeper_exception(-1)
[docs]class SystemZookeeperError(ZookeeperError):
pass
@_zookeeper_exception(-2)
[docs]class RuntimeInconsistency(ZookeeperError):
pass
@_zookeeper_exception(-3)
[docs]class DataInconsistency(ZookeeperError):
pass
@_zookeeper_exception(-4)
[docs]class ConnectionLoss(ZookeeperError):
pass
@_zookeeper_exception(-5)
[docs]class MarshallingError(ZookeeperError):
pass
@_zookeeper_exception(-6)
[docs]class UnimplementedError(ZookeeperError):
pass
@_zookeeper_exception(-7)
[docs]class OperationTimeoutError(ZookeeperError):
pass
@_zookeeper_exception(-8)
[docs]class BadArgumentsError(ZookeeperError):
pass
@_zookeeper_exception(-100)
[docs]class APIError(ZookeeperError):
pass
@_zookeeper_exception(-101)
[docs]class NoNodeError(ZookeeperError):
pass
@_zookeeper_exception(-102)
[docs]class NoAuthError(ZookeeperError):
pass
@_zookeeper_exception(-103)
[docs]class BadVersionError(ZookeeperError):
pass
@_zookeeper_exception(-108)
[docs]class NoChildrenForEphemeralsError(ZookeeperError):
pass
@_zookeeper_exception(-110)
[docs]class NodeExistsError(ZookeeperError):
pass
@_zookeeper_exception(-111)
[docs]class NotEmptyError(ZookeeperError):
pass
@_zookeeper_exception(-112)
[docs]class SessionExpiredError(ZookeeperError):
pass
@_zookeeper_exception(-113)
[docs]class InvalidCallbackError(ZookeeperError):
pass
@_zookeeper_exception(-114)
[docs]class InvalidACLError(ZookeeperError):
pass
@_zookeeper_exception(-115)
[docs]class AuthFailedError(ZookeeperError):
pass
@_zookeeper_exception(-118)
[docs]class SessionMovedError(ZookeeperError):
pass
@_zookeeper_exception(-119)
[docs]class NotReadOnlyCallError(ZookeeperError):
"""An API call that is not read-only was used while connected to
a read-only server"""
[docs]class ConnectionClosedError(SessionExpiredError):
"""Connection is closed"""
# BW Compat aliases for C lib style exceptions
ConnectionLossException = ConnectionLoss
MarshallingErrorException = MarshallingError
SystemErrorException = SystemZookeeperError
RuntimeInconsistencyException = RuntimeInconsistency
DataInconsistencyException = DataInconsistency
UnimplementedException = UnimplementedError
OperationTimeoutException = OperationTimeoutError
BadArgumentsException = BadArgumentsError
ApiErrorException = APIError
NoNodeException = NoNodeError
NoAuthException = NoAuthError
BadVersionException = BadVersionError
NoChildrenForEphemeralsException = NoChildrenForEphemeralsError
NodeExistsException = NodeExistsError
InvalidACLException = InvalidACLError
AuthFailedException = AuthFailedError
NotEmptyException = NotEmptyError
SessionExpiredException = SessionExpiredError
InvalidCallbackException = InvalidCallbackError