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/53e2ac668296_remove_reference_to_subdir.py
2019-11-12 11:09:47 -05:00

63 lines
1.6 KiB
Python

"""Remove reference to subdir
Revision ID: 53e2ac668296
Revises: ed01e313d3cb
Create Date: 2017-03-28 15:01:31.073382
"""
# revision identifiers, used by Alembic.
import json
import logging
from alembic.script.revision import RevisionError
from alembic.util import CommandError
from alembic import op as original_op
from data.migrations.progress import ProgressWrapper
import sqlalchemy as sa
from sqlalchemy.dialects import mysql
revision = '53e2ac668296'
down_revision = 'ed01e313d3cb'
log = logging.getLogger(__name__)
def run_migration(migrate_function, progress_reporter):
op = ProgressWrapper(original_op, progress_reporter)
conn = op.get_bind()
triggers = conn.execute("SELECT id, config FROM repositorybuildtrigger")
for trigger in triggers:
config = json.dumps(migrate_function(json.loads(trigger[1])))
try:
conn.execute("UPDATE repositorybuildtrigger SET config=%s WHERE id=%s", config, trigger[0])
except(RevisionError, CommandError) as e:
log.warning("Failed to update build trigger %s with exception: ", trigger[0], e)
def upgrade(tables, tester, progress_reporter):
run_migration(delete_subdir, progress_reporter)
def downgrade(tables, tester, progress_reporter):
run_migration(add_subdir, progress_reporter)
def delete_subdir(config):
""" Remove subdir from config """
if not config:
return config
if 'subdir' in config:
del config['subdir']
return config
def add_subdir(config):
""" Add subdir back into config """
if not config:
return config
if 'context' in config:
config['subdir'] = config['context']
return config