¡@

Home 

OpenStack Study: 001_cinder_init.py

OpenStack Index

**** CubicPower OpenStack Study ****

def upgrade(migrate_engine):

    meta = MetaData()

    meta.bind = migrate_engine

    migrations = Table(

        'migrations', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', Integer, primary_key=True, nullable=False),

        Column('source_compute', String(length=255)),

        Column('dest_compute', String(length=255)),

        Column('dest_host', String(length=255)),

        Column('status', String(length=255)),

        Column('instance_uuid', String(length=255)),

        Column('old_instance_type_id', Integer),

        Column('new_instance_type_id', Integer),

        mysql_engine='InnoDB'

    )

    services = Table(

        'services', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', Integer, primary_key=True, nullable=False),

        Column('host', String(length=255)),

        Column('binary', String(length=255)),

        Column('topic', String(length=255)),

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

        Column('disabled', Boolean),

        Column('availability_zone', String(length=255)),

        mysql_engine='InnoDB'

    )

    sm_flavors = Table(

        'sm_flavors', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', Integer, primary_key=True, nullable=False),

        Column('label', String(length=255)),

        Column('description', String(length=255)),

        mysql_engine='InnoDB'

    )

    sm_backend_config = Table(

        'sm_backend_config', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', Integer, primary_key=True, nullable=False),

        Column('flavor_id', Integer, ForeignKey('sm_flavors.id'),

               nullable=False),

        Column('sr_uuid', String(length=255)),

        Column('sr_type', String(length=255)),

        Column('config_params', String(length=2047)),

        mysql_engine='InnoDB'

    )

    sm_volume = Table(

        'sm_volume', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', String(length=36),

               ForeignKey('volumes.id'),

               primary_key=True,

               nullable=False),

        Column('backend_id', Integer, ForeignKey('sm_backend_config.id'),

               nullable=False),

        Column('vdi_uuid', String(length=255)),

        mysql_engine='InnoDB'

    )

    snapshots = Table(

        'snapshots', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', String(length=36), primary_key=True, nullable=False),

        Column('volume_id', String(length=36), nullable=False),

        Column('user_id', String(length=255)),

        Column('project_id', String(length=255)),

        Column('status', String(length=255)),

        Column('progress', String(length=255)),

        Column('volume_size', Integer),

        Column('scheduled_at', DateTime),

        Column('display_name', String(length=255)),

        Column('display_description', String(length=255)),

        mysql_engine='InnoDB'

    )

    volume_types = Table(

        'volume_types', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', Integer, primary_key=True, nullable=False),

        Column('name', String(length=255)),

        mysql_engine='InnoDB'

    )

    volume_metadata = Table(

        'volume_metadata', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', Integer, primary_key=True, nullable=False),

        Column('volume_id', String(length=36), ForeignKey('volumes.id'),

               nullable=False),

        Column('key', String(length=255)),

        Column('value', String(length=255)),

        mysql_engine='InnoDB'

    )

    volume_type_extra_specs = Table(

        'volume_type_extra_specs', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', Integer, primary_key=True, nullable=False),

        Column('volume_type_id', Integer, ForeignKey('volume_types.id'),

               nullable=False),

        Column('key', String(length=255)),

        Column('value', String(length=255)),

        mysql_engine='InnoDB'

    )

    volumes = Table(

        'volumes', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', String(length=36), primary_key=True, nullable=False),

        Column('ec2_id', String(length=255)),

        Column('user_id', String(length=255)),

        Column('project_id', String(length=255)),

        Column('host', String(length=255)),

        Column('size', Integer),

        Column('availability_zone', String(length=255)),

        Column('instance_uuid', String(length=36)),

        Column('mountpoint', String(length=255)),

        Column('attach_time', String(length=255)),

        Column('status', String(length=255)),

        Column('attach_status', String(length=255)),

        Column('scheduled_at', DateTime),

        Column('launched_at', DateTime),

        Column('terminated_at', DateTime),

        Column('display_name', String(length=255)),

        Column('display_description', String(length=255)),

        Column('provider_location', String(length=256)),

        Column('provider_auth', String(length=256)),

        Column('snapshot_id', String(length=36)),

        Column('volume_type_id', Integer),

        mysql_engine='InnoDB'

    )

    quotas = Table(

        'quotas', meta,

        Column('id', Integer, primary_key=True, nullable=False),

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('project_id', String(length=255)),

        Column('resource', String(length=255), nullable=False),

        Column('hard_limit', Integer),

        mysql_engine='InnoDB'

    )

    iscsi_targets = Table(

        'iscsi_targets', meta,

        Column('created_at', DateTime),

        Column('updated_at', DateTime),

        Column('deleted_at', DateTime),

        Column('deleted', Boolean),

        Column('id', Integer, primary_key=True, nullable=False),

        Column('target_num', Integer),

        Column('host', String(length=255)),

        Column('volume_id', String(length=36), ForeignKey('volumes.id'),

               nullable=True),

        mysql_engine='InnoDB'

    )

    # create all tables

    # Take care on create order for those with FK dependencies

    tables = [sm_flavors,

              sm_backend_config,

              snapshots,

              volume_types,

              volumes,

              iscsi_targets,

              migrations,

              quotas,

              services,

              sm_volume,

              volume_metadata,

              volume_type_extra_specs]

    for table in tables:

        try:

            table.create()

        except Exception:

            LOG.info(repr(table))

            LOG.exception(_('Exception while creating table.'))

            raise

    if migrate_engine.name == "mysql":

        tables = ["sm_flavors",

                  "sm_backend_config",

                  "snapshots",

                  "volume_types",

                  "volumes",

                  "iscsi_targets",

                  "migrate_version",

                  "migrations",

                  "quotas",

                  "services",

                  "sm_volume",

                  "volume_metadata",

                  "volume_type_extra_specs"]

        sql = "SET foreign_key_checks = 0;"

        for table in tables:

            sql += "ALTER TABLE %s CONVERT TO CHARACTER SET utf8;" % table

        sql += "SET foreign_key_checks = 1;"

        sql += "ALTER DATABASE %s DEFAULT CHARACTER SET utf8;" \

            % migrate_engine.url.database

        sql += "ALTER TABLE %s Engine=InnoDB;" % table

        migrate_engine.execute(sql)

**** CubicPower OpenStack Study ****

def downgrade(migrate_engine):

    LOG.exception(_('Downgrade from initial Cinder install is unsupported.'))