chore: remove Airflow completely from the stack
Drop all four Airflow containers (db, init, webserver, scheduler) from the mlops compose profile, leaving MLflow as the sole mlops service. Remove AIRFLOW_* env vars, config fields, health-check entries, DAG trigger code in admin/bench routes, the airflow_dag_run_id schema column, Airflow nav links and DAG-run links in the admin UI, the two Airflow DAG files (bench_dag.py, sim_dag.py), and all related docs/ADR references. Simulations now run exclusively via the subprocess path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,16 +5,11 @@ import { AdminShell } from '@/components/AdminShell';
|
||||
import { getSimulationRuns, SimRun } from '@/lib/api';
|
||||
|
||||
const mlflowBase = process.env.NEXT_PUBLIC_MLFLOW_URL ?? '/mlflow';
|
||||
const airflowBase = process.env.NEXT_PUBLIC_AIRFLOW_URL ?? '/airflow';
|
||||
|
||||
function mlflowRunUrl(runId: string) {
|
||||
return `${mlflowBase}/#/experiments/1/runs/${runId}`;
|
||||
}
|
||||
|
||||
function airflowRunUrl(dagRunId: string) {
|
||||
return `${airflowBase}/dags/bandit_sim/grid?dag_run_id=${encodeURIComponent(dagRunId)}`;
|
||||
}
|
||||
|
||||
function StatusBadge({ status }: { status: string }) {
|
||||
const cls: Record<string, string> = {
|
||||
running: 'bg-blue-900 text-blue-300 border-blue-800',
|
||||
@@ -50,10 +45,6 @@ function SummaryRow({ run }: { run: SimRun }) {
|
||||
<a href={mlflowRunUrl(run.mlflowRunId)} target="_blank" rel="noreferrer"
|
||||
className="text-xs text-indigo-400 hover:underline">MLflow ↗</a>
|
||||
)}
|
||||
{run.airflowDagRunId && (
|
||||
<a href={airflowRunUrl(run.airflowDagRunId)} target="_blank" rel="noreferrer"
|
||||
className="text-xs text-indigo-400 hover:underline">Airflow ↗</a>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
{summary && (
|
||||
@@ -97,11 +88,7 @@ export default function SimulatePage() {
|
||||
<div>
|
||||
<h1 className="text-xl font-semibold">Simulations</h1>
|
||||
<p className="text-sm text-gray-500 mt-1">
|
||||
Offline policy comparisons — run via the{' '}
|
||||
<a href={airflowBase} target="_blank" rel="noreferrer" className="text-indigo-400 hover:underline">
|
||||
Airflow <code className="text-xs">bench_collect</code> DAG
|
||||
</a>
|
||||
{' '}(mlops profile). Results are logged to{' '}
|
||||
Offline policy comparisons — trigger via the admin API or CLI. Results are logged to{' '}
|
||||
<a href={mlflowBase} target="_blank" rel="noreferrer" className="text-indigo-400 hover:underline">MLflow ↗</a>.
|
||||
</p>
|
||||
</div>
|
||||
@@ -114,7 +101,7 @@ export default function SimulatePage() {
|
||||
{loading && <span className="text-gray-600 ml-2 normal-case">loading…</span>}
|
||||
</h2>
|
||||
{runs.length === 0 && !loading && (
|
||||
<p className="text-gray-600 text-sm">No simulation runs yet. Trigger a run from Airflow.</p>
|
||||
<p className="text-gray-600 text-sm">No simulation runs yet.</p>
|
||||
)}
|
||||
{runs.map((r) => <SummaryRow key={r.id} run={r} />)}
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user