¡@

Home 

OpenStack Study: migration.py

OpenStack Index

**** CubicPower OpenStack Study ****

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)

**** CubicPower OpenStack Study ****

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."))

**** CubicPower OpenStack Study ****

def db_initial_version():

    return INIT_VERSION

**** CubicPower OpenStack Study ****

def db_version_control(version=None):

    repository = _find_migrate_repo()

    versioning_api.version_control(session.get_engine(), repository, version)

    return version

**** CubicPower OpenStack Study ****

def _find_migrate_repo():

    """Get the path for the migrate repository."""

    global _REPOSITORY

    path = os.path.join(os.path.abspath(os.path.dirname(__file__)),

                        'migrate_repo')

    assert os.path.exists(path)

    if _REPOSITORY is None:

        _REPOSITORY = Repository(path)

    return _REPOSITORY