5225642850
Add support to GC to invoke a callback with the image+storages removed. Only images whose storage was also removed will be sent to the callback. This will be used by security scanning for its own GC in the followup change.
141 lines
2.3 KiB
Python
141 lines
2.3 KiB
Python
from data.database import db, db_transaction
|
|
|
|
|
|
class DataModelException(Exception):
|
|
pass
|
|
|
|
|
|
class InvalidLabelKeyException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidMediaTypeException(DataModelException):
|
|
pass
|
|
|
|
|
|
class BlobDoesNotExist(DataModelException):
|
|
pass
|
|
|
|
|
|
class TorrentInfoDoesNotExist(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidBlobUpload(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidEmailAddressException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidOrganizationException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidPasswordException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidRobotException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidUsernameException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidRepositoryBuildException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidBuildTriggerException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidTokenException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidNotificationException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidImageException(DataModelException):
|
|
pass
|
|
|
|
|
|
class UserAlreadyInTeam(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidTeamException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidTeamMemberException(DataModelException):
|
|
pass
|
|
|
|
|
|
class InvalidManifestException(DataModelException):
|
|
pass
|
|
|
|
|
|
class ServiceKeyDoesNotExist(DataModelException):
|
|
pass
|
|
|
|
|
|
class ServiceKeyAlreadyApproved(DataModelException):
|
|
pass
|
|
|
|
|
|
class ServiceNameInvalid(DataModelException):
|
|
pass
|
|
|
|
|
|
class TagAlreadyCreatedException(DataModelException):
|
|
pass
|
|
|
|
|
|
class TooManyLoginAttemptsException(Exception):
|
|
def __init__(self, message, retry_after):
|
|
super(TooManyLoginAttemptsException, self).__init__(message)
|
|
self.retry_after = retry_after
|
|
|
|
|
|
class Config(object):
|
|
def __init__(self):
|
|
self.app_config = None
|
|
self.store = None
|
|
self.image_cleanup_callbacks = []
|
|
|
|
def register_image_cleanup_callback(self, callback):
|
|
self.image_cleanup_callbacks.append(callback)
|
|
|
|
|
|
config = Config()
|
|
|
|
|
|
# There MUST NOT be any circular dependencies between these subsections. If there are fix it by
|
|
# moving the minimal number of things to _basequery
|
|
from data.model import (
|
|
blob,
|
|
build,
|
|
image,
|
|
label,
|
|
log,
|
|
message,
|
|
modelutil,
|
|
notification,
|
|
oauth,
|
|
organization,
|
|
permission,
|
|
release,
|
|
repository,
|
|
service_keys,
|
|
storage,
|
|
tag,
|
|
team,
|
|
token,
|
|
user,
|
|
)
|