Simplify beta lists and combine server test details
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import type { StatusTone } from './status.js';
|
||||
|
||||
export interface BetaDeploymentServer {
|
||||
server: string; server_deleted_at?: string | null; stage: string; error: string | null;
|
||||
deployed_at: string | null; restarted_at: string | null; healthy_at: string | null;
|
||||
match_seen_at: string | null; provisioning_id: string | null;
|
||||
}
|
||||
|
||||
export function betaStatus(beta: { state: string; testOutcome?: string | null;
|
||||
servers: { stage: string; server_deleted_at?: string | null }[] }): {
|
||||
key: string; label: string; tone: StatusTone;
|
||||
} {
|
||||
if (beta.state === 'promoted') return { key: 'promoted', label: 'Promoted', tone: 'online' };
|
||||
if (beta.state === 'rolled-back') return { key: 'rolled-back', label: 'Rolled back', tone: 'neutral' };
|
||||
if (beta.servers.some(server => server.server_deleted_at || server.stage === 'failed') || ['failed', 'inconclusive'].includes(beta.testOutcome ?? '')) {
|
||||
return { key: 'attention', label: 'Needs attention', tone: beta.testOutcome === 'failed' || beta.servers.some(server => server.stage === 'failed') ? 'danger' : 'warning' };
|
||||
}
|
||||
if (beta.testOutcome === 'paused') return { key: 'paused', label: 'Paused', tone: 'warning' };
|
||||
if (beta.state === 'ready-promote') return { key: 'ready', label: 'Ready to promote', tone: 'online' };
|
||||
return { key: 'testing', label: 'Testing', tone: 'info' };
|
||||
}
|
||||
Reference in New Issue
Block a user