JCLOUDS-1467
Added support for c5d & m5d AWS nodes.

JCLOUDS-1467
Updated the SSD drive information.
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java b/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
index a8f4c55..e31dd33 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
@@ -780,8 +780,90 @@
             .rootDeviceType(RootDeviceType.EBS);
    }
 
+   /**
+    * @see InstanceType#M5D_LARGE
+    */
+   public static EC2HardwareBuilder m5d_large() {
+      return new EC2HardwareBuilder(InstanceType.M5D_LARGE).m5()
+            .ram(8192)
+            .processors(ImmutableList.of(new Processor(2, 2.5)))
+            .volumes(ImmutableList.<Volume>of(
+                    new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(75.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+            .is64Bit(true);
+   }
 
    /**
+    * @see InstanceType#M5D_XLARGE
+    */
+   public static EC2HardwareBuilder m5d_xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5D_XLARGE).m5()
+            .ram(16384)
+            .processors(ImmutableList.of(new Processor(4, 2.5)))
+            .volumes(ImmutableList.<Volume>of(
+                    new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(150.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+            .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#M5D_2XLARGE
+    */
+   public static EC2HardwareBuilder m5d_2xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5D_2XLARGE).m5()
+            .ram(32768)
+            .processors(ImmutableList.of(new Processor(8, 2.5)))
+            .volumes(ImmutableList.<Volume>of(
+                    new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(300.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+            .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#M5D_4XLARGE
+    */
+   public static EC2HardwareBuilder m5d_4xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5D_4XLARGE).m5()
+            .ram(65536)
+            .processors(ImmutableList.of(new Processor(16, 2.5)))
+            .volumes(ImmutableList.<Volume>of(
+                    new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(300.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(300.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
+            .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#M5D_12XLARGE
+    */
+   public static EC2HardwareBuilder m5d_12xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5D_12XLARGE).m5()
+            .ram(196608)
+            .processors(ImmutableList.of(new Processor(48.0, 2.5)))
+            .volumes(ImmutableList.<Volume>of(
+                    new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
+            .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#M5D_24XLARGE
+    */
+   public static EC2HardwareBuilder m5d_24xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5D_24XLARGE).m5()
+            .ram(393216)
+            .processors(ImmutableList.of(new Processor(96.0, 2.5)))
+            .volumes(ImmutableList.<Volume>of(
+                    new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sdc").bootDevice(false).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sdd").bootDevice(false).durable(false).build(),
+                    new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sde").bootDevice(false).durable(false).build()))
+            .is64Bit(true);
+   }
+   
+   /**
     * @see InstanceType#C1_MEDIUM
     */
    public static EC2HardwareBuilder c1_medium() {
@@ -990,6 +1072,85 @@
    }
 
    /**
+    * @see InstanceType#C5D_LARGE
+    */
+   public static EC2HardwareBuilder c5d_large() {
+      return new EC2HardwareBuilder(InstanceType.C5D_LARGE).c5()
+         .ram(4096)
+         .processors(ImmutableList.of(new Processor(2.0, 3.0)))
+         .volumes(ImmutableList.<Volume>of(
+                 new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                 new VolumeBuilder().type(LOCAL).size(50.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+           .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#C5D_XLARGE
+    */
+   public static EC2HardwareBuilder c5d_xlarge() {
+      return new EC2HardwareBuilder(InstanceType.C5D_XLARGE).c5()
+         .ram(8192)
+         .processors(ImmutableList.of(new Processor(4.0, 3.0)))
+         .volumes(ImmutableList.<Volume>of(
+                 new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                 new VolumeBuilder().type(LOCAL).size(100.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+           .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#C5D_2XLARGE
+    */
+   public static EC2HardwareBuilder c5d_2xlarge() {
+      return new EC2HardwareBuilder(InstanceType.C5D_2XLARGE).c5()
+         .ram(16384)
+         .processors(ImmutableList.of(new Processor(8.0, 3.0)))
+         .volumes(ImmutableList.<Volume>of(
+                 new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                 new VolumeBuilder().type(LOCAL).size(225.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+           .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#C5D_4XLARGE
+    */
+   public static EC2HardwareBuilder c5d_4xlarge() {
+      return new EC2HardwareBuilder(InstanceType.C5D_4XLARGE).c5()
+         .ram(32768)
+         .processors(ImmutableList.of(new Processor(16.0, 3.0)))
+         .volumes(ImmutableList.<Volume>of(
+                 new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                 new VolumeBuilder().type(LOCAL).size(450.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+           .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#C5D_9XLARGE
+    */
+   public static EC2HardwareBuilder c5d_9xlarge() {
+      return new EC2HardwareBuilder(InstanceType.C5D_9XLARGE).c5()
+         .ram(73728)
+         .processors(ImmutableList.of(new Processor(36.0, 3.0)))
+         .volumes(ImmutableList.<Volume>of(
+                 new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                 new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
+           .is64Bit(true);
+   }
+
+   /**
+    * @see InstanceType#C5D_18XLARGE
+    */
+   public static EC2HardwareBuilder c5d_18xlarge() {
+      return new EC2HardwareBuilder(InstanceType.C5D_18XLARGE).c5()
+         .ram(147456)
+         .processors(ImmutableList.of(new Processor(72.0, 3.0)))
+         .volumes(ImmutableList.<Volume>of(
+                 new VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                 new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
+                 new VolumeBuilder().type(LOCAL).size(900.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
+           .is64Bit(true);
+   }
+   
+   /**
     * @see InstanceType#D2_XLARGE
     */
    public static EC2HardwareBuilder d2_xlarge() {
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/domain/InstanceType.java b/apis/ec2/src/main/java/org/jclouds/ec2/domain/InstanceType.java
index 1a01031..d673d9a 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/domain/InstanceType.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/domain/InstanceType.java
@@ -463,6 +463,79 @@
    public static final String M5_24XLARGE = "m5.24xlarge";
 
    /**
+    * M5D Large Instance
+    * <ul>
+    * <li>8 GiB memory</li>
+    * <li>5 EC2 Compute Units (2 virtual cores with 2.5 EC2 Compute Units each)</li>
+    * <li>1 x 75 NVMe SSD</li>
+    * <li>EBS storage</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: Moderate</li>
+    * </ul>
+    */
+   public static final String M5D_LARGE = "m5d.large";
+
+   /**
+    * M5D Extra Large Instance
+    * <ul>
+    * <li>16 GiB memory</li>
+    * <li>10 EC2 Compute Units (4 virtual cores with 2.5 EC2 Compute Units each)</li>
+    * <li>1 x 150 NVMe SSD</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5D_XLARGE = "m5d.xlarge";
+
+   /**
+    * M5D Double Extra Large Instance
+    * <ul>
+    * <li>32 GiB memory</li>
+    * <li>26 EC2 Compute Units (8 virtual cores with 2.5 EC2 Compute Units each)</li>
+    * <li>1 x 300 NVMe SSD</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5D_2XLARGE = "m5d.2xlarge";
+
+   /**
+    * M5D Quadruple Extra Large Instance
+    * <ul>
+    * <li>64 GiB memory</li>
+    * <li>40 EC2 Compute Units (16 virtual cores with 2.5 EC2 Compute Units each)</li>
+    * <li> x 300 NVMe SSD</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5D_4XLARGE = "m5d.4xlarge";
+
+   /**
+    * M5D 12x Extra Large Instance
+    * <ul>
+    * <li>192 GiB memory</li>
+    * <li>144 EC2 Compute Units (48 virtual cores with 2.5 EC2 Compute Units each)</li>
+    * <li>2 x 900 NVMe SSD</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5D_12XLARGE = "m5d.12xlarge";
+
+   /**
+    * M5D 24x Extra Large Instance
+    * <ul>
+    * <li>384 GiB memory</li>
+    * <li>288 EC2 Compute Units (96 virtual cores with 2.5 EC2 Compute Units each)</li>
+    * <li>4 x 900 NVMe SSD</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5D_24XLARGE = "m5d.24xlarge";
+
+   /**
     * High-CPU Medium Instance
     * <ul>
     * <li>1.7 GB of memory</li>
@@ -748,6 +821,72 @@
    public static final String C5_18XLARGE = "c5.18xlarge";
 
    /**
+    * C5D Compute-optimized Large
+    * <ul>
+    *    <li>4 GiB of memory</li>
+    *    <li>2 vCPU</li>
+    *    <li>1 x 50 NVMe SSD</li>
+    *    <li>Up to 25 Gbps of network bandwidth using Elastic Network Adapter (ENA)-based Enhanced Networking</li>
+    * </ul>
+    */
+   public static final String C5D_LARGE = "c5d.large";
+
+   /**
+    * C5D Compute-optimized X Large
+    * <ul>
+    *    <li>8 GiB of memory</li>
+    *    <li>4 vCPU</li>
+    *    <li>1 x 100 NVMe SSD</li>
+    *    <li>Up to 25 Gbps of network bandwidth using Elastic Network Adapter (ENA)-based Enhanced Networking</li>
+    * </ul>
+    */
+   public static final String C5D_XLARGE = "c5d.xlarge";
+
+   /**
+    * C5D Compute-optimized 2x Large
+    * <ul>
+    *    <li>16 GiB of memory</li>
+    *    <li>8 vCPU</li>
+    *    <li>1 x 225 NVMe SSD</li>
+    *    <li>Up to 25 Gbps of network bandwidth using Elastic Network Adapter (ENA)-based Enhanced Networking</li>
+    * </ul>
+    */
+   public static final String C5D_2XLARGE = "c5d.2xlarge";
+
+   /**
+    * C5D Compute-optimized 4x Large
+    * <ul>
+    *    <li>32 GiB of memory</li>
+    *    <li>16 vCPU</li>
+    *    <li>1 x 450 NVMe SSD</li>
+    *    <li>Up to 25 Gbps of network bandwidth using Elastic Network Adapter (ENA)-based Enhanced Networking</li>
+    * </ul>
+    */
+   public static final String C5D_4XLARGE = "c5d.4xlarge";
+
+   /**
+    * C5D Compute-optimized 9x Large
+    * <ul>
+    *    <li>72 GiB of memory</li>
+    *    <li>36 vCPU</li>
+    *    <li>1 x 900 NVMe SSD</li>
+    *    <li>Up to 25 Gbps of network bandwidth using Elastic Network Adapter (ENA)-based Enhanced Networking</li>
+    * </ul>
+    */
+   public static final String C5D_9XLARGE = "c5d.9xlarge";
+
+   /**
+    * C5D Compute-optimized 18x Large
+    * <ul>
+    *    <li>144 GiB of memory</li>
+    *    <li>72 vCPU</li>
+    *    <li>2 x 900 NVMe SSD</li>
+    *    <li>Up to 25 Gbps of network bandwidth using Elastic Network Adapter (ENA)-based Enhanced Networking</li>
+    * </ul>
+    */
+   public static final String C5D_18XLARGE = "c5d.18xlarge";
+
+   /**
     * D2 Dense Storage Extra Large
     * <ul>
     *    <li>30.5 GiB of memory</li>
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/suppliers/AWSEC2HardwareSupplier.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/suppliers/AWSEC2HardwareSupplier.java
index 119ab57..e35ec5f 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/suppliers/AWSEC2HardwareSupplier.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/compute/suppliers/AWSEC2HardwareSupplier.java
@@ -34,6 +34,12 @@
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_4xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_9xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5_18xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_large;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_2xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_4xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_9xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.c5d_18xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.cc1_4xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.cc2_8xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.cg1_4xlarge;
@@ -71,6 +77,12 @@
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_4xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_12xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_24xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_large;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_2xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_4xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_12xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5d_24xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_large;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_2xlarge;
@@ -165,6 +177,12 @@
       sizes.add(c5_4xlarge().build());
       sizes.add(c5_9xlarge().build());
       sizes.add(c5_18xlarge().build());
+      sizes.add(c5d_large().build());
+      sizes.add(c5d_xlarge().build());
+      sizes.add(c5d_2xlarge().build());
+      sizes.add(c5d_4xlarge().build());
+      sizes.add(c5d_9xlarge().build());
+      sizes.add(c5d_18xlarge().build());
       sizes.add(i2_xlarge().build());
       sizes.add(i2_2xlarge().build());
       sizes.add(i2_4xlarge().build());
@@ -192,6 +210,12 @@
       sizes.add(m5_4xlarge().build());
       sizes.add(m5_12xlarge().build());
       sizes.add(m5_24xlarge().build());
+      sizes.add(m5d_large().build());
+      sizes.add(m5d_xlarge().build());
+      sizes.add(m5d_2xlarge().build());
+      sizes.add(m5d_4xlarge().build());
+      sizes.add(m5d_12xlarge().build());
+      sizes.add(m5d_24xlarge().build());
       sizes.add(r3_large().build());
       sizes.add(r3_xlarge().build());
       sizes.add(r3_2xlarge().build());