示例#1
0
def db_sync(version=None):
    if version is not None:
        try:
            version = int(version)
        except ValueError:
            raise exception.NovaException(_("version should be an integer"))

    current_version = db_version()
    repository = _find_migrate_repo()
    if version is None or version > current_version:
        return versioning_api.upgrade(session.get_engine(), repository, version)
    else:
        return versioning_api.downgrade(session.get_engine(), repository, version)
示例#2
0
def db_sync(version=None):
    if version is not None:
        try:
            version = int(version)
        except ValueError:
            raise exception.NovaException(_("version should be an integer"))

    current_version = db_version()
    repository = _find_migrate_repo()
    if version is None or version > current_version:
        return versioning_api.upgrade(get_engine(), repository, version)
    else:
        return versioning_api.downgrade(get_engine(), repository, version)
示例#3
0
def db_version():
    repository = _find_migrate_repo()
    try:
        return versioning_api.db_version(session.get_engine(), repository)
    except versioning_exceptions.DatabaseNotControlledError:
        meta = sqlalchemy.MetaData()
        engine = session.get_engine()
        meta.reflect(bind=engine)
        tables = meta.tables
        if len(tables) == 0:
            db_version_control(INIT_VERSION)
            return versioning_api.db_version(session.get_engine(), repository)
        else:
            # Some pre-Essex DB's may not be version controlled.
            # Require them to upgrade using Essex first.
            raise exception.NovaException(_("Upgrade DB using Essex release first."))
示例#4
0
def db_version():
    repository = _find_migrate_repo()
    try:
        return versioning_api.db_version(session.get_engine(), repository)
    except versioning_exceptions.DatabaseNotControlledError:
        meta = sqlalchemy.MetaData()
        engine = session.get_engine()
        meta.reflect(bind=engine)
        tables = meta.tables
        if len(tables) == 0:
            db_version_control(INIT_VERSION)
            return versioning_api.db_version(session.get_engine(), repository)
        else:
            # Some pre-Essex DB's may not be version controlled.
            # Require them to upgrade using Essex first.
            raise exception.NovaException(
                _("Upgrade DB using Essex release first."))
示例#5
0
def _reset_bmdb():
    global _DB
    engine = bm_session.get_engine()
    engine.dispose()
    conn = engine.connect()
    if _DB is None:
        if bm_migration.db_version() > bm_migration.INIT_VERSION:
            return
        bm_migration.db_sync()
        _DB = "".join(line for line in conn.connection.iterdump())
    else:
        conn.connection.executescript(_DB)
示例#6
0
文件: base.py 项目: EE-NovRain/nova
def _reset_bmdb():
    global _DB
    engine = bm_session.get_engine()
    engine.dispose()
    conn = engine.connect()
    if _DB is None:
        if bm_migration.db_version() > bm_migration.INIT_VERSION:
            return
        bm_migration.db_sync()
        _DB = "".join(line for line in conn.connection.iterdump())
    else:
        conn.connection.executescript(_DB)
示例#7
0
def db_version_control(version=None):
    repository = _find_migrate_repo()
    versioning_api.version_control(get_engine(), repository, version)
    return version
示例#8
0
def register_models():
    engine = session.get_engine()
    BASE.metadata.create_all(engine)
示例#9
0
def unregister_models():
    engine = session.get_engine()
    BASE.metadata.drop_all(engine)
示例#10
0
def db_version_control(version=None):
    repository = _find_migrate_repo()
    versioning_api.version_control(session.get_engine(), repository, version)
    return version
示例#11
0
def unregister_models():
    engine = session.get_engine()
    BASE.metadata.drop_all(engine)
示例#12
0
def register_models():
    engine = session.get_engine()
    BASE.metadata.create_all(engine)