export function useInstanceGroups()

in frontend/src/old-pages/Configure/Components.tsx [131:173]


export function useInstanceGroups(): Record<string, InstanceGroup> {
  const {t} = useTranslation()
  const instanceTypes = useState(['aws', 'instanceTypes']) || []

  let groups: {[key: string]: InstanceGroup} = {}

  for (let instance of instanceTypes) {
    let group = 'General Purpose'
    if (instance.InstanceType.startsWith('c6g')) {
      group = 'Graviton'
    } else if (instance.InstanceType.startsWith('c')) {
      group = 'Compute'
    } else if (instance.InstanceType.startsWith('hpc')) {
      group = 'HPC'
    } else if (instance.InstanceType.startsWith('m')) {
      group = 'Mixed'
    } else if (instance.InstanceType.startsWith('r')) {
      group = 'High Memory'
    } else if (
      instance.InstanceType.startsWith('p') ||
      instance.InstanceType.startsWith('g')
    ) {
      group = 'GPU'
    }

    if (!(group in groups)) groups[group] = []

    let tags = [
      t('wizard.components.instanceSelect.instanceType.vCpus', {
        vCpus: instance.VCpuInfo.DefaultVCpus,
      }),
      t('wizard.components.instanceSelect.instanceType.memory', {
        memory: instance.MemoryInfo.SizeInMiB / 1024,
      }),
    ]

    if (Object.keys(instance.GpuInfo).length > 0)
      tags.push(`${instance.GpuInfo.Count} x ${instance.GpuInfo.Name}`)

    groups[group].push({type: instance.InstanceType, tags: tags})
  }
  return groups
}