Merge "Migrate mistral task_type"

This commit is contained in:
Jenkins 2016-11-14 08:34:48 +00:00 committed by Gerrit Code Review
commit 39095ca48b

View File

@ -26,8 +26,22 @@ revision = '020'
down_revision = '019'
from alembic import op
from mistral.db.sqlalchemy import types as st
import sqlalchemy as sa
# A simple model of the task executions table with only the fields needed for
# the migration.
task_executions = sa.Table(
'task_executions_v2',
sa.MetaData(),
sa.Column('id', sa.String(36), nullable=False),
sa.Column(
'spec',
st.JsonMediumDictType()
),
sa.Column('type', sa.String(10), nullable=True)
)
def upgrade():
@ -35,3 +49,25 @@ def upgrade():
'task_executions_v2',
sa.Column('type', sa.String(length=10), nullable=True)
)
session = sa.orm.Session(bind=op.get_bind())
values = []
for row in session.query(task_executions):
values.append({'id': row[0],
'spec': row[1]})
with session.begin(subtransactions=True):
for value in values:
task_type = "ACTION"
if "workflow" in value['spec']:
task_type = "WORKFLOW"
session.execute(
task_executions.update().values(type=task_type).where(
task_executions.c.id == value['id']
)
)
# this commit appears to be necessary
session.commit()