from moto.core.exceptions import ServiceException
class LifecyclePolicyNotFoundException(ServiceException):
code = "LifecyclePolicyNotFoundException"
def __init__(self, repository_name: str, registry_id: str):
message = (
f"Lifecycle policy does not exist "
f"for the repository with name '{repository_name}' "
f"in the registry with id '{registry_id}'"
)
super().__init__(message)
class LimitExceededException(ServiceException):
code = "LimitExceededException"
message = "The scan quota per image has been exceeded. Wait and try again."
class RegistryPolicyNotFoundException(ServiceException):
code = "RegistryPolicyNotFoundException"
def __init__(self, registry_id: str):
message = (
f"Registry policy does not exist in the registry with id '{registry_id}'"
)
super().__init__(message)
class RepositoryAlreadyExistsException(ServiceException):
code = "RepositoryAlreadyExistsException"
def __init__(self, repository_name: str, registry_id: str):
message = (
f"The repository with name '{repository_name}' already exists "
f"in the registry with id '{registry_id}'"
)
super().__init__(message)
class RepositoryNotEmptyException(ServiceException):
code = "RepositoryNotEmptyException"
def __init__(self, repository_name: str, registry_id: str):
message = (
f"The repository with name '{repository_name}' "
f"in registry with id '{registry_id}' "
f"cannot be deleted because it still contains images"
)
super().__init__(message)
class RepositoryNotFoundException(ServiceException):
code = "RepositoryNotFoundException"
def __init__(self, repository_name: str, registry_id: str):
message = (
f"The repository with name '{repository_name}' does not exist "
f"in the registry with id '{registry_id}'"
)
super().__init__(message)
class RepositoryPolicyNotFoundException(ServiceException):
code = "RepositoryPolicyNotFoundException"
def __init__(self, repository_name: str, registry_id: str):
message = (
f"Repository policy does not exist "
f"for the repository with name '{repository_name}' "
f"in the registry with id '{registry_id}'"
)
super().__init__(message)
class ImageNotFoundException(ServiceException):
code = "ImageNotFoundException"
def __init__(self, image_id: str, repository_name: str, registry_id: str):
message = (
f"The image with imageId {image_id} does not exist "
f"within the repository with name '{repository_name}' "
f"in the registry with id '{registry_id}'"
)
super().__init__(message)
class ImageAlreadyExistsException(ServiceException):
code = "ImageAlreadyExistsException"
def __init__(
self,
repository_name: str,
registry_id: str,
digest: str,
image_tag: str,
):
message = (
f"Image with digest '{digest}' and tag '{image_tag}' already exists "
f"in the repository with name '{repository_name}' "
f"in registry with id '{registry_id}'"
)
super().__init__(message)
class InvalidParameterException(ServiceException):
code = "InvalidParameterException"
class ScanNotFoundException(ServiceException):
code = "ScanNotFoundException"
def __init__(self, image_id: str, repository_name: str, registry_id: str):
message = (
f"Image scan does not exist for the image with '{image_id}' "
f"in the repository with name '{repository_name}' "
f"in the registry with id '{registry_id}'"
)
super().__init__(message)
class ValidationException(ServiceException):
code = "ValidationException"