from typing import Optional
from arango.request import Request
from arango.response import Response
[docs]
class ArangoError(Exception):
"""Base class for all exceptions in python-arango."""
[docs]
class ArangoClientError(ArangoError):
"""Base class for errors originating from python-arango client.
:param msg: Error message.
:type msg: str
:cvar source: Source of the error (always set to "client").
:vartype source: str
:ivar message: Error message.
:vartype message: str
"""
source = "client"
def __init__(self, msg: str) -> None:
super().__init__(msg)
self.message = msg
self.error_message = None
self.error_code = None
self.url = None
self.response = None
self.request = None
self.http_method = None
self.http_code = None
self.http_headers = None
[docs]
class ArangoServerError(ArangoError):
"""Base class for errors originating from ArangoDB server.
:param resp: HTTP response.
:type resp: arango.response.Response
:param msg: Error message override.
:type msg: str
:cvar source: Source of the error (always set to "server").
:vartype source: str
:ivar message: Exception message.
:vartype message: str
:ivar url: API URL.
:vartype url: str
:ivar response: HTTP response object.
:vartype response: arango.response.Response
:ivar request: HTTP request object.
:vartype request: arango.request.Request
:ivar http_method: HTTP method in lowercase (e.g. "post").
:vartype http_method: str
:ivar http_code: HTTP status code.
:vartype http_code: int
:ivar http_headers: Response headers.
:vartype http_headers: dict
:ivar error_code: Error code from ArangoDB server.
:vartype error_code: int
:ivar error_message: Raw error message from ArangoDB server.
:vartype error_message: str
"""
source = "server"
def __init__(
self, resp: Response, request: Request, msg: Optional[str] = None
) -> None:
msg = msg or resp.error_message or resp.status_text
self.error_message = resp.error_message
self.error_code = resp.error_code
if self.error_code is not None:
msg = f"[HTTP {resp.status_code}][ERR {self.error_code}] {msg}"
else:
msg = f"[HTTP {resp.status_code}] {msg}"
self.error_code = resp.status_code
super().__init__(msg)
self.message = msg
self.url = resp.url
self.response = resp
self.request = request
self.http_method = resp.method
self.http_code = resp.status_code
self.http_headers = resp.headers
##################
# AQL Exceptions #
##################
[docs]
class AQLQueryListError(ArangoServerError):
"""Failed to retrieve running AQL queries."""
[docs]
class AQLQueryExplainError(ArangoServerError):
"""Failed to parse and explain query."""
[docs]
class AQLQueryValidateError(ArangoServerError):
"""Failed to parse and validate query."""
[docs]
class AQLQueryExecuteError(ArangoServerError):
"""Failed to execute query."""
[docs]
class AQLQueryKillError(ArangoServerError):
"""Failed to kill the query."""
[docs]
class AQLQueryClearError(ArangoServerError):
"""Failed to clear slow AQL queries."""
[docs]
class AQLQueryTrackingGetError(ArangoServerError):
"""Failed to retrieve AQL tracking properties."""
[docs]
class AQLQueryTrackingSetError(ArangoServerError):
"""Failed to configure AQL tracking properties."""
[docs]
class AQLCachePropertiesError(ArangoServerError):
"""Failed to retrieve query cache properties."""
[docs]
class AQLCacheEntriesError(ArangoServerError):
"""Failed to retrieve AQL cache entries."""
[docs]
class AQLCacheClearError(ArangoServerError):
"""Failed to clear the query cache."""
[docs]
class AQLFunctionListError(ArangoServerError):
"""Failed to retrieve AQL user functions."""
[docs]
class AQLFunctionCreateError(ArangoServerError):
"""Failed to create AQL user function."""
[docs]
class AQLFunctionDeleteError(ArangoServerError):
"""Failed to delete AQL user function."""
[docs]
class AQLQueryRulesGetError(ArangoServerError):
"""Failed to retrieve AQL query rules."""
##############################
# Async Execution Exceptions #
##############################
[docs]
class AsyncExecuteError(ArangoServerError):
"""Failed to execute async API request."""
[docs]
class AsyncJobListError(ArangoServerError):
"""Failed to retrieve async jobs."""
[docs]
class AsyncJobCancelError(ArangoServerError):
"""Failed to cancel async job."""
[docs]
class AsyncJobStatusError(ArangoServerError):
"""Failed to retrieve async job status."""
[docs]
class AsyncJobResultError(ArangoServerError):
"""Failed to retrieve async job result."""
[docs]
class AsyncJobClearError(ArangoServerError):
"""Failed to clear async job results."""
##############################
# Backup Exceptions #
##############################
[docs]
class BackupCreateError(ArangoServerError):
"""Failed to create a backup."""
[docs]
class BackupDeleteError(ArangoServerError):
"""Failed to delete a backup."""
[docs]
class BackupDownloadError(ArangoServerError):
"""Failed to download a backup from remote repository."""
[docs]
class BackupGetError(ArangoServerError):
"""Failed to retrieve backup details."""
[docs]
class BackupRestoreError(ArangoServerError):
"""Failed to restore from backup."""
[docs]
class BackupUploadError(ArangoServerError):
"""Failed to upload a backup to remote repository."""
##############################
# Batch Execution Exceptions #
##############################
[docs]
class BatchStateError(ArangoClientError):
"""The batch object was in a bad state."""
[docs]
class BatchJobResultError(ArangoClientError):
"""Failed to retrieve batch job result."""
[docs]
class BatchExecuteError(ArangoServerError):
"""Failed to execute batch API request."""
#########################################
# Overload Control Execution Exceptions #
#########################################
[docs]
class OverloadControlExecutorError(ArangoServerError):
"""Failed to execute overload controlled API request."""
#########################
# Collection Exceptions #
#########################
[docs]
class CollectionListError(ArangoServerError):
"""Failed to retrieve collections."""
[docs]
class CollectionPropertiesError(ArangoServerError):
"""Failed to retrieve collection properties."""
[docs]
class CollectionShardsError(ArangoServerError):
"""Failed to retrieve collection shards."""
[docs]
class CollectionStatisticsError(ArangoServerError):
"""Failed to retrieve collection statistics."""
[docs]
class CollectionRevisionError(ArangoServerError):
"""Failed to retrieve collection revision."""
[docs]
class CollectionChecksumError(ArangoServerError):
"""Failed to retrieve collection checksum."""
[docs]
class CollectionCompactError(ArangoServerError):
"""Failed to compact collection."""
[docs]
class CollectionCreateError(ArangoServerError):
"""Failed to create collection."""
[docs]
class CollectionDeleteError(ArangoServerError):
"""Failed to delete collection."""
[docs]
class CollectionRenameError(ArangoServerError):
"""Failed to rename collection."""
[docs]
class CollectionTruncateError(ArangoServerError):
"""Failed to truncate collection."""
[docs]
class CollectionLoadError(ArangoServerError):
"""Failed to load collection."""
[docs]
class CollectionUnloadError(ArangoServerError):
"""Failed to unload collection."""
[docs]
class CollectionRecalculateCountError(ArangoServerError):
"""Failed to recalculate document count."""
[docs]
class CollectionResponsibleShardError(ArangoServerError):
"""Failed to retrieve responsible shard."""
#####################
# Cursor Exceptions #
#####################
[docs]
class CursorStateError(ArangoClientError):
"""The cursor object was in a bad state."""
[docs]
class CursorCountError(ArangoClientError, TypeError):
"""The cursor count was not enabled."""
[docs]
class CursorEmptyError(ArangoClientError):
"""The current batch in cursor was empty."""
[docs]
class CursorNextError(ArangoServerError):
"""Failed to retrieve the next result batch from server."""
[docs]
class CursorCloseError(ArangoServerError):
"""Failed to delete the cursor result from server."""
#######################
# Database Exceptions #
#######################
[docs]
class DatabaseListError(ArangoServerError):
"""Failed to retrieve databases."""
[docs]
class DatabasePropertiesError(ArangoServerError):
"""Failed to retrieve database properties."""
[docs]
class DatabaseCreateError(ArangoServerError):
"""Failed to create database."""
[docs]
class DatabaseDeleteError(ArangoServerError):
"""Failed to delete database."""
[docs]
class DatabaseSupportInfoError(ArangoServerError):
"""Failed to retrieve support info for deployment."""
[docs]
class DatabaseCompactError(ArangoServerError):
"""Failed to compact databases."""
#######################
# Document Exceptions #
#######################
[docs]
class DocumentParseError(ArangoClientError):
"""Failed to parse document input."""
[docs]
class DocumentCountError(ArangoServerError):
"""Failed to retrieve document count."""
[docs]
class DocumentInError(ArangoServerError):
"""Failed to check whether document exists."""
[docs]
class DocumentGetError(ArangoServerError):
"""Failed to retrieve document."""
[docs]
class DocumentKeysError(ArangoServerError):
"""Failed to retrieve document keys."""
[docs]
class DocumentIDsError(ArangoServerError):
"""Failed to retrieve document IDs."""
[docs]
class DocumentInsertError(ArangoServerError):
"""Failed to insert document."""
[docs]
class DocumentReplaceError(ArangoServerError):
"""Failed to replace document."""
[docs]
class DocumentUpdateError(ArangoServerError):
"""Failed to update document."""
[docs]
class DocumentDeleteError(ArangoServerError):
"""Failed to delete document."""
[docs]
class DocumentRevisionError(ArangoServerError):
"""The expected and actual document revisions mismatched."""
###################
# Foxx Exceptions #
###################
[docs]
class FoxxServiceListError(ArangoServerError):
"""Failed to retrieve Foxx services."""
[docs]
class FoxxServiceGetError(ArangoServerError):
"""Failed to retrieve Foxx service metadata."""
[docs]
class FoxxServiceCreateError(ArangoServerError):
"""Failed to create Foxx service."""
[docs]
class FoxxServiceUpdateError(ArangoServerError):
"""Failed to update Foxx service."""
[docs]
class FoxxServiceReplaceError(ArangoServerError):
"""Failed to replace Foxx service."""
[docs]
class FoxxServiceDeleteError(ArangoServerError):
"""Failed to delete Foxx services."""
[docs]
class FoxxConfigGetError(ArangoServerError):
"""Failed to retrieve Foxx service configuration."""
[docs]
class FoxxConfigUpdateError(ArangoServerError):
"""Failed to update Foxx service configuration."""
[docs]
class FoxxConfigReplaceError(ArangoServerError):
"""Failed to replace Foxx service configuration."""
[docs]
class FoxxDependencyGetError(ArangoServerError):
"""Failed to retrieve Foxx service dependencies."""
[docs]
class FoxxDependencyUpdateError(ArangoServerError):
"""Failed to update Foxx service dependencies."""
[docs]
class FoxxDependencyReplaceError(ArangoServerError):
"""Failed to replace Foxx service dependencies."""
[docs]
class FoxxScriptListError(ArangoServerError):
"""Failed to retrieve Foxx service scripts."""
[docs]
class FoxxScriptRunError(ArangoServerError):
"""Failed to run Foxx service script."""
[docs]
class FoxxTestRunError(ArangoServerError):
"""Failed to run Foxx service tests."""
[docs]
class FoxxDevModeEnableError(ArangoServerError):
"""Failed to enable development mode for Foxx service."""
[docs]
class FoxxDevModeDisableError(ArangoServerError):
"""Failed to disable development mode for Foxx service."""
[docs]
class FoxxReadmeGetError(ArangoServerError):
"""Failed to retrieve Foxx service readme."""
[docs]
class FoxxSwaggerGetError(ArangoServerError):
"""Failed to retrieve Foxx service swagger."""
[docs]
class FoxxDownloadError(ArangoServerError):
"""Failed to download Foxx service bundle."""
[docs]
class FoxxCommitError(ArangoServerError):
"""Failed to commit local Foxx service state."""
####################
# Graph Exceptions #
####################
[docs]
class GraphListError(ArangoServerError):
"""Failed to retrieve graphs."""
[docs]
class GraphCreateError(ArangoServerError):
"""Failed to create the graph."""
[docs]
class GraphDeleteError(ArangoServerError):
"""Failed to delete the graph."""
[docs]
class GraphPropertiesError(ArangoServerError):
"""Failed to retrieve graph properties."""
[docs]
class GraphTraverseError(ArangoServerError):
"""Failed to execute graph traversal."""
[docs]
class VertexCollectionListError(ArangoServerError):
"""Failed to retrieve vertex collections."""
[docs]
class VertexCollectionCreateError(ArangoServerError):
"""Failed to create vertex collection."""
[docs]
class VertexCollectionDeleteError(ArangoServerError):
"""Failed to delete vertex collection."""
[docs]
class EdgeDefinitionListError(ArangoServerError):
"""Failed to retrieve edge definitions."""
[docs]
class EdgeDefinitionCreateError(ArangoServerError):
"""Failed to create edge definition."""
[docs]
class EdgeDefinitionReplaceError(ArangoServerError):
"""Failed to replace edge definition."""
[docs]
class EdgeDefinitionDeleteError(ArangoServerError):
"""Failed to delete edge definition."""
[docs]
class EdgeListError(ArangoServerError):
"""Failed to retrieve edges coming in and out of a vertex."""
####################
# Index Exceptions #
####################
[docs]
class IndexListError(ArangoServerError):
"""Failed to retrieve collection indexes."""
[docs]
class IndexCreateError(ArangoServerError):
"""Failed to create collection index."""
[docs]
class IndexGetError(ArangoServerError):
"""Failed to retrieve collection index."""
[docs]
class IndexMissingError(ArangoClientError):
"""Failed to find collection index."""
[docs]
class IndexDeleteError(ArangoServerError):
"""Failed to delete collection index."""
[docs]
class IndexLoadError(ArangoServerError):
"""Failed to load indexes into memory."""
#####################
# Pregel Exceptions #
#####################
[docs]
class PregelJobCreateError(ArangoServerError):
"""Failed to create Pregel job."""
[docs]
class PregelJobGetError(ArangoServerError):
"""Failed to retrieve Pregel job details."""
[docs]
class PregelJobDeleteError(ArangoServerError):
"""Failed to delete Pregel job."""
#####################
# Server Exceptions #
#####################
[docs]
class ServerConnectionError(ArangoServerError):
"""Failed to connect to ArangoDB server."""
[docs]
class ServerEngineError(ArangoServerError):
"""Failed to retrieve database engine."""
[docs]
class ServerVersionError(ArangoServerError):
"""Failed to retrieve server version."""
[docs]
class ServerDetailsError(ArangoServerError):
"""Failed to retrieve server details."""
[docs]
class ServerLicenseGetError(ArangoServerError):
"""Failed to retrieve server license."""
[docs]
class ServerLicenseSetError(ArangoServerError):
"""Failed to set server license."""
[docs]
class ServerStatusError(ArangoServerError):
"""Failed to retrieve server status."""
[docs]
class ServerTimeError(ArangoServerError):
"""Failed to retrieve server system time."""
[docs]
class ServerEchoError(ArangoServerError):
"""Failed to retrieve details on last request."""
[docs]
class ServerShutdownError(ArangoServerError):
"""Failed to initiate shutdown sequence."""
[docs]
class ServerShutdownProgressError(ArangoServerError):
"""Failed to retrieve soft shutdown progress."""
[docs]
class ServerRunTestsError(ArangoServerError):
"""Failed to execute server tests."""
[docs]
class ServerRequiredDBVersionError(ArangoServerError):
"""Failed to retrieve server target version."""
[docs]
class ServerReadLogError(ArangoServerError):
"""Failed to retrieve global log."""
[docs]
class ServerLogLevelError(ArangoServerError):
"""Failed to retrieve server log levels."""
[docs]
class ServerLogLevelResetError(ArangoServerError):
"""Failed to reset server log levels."""
[docs]
class ServerLogSettingError(ArangoServerError):
"""Failed to retrieve server log settings."""
[docs]
class ServerLogLevelSetError(ArangoServerError):
"""Failed to set server log levels."""
[docs]
class ServerLogSettingSetError(ArangoServerError):
"""Failed to set server log settings."""
[docs]
class ServerReloadRoutingError(ArangoServerError):
"""Failed to reload routing details."""
[docs]
class ServerStatisticsError(ArangoServerError):
"""Failed to retrieve server statistics."""
[docs]
class ServerMetricsError(ArangoServerError):
"""Failed to retrieve server metrics."""
[docs]
class ServerRoleError(ArangoServerError):
"""Failed to retrieve server role."""
[docs]
class ServerModeError(ArangoServerError):
"""Failed to retrieve server mode."""
[docs]
class ServerModeSetError(ArangoServerError):
"""Failed to set server mode."""
[docs]
class ServerTLSError(ArangoServerError):
"""Failed to retrieve TLS data."""
[docs]
class ServerTLSReloadError(ArangoServerError):
"""Failed to reload TLS."""
[docs]
class ServerEncryptionError(ArangoServerError):
"""Failed to reload user-defined encryption keys."""
[docs]
class ServerCurrentOptionsGetError(ArangoServerError):
"""Failed to retrieve currently-set server options."""
[docs]
class ServerAvailableOptionsGetError(ArangoServerError):
"""Failed to retrieve available server options."""
[docs]
class ServerExecuteError(ArangoServerError):
"""Failed to execute raw JavaScript command."""
#####################
# Task Exceptions #
#####################
[docs]
class TaskListError(ArangoServerError):
"""Failed to retrieve server tasks."""
[docs]
class TaskGetError(ArangoServerError):
"""Failed to retrieve server task details."""
[docs]
class TaskCreateError(ArangoServerError):
"""Failed to create server task."""
[docs]
class TaskDeleteError(ArangoServerError):
"""Failed to delete server task."""
##########################
# Transaction Exceptions #
##########################
[docs]
class TransactionExecuteError(ArangoServerError):
"""Failed to execute raw transaction."""
[docs]
class TransactionInitError(ArangoServerError):
"""Failed to initialize transaction."""
[docs]
class TransactionStatusError(ArangoServerError):
"""Failed to retrieve transaction status."""
[docs]
class TransactionCommitError(ArangoServerError):
"""Failed to commit transaction."""
[docs]
class TransactionAbortError(ArangoServerError):
"""Failed to abort transaction."""
[docs]
class TransactionFetchError(ArangoServerError):
"""Failed to fetch existing transaction."""
[docs]
class TransactionListError(ArangoServerError):
"""Failed to retrieve transactions."""
###################
# User Exceptions #
###################
[docs]
class UserListError(ArangoServerError):
"""Failed to retrieve users."""
[docs]
class UserGetError(ArangoServerError):
"""Failed to retrieve user details."""
[docs]
class UserCreateError(ArangoServerError):
"""Failed to create user."""
[docs]
class UserUpdateError(ArangoServerError):
"""Failed to update user."""
[docs]
class UserReplaceError(ArangoServerError):
"""Failed to replace user."""
[docs]
class UserDeleteError(ArangoServerError):
"""Failed to delete user."""
###################
# View Exceptions #
###################
[docs]
class ViewListError(ArangoServerError):
"""Failed to retrieve views."""
[docs]
class ViewGetError(ArangoServerError):
"""Failed to retrieve view details."""
[docs]
class ViewCreateError(ArangoServerError):
"""Failed to create view."""
[docs]
class ViewUpdateError(ArangoServerError):
"""Failed to update view."""
[docs]
class ViewReplaceError(ArangoServerError):
"""Failed to replace view."""
[docs]
class ViewDeleteError(ArangoServerError):
"""Failed to delete view."""
[docs]
class ViewRenameError(ArangoServerError):
"""Failed to rename view."""
#######################
# Analyzer Exceptions #
#######################
[docs]
class AnalyzerListError(ArangoServerError):
"""Failed to retrieve analyzers."""
[docs]
class AnalyzerGetError(ArangoServerError):
"""Failed to retrieve analyzer details."""
[docs]
class AnalyzerCreateError(ArangoServerError):
"""Failed to create analyzer."""
[docs]
class AnalyzerDeleteError(ArangoServerError):
"""Failed to delete analyzer."""
#########################
# Permission Exceptions #
#########################
[docs]
class PermissionListError(ArangoServerError):
"""Failed to list user permissions."""
[docs]
class PermissionGetError(ArangoServerError):
"""Failed to retrieve user permission."""
[docs]
class PermissionUpdateError(ArangoServerError):
"""Failed to update user permission."""
[docs]
class PermissionResetError(ArangoServerError):
"""Failed to reset user permission."""
##################
# WAL Exceptions #
##################
[docs]
class WALPropertiesError(ArangoServerError):
"""Failed to retrieve WAL properties."""
[docs]
class WALTransactionListError(ArangoServerError):
"""Failed to retrieve running WAL transactions."""
[docs]
class WALFlushError(ArangoServerError):
"""Failed to flush WAL."""
[docs]
class WALTickRangesError(ArangoServerError):
"""Failed to return WAL tick ranges."""
[docs]
class WALLastTickError(ArangoServerError):
"""Failed to return WAL tick ranges."""
[docs]
class WALTailError(ArangoServerError):
"""Failed to return WAL tick ranges."""
##########################
# Replication Exceptions #
##########################
[docs]
class ReplicationInventoryError(ArangoServerError):
"""Failed to retrieve inventory of collection and indexes."""
[docs]
class ReplicationDumpBatchCreateError(ArangoServerError):
"""Failed to create dump batch."""
[docs]
class ReplicationDumpBatchDeleteError(ArangoServerError):
"""Failed to delete a dump batch."""
[docs]
class ReplicationDumpBatchExtendError(ArangoServerError):
"""Failed to extend a dump batch."""
[docs]
class ReplicationDumpError(ArangoServerError):
"""Failed to retrieve collection content."""
[docs]
class ReplicationSyncError(ArangoServerError):
"""Failed to synchronize data from remote."""
[docs]
class ReplicationClusterInventoryError(ArangoServerError):
"""Failed to retrieve overview of collection and indexes in a cluster."""
[docs]
class ReplicationLoggerStateError(ArangoServerError):
"""Failed to retrieve logger state."""
[docs]
class ReplicationLoggerFirstTickError(ArangoServerError):
"""Failed to retrieve logger first tick."""
[docs]
class ReplicationApplierConfigError(ArangoServerError):
"""Failed to retrieve replication applier configuration."""
[docs]
class ReplicationApplierConfigSetError(ArangoServerError):
"""Failed to update replication applier configuration."""
[docs]
class ReplicationApplierStartError(ArangoServerError):
"""Failed to start replication applier."""
[docs]
class ReplicationApplierStopError(ArangoServerError):
"""Failed to stop replication applier."""
[docs]
class ReplicationApplierStateError(ArangoServerError):
"""Failed to retrieve replication applier state."""
[docs]
class ReplicationMakeSlaveError(ArangoServerError):
"""Failed to change role to slave."""
[docs]
class ReplicationServerIDError(ArangoServerError):
"""Failed to retrieve server ID."""
######################
# Cluster Exceptions #
######################
[docs]
class ClusterHealthError(ArangoServerError):
"""Failed to retrieve DBServer health."""
[docs]
class ClusterServerIDError(ArangoServerError):
"""Failed to retrieve server ID."""
[docs]
class ClusterServerRoleError(ArangoServerError):
"""Failed to retrieve server role in a cluster."""
[docs]
class ClusterServerModeError(ArangoServerError):
"""Failed to retrieve server mode in a cluster."""
[docs]
class ClusterServerStatisticsError(ArangoServerError):
"""Failed to retrieve DBServer statistics."""
[docs]
class ClusterServerVersionError(ArangoServerError):
"""Failed to retrieve server node version."""
[docs]
class ClusterServerEngineError(ArangoServerError):
"""Failed to retrieve server node engine."""
[docs]
class ClusterMaintenanceModeError(ArangoServerError):
"""Failed to enable/disable cluster supervision maintenance mode."""
[docs]
class ClusterEndpointsError(ArangoServerError):
"""Failed to retrieve cluster endpoints."""
[docs]
class ClusterServerCountError(ArangoServerError):
"""Failed to retrieve cluster server count."""
[docs]
class ClusterRebalanceError(ArangoServerError):
"""Failed to execute cluster re-balancing operation (load/set)."""
[docs]
class ClusterVpackSortMigrationError(ArangoServerError):
"""Failed to execute vpack sort migration request."""
##################
# JWT Exceptions #
##################
[docs]
class JWTAuthError(ArangoServerError):
"""Failed to get a new JWT token from ArangoDB."""
[docs]
class JWTSecretListError(ArangoServerError):
"""Failed to retrieve information on currently loaded JWT secrets."""
[docs]
class JWTSecretReloadError(ArangoServerError):
"""Failed to reload JWT secrets."""
[docs]
class JWTRefreshError(ArangoClientError):
"""Failed to refresh JWT token."""
[docs]
class JWTExpiredError(ArangoClientError):
"""JWT token has expired."""
###################################
# Parameter Validation Exceptions #
###################################
[docs]
class SortValidationError(ArangoClientError):
"""Invalid sort parameters."""