64 lines
3.3 KiB
Python
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')
|