Beispiel #1
0
 def test_extension_downgraded(self):
     """When get the version after downgrading an extension, it is 0."""
     for name, extension in six.iteritems(EXTENSIONS):
         abs_path = migration_helpers.find_migrate_repo(extension)
         migration.db_version_control(sql.get_engine(), abs_path)
         migration.db_sync(sql.get_engine(), abs_path)
         version = migration_helpers.get_db_version(extension=name)
         self.assertTrue(
             version > 0,
             "Version for %s didn't change after migrated?" % name)
         migration.db_sync(sql.get_engine(), abs_path, version=0)
         version = migration_helpers.get_db_version(extension=name)
         self.assertEqual(0, version,
                          'Migrate version for %s is not 0' % name)
def upgrade(migrate_engine):
    try:
        extension_version = migration_helpers.get_db_version(
            extension='endpoint_policy',
            engine=migrate_engine)
    except Exception:
        extension_version = 0

    # This migration corresponds to endpoint_policy extension migration 1. Only
    # update if it has not been run.
    if extension_version >= 1:
        return

    # Upgrade operations go here. Don't create your own engine; bind
    # migrate_engine to your metadata
    meta = sql.MetaData()
    meta.bind = migrate_engine

    endpoint_policy_table = sql.Table(
        'policy_association',
        meta,
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('policy_id', sql.String(64),
                   nullable=False),
        sql.Column('endpoint_id', sql.String(64),
                   nullable=True),
        sql.Column('service_id', sql.String(64),
                   nullable=True),
        sql.Column('region_id', sql.String(64),
                   nullable=True),
        sql.UniqueConstraint('endpoint_id', 'service_id', 'region_id'),
        mysql_engine='InnoDB',
        mysql_charset='utf8')

    endpoint_policy_table.create(migrate_engine, checkfirst=True)
 def test_extension_initial(self):
     """When get the initial version of an extension, it's 0."""
     for name, extension in six.iteritems(EXTENSIONS):
         abs_path = migration_helpers.find_migrate_repo(extension)
         migration.db_version_control(sql.get_engine(), abs_path)
         version = migration_helpers.get_db_version(extension=name)
         self.assertEqual(0, version, "Migrate version for %s is not 0" % name)
Beispiel #4
0
 def test_extension_initial(self):
     """When get the initial version of an extension, it's 0."""
     for name, extension in six.iteritems(EXTENSIONS):
         abs_path = migration_helpers.find_migrate_repo(extension)
         migration.db_version_control(sql.get_engine(), abs_path)
         version = migration_helpers.get_db_version(extension=name)
         self.assertEqual(0, version,
                          'Migrate version for %s is not 0' % name)
Beispiel #5
0
def upgrade(migrate_engine):
    try:
        extension_version = migration_helpers.get_db_version(
            extension='oauth1', engine=migrate_engine)
    except Exception:
        extension_version = 0

    # This migration corresponds to oauth extension migration 5. Only
    # update if it has not been run.
    if extension_version >= 5:
        return

    # Upgrade operations go here. Don't create your own engine; bind
    # migrate_engine to your metadata
    meta = sql.MetaData()
    meta.bind = migrate_engine

    consumer_table = sql.Table(
        'consumer', meta,
        sql.Column('id', sql.String(64), primary_key=True, nullable=False),
        sql.Column('description', sql.String(64), nullable=True),
        sql.Column('secret', sql.String(64), nullable=False),
        sql.Column('extra', sql.Text(), nullable=False))
    consumer_table.create(migrate_engine, checkfirst=True)

    request_token_table = sql.Table(
        'request_token', meta,
        sql.Column('id', sql.String(64), primary_key=True, nullable=False),
        sql.Column('request_secret', sql.String(64), nullable=False),
        sql.Column('verifier', sql.String(64), nullable=True),
        sql.Column('authorizing_user_id', sql.String(64), nullable=True),
        sql.Column('requested_project_id', sql.String(64), nullable=False),
        sql.Column('role_ids', sql.Text(), nullable=True),
        sql.Column('consumer_id',
                   sql.String(64),
                   sql.ForeignKey('consumer.id'),
                   nullable=False,
                   index=True),
        sql.Column('expires_at', sql.String(64), nullable=True))
    request_token_table.create(migrate_engine, checkfirst=True)

    access_token_table = sql.Table(
        'access_token', meta,
        sql.Column('id', sql.String(64), primary_key=True, nullable=False),
        sql.Column('access_secret', sql.String(64), nullable=False),
        sql.Column('authorizing_user_id',
                   sql.String(64),
                   nullable=False,
                   index=True),
        sql.Column('project_id', sql.String(64), nullable=False),
        sql.Column('role_ids', sql.Text(), nullable=False),
        sql.Column('consumer_id',
                   sql.String(64),
                   sql.ForeignKey('consumer.id'),
                   nullable=False,
                   index=True),
        sql.Column('expires_at', sql.String(64), nullable=True))
    access_token_table.create(migrate_engine, checkfirst=True)
def upgrade(migrate_engine):
    try:
        extension_version = migration_helpers.get_db_version(
            extension='oauth1',
            engine=migrate_engine)
    except Exception:
        extension_version = 0

    # This migration corresponds to oauth extension migration 5. Only
    # update if it has not been run.
    if extension_version >= 5:
        return

    # Upgrade operations go here. Don't create your own engine; bind
    # migrate_engine to your metadata
    meta = sql.MetaData()
    meta.bind = migrate_engine

    consumer_table = sql.Table(
        'consumer',
        meta,
        sql.Column('id', sql.String(64), primary_key=True, nullable=False),
        sql.Column('description', sql.String(64), nullable=True),
        sql.Column('secret', sql.String(64), nullable=False),
        sql.Column('extra', sql.Text(), nullable=False))
    consumer_table.create(migrate_engine, checkfirst=True)

    request_token_table = sql.Table(
        'request_token',
        meta,
        sql.Column('id', sql.String(64), primary_key=True, nullable=False),
        sql.Column('request_secret', sql.String(64), nullable=False),
        sql.Column('verifier', sql.String(64), nullable=True),
        sql.Column('authorizing_user_id', sql.String(64), nullable=True),
        sql.Column('requested_project_id', sql.String(64), nullable=False),
        sql.Column('role_ids', sql.Text(), nullable=True),
        sql.Column('consumer_id', sql.String(64),
                   sql.ForeignKey('consumer.id'),
                   nullable=False, index=True),
        sql.Column('expires_at', sql.String(64), nullable=True))
    request_token_table.create(migrate_engine, checkfirst=True)

    access_token_table = sql.Table(
        'access_token',
        meta,
        sql.Column('id', sql.String(64), primary_key=True, nullable=False),
        sql.Column('access_secret', sql.String(64), nullable=False),
        sql.Column('authorizing_user_id', sql.String(64),
                   nullable=False, index=True),
        sql.Column('project_id', sql.String(64), nullable=False),
        sql.Column('role_ids', sql.Text(), nullable=False),
        sql.Column('consumer_id', sql.String(64),
                   sql.ForeignKey('consumer.id'),
                   nullable=False, index=True),
        sql.Column('expires_at', sql.String(64), nullable=True))
    access_token_table.create(migrate_engine, checkfirst=True)
 def test_extension_migrated(self):
     """When get the version after migrating an extension, it's not 0."""
     for name, extension in six.iteritems(EXTENSIONS):
         abs_path = migration_helpers.find_migrate_repo(extension)
         migration.db_version_control(sql.get_engine(), abs_path)
         migration.db_sync(sql.get_engine(), abs_path)
         version = migration_helpers.get_db_version(extension=name)
         self.assertTrue(version > 0, "Version for %s didn't change after migrated?" % name)
         # Verify downgrades cannot occur
         self.assertRaises(
             db_exception.DbMigrationError, migration_helpers._sync_extension_repo, extension=name, version=0
         )
Beispiel #8
0
 def test_extension_migrated(self):
     """When get the version after migrating an extension, it's not 0."""
     for name, extension in EXTENSIONS.items():
         abs_path = migration_helpers.find_migrate_repo(extension)
         migration.db_version_control(sql.get_engine(), abs_path)
         migration.db_sync(sql.get_engine(), abs_path)
         version = migration_helpers.get_db_version(extension=name)
         self.assertTrue(
             version > 0,
             "Version for %s didn't change after migrated?" % name)
         # Verify downgrades cannot occur
         self.assertRaises(db_exception.DbMigrationError,
                           migration_helpers._sync_extension_repo,
                           extension=name,
                           version=0)
Beispiel #9
0
def upgrade(migrate_engine):
    try:
        extension_version = migration_helpers.get_db_version(
            extension='endpoint_policy', engine=migrate_engine)
    except Exception:
        extension_version = 0

    # This migration corresponds to endpoint_policy extension migration 1. Only
    # update if it has not been run.
    if extension_version >= 1:
        return

    # Upgrade operations go here. Don't create your own engine; bind
    # migrate_engine to your metadata
    meta = sql.MetaData()
    meta.bind = migrate_engine

    endpoint_policy_table = sql.Table('policy_association',
                                      meta,
                                      sql.Column('id',
                                                 sql.String(64),
                                                 primary_key=True),
                                      sql.Column('policy_id',
                                                 sql.String(64),
                                                 nullable=False),
                                      sql.Column('endpoint_id',
                                                 sql.String(64),
                                                 nullable=True),
                                      sql.Column('service_id',
                                                 sql.String(64),
                                                 nullable=True),
                                      sql.Column('region_id',
                                                 sql.String(64),
                                                 nullable=True),
                                      sql.UniqueConstraint(
                                          'endpoint_id', 'service_id',
                                          'region_id'),
                                      mysql_engine='InnoDB',
                                      mysql_charset='utf8')

    endpoint_policy_table.create(migrate_engine, checkfirst=True)
def will_db_change(conf):
    """ Check if the database version will change after the sync.

    conf is the path to the keystone config file

    """
    # Load the config file options
    try:
        # before icehouse
        sql.migration.CONF(project='keystone', default_config_files=[conf])
        current_version = sql.migration.db_version()
    except AttributeError:
        # starting with icehouse
        sql.core.CONF(project='keystone', default_config_files=[conf])
        current_version = migration.get_db_version()

    # in havana the method _find_migrate_repo has been renamed to find_migrate_repo
    try:
        repo_path = migration.find_migrate_repo()
    except AttributeError:
        repo_path = migration._find_migrate_repo()
    repo_version = versioning_api.repository.Repository(repo_path).latest
    return current_version != repo_version
Beispiel #11
0
def upgrade(migrate_engine):
    try:
        extension_version = migration_helpers.get_db_version(
            extension='revoke',
            engine=migrate_engine)
    except Exception:
        extension_version = 0

    # This migration corresponds to revoke extension migration 2. Only
    # update if it has not been run.
    if extension_version >= 2:
        return

    # Upgrade operations go here. Don't create your own engine; bind
    # migrate_engine to your metadata
    meta = sql.MetaData()
    meta.bind = migrate_engine

    service_table = sql.Table(
        'revocation_event',
        meta,
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('domain_id', sql.String(64)),
        sql.Column('project_id', sql.String(64)),
        sql.Column('user_id', sql.String(64)),
        sql.Column('role_id', sql.String(64)),
        sql.Column('trust_id', sql.String(64)),
        sql.Column('consumer_id', sql.String(64)),
        sql.Column('access_token_id', sql.String(64)),
        sql.Column('issued_before', sql.DateTime(), nullable=False),
        sql.Column('expires_at', sql.DateTime()),
        sql.Column('revoked_at', sql.DateTime(), index=True, nullable=False),
        sql.Column('audit_id', sql.String(32), nullable=True),
        sql.Column('audit_chain_id', sql.String(32), nullable=True))

    service_table.create(migrate_engine, checkfirst=True)
Beispiel #12
0
 def test_core_max(self):
     """When get the version after upgrading, it's the new version."""
     self.upgrade(self.max_version)
     version = migration_helpers.get_db_version()
     self.assertEqual(self.max_version, version)
Beispiel #13
0
 def test_core_initial(self):
     """Get the version before migrated, it's the initial DB version."""
     version = migration_helpers.get_db_version()
     self.assertEqual(migrate_repo.DB_INIT_VERSION, version)
def upgrade(migrate_engine):
    try:
        extension_version = migration_helpers.get_db_version(
            extension='federation',
            engine=migrate_engine)
    except Exception:
        extension_version = 0

    # This migration corresponds to federation extension migration 8. Only
    # update if it has not been run.
    if extension_version >= 8:
        return

    # Upgrade operations go here. Don't create your own engine; bind
    # migrate_engine to your metadata
    meta = sql.MetaData()
    meta.bind = migrate_engine

    idp_table = sql.Table(
        'identity_provider',
        meta,
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('enabled', sql.Boolean, nullable=False),
        sql.Column('description', sql.Text(), nullable=True),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    idp_table.create(migrate_engine, checkfirst=True)

    federation_protocol_table = sql.Table(
        'federation_protocol',
        meta,
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('idp_id', sql.String(64),
                   sql.ForeignKey('identity_provider.id', ondelete='CASCADE'),
                   primary_key=True),
        sql.Column('mapping_id', sql.String(64), nullable=False),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    federation_protocol_table.create(migrate_engine, checkfirst=True)

    mapping_table = sql.Table(
        'mapping',
        meta,
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('rules', sql.Text(), nullable=False),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    mapping_table.create(migrate_engine, checkfirst=True)

    relay_state_prefix_default = CONF.saml.relay_state_prefix
    sp_table = sql.Table(
        'service_provider',
        meta,
        sql.Column('auth_url', sql.String(256), nullable=False),
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('enabled', sql.Boolean, nullable=False),
        sql.Column('description', sql.Text(), nullable=True),
        sql.Column('sp_url', sql.String(256), nullable=False),
        sql.Column(_RELAY_STATE_PREFIX, sql.String(256), nullable=False,
                   server_default=relay_state_prefix_default),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    sp_table.create(migrate_engine, checkfirst=True)

    idp_table = sql.Table('identity_provider', meta, autoload=True)
    remote_id_table = sql.Table(
        'idp_remote_ids',
        meta,
        sql.Column('idp_id', sql.String(64),
                   sql.ForeignKey('identity_provider.id', ondelete='CASCADE')),
        sql.Column('remote_id', sql.String(255), primary_key=True),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    remote_id_table.create(migrate_engine, checkfirst=True)
Beispiel #15
0
 def test_core_initial(self):
     """Get the version before migrated, it's the initial DB version."""
     version = migration_helpers.get_db_version()
     self.assertEqual(self._initial_db_version, version)
Beispiel #16
0
 def test_core_initial(self):
     """Get the version before migrated, it's the initial DB version."""
     version = migration_helpers.get_db_version()
     self.assertEqual(migrate_repo.DB_INIT_VERSION, version)
def upgrade(migrate_engine):
    try:
        extension_version = migration_helpers.get_db_version(
            extension='federation',
            engine=migrate_engine)
    except Exception:
        extension_version = 0

    # This migration corresponds to federation extension migration 8. Only
    # update if it has not been run.
    if extension_version >= 8:
        return

    # Upgrade operations go here. Don't create your own engine; bind
    # migrate_engine to your metadata
    meta = sql.MetaData()
    meta.bind = migrate_engine

    idp_table = sql.Table(
        'identity_provider',
        meta,
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('enabled', sql.Boolean, nullable=False),
        sql.Column('description', sql.Text(), nullable=True),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    idp_table.create(migrate_engine, checkfirst=True)

    federation_protocol_table = sql.Table(
        'federation_protocol',
        meta,
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('idp_id', sql.String(64),
                   sql.ForeignKey('identity_provider.id', ondelete='CASCADE'),
                   primary_key=True),
        sql.Column('mapping_id', sql.String(64), nullable=False),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    federation_protocol_table.create(migrate_engine, checkfirst=True)

    mapping_table = sql.Table(
        'mapping',
        meta,
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('rules', sql.Text(), nullable=False),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    mapping_table.create(migrate_engine, checkfirst=True)

    relay_state_prefix_default = CONF.saml.relay_state_prefix
    sp_table = sql.Table(
        'service_provider',
        meta,
        sql.Column('auth_url', sql.String(256), nullable=False),
        sql.Column('id', sql.String(64), primary_key=True),
        sql.Column('enabled', sql.Boolean, nullable=False),
        sql.Column('description', sql.Text(), nullable=True),
        sql.Column('sp_url', sql.String(256), nullable=False),
        sql.Column(_RELAY_STATE_PREFIX, sql.String(256), nullable=False,
                   server_default=relay_state_prefix_default),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    sp_table.create(migrate_engine, checkfirst=True)

    idp_table = sql.Table('identity_provider', meta, autoload=True)
    remote_id_table = sql.Table(
        'idp_remote_ids',
        meta,
        sql.Column('idp_id', sql.String(64),
                   sql.ForeignKey('identity_provider.id', ondelete='CASCADE')),
        sql.Column('remote_id', sql.String(255), primary_key=True),
        mysql_engine='InnoDB',
        mysql_charset='utf8')
    remote_id_table.create(migrate_engine, checkfirst=True)
Beispiel #18
0
 def test_core_max(self):
     """When get the version after upgrading, it's the new version."""
     self.upgrade(self.max_version)
     version = migration_helpers.get_db_version()
     self.assertEqual(self.max_version, version)
Beispiel #19
0
 def test_core_initial(self):
     """Get the version before migrated, it's the initial DB version."""
     version = migration_helpers.get_db_version()
     self.assertEqual(self._initial_db_version, version)