Repository: jclouds
Updated Branches:
  refs/heads/1.9.x fc5953041 -> d96e34ea9


indicate virtualization type for all ec2 instance types


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/3b83e790
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/3b83e790
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/3b83e790

Branch: refs/heads/1.9.x
Commit: 3b83e790c09f4571f1006d8d6c563353717d00e5
Parents: fc59530
Author: Alex Heneveld <[email protected]>
Authored: Wed Apr 22 10:25:03 2015 +0100
Committer: Ignasi Barrera <[email protected]>
Committed: Mon Jul 20 23:13:43 2015 +0200

----------------------------------------------------------------------
 .../ec2/compute/domain/EC2HardwareBuilder.java  | 238 ++++++++++++++-----
 1 file changed, 173 insertions(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/3b83e790/apis/ec2/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
----------------------------------------------------------------------
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 716dd8b..c9256be 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
@@ -29,7 +29,6 @@ import java.util.Map;
 import org.jclouds.compute.domain.Hardware;
 import org.jclouds.compute.domain.HardwareBuilder;
 import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.OsFamily;
 import org.jclouds.compute.domain.Processor;
 import org.jclouds.compute.domain.Volume;
 import org.jclouds.compute.domain.VolumeBuilder;
@@ -39,22 +38,33 @@ import org.jclouds.ec2.domain.InstanceType;
 import org.jclouds.ec2.domain.RootDeviceType;
 import org.jclouds.ec2.domain.VirtualizationType;
 
+import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableList.Builder;
 import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Lists;
 
 /**
  * 
  * @see <a href=
  *      
"http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?instance-types.html";
  *      />
+ * 
+ * and <a href=
+ *      "http://aws.amazon.com/amazon-linux-ami/instance-type-matrix/";
+ *      />.
+ *      
+ * Also note Windows only supports HVM, as per
+ *     <a href=
+ *     
"http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html";
+ *     />.
+ *     On Windows you may have to constrain hardware appropriately.
  */
 public class EC2HardwareBuilder extends HardwareBuilder {
    private Predicate<Image> rootDeviceType = any();
-   private Predicate<Image> virtualizationType = Predicates.or(new 
IsWindows(), new RequiresVirtualizationType(
-         VirtualizationType.PARAVIRTUAL));
+   private Predicate<Image> virtualizationType = null; 
    private Predicate<Image> imageIds = any();
    private Predicate<Image> is64Bit = any();
 
@@ -89,20 +99,6 @@ public class EC2HardwareBuilder extends HardwareBuilder {
 
    }
 
-   public static class IsWindows implements Predicate<Image> {
-
-      @Override
-      public boolean apply(Image image) {
-         return image.getOperatingSystem() != null && OsFamily.WINDOWS == 
image.getOperatingSystem().getFamily();
-      }
-
-      @Override
-      public String toString() {
-         return "isWindows()";
-      }
-
-   }
-
    /**
     * evaluates true if the Image requires the following virtualizationType
     * 
@@ -139,6 +135,20 @@ public class EC2HardwareBuilder extends HardwareBuilder {
       return this;
    }
 
+   public EC2HardwareBuilder virtualizationTypes(VirtualizationType 
...virtualizationTypes) {
+      Preconditions.checkArgument(virtualizationTypes.length > 0, "At least 
one virtualization type is required.");
+      if (virtualizationTypes.length == 1) {
+         this.virtualizationType = new 
RequiresVirtualizationType(virtualizationTypes[0]);
+      } else {
+         List<RequiresVirtualizationType> supportedVirtualizationTypes = 
Lists.newArrayList();
+         for (VirtualizationType virtualizationType : virtualizationTypes) {
+            supportedVirtualizationTypes.add(new 
RequiresVirtualizationType(virtualizationType));
+         }
+         this.virtualizationType = Predicates.or(supportedVirtualizationTypes);
+      }
+      return this;
+   }
+
    public EC2HardwareBuilder rootDeviceType(RootDeviceType rootDeviceType) {
       this.rootDeviceType = new RequiresRootDeviceType(rootDeviceType);
       return this;
@@ -203,11 +213,104 @@ public class EC2HardwareBuilder extends HardwareBuilder {
       return EC2HardwareBuilder.class.cast(super.userMetadata(userMetadata));
    }
 
+   private EC2HardwareBuilder t2() {
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+   
+   private EC2HardwareBuilder m3() {
+      virtualizationTypes(VirtualizationType.HVM, 
VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+   
+   private EC2HardwareBuilder c3() {
+      virtualizationTypes(VirtualizationType.HVM, 
VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+   
+   private EC2HardwareBuilder c4() {
+      virtualizationTypes(VirtualizationType.HVM, 
VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+   
+   // TODO include D2 (dense) types?
+   @SuppressWarnings("unused")
+   private EC2HardwareBuilder d2() {
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+   
+   private EC2HardwareBuilder r3() {
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+   
+   private EC2HardwareBuilder g2() {
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+   
+   private EC2HardwareBuilder i2() {
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+   
+   private EC2HardwareBuilder hs1() {
+      virtualizationTypes(VirtualizationType.HVM, 
VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+
+   // TODO below this line are previous generation, discouraged
+   // http://aws.amazon.com/ec2/previous-generation/
+   private EC2HardwareBuilder m1() {
+      virtualizationTypes(VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+   
+   private EC2HardwareBuilder c1() {
+      virtualizationTypes(VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+   
+   private EC2HardwareBuilder cc2() {
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+   
+   private EC2HardwareBuilder m2() {
+      virtualizationTypes(VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+   
+   // cr1 never included in jclouds, so skipped here
+   
+   private EC2HardwareBuilder hi1() {
+      virtualizationTypes(VirtualizationType.HVM, 
VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+   
+   private EC2HardwareBuilder t1() {
+      virtualizationTypes(VirtualizationType.PARAVIRTUAL);
+      return this;
+   }
+   
+   private EC2HardwareBuilder cg1() {
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+   
+   private EC2HardwareBuilder cc1() {
+      // often no longer available - not adding capacity (use cc2)
+      virtualizationTypes(VirtualizationType.HVM);
+      return this;
+   }
+   
+
    /**
     * @see InstanceType#M1_SMALL
     */
    public static EC2HardwareBuilder m1_small() {
-      return new EC2HardwareBuilder(InstanceType.M1_SMALL)
+      return new EC2HardwareBuilder(InstanceType.M1_SMALL).m1()
             .ram(1740)
             .processors(ImmutableList.of(new Processor(1.0, 1.0)))
             .volumes(ImmutableList.<Volume> of(
@@ -219,7 +322,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M1_MEDIUM
     */
    public static EC2HardwareBuilder m1_medium() {
-      return new EC2HardwareBuilder(InstanceType.M1_MEDIUM)
+      return new EC2HardwareBuilder(InstanceType.M1_MEDIUM).m1()
             .ram(3750)
             .processors(ImmutableList.of(new Processor(1.0, 2.0)))
             .volumes(ImmutableList.<Volume> of(
@@ -233,7 +336,8 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#T1_MICRO
     */
    public static EC2HardwareBuilder t1_micro() {
-      return new EC2HardwareBuilder(InstanceType.T1_MICRO).ram(630)
+      return new EC2HardwareBuilder(InstanceType.T1_MICRO).t1()
+            .ram(630)
             .processors(ImmutableList.of(new Processor(1.0, 
1.0))).rootDeviceType(RootDeviceType.EBS);
    }
 
@@ -241,7 +345,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#T2_MICRO
     */
    public static EC2HardwareBuilder t2_micro() {
-      return new EC2HardwareBuilder(InstanceType.T2_MICRO)
+      return new EC2HardwareBuilder(InstanceType.T2_MICRO).t2()
             .ram(1024)
             .processors(ImmutableList.of(new Processor(1.0, 
0.1))).rootDeviceType(RootDeviceType.EBS);
    }
@@ -250,7 +354,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#T2_SMALL
     */
    public static EC2HardwareBuilder t2_small() {
-      return new EC2HardwareBuilder(InstanceType.T2_SMALL)
+      return new EC2HardwareBuilder(InstanceType.T2_SMALL).t2()
             .ram(2048)
             .processors(ImmutableList.of(new Processor(1.0, 
0.2))).rootDeviceType(RootDeviceType.EBS);
    }
@@ -259,7 +363,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#T2_MEDIUM
     */
    public static EC2HardwareBuilder t2_medium() {
-      return new EC2HardwareBuilder(InstanceType.T2_MEDIUM)
+      return new EC2HardwareBuilder(InstanceType.T2_MEDIUM).t2()
             .ram(4096)
             .processors(ImmutableList.of(new Processor(1.0, 
0.4))).rootDeviceType(RootDeviceType.EBS);
    }
@@ -277,7 +381,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M1_LARGE
     */
    public static EC2HardwareBuilder m1_large() {
-      return new EC2HardwareBuilder(InstanceType.M1_LARGE)
+      return new EC2HardwareBuilder(InstanceType.M1_LARGE).m1()
             .ram(7680)
             .processors(ImmutableList.of(new Processor(2.0, 2.0)))
             .volumes(ImmutableList.<Volume> of(
@@ -291,7 +395,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M1_XLARGE
     */
    public static EC2HardwareBuilder m1_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M1_XLARGE)
+      return new EC2HardwareBuilder(InstanceType.M1_XLARGE).m1()
             .ram(15360)
             .processors(ImmutableList.of(new Processor(4.0, 2.0)))
             .volumes(ImmutableList.<Volume> of(
@@ -307,7 +411,8 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M2_XLARGE
     */
    public static EC2HardwareBuilder m2_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M2_XLARGE).ram(17510)
+      return new EC2HardwareBuilder(InstanceType.M2_XLARGE).m2()
+            .ram(17510)
             .processors(ImmutableList.of(new Processor(2.0, 3.25)))
             .volumes(ImmutableList.<Volume> of(
                   new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sda1").bootDevice(true).durable(false).build()))
@@ -318,7 +423,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M2_2XLARGE
     */
    public static EC2HardwareBuilder m2_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M2_2XLARGE)
+      return new EC2HardwareBuilder(InstanceType.M2_2XLARGE).m2()
             .ram(35020)
             .processors(ImmutableList.of(new Processor(4.0, 3.25)))
             .volumes(ImmutableList.<Volume> of(
@@ -331,7 +436,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M2_4XLARGE
     */
    public static EC2HardwareBuilder m2_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M2_4XLARGE)
+      return new EC2HardwareBuilder(InstanceType.M2_4XLARGE).m2()
             .ram(70041)
             .processors(ImmutableList.of(new Processor(8.0, 3.25)))
             .volumes(ImmutableList.<Volume> of(
@@ -345,7 +450,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M3_MEDIUM
     */
    public static EC2HardwareBuilder m3_medium() {
-      return new EC2HardwareBuilder(InstanceType.M3_MEDIUM)
+      return new EC2HardwareBuilder(InstanceType.M3_MEDIUM).m3()
             .ram(3840)
             .processors(ImmutableList.of(new Processor(1.0, 3.0)))
             .volumes(ImmutableList.<Volume> of(
@@ -357,7 +462,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M3_LARGE
     */
    public static EC2HardwareBuilder m3_large() {
-      return new EC2HardwareBuilder(InstanceType.M3_LARGE)
+      return new EC2HardwareBuilder(InstanceType.M3_LARGE).m3()
             .ram(7680)
             .processors(ImmutableList.of(new Processor(2.0, 3.25)))
             .volumes(ImmutableList.<Volume> of(
@@ -369,7 +474,8 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M3_XLARGE
     */
    public static EC2HardwareBuilder m3_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M3_XLARGE).ram(15360)
+      return new EC2HardwareBuilder(InstanceType.M3_XLARGE).m3()
+              .ram(15360)
               .processors(ImmutableList.of(new Processor(4.0, 3.25)))
               .is64Bit(true)
               .volumes(ImmutableList.<Volume>of(
@@ -382,13 +488,14 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#M3_2XLARGE
     */
    public static EC2HardwareBuilder m3_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M3_2XLARGE).ram(30720)
-            .processors(ImmutableList.of(new Processor(8.0, 3.25)))
-            .is64Bit(true)
-            .volumes(ImmutableList.<Volume>of(
-                  new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(80.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(80.0f).device("/dev/sdc").bootDevice(false).durable(false).build()));
+      return new EC2HardwareBuilder(InstanceType.M3_2XLARGE).m3()
+              .ram(30720)
+              .processors(ImmutableList.of(new Processor(8.0, 3.25)))
+              .is64Bit(true)
+              .volumes(ImmutableList.<Volume> of(
+                      new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
+                      new 
VolumeBuilder().type(LOCAL).size(80.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
+                      new 
VolumeBuilder().type(LOCAL).size(80.0f).device("/dev/sdc").bootDevice(false).durable(false).build()));
    }
 
    /**
@@ -445,7 +552,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C1_MEDIUM
     */
    public static EC2HardwareBuilder c1_medium() {
-      return new EC2HardwareBuilder(InstanceType.C1_MEDIUM)
+      return new EC2HardwareBuilder(InstanceType.C1_MEDIUM).c1()
             .ram(1740)
             .processors(ImmutableList.of(new Processor(2.0, 2.5)))
             .volumes(ImmutableList.<Volume>of(
@@ -457,7 +564,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C1_XLARGE
     */
    public static EC2HardwareBuilder c1_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C1_XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C1_XLARGE).c1()
             .ram(7168)
             .processors(ImmutableList.of(new Processor(8.0, 2.5)))
             .volumes(ImmutableList.<Volume>of(
@@ -473,7 +580,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C3_LARGE
     */
    public static EC2HardwareBuilder c3_large() {
-      return new EC2HardwareBuilder(InstanceType.C3_LARGE)
+      return new EC2HardwareBuilder(InstanceType.C3_LARGE).c3()
               .ram(3750)
               .processors(ImmutableList.of(new Processor(2.0, 3.5)))
               .volumes(ImmutableList.<Volume>of(
@@ -487,7 +594,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C3_XLARGE
     */
    public static EC2HardwareBuilder c3_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C3_XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C3_XLARGE).c3()
               .ram(7168)
               .processors(ImmutableList.of(new Processor(4.0, 3.5)))
               .volumes(ImmutableList.<Volume> of(
@@ -501,7 +608,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C3_2XLARGE
     */
    public static EC2HardwareBuilder c3_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C3_2XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C3_2XLARGE).c3()
               .ram(15360)
               .processors(ImmutableList.of(new Processor(8.0, 3.5)))
               .volumes(ImmutableList.<Volume> of(
@@ -515,7 +622,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C3_4XLARGE
     */
    public static EC2HardwareBuilder c3_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C3_4XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C3_4XLARGE).c3()
               .ram(30720)
               .processors(ImmutableList.of(new Processor(16.0, 3.4375)))
               .volumes(ImmutableList.<Volume> of(
@@ -529,7 +636,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C3_8XLARGE
     */
    public static EC2HardwareBuilder c3_8xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C3_8XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C3_8XLARGE).c3()
               .ram(61440)
               .processors(ImmutableList.of(new Processor(32.0, 3.375)))
               .volumes(ImmutableList.<Volume> of(
@@ -543,7 +650,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C4_LARGE
     */
    public static EC2HardwareBuilder c4_large() {
-      return new EC2HardwareBuilder(InstanceType.C4_LARGE)
+      return new EC2HardwareBuilder(InstanceType.C4_LARGE).c4()
          .ram(3840)
          .processors(ImmutableList.of(new Processor(2.0, 3.5)))
          .rootDeviceType(RootDeviceType.EBS);
@@ -553,7 +660,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C4_XLARGE
     */
    public static EC2HardwareBuilder c4_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C4_XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C4_XLARGE).c4()
          .ram(7680)
          .processors(ImmutableList.of(new Processor(4.0, 3.5)))
          .rootDeviceType(RootDeviceType.EBS);
@@ -563,7 +670,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C4_2XLARGE
     */
    public static EC2HardwareBuilder c4_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C4_2XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C4_2XLARGE).c4()
          .ram(15360)
          .processors(ImmutableList.of(new Processor(8.0, 3.5)))
          .rootDeviceType(RootDeviceType.EBS);
@@ -573,7 +680,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C4_4XLARGE
     */
    public static EC2HardwareBuilder c4_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C4_4XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C4_4XLARGE).c4()
          .ram(30720)
          .processors(ImmutableList.of(new Processor(16.0, 3.5)))
          .rootDeviceType(RootDeviceType.EBS);
@@ -583,7 +690,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#C4_8XLARGE
     */
    public static EC2HardwareBuilder c4_8xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C4_8XLARGE)
+      return new EC2HardwareBuilder(InstanceType.C4_8XLARGE).c4()
          .ram(61440)
          .processors(ImmutableList.of(new Processor(36.0, 3.5)))
          .rootDeviceType(RootDeviceType.EBS);
@@ -683,7 +790,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
    }
 
    public static EC2HardwareBuilder cg1_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.CG1_4XLARGE)
+      return new EC2HardwareBuilder(InstanceType.CG1_4XLARGE).cg1()
             .ram(22 * 1024)
             .processors(ImmutableList.of(new Processor(4.0, 4.0), new 
Processor(4.0, 4.0)))
             .volumes(ImmutableList.<Volume> of(
@@ -694,7 +801,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
    }
 
    public static EC2HardwareBuilder cc1_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.CC1_4XLARGE)
+      return new EC2HardwareBuilder(InstanceType.CC1_4XLARGE).cc1()
             .ram(23 * 1024)
             .processors(ImmutableList.of(new Processor(4.0, 4.0), new 
Processor(4.0, 4.0)))
             .volumes(ImmutableList.<Volume> of(
@@ -705,7 +812,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
    }
 
    public static EC2HardwareBuilder cc2_8xlarge() {
-      return new EC2HardwareBuilder(InstanceType.CC2_8XLARGE)
+      return new EC2HardwareBuilder(InstanceType.CC2_8XLARGE).cc2()
             .ram(60 * 1024 + 512)
             .processors(ImmutableList.of(new Processor(8.0, 5.5), new 
Processor(8.0, 5.5)))
             .volumes(ImmutableList.<Volume> of(
@@ -721,7 +828,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#G2_2XLARGE
     */
    public static EC2HardwareBuilder g2_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.G2_2XLARGE)
+      return new EC2HardwareBuilder(InstanceType.G2_2XLARGE).g2()
            .ram(15 * 1024)
             .processors(ImmutableList.of(new Processor(8.0, 3.25)))
             .volumes(ImmutableList.<Volume> of(
@@ -734,7 +841,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#I2_XLARGE
     */
    public static EC2HardwareBuilder i2_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.I2_XLARGE)
+      return new EC2HardwareBuilder(InstanceType.I2_XLARGE).i2()
               .ram(30 * 1024 + 512)
               .processors(ImmutableList.of(new Processor(4.0, 3.5)))
               .volumes(ImmutableList.<Volume> of(
@@ -747,7 +854,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#I2_2XLARGE
     */
    public static EC2HardwareBuilder i2_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.I2_2XLARGE)
+      return new EC2HardwareBuilder(InstanceType.I2_2XLARGE).i2()
               .ram(61 * 1024)
               .processors(ImmutableList.of(new Processor(8.0, 3.375)))
               .volumes(ImmutableList.<Volume> of(
@@ -761,7 +868,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#I2_4XLARGE
     */
    public static EC2HardwareBuilder i2_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.I2_4XLARGE)
+      return new EC2HardwareBuilder(InstanceType.I2_4XLARGE).i2()
               .ram(122 * 1024)
               .processors(ImmutableList.of(new Processor(16.0, 3.3125)))
               .volumes(ImmutableList.<Volume> of(
@@ -777,7 +884,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#I2_8XLARGE
     */
    public static EC2HardwareBuilder i2_8xlarge() {
-      return new EC2HardwareBuilder(InstanceType.I2_8XLARGE)
+      return new EC2HardwareBuilder(InstanceType.I2_8XLARGE).i2()
               .ram(244 * 1024)
               .processors(ImmutableList.of(new Processor(32.0, 3.25)))
               .volumes(ImmutableList.<Volume> of(
@@ -794,7 +901,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
    }
 
    public static EC2HardwareBuilder hi1_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.HI1_4XLARGE)
+      return new EC2HardwareBuilder(InstanceType.HI1_4XLARGE).hi1()
             .ram(60 * 1024 + 512)
             .processors(ImmutableList.of(new Processor(16.0, 2.1875)))
             .volumes(ImmutableList.<Volume> of(
@@ -811,7 +918,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
             'q', 'r', 's', 't', 'u', 'v', 'w', 'x')) {
          all24Volumes.add(new 
VolumeBuilder().type(LOCAL).size(twoTB).device("/dev/sd" + 
letter).bootDevice(false).durable(false).build());
       }
-      return new EC2HardwareBuilder(InstanceType.HS1_8XLARGE)
+      return new EC2HardwareBuilder(InstanceType.HS1_8XLARGE).hs1()
             .ram(117 * 1024)
             .processors(ImmutableList.of(new Processor(16.0, 2.1875)))
             .volumes(all24Volumes.build())
@@ -822,7 +929,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#R3_LARGE
     */
    public static EC2HardwareBuilder r3_large() {
-      return new EC2HardwareBuilder(InstanceType.R3_LARGE)
+      return new EC2HardwareBuilder(InstanceType.R3_LARGE).r3()
             .ram(15616)
             .processors(ImmutableList.of(new Processor(2.0, 2.5)))
             .volumes(ImmutableList.<Volume> of(
@@ -834,7 +941,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#R3_XLARGE
     */
    public static EC2HardwareBuilder r3_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.R3_XLARGE)
+      return new EC2HardwareBuilder(InstanceType.R3_XLARGE).r3()
             .ram(31232)
             .processors(ImmutableList.of(new Processor(4.0, 2.5)))
             .volumes(ImmutableList.<Volume> of(
@@ -846,7 +953,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#R3_2XLARGE
     */
    public static EC2HardwareBuilder r3_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.R3_2XLARGE)
+      return new EC2HardwareBuilder(InstanceType.R3_2XLARGE).r3()
             .ram(62464)
             .processors(ImmutableList.of(new Processor(8.0, 2.5)))
             .volumes(ImmutableList.<Volume> of(
@@ -858,7 +965,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#R3_4XLARGE
     */
    public static EC2HardwareBuilder r3_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.R3_4XLARGE)
+      return new EC2HardwareBuilder(InstanceType.R3_4XLARGE).r3()
             .ram(124928)
             .processors(ImmutableList.of(new Processor(16.0, 2.5)))
             .volumes(ImmutableList.<Volume> of(
@@ -870,7 +977,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
     * @see InstanceType#R3_8XLARGE
     */
    public static EC2HardwareBuilder r3_8xlarge() {
-      return new EC2HardwareBuilder(InstanceType.R3_8XLARGE)
+      return new EC2HardwareBuilder(InstanceType.R3_8XLARGE).r3()
             .ram(249856)
             .processors(ImmutableList.of(new Processor(32.0, 2.5)))
             .volumes(ImmutableList.<Volume> of(
@@ -882,6 +989,7 @@ public class EC2HardwareBuilder extends HardwareBuilder {
    @SuppressWarnings("unchecked")
    @Override
    public Hardware build() {
+      Preconditions.checkNotNull(virtualizationType, "virtualizationType");
       boolean reset = false;
       if (this.supportsImage == null)
          reset = true;

Reply via email to