Exemple #1
0
def upgrade(migrate_engine):
    meta = MetaData(bind=migrate_engine)

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

    name = Column('name', Unicode(200), nullable=True)
    generation = Column('generation', Integer, default=0)
    can_host = Column('can_host', Integer, default=0)

    if not hasattr(resource_providers.c, 'name'):
        # NOTE(cdent): The resource_providers table is defined as
        # latin1 to be more efficient. Now we need the name column
        # to be UTF8. First create the column, then modify it,
        # otherwise the declarative handling in sqlalchemy gets
        # confused.
        resource_providers.create_column(name)
        if migrate_engine.name == 'mysql':
            name_col_ddl = DDL("ALTER TABLE resource_providers MODIFY name "
                               "VARCHAR(200) CHARACTER SET utf8")
            conn = migrate_engine.connect()
            conn.execute(name_col_ddl)

        uc = UniqueConstraint('name',
                              table=resource_providers,
                              name='uniq_resource_providers0name')
        uc.create()

        # DB2 automatically creates an index for the unique
        # constraint above, so skip adding the index on DB2.
        if migrate_engine.name != 'ibm_db_sa':
            utils.add_index(migrate_engine, 'resource_providers',
                            'resource_providers_name_idx', ['name'])

    if not hasattr(resource_providers.c, 'generation'):
        resource_providers.create_column(generation)

    if not hasattr(resource_providers.c, 'can_host'):
        resource_providers.create_column(can_host)

    resource_provider_aggregates = Table('resource_provider_aggregates',
                                         meta,
                                         Column('resource_provider_id',
                                                Integer,
                                                primary_key=True,
                                                nullable=False),
                                         Column('aggregate_id',
                                                Integer,
                                                primary_key=True,
                                                nullable=False),
                                         mysql_engine='InnoDB',
                                         mysql_charset='latin1')
    Index('resource_provider_aggregates_aggregate_id_idx',
          resource_provider_aggregates.c.aggregate_id)
    resource_provider_aggregates.create(checkfirst=True)

    utils.add_index(migrate_engine, 'allocations',
                    'allocations_resource_provider_class_used_idx',
                    ['resource_provider_id', 'resource_class_id', 'used'])
    utils.drop_index(migrate_engine, 'allocations',
                     'allocations_resource_provider_class_id_idx')

    # Add a unique constraint so that any resource provider can have
    # only one inventory for any given resource class.
    inventories = Table('inventories', meta, autoload=True)
    inventories_uc = UniqueConstraint(
        'resource_provider_id',
        'resource_class_id',
        table=inventories,
        name='uniq_inventories0resource_provider_resource_class')
    inventories_uc.create()
    if migrate_engine.name != 'ibm_db_sa':
        utils.add_index(migrate_engine, 'inventories',
                        'inventories_resource_provider_resource_class_idx',
                        ['resource_provider_id', 'resource_class_id'])
def ensure_index_removed(migrate_engine, table_name, index_name):
    if utils.index_exists(migrate_engine, table_name, index_name):
        utils.drop_index(migrate_engine, table_name, index_name)
def ensure_index_removed(migrate_engine, table_name, index_name):
    if utils.index_exists(migrate_engine, table_name, index_name):
        utils.drop_index(migrate_engine, table_name, index_name)
 def test_drop_index(self):
     Index('new_index', self.test_table.c.a).create(self.engine)
     utils.drop_index(self.engine, 'test_table', 'new_index')
     self.assertFalse(utils.index_exists(self.engine, 'test_table',
                      'new_index'))
Exemple #5
0
 def test_drop_index(self):
     Index('new_index', self.test_table.c.a).create(self.engine)
     utils.drop_index(self.engine, 'test_table', 'new_index')
     self.assertFalse(utils.index_exists(self.engine, 'test_table',
                      'new_index'))
def upgrade(migrate_engine):
    meta = MetaData(bind=migrate_engine)

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

    name = Column('name', Unicode(200), nullable=True)
    generation = Column('generation', Integer, default=0)
    can_host = Column('can_host', Integer, default=0)

    if not hasattr(resource_providers.c, 'name'):
        # NOTE(cdent): The resource_providers table is defined as
        # latin1 to be more efficient. Now we need the name column
        # to be UTF8. First create the column, then modify it,
        # otherwise the declarative handling in sqlalchemy gets
        # confused.
        resource_providers.create_column(name)
        if migrate_engine.name == 'mysql':
            name_col_ddl = DDL(
                "ALTER TABLE resource_providers MODIFY name "
                "VARCHAR(200) CHARACTER SET utf8")
            conn = migrate_engine.connect()
            conn.execute(name_col_ddl)

        uc = UniqueConstraint('name', table=resource_providers,
                              name='uniq_resource_providers0name')
        uc.create()

        utils.add_index(migrate_engine, 'resource_providers',
                        'resource_providers_name_idx',
                        ['name'])

    if not hasattr(resource_providers.c, 'generation'):
        resource_providers.create_column(generation)

    if not hasattr(resource_providers.c, 'can_host'):
        resource_providers.create_column(can_host)

    resource_provider_aggregates = Table(
        'resource_provider_aggregates', meta,
        Column('resource_provider_id', Integer, primary_key=True,
               nullable=False),
        Column('aggregate_id', Integer, primary_key=True, nullable=False),
        mysql_engine='InnoDB',
        mysql_charset='latin1'
    )
    Index('resource_provider_aggregates_aggregate_id_idx',
          resource_provider_aggregates.c.aggregate_id)
    resource_provider_aggregates.create(checkfirst=True)

    utils.add_index(migrate_engine, 'allocations',
                    'allocations_resource_provider_class_used_idx',
                    ['resource_provider_id', 'resource_class_id',
                     'used'])
    utils.drop_index(migrate_engine, 'allocations',
                     'allocations_resource_provider_class_id_idx')

    # Add a unique constraint so that any resource provider can have
    # only one inventory for any given resource class.
    inventories = Table('inventories', meta, autoload=True)
    inventories_uc = UniqueConstraint(
        'resource_provider_id', 'resource_class_id', table=inventories,
        name='uniq_inventories0resource_provider_resource_class')
    inventories_uc.create()

    utils.add_index(migrate_engine, 'inventories',
                    'inventories_resource_provider_resource_class_idx',
                    ['resource_provider_id', 'resource_class_id'])