**** CubicPower OpenStack Study ****
def upgrade(migrate_engine):
    meta = MetaData()
    meta.bind = migrate_engine
    # Just for the ForeignKey and column creation to succeed, these are not the
    # actual definitions of tables .
    #
    volumes = Table('volumes',
                    meta,
                    Column('id', Integer(),
                           primary_key=True, nullable=False),
                    mysql_engine='InnoDB')
    snapshots = Table('snapshots',
                      meta,
                      Column('id', Integer(),
                             primary_key=True, nullable=False),
                      mysql_engine='InnoDB')
    # Create new table
    volume_glance_metadata = Table(
        'volume_glance_metadata',
        meta,
        Column('created_at', DateTime(timezone=False)),
        Column('updated_at', DateTime(timezone=False)),
        Column('deleted_at', DateTime(timezone=False)),
        Column('deleted', Boolean(create_constraint=True, name=None)),
        Column('id', Integer(), primary_key=True, nullable=False),
        Column('volume_id', String(length=36), ForeignKey('volumes.id')),
        Column('snapshot_id', String(length=36),
               ForeignKey('snapshots.id')),
        Column('key', String(255)),
        Column('value', Text),
        mysql_engine='InnoDB'
    )
    try:
        volume_glance_metadata.create()
    except Exception:
        LOG.exception(_("Exception while creating table "
                        "'volume_glance_metadata'"))
        meta.drop_all(tables=[volume_glance_metadata])
        raise
**** CubicPower OpenStack Study ****
def downgrade(migrate_engine):
    meta = MetaData()
    meta.bind = migrate_engine
    volume_glance_metadata = Table('volume_glance_metadata',
                                   meta, autoload=True)
    try:
        volume_glance_metadata.drop()
    except Exception:
        LOG.error(_("volume_glance_metadata table not dropped"))
        raise