import { AnimatePresence, motion } from 'framer-motion' import { ReactNode } from 'react' import { UseFormReturn } from 'react-hook-form' import { COMPUTE_BASELINE_IOPS, COMPUTE_MAX_IOPS } from 'shared-data' import { Admonition } from 'ui-patterns/admonition' import { DiskStorageSchemaType } from '../DiskManagement.schema' import { calculateComputeSizeRequiredForIops, calculateMaxIopsForComputeSize, mapAddOnVariantIdToComputeSize, } from '../DiskManagement.utils' import { RESTRICTED_COMPUTE_FOR_IOPS_ON_GP3 } from './DiskManagement.constants' interface ComputeSizeRecommendationSectionProps { actions?: ReactNode form: UseFormReturn } export function ComputeSizeRecommendationSection({ actions, form, }: ComputeSizeRecommendationSectionProps) { const { watch } = form const computeSize = watch('computeSize') const iops = watch('provisionedIOPS') const computeSizeRecommendedForIops = calculateComputeSizeRequiredForIops(iops) const maxIopsForComputeSize = calculateMaxIopsForComputeSize(computeSize ?? 'ci_micro') const isVisible = iops > maxIopsForComputeSize && !RESTRICTED_COMPUTE_FOR_IOPS_ON_GP3.includes(computeSize ?? 'ci_micro') return ( {isVisible && (

To achieve higher IOPS performance we recommend using the{' '} {mapAddOnVariantIdToComputeSize(computeSizeRecommendedForIops)} {' '} compute size.

{actions &&
{actions}
}
)}
) }