majuna/migrations/versions/431704bac57a_abstracting_cloud_providers.py

64 lines
3.3 KiB
Python

"""Abstracting cloud providers
Revision ID: 431704bac57a
Revises: 89a74e347d85
Create Date: 2023-01-27 13:32:39.933555
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision = '431704bac57a'
down_revision = '89a74e347d85'
branch_labels = None
depends_on = None
def upgrade():
op.create_table('cloud_account',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('description', sa.String(length=255), nullable=False),
sa.Column('added', sa.DateTime(), nullable=False),
sa.Column('updated', sa.DateTime(), nullable=False),
sa.Column('destroyed', sa.DateTime(), nullable=True),
sa.Column('provider',
sa.Enum('AWS', 'AZURE', 'BUNNY', 'CLOUDFLARE', 'FASTLY', 'HTTP', 'GANDI', 'GITHUB',
'GITLAB', 'HCLOUD', 'MAXMIND', 'OVH', 'RFC2136', name='cloudprovider'),
nullable=True),
sa.Column('credentials', sa.JSON(), nullable=True),
sa.Column('enabled', sa.Boolean(), nullable=True),
sa.Column('max_distributions', sa.Integer(), nullable=True),
sa.Column('max_sub_distributions', sa.Integer(), nullable=True),
sa.Column('max_instances', sa.Integer(), nullable=True),
sa.PrimaryKeyConstraint('id', name=op.f('pk_cloud_account'))
)
with op.batch_alter_table('bridge', schema=None) as batch_op:
batch_op.add_column(sa.Column('cloud_account_id', sa.Integer(), nullable=True))
batch_op.create_foreign_key(batch_op.f('fk_bridge_cloud_account_id_cloud_account'), 'cloud_account',
['cloud_account_id'], ['id'])
batch_op.drop_column('provider')
def downgrade():
op.drop_table('bridge') # We can't guess at what the old providers would have been easily
op.create_table('bridge',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('added', sa.DateTime(), nullable=False),
sa.Column('updated', sa.DateTime(), nullable=False),
sa.Column('deprecated', sa.DateTime(), nullable=True),
sa.Column('deprecation_reason', sa.String(), nullable=True),
sa.Column('destroyed', sa.DateTime(), nullable=True),
sa.Column('conf_id', sa.Integer(), nullable=False),
sa.Column('provider', sa.String(), nullable=False),
sa.Column('terraform_updated', sa.DateTime(), nullable=True),
sa.Column('nickname', sa.String(length=255), nullable=True),
sa.Column('fingerprint', sa.String(length=255), nullable=True),
sa.Column('hashed_fingerprint', sa.String(length=255), nullable=True),
sa.Column('bridgeline', sa.String(length=255), nullable=True),
sa.ForeignKeyConstraint(['conf_id'], ['bridge_conf.id'],
name=op.f('fk_bridge_conf_id_bridge_conf')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_bridge'))
)
op.drop_table('cloud_account')