heat/heat/db/sqlalchemy/migrate_repo/versions/009_remove_parsed_template.py

50 lines
1.5 KiB
Python

from sqlalchemy import *
from migrate import *
def upgrade(migrate_engine):
meta = MetaData(bind=migrate_engine)
def fk_name(table, ref_column):
for fk in table.foreign_keys:
if fk.column == ref_column:
return fk.name
resource = Table('resource', meta, autoload=True)
parsed_template = Table('parsed_template', meta, autoload=True)
res_kc = ForeignKeyConstraint([resource.c.parsed_template_id],
[parsed_template.c.id],
name=fk_name(resource,
parsed_template.c.id))
try:
res_kc.drop()
except NotSupportedError:
# SQLite (used in unit tests) cannot drop a Foreign Key constraint
pass
resource.c.parsed_template_id.drop()
parsed_template.drop()
def downgrade(migrate_engine):
meta = MetaData(bind=migrate_engine)
raw_template = Table('raw_template', meta, autoload=True)
parsed_template = Table(
'parsed_template', meta,
Column('id', Integer, primary_key=True),
Column('created_at', DateTime(timezone=False)),
Column('updated_at', DateTime(timezone=False)),
Column('raw_template_id', Integer, ForeignKey("raw_template.id"),
nullable=False),
Column('template', Text())
)
parsed_template.create()
resource = Table('resource', meta, autoload=True)
Column('parsed_template_id', Integer, ForeignKey('parsed_template.id'),
nullable=True).create(resource)