modular_cli/utils/exceptions.py (40 lines of code) (raw):
from abc import ABC
class ModularCliBaseException(ABC, Exception):
"""
Base Modular-CLI exception
"""
code: int
class ModularCliBadRequestException(ModularCliBaseException):
"""
Incoming request to Modular-CLI is invalid due to parameters invalidity.
"""
code = 400
class ModularCliConfigurationException(ModularCliBaseException):
"""
Internal service is not configured: General configuration mismatch
"""
code = 503
class ModularCliServiceTemporaryUnavailableException(ModularCliBaseException):
"""
Internal service is not configured: General configuration mismatch
"""
code = 503
class ModularCliUnauthorizedException(ModularCliBaseException):
"""
CLI: provided credentials to AWS/Minio/Vault/MongoDB are invalid
API: provided API credentials are invalid.
"""
code = 401
class ModularCliForbiddenException(ModularCliBaseException):
"""
The credentials are valid, but permission policy denies a command execution
for requestor
"""
code = 403
class ModularCliNotFoundException(ModularCliBaseException):
"""
The requested resource has not been found
"""
code = 404
class ModularCliTimeoutException(ModularCliBaseException):
"""
Failed to respond in expected time range
"""
code = 408
class ModularCliConflictException(ModularCliBaseException):
"""
Incoming request processing failed due to environment state is incompatible
with requested command
"""
code = 409
class ModularCliInternalException(ModularCliBaseException):
"""
Modular-CLI failed to process incoming requests due to an error in the code.
It’s a developer’s mistake.
"""
code = 500
class ModularCliBadGatewayException(ModularCliBaseException):
"""
Modular-CLI obtained the Error message from 3rd party application it is
integrated with to satisfy the user's command.
"""
code = 502
class ModularCliGatewayTimeoutException(ModularCliBaseException):
"""
Should be raised in case Modular-CLI did not get response from third party
service (server, AWS service, Minio, Vault, MongoDB) requested in scope
of the command execution.
"""
code = 504
class ModularCliUpdateRequiredException(ModularCliBaseException):
"""
Should be raised if client use obsolete Modular-API commands meta
"""
code = 426
HTTP_CODE_EXCEPTION_MAPPING = {
400: ModularCliBadRequestException,
401: ModularCliUnauthorizedException,
403: ModularCliForbiddenException,
404: ModularCliNotFoundException,
408: ModularCliTimeoutException,
409: ModularCliConflictException,
426: ModularCliUpdateRequiredException,
500: ModularCliInternalException,
502: ModularCliBadGatewayException,
503: ModularCliServiceTemporaryUnavailableException,
504: ModularCliGatewayTimeoutException
}