JCLOUDS-1436: Add support for aws ec2 m5 instance types

fix: remove duplicate imports
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 fbb730e..7d1a56c 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
@@ -239,6 +239,11 @@
       return this;
    }
 
+   private EC2HardwareBuilder m5() {
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+
    private EC2HardwareBuilder c3() {
       virtualizationTypes(VirtualizationType.HVM, VirtualizationType.PARAVIRTUAL);
       return this;
@@ -588,6 +593,73 @@
    }
 
    /**
+    * @see InstanceType#M5_LARGE
+    */
+   public static EC2HardwareBuilder m5_large() {
+      return new EC2HardwareBuilder(InstanceType.M5_LARGE).m5()
+            .ram(8192)
+            .processors(ImmutableList.of(new Processor(2, 2.5)))
+            .is64Bit(true)
+            .rootDeviceType(RootDeviceType.EBS);
+   }
+
+   /**
+    * @see InstanceType#M5_XLARGE
+    */
+   public static EC2HardwareBuilder m5_xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5_XLARGE).m5()
+            .ram(16384)
+            .processors(ImmutableList.of(new Processor(4, 2.5)))
+            .is64Bit(true)
+            .rootDeviceType(RootDeviceType.EBS);
+   }
+
+   /**
+    * @see InstanceType#M5_2XLARGE
+    */
+   public static EC2HardwareBuilder m5_2xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5_2XLARGE).m5()
+            .ram(32768)
+            .processors(ImmutableList.of(new Processor(8, 2.5)))
+            .is64Bit(true)
+            .rootDeviceType(RootDeviceType.EBS);
+   }
+
+   /**
+    * @see InstanceType#M5_4XLARGE
+    */
+   public static EC2HardwareBuilder m5_4xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5_4XLARGE).m5()
+            .ram(65536)
+            .processors(ImmutableList.of(new Processor(16, 2.5)))
+            .is64Bit(true)
+            .rootDeviceType(RootDeviceType.EBS);
+   }
+
+   /**
+    * @see InstanceType#M5_12XLARGE
+    */
+   public static EC2HardwareBuilder m5_12xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5_12XLARGE).m5()
+            .ram(196608)
+            .processors(ImmutableList.of(new Processor(48.0, 2.5)))
+            .is64Bit(true)
+            .rootDeviceType(RootDeviceType.EBS);
+   }
+
+   /**
+    * @see InstanceType#M5_24XLARGE
+    */
+   public static EC2HardwareBuilder m5_24xlarge() {
+      return new EC2HardwareBuilder(InstanceType.M5_24XLARGE).m5()
+            .ram(393216)
+            .processors(ImmutableList.of(new Processor(96.0, 2.5)))
+            .is64Bit(true)
+            .rootDeviceType(RootDeviceType.EBS);
+   }
+
+
+   /**
     * @see InstanceType#C1_MEDIUM
     */
    public static EC2HardwareBuilder c1_medium() {
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 f7033e4..617cc39 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
@@ -269,6 +269,78 @@
    public static final String M4_10XLARGE = "m4.10xlarge";
 
    /**
+    * M5 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>EBS storage only</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: Moderate</li>
+    * </ul>
+    */
+   public static final String M5_LARGE = "m5.large";
+
+   /**
+    * M5 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>EBS storage only</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5_XLARGE = "m5.xlarge";
+
+   /**
+    * M5 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>EBS storage only</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5_2XLARGE = "m5.2xlarge";
+
+   /**
+    * M5 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>EBS storage only</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5_4XLARGE = "m5.4xlarge";
+
+   /**
+    * M5 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>EBS storage only</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5_12XLARGE = "m5.12xlarge";
+
+   /**
+    * M5 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>EBS storage only</li>
+    * <li>64-bit platform</li>
+    * <li>I/O Performance: High</li>
+    * </ul>
+    */
+   public static final String M5_24XLARGE = "m5.24xlarge";
+
+   /**
     * High-CPU Medium Instance
     * <ul>
     * <li>1.7 GB 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 c943ff5..c3074cd 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
@@ -64,11 +64,17 @@
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_4xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_large;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m4_xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_large;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_xlarge;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.m5_2xlarge;
+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.r3_large;
+import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_2xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_4xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r3_8xlarge;
-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.r4_16xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r4_2xlarge;
 import static org.jclouds.ec2.compute.domain.EC2HardwareBuilder.r4_4xlarge;
@@ -156,6 +162,12 @@
       sizes.add(m4_2xlarge().build());
       sizes.add(m4_4xlarge().build());
       sizes.add(m4_10xlarge().build());
+      sizes.add(m5_large().build());
+      sizes.add(m5_xlarge().build());
+      sizes.add(m5_2xlarge().build());
+      sizes.add(m5_4xlarge().build());
+      sizes.add(m5_12xlarge().build());
+      sizes.add(m5_24xlarge().build());
       sizes.add(r3_large().build());
       sizes.add(r3_xlarge().build());
       sizes.add(r3_2xlarge().build());