Defer promotion snapshots to campaign activation
This commit is contained in:
@@ -29,12 +29,19 @@ export function betaFlow(beta: { state: string; wait_for_health: number; wait_fo
|
||||
: 'pending' }));
|
||||
}
|
||||
|
||||
export function campaignFlow(servers: { restart_state: string; restarted_at: string | null; files_changed: number }[], finished: boolean): OperationStep[] {
|
||||
export function campaignFlow(servers: { server?: string; restart_state: string; restarted_at: string | null; files_changed: number }[], finished: boolean,
|
||||
files: { server: string; snapshot_pending: number; apply_state: string }[] = []): OperationStep[] {
|
||||
const active = servers.filter(s => !['skipped', 'cancelled'].includes(s.restart_state));
|
||||
const positions = active.map(s => s.restart_state === 'done' ? 4
|
||||
: s.restarted_at ? 3 : 0);
|
||||
const current = positions.length ? Math.min(...positions) : finished ? 4 : 0;
|
||||
return ['Wait for empty servers and restart capacity', 'Apply file changes', 'Restart servers', 'Verify health'].map((label, i) => ({
|
||||
const positions = active.map(s => {
|
||||
if (s.restart_state === 'done') return 5;
|
||||
if (s.restarted_at) return 4;
|
||||
const changes = files.filter(f => f.server === s.server && f.apply_state !== 'cancelled');
|
||||
if (changes.some(f => f.apply_state === 'applying')) return changes.some(f => f.snapshot_pending) ? 1 : 2;
|
||||
if (changes.length && changes.every(f => f.apply_state === 'applied')) return 3;
|
||||
return 0;
|
||||
});
|
||||
const current = positions.length ? Math.min(...positions) : finished ? 5 : 0;
|
||||
return ['Wait for empty servers and restart capacity', 'Capture rollback snapshots', 'Apply file changes', 'Restart servers', 'Verify health'].map((label, i) => ({
|
||||
label, state: i < current ? 'done' : i !== current ? 'pending'
|
||||
: active.some((s, j) => s.restart_state === 'failed' && positions[j] === i) ? 'failed'
|
||||
: active.some(s => ['manual', 'held'].includes(s.restart_state)) ? 'pending' : 'current'
|
||||
|
||||
Reference in New Issue
Block a user