Beispiel #1
0
def init_data() -> None:
    logger.info("Creating initial data")
    db_session = create_session()
    try:
        init_db(db_session)
    finally:
        close_session(db_session)
    logger.info("Initial data created")
Beispiel #2
0
def init_data(from_scratch: bool = False) -> None:
    logger.info("Creating initial data")

    # run migrations on existing DB or create it with alembic
    dir_path = pathlib.Path(os.path.dirname(os.path.realpath(__file__)))
    alembic_config_path = dir_path / "alembic.ini"

    alembic_util = AlembicUtil(alembic_config_path)
    alembic_util.init_alembic(from_scratch=from_scratch)

    db_session = create_session()
    try:
        init_db(db_session)
    finally:
        close_session(db_session)
    logger.info("Initial data created")
Beispiel #3
0
def init_data(from_scratch: bool = False) -> None:
    logger.info("Creating initial data")

    # run schema migrations on existing DB or create it with alembic
    dir_path = pathlib.Path(os.path.dirname(os.path.realpath(__file__)))
    alembic_config_path = dir_path / "alembic.ini"

    alembic_util = AlembicUtil(alembic_config_path)
    alembic_util.init_alembic(from_scratch=from_scratch)

    db_session = create_session()
    try:
        init_db(db_session)
        _perform_data_migrations(
            db_session, mlrun.mlconf.httpdb.projects.iguazio_access_key)
    finally:
        close_session(db_session)
    logger.info("Initial data created")
Beispiel #4
0
def init_data(from_scratch: bool = False,
              perform_migrations_if_needed: bool = False) -> None:
    MySQLUtil.wait_for_db_liveness(logger)

    sqlite_migration_util = None
    if not from_scratch and config.httpdb.db.database_migration_mode == "enabled":
        sqlite_migration_util = SQLiteMigrationUtil()
    alembic_util = _create_alembic_util()
    is_migration_needed = _is_migration_needed(alembic_util,
                                               sqlite_migration_util)
    if not from_scratch and not perform_migrations_if_needed and is_migration_needed:
        state = mlrun.api.schemas.APIStates.waiting_for_migrations
        logger.info("Migration is needed, changing API state", state=state)
        config.httpdb.state = state
        return

    logger.info("Creating initial data")
    config.httpdb.state = mlrun.api.schemas.APIStates.migrations_in_progress

    try:
        _perform_schema_migrations(alembic_util)

        _perform_database_migration(sqlite_migration_util)

        db_session = create_session()
        try:
            init_db(db_session)
            _add_initial_data(db_session)
            _perform_data_migrations(db_session)
        finally:
            close_session(db_session)
    except Exception:
        state = mlrun.api.schemas.APIStates.migrations_failed
        logger.warning("Migrations failed, changing API state", state=state)
        config.httpdb.state = state
        raise
    # if the above process actually ran a migration - initializations that were skipped on the API initialization
    # should happen - we can't do it here because it requires an asyncio loop which can't be accessible here
    # therefore moving to migration_completed state, and other component will take care of moving to online
    if is_migration_needed:
        config.httpdb.state = mlrun.api.schemas.APIStates.migrations_completed
    else:
        config.httpdb.state = mlrun.api.schemas.APIStates.online
    logger.info("Initial data created")