import { get } from 'lodash'; import React from 'react'; export interface IManifestResources { cpu?: string; memory?: string; } // TODO(dpeach) https://github.com/spinnaker/spinnaker/issues/3239 export interface IManifestResourceProps { manifest?: { spec?: { containers?: [ { name?: string; resources?: { limits?: IManifestResources; requests?: IManifestResources; }; }, ]; }; status?: { qosClass?: string; }; }; metrics?: [ { containerName?: string; metrics?: IPodMetricsMap; }, ]; } export interface IPodMetricsMap { [key: string]: string; } export class ManifestResources extends React.Component { public render() { const containers = get(this.props, ['manifest', 'spec', 'containers'], []); const metrics = get(this.props, ['metrics'], []); if (!metrics) { return
No metrics reported.
; } const containerToMetricMap = metrics.reduce((acc, val) => { acc[val.containerName] = { metrics: val.metrics }; return acc; }, {}); return (
{containers.map((c, i) => (
Resource usage for {c.name}
CPU
{get(containerToMetricMap, [c.name, 'metrics', 'CPU(cores)'], 'Unknown')}
MEMORY
{get(containerToMetricMap, [c.name, 'metrics', 'MEMORY(bytes)'], 'Unknown')}
{i < containers.length - 1 ?
: ''}
))}
); } }