backend/migrations/versions/46b528bd81dc_initial_migration.py (134 lines of code) (raw):
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Initial migration.
Revision ID: 46b528bd81dc
Revises:
Create Date: 2022-01-05 19:10:43.908299
"""
from alembic import op
import sqlalchemy as sa
import sqlalchemy_utils
from bms_app.models import OperationType, OperationStatus, SourceDBType
# revision identifiers, used by Alembic.
revision = '46b528bd81dc'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('bms_servers',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(), nullable=True),
sa.Column('create_time', sa.DateTime(), nullable=True),
sa.Column('state', sa.String(), nullable=True),
sa.Column('machine_type', sa.String(), nullable=True),
sa.Column('luns', sa.JSON(), nullable=True),
sa.Column('networks', sa.JSON(), nullable=True),
sa.Column('deleted', sa.Boolean(), nullable=True),
sa.Column('secret_name', sa.String(), nullable=True),
sa.Column('cpu', sa.String(), nullable=True),
sa.Column('socket', sa.String(), nullable=True),
sa.Column('ram', sa.String(), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name')
)
op.create_table('projects',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(), nullable=False),
sa.Column('vpc', sa.String(), nullable=False),
sa.Column('subnet', sa.String(), nullable=False),
sa.Column('service_account', sa.String(), nullable=False),
sa.Column('description', sa.String(), nullable=False),
sa.PrimaryKeyConstraint('id')
)
op.create_table('db_assessments',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('project_id', sa.Integer(), nullable=True),
sa.Column('path', sa.String(), nullable=False),
sa.Column('uploaded_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['project_id'], ['projects.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('waves',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(), nullable=True),
sa.Column('project_id', sa.Integer(), nullable=False),
sa.Column('is_running', sa.Boolean(), nullable=True),
sa.Column('description', sa.String(), nullable=True),
sa.ForeignKeyConstraint(['project_id'], ['projects.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('operations',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('wave_id', sa.Integer(), nullable=True),
sa.Column('operation_type', sqlalchemy_utils.types.choice.ChoiceType(OperationType, impl=sa.String(20)), nullable=True),
sa.Column('status', sqlalchemy_utils.types.choice.ChoiceType(OperationStatus, impl=sa.String(20)), nullable=True),
sa.Column('started_at', sa.DateTime(), nullable=True),
sa.Column('completed_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['wave_id'], ['waves.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('source_dbs',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('server', sa.String(), nullable=False),
sa.Column('oracle_version', sa.String(), nullable=False),
sa.Column('oracle_edition', sa.String(), nullable=True),
sa.Column('db_type', sqlalchemy_utils.types.choice.ChoiceType(SourceDBType, impl=sa.String(10)), nullable=True),
sa.Column('rac_nodes', sa.Integer(), nullable=True),
sa.Column('fe_rac_nodes', sa.Integer(), nullable=True),
sa.Column('arch', sa.String(), nullable=False),
sa.Column('cores', sa.Integer(), nullable=False),
sa.Column('ram', sa.Integer(), nullable=False),
sa.Column('allocated_memory', sa.Integer(), nullable=False),
sa.Column('db_name', sa.String(), nullable=False),
sa.Column('db_size', sa.Numeric(), nullable=False),
sa.Column('status', sa.String(), nullable=True),
sa.Column('project_id', sa.Integer(), nullable=False),
sa.Column('wave_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['project_id'], ['projects.id'], ),
sa.ForeignKeyConstraint(['wave_id'], ['waves.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('server', 'db_name')
)
op.create_table('configs',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('db_id', sa.Integer(), nullable=False),
sa.Column('install_config_values', sa.JSON(), nullable=True),
sa.Column('db_params_values', sa.JSON(), nullable=True),
sa.Column('data_mounts_values', sa.JSON(), nullable=True),
sa.Column('asm_config_values', sa.JSON(), nullable=True),
sa.Column('rac_config_values', sa.JSON(), nullable=True),
sa.Column('misc_config_values', sa.JSON(), nullable=True),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['db_id'], ['source_dbs.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('db_id')
)
op.create_table('mappings',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('db_id', sa.Integer(), nullable=False),
sa.Column('bms_id', sa.Integer(), nullable=False),
sa.Column('rac_node', sa.Integer(), nullable=True),
sa.Column('is_deployable', sa.Boolean(), server_default='1', nullable=True),
sa.ForeignKeyConstraint(['bms_id'], ['bms_servers.id'], ),
sa.ForeignKeyConstraint(['db_id'], ['source_dbs.id'], ),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('db_id', 'bms_id')
)
op.create_table('operation_history',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('mapping_id', sa.Integer(), nullable=False),
sa.Column('wave_id', sa.Integer(), nullable=False),
sa.Column('operation_id', sa.Integer(), nullable=False),
sa.Column('operation_type', sqlalchemy_utils.types.choice.ChoiceType(OperationType, impl=sa.String(20)), nullable=True),
sa.Column('step', sa.String(length=20), nullable=True),
sa.Column('step_upd_at', sa.DateTime(), nullable=True),
sa.Column('status', sqlalchemy_utils.types.choice.ChoiceType(OperationStatus, impl=sa.String(20)), nullable=True),
sa.Column('started_at', sa.DateTime(), nullable=True),
sa.Column('completed_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['mapping_id'], ['mappings.id'], ),
sa.ForeignKeyConstraint(['operation_id'], ['operations.id'], ),
sa.ForeignKeyConstraint(['wave_id'], ['waves.id'], ),
sa.PrimaryKeyConstraint('id')
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('operation_history')
op.drop_table('mappings')
op.drop_table('configs')
op.drop_table('source_dbs')
op.drop_table('operations')
op.drop_table('waves')
op.drop_table('db_assessments')
op.drop_table('projects')
op.drop_table('bms_servers')
# ### end Alembic commands ###