fenix/fenix/db/migration/alembic_migrations/versions/001_initial.py

184 lines
8.1 KiB
Python

# Copyright 2014 OpenStack Foundation.
# Copyright 2014 Intel Corporation
# All Rights Reserved.
#
# 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.
import uuid
from alembic import op
import six
import sqlalchemy as sa
from sqlalchemy.dialects.mysql import MEDIUMTEXT
revision = '001'
down_revision = None
def _generate_unicode_uuid():
return six.text_type(str(uuid.uuid4()))
def MediumText():
return sa.Text().with_variant(MEDIUMTEXT(), 'mysql')
def upgrade():
op.create_table(
'sessions',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('session_id', sa.String(36), primary_key=True),
sa.Column('prev_state', sa.String(length=32), nullable=True),
sa.Column('state', sa.String(length=32), nullable=True),
sa.Column('maintenance_at', sa.DateTime(), nullable=True),
sa.Column('meta', MediumText(), nullable=True),
sa.Column('workflow', sa.String(length=255), nullable=True),
sa.PrimaryKeyConstraint('session_id'))
op.create_table(
'hosts',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('id', sa.String(36), primary_key=True,
default=_generate_unicode_uuid),
sa.Column('session_id', sa.String(36),
sa.ForeignKey('sessions.session_id')),
sa.Column('hostname', sa.String(length=255), nullable=False),
sa.Column('type', sa.String(length=32), nullable=True),
sa.Column('maintained', sa.Boolean, default=False),
sa.Column('disabled', sa.Boolean, default=False),
sa.Column('details', sa.String(length=255), nullable=True),
sa.UniqueConstraint('session_id', 'hostname', name='_session_host_uc'),
sa.PrimaryKeyConstraint('id'))
op.create_table(
'projects',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('id', sa.String(36), primary_key=True,
default=_generate_unicode_uuid),
sa.Column('session_id', sa.String(36),
sa.ForeignKey('sessions.session_id')),
sa.Column('project_id', sa.String(36), nullable=True,),
sa.Column('state', sa.String(length=37), nullable=True),
sa.UniqueConstraint('session_id', 'project_id',
name='_session_project_uc'),
sa.PrimaryKeyConstraint('id'))
op.create_table(
'instances',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('id', sa.String(36), primary_key=True,
default=_generate_unicode_uuid),
sa.Column('session_id', sa.String(36),
sa.ForeignKey('sessions.session_id')),
sa.Column('instance_id', sa.String(36), nullable=True,
primary_key=True),
sa.Column('action', sa.String(32), nullable=True),
sa.Column('project_id', sa.String(36), nullable=True),
sa.Column('instance_id', sa.String(36), nullable=True),
sa.Column('project_state', sa.String(length=37), nullable=True),
sa.Column('state', sa.String(length=16), nullable=True),
sa.Column('instance_name', sa.String(length=255), nullable=False),
sa.Column('action_done', sa.Boolean, default=False),
sa.Column('details', sa.String(255), nullable=True),
sa.Column('host', sa.String(length=255), nullable=False),
sa.UniqueConstraint('session_id', 'instance_id',
name='_session_instance_uc'),
sa.PrimaryKeyConstraint('id'))
op.create_table(
'action_plugins',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('id', sa.String(36), primary_key=True,
default=_generate_unicode_uuid),
sa.Column('session_id', sa.String(36),
sa.ForeignKey('sessions.session_id')),
sa.Column('plugin', sa.String(length=255), nullable=False),
sa.Column('type', sa.String(length=32), nullable=True),
sa.Column('meta', MediumText(), nullable=False),
sa.UniqueConstraint('session_id', 'plugin', name='_session_plugin_uc'),
sa.PrimaryKeyConstraint('id'))
op.create_table(
'action_plugin_instances',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('id', sa.String(36), primary_key=True,
default=_generate_unicode_uuid),
sa.Column('session_id', sa.String(36),
sa.ForeignKey('sessions.session_id')),
sa.Column('plugin', sa.String(length=255), nullable=False),
sa.Column('hostname', sa.String(length=255), nullable=False),
sa.Column('state', MediumText(), nullable=True),
sa.UniqueConstraint('session_id', 'plugin', 'hostname',
name='_session_plugin_instance_uc'),
sa.PrimaryKeyConstraint('id'))
op.create_table(
'downloads',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('id', sa.String(36), primary_key=True,
default=_generate_unicode_uuid),
sa.Column('session_id', sa.String(36),
sa.ForeignKey('sessions.session_id')),
sa.Column('local_file', sa.String(160), nullable=False,),
sa.UniqueConstraint('session_id', 'local_file',
name='_session_local_file_uc'),
sa.PrimaryKeyConstraint('id'))
op.create_table(
'project_instances',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('instance_id', sa.String(36), primary_key=True,
default=_generate_unicode_uuid),
sa.Column('project_id', sa.String(36), nullable=True),
sa.Column('group_id', sa.String(36), nullable=False),
sa.Column('instance_name', sa.String(length=255),
nullable=False),
sa.Column('max_interruption_time', sa.Integer, nullable=False),
sa.Column('migration_type', sa.String(36), nullable=False),
sa.Column('resource_mitigation', sa.Boolean, default=False),
sa.Column('lead_time', sa.Integer, nullable=False),
sa.PrimaryKeyConstraint('instance_id'))
op.create_table(
'instance_groups',
sa.Column('created_at', sa.DateTime(), nullable=False),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.Column('group_id', sa.String(36), primary_key=True),
sa.Column('project_id', sa.String(36), nullable=True),
sa.Column('group_name', sa.String(length=255), nullable=False),
sa.Column('anti_affinity_group', sa.Boolean, default=False),
sa.Column('max_instances_per_host', sa.Integer,
nullable=False),
sa.Column('max_impacted_members', sa.Integer, nullable=False),
sa.Column('recovery_time', sa.Integer, nullable=False),
sa.Column('resource_mitigation', sa.Boolean, default=False),
sa.PrimaryKeyConstraint('group_id'))
def downgrade():
op.drop_table('sessions')
op.drop_table('hosts')
op.drop_table('projects')
op.drop_table('instances')
op.drop_table('action_plugins')
op.drop_table('downloads')
op.drop_table('project_instances')
op.drop_table('instance_groups')