http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
deleted file mode 100644
index 185644e..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/EC2HardwareBuilder.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.domain;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.not;
-import static org.jclouds.compute.domain.Volume.Type.LOCAL;
-import static org.jclouds.compute.predicates.ImagePredicates.any;
-import static org.jclouds.compute.predicates.ImagePredicates.idIn;
-
-import java.net.URI;
-import java.util.List;
-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;
-import org.jclouds.compute.predicates.ImagePredicates;
-import org.jclouds.domain.Location;
-import org.jclouds.ec2.domain.InstanceType;
-import org.jclouds.ec2.domain.RootDeviceType;
-import org.jclouds.ec2.domain.VirtualizationType;
-
-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;
-
-/**
- * 
- * @author Adrian Cole
- * @see <a href=
- *      
"http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?instance-types.html";
- *      />
- */
-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> imageIds = any();
-   private Predicate<Image> is64Bit = any();
-
-   public EC2HardwareBuilder() {
-      this.supportsImage = null;
-   }
-
-   /**
-    * evaluates true if the Image has the following rootDeviceType
-    * 
-    * @param type
-    *           rootDeviceType of the image
-    * @return predicate
-    */
-   public static class RequiresRootDeviceType implements Predicate<Image> {
-      final RootDeviceType type;
-
-      public RequiresRootDeviceType(final RootDeviceType type) {
-         this.type = checkNotNull(type, "type must be defined");
-      }
-
-      @Override
-      public boolean apply(Image image) {
-         return image.getUserMetadata().containsKey("rootDeviceType")
-               && type == 
RootDeviceType.fromValue(image.getUserMetadata().get("rootDeviceType"));
-      }
-
-      @Override
-      public String toString() {
-         return "requiresRootDeviceType(" + type + ")";
-      }
-
-   }
-
-   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
-    * 
-    * @param type
-    *           virtualizationType of the image
-    * @return predicate
-    */
-   public static class RequiresVirtualizationType implements Predicate<Image> {
-      final VirtualizationType type;
-
-      public RequiresVirtualizationType(final VirtualizationType type) {
-         this.type = checkNotNull(type, "type must be defined");
-      }
-
-      @Override
-      public boolean apply(Image image) {
-         return image.getOperatingSystem() != null && 
image.getOperatingSystem().getArch() != null
-               && type == 
VirtualizationType.fromValue(image.getOperatingSystem().getArch());
-      }
-
-      @Override
-      public String toString() {
-         return "requiresVirtualizationType(" + type + ")";
-      }
-
-   }
-
-   public EC2HardwareBuilder(String instanceType) {
-      ids(instanceType);
-   }
-
-   public EC2HardwareBuilder virtualizationType(VirtualizationType 
virtualizationType) {
-      this.virtualizationType = new 
RequiresVirtualizationType(virtualizationType);
-      return this;
-   }
-
-   public EC2HardwareBuilder rootDeviceType(RootDeviceType rootDeviceType) {
-      this.rootDeviceType = new RequiresRootDeviceType(rootDeviceType);
-      return this;
-   }
-
-   public EC2HardwareBuilder supportsImageIds(Iterable<String> ids) {
-      this.imageIds = idIn(ids);
-      return this;
-   }
-
-   public EC2HardwareBuilder ids(String id) {
-      return EC2HardwareBuilder.class.cast(super.ids(id));
-   }
-
-   public EC2HardwareBuilder ram(int ram) {
-      return EC2HardwareBuilder.class.cast(super.ram(ram));
-   }
-
-   public EC2HardwareBuilder processors(List<Processor> processors) {
-      return EC2HardwareBuilder.class.cast(super.processors(processors));
-   }
-
-   public EC2HardwareBuilder volumes(List<Volume> volumes) {
-      return EC2HardwareBuilder.class.cast(super.volumes(volumes));
-   }
-
-   public EC2HardwareBuilder supportsImage(Predicate<Image> supportsImage) {
-      return EC2HardwareBuilder.class.cast(super.supportsImage(supportsImage));
-   }
-
-   public EC2HardwareBuilder is64Bit(boolean is64Bit) {
-      this.is64Bit = is64Bit ? ImagePredicates.is64Bit() : 
not(ImagePredicates.is64Bit());
-      return this;
-   }
-
-   public EC2HardwareBuilder id(String id) {
-      return EC2HardwareBuilder.class.cast(super.id(id));
-   }
-
-   @Override
-   public EC2HardwareBuilder providerId(String providerId) {
-      return EC2HardwareBuilder.class.cast(super.providerId(providerId));
-   }
-
-   @Override
-   public EC2HardwareBuilder name(String name) {
-      return EC2HardwareBuilder.class.cast(super.name(name));
-   }
-
-   @Override
-   public EC2HardwareBuilder location(Location location) {
-      return EC2HardwareBuilder.class.cast(super.location(location));
-   }
-
-   @Override
-   public EC2HardwareBuilder uri(URI uri) {
-      return EC2HardwareBuilder.class.cast(super.uri(uri));
-   }
-
-   @Override
-   public EC2HardwareBuilder userMetadata(Map<String, String> userMetadata) {
-      return EC2HardwareBuilder.class.cast(super.userMetadata(userMetadata));
-   }
-
-   /**
-    * @see InstanceType#M1_SMALL
-    */
-   public static EC2HardwareBuilder m1_small() {
-      return new EC2HardwareBuilder(InstanceType.M1_SMALL)
-            .ram(1740)
-            .processors(ImmutableList.of(new Processor(1.0, 1.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(150.0f).device("/dev/sda2").bootDevice(false).durable(false).build()));
-   }
-
-   /**
-    * @see InstanceType#M1_MEDIUM
-    */
-   public static EC2HardwareBuilder m1_medium() {
-      return new EC2HardwareBuilder(InstanceType.M1_MEDIUM)
-            .ram(3750)
-            .processors(ImmutableList.of(new Processor(1.0, 2.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(420.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sdc").bootDevice(false).durable(false).build()));
-   }
-
-
-   /**
-    * @see InstanceType#T1_MICRO
-    */
-   public static EC2HardwareBuilder t1_micro() {
-      return new EC2HardwareBuilder(InstanceType.T1_MICRO).ram(630)
-            .processors(ImmutableList.of(new Processor(1.0, 
1.0))).rootDeviceType(RootDeviceType.EBS);
-   }
-
-   /**
-    * @see InstanceType#M1_LARGE
-    */
-   public static EC2HardwareBuilder m1_large() {
-      return new EC2HardwareBuilder(InstanceType.M1_LARGE)
-            .ram(7680)
-            .processors(ImmutableList.of(new Processor(2.0, 2.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(420.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-            .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#M1_XLARGE
-    */
-   public static EC2HardwareBuilder m1_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M1_XLARGE)
-            .ram(15360)
-            .processors(ImmutableList.of(new Processor(4.0, 2.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(420.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sdc").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sdd").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sde").bootDevice(false).durable(false).build()))
-            .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#M2_XLARGE
-    */
-   public static EC2HardwareBuilder m2_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M2_XLARGE).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()))
-            .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#M2_2XLARGE
-    */
-   public static EC2HardwareBuilder m2_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M2_2XLARGE)
-            .ram(35020)
-            .processors(ImmutableList.of(new Processor(4.0, 3.25)))
-            .volumes(ImmutableList.<Volume> of(
-                  new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(840.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
-            .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#M2_4XLARGE
-    */
-   public static EC2HardwareBuilder m2_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M2_4XLARGE)
-            .ram(70041)
-            .processors(ImmutableList.of(new Processor(8.0, 3.25)))
-            .volumes(ImmutableList.<Volume> of(
-                  new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(840.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(840.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-            .is64Bit(true);
-   }
-   
-   /**
-    * @see InstanceType#M3_MEDIUM
-    */
-   public static EC2HardwareBuilder m3_medium() {
-      return new EC2HardwareBuilder(InstanceType.M3_MEDIUM)
-            .ram(3840)
-            .processors(ImmutableList.of(new Processor(1.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(4.0f).device("/dev/sdb").bootDevice(false).durable(false).build()));
-   }
-
-   /**
-    * @see InstanceType#M3_LARGE
-    */
-   public static EC2HardwareBuilder m3_large() {
-      return new EC2HardwareBuilder(InstanceType.M3_LARGE)
-            .ram(7680)
-            .processors(ImmutableList.of(new Processor(2.0, 3.25)))
-            .volumes(ImmutableList.<Volume> of(
-                  new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(32.0f).device("/dev/sdb").bootDevice(false).durable(false).build()));
-   }
-
-   /**
-    * @see InstanceType#M3_XLARGE
-    */
-   public static EC2HardwareBuilder m3_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.M3_XLARGE).ram(15360)
-            .processors(ImmutableList.of(new Processor(4.0, 
3.25))).rootDeviceType(RootDeviceType.EBS).is64Bit(true);
-   }
-
-   /**
-    * @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))).rootDeviceType(RootDeviceType.EBS).is64Bit(true);
-   }
-   
-   /**
-    * @see InstanceType#C1_MEDIUM
-    */
-   public static EC2HardwareBuilder c1_medium() {
-      return new EC2HardwareBuilder(InstanceType.C1_MEDIUM)
-            .ram(1740)
-            .processors(ImmutableList.of(new Processor(2.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(340.0f).device("/dev/sda2").bootDevice(false).durable(false).build()));
-   }
-
-   /**
-    * @see InstanceType#C1_XLARGE
-    */
-   public static EC2HardwareBuilder c1_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C1_XLARGE)
-            .ram(7168)
-            .processors(ImmutableList.of(new Processor(8.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(420.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sdc").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sdd").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(420.0f).device("/dev/sde").bootDevice(false).durable(false).build()))
-            .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#C3_LARGE
-    */
-   public static EC2HardwareBuilder c3_large() {
-      return new EC2HardwareBuilder(InstanceType.C3_LARGE)
-              .ram(3750)
-              .processors(ImmutableList.of(new Processor(2.0, 3.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(16.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(16.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-              .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#C3_XLARGE
-    */
-   public static EC2HardwareBuilder c3_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C3_XLARGE)
-              .ram(7168)
-              .processors(ImmutableList.of(new Processor(4.0, 3.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(40.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(40.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-              .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#C3_2XLARGE
-    */
-   public static EC2HardwareBuilder c3_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C3_2XLARGE)
-              .ram(15360)
-              .processors(ImmutableList.of(new Processor(8.0, 3.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(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()))
-              .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#C3_4XLARGE
-    */
-   public static EC2HardwareBuilder c3_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C3_4XLARGE)
-              .ram(30720)
-              .processors(ImmutableList.of(new Processor(16.0, 3.4375)))
-              .volumes(ImmutableList.<Volume> of(
-                    new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(160.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(160.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-              .is64Bit(true);
-   }
-
-   /**
-    * @see InstanceType#C3_8XLARGE
-    */
-   public static EC2HardwareBuilder c3_8xlarge() {
-      return new EC2HardwareBuilder(InstanceType.C3_8XLARGE)
-              .ram(61440)
-              .processors(ImmutableList.of(new Processor(32.0, 3.375)))
-              .volumes(ImmutableList.<Volume> of(
-                    new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(320.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(320.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-              .is64Bit(true);
-   }
-
-   public static EC2HardwareBuilder cg1_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.CG1_4XLARGE)
-            .ram(22 * 1024)
-            .processors(ImmutableList.of(new Processor(4.0, 4.0), new 
Processor(4.0, 4.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(840.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(840.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-            .virtualizationType(VirtualizationType.HVM);
-   }
-
-   public static EC2HardwareBuilder cc1_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.CC1_4XLARGE)
-            .ram(23 * 1024)
-            .processors(ImmutableList.of(new Processor(4.0, 4.0), new 
Processor(4.0, 4.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(840.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(840.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-            .virtualizationType(VirtualizationType.HVM);
-   }
-
-   public static EC2HardwareBuilder cc2_8xlarge() {
-      return new EC2HardwareBuilder(InstanceType.CC2_8XLARGE)
-            .ram(60 * 1024 + 512)
-            .processors(ImmutableList.of(new Processor(8.0, 5.5), new 
Processor(8.0, 5.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(840.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(840.0f).device("/dev/sdc").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(840.0f).device("/dev/sdd").bootDevice(false).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(840.0f).device("/dev/sde").bootDevice(false).durable(false).build()))
-            .virtualizationType(VirtualizationType.HVM);
-   }
-
-   /**
-    * @see InstanceType#G2_2XLARGE
-    */
-   public static EC2HardwareBuilder g2_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.G2_2XLARGE)
-           .ram(15*1024)
-            .processors(ImmutableList.of(new Processor(8.0, 3.25)))
-            .volumes(ImmutableList.<Volume> of(
-                  new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(60.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
-            .virtualizationType(VirtualizationType.HVM);
-   }
-
-   /**
-    * @see InstanceType#I2_XLARGE
-    */
-   public static EC2HardwareBuilder i2_xlarge() {
-      return new EC2HardwareBuilder(InstanceType.I2_XLARGE)
-              .ram(30 * 1024 + 512)
-              .processors(ImmutableList.of(new Processor(4.0, 3.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(800.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
-              .virtualizationType(VirtualizationType.HVM);
-   }
-
-   /**
-    * @see InstanceType#I2_2XLARGE
-    */
-   public static EC2HardwareBuilder i2_2xlarge() {
-      return new EC2HardwareBuilder(InstanceType.I2_2XLARGE)
-              .ram(61 * 1024)
-              .processors(ImmutableList.of(new Processor(8.0, 3.375)))
-              .volumes(ImmutableList.<Volume> of(
-                    new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdc").bootDevice(false).durable(false).build()))
-              .virtualizationType(VirtualizationType.HVM);
-   }
-
-   /**
-    * @see InstanceType#I2_4XLARGE
-    */
-   public static EC2HardwareBuilder i2_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.I2_4XLARGE)
-              .ram(122 * 1024)
-              .processors(ImmutableList.of(new Processor(16.0, 3.3125)))
-              .volumes(ImmutableList.<Volume> of(
-                    new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdc").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdd").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sde").bootDevice(false).durable(false).build()))
-              .virtualizationType(VirtualizationType.HVM);
-   }
-
-   /**
-    * @see InstanceType#I2_8XLARGE
-    */
-   public static EC2HardwareBuilder i2_8xlarge() {
-      return new EC2HardwareBuilder(InstanceType.I2_8XLARGE)
-              .ram(244 * 1024)
-              .processors(ImmutableList.of(new Processor(32.0, 3.25)))
-              .volumes(ImmutableList.<Volume> of(
-                    new 
VolumeBuilder().type(LOCAL).size(10.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdb").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdc").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdd").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sde").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdf").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdg").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdh").bootDevice(false).durable(false).build(),
-                    new 
VolumeBuilder().type(LOCAL).size(800.0f).device("/dev/sdi").bootDevice(false).durable(false).build()))
-              .virtualizationType(VirtualizationType.HVM);
-   }
-
-   public static EC2HardwareBuilder hi1_4xlarge() {
-      return new EC2HardwareBuilder(InstanceType.HI1_4XLARGE)
-            .ram(60 * 1024 + 512)
-            .processors(ImmutableList.of(new Processor(16.0, 2.1875)))
-            .volumes(ImmutableList.<Volume> of(
-                  new 
VolumeBuilder().type(LOCAL).size(1024.0f).device("/dev/sda1").bootDevice(true).durable(false).build(),
-                  new 
VolumeBuilder().type(LOCAL).size(1024.0f).device("/dev/sdb").bootDevice(false).durable(false).build()))
-            .virtualizationType(VirtualizationType.HVM);
-   }
-   
-   public static EC2HardwareBuilder hs1_8xlarge() {
-      float twoTB = 2048.0f * 1024.0f;
-      Builder<Volume> all24Volumes = ImmutableList.<Volume>builder();
-      all24Volumes.add(new 
VolumeBuilder().type(LOCAL).size(twoTB).device("/dev/sda1").bootDevice(true).durable(false).build());
-      for (char letter : ImmutableSet.of('b', 'c', 'd', 'e', 'f', 'g', 'h', 
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
-            '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)
-            .ram(117 * 1024)
-            .processors(ImmutableList.of(new Processor(16.0, 2.1875)))
-            .volumes(all24Volumes.build())
-            .virtualizationType(VirtualizationType.HVM);
-   }
-   
-   @SuppressWarnings("unchecked")
-   @Override
-   public Hardware build() {
-      boolean reset = false;
-      if (this.supportsImage == null)
-         reset = true;
-      try {
-         supportsImage = Predicates.<Image> and(rootDeviceType, 
virtualizationType, imageIds, is64Bit);
-         return super.build();
-      } finally {
-         if (reset)
-            this.supportsImage = null;
-      }
-
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/PasswordDataAndPrivateKey.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/PasswordDataAndPrivateKey.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/PasswordDataAndPrivateKey.java
deleted file mode 100644
index 9e0748f..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/PasswordDataAndPrivateKey.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.domain;
-
-import org.jclouds.ec2.domain.PasswordData;
-
-import com.google.common.base.Objects;
-
-/**
- * An encrypted Windows Administrator password, and the private key that can 
decrypt it.
- * 
- * @author Richard Downer
- */
-public class PasswordDataAndPrivateKey {
-
-   private final PasswordData passwordData;
-   private final String privateKey;
-
-   public PasswordDataAndPrivateKey(PasswordData passwordData, String 
privateKey) {
-      this.passwordData = passwordData;
-      this.privateKey = privateKey;
-   }
-
-   public PasswordData getPasswordData() {
-      return passwordData;
-   }
-
-   public String getPrivateKey() {
-      return privateKey;
-   }
-
-   /**
-    * {@inheritDoc}
-    */
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(passwordData, privateKey);
-   }
-
-   /**
-    * {@inheritDoc}
-    */
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj)
-         return true;
-      if (obj == null)
-         return false;
-      if (getClass() != obj.getClass())
-         return false;
-      PasswordDataAndPrivateKey other = 
PasswordDataAndPrivateKey.class.cast(obj);
-      return Objects.equal(this.passwordData, other.passwordData) && 
Objects.equal(this.privateKey, other.privateKey);
-   }
-
-   /**
-    * {@inheritDoc}
-    */
-   @Override
-   public String toString() {
-      return Objects.toStringHelper(this).omitNullValues().add("passwordData", 
passwordData).toString();
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/RegionAndName.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/RegionAndName.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/RegionAndName.java
deleted file mode 100644
index bdfc04d..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/RegionAndName.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.domain;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.base.Objects.ToStringHelper;
-
-/**
- * 
- * @author Adrian Cole
- */
-public class RegionAndName {
-
-   protected final String region;
-   protected final String name;
-
-   public String slashEncode() {
-      return new StringBuilder(region).append('/').append(name).toString();
-   }
-
-   public RegionAndName(String region, String name) {
-      this.region = checkNotNull(region, "region");
-      this.name = checkNotNull(name, "name");
-   }
-   
-   @Override
-   public int hashCode() {
-      return Objects.hashCode(region, name);
-   }
-
-   @Override
-   public boolean equals(Object obj) {
-      if (this == obj)
-         return true;
-      if (obj == null)
-         return false;
-      if (!(obj instanceof RegionAndName))
-         return false;
-      RegionAndName other = RegionAndName.class.cast(obj);
-      return Objects.equal(region, other.region) && Objects.equal(name, 
other.name);
-   }
-
-   public String getRegion() {
-      return region;
-   }
-
-   public String getName() {
-      return name;
-   }
-
-   @Override
-   public String toString() {
-      return string().toString();
-   }
-
-   protected ToStringHelper string() {
-      return Objects.toStringHelper("").add("region", region).add("name", 
name);
-   }
-
-   private static enum RegionFunction implements Function<RegionAndName, 
String> {
-      INSTANCE;
-      @Override
-      public String apply(RegionAndName input) {
-         return input.getRegion();
-      }
-
-      @Override
-      public String toString() {
-         return "getRegion()";
-      }
-   };
-
-   public static Function<RegionAndName, String> regionFunction() {
-      return RegionFunction.INSTANCE;
-   }
-
-   private static enum NameFunction implements Function<RegionAndName, String> 
{
-      INSTANCE;
-      @Override
-      public String apply(RegionAndName input) {
-         return input.getName();
-      }
-
-      @Override
-      public String toString() {
-         return "getName()";
-      }
-   };
-
-   public static Function<RegionAndName, String> nameFunction() {
-      return NameFunction.INSTANCE;
-   }
-   
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/RegionNameAndIngressRules.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/RegionNameAndIngressRules.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/RegionNameAndIngressRules.java
deleted file mode 100644
index 0063104..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/domain/RegionNameAndIngressRules.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.domain;
-
-/**
- * 
- * @author Adrian Cole
- */
-public class RegionNameAndIngressRules extends RegionAndName {
-   private final int[] ports;
-   private final boolean authorizeSelf;
-
-   public RegionNameAndIngressRules(String region, String tag, int[] ports, 
boolean authorizeSelf) {
-      super(region, tag);
-      this.ports = ports;
-      this.authorizeSelf = authorizeSelf;
-   }
-
-   // intentionally not overriding equals or hash-code so that we can search 
only by region/tag in a
-   // map
-
-   public int[] getPorts() {
-      return ports;
-   }
-
-   public boolean shouldAuthorizeSelf() {
-      return authorizeSelf;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/extensions/EC2ImageExtension.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/extensions/EC2ImageExtension.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/extensions/EC2ImageExtension.java
deleted file mode 100644
index fe3dc9b..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/extensions/EC2ImageExtension.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.extensions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.Iterables.find;
-import static com.google.common.collect.Iterables.getOnlyElement;
-import static 
org.jclouds.compute.config.ComputeServiceProperties.TIMEOUT_IMAGE_AVAILABLE;
-import static org.jclouds.location.predicates.LocationPredicates.idEquals;
-
-import java.util.NoSuchElementException;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.jclouds.Constants;
-import org.jclouds.aws.util.AWSUtils;
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.domain.CloneImageTemplate;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.ImageBuilder;
-import org.jclouds.compute.domain.ImageTemplate;
-import org.jclouds.compute.domain.ImageTemplateBuilder;
-import org.jclouds.compute.domain.OperatingSystem;
-import org.jclouds.compute.extensions.ImageExtension;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.domain.Location;
-import org.jclouds.ec2.EC2Api;
-import org.jclouds.ec2.domain.Reservation;
-import org.jclouds.ec2.domain.RunningInstance;
-import org.jclouds.ec2.options.CreateImageOptions;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.util.concurrent.Atomics;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.UncheckedTimeoutException;
-
-/**
- * EC2 implementation of {@link ImageExtension} please note that {@link 
#createImage(ImageTemplate)}
- * only works by cloning EBS backed instances for the moment.
- * 
- * @author David Alves
- * 
- */
-public class EC2ImageExtension implements ImageExtension {
-
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   protected Logger logger = Logger.NULL;
-   private final EC2Api ec2Api;
-   private final ListeningExecutorService userExecutor;
-   private final Supplier<Set<? extends Location>> locations;
-   private final Predicate<AtomicReference<Image>> imageAvailablePredicate;
-   
-   @Inject
-   public EC2ImageExtension(EC2Api ec2Api, 
@Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor,
-         @Memoized Supplier<Set<? extends Location>> locations,
-         @Named(TIMEOUT_IMAGE_AVAILABLE) Predicate<AtomicReference<Image>> 
imageAvailablePredicate) {
-      this.ec2Api = checkNotNull(ec2Api, "ec2Api");
-      this.userExecutor = checkNotNull(userExecutor, "userExecutor");
-      this.locations = checkNotNull(locations, "locations");
-      this.imageAvailablePredicate = checkNotNull(imageAvailablePredicate, 
"imageAvailablePredicate");
-   }
-
-   @Override
-   public ImageTemplate buildImageTemplateFromNode(String name, String id) {
-      String[] parts = AWSUtils.parseHandle(id);
-      String region = parts[0];
-      String instanceId = parts[1];
-      Reservation<? extends RunningInstance> instance = 
getOnlyElement(ec2Api.getInstanceApi().get()
-            .describeInstancesInRegion(region, instanceId));
-      if (instance == null)
-         throw new NoSuchElementException("Cannot find server with id: " + id);
-      CloneImageTemplate template = new 
ImageTemplateBuilder.CloneImageTemplateBuilder().nodeId(id).name(name).build();
-      return template;
-   }
-
-   @Override
-   public ListenableFuture<Image> createImage(ImageTemplate template) {
-      checkState(template instanceof CloneImageTemplate, " ec2 only supports 
creating images through cloning.");
-      CloneImageTemplate cloneTemplate = (CloneImageTemplate) template;
-      String[] parts = AWSUtils.parseHandle(cloneTemplate.getSourceNodeId());
-      String region = parts[0];
-      String instanceId = parts[1];
-
-      String imageId = ec2Api.getAMIApi().get().createImageInRegion(region, 
cloneTemplate.getName(), instanceId,
-            CreateImageOptions.NONE);
-
-      final AtomicReference<Image> image = Atomics.newReference(new 
ImageBuilder()
-            .location(find(locations.get(), idEquals(region)))
-            .id(region + "/" + imageId)
-            .providerId(imageId)
-            .description(cloneTemplate.getName())
-            
.operatingSystem(OperatingSystem.builder().description(cloneTemplate.getName()).build())
-            .status(Image.Status.PENDING).build());
-      
-      return userExecutor.submit(new Callable<Image>() {
-         @Override
-         public Image call() throws Exception {
-            if (imageAvailablePredicate.apply(image))
-               return image.get();
-            // TODO: get rid of the expectation that the image will be 
available, as it is very brittle
-            throw new UncheckedTimeoutException("Image was not created within 
the time limit: " + image.get());
-         }
-      });
-   }
-
-   @Override
-   public boolean deleteImage(String id) {
-      String[] parts = AWSUtils.parseHandle(id);
-      String region = parts[0];
-      String instanceId = parts[1];
-      try {
-         ec2Api.getAMIApi().get().deregisterImageInRegion(region, instanceId);
-         return true;
-      } catch (Exception e) {
-         return false;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
deleted file mode 100644
index a9e1741..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/extensions/EC2SecurityGroupExtension.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.extensions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.notNull;
-import static com.google.common.collect.Iterables.concat;
-import static com.google.common.collect.Iterables.filter;
-import static com.google.common.collect.Iterables.getOnlyElement;
-import static com.google.common.collect.Iterables.transform;
-
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.jclouds.Constants;
-import org.jclouds.aws.util.AWSUtils;
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.domain.SecurityGroup;
-import org.jclouds.compute.extensions.SecurityGroupExtension;
-import org.jclouds.compute.functions.GroupNamingConvention;
-import org.jclouds.compute.functions.GroupNamingConvention.Factory;
-import org.jclouds.domain.Location;
-import org.jclouds.ec2.EC2Api;
-import org.jclouds.ec2.compute.domain.RegionAndName;
-import org.jclouds.ec2.compute.domain.RegionNameAndIngressRules;
-import org.jclouds.ec2.domain.RunningInstance;
-import org.jclouds.ec2.domain.UserIdGroupPair;
-import org.jclouds.location.Region;
-import org.jclouds.net.domain.IpPermission;
-import org.jclouds.net.domain.IpProtocol;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Multimap;
-import com.google.common.util.concurrent.ListeningExecutorService;
-
-/**
- * An extension to compute service to allow for the manipulation of {@link 
SecurityGroup}s. Implementation
- * is optional by providers.
- * 
- * @author Andrew Bayer
- */
-public class EC2SecurityGroupExtension implements SecurityGroupExtension {
-
-   protected final EC2Api client;
-   protected final ListeningExecutorService userExecutor;
-   protected final Supplier<Set<String>> regions;
-   protected final Function<org.jclouds.ec2.domain.SecurityGroup, 
SecurityGroup> groupConverter;
-   protected final Supplier<Set<? extends Location>> locations;
-   protected final LoadingCache<RegionAndName, String> groupCreator;
-   protected final Factory namingConvention;
-
-   @Inject
-   public EC2SecurityGroupExtension(EC2Api client,
-                                    @Named(Constants.PROPERTY_USER_THREADS) 
ListeningExecutorService userExecutor,
-                                    @Region Supplier<Set<String>> regions,
-                                    
Function<org.jclouds.ec2.domain.SecurityGroup, SecurityGroup> groupConverter,
-                                    @Memoized Supplier<Set<? extends 
Location>> locations,
-                                    @Named("SECURITY") 
LoadingCache<RegionAndName, String> groupCreator,
-                                    GroupNamingConvention.Factory 
namingConvention) {
-                                    
-      this.client = checkNotNull(client, "client");
-      this.userExecutor = checkNotNull(userExecutor, "userExecutor");
-      this.regions = checkNotNull(regions, "regions");
-      this.groupConverter = checkNotNull(groupConverter, "groupConverter");
-      this.locations = checkNotNull(locations, "locations");
-      this.groupCreator = checkNotNull(groupCreator, "groupCreator");
-      this.namingConvention = checkNotNull(namingConvention, 
"namingConvention");
-   }
-
-   @Override
-   public Set<SecurityGroup> listSecurityGroups() {
-      Iterable<? extends org.jclouds.ec2.domain.SecurityGroup> rawGroups = 
pollSecurityGroups();
-      Iterable<SecurityGroup> groups = transform(filter(rawGroups, notNull()),
-                                                 groupConverter);
-      return ImmutableSet.copyOf(groups);
-   }
-
-
-   @Override
-   public Set<SecurityGroup> listSecurityGroupsInLocation(final Location 
location) {
-      String region = AWSUtils.getRegionFromLocationOrNull(location);
-      if (region == null) {
-         return ImmutableSet.of();
-      }
-      return listSecurityGroupsInLocation(region);
-   }
-
-   public Set<SecurityGroup> listSecurityGroupsInLocation(String region) {
-      Iterable<? extends org.jclouds.ec2.domain.SecurityGroup> rawGroups = 
pollSecurityGroupsByRegion(region);
-      Iterable<SecurityGroup> groups = transform(filter(rawGroups, notNull()),
-                                                 groupConverter);
-      return ImmutableSet.copyOf(groups);
-   }
-   
-   @Override
-   public Set<SecurityGroup> listSecurityGroupsForNode(String id) {
-      checkNotNull(id, "id");
-      String[] parts = AWSUtils.parseHandle(id);
-      String region = parts[0];
-      String instanceId = parts[1];
-      
-      RunningInstance instance = 
getOnlyElement(Iterables.concat(client.getInstanceApi().get().describeInstancesInRegion(region,
 instanceId)));
-
-      if (instance == null) {
-         return ImmutableSet.of();
-      }
-      
-      Set<String> groupNames = instance.getGroupNames();
-      Set<? extends org.jclouds.ec2.domain.SecurityGroup> rawGroups =
-         
client.getSecurityGroupApi().get().describeSecurityGroupsInRegion(region, 
Iterables.toArray(groupNames, String.class));
-      
-      return ImmutableSet.copyOf(transform(filter(rawGroups, notNull()), 
groupConverter));
-   }
-
-   @Override
-   public SecurityGroup getSecurityGroupById(String id) {
-      checkNotNull(id, "id");
-      String[] parts = AWSUtils.parseHandle(id);
-      String region = parts[0];
-      String groupId = parts[1];
-
-      Set<? extends org.jclouds.ec2.domain.SecurityGroup> rawGroups =
-         
client.getSecurityGroupApi().get().describeSecurityGroupsInRegion(region, 
groupId);
-      
-      return getOnlyElement(transform(filter(rawGroups, notNull()), 
groupConverter));
-   }
-
-   @Override
-   public SecurityGroup createSecurityGroup(String name, Location location) {
-      String region = AWSUtils.getRegionFromLocationOrNull(location);
-      if (region != null) {
-         return createSecurityGroup(name, region);
-      } else {
-         return null;
-      }
-   }
-   
-   public SecurityGroup createSecurityGroup(String name, String region) {
-      String markerGroup = namingConvention.create().sharedNameForGroup(name);
-      RegionNameAndIngressRules regionAndName = new 
RegionNameAndIngressRules(region, markerGroup, new int[] {},
-                                                                              
false);
-
-      groupCreator.getUnchecked(regionAndName);
-
-      return getSecurityGroupById(regionAndName.slashEncode());
-   }
-
-   @Override
-   public boolean removeSecurityGroup(String id) {
-      checkNotNull(id, "id");
-      String[] parts = AWSUtils.parseHandle(id);
-      String region = parts[0];
-      String groupName = parts[1];
-      
-      if 
(client.getSecurityGroupApi().get().describeSecurityGroupsInRegion(region, 
groupName).size() > 0) {
-         
client.getSecurityGroupApi().get().deleteSecurityGroupInRegion(region, 
groupName);
-         // TODO: test this clear happens
-         groupCreator.invalidate(new RegionNameAndIngressRules(region, 
groupName, null, false));
-         return true;
-      }
-
-      return false;
-   }
-
-
-   @Override
-   public SecurityGroup addIpPermission(IpPermission ipPermission, 
SecurityGroup group) {
-      String region = 
AWSUtils.getRegionFromLocationOrNull(group.getLocation());
-      String name = group.getName();
-
-      if (ipPermission.getCidrBlocks().size() > 0) {
-         for (String cidr : ipPermission.getCidrBlocks()) {
-            client.getSecurityGroupApi().get().
-               authorizeSecurityGroupIngressInRegion(region,
-                                                     name,
-                                                     
ipPermission.getIpProtocol(),
-                                                     
ipPermission.getFromPort(),
-                                                     ipPermission.getToPort(),
-                                                     cidr);
-         }
-      }
-
-      if (ipPermission.getTenantIdGroupNamePairs().size() > 0) {
-         for (String userId : 
ipPermission.getTenantIdGroupNamePairs().keySet()) {
-            for (String groupName : 
ipPermission.getTenantIdGroupNamePairs().get(userId)) {
-               client.getSecurityGroupApi().get().
-                  authorizeSecurityGroupIngressInRegion(region,
-                                                        name,
-                                                        new 
UserIdGroupPair(userId, groupName));
-            }
-         }
-      }
-
-      return getSecurityGroupById(new RegionAndName(region, 
group.getName()).slashEncode());
-   }
-
-   @Override
-   public SecurityGroup addIpPermission(IpProtocol protocol, int startPort, 
int endPort,
-                                        Multimap<String, String> 
tenantIdGroupNamePairs,
-                                        Iterable<String> ipRanges,
-                                        Iterable<String> groupIds, 
SecurityGroup group) {
-      String region = 
AWSUtils.getRegionFromLocationOrNull(group.getLocation());
-      String name = group.getName();
-
-      if (Iterables.size(ipRanges) > 0) {
-         for (String cidr : ipRanges) {
-            client.getSecurityGroupApi().get().
-               authorizeSecurityGroupIngressInRegion(region,
-                                                     name,
-                                                     protocol,
-                                                     startPort,
-                                                     endPort,
-                                                     cidr);
-         }
-      }
-
-      if (tenantIdGroupNamePairs.size() > 0) {
-         for (String userId : tenantIdGroupNamePairs.keySet()) {
-            for (String groupName : tenantIdGroupNamePairs.get(userId)) {
-               client.getSecurityGroupApi().get().
-                  authorizeSecurityGroupIngressInRegion(region,
-                                                        name,
-                                                        new 
UserIdGroupPair(userId, groupName));
-            }
-         }
-      }
-      
-      return getSecurityGroupById(new RegionAndName(region, 
group.getName()).slashEncode());
-   }
-      
-   @Override
-   public SecurityGroup removeIpPermission(IpPermission ipPermission, 
SecurityGroup group) {
-      String region = 
AWSUtils.getRegionFromLocationOrNull(group.getLocation());
-      String name = group.getName();
-
-      if (ipPermission.getCidrBlocks().size() > 0) {
-         for (String cidr : ipPermission.getCidrBlocks()) {
-            client.getSecurityGroupApi().get().
-               revokeSecurityGroupIngressInRegion(region,
-                                                  name,
-                                                  ipPermission.getIpProtocol(),
-                                                  ipPermission.getFromPort(),
-                                                  ipPermission.getToPort(),
-                                                  cidr);
-         }
-      }
-
-      if (ipPermission.getTenantIdGroupNamePairs().size() > 0) {
-         for (String userId : 
ipPermission.getTenantIdGroupNamePairs().keySet()) {
-            for (String groupName : 
ipPermission.getTenantIdGroupNamePairs().get(userId)) {
-               client.getSecurityGroupApi().get().
-                  revokeSecurityGroupIngressInRegion(region,
-                                                     name,
-                                                     new 
UserIdGroupPair(userId, groupName));
-            }
-         }
-      }
-
-      return getSecurityGroupById(new RegionAndName(region, 
group.getName()).slashEncode());
-   }
-
-   @Override
-   public SecurityGroup removeIpPermission(IpProtocol protocol, int startPort, 
int endPort,
-                                           Multimap<String, String> 
tenantIdGroupNamePairs,
-                                           Iterable<String> ipRanges,
-                                           Iterable<String> groupIds, 
SecurityGroup group) {
-      String region = 
AWSUtils.getRegionFromLocationOrNull(group.getLocation());
-      String name = group.getName();
-
-      if (Iterables.size(ipRanges) > 0) {
-         for (String cidr : ipRanges) {
-            client.getSecurityGroupApi().get().
-               revokeSecurityGroupIngressInRegion(region,
-                                                  name,
-                                                  protocol,
-                                                  startPort,
-                                                  endPort,
-                                                  cidr);
-         }
-      }
-
-      if (tenantIdGroupNamePairs.size() > 0) {
-         for (String userId : tenantIdGroupNamePairs.keySet()) {
-            for (String groupName : tenantIdGroupNamePairs.get(userId)) {
-               client.getSecurityGroupApi().get().
-                  revokeSecurityGroupIngressInRegion(region,
-                                                     name,
-                                                     new 
UserIdGroupPair(userId, groupName));
-            }
-         }
-      }
-      
-      return getSecurityGroupById(new RegionAndName(region, 
group.getName()).slashEncode());
-   }
-
-   @Override
-   public boolean supportsTenantIdGroupNamePairs() {
-      return true;
-   }
-
-   @Override
-   public boolean supportsTenantIdGroupIdPairs() {
-      return false;
-   }
-
-   @Override
-   public boolean supportsGroupIds() {
-      return false;
-   }
-
-   @Override
-   public boolean supportsPortRangesForGroups() {
-      return false;
-   }
-
-   protected Iterable<? extends org.jclouds.ec2.domain.SecurityGroup> 
pollSecurityGroups() {
-      Iterable<? extends Set<? extends org.jclouds.ec2.domain.SecurityGroup>> 
groups
-         = transform(regions.get(), allSecurityGroupsInRegion());
-      
-      return concat(groups);
-   }
-
-   
-   protected Iterable<? extends org.jclouds.ec2.domain.SecurityGroup> 
pollSecurityGroupsByRegion(String region) {
-      return allSecurityGroupsInRegion().apply(region);
-   }
-
-   protected Function<String, Set<? extends 
org.jclouds.ec2.domain.SecurityGroup>> allSecurityGroupsInRegion() {
-      return new Function<String, Set<? extends 
org.jclouds.ec2.domain.SecurityGroup>>() {
-         
-         @Override
-         public Set<? extends org.jclouds.ec2.domain.SecurityGroup> 
apply(String from) {
-            return 
client.getSecurityGroupApi().get().describeSecurityGroupsInRegion(from);
-         }
-         
-      };
-   }
-
-   protected Location findLocationWithId(final String locationId) {
-      if (locationId == null)
-         return null;
-      try {
-         Location location = Iterables.find(locations.get(), new 
Predicate<Location>() {
-
-            @Override
-            public boolean apply(Location input) {
-               return input.getId().equals(locationId);
-            }
-
-         });
-         return location;
-
-      } catch (NoSuchElementException e) {
-         return null;
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/AddElasticIpsToNodemetadata.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/AddElasticIpsToNodemetadata.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/AddElasticIpsToNodemetadata.java
deleted file mode 100644
index cfb18d1..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/AddElasticIpsToNodemetadata.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.concurrent.ExecutionException;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.aws.util.AWSUtils;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.NodeMetadataBuilder;
-import org.jclouds.ec2.compute.domain.RegionAndName;
-
-import com.google.common.base.Function;
-import com.google.common.base.Throwables;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * This class searches for elastic ip addresses that are associated with the 
node, and adds them to
- * the publicIpAddress collection if present.
- * 
- * @author Adrian Cole
- */
-@Singleton
-public class AddElasticIpsToNodemetadata implements Function<NodeMetadata, 
NodeMetadata> {
-
-   private final LoadingCache<RegionAndName, String> cache;
-
-   @Inject
-   protected AddElasticIpsToNodemetadata(@Named("ELASTICIP") 
LoadingCache<RegionAndName, String> cache) {
-      this.cache = checkNotNull(cache, "cache");
-   }
-
-   // Note: Instances only have one Internet routable IP address. When an 
Elastic IP is associated to an
-   // instance, the instance's existing Public IP address mapping is removed 
and is no longer valid for this instance
-   // http://aws.amazon.com/articles/1346
-
-   // TODO can there be multiple elastic ips on one instance?
-   @Override
-   public NodeMetadata apply(NodeMetadata arg0) {
-      String[] parts = AWSUtils.parseHandle(arg0.getId());
-      String region = parts[0];
-      String instanceId = parts[1];
-      try {
-         String publicIp = cache.get(new RegionAndName(region, instanceId));
-         // Replace existing public addresses with elastic IP (see note above)
-         return NodeMetadataBuilder.fromNodeMetadata(arg0)
-                 .publicAddresses(ImmutableSet.<String> 
builder().add(publicIp).build()).build();
-      } catch (CacheLoader.InvalidCacheLoadException e) {
-         // no ip was found
-         return arg0;
-      } catch (ExecutionException e) {
-         throw Throwables.propagate(e);
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/CreateUniqueKeyPair.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/CreateUniqueKeyPair.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/CreateUniqueKeyPair.java
deleted file mode 100644
index 412cda2..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/CreateUniqueKeyPair.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.functions.GroupNamingConvention;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.ec2.EC2Api;
-import org.jclouds.ec2.compute.domain.RegionAndName;
-import org.jclouds.ec2.domain.KeyPair;
-import org.jclouds.logging.Logger;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.inject.Inject;
-
-/**
- * 
- * @author Adrian Cole
- */
-@Singleton
-public class CreateUniqueKeyPair implements Function<RegionAndName, KeyPair> {
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   protected Logger logger = Logger.NULL;
-   protected final EC2Api ec2Api;
-   protected final GroupNamingConvention.Factory namingConvention;
-
-   @Inject
-   public CreateUniqueKeyPair(EC2Api ec2Api, GroupNamingConvention.Factory 
namingConvention) {
-      this.ec2Api = ec2Api;
-      this.namingConvention = checkNotNull(namingConvention, 
"namingConvention");
-   }
-
-   @Override
-   public KeyPair apply(RegionAndName from) {
-      return createNewKeyPairInRegion(from.getRegion(), from.getName());
-   }
-
-   @VisibleForTesting
-   KeyPair createNewKeyPairInRegion(String region, String group) {
-      checkNotNull(region, "region");
-      checkNotNull(group, "group");
-      logger.debug(">> creating keyPair region(%s) group(%s)", region, group);
-      KeyPair keyPair = null;
-      String prefix = group;
-      
-      while (keyPair == null) {
-         String keyName = namingConvention.create().uniqueNameForGroup(prefix);
-         try {
-            keyPair = 
ec2Api.getKeyPairApi().get().createKeyPairInRegion(region, keyName);
-         } catch (IllegalStateException e) {
-            logger.trace("   invalid keyname (%s in %s); retrying", keyName, 
region);
-         }
-      }
-      
-      logger.debug("<< created keyPair(%s)", keyPair);
-      return keyPair;
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/CredentialsForInstance.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/CredentialsForInstance.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/CredentialsForInstance.java
deleted file mode 100644
index c6849f8..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/CredentialsForInstance.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ExecutionException;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.domain.Image;
-import org.jclouds.domain.LoginCredentials;
-import org.jclouds.ec2.compute.domain.RegionAndName;
-import org.jclouds.ec2.domain.KeyPair;
-import org.jclouds.ec2.domain.RunningInstance;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Supplier;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-
-/**
- * 
- * @author Adrian Cole
- */
-@Singleton
-public class CredentialsForInstance extends CacheLoader<RunningInstance, 
Optional<LoginCredentials>> {
-
-   private final ConcurrentMap<RegionAndName, KeyPair> credentialsMap;
-   private final Supplier<LoadingCache<RegionAndName, ? extends Image>> 
imageMap;
-   private final Function<RunningInstance, LoginCredentials> 
passwordCredentialsFromWindowsInstance;
-
-   @Inject
-   CredentialsForInstance(ConcurrentMap<RegionAndName, KeyPair> credentialsMap,
-            Supplier<LoadingCache<RegionAndName, ? extends Image>> imageMap, 
Function<RunningInstance, LoginCredentials> 
passwordCredentialsFromWindowsInstance) {
-      this.credentialsMap = checkNotNull(credentialsMap, "credentialsMap");
-      this.imageMap = checkNotNull(imageMap, "imageMap");
-      this.passwordCredentialsFromWindowsInstance = 
checkNotNull(passwordCredentialsFromWindowsInstance, 
"passwordCredentialsFromWindowsInstance");
-   }
-
-   @Override
-   public Optional<LoginCredentials> load(final RunningInstance instance) 
throws ExecutionException {
-      if ("windows".equals(instance.getPlatform())) {
-         return 
Optional.of(passwordCredentialsFromWindowsInstance.apply(instance));
-      } else  if (instance.getKeyName() != null) {
-         return 
Optional.of(LoginCredentials.builder().user(getLoginAccountFor(instance)).privateKey(getPrivateKeyOrNull(instance)).build());
-      }
-      return Optional.absent();
-   }
-
-   @VisibleForTesting
-   String getPrivateKeyOrNull(RunningInstance instance) {
-      KeyPair keyPair = credentialsMap.get(new 
RegionAndName(instance.getRegion(), instance.getKeyName()));
-      return keyPair != null ? keyPair.getKeyMaterial() : null;
-   }
-
-   @VisibleForTesting
-   String getLoginAccountFor(RunningInstance from) throws ExecutionException {
-      return imageMap.get().get(new RegionAndName(from.getRegion(), 
from.getImageId())).getDefaultCredentials().identity;
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2ImageParser.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2ImageParser.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2ImageParser.java
deleted file mode 100644
index 202b4f9..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2ImageParser.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static 
org.jclouds.compute.util.ComputeServiceUtils.parseOsFamilyOrUnrecognized;
-
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.Image.Status;
-import org.jclouds.compute.domain.ImageBuilder;
-import org.jclouds.compute.domain.OperatingSystem;
-import org.jclouds.compute.domain.OsFamily;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import 
org.jclouds.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy;
-import org.jclouds.compute.util.ComputeServiceUtils;
-import org.jclouds.domain.Location;
-import org.jclouds.domain.LocationBuilder;
-import org.jclouds.domain.LocationScope;
-import org.jclouds.ec2.compute.strategy.ReviseParsedImage;
-import org.jclouds.ec2.domain.Image.Architecture;
-import org.jclouds.ec2.domain.Image.ImageState;
-import org.jclouds.ec2.domain.Image.ImageType;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-
-/**
- * @author Adrian Cole
- */
-@Singleton
-public class EC2ImageParser implements Function<org.jclouds.ec2.domain.Image, 
Image> {
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   protected Logger logger = Logger.NULL;
-   
-   private final Map<ImageState, Status> toPortableImageStatus;
-   private final PopulateDefaultLoginCredentialsForImageStrategy 
credentialProvider;
-   private final Supplier<Set<? extends Location>> locations;
-   private final Supplier<Location> defaultLocation;
-   private final Map<OsFamily, Map<String, String>> osVersionMap;
-   private final ReviseParsedImage reviseParsedImage;
-
-
-   @Inject
-   public EC2ImageParser(Map<ImageState, Image.Status> toPortableImageStatus,
-            PopulateDefaultLoginCredentialsForImageStrategy credentialProvider,
-            Map<OsFamily, Map<String, String>> osVersionMap, @Memoized 
Supplier<Set<? extends Location>> locations,
-            Supplier<Location> defaultLocation, ReviseParsedImage 
reviseParsedImage) {
-      this.toPortableImageStatus = checkNotNull(toPortableImageStatus, 
"toPortableImageStatus");
-      this.credentialProvider = checkNotNull(credentialProvider, 
"credentialProvider");
-      this.locations = checkNotNull(locations, "locations");
-      this.defaultLocation = checkNotNull(defaultLocation, "defaultLocation");
-      this.osVersionMap = checkNotNull(osVersionMap, "osVersionMap");
-      this.reviseParsedImage = checkNotNull(reviseParsedImage, 
"reviseParsedImage");
-   }
-
-   @Override
-   public Image apply(final org.jclouds.ec2.domain.Image from) {
-      if (from.getImageType() != ImageType.MACHINE) {
-         return null;
-      }
-      ImageBuilder builder = new ImageBuilder();
-      builder.providerId(from.getId());
-      builder.id(from.getRegion() + "/" + from.getId());
-      builder.name(from.getName());
-      builder.description(from.getDescription() != null ? 
from.getDescription() : from.getImageLocation());
-      builder.userMetadata(ImmutableMap.<String, String> 
builder().put("owner", from.getImageOwnerId()).put(
-               "rootDeviceType", 
from.getRootDeviceType().value()).put("virtualizationType",
-               from.getVirtualizationType().value()).put("hypervisor", 
from.getHypervisor().value()).build());
-
-      OperatingSystem.Builder osBuilder = OperatingSystem.builder();
-      osBuilder.is64Bit(from.getArchitecture() == Architecture.X86_64);
-      OsFamily family = parseOsFamily(from);
-      osBuilder.family(family);
-      
osBuilder.version(ComputeServiceUtils.parseVersionOrReturnEmptyString(family, 
from.getImageLocation(),
-               osVersionMap));
-      osBuilder.description(from.getImageLocation());
-      osBuilder.arch(from.getVirtualizationType().value());
-
-      reviseParsedImage.reviseParsedImage(from, builder, family, osBuilder);
-
-      builder.defaultCredentials(credentialProvider.apply(from));
-
-      try {
-         builder.location(Iterables.find(locations.get(), new 
Predicate<Location>() {
-
-            @Override
-            public boolean apply(Location input) {
-               return input.getId().equals(from.getRegion());
-            }
-
-         }));
-      } catch (NoSuchElementException e) {
-         logger.error("unknown region %s for image %s; not in %s", 
from.getRegion(), from.getId(), locations);
-         builder.location(new 
LocationBuilder().scope(LocationScope.REGION).id(from.getRegion()).description(
-                  from.getRegion()).parent(defaultLocation.get()).build());
-      }
-      builder.operatingSystem(osBuilder.build());
-      builder.status(toPortableImageStatus.get(from.getImageState()));
-      builder.backendStatus(from.getRawState());
-      return builder.build();
-   }
-
-   /** 
-    * First treats windows as a special case: check if platform==windows.
-    * Then tries matching based on the image name.
-    * And then falls back to checking other types of platform.
-    */
-   private OsFamily parseOsFamily(org.jclouds.ec2.domain.Image from) {
-      if (from.getPlatform() != null && 
from.getPlatform().equalsIgnoreCase("windows")) {
-         return OsFamily.WINDOWS;
-      }
-      
-      OsFamily family = parseOsFamilyOrUnrecognized(from.getImageLocation());
-      if (family == OsFamily.UNRECOGNIZED && from.getPlatform() != null) {
-         family = parseOsFamilyOrUnrecognized(from.getPlatform());
-      }
-      return family;
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2SecurityGroupIdFromName.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2SecurityGroupIdFromName.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2SecurityGroupIdFromName.java
deleted file mode 100644
index f7bc3fb..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2SecurityGroupIdFromName.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.aws.util.AWSUtils;
-import org.jclouds.ec2.EC2Api;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-
-/**
- * @author Andrew Bayer
- */
-@Singleton
-public class EC2SecurityGroupIdFromName implements Function<String, String> {
-   protected EC2Api api;
-
-   @Inject
-   public EC2SecurityGroupIdFromName(EC2Api api) {
-      this.api = checkNotNull(api, "api");
-   }
-
-   @Override
-   public String apply(String input) {
-      checkNotNull(input, "input");
-      String[] parts = AWSUtils.parseHandle(input);
-      String region = parts[0];
-      String name = parts[1];
-
-      return  
Iterables.getOnlyElement(api.getSecurityGroupApi().get().describeSecurityGroupsInRegion(region,
 name), null).getId();
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/89fab312/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2SecurityGroupToSecurityGroup.java
----------------------------------------------------------------------
diff --git 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2SecurityGroupToSecurityGroup.java
 
b/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2SecurityGroupToSecurityGroup.java
deleted file mode 100644
index ffa5443..0000000
--- 
a/dependencies/jclouds/apis/ec2/1.7.1-stratos/src/main/java/org/jclouds/ec2/compute/functions/EC2SecurityGroupToSecurityGroup.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.ec2.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.domain.SecurityGroup;
-import org.jclouds.compute.domain.SecurityGroupBuilder;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.domain.Location;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.collect.Iterables;
-import com.google.inject.Inject;
-
-
-/**
- * A function for transforming an EC2-specific SecurityGroup into a generic
- * SecurityGroup object.
- * 
- * @author Andrew Bayer
- */
-@Singleton
-public class EC2SecurityGroupToSecurityGroup implements 
Function<org.jclouds.ec2.domain.SecurityGroup, SecurityGroup> {
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   protected Logger logger = Logger.NULL;
-   
-   protected final Supplier<Set<? extends Location>> locations;
-
-   @Inject
-   public EC2SecurityGroupToSecurityGroup(@Memoized Supplier<Set<? extends 
Location>> locations) {
-      this.locations = checkNotNull(locations, "locations");
-   }
-
-   @Override
-   public SecurityGroup apply(org.jclouds.ec2.domain.SecurityGroup group) {
-      SecurityGroupBuilder builder = new SecurityGroupBuilder();
-      Location location = findLocationWithId(group.getRegion());
-      builder.location(location);
-      builder.id(group.getRegion() + "/" + idOrName(group));
-      builder.providerId(group.getId());
-      builder.name(group.getName());
-      builder.ipPermissions(group);
-      builder.ownerId(group.getOwnerId());
-      
-      return builder.build();
-   }
-
-   protected String idOrName(org.jclouds.ec2.domain.SecurityGroup group) {
-      return group.getName();
-   }
-
-   private Location findLocationWithId(final String locationId) {
-      if (locationId == null)
-         return null;
-      try {
-         Location location = Iterables.find(locations.get(), new 
Predicate<Location>() {
-
-            @Override
-            public boolean apply(Location input) {
-               return input.getId().equals(locationId);
-            }
-
-         });
-         return location;
-
-      } catch (NoSuchElementException e) {
-         logger.debug("couldn't match instance location %s in: %s", 
locationId, locations.get());
-         return null;
-      }
-   }
-}

Reply via email to