tap-as-a-service/neutron_taas/db/migration/alembic_migration/versions/pike/contract/bac61f603e39_alter_tap_id_a...

51 lines
1.7 KiB
Python

# Copyright 2016-17
#
# 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.
"""Alter TapIdAssociations to support tap id reuse
Revision ID: bac61f603e39
Revises: 4086b3cffc01
Create Date: 2016-07-27 09:31:54.200165
"""
# revision identifiers, used by Alembic.
revision = 'bac61f603e39'
down_revision = '4086b3cffc01'
from alembic import op
from sqlalchemy.engine import reflection
import sqlalchemy as sa
TABLE_NAME = 'tap_id_associations'
def upgrade():
inspector = reflection.Inspector.from_engine(op.get_bind())
fk_constraints = inspector.get_foreign_keys(TABLE_NAME)
for fk in fk_constraints:
op.drop_constraint(fk['name'], TABLE_NAME, type_='foreignkey')
op.create_foreign_key('fk_tap_id_assoc_tap_service', TABLE_NAME,
'tap_services', ['tap_service_id'], ['id'],
ondelete='SET NULL')
op.alter_column(TABLE_NAME, 'taas_id', autoincrement=False,
existing_type=sa.INTEGER, nullable=False)
op.alter_column(TABLE_NAME, 'tap_service_id',
existing_type=sa.String(36), nullable=True)
op.create_unique_constraint('unique_taas_id', TABLE_NAME,
['taas_id'])