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