func getNearestFargateTaskSize()

in internal/pkg/deploy/cloudformation/stack/template_functions.go [135:151]


func getNearestFargateTaskSize(containers []v1alpha1.Container) (*fargateTaskSize, error) {
	containersCpuShare := float64(0)
	containersMemoryMiB := int64(0)

	for _, container := range containers {
		containersCpuShare += float64(container.Resources.Cpu.Required.MilliValue()) / float64(1000)
		containersMemoryMiB += container.Resources.Memory.Required.MilliValue() / int64(1000) / int64(1000000)
	}

	for _, taskSize := range getValidFargateTaskSizes() {
		if containersCpuShare <= taskSize.cpuShare && containersMemoryMiB <= taskSize.memoryMiB {
			return taskSize, nil
		}
	}

	return nil, fmt.Errorf("Could not find valid Fargate task size for the given CPU and memory requirements: %f CPU shares, %d MiB memory", containersCpuShare, containersMemoryMiB)
}