arcadiasuite/server/bi/metaset/init.sh

122 lines
3.7 KiB
Bash

#!/bin/bash
# MetaSet BI - Initialization Script
# Arcádia Suite
set -e
echo "========================================="
echo "MetaSet BI - Starting up..."
echo "========================================="
# Environment variables with defaults
METASET_PORT="${METASET_PORT:-8100}"
DATABASE_URL="${DATABASE_URL:-postgresql://arcadia:arcadia123@db:5432/metaset_db}"
ARCADIA_DATABASE_URL="${ARCADIA_DATABASE_URL:-postgresql://arcadia:arcadia123@db:5432/arcadia}"
METASET_ADMIN_USER="${METASET_ADMIN_USER:-admin}"
METASET_ADMIN_EMAIL="${METASET_ADMIN_EMAIL:-admin@arcadia.app}"
METASET_ADMIN_PASSWORD="${METASET_ADMIN_PASSWORD:-metaset2026}"
REDIS_URL="${REDIS_URL:-redis://redis:6379/1}"
echo "[MetaSet] Configuration:"
echo " Port: $METASET_PORT"
echo " Database: ${DATABASE_URL//@*/@*****/}"
echo " Redis: ${REDIS_URL//@*/@*****/}"
# =============================================================================
# WAIT FOR DEPENDENCIES
# =============================================================================
echo "[MetaSet] Waiting for PostgreSQL..."
until python3 -c "
import psycopg2
import sys
try:
conn = psycopg2.connect('$DATABASE_URL')
conn.close()
except Exception as e:
print(f'Error: {e}')
sys.exit(1)
" 2>/dev/null; do
echo "[MetaSet] PostgreSQL not ready, retrying in 2s..."
sleep 2
done
echo "[MetaSet] PostgreSQL is ready!"
echo "[MetaSet] Waiting for Redis..."
until python3 -c "
import redis
import sys
try:
r = redis.from_url('$REDIS_URL')
r.ping()
except Exception as e:
print(f'Error: {e}')
sys.exit(1)
" 2>/dev/null; do
echo "[MetaSet] Redis not ready, retrying in 2s..."
sleep 2
done
echo "[MetaSet] Redis is ready!"
# =============================================================================
# DATABASE MIGRATIONS
# =============================================================================
echo "[MetaSet] Running database migrations..."
# TODO: Run Superset migrations
# superset db upgrade
echo "[MetaSet] Initializing roles and permissions..."
# TODO: Run Superset init
# superset init
# =============================================================================
# CREATE ADMIN USER
# =============================================================================
echo "[MetaSet] Creating admin user..."
python3 << PYEOF
import sys
sys.path.insert(0, '/app')
try:
# TODO: Create admin user in Superset
print(f"[MetaSet] Admin user: $METASET_ADMIN_USER")
print(f"[MetaSet] Admin email: $METASET_ADMIN_EMAIL")
print("[MetaSet] Admin creation skipped (Superset integration pending)")
except Exception as e:
print(f"[MetaSet] Warning creating admin: {e}")
sys.exit(0)
PYEOF
# =============================================================================
# REGISTER ARCÁDIA DATABASE
# =============================================================================
echo "[MetaSet] Registering Arcádia database connection..."
python3 << PYEOF
import sys
sys.path.insert(0, '/app')
try:
# TODO: Register Arcádia database in Superset
print(f"[MetaSet] Arcádia DB: ${ARCADIA_DATABASE_URL//@*/@*****/}")
print("[MetaSet] Database registration skipped (Superset integration pending)")
except Exception as e:
print(f"[MetaSet] Warning registering database: {e}")
sys.exit(0)
PYEOF
# =============================================================================
# START SERVER
# =============================================================================
echo "========================================="
echo "MetaSet BI - Starting server on port $METASET_PORT"
echo "========================================="
# Start MetaSet server (Apache Superset via Gunicorn)
exec python run.py --host 0.0.0.0 --port "$METASET_PORT" --workers 2