Merge "Fix downgrades in migration scripts 016 and 035"
This commit is contained in:
commit
e556f23dff
@ -27,4 +27,7 @@ def downgrade(migrate_engine):
|
|||||||
meta.bind = migrate_engine
|
meta.bind = migrate_engine
|
||||||
|
|
||||||
stack = sqlalchemy.Table('stack', meta, autoload=True)
|
stack = sqlalchemy.Table('stack', meta, autoload=True)
|
||||||
|
# NOTE(viktors): We must be sure, that there are no nullable columns in
|
||||||
|
# `stack` table before we alter it.
|
||||||
|
migrate_engine.execute('UPDATE stack set timeout=60 WHERE timeout IS NULL')
|
||||||
stack.c.timeout.alter(nullable=False)
|
stack.c.timeout.alter(nullable=False)
|
||||||
|
@ -146,6 +146,9 @@ def downgrade(migrate_engine):
|
|||||||
cons.create()
|
cons.create()
|
||||||
|
|
||||||
event_table.c.tmp_id.alter('id', default=lambda: str(uuid.uuid4))
|
event_table.c.tmp_id.alter('id', default=lambda: str(uuid.uuid4))
|
||||||
|
if migrate_engine.name == 'postgresql':
|
||||||
|
sequence = sqlalchemy.Sequence('evt')
|
||||||
|
sqlalchemy.schema.DropSequence(sequence, bind=migrate_engine).execute()
|
||||||
|
|
||||||
|
|
||||||
def downgrade_sqlite(migrate_engine):
|
def downgrade_sqlite(migrate_engine):
|
||||||
@ -178,7 +181,7 @@ def downgrade_sqlite(migrate_engine):
|
|||||||
event_table.create()
|
event_table.create()
|
||||||
|
|
||||||
prev_event_table = sqlalchemy.Table('event', meta, autoload=True)
|
prev_event_table = sqlalchemy.Table('event', meta, autoload=True)
|
||||||
event_list = prev_event_table.select().execute()
|
event_list = prev_event_table.select().execute().fetchall()
|
||||||
for event in event_list:
|
for event in event_list:
|
||||||
values = {
|
values = {
|
||||||
'id': event.uuid,
|
'id': event.uuid,
|
||||||
|
@ -39,4 +39,36 @@ def downgrade(migrate_engine):
|
|||||||
meta = sqlalchemy.MetaData(bind=migrate_engine)
|
meta = sqlalchemy.MetaData(bind=migrate_engine)
|
||||||
|
|
||||||
stack = sqlalchemy.Table('stack', meta, autoload=True)
|
stack = sqlalchemy.Table('stack', meta, autoload=True)
|
||||||
stack.c.backup.drop()
|
if migrate_engine.name == 'sqlite':
|
||||||
|
_downgrade_045_sqlite(migrate_engine, meta, stack)
|
||||||
|
else:
|
||||||
|
stack.c.backup.drop()
|
||||||
|
|
||||||
|
|
||||||
|
def _downgrade_045_sqlite(migrate_engine, metadata, table):
|
||||||
|
|
||||||
|
table_name = table.name
|
||||||
|
|
||||||
|
constraints = [
|
||||||
|
c.copy() for c in table.constraints
|
||||||
|
if not isinstance(c, sqlalchemy.CheckConstraint)
|
||||||
|
]
|
||||||
|
columns = [c.copy() for c in table.columns if c.name != "backup"]
|
||||||
|
|
||||||
|
new_table = sqlalchemy.Table(table_name + "__tmp__", metadata,
|
||||||
|
*(columns + constraints))
|
||||||
|
new_table.create()
|
||||||
|
|
||||||
|
migrate_data = """
|
||||||
|
INSERT INTO stack__tmp__
|
||||||
|
SELECT id, created_at, updated_at, name, raw_template_id,
|
||||||
|
user_creds_id, username, owner_id, status, status_reason,
|
||||||
|
parameters, timeout, tenant, disable_rollback, action,
|
||||||
|
deleted_at, stack_user_project_id
|
||||||
|
FROM stack;"""
|
||||||
|
|
||||||
|
migrate_engine.execute(migrate_data)
|
||||||
|
|
||||||
|
table.drop()
|
||||||
|
|
||||||
|
new_table.rename(table_name)
|
||||||
|
@ -39,8 +39,8 @@ class HeatMigrationsCheckers(test_migrations.WalkVersionsMixin,
|
|||||||
common.FakeLogMixin):
|
common.FakeLogMixin):
|
||||||
"""Test sqlalchemy-migrate migrations."""
|
"""Test sqlalchemy-migrate migrations."""
|
||||||
|
|
||||||
snake_walk = False
|
snake_walk = True
|
||||||
downgrade = False
|
downgrade = True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def INIT_VERSION(self):
|
def INIT_VERSION(self):
|
||||||
@ -206,7 +206,7 @@ class HeatMigrationsCheckers(test_migrations.WalkVersionsMixin,
|
|||||||
|
|
||||||
def _pre_upgrade_045(self, engine):
|
def _pre_upgrade_045(self, engine):
|
||||||
raw_template = utils.get_table(engine, 'raw_template')
|
raw_template = utils.get_table(engine, 'raw_template')
|
||||||
templ = [dict(id=5, template='{}')]
|
templ = [dict(id=5, template='{}', files='{}')]
|
||||||
engine.execute(raw_template.insert(), templ)
|
engine.execute(raw_template.insert(), templ)
|
||||||
|
|
||||||
user_creds = utils.get_table(engine, 'user_creds')
|
user_creds = utils.get_table(engine, 'user_creds')
|
||||||
|
Loading…
Reference in New Issue
Block a user