¡@

Home 

OpenStack Study: 002_quota_class.py

OpenStack Index

**** CubicPower OpenStack Study ****

def upgrade(migrate_engine):

    meta = MetaData()

    meta.bind = migrate_engine

    # New table

    quota_classes = Table('quota_classes', 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),

                          Column('class_name',

                                 String(length=255),

                                 index=True),

                          Column('resource',

                                 String(length=255)),

                          Column('hard_limit', Integer(), nullable=True),

                          mysql_engine='InnoDB',

                          mysql_charset='utf8',

                          )

    try:

        quota_classes.create()

    except Exception:

        LOG.error(_("Table |%s| not created!"), repr(quota_classes))

        raise

    quota_usages = Table('quota_usages', 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),

                         Column('project_id',

                                String(length=255),

                                index=True),

                         Column('resource',

                                String(length=255)),

                         Column('in_use', Integer(), nullable=False),

                         Column('reserved', Integer(), nullable=False),

                         Column('until_refresh', Integer(), nullable=True),

                         mysql_engine='InnoDB',

                         mysql_charset='utf8',

                         )

    try:

        quota_usages.create()

    except Exception:

        LOG.error(_("Table |%s| not created!"), repr(quota_usages))

        raise

    reservations = Table('reservations', 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),

                         Column('uuid',

                                String(length=36),

                                nullable=False),

                         Column('usage_id',

                                Integer(),

                                ForeignKey('quota_usages.id'),

                                nullable=False),

                         Column('project_id',

                                String(length=255),

                                index=True),

                         Column('resource',

                                String(length=255)),

                         Column('delta', Integer(), nullable=False),

                         Column('expire', DateTime(timezone=False)),

                         mysql_engine='InnoDB',

                         mysql_charset='utf8',

                         )

    try:

        reservations.create()

    except Exception:

        LOG.error(_("Table |%s| not created!"), repr(reservations))

        raise

**** CubicPower OpenStack Study ****

def downgrade(migrate_engine):

    meta = MetaData()

    meta.bind = migrate_engine

    if migrate_engine.name == 'mysql':

        # NOTE(jsbryant): MySQL Cannot drop the quota_usages table

        # until the foreign key reservations_ibfk_1 is removed.  We

        # remove the foreign key first, and then we drop the table.

        table = Table('reservations', meta, autoload=True)

        ref_table = Table('reservations', meta, autoload=True)

        params = {'columns': [table.c['usage_id']],

                  'refcolumns': [ref_table.c['id']],

                  'name': 'reservations_ibfk_1'}

        try:

            fkey = ForeignKeyConstraint(**params)

            fkey.drop()

        except Exception:

            LOG.error(_("Dropping foreign key reservations_ibfk_1 failed."))

    quota_classes = Table('quota_classes', meta, autoload=True)

    try:

        quota_classes.drop()

    except Exception:

        LOG.error(_("quota_classes table not dropped"))

        raise

    quota_usages = Table('quota_usages', meta, autoload=True)

    try:

        quota_usages.drop()

    except Exception:

        LOG.error(_("quota_usages table not dropped"))

        raise

    reservations = Table('reservations', meta, autoload=True)

    try:

        reservations.drop()

    except Exception:

        LOG.error(_("reservations table not dropped"))

        raise