You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ab...@apache.org on 2013/07/02 19:06:06 UTC

[1/2] JCLOUDS-150. Deprecate EC2 *Client, add dummy *Api classes.

Updated Branches:
  refs/heads/1.6.x 3731f812c -> 264d47e3c


http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Api.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Api.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Api.java
new file mode 100644
index 0000000..0fd931c
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Api.java
@@ -0,0 +1,122 @@
+/*
+ * 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.aws.ec2;
+
+import org.jclouds.aws.ec2.features.AWSAMIApi;
+import org.jclouds.aws.ec2.features.AWSInstanceApi;
+import org.jclouds.aws.ec2.features.AWSKeyPairApi;
+import org.jclouds.aws.ec2.features.AWSSecurityGroupApi;
+import org.jclouds.aws.ec2.features.MonitoringApi;
+import org.jclouds.aws.ec2.features.PlacementGroupApi;
+import org.jclouds.aws.ec2.features.SpotInstanceApi;
+import org.jclouds.ec2.EC2Api;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.Region;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.Delegate;
+import org.jclouds.rest.annotations.EndpointParam;
+
+import com.google.common.base.Optional;
+
+/**
+ * Provides synchronous access to EC2 services.
+ * 
+ * Note that this class is transitionary and will fully replace AWSEC2Client in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface AWSEC2Api extends EC2Api {
+
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends AWSInstanceApi> getInstanceApi();
+
+   @Delegate
+   @Override
+   Optional<? extends AWSInstanceApi> getInstanceApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends AWSSecurityGroupApi> getSecurityGroupApi();
+
+   @Delegate
+   @Override
+   Optional<? extends AWSSecurityGroupApi> getSecurityGroupApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+   
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends AWSAMIApi> getAMIApi();
+
+   @Delegate
+   @Override
+   Optional<? extends AWSAMIApi> getAMIApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+
+   /**
+    * Provides synchronous access to PlacementGroup services.
+    */
+   @Delegate
+   Optional<? extends PlacementGroupApi> getPlacementGroupApi();
+   
+   @Delegate
+   Optional<? extends PlacementGroupApi> getPlacementGroupApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * Provides synchronous access to Monitoring services.
+    */
+   @Delegate
+   Optional<? extends MonitoringApi> getMonitoringApi();
+   
+   @Delegate
+   Optional<? extends MonitoringApi> getMonitoringApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends AWSKeyPairApi> getKeyPairApi();
+   
+   @Delegate
+   @Override
+   Optional<? extends AWSKeyPairApi> getKeyPairApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+   
+   /**
+    * Provides synchronous access to SpotInstance services.
+    */
+   @Delegate
+   Optional<? extends SpotInstanceApi> getSpotInstanceApi();
+   
+   @Delegate
+   Optional<? extends SpotInstanceApi> getSpotInstanceApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2AsyncApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2AsyncApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2AsyncApi.java
new file mode 100644
index 0000000..65b0f96
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2AsyncApi.java
@@ -0,0 +1,122 @@
+/*
+ * 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.aws.ec2;
+
+import org.jclouds.aws.ec2.features.AWSAMIAsyncApi;
+import org.jclouds.aws.ec2.features.AWSInstanceAsyncApi;
+import org.jclouds.aws.ec2.features.AWSKeyPairAsyncApi;
+import org.jclouds.aws.ec2.features.AWSSecurityGroupAsyncApi;
+import org.jclouds.aws.ec2.features.MonitoringAsyncApi;
+import org.jclouds.aws.ec2.features.PlacementGroupAsyncApi;
+import org.jclouds.aws.ec2.features.SpotInstanceAsyncApi;
+import org.jclouds.ec2.EC2AsyncApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.Region;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.Delegate;
+import org.jclouds.rest.annotations.EndpointParam;
+
+import com.google.common.base.Optional;
+
+/**
+ * Provides synchronous access to EC2 services.
+ * 
+ * @deprecated Note that this class is transitionary and will be removed in 1.7.
+ * @author Adrian Cole
+ */
+@Deprecated
+public interface AWSEC2AsyncApi extends EC2AsyncApi {
+
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends AWSInstanceAsyncApi> getInstanceApi();
+
+   @Delegate
+   @Override
+   Optional<? extends AWSInstanceAsyncApi> getInstanceApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends AWSSecurityGroupAsyncApi> getSecurityGroupApi();
+
+   @Delegate
+   @Override
+   Optional<? extends AWSSecurityGroupAsyncApi> getSecurityGroupApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+   
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends AWSAMIAsyncApi> getAMIApi();
+
+   @Delegate
+   @Override
+   Optional<? extends AWSAMIAsyncApi> getAMIApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+
+   /**
+    * Provides synchronous access to PlacementGroup services.
+    */
+   @Delegate
+   Optional<? extends PlacementGroupAsyncApi> getPlacementGroupApi();
+   
+   @Delegate
+   Optional<? extends PlacementGroupAsyncApi> getPlacementGroupApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * Provides synchronous access to Monitoring services.
+    */
+   @Delegate
+   Optional<? extends MonitoringAsyncApi> getMonitoringApi();
+   
+   @Delegate
+   Optional<? extends MonitoringAsyncApi> getMonitoringApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends AWSKeyPairAsyncApi> getKeyPairApi();
+   
+   @Delegate
+   @Override
+   Optional<? extends AWSKeyPairAsyncApi> getKeyPairApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+   
+   /**
+    * Provides synchronous access to SpotInstance services.
+    */
+   @Delegate
+   Optional<? extends SpotInstanceAsyncApi> getSpotInstanceApi();
+   
+   @Delegate
+   Optional<? extends SpotInstanceAsyncApi> getSpotInstanceApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Client.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Client.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Client.java
index a605e3c..740ca56 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Client.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Client.java
@@ -29,8 +29,10 @@ import org.jclouds.rest.annotations.Delegate;
 /**
  * Provides synchronous access to EC2 services.
  * 
+ * @deprecated This class's functionality is being moved in 1.7.0. Please use AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface AWSEC2Client extends EC2Client {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/config/AWSEC2RestClientModule.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/config/AWSEC2RestClientModule.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/config/AWSEC2RestClientModule.java
index 0ebba84..ca4c98d 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/config/AWSEC2RestClientModule.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/config/AWSEC2RestClientModule.java
@@ -21,10 +21,26 @@ import java.util.Map;
 
 import javax.inject.Singleton;
 
+import org.jclouds.aws.ec2.AWSEC2Api;
+import org.jclouds.aws.ec2.AWSEC2AsyncApi;
 import org.jclouds.aws.ec2.AWSEC2AsyncClient;
 import org.jclouds.aws.ec2.AWSEC2Client;
 import org.jclouds.aws.ec2.domain.AWSRunningInstance;
 import org.jclouds.aws.ec2.domain.SpotInstanceRequest;
+import org.jclouds.aws.ec2.features.AWSAMIAsyncApi;
+import org.jclouds.aws.ec2.features.AWSAMIApi;
+import org.jclouds.aws.ec2.features.AWSInstanceAsyncApi;
+import org.jclouds.aws.ec2.features.AWSInstanceApi;
+import org.jclouds.aws.ec2.features.AWSKeyPairAsyncApi;
+import org.jclouds.aws.ec2.features.AWSKeyPairApi;
+import org.jclouds.aws.ec2.features.AWSSecurityGroupAsyncApi;
+import org.jclouds.aws.ec2.features.AWSSecurityGroupApi;
+import org.jclouds.aws.ec2.features.MonitoringAsyncApi;
+import org.jclouds.aws.ec2.features.MonitoringApi;
+import org.jclouds.aws.ec2.features.PlacementGroupAsyncApi;
+import org.jclouds.aws.ec2.features.PlacementGroupApi;
+import org.jclouds.aws.ec2.features.SpotInstanceAsyncApi;
+import org.jclouds.aws.ec2.features.SpotInstanceApi;
 import org.jclouds.aws.ec2.functions.SpotInstanceRequestToAWSRunningInstance;
 import org.jclouds.aws.ec2.options.AWSRunInstancesOptions;
 import org.jclouds.aws.ec2.services.AWSAMIAsyncClient;
@@ -41,9 +57,23 @@ import org.jclouds.aws.ec2.services.PlacementGroupAsyncClient;
 import org.jclouds.aws.ec2.services.PlacementGroupClient;
 import org.jclouds.aws.ec2.services.SpotInstanceAsyncClient;
 import org.jclouds.aws.ec2.services.SpotInstanceClient;
+import org.jclouds.ec2.EC2Api;
+import org.jclouds.ec2.EC2AsyncApi;
 import org.jclouds.ec2.EC2AsyncClient;
 import org.jclouds.ec2.EC2Client;
 import org.jclouds.ec2.config.EC2RestClientModule;
+import org.jclouds.ec2.features.AMIAsyncApi;
+import org.jclouds.ec2.features.AMIApi;
+import org.jclouds.ec2.features.AvailabilityZoneAndRegionAsyncApi;
+import org.jclouds.ec2.features.AvailabilityZoneAndRegionApi;
+import org.jclouds.ec2.features.ElasticBlockStoreAsyncApi;
+import org.jclouds.ec2.features.ElasticBlockStoreApi;
+import org.jclouds.ec2.features.ElasticIPAddressAsyncApi;
+import org.jclouds.ec2.features.ElasticIPAddressApi;
+import org.jclouds.ec2.features.InstanceAsyncApi;
+import org.jclouds.ec2.features.InstanceApi;
+import org.jclouds.ec2.features.SecurityGroupAsyncApi;
+import org.jclouds.ec2.features.SecurityGroupApi;
 import org.jclouds.ec2.features.SubnetApi;
 import org.jclouds.ec2.features.SubnetAsyncApi;
 import org.jclouds.ec2.features.TagApi;
@@ -80,21 +110,31 @@ import com.google.inject.TypeLiteral;
 @ConfiguresRestClient
 public class AWSEC2RestClientModule extends EC2RestClientModule<AWSEC2Client, AWSEC2AsyncClient> {
 
-   public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()//
-         .put(AWSAMIClient.class, AWSAMIAsyncClient.class)//
-         .put(ElasticIPAddressClient.class, ElasticIPAddressAsyncClient.class)//
-         .put(AWSInstanceClient.class, AWSInstanceAsyncClient.class)//
-         .put(AWSKeyPairClient.class, AWSKeyPairAsyncClient.class)//
-         .put(AWSSecurityGroupClient.class, AWSSecurityGroupAsyncClient.class)//
-         .put(PlacementGroupClient.class, PlacementGroupAsyncClient.class)//
-         .put(MonitoringClient.class, MonitoringAsyncClient.class)//
-         .put(WindowsClient.class, WindowsAsyncClient.class)//
-         .put(AvailabilityZoneAndRegionClient.class, AvailabilityZoneAndRegionAsyncClient.class)//
-         .put(ElasticBlockStoreClient.class, ElasticBlockStoreAsyncClient.class)//
-         .put(SpotInstanceClient.class, SpotInstanceAsyncClient.class)//
-         .put(WindowsApi.class, WindowsAsyncApi.class)//
-         .put(TagApi.class, TagAsyncApi.class)//
-         .put(SubnetApi.class, SubnetAsyncApi.class)//
+   public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()
+         .put(AWSAMIClient.class, AWSAMIAsyncClient.class)
+         .put(ElasticIPAddressClient.class, ElasticIPAddressAsyncClient.class)
+         .put(AWSInstanceClient.class, AWSInstanceAsyncClient.class)
+         .put(AWSKeyPairClient.class, AWSKeyPairAsyncClient.class)
+         .put(AWSSecurityGroupClient.class, AWSSecurityGroupAsyncClient.class)
+         .put(PlacementGroupClient.class, PlacementGroupAsyncClient.class)
+         .put(MonitoringClient.class, MonitoringAsyncClient.class)
+         .put(WindowsClient.class, WindowsAsyncClient.class)
+         .put(AvailabilityZoneAndRegionClient.class, AvailabilityZoneAndRegionAsyncClient.class)
+         .put(ElasticBlockStoreClient.class, ElasticBlockStoreAsyncClient.class)
+         .put(SpotInstanceClient.class, SpotInstanceAsyncClient.class)
+         .put(AWSAMIApi.class, AWSAMIAsyncApi.class)
+         .put(ElasticIPAddressApi.class, ElasticIPAddressAsyncApi.class)
+         .put(AWSInstanceApi.class, AWSInstanceAsyncApi.class)
+         .put(AWSKeyPairApi.class, AWSKeyPairAsyncApi.class)
+         .put(AWSSecurityGroupApi.class, AWSSecurityGroupAsyncApi.class)
+         .put(PlacementGroupApi.class, PlacementGroupAsyncApi.class)
+         .put(MonitoringApi.class, MonitoringAsyncApi.class)
+         .put(AvailabilityZoneAndRegionApi.class, AvailabilityZoneAndRegionAsyncApi.class)
+         .put(ElasticBlockStoreApi.class, ElasticBlockStoreAsyncApi.class)
+         .put(SpotInstanceApi.class, SpotInstanceAsyncApi.class)
+         .put(WindowsApi.class, WindowsAsyncApi.class)
+         .put(TagApi.class, TagAsyncApi.class)
+         .put(SubnetApi.class, SubnetAsyncApi.class)
          .build();
 
    public AWSEC2RestClientModule() {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSAMIApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSAMIApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSAMIApi.java
new file mode 100644
index 0000000..1157972
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSAMIApi.java
@@ -0,0 +1,51 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.AWSAMIClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.AMIApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to AMI Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface AWSAMIApi extends AWSAMIClient, AMIApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSAMIAsyncApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSAMIAsyncApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSAMIAsyncApi.java
new file mode 100644
index 0000000..78ae293
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSAMIAsyncApi.java
@@ -0,0 +1,53 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.AWSAMIAsyncClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.AMIAsyncApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to AMI Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface AWSAMIAsyncApi extends AWSAMIAsyncClient, AMIAsyncApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSInstanceApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSInstanceApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSInstanceApi.java
new file mode 100644
index 0000000..520a74d
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSInstanceApi.java
@@ -0,0 +1,51 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.AWSInstanceClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.InstanceApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to Instance Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface AWSInstanceApi extends AWSInstanceClient, InstanceApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSInstanceAsyncApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSInstanceAsyncApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSInstanceAsyncApi.java
new file mode 100644
index 0000000..cd18118
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSInstanceAsyncApi.java
@@ -0,0 +1,53 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.AWSInstanceAsyncClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.InstanceAsyncApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to Instance Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface AWSInstanceAsyncApi extends AWSInstanceAsyncClient, InstanceAsyncApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSKeyPairApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSKeyPairApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSKeyPairApi.java
new file mode 100644
index 0000000..1b8c63e
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSKeyPairApi.java
@@ -0,0 +1,51 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.AWSKeyPairClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.KeyPairApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to KeyPair Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface AWSKeyPairApi extends AWSKeyPairClient, KeyPairApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSKeyPairAsyncApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSKeyPairAsyncApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSKeyPairAsyncApi.java
new file mode 100644
index 0000000..5dc76b9
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSKeyPairAsyncApi.java
@@ -0,0 +1,53 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.AWSKeyPairAsyncClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.KeyPairAsyncApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to KeyPair Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface AWSKeyPairAsyncApi extends AWSKeyPairAsyncClient, KeyPairAsyncApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupApi.java
new file mode 100644
index 0000000..1c45990
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupApi.java
@@ -0,0 +1,51 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.AWSSecurityGroupClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.SecurityGroupApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to SecurityGroup Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface AWSSecurityGroupApi extends AWSSecurityGroupClient, SecurityGroupApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupAsyncApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupAsyncApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupAsyncApi.java
new file mode 100644
index 0000000..76e67d3
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupAsyncApi.java
@@ -0,0 +1,53 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.AWSSecurityGroupAsyncClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.SecurityGroupAsyncApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to SecurityGroup Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface AWSSecurityGroupAsyncApi extends AWSSecurityGroupAsyncClient, SecurityGroupAsyncApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringApi.java
new file mode 100644
index 0000000..97f5239
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringApi.java
@@ -0,0 +1,50 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.MonitoringClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to Monitoring Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface MonitoringApi extends MonitoringClient {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringAsyncApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringAsyncApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringAsyncApi.java
new file mode 100644
index 0000000..aa982ac
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringAsyncApi.java
@@ -0,0 +1,52 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.MonitoringAsyncClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to Monitoring Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface MonitoringAsyncApi extends MonitoringAsyncClient {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupApi.java
new file mode 100644
index 0000000..5823ab3
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupApi.java
@@ -0,0 +1,50 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.PlacementGroupClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to PlacementGroup Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface PlacementGroupApi extends PlacementGroupClient {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupAsyncApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupAsyncApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupAsyncApi.java
new file mode 100644
index 0000000..9091eaa
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupAsyncApi.java
@@ -0,0 +1,52 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.PlacementGroupAsyncClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to PlacementGroup Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface PlacementGroupAsyncApi extends PlacementGroupAsyncClient {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceApi.java
new file mode 100644
index 0000000..e0d2b2e
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceApi.java
@@ -0,0 +1,50 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.SpotInstanceClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to SpotInstance Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface SpotInstanceApi extends SpotInstanceClient {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceAsyncApi.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceAsyncApi.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceAsyncApi.java
new file mode 100644
index 0000000..6c4d316
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceAsyncApi.java
@@ -0,0 +1,52 @@
+/*
+ * 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.aws.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.services.SpotInstanceAsyncClient;
+import org.jclouds.aws.ec2.xml.ProductCodesHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to SpotInstance Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface SpotInstanceAsyncApi extends SpotInstanceAsyncClient {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIAsyncClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIAsyncClient.java
index 0a1c48b..f09aa6f 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIAsyncClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIAsyncClient.java
@@ -44,8 +44,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to AMI Services.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use AWSAMIApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface AWSAMIAsyncClient extends AMIAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIClient.java
index 75247ad..4051109 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIClient.java
@@ -24,8 +24,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use AWSAMIApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface AWSAMIClient extends AMIClient {
 
 

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceAsyncClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceAsyncClient.java
index de55b01..c149555 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceAsyncClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceAsyncClient.java
@@ -51,8 +51,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Instance Services via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use AWSInstanceApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface AWSInstanceAsyncClient extends InstanceAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceClient.java
index deb911b..bc38279 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceClient.java
@@ -27,8 +27,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use AWSInstanceApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface AWSInstanceClient extends InstanceClient {
 
    @Override

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairAsyncClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairAsyncClient.java
index 8cb9abd..789b1e4 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairAsyncClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairAsyncClient.java
@@ -40,8 +40,11 @@ import org.jclouds.rest.annotations.XMLResponseParser;
 import com.google.common.util.concurrent.ListenableFuture;
 
 /**
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use AWSKeyPairApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface AWSKeyPairAsyncClient extends KeyPairAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairClient.java
index 3d23d0b..754334d 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairClient.java
@@ -22,8 +22,10 @@ import org.jclouds.javax.annotation.Nullable;
 
 /**
  * 
+ * @deprecated This class is being moved in 1.7. Please use AWSKeyPairApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface AWSKeyPairClient extends KeyPairClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupAsyncClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupAsyncClient.java
index 75a6f9b..f0b0a54 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupAsyncClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupAsyncClient.java
@@ -54,8 +54,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 SecurityGroup Services via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use AWSSecurityGroupApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 @Beta

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupClient.java
index 383b0fd..ad72f62 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupClient.java
@@ -29,8 +29,10 @@ import com.google.common.annotations.Beta;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use AWSSecurityGroupApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @Beta
 public interface AWSSecurityGroupClient extends SecurityGroupClient {
    

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringAsyncClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringAsyncClient.java
index 61d96b4..b76aa64 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringAsyncClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringAsyncClient.java
@@ -44,8 +44,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Monitoring Services via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use MonitoringApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface MonitoringAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringClient.java
index 66c44ee..0497859 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringClient.java
@@ -25,8 +25,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Developer Guide.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use MonitoringApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface MonitoringClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupAsyncClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupAsyncClient.java
index bd79cb4..a99fb29 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupAsyncClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupAsyncClient.java
@@ -47,8 +47,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Placement Groups via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use PlacementGroupApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface PlacementGroupAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupClient.java
index 3dfd8cc..0472c04 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupClient.java
@@ -25,8 +25,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Developer Guide.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use PlacementGroupApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface PlacementGroupClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceAsyncClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceAsyncClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceAsyncClient.java
index bf773cd..f42a738 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceAsyncClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceAsyncClient.java
@@ -54,8 +54,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Spot Instances via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use SpotInstanceApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface SpotInstanceAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceClient.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceClient.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceClient.java
index d7ee047..70b088c 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceClient.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/SpotInstanceClient.java
@@ -29,8 +29,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Guide.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use SpotInstanceApi via AWSEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface SpotInstanceClient {
    /**
     * Describes Spot Instance requests. Spot Instances are instances that Amazon EC2 starts on your


[2/2] git commit: JCLOUDS-150. Deprecate EC2 *Client, add dummy *Api classes.

Posted by ab...@apache.org.
JCLOUDS-150. Deprecate EC2 *Client, add dummy *Api classes.


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

Branch: refs/heads/1.6.x
Commit: 264d47e3ce03c9ccc2dfbe0bda227c4132193d2c
Parents: 3731f81
Author: Andrew Bayer <an...@gmail.com>
Authored: Tue Jul 2 09:06:57 2013 -0700
Committer: Andrew Bayer <an...@gmail.com>
Committed: Tue Jul 2 09:06:57 2013 -0700

----------------------------------------------------------------------
 .../src/main/java/org/jclouds/ec2/EC2Api.java   |  77 ++++++++++++
 .../java/org/jclouds/ec2/EC2ApiMetadata.java    |   5 +-
 .../main/java/org/jclouds/ec2/EC2AsyncApi.java  |  77 ++++++++++++
 .../main/java/org/jclouds/ec2/EC2Client.java    |   4 +-
 .../jclouds/ec2/config/EC2RestClientModule.java |  43 +++++--
 .../java/org/jclouds/ec2/features/AMIApi.java   |  41 +++++++
 .../org/jclouds/ec2/features/AMIAsyncApi.java   |  46 +++++++
 .../features/AvailabilityZoneAndRegionApi.java  |  41 +++++++
 .../AvailabilityZoneAndRegionAsyncApi.java      |  46 +++++++
 .../ec2/features/ElasticBlockStoreApi.java      |  41 +++++++
 .../ec2/features/ElasticBlockStoreAsyncApi.java |  46 +++++++
 .../ec2/features/ElasticIPAddressApi.java       |  41 +++++++
 .../ec2/features/ElasticIPAddressAsyncApi.java  |  46 +++++++
 .../org/jclouds/ec2/features/InstanceApi.java   |  41 +++++++
 .../jclouds/ec2/features/InstanceAsyncApi.java  |  46 +++++++
 .../org/jclouds/ec2/features/KeyPairApi.java    |  41 +++++++
 .../jclouds/ec2/features/KeyPairAsyncApi.java   |  46 +++++++
 .../jclouds/ec2/features/SecurityGroupApi.java  |  41 +++++++
 .../ec2/features/SecurityGroupAsyncApi.java     |  46 +++++++
 .../org/jclouds/ec2/features/WindowsApi.java    |   5 +-
 .../jclouds/ec2/features/WindowsAsyncApi.java   |   5 +-
 .../jclouds/ec2/services/AMIAsyncClient.java    |   2 +
 .../org/jclouds/ec2/services/AMIClient.java     |   4 +-
 .../AvailabilityZoneAndRegionAsyncClient.java   |   3 +
 .../AvailabilityZoneAndRegionClient.java        |   2 +
 .../services/ElasticBlockStoreAsyncClient.java  |   3 +
 .../ec2/services/ElasticBlockStoreClient.java   |   2 +
 .../services/ElasticIPAddressAsyncClient.java   |   3 +
 .../ec2/services/ElasticIPAddressClient.java    |   2 +
 .../ec2/services/InstanceAsyncClient.java       |   3 +
 .../jclouds/ec2/services/InstanceClient.java    |   2 +
 .../ec2/services/KeyPairAsyncClient.java        |   3 +
 .../org/jclouds/ec2/services/KeyPairClient.java |   2 +
 .../ec2/services/SecurityGroupAsyncClient.java  |   3 +
 .../ec2/services/SecurityGroupClient.java       |   2 +
 .../ec2/services/WindowsAsyncClient.java        |   3 +
 .../org/jclouds/ec2/services/WindowsClient.java |   2 +
 .../jclouds/openstack/nova/ec2/NovaEC2Api.java  |  47 +++++++
 .../openstack/nova/ec2/NovaEC2AsyncApi.java     |  49 ++++++++
 .../openstack/nova/ec2/NovaEC2Client.java       |   2 +
 .../ec2/config/NovaEC2RestClientModule.java     |  49 ++++++--
 .../nova/ec2/features/NovaEC2KeyPairApi.java    |  50 ++++++++
 .../ec2/features/NovaEC2KeyPairAsyncApi.java    |  52 ++++++++
 .../ec2/services/NovaEC2KeyPairAsyncClient.java |   3 +
 .../nova/ec2/services/NovaEC2KeyPairClient.java |   2 +
 .../java/org/jclouds/aws/ec2/AWSEC2Api.java     | 122 +++++++++++++++++++
 .../org/jclouds/aws/ec2/AWSEC2AsyncApi.java     | 122 +++++++++++++++++++
 .../java/org/jclouds/aws/ec2/AWSEC2Client.java  |   2 +
 .../aws/ec2/config/AWSEC2RestClientModule.java  |  70 ++++++++---
 .../org/jclouds/aws/ec2/features/AWSAMIApi.java |  51 ++++++++
 .../aws/ec2/features/AWSAMIAsyncApi.java        |  53 ++++++++
 .../aws/ec2/features/AWSInstanceApi.java        |  51 ++++++++
 .../aws/ec2/features/AWSInstanceAsyncApi.java   |  53 ++++++++
 .../jclouds/aws/ec2/features/AWSKeyPairApi.java |  51 ++++++++
 .../aws/ec2/features/AWSKeyPairAsyncApi.java    |  53 ++++++++
 .../aws/ec2/features/AWSSecurityGroupApi.java   |  51 ++++++++
 .../ec2/features/AWSSecurityGroupAsyncApi.java  |  53 ++++++++
 .../jclouds/aws/ec2/features/MonitoringApi.java |  50 ++++++++
 .../aws/ec2/features/MonitoringAsyncApi.java    |  52 ++++++++
 .../aws/ec2/features/PlacementGroupApi.java     |  50 ++++++++
 .../ec2/features/PlacementGroupAsyncApi.java    |  52 ++++++++
 .../aws/ec2/features/SpotInstanceApi.java       |  50 ++++++++
 .../aws/ec2/features/SpotInstanceAsyncApi.java  |  52 ++++++++
 .../aws/ec2/services/AWSAMIAsyncClient.java     |   3 +
 .../jclouds/aws/ec2/services/AWSAMIClient.java  |   2 +
 .../ec2/services/AWSInstanceAsyncClient.java    |   3 +
 .../aws/ec2/services/AWSInstanceClient.java     |   2 +
 .../aws/ec2/services/AWSKeyPairAsyncClient.java |   3 +
 .../aws/ec2/services/AWSKeyPairClient.java      |   2 +
 .../services/AWSSecurityGroupAsyncClient.java   |   3 +
 .../ec2/services/AWSSecurityGroupClient.java    |   2 +
 .../aws/ec2/services/MonitoringAsyncClient.java |   3 +
 .../aws/ec2/services/MonitoringClient.java      |   2 +
 .../ec2/services/PlacementGroupAsyncClient.java |   3 +
 .../aws/ec2/services/PlacementGroupClient.java  |   2 +
 .../ec2/services/SpotInstanceAsyncClient.java   |   3 +
 .../aws/ec2/services/SpotInstanceClient.java    |   2 +
 77 files changed, 2149 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/EC2Api.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/EC2Api.java b/apis/ec2/src/main/java/org/jclouds/ec2/EC2Api.java
index 26cf10e..c393f77 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/EC2Api.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/EC2Api.java
@@ -18,6 +18,13 @@ package org.jclouds.ec2;
 
 import java.io.Closeable;
 import java.util.Set;
+import org.jclouds.ec2.features.AMIApi;
+import org.jclouds.ec2.features.AvailabilityZoneAndRegionApi;
+import org.jclouds.ec2.features.ElasticBlockStoreApi;
+import org.jclouds.ec2.features.ElasticIPAddressApi;
+import org.jclouds.ec2.features.InstanceApi;
+import org.jclouds.ec2.features.KeyPairApi;
+import org.jclouds.ec2.features.SecurityGroupApi;
 import org.jclouds.ec2.features.SubnetApi;
 import org.jclouds.ec2.features.TagApi;
 import org.jclouds.ec2.features.WindowsApi;
@@ -87,4 +94,74 @@ public interface EC2Api extends Closeable {
    @Delegate
    Optional<? extends SubnetApi> getSubnetApiForRegion(
             @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+  /**
+    * Provides synchronous access to AMI features.
+    */
+   @Delegate
+   Optional<? extends AMIApi> getAMIApi();
+
+   @Delegate
+   Optional<? extends AMIApi> getAMIApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+  
+  /**
+    * Provides synchronous access to Availability Zones and Regions services.
+    */
+   @Delegate
+   Optional<? extends AvailabilityZoneAndRegionApi> getAvailabilityZoneAndRegionApi();
+
+   @Delegate
+   Optional<? extends AvailabilityZoneAndRegionApi> getAvailabilityZoneAndRegionApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+  /**
+    * Provides synchronous Elastic Block Store services.
+    */
+   @Delegate
+   Optional<? extends ElasticBlockStoreApi> getElasticBlockStoreApi();
+
+   @Delegate
+   Optional<? extends ElasticBlockStoreApi> getElasticBlockStoreApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+  /**
+    * Provides synchronous Elastic IP services.
+    */
+   @Delegate
+   Optional<? extends ElasticIPAddressApi> getElasticIPAddressApi();
+
+   @Delegate
+   Optional<? extends ElasticIPAddressApi> getElasticIPAddressApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+  /**
+    * Provides synchronous Instance services.
+    */
+   @Delegate
+   Optional<? extends InstanceApi> getInstanceApi();
+
+   @Delegate
+   Optional<? extends InstanceApi> getInstanceApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+  /**
+    * Provides synchronous KeyPair services.
+    */
+   @Delegate
+   Optional<? extends KeyPairApi> getKeyPairApi();
+
+   @Delegate
+   Optional<? extends KeyPairApi> getKeyPairApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+  /**
+    * Provides synchronous SecurityGroup services.
+    */
+   @Delegate
+   Optional<? extends SecurityGroupApi> getSecurityGroupApi();
+
+   @Delegate
+   Optional<? extends SecurityGroupApi> getSecurityGroupApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
 }

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/EC2ApiMetadata.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/EC2ApiMetadata.java b/apis/ec2/src/main/java/org/jclouds/ec2/EC2ApiMetadata.java
index f380d46..0fff763 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/EC2ApiMetadata.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/EC2ApiMetadata.java
@@ -58,8 +58,9 @@ import com.google.inject.Module;
 public class EC2ApiMetadata extends BaseRestApiMetadata {
 
    /**
-    * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(EC2Client.class)} as
-    *             {@link EC2AsyncClient} interface will be removed in jclouds 1.7.
+    * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(EC2Api.class)} as
+    *             {@link EC2AsyncClient} interface will be removed and {@link EC2Client} will be
+    *             moved into {@link EC2Api} in jclouds 1.7
     */
    @Deprecated
    public static final TypeToken<org.jclouds.rest.RestContext<? extends EC2Client, ? extends EC2AsyncClient>> CONTEXT_TOKEN = new TypeToken<org.jclouds.rest.RestContext<? extends EC2Client, ? extends EC2AsyncClient>>() {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/EC2AsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/EC2AsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/EC2AsyncApi.java
index e96c0a7..3d64f1b 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/EC2AsyncApi.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/EC2AsyncApi.java
@@ -19,6 +19,13 @@ package org.jclouds.ec2;
 import java.io.Closeable;
 import java.util.Set;
 
+import org.jclouds.ec2.features.AMIAsyncApi;
+import org.jclouds.ec2.features.AvailabilityZoneAndRegionAsyncApi;
+import org.jclouds.ec2.features.ElasticBlockStoreAsyncApi;
+import org.jclouds.ec2.features.ElasticIPAddressAsyncApi;
+import org.jclouds.ec2.features.InstanceAsyncApi;
+import org.jclouds.ec2.features.KeyPairAsyncApi;
+import org.jclouds.ec2.features.SecurityGroupAsyncApi;
 import org.jclouds.ec2.features.SubnetAsyncApi;
 import org.jclouds.ec2.features.TagAsyncApi;
 import org.jclouds.ec2.features.WindowsAsyncApi;
@@ -75,4 +82,74 @@ public interface EC2AsyncApi extends Closeable {
    @Delegate
    Optional<? extends SubnetAsyncApi> getSubnetApiForRegion(
             @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * Provides asynchronous access to AMI features.
+    */
+   @Delegate
+   Optional<? extends AMIAsyncApi> getAMIApi();
+
+   @Delegate
+   Optional<? extends AMIAsyncApi> getAMIApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * Provides asynchronous access to Availability Zones and Regions services.
+    */
+   @Delegate
+   Optional<? extends AvailabilityZoneAndRegionAsyncApi> getAvailabilityZoneAndRegionApi();
+
+   @Delegate
+   Optional<? extends AvailabilityZoneAndRegionAsyncApi> getAvailabilityZoneAndRegionApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * Provides asynchronous access to Elastic Block Store services.
+    */
+   @Delegate
+   Optional<? extends ElasticBlockStoreAsyncApi> getElasticBlockStoreApi();
+
+   @Delegate
+   Optional<? extends ElasticBlockStoreAsyncApi> getElasticBlockStoreApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * Provides asynchronous access to Elastic IP services.
+    */
+   @Delegate
+   Optional<? extends ElasticIPAddressAsyncApi> getElasticIPAddressApi();
+
+   @Delegate
+   Optional<? extends ElasticIPAddressAsyncApi> getElasticIPAddressApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+   /**
+    * Provides asynchronous access to Instance services.
+    */
+   @Delegate
+   Optional<? extends InstanceAsyncApi> getInstanceApi();
+
+   @Delegate
+   Optional<? extends InstanceAsyncApi> getInstanceApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+  /**
+    * Provides asynchronous access to KeyPair services.
+    */
+   @Delegate
+   Optional<? extends KeyPairAsyncApi> getKeyPairApi();
+
+   @Delegate
+   Optional<? extends KeyPairAsyncApi> getKeyPairApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+
+  /**
+    * Provides asynchronous access to SecurityGroup services.
+    */
+   @Delegate
+   Optional<? extends SecurityGroupAsyncApi> getSecurityGroupApi();
+
+   @Delegate
+   Optional<? extends SecurityGroupAsyncApi> getSecurityGroupApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
 }

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/EC2Client.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/EC2Client.java b/apis/ec2/src/main/java/org/jclouds/ec2/EC2Client.java
index 42d1a4c..aa9234f 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/EC2Client.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/EC2Client.java
@@ -28,9 +28,11 @@ import org.jclouds.rest.annotations.Delegate;
 
 /**
  * Provides synchronous access to EC2 services.
- * 
+ *
+ * @deprecated This class's functionality is being moved in 1.7.0. Please use EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface EC2Client extends EC2Api {
    
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/config/EC2RestClientModule.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/config/EC2RestClientModule.java b/apis/ec2/src/main/java/org/jclouds/ec2/config/EC2RestClientModule.java
index 589ce99..a6824fb 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/config/EC2RestClientModule.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/config/EC2RestClientModule.java
@@ -27,6 +27,20 @@ import org.jclouds.ec2.EC2Api;
 import org.jclouds.ec2.EC2AsyncApi;
 import org.jclouds.ec2.EC2AsyncClient;
 import org.jclouds.ec2.EC2Client;
+import org.jclouds.ec2.features.AMIApi;
+import org.jclouds.ec2.features.AMIAsyncApi;
+import org.jclouds.ec2.features.AvailabilityZoneAndRegionApi;
+import org.jclouds.ec2.features.AvailabilityZoneAndRegionAsyncApi;
+import org.jclouds.ec2.features.ElasticBlockStoreApi;
+import org.jclouds.ec2.features.ElasticBlockStoreAsyncApi;
+import org.jclouds.ec2.features.ElasticIPAddressApi;
+import org.jclouds.ec2.features.ElasticIPAddressAsyncApi;
+import org.jclouds.ec2.features.InstanceApi;
+import org.jclouds.ec2.features.InstanceAsyncApi;
+import org.jclouds.ec2.features.KeyPairApi;
+import org.jclouds.ec2.features.KeyPairAsyncApi;
+import org.jclouds.ec2.features.SecurityGroupApi;
+import org.jclouds.ec2.features.SecurityGroupAsyncApi;
 import org.jclouds.ec2.features.SubnetApi;
 import org.jclouds.ec2.features.SubnetAsyncApi;
 import org.jclouds.ec2.features.TagApi;
@@ -77,17 +91,24 @@ import com.google.inject.Scopes;
 public class EC2RestClientModule<S extends EC2Api, A extends EC2AsyncApi> extends
          WithZonesFormSigningRestClientModule<S, A> {
    public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()//
-                        .put(AMIClient.class, AMIAsyncClient.class)//
-                        .put(ElasticIPAddressClient.class, ElasticIPAddressAsyncClient.class)//
-                        .put(InstanceClient.class, InstanceAsyncClient.class)//
-                        .put(KeyPairClient.class, KeyPairAsyncClient.class)//
-                        .put(SecurityGroupClient.class, SecurityGroupAsyncClient.class)//
-                        .put(WindowsClient.class, WindowsAsyncClient.class)//
-                        .put(AvailabilityZoneAndRegionClient.class, AvailabilityZoneAndRegionAsyncClient.class)//
-                        .put(ElasticBlockStoreClient.class, ElasticBlockStoreAsyncClient.class)//
-                        .put(WindowsApi.class, WindowsAsyncApi.class)//
-                        .put(TagApi.class, TagAsyncApi.class)//
-                        .put(SubnetApi.class, SubnetAsyncApi.class)//
+                        .put(AMIClient.class, AMIAsyncClient.class)
+                        .put(ElasticIPAddressClient.class, ElasticIPAddressAsyncClient.class)
+                        .put(InstanceClient.class, InstanceAsyncClient.class)
+                        .put(KeyPairClient.class, KeyPairAsyncClient.class)
+                        .put(SecurityGroupClient.class, SecurityGroupAsyncClient.class)
+                        .put(WindowsClient.class, WindowsAsyncClient.class)
+                        .put(AvailabilityZoneAndRegionClient.class, AvailabilityZoneAndRegionAsyncClient.class)
+                        .put(ElasticBlockStoreClient.class, ElasticBlockStoreAsyncClient.class)
+                        .put(WindowsApi.class, WindowsAsyncApi.class)
+                        .put(TagApi.class, TagAsyncApi.class)
+                        .put(SubnetApi.class, SubnetAsyncApi.class)
+                        .put(AMIApi.class, AMIAsyncApi.class)
+                        .put(AvailabilityZoneAndRegionApi.class, AvailabilityZoneAndRegionAsyncApi.class)
+                        .put(ElasticBlockStoreApi.class, ElasticBlockStoreAsyncApi.class)
+                        .put(ElasticIPAddressApi.class, ElasticIPAddressAsyncApi.class)
+                        .put(InstanceApi.class, InstanceAsyncApi.class)
+                        .put(KeyPairApi.class, KeyPairAsyncApi.class)
+                        .put(SecurityGroupApi.class, SecurityGroupAsyncApi.class)
                         .build();
    
    @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/AMIApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/AMIApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/AMIApi.java
new file mode 100644
index 0000000..56e9cf1
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/AMIApi.java
@@ -0,0 +1,41 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.AMIClient;
+import org.jclouds.javax.annotation.Nullable;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ *
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface AMIApi extends AMIClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/AMIAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/AMIAsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/AMIAsyncApi.java
new file mode 100644
index 0000000..4e5a563
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/AMIAsyncApi.java
@@ -0,0 +1,46 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.AMIAsyncClient;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface AMIAsyncApi extends AMIAsyncClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/AvailabilityZoneAndRegionApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/AvailabilityZoneAndRegionApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/AvailabilityZoneAndRegionApi.java
new file mode 100644
index 0000000..e8d712c
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/AvailabilityZoneAndRegionApi.java
@@ -0,0 +1,41 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.AvailabilityZoneAndRegionClient;
+import org.jclouds.javax.annotation.Nullable;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface AvailabilityZoneAndRegionApi extends AvailabilityZoneAndRegionClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/AvailabilityZoneAndRegionAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/AvailabilityZoneAndRegionAsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/AvailabilityZoneAndRegionAsyncApi.java
new file mode 100644
index 0000000..e31c4c2
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/AvailabilityZoneAndRegionAsyncApi.java
@@ -0,0 +1,46 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.AvailabilityZoneAndRegionAsyncClient;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface AvailabilityZoneAndRegionAsyncApi extends AvailabilityZoneAndRegionAsyncClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticBlockStoreApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticBlockStoreApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticBlockStoreApi.java
new file mode 100644
index 0000000..b3f5938
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticBlockStoreApi.java
@@ -0,0 +1,41 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.ElasticBlockStoreClient;
+import org.jclouds.javax.annotation.Nullable;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface ElasticBlockStoreApi extends ElasticBlockStoreClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticBlockStoreAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticBlockStoreAsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticBlockStoreAsyncApi.java
new file mode 100644
index 0000000..8a64f63
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticBlockStoreAsyncApi.java
@@ -0,0 +1,46 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.ElasticBlockStoreAsyncClient;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface ElasticBlockStoreAsyncApi extends ElasticBlockStoreAsyncClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticIPAddressApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticIPAddressApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticIPAddressApi.java
new file mode 100644
index 0000000..c3d5d05
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticIPAddressApi.java
@@ -0,0 +1,41 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.ElasticIPAddressClient;
+import org.jclouds.javax.annotation.Nullable;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface ElasticIPAddressApi extends ElasticIPAddressClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticIPAddressAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticIPAddressAsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticIPAddressAsyncApi.java
new file mode 100644
index 0000000..101007c
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/ElasticIPAddressAsyncApi.java
@@ -0,0 +1,46 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.ElasticIPAddressAsyncClient;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface ElasticIPAddressAsyncApi extends ElasticIPAddressAsyncClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/InstanceApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/InstanceApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/InstanceApi.java
new file mode 100644
index 0000000..28124e3
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/InstanceApi.java
@@ -0,0 +1,41 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.InstanceClient;
+import org.jclouds.javax.annotation.Nullable;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface InstanceApi extends InstanceClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/InstanceAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/InstanceAsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/InstanceAsyncApi.java
new file mode 100644
index 0000000..c89bec2
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/InstanceAsyncApi.java
@@ -0,0 +1,46 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.InstanceAsyncClient;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface InstanceAsyncApi extends InstanceAsyncClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/KeyPairApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/KeyPairApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/KeyPairApi.java
new file mode 100644
index 0000000..1d950f9
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/KeyPairApi.java
@@ -0,0 +1,41 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.KeyPairClient;
+import org.jclouds.javax.annotation.Nullable;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface KeyPairApi extends KeyPairClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/KeyPairAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/KeyPairAsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/KeyPairAsyncApi.java
new file mode 100644
index 0000000..b6f1610
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/KeyPairAsyncApi.java
@@ -0,0 +1,46 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.KeyPairAsyncClient;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface KeyPairAsyncApi extends KeyPairAsyncClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/SecurityGroupApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/SecurityGroupApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/SecurityGroupApi.java
new file mode 100644
index 0000000..e0deab5
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/SecurityGroupApi.java
@@ -0,0 +1,41 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.SecurityGroupClient;
+import org.jclouds.javax.annotation.Nullable;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface SecurityGroupApi extends SecurityGroupClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/SecurityGroupAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/SecurityGroupAsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/SecurityGroupAsyncApi.java
new file mode 100644
index 0000000..165fba6
--- /dev/null
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/SecurityGroupAsyncApi.java
@@ -0,0 +1,46 @@
+/*
+ * 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.features;
+
+import java.util.Map;
+import java.util.Set;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.domain.Image;
+import org.jclouds.ec2.domain.Image.EbsBlockDevice;
+import org.jclouds.ec2.domain.Permission;
+import org.jclouds.ec2.options.CreateImageOptions;
+import org.jclouds.ec2.options.DescribeImagesOptions;
+import org.jclouds.ec2.options.RegisterImageBackedByEbsOptions;
+import org.jclouds.ec2.options.RegisterImageOptions;
+import org.jclouds.ec2.services.SecurityGroupAsyncClient;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+
+/**
+ * Provides access to EC2 via their REST API.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface SecurityGroupAsyncApi extends SecurityGroupAsyncClient {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsApi.java
index c74fc20..8450ddd 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsApi.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsApi.java
@@ -17,6 +17,7 @@
 package org.jclouds.ec2.features;
 
 import org.jclouds.ec2.domain.PasswordData;
+import org.jclouds.ec2.services.WindowsClient;
 import org.jclouds.rest.annotations.SinceApiVersion;
 
 import com.google.common.annotations.Beta;
@@ -25,13 +26,15 @@ import com.google.common.annotations.Beta;
  * Provides access to EC2 Windows Features via the Query API
  * <p/>
  * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
  * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference" >doc</a>
  * @see WindowsAsyncApi
  * @author Adrian Cole
  */
 @Beta
 @SinceApiVersion("2008-08-08")
-public interface WindowsApi {
+public interface WindowsApi extends WindowsClient {
 
    /**
     * 

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsAsyncApi.java b/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsAsyncApi.java
index 3f8f02d..bb18fd9 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsAsyncApi.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/features/WindowsAsyncApi.java
@@ -26,6 +26,7 @@ import javax.ws.rs.Path;
 import org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import org.jclouds.aws.filters.FormSigner;
 import org.jclouds.ec2.domain.PasswordData;
+import org.jclouds.ec2.services.WindowsAsyncClient;
 import org.jclouds.ec2.xml.GetPasswordDataResponseHandler;
 import org.jclouds.rest.annotations.Fallback;
 import org.jclouds.rest.annotations.FormParams;
@@ -41,6 +42,8 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Windows Features via the Query API
  * <p/>
  * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
  * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference" >doc</a>
  * @see WindowsAsyncApi
  * @author Adrian Cole
@@ -49,7 +52,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 @VirtualHost
 @Beta
 @SinceApiVersion("2008-08-08")
-public interface WindowsAsyncApi {
+public interface WindowsAsyncApi extends WindowsAsyncClient {
 
    /**
     * @see WindowsApi#getPasswordDataForInstance

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIAsyncClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIAsyncClient.java
index cf079f0..240044e 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIAsyncClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIAsyncClient.java
@@ -57,8 +57,10 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to AMI Services.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7. Please use AMIApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface AMIAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIClient.java
index ebaec35..8b42a1e 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/AMIClient.java
@@ -30,9 +30,11 @@ import org.jclouds.javax.annotation.Nullable;
 /**
  * Provides access to EC2 via their REST API.
  * <p/>
- * 
+ *
+ * @deprecated This class is being moved in 1.7. Please use AMIApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface AMIClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionAsyncClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionAsyncClient.java
index 3c5b379..7115bb0 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionAsyncClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionAsyncClient.java
@@ -48,8 +48,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Availability Zones and Regions via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use AvailabilityZoneAndRegionApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface AvailabilityZoneAndRegionAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionClient.java
index 0eef970..cc05eb9 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/AvailabilityZoneAndRegionClient.java
@@ -28,8 +28,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Provides EC2 Availability Zones and Regions services for EC2.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use AvailabilityZoneAndRegionApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface AvailabilityZoneAndRegionClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreAsyncClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreAsyncClient.java
index 3b0ccd2..bcb413a 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreAsyncClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreAsyncClient.java
@@ -61,8 +61,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Elastic Block Store services via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use ElasticBlockStoreApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface ElasticBlockStoreAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreClient.java
index b12df61..08d4613 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticBlockStoreClient.java
@@ -30,8 +30,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Provides access to EC2 Elastic Block Store services.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use ElasticBlockStoreApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface ElasticBlockStoreClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressAsyncClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressAsyncClient.java
index 8369fa4..fb48c17 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressAsyncClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressAsyncClient.java
@@ -47,8 +47,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Elastic IP Addresses via REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use ElasticIpAddressApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface ElasticIPAddressAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressClient.java
index 2eaec4d..8d558e2 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/ElasticIPAddressClient.java
@@ -24,8 +24,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use ElasticIpAddressApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface ElasticIPAddressClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceAsyncClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceAsyncClient.java
index 0a1968d..87ecd30 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceAsyncClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceAsyncClient.java
@@ -65,8 +65,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Instance Services via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use InstanceApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface InstanceAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceClient.java
index 2bd6e26..4a0c287 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/InstanceClient.java
@@ -30,8 +30,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use InstanceApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface InstanceClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairAsyncClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairAsyncClient.java
index 48e0059..a9c8be6 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairAsyncClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairAsyncClient.java
@@ -47,8 +47,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use KeyPairApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface KeyPairAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairClient.java
index 0210f9d..f9779ea 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/KeyPairClient.java
@@ -24,8 +24,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use KeyPairApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface KeyPairClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupAsyncClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupAsyncClient.java
index 4d074ee..76e9d8d 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupAsyncClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupAsyncClient.java
@@ -50,8 +50,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use SecurityGroupApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface SecurityGroupAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupClient.java
index 3874bfb..aeb0d24 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/SecurityGroupClient.java
@@ -26,8 +26,10 @@ import org.jclouds.javax.annotation.Nullable;
  * Provides access to EC2 via their REST API.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use SecurityGroupApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface SecurityGroupClient {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsAsyncClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsAsyncClient.java
index 70d2cc8..333553e 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsAsyncClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsAsyncClient.java
@@ -51,8 +51,11 @@ import com.google.common.util.concurrent.ListenableFuture;
  * Provides access to EC2 Windows via their REST API.
  * <p/>
  * 
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use WindowsApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface WindowsAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsClient.java
----------------------------------------------------------------------
diff --git a/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsClient.java b/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsClient.java
index e03320a..b6bf737 100644
--- a/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsClient.java
+++ b/apis/ec2/src/main/java/org/jclouds/ec2/services/WindowsClient.java
@@ -27,8 +27,10 @@ import org.jclouds.javax.annotation.Nullable;
  * EC2 Developer Guide.
  * <p/>
  * 
+ * @deprecated This class is being moved in 1.7. Please use SecurityGroupApi via EC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface WindowsClient {
    /**
     * Bundles the Windows instance. This procedure is not applicable for Linux

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Api.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Api.java b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Api.java
new file mode 100644
index 0000000..205d05a
--- /dev/null
+++ b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Api.java
@@ -0,0 +1,47 @@
+/*
+ * 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.openstack.nova.ec2;
+
+import org.jclouds.ec2.EC2Api;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.openstack.nova.ec2.features.NovaEC2KeyPairApi;
+import org.jclouds.rest.annotations.Delegate;
+import org.jclouds.rest.annotations.EndpointParam;
+
+import com.google.common.base.Optional;
+
+/**
+ * Provides synchronous access to EC2 services.
+ * 
+ * @author Adam Lowe
+ */
+public interface NovaEC2Api extends EC2Api {
+
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends NovaEC2KeyPairApi> getKeyPairApi();
+   
+   @Delegate
+   @Override
+   Optional<? extends NovaEC2KeyPairApi> getKeyPairApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+   
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2AsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2AsyncApi.java b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2AsyncApi.java
new file mode 100644
index 0000000..081c248
--- /dev/null
+++ b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2AsyncApi.java
@@ -0,0 +1,49 @@
+/*
+ * 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.openstack.nova.ec2;
+
+import org.jclouds.ec2.EC2AsyncApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.openstack.nova.ec2.features.NovaEC2KeyPairAsyncApi;
+import org.jclouds.rest.annotations.Delegate;
+import org.jclouds.rest.annotations.EndpointParam;
+
+import com.google.common.base.Optional;
+
+/**
+ * Provides asynchronous access to EC2 services.
+ * 
+ * @author Adam Lowe
+ * @deprecated please use {@code org.jclouds.ContextBuilder#buildApi(NovaEC2Api.class)} as
+ *             {@link NovaEC2AsyncApi} interface will be removed in jclouds 1.7.
+ */
+@Deprecated
+public interface NovaEC2AsyncApi extends EC2AsyncApi {
+   /**
+    * {@inheritDoc}
+    */
+   @Delegate
+   @Override
+   Optional<? extends NovaEC2KeyPairAsyncApi> getKeyPairApi();
+   
+   @Delegate
+   @Override
+   Optional<? extends NovaEC2KeyPairAsyncApi> getKeyPairApiForRegion(
+            @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region);
+   
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Client.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Client.java b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Client.java
index f0c0bea..78b4ac8 100644
--- a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Client.java
+++ b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/NovaEC2Client.java
@@ -23,8 +23,10 @@ import org.jclouds.rest.annotations.Delegate;
 /**
  * Provides synchronous access to EC2 services.
  * 
+ * @deprecated This class's functionality is being moved in 1.7.0. Please use NovaEC2Api instead.
  * @author Adam Lowe
  */
+@Deprecated
 public interface NovaEC2Client extends EC2Client {
 
    /**

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/config/NovaEC2RestClientModule.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/config/NovaEC2RestClientModule.java b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/config/NovaEC2RestClientModule.java
index 0669f14..ffeffb6 100644
--- a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/config/NovaEC2RestClientModule.java
+++ b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/config/NovaEC2RestClientModule.java
@@ -22,9 +22,23 @@ import java.util.Map;
 
 import javax.inject.Singleton;
 
+import org.jclouds.ec2.EC2Api;
+import org.jclouds.ec2.EC2AsyncApi;
 import org.jclouds.ec2.EC2AsyncClient;
 import org.jclouds.ec2.EC2Client;
 import org.jclouds.ec2.config.EC2RestClientModule;
+import org.jclouds.ec2.features.AMIAsyncApi;
+import org.jclouds.ec2.features.AMIApi;
+import org.jclouds.ec2.features.AvailabilityZoneAndRegionAsyncApi;
+import org.jclouds.ec2.features.AvailabilityZoneAndRegionApi;
+import org.jclouds.ec2.features.ElasticBlockStoreAsyncApi;
+import org.jclouds.ec2.features.ElasticBlockStoreApi;
+import org.jclouds.ec2.features.ElasticIPAddressAsyncApi;
+import org.jclouds.ec2.features.ElasticIPAddressApi;
+import org.jclouds.ec2.features.InstanceAsyncApi;
+import org.jclouds.ec2.features.InstanceApi;
+import org.jclouds.ec2.features.SecurityGroupAsyncApi;
+import org.jclouds.ec2.features.SecurityGroupApi;
 import org.jclouds.ec2.features.SubnetApi;
 import org.jclouds.ec2.features.SubnetAsyncApi;
 import org.jclouds.ec2.features.TagApi;
@@ -52,8 +66,12 @@ import org.jclouds.location.config.LocationModule;
 import org.jclouds.location.suppliers.RegionIdToZoneIdsSupplier;
 import org.jclouds.location.suppliers.ZoneIdsSupplier;
 import org.jclouds.location.suppliers.derived.ZoneIdsFromRegionIdToZoneIdsValues;
+import org.jclouds.openstack.nova.ec2.NovaEC2Api;
+import org.jclouds.openstack.nova.ec2.NovaEC2AsyncApi;
 import org.jclouds.openstack.nova.ec2.NovaEC2AsyncClient;
 import org.jclouds.openstack.nova.ec2.NovaEC2Client;
+import org.jclouds.openstack.nova.ec2.features.NovaEC2KeyPairApi;
+import org.jclouds.openstack.nova.ec2.features.NovaEC2KeyPairAsyncApi;
 import org.jclouds.openstack.nova.ec2.services.NovaEC2KeyPairAsyncClient;
 import org.jclouds.openstack.nova.ec2.services.NovaEC2KeyPairClient;
 import org.jclouds.openstack.nova.ec2.xml.NovaCreateVolumeResponseHandler;
@@ -71,18 +89,25 @@ import com.google.inject.Scopes;
  */
 @ConfiguresRestClient
 public class NovaEC2RestClientModule extends EC2RestClientModule<NovaEC2Client, NovaEC2AsyncClient> {
-   public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()//
-         .put(AMIClient.class, AMIAsyncClient.class)//
-         .put(ElasticIPAddressClient.class, ElasticIPAddressAsyncClient.class)//
-         .put(InstanceClient.class, InstanceAsyncClient.class)//
-         .put(NovaEC2KeyPairClient.class, NovaEC2KeyPairAsyncClient.class)//
-         .put(SecurityGroupClient.class, SecurityGroupAsyncClient.class)//
-         .put(WindowsClient.class, WindowsAsyncClient.class)//
-         .put(AvailabilityZoneAndRegionClient.class, AvailabilityZoneAndRegionAsyncClient.class)//
-         .put(ElasticBlockStoreClient.class, ElasticBlockStoreAsyncClient.class)//
-         .put(WindowsApi.class, WindowsAsyncApi.class)//
-         .put(TagApi.class, TagAsyncApi.class)//
-         .put(SubnetApi.class, SubnetAsyncApi.class)//
+   public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()
+         .put(AMIClient.class, AMIAsyncClient.class)
+         .put(ElasticIPAddressClient.class, ElasticIPAddressAsyncClient.class)
+         .put(InstanceClient.class, InstanceAsyncClient.class)
+         .put(NovaEC2KeyPairClient.class, NovaEC2KeyPairAsyncClient.class)
+         .put(SecurityGroupClient.class, SecurityGroupAsyncClient.class)
+         .put(WindowsClient.class, WindowsAsyncClient.class)
+         .put(AvailabilityZoneAndRegionClient.class, AvailabilityZoneAndRegionAsyncClient.class)
+         .put(ElasticBlockStoreClient.class, ElasticBlockStoreAsyncClient.class)
+         .put(AMIApi.class, AMIAsyncApi.class)
+         .put(ElasticIPAddressApi.class, ElasticIPAddressAsyncApi.class)
+         .put(InstanceApi.class, InstanceAsyncApi.class)
+         .put(NovaEC2KeyPairApi.class, NovaEC2KeyPairAsyncApi.class)
+         .put(SecurityGroupApi.class, SecurityGroupAsyncApi.class)
+         .put(AvailabilityZoneAndRegionApi.class, AvailabilityZoneAndRegionAsyncApi.class)
+         .put(ElasticBlockStoreApi.class, ElasticBlockStoreAsyncApi.class)
+         .put(WindowsApi.class, WindowsAsyncApi.class)
+         .put(TagApi.class, TagAsyncApi.class)
+         .put(SubnetApi.class, SubnetAsyncApi.class)
          .build();
 
    public NovaEC2RestClientModule() {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApi.java b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApi.java
new file mode 100644
index 0000000..38bfbf5
--- /dev/null
+++ b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairApi.java
@@ -0,0 +1,50 @@
+/*
+ * 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.openstack.nova.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.KeyPairApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.openstack.nova.ec2.services.NovaEC2KeyPairClient;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to KeyPair Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+public interface NovaEC2KeyPairApi extends NovaEC2KeyPairClient, KeyPairApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairAsyncApi.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairAsyncApi.java b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairAsyncApi.java
new file mode 100644
index 0000000..339ab6b
--- /dev/null
+++ b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/features/NovaEC2KeyPairAsyncApi.java
@@ -0,0 +1,52 @@
+/*
+ * 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.openstack.nova.ec2.features;
+
+import static org.jclouds.aws.reference.FormParameters.ACTION;
+
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
+import org.jclouds.ec2.features.KeyPairAsyncApi;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.openstack.nova.ec2.services.NovaEC2KeyPairAsyncClient;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+/**
+ * Provides access to KeyPair Services.
+ * <p/>
+ * 
+ * Note that this class is transitionary and will fully replace its parent in 1.7.
+ * 
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface NovaEC2KeyPairAsyncApi extends NovaEC2KeyPairAsyncClient, KeyPairAsyncApi {
+}

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairAsyncClient.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairAsyncClient.java b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairAsyncClient.java
index d1fcd46..91ce170 100644
--- a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairAsyncClient.java
+++ b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairAsyncClient.java
@@ -40,8 +40,11 @@ import org.jclouds.rest.annotations.XMLResponseParser;
 import com.google.common.util.concurrent.ListenableFuture;
 
 /**
+ * @deprecated Async interfaces are being removed in 1.7.
+ *          Please use NovaKeyPairApi via NovaEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 @RequestFilters(FormSigner.class)
 @VirtualHost
 public interface NovaEC2KeyPairAsyncClient extends KeyPairAsyncClient {

http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/264d47e3/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairClient.java
----------------------------------------------------------------------
diff --git a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairClient.java b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairClient.java
index bb20296..545935c 100644
--- a/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairClient.java
+++ b/apis/openstack-nova-ec2/src/main/java/org/jclouds/openstack/nova/ec2/services/NovaEC2KeyPairClient.java
@@ -22,8 +22,10 @@ import org.jclouds.javax.annotation.Nullable;
 
 /**
  * 
+ * @deprecated This class is being moved in 1.7. Please use NovaEC2KeyPairApi via NovaEC2Api instead.
  * @author Adrian Cole
  */
+@Deprecated
 public interface NovaEC2KeyPairClient extends KeyPairClient {
 
    /**