UNPKG

@kinvolk/headlamp-plugin

Version:

The needed infrastructure for building Headlamp plugins.

60 lines (51 loc) 1.4 kB
/** * Shared workload types used by the Kubeflow overview components. */ export interface OverviewWorkloadCondition { type?: string; status?: string; } /** * Minimal workload shape needed to render the overview tables. */ export interface OverviewWorkloadResource { metadata?: { name?: string; namespace?: string; }; status?: { conditions?: OverviewWorkloadCondition[]; phase?: string; }; } /** * Returns a human-readable workload status for the overview dashboard. */ export function getStatus(resource: OverviewWorkloadResource): string { const conditions = resource.status?.conditions ?? []; if (conditions.length === 0 && !resource.status?.phase) { return 'Unknown'; } const failedCondition = conditions.find(condition => { return condition.type === 'Failed' && condition.status === 'True'; }); if (failedCondition) { return 'Failed'; } const runningCondition = conditions.find(condition => { return ( (condition.type === 'Running' || condition.type === 'Ready') && condition.status === 'True' ); }); if (runningCondition) { return 'Running'; } if (resource.status?.phase) { return resource.status.phase; } const latestCondition = conditions[conditions.length - 1]; if (latestCondition?.status === 'True' && latestCondition.type) { return latestCondition.type; } return 'Pending'; }