CSCfi/pebbles

View on GitHub
migrations/versions/63e1cbb91610_rename_instance_to_environment_session.py

Summary

Maintainability
D
2 days
Test Coverage
"""rename instance to environment_session

Revision ID: 63e1cbb91610
Revises: da41c0a6e015
Create Date: 2021-09-22 05:28:44.257679

"""

# revision identifiers, used by Alembic.
revision = '63e1cbb91610'
down_revision = 'da41c0a6e015'

from alembic import op


def upgrade():
    # instances -> environment_sessions
    op.rename_table('instances', 'environment_sessions')
    op.alter_column('environment_sessions', 'instance_data', new_column_name='session_data')
    op.execute('ALTER INDEX pk_instances RENAME TO pk_environment_sessions')
    op.execute('ALTER INDEX uq_instances_name RENAME TO uq_environment_sessions_name')
    op.execute(
        'ALTER TABLE environment_sessions RENAME CONSTRAINT fk_instances_environment_id_environments TO fk_environment_sessions_environment_id_environments')
    op.execute(
        'ALTER TABLE environment_sessions RENAME CONSTRAINT fk_instances_user_id_users TO fk_environment_sessions_user_id_users')

    # instance_logs -> environment_session_logs
    op.rename_table('instance_logs', 'environment_session_logs')
    op.alter_column('environment_session_logs', 'instance_id', new_column_name='environment_session_id')
    op.execute('ALTER INDEX pk_instance_logs RENAME TO pk_environment_session_logs')
    op.execute('ALTER INDEX ix_instance_logs_instance_id RENAME TO ix_environment_session_logs_environment_session_id')
    op.execute(
        'ALTER TABLE environment_session_logs RENAME CONSTRAINT fk_instance_logs_instance_id_instances TO fk_environment_session_logs_environment_session_id_environment_sessions')

    # update templates to use session_id instead of instance_id
    op.execute(
        "UPDATE environment_templates SET base_config = REPLACE(base_config, '{{instance_id}}', '{{session_id}}')")


def downgrade():
    # environment_sessions -> instances
    op.rename_table('environment_sessions', 'instances')
    op.alter_column('instances', 'session_data', new_column_name='instance_data')
    op.execute('ALTER INDEX pk_environment_sessions RENAME TO pk_instances')
    op.execute('ALTER INDEX uq_environment_sessions_name RENAME TO uq_instances_name')
    op.execute(
        'ALTER TABLE instances RENAME CONSTRAINT fk_environment_sessions_environment_id_environments TO fk_instances_environment_id_environments')
    op.execute(
        'ALTER TABLE instances RENAME CONSTRAINT fk_environment_sessions_user_id_users TO fk_instances_user_id_users')

    # instance_logs -> environment_session_logs
    op.rename_table('environment_session_logs', 'instance_logs')
    op.alter_column('instance_logs', 'environment_session_id', new_column_name='instance_id')
    op.execute('ALTER INDEX pk_environment_session_logs RENAME TO pk_instance_logs')
    op.execute('ALTER INDEX ix_environment_session_logs_environment_session_id RENAME TO ix_instance_logs_instance_id')
    op.execute(
        'ALTER TABLE instance_logs RENAME CONSTRAINT fk_environment_session_logs_environment_session_id_environment_sessions TO fk_instance_logs_instance_id_instances')

    # revert templates to use instance_id instead of session_id
    op.execute(
        "UPDATE environment_templates SET base_config = REPLACE(base_config, '{{session_id}}' , '{{instance_id}}')")