#!/usr/bin/env bash # superset-init: migrate the metadata database, sync roles and permissions, and # register the connection to fuel-db. It is copied into the Superset image, so a # change here changes the image tag; deploy/deploy.sh runs it on a fresh install # and whenever that tag changes. Every step is idempotent. Unlike the # upstream docker-init.sh it never creates a local admin: users come from # Keycloak. set -euo pipefail superset db upgrade superset init # Trino was removed on 29 Oct 2026. An instance still holding its connection # "Fuel (Trino)" gets it renamed, so its datasets and dashboards keep their ids; # the next step points it at fuel-db. Drop this once no instance has it. /app/.venv/bin/python - <<'PY' from superset.app import create_app with create_app().app_context(): from superset import db from superset.models.core import Database old = db.session.query(Database).filter_by(database_name="Fuel (Trino)").one_or_none() if old and not db.session.query(Database).filter_by(database_name="Fuel").count(): old.database_name = "Fuel" db.session.commit() print('renamed the connection "Fuel (Trino)" to "Fuel"') PY # No password here: superset_config.py reads it from /run/secrets at connect time. superset set-database-uri \ --database_name "Fuel" \ --uri "postgresql+psycopg2://fuel_ro@fuel-db:5432/fuel"