class RepoMirrorConfig(BaseModel): """ Represents a repository to be mirrored and any additional configuration required to perform the mirroring. """ repository = ForeignKeyField(Repository, index=True, unique=True, backref="mirror") creation_date = DateTimeField(default=datetime.utcnow) is_enabled = BooleanField(default=True) # Mirror Configuration mirror_type = ClientEnumField(RepoMirrorType, default=RepoMirrorType.PULL) internal_robot = QuayUserField( allows_robots=True, null=True, backref="mirrorpullrobot", robot_null_delete=True ) external_reference = CharField() external_registry = CharField() external_namespace = CharField() external_repository = CharField() external_registry_username = EncryptedCharField(max_length=2048, null=True) external_registry_password = EncryptedCharField(max_length=2048, null=True) external_registry_config = JSONField(default={}) # Worker Queuing sync_interval = IntegerField() # seconds between syncs sync_start_date = DateTimeField(null=True) # next start time sync_expiration_date = DateTimeField(null=True) # max duration sync_retries_remaining = IntegerField(default=3) sync_status = ClientEnumField(RepoMirrorStatus, default=RepoMirrorStatus.NEVER_RUN) sync_transaction_id = CharField(default=uuid_generator, max_length=36) # Tag-Matching Rules root_rule = ForeignKeyField(RepoMirrorRule)
class RepositoryBuildTrigger(BaseModel): uuid = CharField(default=uuid_generator, index=True) auth_token = CharField(null=True) private_key = TextField(null=True) secure_auth_token = EncryptedCharField(null=True) secure_private_key = EncryptedTextField(null=True) fully_migrated = BooleanField(default=False)
class AppSpecificAuthToken(BaseModel): token_name = CharField(index=True, unique=True, default=random_string_generator(60)) token_secret = EncryptedCharField(default_token_length=60) token_code = CharField(default=random_string_generator(length=120), unique=True, index=True)
class AccessToken(BaseModel): code = CharField(default=random_string_generator(length=64), unique=True, index=True) token_name = CharField(default=random_string_generator(length=32), unique=True, index=True) token_code = EncryptedCharField(default_token_length=32)
class RobotAccountToken(BaseModel): robot_account = QuayUserField(index=True, allows_robots=True, unique=True) token = EncryptedCharField(default_token_length=64) fully_migrated = BooleanField(default=False)
class OAuthApplication(BaseModel): secure_client_secret = EncryptedCharField(default_token_length=40, null=True) fully_migrated = BooleanField(default=False) client_secret = CharField(default=random_string_generator(length=40))