import { get, isEmpty, sortBy } from 'lodash'; import React from 'react'; import type { IExecutionDetailsSectionProps, IJobOwnedPodStatus } from '@spinnaker/core'; import { AccountTag, DefaultPodNameProvider, ExecutionDetailsSection, JobStageExecutionLogs, StageFailureMessage, } from '@spinnaker/core'; export class RunJobExecutionDetails extends React.Component { public static title = 'runJobConfig'; private createdPodNames(podsStatuses: IJobOwnedPodStatus[]): string[] { const sorted = sortBy(podsStatuses, (p: IJobOwnedPodStatus) => p.status.startTime); return sorted.map((p: IJobOwnedPodStatus) => p.name); } public render() { const { stage, name, current } = this.props; const { context } = stage; const namespace = get(stage, ['context', 'jobStatus', 'location'], ''); const deployedName = namespace ? get(context, ['deploy.jobs', namespace])[0] : ''; const externalLink = get(stage, ['context', 'execution', 'logs']); const pods = get(stage.context, 'jobStatus.pods', []); const podNames = !isEmpty(pods) ? this.createdPodNames(pods) : [get(stage, ['context', 'jobStatus', 'mostRecentPodName'], '')]; const podNamesProviders = podNames.map((p) => new DefaultPodNameProvider(p)); return (
Account
{namespace && ( <>
Namespace
{stage.context.jobStatus.location}
Logs
)} {!namespace &&
Collecting additional details...
}
); } }