Пример #1
0
def db_goto_version(sql_connection, version):
    """
    Jump to a specific database version without performing migrations.

    :param sql_connection: sqlalchemy connection string
    :param version: version to jump to
    """

    # pylint: disable=W0613
    @versioning_api.with_engine
    def set_db_version(url, repository, old_v, new_v, **opts):
        engine = opts.pop('engine')
        schema = get_schema(engine, repo_path)
        schema.update_repository_table(old_v, new_v)
        return True

    repo_path = get_migrate_repo_path()
    new_version = int(version)
    try:
        old_version = versioning_api.db_version(sql_connection, repo_path)
        if new_version != old_version:
            return set_db_version(sql_connection, repo_path, old_version,
                new_version)
    except versioning_exceptions.DatabaseNotControlledError:
        msg = (_("database '%(sql_connection)s' is not under "
                 "migration control") % locals())
        raise fault.DatabaseMigrationError(msg)
Пример #2
0
def version_control(sql_connection):
    """
    Place a database under migration control

    :param sql_connection: sqlalchemy connection string
    """
    try:
        _version_control(sql_connection)
    except versioning_exceptions.DatabaseAlreadyControlledError:
        msg = (_("database '%(sql_connection)s' is already under migration "
               "control") % locals())
        raise fault.DatabaseMigrationError(msg)
Пример #3
0
def version_control(options):
    """
    Place a database under migration control

    :param options: options dict
    """
    sql_connection = options['sql_connection']
    try:
        _version_control(options)
    except versioning_exceptions.DatabaseAlreadyControlledError:
        msg = (_("database '%(sql_connection)s' is already under migration "
               "control") % locals())
        raise fault.DatabaseMigrationError(msg)
Пример #4
0
def db_version(sql_connection):
    """
    Return the database's current migration number

    :param sql_connection: sqlalchemy connection string
    :retval version number
    """
    repo_path = get_migrate_repo_path()
    try:
        return versioning_api.db_version(sql_connection, repo_path)
    except versioning_exceptions.DatabaseNotControlledError:
        msg = (_("database '%(sql_connection)s' is not under "
                 "migration control") % locals())
        raise fault.DatabaseMigrationError(msg)