diff --git a/heat/db/sqlalchemy/migrate_repo/versions/061_status_reason_longtext.py b/heat/db/sqlalchemy/migrate_repo/versions/061_status_reason_longtext.py index bfa85f225..cc1ee6ee7 100644 --- a/heat/db/sqlalchemy/migrate_repo/versions/061_status_reason_longtext.py +++ b/heat/db/sqlalchemy/migrate_repo/versions/061_status_reason_longtext.py @@ -20,7 +20,20 @@ def upgrade(migrate_engine): for tab_name in ['stack', 'resource', 'software_deployment']: table = sqlalchemy.Table(tab_name, meta, autoload=True) - table.c.status_reason.alter(type=sqlalchemy.Text) + if migrate_engine.name == 'ibm_db_sa': + status_reason = sqlalchemy.Column('new_status_reason', + sqlalchemy.Text) + table.create_column(status_reason) + qry = table.select().execute().fetchall() + for item in qry: + values = {'new_status_reason': item.status_reason} + update = table.update().where( + table.c.id == item.id).values(values) + migrate_engine.execute(update) + table.c.status_reason.drop() + table.c.new_status_reason.alter(name='status_reason') + else: + table.c.status_reason.alter(type=sqlalchemy.Text) def downgrade(migrate_engine): @@ -29,4 +42,17 @@ def downgrade(migrate_engine): for tab_name in ['stack', 'resource', 'software_deployment']: table = sqlalchemy.Table(tab_name, meta, autoload=True) - table.c.status_reason.alter(type=sqlalchemy.String(255)) + if migrate_engine.name == 'ibm_db_sa': + status_reason = sqlalchemy.Column('new_status_reason', + sqlalchemy.String(255)) + table.create_column(status_reason) + qry = table.select().execute().fetchall() + for item in qry: + values = {'new_status_reason': item.status_reason} + update = table.update().where( + table.c.id == item.id).values(values) + migrate_engine.execute(update) + table.c.status_reason.drop() + table.c.new_status_reason.alter(name='status_reason') + else: + table.c.status_reason.alter(type=sqlalchemy.String(255))