/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package se.kth.karamel.common.launcher.amazon; import java.util.ArrayList; import java.util.List; import org.jclouds.ec2.domain.BlockDeviceMapping; /** * * @author kamal */ public enum InstanceType { t2_nano("t2.nano", 1, 0.5, null, null), t2_micro("t2.micro", 1, 1, null, null), t2_small("t2.small", 1, 2, null, null), t2_medium("t2.medium", 2, 4, null, null), t2_large("t2.large", 2, 8, null, null), m4_large("m4.large", 2, 8, null, null), m4_xlarge("m4.xlarge", 4, 16, null, null), m4_2xlarge("m4.2xlarge", 8, 32, null, null), m4_4xlarge("m4.4xlarge", 16, 64, null, null), m4_10xlarge("m4.10xlarge", 40, 160, null, null), m3_medium("m3.medium", 1, 3.75, 1, 4), m3_large("m3.large", 2, 7.5, 1, 32), m3_xlarge("m3.xlarge", 4, 15, 2, 40), m3_2xlarge("m3.2xlarge", 8, 30, 2, 80), c4_large("c4.large", 2, 3.75, null, null), c4_xlarge("c4.xlarge", 4, 7.5, null, null), c4_2xlarge("c4.2xlarge", 8, 15, null, null), c4_4xlarge("c4.4xlarge", 16, 30, null, null), c4_8xlarge("c4.8xlarge", 36, 60, null, null), c3_large("c3.large", 2, 3.7, 2, 16), c3_xlarge("c3.xlarge", 4, 7.5, 2, 40), c3_2xlarge("c3.2xlarge", 8, 15, 2, 80), c3_4xlarge("c3.4xlarge", 16, 30, 2, 160), c3_8xlarge("c3.8xlarge", 32, 60, 2, 320), g2_2xlarge("g2.2xlarge", 8, 15, 1, 160), g2_8xlarge("g2.8xlarge", 32, 60, 2, 120), r3_large("r3.large", 2, 15.25, 1, 32), r3_xlarge("r3.xlarge", 4, 30.5, 1, 80), r3_2xlarge("r3.2xlarge", 8, 61, 1, 160), r3_4xlarge("r3.4xlarge", 16, 122, 1, 320), r3_8xlarge("r3.8xlarge", 32, 244, 2, 320), i2_xlarge("i2.xlarge", 4, 30.5, 1, 800), i2_2xlarge("i2.2xlarge", 8, 61, 2, 800), i2_4xlarge("i2_4xlarge", 16, 122, 4, 800), i2_8xlarge("i2.8xlarge", 32, 244, 8, 800), d2_xlarge("d2.xlarge", 4, 30.5, 3, 2000), d2_2xlarge("d2.2xlarge", 8, 61, 6, 2000), d2_4xlarge("d2.4xlarge", 16, 122, 12, 2000), d2_8xlarge("d2.8xlarge", 36, 244, 24, 2000),; public final String model; public final int numVCpu; public final double memInGig; public final Integer numDisks; public final Integer diskSize; private InstanceType(String model, int numVCpu, double memInGig, Integer numDisks, Integer diskSize) { this.model = model; this.numVCpu = numVCpu; this.memInGig = memInGig; this.numDisks = numDisks; this.diskSize = diskSize; } public static InstanceType valueByModel(String model) { return valueOf(model.replaceAll("\\.", "_")); } public StorageDevice[] getStorageDevices() { StorageDevice[] values = StorageDevice.values(); StorageDevice[] devices = new StorageDevice[numDisks]; for (int i = 0; i < numDisks; i++) { devices[i] = values[i]; } return devices; } public List<BlockDeviceMapping> getEphemeralDeviceMappings() { ArrayList<BlockDeviceMapping> maps = new ArrayList<>(); if (numDisks != null) { for (StorageDevice device : getStorageDevices()) { BlockDeviceMapping map = new BlockDeviceMapping.MapEphemeralDeviceToDevice(device.mappingName(), device.virtualName()); maps.add(map); } } return maps; } }