const config1 = [
    {
        cpuModel: "Intel Xeon E5-2676 v3 (Haswell)",
        tdp: 120,
        coreCount: 12,
        source: "https://www.techpowerup.com/cpu-specs/xeon-e5-2676-v3.c2885",
    },
    {
        cpuModel: "Intel Xeon E5-2686 v4 (Broadwell)",
        tdp: 145,
        coreCount: 18,
        source: "https://en.wikichip.org/wiki/intel/xeon_e5/e5-2686_v4",
    },
];

const config2 = [
    {
        cpuModel: "Intel Xeon 8259CL (Cascade Lake)",
        tdp: 210,
        coreCount: 24,
        source: "https://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+Platinum+8259CL+%40+2.50GHz&id=3671",
    },
    {
        cpuModel: "Intel Xeon Platinum 8175M",
        tdp: 240,
        coreCount: 24,
        source: "https://en.wikichip.org/wiki/intel/xeon_platinum/8175m",
    },
];

const config3 = [
    {
        cpuModel: "Intel Xeon E5-2670 v2 (Ivy Bridge/Sandy Bridge)",
        tdp: 115,
        coreCount: 10,
        source: "https://www.techpowerup.com/cpu-specs/xeon-e5-2670-v2.c1665",
    },
];

/**
  Data sourced from official AWS EC2 docs:

  1. General purpose instances {@link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/general-purpose-instances.html}
  2. All instance types {@link https://aws.amazon.com/ec2/instance-types/}
*/
export const ec2Instances = [
    {
        name: "t2.nano",
        mem: 0.5,
        price: 0.0067,
        priceUnit: "Hrs",
        vCpuCount: 1,
        cpu: config1,
    },
    {
        name: "t3.nano",
        mem: 0.5,
        price: 0.006,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config2,
    },
    {
        name: "t2.micro",
        mem: 1,
        price: 0.0134,
        priceUnit: "Hrs",
        vCpuCount: 1,
        cpu: config1,
    },
    {
        name: "t3.micro",
        mem: 1,
        price: 0.012,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config2,
    },
    {
        name: "t2.small",
        mem: 2,
        price: 0.0268,
        priceUnit: "Hrs",
        vCpuCount: 1,
        cpu: config1,
    },
    {
        name: "t3.small",
        mem: 2,
        price: 0.024,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config2,
    },
    {
        name: "m3.medium",
        mem: 3.75,
        price: 0.079,
        priceUnit: "Hrs",
        vCpuCount: 1,
        cpu: config3,
    },
    {
        name: "t2.medium",
        mem: 4,
        price: 0.0536,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config1,
    },
    {
        name: "t3.medium",
        mem: 4,
        price: 0.048,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config2,
    },
    {
        name: "m3.large",
        mem: 7.5,
        price: 0.158,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config2,
    },
    {
        name: "t2.large",
        mem: 8,
        price: 0.1072,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config1,
    },
    {
        name: "t3.large",
        mem: 8,
        price: 0.096,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config2,
    },
    {
        name: "m5.large",
        mem: 8,
        price: 0.115,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config2,
    },
    {
        name: "m5d.large",
        mem: 8,
        price: 0.136,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config2,
    },
    {
        name: "m4.large",
        mem: 8,
        price: 0.12,
        priceUnit: "Hrs",
        vCpuCount: 2,
        cpu: config1,
    },
    {
        name: "m3.xlarge",
        mem: 15,
        price: 0.315,
        priceUnit: "Hrs",
        vCpuCount: 4,
        cpu: config2,
    },
    {
        name: "m5.xlarge",
        mem: 16,
        price: 0.23,
        priceUnit: "Hrs",
        vCpuCount: 4,
        cpu: config2,
    },
    {
        name: "m4.xlarge",
        mem: 16,
        price: 0.24,
        priceUnit: "Hrs",
        vCpuCount: 4,
        cpu: config1,
    },
    {
        name: "t3.xlarge",
        mem: 16,
        price: 0.192,
        priceUnit: "Hrs",
        vCpuCount: 4,
        cpu: config2,
    },
    {
        name: "t2.xlarge",
        mem: 16,
        price: 0.2144,
        priceUnit: "Hrs",
        vCpuCount: 4,
        cpu: config1,
    },
    {
        name: "m5d.xlarge",
        mem: 16,
        price: 0.272,
        priceUnit: "Hrs",
        vCpuCount: 4,
        cpu: config2,
    },
    {
        name: "m3.2xlarge",
        mem: 30,
        price: 0.632,
        priceUnit: "Hrs",
        vCpuCount: 8,
        cpu: config2,
    },
    {
        name: "m5d.2xlarge",
        mem: 32,
        price: 0.544,
        priceUnit: "Hrs",
        vCpuCount: 8,
        cpu: config2,
    },
    {
        name: "m5.2xlarge",
        mem: 32,
        price: 0.46,
        priceUnit: "Hrs",
        vCpuCount: 8,
        cpu: config2,
    },
    {
        name: "m4.2xlarge",
        mem: 32,
        price: 0.48,
        priceUnit: "Hrs",
        vCpuCount: 8,
        cpu: config1,
    },
    {
        name: "t3.2xlarge",
        mem: 32,
        price: 0.384,
        priceUnit: "Hrs",
        vCpuCount: 8,
        cpu: config2,
    },
    {
        name: "t2.2xlarge",
        mem: 32,
        price: 0.4288,
        priceUnit: "Hrs",
        vCpuCount: 8,
        cpu: config1,
    },
    {
        name: "m5d.4xlarge",
        mem: 64,
        price: 1.088,
        priceUnit: "Hrs",
        vCpuCount: 16,
        cpu: config2,
    },
    {
        name: "m4.4xlarge",
        mem: 64,
        price: 0.96,
        priceUnit: "Hrs",
        vCpuCount: 16,
        cpu: config1,
    },
    {
        name: "m5.4xlarge",
        mem: 64,
        price: 0.92,
        priceUnit: "Hrs",
        vCpuCount: 16,
        cpu: config2,
    },
    {
        name: "m4.10xlarge",
        mem: 160,
        price: 2.4,
        priceUnit: "Hrs",
        vCpuCount: 40,
        cpu: config1,
    },
    {
        name: "m5d.12xlarge",
        mem: 192,
        price: 3.264,
        priceUnit: "Hrs",
        vCpuCount: 48,
        cpu: config2,
    },
    {
        name: "m5.12xlarge",
        mem: 192,
        price: 2.76,
        priceUnit: "Hrs",
        vCpuCount: 48,
        cpu: config2,
    },
    {
        name: "m4.16xlarge",
        mem: 256,
        price: 3.84,
        priceUnit: "Hrs",
        vCpuCount: 64,
        cpu: config1,
    },
    {
        name: "m5d.metal",
        mem: 384,
        price: 6.528,
        priceUnit: "Hrs",
        vCpuCount: 96,
        cpu: config2,
    },
    {
        name: "m5.metal",
        mem: 384,
        price: 5.52,
        priceUnit: "Hrs",
        vCpuCount: 96,
        cpu: config2,
    },
    {
        name: "m5d.24xlarge",
        mem: 384,
        price: 6.528,
        priceUnit: "Hrs",
        vCpuCount: 96,
        cpu: config2,
    },
    {
        name: "m5.24xlarge",
        mem: 384,
        price: 5.52,
        priceUnit: "Hrs",
        vCpuCount: 96,
        cpu: config2,
    },
];
