This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/data/migrations/versions/5248ddf35167_repository_mirror.py
2019-11-12 11:09:47 -05:00

144 lines
7.3 KiB
Python

"""Repository Mirror
Revision ID: 5248ddf35167
Revises: b918abdbee43
Create Date: 2019-06-25 16:22:36.310532
"""
revision = '5248ddf35167'
down_revision = 'b918abdbee43'
from alembic import op as original_op
from data.migrations.progress import ProgressWrapper
import sqlalchemy as sa
from sqlalchemy.dialects import mysql
def upgrade(tables, tester, progress_reporter):
op = ProgressWrapper(original_op, progress_reporter)
op.create_table('repomirrorrule',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('uuid', sa.String(length=36), nullable=False),
sa.Column('repository_id', sa.Integer(), nullable=False),
sa.Column('creation_date', sa.DateTime(), nullable=False),
sa.Column('rule_type', sa.Integer(), nullable=False),
sa.Column('rule_value', sa.Text(), nullable=False),
sa.Column('left_child_id', sa.Integer(), nullable=True),
sa.Column('right_child_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['left_child_id'], ['repomirrorrule.id'], name=op.f('fk_repomirrorrule_left_child_id_repomirrorrule')),
sa.ForeignKeyConstraint(['repository_id'], ['repository.id'], name=op.f('fk_repomirrorrule_repository_id_repository')),
sa.ForeignKeyConstraint(['right_child_id'], ['repomirrorrule.id'], name=op.f('fk_repomirrorrule_right_child_id_repomirrorrule')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_repomirrorrule')))
op.create_index('repomirrorrule_left_child_id', 'repomirrorrule', ['left_child_id'], unique=False)
op.create_index('repomirrorrule_repository_id', 'repomirrorrule', ['repository_id'], unique=False)
op.create_index('repomirrorrule_right_child_id', 'repomirrorrule', ['right_child_id'], unique=False)
op.create_index('repomirrorrule_rule_type', 'repomirrorrule', ['rule_type'], unique=False)
op.create_index('repomirrorrule_uuid', 'repomirrorrule', ['uuid'], unique=True)
op.create_table('repomirrorconfig',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('repository_id', sa.Integer(), nullable=False),
sa.Column('creation_date', sa.DateTime(), nullable=False),
sa.Column('is_enabled', sa.Boolean(), nullable=False),
sa.Column('mirror_type', sa.Integer(), nullable=False),
sa.Column('internal_robot_id', sa.Integer(), nullable=False),
sa.Column('external_registry', sa.String(length=255), nullable=False),
sa.Column('external_namespace', sa.String(length=255), nullable=False),
sa.Column('external_repository', sa.String(length=255), nullable=False),
sa.Column('external_registry_username', sa.String(length=2048), nullable=True),
sa.Column('external_registry_password', sa.String(length=2048), nullable=True),
sa.Column('external_registry_config', sa.Text(), nullable=False),
sa.Column('sync_interval', sa.Integer(), nullable=False, server_default='60'),
sa.Column('sync_start_date', sa.DateTime(), nullable=True),
sa.Column('sync_expiration_date', sa.DateTime(), nullable=True),
sa.Column('sync_retries_remaining', sa.Integer(), nullable=False, server_default='3'),
sa.Column('sync_status', sa.Integer(), nullable=False),
sa.Column('sync_transaction_id', sa.String(length=36), nullable=True),
sa.Column('root_rule_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['repository_id'], ['repository.id'], name=op.f('fk_repomirrorconfig_repository_id_repository')),
sa.ForeignKeyConstraint(['root_rule_id'], ['repomirrorrule.id'], name=op.f('fk_repomirrorconfig_root_rule_id_repomirrorrule')),
sa.ForeignKeyConstraint(['internal_robot_id'], ['user.id'], name=op.f('fk_repomirrorconfig_internal_robot_id_user')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_repomirrorconfig'))
)
op.create_index('repomirrorconfig_mirror_type', 'repomirrorconfig', ['mirror_type'], unique=False)
op.create_index('repomirrorconfig_repository_id', 'repomirrorconfig', ['repository_id'], unique=True)
op.create_index('repomirrorconfig_root_rule_id', 'repomirrorconfig', ['root_rule_id'], unique=False)
op.create_index('repomirrorconfig_sync_status', 'repomirrorconfig', ['sync_status'], unique=False)
op.create_index('repomirrorconfig_sync_transaction_id', 'repomirrorconfig', ['sync_transaction_id'], unique=False)
op.create_index('repomirrorconfig_internal_robot_id', 'repomirrorconfig', ['internal_robot_id'], unique=False)
op.add_column(u'repository', sa.Column('state', sa.Integer(), nullable=False, server_default='0'))
op.create_index('repository_state', 'repository', ['state'], unique=False)
op.bulk_insert(tables.logentrykind,
[
{'name': 'repo_mirror_enabled'},
{'name': 'repo_mirror_disabled'},
{'name': 'repo_mirror_config_changed'},
{'name': 'repo_mirror_sync_started'},
{'name': 'repo_mirror_sync_failed'},
{'name': 'repo_mirror_sync_success'},
{'name': 'repo_mirror_sync_now_requested'},
{'name': 'repo_mirror_sync_tag_success'},
{'name': 'repo_mirror_sync_tag_failed'},
{'name': 'repo_mirror_sync_test_success'},
{'name': 'repo_mirror_sync_test_failed'},
{'name': 'repo_mirror_sync_test_started'},
{'name': 'change_repo_state'}
])
tester.populate_table('repomirrorrule', [
('uuid', tester.TestDataType.String),
('repository_id', tester.TestDataType.Foreign('repository')),
('creation_date', tester.TestDataType.DateTime),
('rule_type', tester.TestDataType.Integer),
('rule_value', tester.TestDataType.String),
])
tester.populate_table('repomirrorconfig', [
('repository_id', tester.TestDataType.Foreign('repository')),
('creation_date', tester.TestDataType.DateTime),
('is_enabled', tester.TestDataType.Boolean),
('mirror_type', tester.TestDataType.Constant(1)),
('internal_robot_id', tester.TestDataType.Foreign('user')),
('external_registry', tester.TestDataType.String),
('external_namespace', tester.TestDataType.String),
('external_repository', tester.TestDataType.String),
('external_registry_username', tester.TestDataType.String),
('external_registry_password', tester.TestDataType.String),
('external_registry_config', tester.TestDataType.JSON),
('sync_start_date', tester.TestDataType.DateTime),
('sync_expiration_date', tester.TestDataType.DateTime),
('sync_retries_remaining', tester.TestDataType.Integer),
('sync_status', tester.TestDataType.Constant(0)),
('sync_transaction_id', tester.TestDataType.String),
('root_rule_id', tester.TestDataType.Foreign('repomirrorrule')),
])
def downgrade(tables, tester, progress_reporter):
op = ProgressWrapper(original_op, progress_reporter)
op.drop_column(u'repository', 'state')
op.drop_table('repomirrorconfig')
op.drop_table('repomirrorrule')
for logentrykind in [
'repo_mirror_enabled',
'repo_mirror_disabled',
'repo_mirror_config_changed',
'repo_mirror_sync_started',
'repo_mirror_sync_failed',
'repo_mirror_sync_success',
'repo_mirror_sync_now_requested',
'repo_mirror_sync_tag_success',
'repo_mirror_sync_tag_failed',
'repo_mirror_sync_test_success',
'repo_mirror_sync_test_failed',
'repo_mirror_sync_test_started',
'change_repo_state'
]:
op.execute(tables.logentrykind.delete()
.where(tables.logentrykind.c.name == op.inline_literal(logentrykind)))