import { round } from 'lodash'; import { AlertTriangle } from 'lucide-react'; import { FormSectionTitle } from '@/react/components/form-components/FormSectionTitle'; import { TextTip } from '@/react/components/Tip/TextTip'; import { ResourceUsageItem } from '@/react/kubernetes/components/ResourceUsageItem'; import { getPercentageString, getSafeValue } from '@/react/kubernetes/utils'; import { Icon } from '@@/Icon'; interface ResourceMetrics { cpu: number; memory: number; } interface Props { displayResourceUsage: boolean; resourceReservation: ResourceMetrics; resourceUsage: ResourceMetrics; cpuLimit: number; memoryLimit: number; description: string; isLoading?: boolean; title?: string; displayWarning?: boolean; warningMessage?: string; } export function ResourceReservation({ displayResourceUsage, resourceReservation, resourceUsage, cpuLimit, memoryLimit, description, title = 'Resource reservation', isLoading = false, displayWarning = false, warningMessage = '', }: Props) { const memoryReservationAnnotation = `${getSafeValue( resourceReservation.memory )} / ${memoryLimit} MB ${getPercentageString( resourceReservation.memory, memoryLimit )}`; const memoryUsageAnnotation = `${getSafeValue( resourceUsage.memory )} / ${memoryLimit} MB ${getPercentageString( resourceUsage.memory, memoryLimit )}`; const cpuReservationAnnotation = `${round( getSafeValue(resourceReservation.cpu), 2 )} / ${round(getSafeValue(cpuLimit), 2)} ${getPercentageString( resourceReservation.cpu, cpuLimit )}`; const cpuUsageAnnotation = `${round( getSafeValue(resourceUsage.cpu), 2 )} / ${round(getSafeValue(cpuLimit), 2)} ${getPercentageString( resourceUsage.cpu, cpuLimit )}`; return ( <> {title} {description}
{memoryLimit > 0 && ( )} {displayResourceUsage && memoryLimit > 0 && ( )} {cpuLimit > 0 && ( )} {displayResourceUsage && cpuLimit > 0 && ( )} {displayWarning && (
{warningMessage}
)}
); }