mirror of
https://github.com/quay/quay.git
synced 2026-01-27 18:42:52 +03:00
* Remove V3_UPGRADE_MODE * Remove tag backfill worker and all callers to tag backfill and upgrades * Change initdb to create all test data via the manifest builder, rather than manually via legacy images * Convert various code paths to use the registry_model where we previously did not do so * Convert the GC test suite to build via the manifest builder * Delete an old, unused tool * Delete the Pre OCI registry model * Add additional error handling to the manifest creation code path * Add additional error handling to the OCI tag creation code path * Change how we respond to invalid manifest content types to better handle unknowns * Change legacy secscan test suite to use the registry model * Change the repo build badge to use the registry model (also fixes a bug) * Delete now-unused data model code * Remove old model adjustment code from OCI model * Mark older data models as deprecated which will prevent new rows from being inserted * Remove references to old registry test suite from various testing files * Remove tag backfill worker (again; got re-added during rebase) * Move all deprecated model checks into a central function * Make data_migration more Pythonic * Small requested fixes to Tag module styling * Have tag backfill worker fail to migrate if there are TagManifest's Since this backfill should only be called in future releases for empty models, this should catch someone attempting to upgrade from a too-old version * Remove labelbackfillworker as it is no longer needed * Remove unused invalid import * Reimplement the tag test for the remaining method used
154 lines
2.7 KiB
Python
154 lines
2.7 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 StaleTagException(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 = []
|
|
self.repo_cleanup_callbacks = []
|
|
|
|
def register_image_cleanup_callback(self, callback):
|
|
self.image_cleanup_callbacks.append(callback)
|
|
|
|
def register_repo_cleanup_callback(self, callback):
|
|
self.repo_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 (
|
|
appspecifictoken,
|
|
blob,
|
|
build,
|
|
gc,
|
|
image,
|
|
label,
|
|
log,
|
|
message,
|
|
modelutil,
|
|
notification,
|
|
oauth,
|
|
organization,
|
|
permission,
|
|
repositoryactioncount,
|
|
repo_mirror,
|
|
release,
|
|
repo_mirror,
|
|
repository,
|
|
service_keys,
|
|
storage,
|
|
team,
|
|
token,
|
|
user,
|
|
)
|