**** CubicPower OpenStack Study ****
def upgrade(migrate_engine):
meta = sqlalchemy.schema.MetaData()
meta.bind = migrate_engine
images_table = sqlalchemy.Table('images', meta, autoload=True)
image_locations_table = sqlalchemy.Table('image_locations', meta,
autoload=True)
# Create 'status' column for image_locations table
status = sqlalchemy.Column('status', schema.String(30),
server_default='active', nullable=False)
status.create(image_locations_table)
# Set 'status' column initial value for image_locations table
mapping = {'active': 'active', 'pending_delete': 'pending_delete',
'deleted': 'deleted', 'killed': 'deleted'}
for src, dst in mapping.iteritems():
subq = sqlalchemy.sql.select([images_table.c.id])\
.where(images_table.c.status == src)
image_locations_table.update(values={'status': dst})\
.where(image_locations_table.c.image_id.in_(subq))\
.execute()
**** CubicPower OpenStack Study ****
def downgrade(migrate_engine):
meta = sqlalchemy.schema.MetaData()
meta.bind = migrate_engine
image_locations_table = sqlalchemy.Table('image_locations', meta,
autoload=True)
# Remove 'status' column from image_locations table
image_locations_table.columns['status'].drop()