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/01 21:13:11 UTC
[06/20] JCLOUDS-150 - Removal of async from AWS - specifically EC2
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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..d71d544
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/AWSSecurityGroupApi.java
@@ -0,0 +1,125 @@
+/*
+ * 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.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
+import org.jclouds.aws.ec2.options.CreateSecurityGroupOptions;
+import org.jclouds.aws.ec2.xml.CreateSecurityGroupResponseHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindGroupIdsToIndexedFormParams;
+import org.jclouds.ec2.binders.BindIpPermissionToIndexedFormParams;
+import org.jclouds.ec2.binders.BindIpPermissionsToIndexedFormParams;
+import org.jclouds.ec2.domain.SecurityGroup;
+import org.jclouds.ec2.features.SecurityGroupApi;
+import org.jclouds.ec2.xml.DescribeSecurityGroupsResponseHandler;
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
+import org.jclouds.net.domain.IpPermission;
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.FormParams;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.VirtualHost;
+import org.jclouds.rest.annotations.XMLResponseParser;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Provides access to EC2 SecurityGroup Services via their REST API.
+ * <p/>
+ *
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+@Beta
+public interface AWSSecurityGroupApi extends SecurityGroupApi {
+
+ @Named("CreateSecurityGroup")
+ @POST
+ @Path("/")
+ @XMLResponseParser(CreateSecurityGroupResponseHandler.class)
+ @FormParams(keys = ACTION, values = "CreateSecurityGroup")
+ String createSecurityGroupInRegionAndReturnId(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("GroupName") String name, @FormParam("GroupDescription") String description,
+ CreateSecurityGroupOptions... options);
+
+ @Named("AuthorizeSecurityGroupIngress")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "AuthorizeSecurityGroupIngress")
+ void authorizeSecurityGroupIngressInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("GroupId") String groupId, @BinderParam(BindIpPermissionToIndexedFormParams.class) IpPermission perm);
+
+ @Named("AuthorizeSecurityGroupIngress")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "AuthorizeSecurityGroupIngress")
+ void authorizeSecurityGroupIngressInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("GroupId") String groupId,
+ @BinderParam(BindIpPermissionsToIndexedFormParams.class) Iterable<IpPermission> perms);
+
+ @Named("RevokeSecurityGroupIngress")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "RevokeSecurityGroupIngress")
+ void revokeSecurityGroupIngressInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("GroupId") String groupId, @BinderParam(BindIpPermissionToIndexedFormParams.class) IpPermission perm);
+
+ @Named("RevokeSecurityGroupIngress")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "RevokeSecurityGroupIngress")
+ void revokeSecurityGroupIngressInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("GroupId") String groupId,
+ @BinderParam(BindIpPermissionsToIndexedFormParams.class) Iterable<IpPermission> perms);
+
+ @Named("DeleteSecurityGroup")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "DeleteSecurityGroup")
+ @Fallback(VoidOnNotFoundOr404.class)
+ void deleteSecurityGroupInRegionById(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region, @FormParam("GroupId") String name);
+
+ @Named("DescribeSecurityGroups")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "DescribeSecurityGroups")
+ @XMLResponseParser(DescribeSecurityGroupsResponseHandler.class)
+ @Fallback(EmptySetOnNotFoundOr404.class)
+ Set<SecurityGroup> describeSecurityGroupsInRegionById(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @BinderParam(BindGroupIdsToIndexedFormParams.class) String... securityGroupNames);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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..bb1de8a
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/MonitoringApi.java
@@ -0,0 +1,97 @@
+/*
+ * 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.Map;
+
+import javax.inject.Named;
+import javax.ws.rs.FormParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+
+import org.jclouds.aws.ec2.domain.MonitoringState;
+import org.jclouds.aws.ec2.xml.MonitoringStateHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindInstanceIdsToIndexedFormParams;
+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 EC2 Monitoring Services via their REST API.
+ * <p/>
+ *
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface MonitoringApi {
+
+ /**
+ * Enables monitoring for a running instance. For more information, refer to the Amazon
+ * CloudWatch Developer Guide.
+ *
+ * @param region
+ * Instances are tied to Availability Zones. However, the instance ID is tied to the
+ * Region.
+ * @see InstanceApi#runInstances
+ * @see #unmonitorInstances
+ *
+ * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-MonitorInstances.html"
+ * />
+ */
+ @Named("MonitorInstances")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "MonitorInstances")
+ @XMLResponseParser(MonitoringStateHandler.class)
+ Map<String, MonitoringState> monitorInstancesInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("InstanceId.0") String instanceId,
+ @BinderParam(BindInstanceIdsToIndexedFormParams.class) String... instanceIds);
+
+ /**
+ * Disables monitoring for a running instance. For more information, refer to the Amazon
+ * CloudWatch Developer Guide.
+ *
+ * @param region
+ * Instances are tied to Availability Zones. However, the instance ID is tied to the
+ * Region.
+ *
+ * @see InstanceApi#runInstances
+ * @see #monitorInstances
+ *
+ * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-UnmonitorInstances.html"
+ * />
+ */
+ @Named("UnmonitorInstances")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "UnmonitorInstances")
+ @XMLResponseParser(MonitoringStateHandler.class)
+ Map<String, MonitoringState> unmonitorInstancesInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("InstanceId.0") String instanceId,
+ @BinderParam(BindInstanceIdsToIndexedFormParams.class) String... instanceIds);
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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..1acc121
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/PlacementGroupApi.java
@@ -0,0 +1,136 @@
+/*
+ * 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.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
+import org.jclouds.aws.ec2.domain.PlacementGroup;
+import org.jclouds.aws.ec2.xml.DescribePlacementGroupsResponseHandler;
+import org.jclouds.aws.filters.FormSigner;
+import org.jclouds.ec2.binders.BindGroupNamesToIndexedFormParams;
+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.Fallback;
+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 EC2 Placement Groups via their REST API.
+ * <p/>
+ *
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface PlacementGroupApi {
+
+ /**
+ * Creates a placement group that you launch cluster compute instances into. You must give the
+ * group a name unique within the scope of your account.
+ *
+ * @param region
+ * Region to create the placement group in.
+ * @param name
+ * The name of the placement group..
+ * @param strategy
+ * The placement group strategy.
+ * @see #describePlacementGroupsInRegion
+ * @see #deletePlacementGroupInRegion
+ *
+ * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreatePlacementGroup.html"
+ * />
+ */
+ @Named("CreatePlacementGroup")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "CreatePlacementGroup")
+ void createPlacementGroupInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("GroupName") String name, @FormParam("Strategy") String strategy);
+
+ /**
+ * like {@link #createPlacementGroupInRegion(String,String,String) except that the strategy is default: "cluster".
+ */
+ @Named("CreatePlacementGroup")
+ @POST
+ @Path("/")
+ @FormParams(keys = { ACTION, "Strategy" }, values = { "CreatePlacementGroup", "cluster" })
+ void createPlacementGroupInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region, @FormParam("GroupName") String name);
+
+ /**
+ * Deletes a placement group from your account. You must terminate all instances in the placement group before deleting it.
+ *
+ * @param region
+ * Region to delete the placement from from
+ * @param name
+ * Name of the security group to delete.
+ *
+ * @see #describePlacementGroupsInRegion
+ * @see #createPlacementGroupInRegion
+ *
+ * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeletePlacementGroup.html"
+ * />
+ */
+ @Named("DeletePlacementGroup")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "DeletePlacementGroup")
+ @Fallback(VoidOnNotFoundOr404.class)
+ void deletePlacementGroupInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region, @FormParam("GroupName") String name);
+
+ /**
+ *
+ * Returns information about one or more placement groups in your account.
+ *
+ * @param region
+ * The bundleTask ID is tied to the Region.
+ * @param groupNames
+ * The name of the placement group. You can specify more than one in the request, or
+ * omit the parameter if you want information about all your placement groups. By
+ * default, all placement groups are described
+ *
+ * @see #deletePlacementGroupInRegion
+ * @see #createPlacementGroupInRegion
+ * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribePlacementGroups.html"
+ * />
+ */
+ @Named("DescribePlacementGroups")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "DescribePlacementGroups")
+ @XMLResponseParser(DescribePlacementGroupsResponseHandler.class)
+ @Fallback(EmptySetOnNotFoundOr404.class)
+ Set<PlacementGroup> describePlacementGroupsInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @BinderParam(BindGroupNamesToIndexedFormParams.class) String... placementGroupIds);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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..2d728e4
--- /dev/null
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/features/SpotInstanceApi.java
@@ -0,0 +1,214 @@
+/*
+ * 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.Fallbacks.EmptySetOnNotFoundOr404;
+import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
+import org.jclouds.aws.ec2.binders.BindLaunchSpecificationToFormParams;
+import org.jclouds.aws.ec2.binders.BindSpotInstanceRequestIdsToIndexedFormParams;
+import org.jclouds.aws.ec2.domain.LaunchSpecification;
+import org.jclouds.aws.ec2.domain.Spot;
+import org.jclouds.aws.ec2.domain.SpotInstanceRequest;
+import org.jclouds.aws.ec2.options.DescribeSpotPriceHistoryOptions;
+import org.jclouds.aws.ec2.options.RequestSpotInstancesOptions;
+import org.jclouds.aws.ec2.xml.DescribeSpotPriceHistoryResponseHandler;
+import org.jclouds.aws.ec2.xml.SpotInstanceHandler;
+import org.jclouds.aws.ec2.xml.SpotInstancesHandler;
+import org.jclouds.aws.filters.FormSigner;
+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.Fallback;
+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 EC2 Spot Instances via their REST API.
+ * <p/>
+ *
+ * @author Adrian Cole
+ */
+@RequestFilters(FormSigner.class)
+@VirtualHost
+public interface SpotInstanceApi {
+
+ /**
+ * Describes Spot Instance requests. Spot Instances are instances that Amazon EC2 starts on your
+ * behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2
+ * periodically sets the Spot Price based on available Spot Instance capacity and current spot
+ * instance requests. For conceptual information about Spot Instances, refer to the Amazon
+ * Elastic Compute Cloud Developer Guide or Amazon Elastic Compute Cloud User Guide.
+ *
+ * @param region
+ * Region where the spot instance service is running
+ * @param requestIds
+ * Specifies the ID of the Spot Instance request.
+ *
+ * @see #requestSpotInstancesInRegion
+ * @see #cancelSpotInstanceRequestsInRegion
+ * @see #describeSpotPriceHistoryInRegion
+ * @see <a href=
+ * "http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSpotInstanceRequests.html"
+ * />
+ * @return TODO
+ */
+ @Named("DescribeSpotInstanceRequests")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "DescribeSpotInstanceRequests")
+ @Fallback(EmptySetOnNotFoundOr404.class)
+ @XMLResponseParser(SpotInstancesHandler.class)
+ Set<SpotInstanceRequest> describeSpotInstanceRequestsInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @BinderParam(BindSpotInstanceRequestIdsToIndexedFormParams.class) String... requestIds);
+
+ /**
+ * request a single spot instance
+ *
+ * @param region
+ * Region where the spot instance service is running
+ * @param spotPrice
+ * Specifies the maximum hourly price for any Spot Instance launched to fulfill the
+ * request.
+ * @param imageId
+ * The AMI ID.
+ * @param instanceType
+ * The instance type (ex. m1.small)
+ * @return spot instance request
+ * @see #requestSpotInstancesInRegion
+ */
+ @Named("RequestSpotInstances")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "RequestSpotInstances")
+ @XMLResponseParser(SpotInstanceHandler.class)
+ SpotInstanceRequest requestSpotInstanceInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("SpotPrice") float spotPrice, @FormParam("LaunchSpecification.ImageId") String imageId,
+ @FormParam("LaunchSpecification.InstanceType") String instanceType);
+
+ /**
+ * Creates a Spot Instance request. Spot Instances are instances that Amazon EC2 starts on your
+ * behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2
+ * periodically sets the Spot Price based on available Spot Instance capacity and current spot
+ * instance requests. For conceptual information about Spot Instances, refer to the Amazon
+ * Elastic Compute Cloud Developer Guide or Amazon Elastic Compute Cloud User Guide.
+ *
+ * @param region
+ * Region where the spot instance service is running
+ * @param spotPrice
+ * Specifies the maximum hourly price for any Spot Instance launched to fulfill the
+ * request.
+ * @param instanceCount
+ * number of instances to request
+ * @param launchSpec
+ * includes at least The AMI ID and instance type (ex. m1.small)
+ * @param options
+ * options including expiration time or grouping
+ *
+ * @see #describeSpotInstanceRequestsInRegion
+ * @see #cancelSpotInstanceRequestsInRegion
+ * @see #describeSpotPriceHistoryInRegion
+ * @see <a href=
+ * "http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RequestSpotInstances.html"
+ * />
+ * @return set of spot instance requests
+ */
+ @Named("RequestSpotInstances")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "RequestSpotInstances")
+ @XMLResponseParser(SpotInstancesHandler.class)
+ Set<SpotInstanceRequest> requestSpotInstancesInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @FormParam("SpotPrice") float spotPrice, @FormParam("InstanceCount") int instanceCount,
+ @BinderParam(BindLaunchSpecificationToFormParams.class) LaunchSpecification launchSpec,
+ RequestSpotInstancesOptions... options);
+
+ /**
+ *
+ * Describes Spot Price history. Spot Instances are instances that Amazon EC2 starts on your
+ * behalf when the maximum price that you specify exceeds the current Spot Price. Amazon EC2
+ * periodically sets the Spot Price based on available Spot Instance capacity and current spot
+ * instance requests. For conceptual information about Spot Instances, refer to the Amazon
+ * Elastic Compute Cloud Developer Guide or Amazon Elastic Compute Cloud User Guide.
+ *
+ * @param region
+ * Region where the spot instance service is running
+ * @param options
+ * options to control the list
+ *
+ * @see #describeSpotInstanceRequestsInRegion
+ * @see #requestSpotInstancesInRegion
+ * @see #cancelSpotInstanceRequestsInRegion
+ * @see <a href=
+ * "http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSpotInstanceRequests.html"
+ * />
+ * @return TODO
+ */
+ @Named("DescribeSpotPriceHistory")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "DescribeSpotPriceHistory")
+ @XMLResponseParser(DescribeSpotPriceHistoryResponseHandler.class)
+ @Fallback(EmptySetOnNotFoundOr404.class)
+ Set<Spot> describeSpotPriceHistoryInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ DescribeSpotPriceHistoryOptions... options);
+
+ /**
+ * Cancels one or more Spot Instance requests. Spot Instances are instances that Amazon EC2
+ * starts on your behalf when the maximum price that you specify exceeds the current Spot Price.
+ * Amazon EC2 periodically sets the Spot Price based on available Spot Instance capacity and
+ * current spot instance requests. For conceptual information about Spot Instances, refer to the
+ * Amazon Elastic Compute Cloud Developer Guide or Amazon Elastic Compute Cloud User Guide.
+ *
+ * @param region
+ * Region where the spot instance service is running
+ * @param requestIds
+ * Specifies the ID of the Spot Instance request.
+ *
+ * @see #describeSpotInstanceRequestsInRegion
+ * @see #requestSpotInstancesInRegion
+ * @see #describeSpotPriceHistoryInRegion
+ * @see <a href=
+ * "http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CancelSpotInstanceRequests.html"
+ * />
+ * @return TODO
+ */
+ @Named("CancelSpotInstanceRequests")
+ @POST
+ @Path("/")
+ @FormParams(keys = ACTION, values = "CancelSpotInstanceRequests")
+ @Fallback(VoidOnNotFoundOr404.class)
+ void cancelSpotInstanceRequestsInRegion(
+ @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
+ @BinderParam(BindSpotInstanceRequestIdsToIndexedFormParams.class) String... requestIds);
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/CreatePlacementGroupIfNeeded.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/CreatePlacementGroupIfNeeded.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/CreatePlacementGroupIfNeeded.java
index 86eee54..0143aae 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/CreatePlacementGroupIfNeeded.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/CreatePlacementGroupIfNeeded.java
@@ -25,7 +25,7 @@ import javax.inject.Named;
import javax.inject.Singleton;
import org.jclouds.aws.AWSResponseException;
-import org.jclouds.aws.ec2.AWSEC2Client;
+import org.jclouds.aws.ec2.AWSEC2Api;
import org.jclouds.aws.ec2.domain.PlacementGroup;
import org.jclouds.aws.ec2.domain.PlacementGroup.State;
import org.jclouds.compute.reference.ComputeServiceConstants;
@@ -44,13 +44,13 @@ public class CreatePlacementGroupIfNeeded extends CacheLoader<RegionAndName, Str
@Resource
@Named(ComputeServiceConstants.COMPUTE_LOGGER)
protected Logger logger = Logger.NULL;
- protected final AWSEC2Client ec2Client;
+ protected final AWSEC2Api ec2Api;
protected final Predicate<PlacementGroup> placementGroupAvailable;
@Inject
- public CreatePlacementGroupIfNeeded(AWSEC2Client ec2Client,
+ public CreatePlacementGroupIfNeeded(AWSEC2Api ec2Api,
@Named("AVAILABLE") Predicate<PlacementGroup> placementGroupAvailable) {
- this.ec2Client = ec2Client;
+ this.ec2Api = ec2Api;
this.placementGroupAvailable = placementGroupAvailable;
}
@@ -65,7 +65,7 @@ public class CreatePlacementGroupIfNeeded extends CacheLoader<RegionAndName, Str
checkNotNull(name, "name");
logger.debug(">> creating placementGroup region(%s) name(%s)", region, name);
try {
- ec2Client.getPlacementGroupServices().createPlacementGroupInRegion(region, name);
+ ec2Api.getPlacementGroupApi().get().createPlacementGroupInRegion(region, name);
logger.debug("<< created placementGroup(%s)", name);
checkState(placementGroupAvailable.apply(new PlacementGroup(region, name, "cluster", State.PENDING)), String
.format("placementGroup region(%s) name(%s) failed to become available", region, name));
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/ImportOrReturnExistingKeypair.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/ImportOrReturnExistingKeypair.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/ImportOrReturnExistingKeypair.java
index f194cfa..52bef6c 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/ImportOrReturnExistingKeypair.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/functions/ImportOrReturnExistingKeypair.java
@@ -24,7 +24,7 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
-import org.jclouds.aws.ec2.AWSEC2Client;
+import org.jclouds.aws.ec2.AWSEC2Api;
import org.jclouds.aws.ec2.domain.RegionNameAndPublicKeyMaterial;
import org.jclouds.compute.reference.ComputeServiceConstants;
import org.jclouds.ec2.domain.KeyPair;
@@ -43,11 +43,11 @@ public class ImportOrReturnExistingKeypair implements Function<RegionNameAndPubl
@Resource
@Named(ComputeServiceConstants.COMPUTE_LOGGER)
protected Logger logger = Logger.NULL;
- protected final AWSEC2Client ec2Client;
+ protected final AWSEC2Api ec2Api;
@Inject
- public ImportOrReturnExistingKeypair(AWSEC2Client ec2Client) {
- this.ec2Client = ec2Client;
+ public ImportOrReturnExistingKeypair(AWSEC2Api ec2Api) {
+ this.ec2Api = ec2Api;
}
@Override
@@ -66,12 +66,12 @@ public class ImportOrReturnExistingKeypair implements Function<RegionNameAndPubl
// as this command is idempotent, it should be ok
while (keyPair == null)
try {
- keyPair = ec2Client.getKeyPairServices().importKeyPairInRegion(region, "jclouds#" + group,
+ keyPair = ec2Api.getKeyPairApi().get().importKeyPairInRegion(region, "jclouds#" + group,
publicKeyMaterial);
keyPair = addFingerprintToKeyPair(publicKeyMaterial, keyPair);
logger.debug("<< imported keyPair(%s)", keyPair);
} catch (IllegalStateException e) {
- keyPair = Iterables.getFirst(ec2Client.getKeyPairServices().describeKeyPairsInRegion(region,
+ keyPair = Iterables.getFirst(ec2Api.getKeyPairApi().get().describeKeyPairsInRegion(region,
"jclouds#" + group), null);
if (keyPair != null) {
keyPair = addFingerprintToKeyPair(publicKeyMaterial, keyPair);
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java
index 92d4faf..5d06ba5 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/AWSRunInstancesOptions.java
@@ -37,7 +37,7 @@ import com.google.common.collect.ImmutableSet;
* <code>
* import static org.jclouds.aws.ec2.options.RunInstancesOptions.Builder.*
* <p/>
- * EC2Client connection = // get connection
+ * EC2Api connection = // get connection
* Future<ReservationInfo> instances = connection.runInstances(executableBy("123125").imageIds(1000, 1004));
* <code>
*
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/CreateSecurityGroupOptions.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/CreateSecurityGroupOptions.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/CreateSecurityGroupOptions.java
index be409eb..3a929bf 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/CreateSecurityGroupOptions.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/CreateSecurityGroupOptions.java
@@ -30,7 +30,7 @@ import org.jclouds.ec2.options.internal.BaseEC2RequestOptions;
* <code>
* import static org.jclouds.aws.ec2.options.CreateSecurityGroupOptions.Builder.*
* <p/>
- * AWSEC2Client connection = // get connection
+ * AWSEC2Api connection = // get connection
* group = connection.getAMIServices().createSecurityGroup(vpcId("123125").noReboot());
* <code>
*
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/DescribeSpotPriceHistoryOptions.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/DescribeSpotPriceHistoryOptions.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/DescribeSpotPriceHistoryOptions.java
index d7cc9b1..228f681 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/DescribeSpotPriceHistoryOptions.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/DescribeSpotPriceHistoryOptions.java
@@ -33,7 +33,7 @@ import org.jclouds.ec2.options.internal.BaseEC2RequestOptions;
* <code>
* import static org.jclouds.aws.ec2.options.DescribeSpotPriceHistoryOptions.Builder.*
* <p/>
- * AWSEC2Client client = // get connection
+ * AWSEC2Api client = // get connection
* history = client.getSpotInstanceServices().describeSpotPriceHistoryInRegion(from(yesterday).instanceType("m1.small"));
* <code>
*
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/RequestSpotInstancesOptions.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/RequestSpotInstancesOptions.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/RequestSpotInstancesOptions.java
index 9bbe248..7f90269 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/RequestSpotInstancesOptions.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/options/RequestSpotInstancesOptions.java
@@ -34,7 +34,7 @@ import org.jclouds.ec2.options.internal.BaseEC2RequestOptions;
* <code>
* import static org.jclouds.aws.ec2.options.RequestSpotInstancesOptions.Builder.*
* <p/>
- * AWSEC2Client client = // get connection
+ * AWSEC2Api client = // get connection
* history = client.getSpotInstanceServices().requestSpotInstancesInRegion("us-east-1",validFrom(yesterday).type("m1.small"));
* <code>
*
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupAvailable.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupAvailable.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupAvailable.java
index 5f9d024..c04b8d5 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupAvailable.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupAvailable.java
@@ -21,7 +21,7 @@ import java.util.NoSuchElementException;
import javax.annotation.Resource;
import javax.inject.Singleton;
-import org.jclouds.aws.ec2.AWSEC2Client;
+import org.jclouds.aws.ec2.AWSEC2Api;
import org.jclouds.aws.ec2.domain.PlacementGroup;
import org.jclouds.logging.Logger;
import org.jclouds.rest.ResourceNotFoundException;
@@ -38,13 +38,13 @@ import com.google.inject.Inject;
@Singleton
public class PlacementGroupAvailable implements Predicate<PlacementGroup> {
- private final AWSEC2Client client;
+ private final AWSEC2Api client;
@Resource
protected Logger logger = Logger.NULL;
@Inject
- public PlacementGroupAvailable(AWSEC2Client client) {
+ public PlacementGroupAvailable(AWSEC2Api client) {
this.client = client;
}
@@ -63,7 +63,7 @@ public class PlacementGroupAvailable implements Predicate<PlacementGroup> {
}
private PlacementGroup refresh(PlacementGroup group) {
- return Iterables.getOnlyElement(client.getPlacementGroupServices().describePlacementGroupsInRegion(
+ return Iterables.getOnlyElement(client.getPlacementGroupApi().get().describePlacementGroupsInRegion(
group.getRegion(), group.getName()));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupDeleted.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupDeleted.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupDeleted.java
index ad116f5..b8257eb 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupDeleted.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/PlacementGroupDeleted.java
@@ -21,7 +21,7 @@ import java.util.NoSuchElementException;
import javax.annotation.Resource;
import javax.inject.Singleton;
-import org.jclouds.aws.ec2.AWSEC2Client;
+import org.jclouds.aws.ec2.AWSEC2Api;
import org.jclouds.aws.ec2.domain.PlacementGroup;
import org.jclouds.logging.Logger;
@@ -37,13 +37,13 @@ import com.google.inject.Inject;
@Singleton
public class PlacementGroupDeleted implements Predicate<PlacementGroup> {
- private final AWSEC2Client client;
+ private final AWSEC2Api client;
@Resource
protected Logger logger = Logger.NULL;
@Inject
- public PlacementGroupDeleted(AWSEC2Client client) {
+ public PlacementGroupDeleted(AWSEC2Api client) {
this.client = client;
}
@@ -60,7 +60,7 @@ public class PlacementGroupDeleted implements Predicate<PlacementGroup> {
}
private PlacementGroup refresh(PlacementGroup group) {
- return Iterables.getOnlyElement(client.getPlacementGroupServices().describePlacementGroupsInRegion(
+ return Iterables.getOnlyElement(client.getPlacementGroupApi().get().describePlacementGroupsInRegion(
group.getRegion(), group.getName()));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/SpotInstanceRequestActive.java
----------------------------------------------------------------------
diff --git a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/SpotInstanceRequestActive.java b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/SpotInstanceRequestActive.java
index 9ec31ae..8395161 100644
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/SpotInstanceRequestActive.java
+++ b/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/predicates/SpotInstanceRequestActive.java
@@ -21,7 +21,7 @@ import java.util.NoSuchElementException;
import javax.annotation.Resource;
import javax.inject.Singleton;
-import org.jclouds.aws.ec2.AWSEC2Client;
+import org.jclouds.aws.ec2.AWSEC2Api;
import org.jclouds.aws.ec2.domain.SpotInstanceRequest;
import org.jclouds.logging.Logger;
import org.jclouds.rest.ResourceNotFoundException;
@@ -38,13 +38,13 @@ import com.google.inject.Inject;
@Singleton
public class SpotInstanceRequestActive implements Predicate<SpotInstanceRequest> {
- private final AWSEC2Client client;
+ private final AWSEC2Api client;
@Resource
protected Logger logger = Logger.NULL;
@Inject
- public SpotInstanceRequestActive(AWSEC2Client client) {
+ public SpotInstanceRequestActive(AWSEC2Api client) {
this.client = client;
}
@@ -69,7 +69,7 @@ public class SpotInstanceRequestActive implements Predicate<SpotInstanceRequest>
}
private SpotInstanceRequest refresh(SpotInstanceRequest spot) {
- return Iterables.getOnlyElement(client.getSpotInstanceServices().describeSpotInstanceRequestsInRegion(
+ return Iterables.getOnlyElement(client.getSpotInstanceApi().get().describeSpotInstanceRequestsInRegion(
spot.getRegion(), spot.getId()));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index 0a1c48b..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIAsyncClient.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-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.xml.ProductCodesHandler;
-import org.jclouds.aws.filters.FormSigner;
-import org.jclouds.ec2.binders.BindProductCodesToIndexedFormParams;
-import org.jclouds.ec2.services.AMIAsyncClient;
-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;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides access to AMI Services.
- * <p/>
- *
- * @author Adrian Cole
- */
-@RequestFilters(FormSigner.class)
-@VirtualHost
-public interface AWSAMIAsyncClient extends AMIAsyncClient {
- // TODO make AWSImage as it has product codes...
-
- /**
- * @see AMIClient#getProductCodesForImageInRegion
- */
- @Named("DescribeImageAttribute")
- @POST
- @Path("/")
- @FormParams(keys = { ACTION, "Attribute" }, values = { "DescribeImageAttribute", "productCodes" })
- @XMLResponseParser(ProductCodesHandler.class)
- ListenableFuture<Set<String>> getProductCodesForImageInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("ImageId") String imageId);
-
- /**
- * @see AMIClient#addProductCodesToImageInRegion
- */
- @Named("ModifyImageAttribute")
- @POST
- @Path("/")
- @FormParams(keys = { ACTION, "OperationType", "Attribute" }, values = { "ModifyImageAttribute", "add",
- "productCodes" })
- ListenableFuture<Void> addProductCodesToImageInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @BinderParam(BindProductCodesToIndexedFormParams.class) Iterable<String> productCodes,
- @FormParam("ImageId") String imageId);
-
- /**
- * @see AMIClient#removeProductCodesToImageInRegion
- */
- @Named("ModifyImageAttribute")
- @POST
- @Path("/")
- @FormParams(keys = { ACTION, "OperationType", "Attribute" }, values = { "ModifyImageAttribute", "remove",
- "productCodes" })
- ListenableFuture<Void> removeProductCodesFromImageInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @BinderParam(BindProductCodesToIndexedFormParams.class) Iterable<String> productCodes,
- @FormParam("ImageId") String imageId);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index 75247ad..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSAMIClient.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-import java.util.Set;
-import org.jclouds.ec2.services.AMIClient;
-import org.jclouds.javax.annotation.Nullable;
-
-/**
- * Provides access to EC2 via their REST API.
- * <p/>
- *
- * @author Adrian Cole
- */
-public interface AWSAMIClient extends AMIClient {
-
-
- /**
- * Returns the Product Codes of an image.
- *
- * @param region
- * AMIs are tied to the Region where its files are located within Amazon S3.
- * @param imageId
- * The ID of the AMI for which an attribute will be described
- * @see #describeImages
- * @see #modifyImageAttribute
- * @see #resetImageAttribute
- * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeImageAttribute.html"
- * />
- * @see DescribeImagesOptions
- */
- Set<String> getProductCodesForImageInRegion(@Nullable String region, String imageId);
-
-
- /**
- * Adds {@code productCode}s to an AMI.
- *
- * @param region
- * AMIs are tied to the Region where its files are located within Amazon S3.
- * @param productCodes
- * Product Codes
- * @param imageId
- * The AMI ID.
- *
- * @see #removeProductCodesFromImage
- * @see #describeImageAttribute
- * @see #resetImageAttribute
- * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyImageAttribute.html"
- * />
- */
- void addProductCodesToImageInRegion(@Nullable String region, Iterable<String> productCodes, String imageId);
-
- /**
- * Removes {@code productCode}s from an AMI.
- *
- * @param region
- * AMIs are tied to the Region where its files are located within Amazon S3.
- * @param productCodes
- * Product Codes
- * @param imageId
- * The AMI ID.
- *
- * @see #addProductCodesToImage
- * @see #describeImageAttribute
- * @see #resetImageAttribute
- * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-ModifyImageAttribute.html"
- * />
- */
- void removeProductCodesFromImageInRegion(@Nullable String region, Iterable<String> productCodes,
- String imageId);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index de55b01..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceAsyncClient.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-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.Fallbacks.EmptySetOnNotFoundOr404;
-import org.jclouds.aws.ec2.domain.AWSRunningInstance;
-import org.jclouds.aws.ec2.xml.AWSDescribeInstancesResponseHandler;
-import org.jclouds.aws.ec2.xml.AWSRunInstancesResponseHandler;
-import org.jclouds.aws.filters.FormSigner;
-import org.jclouds.ec2.binders.BindInstanceIdsToIndexedFormParams;
-import org.jclouds.ec2.binders.IfNotNullBindAvailabilityZoneToFormParam;
-import org.jclouds.ec2.domain.Reservation;
-import org.jclouds.ec2.options.RunInstancesOptions;
-import org.jclouds.ec2.services.InstanceAsyncClient;
-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.Fallback;
-import org.jclouds.rest.annotations.FormParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.VirtualHost;
-import org.jclouds.rest.annotations.XMLResponseParser;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides access to EC2 Instance Services via their REST API.
- * <p/>
- *
- * @author Adrian Cole
- */
-@RequestFilters(FormSigner.class)
-@VirtualHost
-public interface AWSInstanceAsyncClient extends InstanceAsyncClient {
-
- /**
- * @see AWSInstanceClient#describeInstancesInRegion
- */
- @Named("DescribeInstances")
- @Override
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "DescribeInstances")
- @XMLResponseParser(AWSDescribeInstancesResponseHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- ListenableFuture<Set<? extends Reservation<? extends AWSRunningInstance>>> describeInstancesInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @BinderParam(BindInstanceIdsToIndexedFormParams.class) String... instanceIds);
-
- /**
- * @see AWSInstanceClient#runInstancesInRegion
- */
- @Named("RunInstances")
- @Override
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "RunInstances")
- @XMLResponseParser(AWSRunInstancesResponseHandler.class)
- ListenableFuture<Reservation<? extends AWSRunningInstance>> runInstancesInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @Nullable @BinderParam(IfNotNullBindAvailabilityZoneToFormParam.class) String nullableAvailabilityZone,
- @FormParam("ImageId") String imageId, @FormParam("MinCount") int minCount,
- @FormParam("MaxCount") int maxCount, RunInstancesOptions... options);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index deb911b..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSInstanceClient.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-import java.util.Set;
-import org.jclouds.aws.ec2.domain.AWSRunningInstance;
-import org.jclouds.ec2.domain.Reservation;
-import org.jclouds.ec2.options.RunInstancesOptions;
-import org.jclouds.ec2.services.InstanceClient;
-import org.jclouds.javax.annotation.Nullable;
-
-/**
- * Provides access to EC2 via their REST API.
- * <p/>
- *
- * @author Adrian Cole
- */
-public interface AWSInstanceClient extends InstanceClient {
-
- @Override
- Set<? extends Reservation<? extends AWSRunningInstance>> describeInstancesInRegion(@Nullable String region,
- String... instanceIds);
-
- @Override
- Reservation<? extends AWSRunningInstance> runInstancesInRegion(@Nullable String region,
- @Nullable String nullableAvailabilityZone, String imageId, int minCount, int maxCount,
- RunInstancesOptions... options);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index 8cb9abd..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairAsyncClient.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-import static org.jclouds.aws.reference.FormParameters.ACTION;
-
-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.domain.KeyPair;
-import org.jclouds.ec2.functions.EncodedRSAPublicKeyToBase64;
-import org.jclouds.ec2.services.KeyPairAsyncClient;
-import org.jclouds.ec2.xml.KeyPairResponseHandler;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
-import org.jclouds.rest.annotations.EndpointParam;
-import org.jclouds.rest.annotations.FormParams;
-import org.jclouds.rest.annotations.ParamParser;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.VirtualHost;
-import org.jclouds.rest.annotations.XMLResponseParser;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * @author Adrian Cole
- */
-@RequestFilters(FormSigner.class)
-@VirtualHost
-public interface AWSKeyPairAsyncClient extends KeyPairAsyncClient {
-
- /**
- * @see AWSKeyPairClient#importKeyPairInRegion
- */
- @Named("ImportKeyPair")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "ImportKeyPair")
- @XMLResponseParser(KeyPairResponseHandler.class)
- ListenableFuture<KeyPair> importKeyPairInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("KeyName") String keyName,
- @FormParam("PublicKeyMaterial") @ParamParser(EncodedRSAPublicKeyToBase64.class) String publicKeyMaterial);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index 3d23d0b..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSKeyPairClient.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-import org.jclouds.ec2.domain.KeyPair;
-import org.jclouds.ec2.services.KeyPairClient;
-import org.jclouds.javax.annotation.Nullable;
-
-/**
- *
- * @author Adrian Cole
- */
-public interface AWSKeyPairClient extends KeyPairClient {
-
- /**
- * Imports the public key from an RSA key pair that you created with a third-party tool. Compare
- * this with CreateKeyPair, in which AWS creates the key pair and gives the keys to you (AWS
- * keeps a copy of the public key). With ImportKeyPair, you create the key pair and give AWS just
- * the public key. The private key is never transferred between you and AWS.
- *
- * <p/>
- * You can easily create an RSA key pair on Windows and Linux using the ssh-keygen command line
- * tool (provided with the standard OpenSSH installation). Standard library support for RSA key
- * pair creation is also available in Java, Ruby, Python, and many other programming languages.
- *
- * <p/>
- * <h4>Supported Formats</h4>
- * <ul>
- * <li>OpenSSH public key format (e.g., the format in ~/.ssh/authorized_keys)</li>
- * <li>Base64 encoded DER format</li>
- * <li>SSH public key file format as specified in RFC4716</li>
- * </ul>
- * DSA keys are not supported. Make sure your key generator is set up to create RSA keys.
- * <p/>
- * Supported lengths: 1024, 2048, and 4096.
- * <p/>
- *
- * @param region
- * region to import the key into
- * @param keyName
- * A unique name for the key pair. Accepts alphanumeric characters, spaces, dashes, and
- * underscores.
- * @param publicKeyMaterial
- * The public key
- * @return imported key including fingerprint
- */
- KeyPair importKeyPairInRegion(@Nullable String region, String keyName, String publicKeyMaterial);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index 25acb03..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupAsyncClient.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-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.Fallbacks.EmptySetOnNotFoundOr404;
-import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
-import org.jclouds.aws.ec2.options.CreateSecurityGroupOptions;
-import org.jclouds.aws.ec2.xml.CreateSecurityGroupResponseHandler;
-import org.jclouds.aws.filters.FormSigner;
-import org.jclouds.ec2.binders.BindGroupIdsToIndexedFormParams;
-import org.jclouds.ec2.binders.BindIpPermissionToIndexedFormParams;
-import org.jclouds.ec2.binders.BindIpPermissionsToIndexedFormParams;
-import org.jclouds.ec2.domain.SecurityGroup;
-import org.jclouds.ec2.services.SecurityGroupAsyncClient;
-import org.jclouds.ec2.xml.DescribeSecurityGroupsResponseHandler;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.location.functions.RegionToEndpointOrProviderIfNull;
-import org.jclouds.net.domain.IpPermission;
-import org.jclouds.rest.annotations.BinderParam;
-import org.jclouds.rest.annotations.EndpointParam;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.FormParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.VirtualHost;
-import org.jclouds.rest.annotations.XMLResponseParser;
-
-import com.google.common.annotations.Beta;
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides access to EC2 SecurityGroup Services via their REST API.
- * <p/>
- *
- * @author Adrian Cole
- */
-@RequestFilters(FormSigner.class)
-@VirtualHost
-@Beta
-public interface AWSSecurityGroupAsyncClient extends SecurityGroupAsyncClient {
- /**
- * @see AWSSecurityGroupClient#createSecurityGroupInRegion
- */
- @Named("CreateSecurityGroup")
- @POST
- @Path("/")
- @XMLResponseParser(CreateSecurityGroupResponseHandler.class)
- @FormParams(keys = ACTION, values = "CreateSecurityGroup")
- ListenableFuture<String> createSecurityGroupInRegionAndReturnId(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("GroupName") String name, @FormParam("GroupDescription") String description,
- CreateSecurityGroupOptions... options);
-
- /**
- * @see AWSSecurityGroupClient#authorizeSecurityGroupIngressInRegion(String,
- * String,IpPermission)
- */
- @Named("AuthorizeSecurityGroupIngress")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "AuthorizeSecurityGroupIngress")
- ListenableFuture<Void> authorizeSecurityGroupIngressInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("GroupId") String groupId, @BinderParam(BindIpPermissionToIndexedFormParams.class) IpPermission perm);
-
- /**
- * @see AWSSecurityGroupClient#authorizeSecurityGroupIngressInRegion(String,
- * String,Iterable)
- */
- @Named("AuthorizeSecurityGroupIngress")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "AuthorizeSecurityGroupIngress")
- ListenableFuture<Void> authorizeSecurityGroupIngressInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("GroupId") String groupId,
- @BinderParam(BindIpPermissionsToIndexedFormParams.class) Iterable<IpPermission> perms);
-
- /**
- * @see AWSSecurityGroupClient#revokeSecurityGroupIngressInRegion(@Nullable
- * Region, String,IpPermission)
- */
- @Named("RevokeSecurityGroupIngress")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "RevokeSecurityGroupIngress")
- ListenableFuture<Void> revokeSecurityGroupIngressInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("GroupId") String groupId, @BinderParam(BindIpPermissionToIndexedFormParams.class) IpPermission perm);
-
- /**
- * @see AWSSecurityGroupClient#revokeSecurityGroupIngressInRegion(@Nullable
- * Region, String,Iterable)
- */
- @Named("RevokeSecurityGroupIngress")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "RevokeSecurityGroupIngress")
- ListenableFuture<Void> revokeSecurityGroupIngressInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("GroupId") String groupId,
- @BinderParam(BindIpPermissionsToIndexedFormParams.class) Iterable<IpPermission> perms);
-
- /**
- * @see AWSSecurityGroupClient#deleteSecurityGroupInRegionById
- */
- @Named("DeleteSecurityGroup")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "DeleteSecurityGroup")
- @Fallback(VoidOnNotFoundOr404.class)
- ListenableFuture<Void> deleteSecurityGroupInRegionById(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region, @FormParam("GroupId") String name);
-
- /**
- * @see AWSSecurityGroupClient#describeSecurityGroupsInRegionById
- */
- @Named("DescribeSecurityGroups")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "DescribeSecurityGroups")
- @XMLResponseParser(DescribeSecurityGroupsResponseHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- ListenableFuture<? extends Set<SecurityGroup>> describeSecurityGroupsInRegionById(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @BinderParam(BindGroupIdsToIndexedFormParams.class) String... securityGroupNames);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index ac3b301..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/AWSSecurityGroupClient.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-import java.util.Set;
-import org.jclouds.aws.ec2.options.CreateSecurityGroupOptions;
-import org.jclouds.ec2.domain.SecurityGroup;
-import org.jclouds.ec2.services.SecurityGroupClient;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.net.domain.IpPermission;
-
-import com.google.common.annotations.Beta;
-
-/**
- * Provides access to EC2 via their REST API.
- * <p/>
- *
- * @author Adrian Cole
- */
-@Beta
-public interface AWSSecurityGroupClient extends SecurityGroupClient {
-
- String createSecurityGroupInRegionAndReturnId(@Nullable String region, String name, String desc,
- CreateSecurityGroupOptions... options);
-
- void authorizeSecurityGroupIngressInRegion(@Nullable String region, String groupId, IpPermission perm);
-
- void authorizeSecurityGroupIngressInRegion(@Nullable String region, String groupId, Iterable<IpPermission> perm);
-
- void revokeSecurityGroupIngressInRegion(@Nullable String region, String groupId, IpPermission perm);
-
- void revokeSecurityGroupIngressInRegion(@Nullable String region, String groupId, Iterable<IpPermission> perm);
-
- Set<SecurityGroup> describeSecurityGroupsInRegionById(@Nullable String region, String... securityGroupIds);
-
- void deleteSecurityGroupInRegionById(@Nullable String region, String name);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index 61d96b4..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringAsyncClient.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-import static org.jclouds.aws.reference.FormParameters.ACTION;
-
-import java.util.Map;
-
-import javax.inject.Named;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-
-import org.jclouds.aws.ec2.domain.MonitoringState;
-import org.jclouds.aws.ec2.xml.MonitoringStateHandler;
-import org.jclouds.aws.filters.FormSigner;
-import org.jclouds.ec2.binders.BindInstanceIdsToIndexedFormParams;
-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;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides access to EC2 Monitoring Services via their REST API.
- * <p/>
- *
- * @author Adrian Cole
- */
-@RequestFilters(FormSigner.class)
-@VirtualHost
-public interface MonitoringAsyncClient {
-
- /**
- * @see Monitoring#monitorInstancesInRegion
- */
- @Named("MonitorInstances")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "MonitorInstances")
- @XMLResponseParser(MonitoringStateHandler.class)
- ListenableFuture<? extends Map<String, MonitoringState>> monitorInstancesInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("InstanceId.0") String instanceId,
- @BinderParam(BindInstanceIdsToIndexedFormParams.class) String... instanceIds);
-
- /**
- * @see Monitoring#monitorInstancesInRegion
- */
- @Named("UnmonitorInstances")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "UnmonitorInstances")
- @XMLResponseParser(MonitoringStateHandler.class)
- ListenableFuture<? extends Map<String, MonitoringState>> unmonitorInstancesInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("InstanceId.0") String instanceId,
- @BinderParam(BindInstanceIdsToIndexedFormParams.class) String... instanceIds);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index 66c44ee..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/MonitoringClient.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-import java.util.Map;
-import org.jclouds.aws.ec2.domain.MonitoringState;
-import org.jclouds.javax.annotation.Nullable;
-
-/**
- * Provides monitoring services for EC2. For more information, refer to the Amazon CloudWatch
- * Developer Guide.
- * <p/>
- *
- * @author Adrian Cole
- */
-public interface MonitoringClient {
-
- /**
- * Enables monitoring for a running instance. For more information, refer to the Amazon
- * CloudWatch Developer Guide.
- *
- * @param region
- * Instances are tied to Availability Zones. However, the instance ID is tied to the
- * Region.
- * @see InstanceClient#runInstances
- * @see #unmonitorInstances
- *
- * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-MonitorInstances.html"
- * />
- */
- Map<String, MonitoringState> monitorInstancesInRegion(@Nullable String region, String instanceId,
- String... instanceIds);
-
- /**
- * Disables monitoring for a running instance. For more information, refer to the Amazon
- * CloudWatch Developer Guide.
- *
- * @param region
- * Instances are tied to Availability Zones. However, the instance ID is tied to the
- * Region.
- *
- * @see InstanceClient#runInstances
- * @see #monitorInstances
- *
- * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-UnmonitorInstances.html"
- * />
- */
- Map<String, MonitoringState> unmonitorInstancesInRegion(@Nullable String region, String instanceId,
- String... instanceIds);
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index bd79cb4..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupAsyncClient.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-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.Fallbacks.EmptySetOnNotFoundOr404;
-import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
-import org.jclouds.aws.ec2.domain.PlacementGroup;
-import org.jclouds.aws.ec2.xml.DescribePlacementGroupsResponseHandler;
-import org.jclouds.aws.filters.FormSigner;
-import org.jclouds.ec2.binders.BindGroupNamesToIndexedFormParams;
-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.Fallback;
-import org.jclouds.rest.annotations.FormParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.VirtualHost;
-import org.jclouds.rest.annotations.XMLResponseParser;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * Provides access to EC2 Placement Groups via their REST API.
- * <p/>
- *
- * @author Adrian Cole
- */
-@RequestFilters(FormSigner.class)
-@VirtualHost
-public interface PlacementGroupAsyncClient {
-
- /**
- * @see PlacementGroupClient#createPlacementGroupInRegion(String,String,String)
- */
- @Named("CreatePlacementGroup")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "CreatePlacementGroup")
- ListenableFuture<Void> createPlacementGroupInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @FormParam("GroupName") String name, @FormParam("Strategy") String strategy);
-
- /**
- * @see PlacementGroupClient#createPlacementGroupInRegion(String,String)
- */
- @Named("CreatePlacementGroup")
- @POST
- @Path("/")
- @FormParams(keys = { ACTION, "Strategy" }, values = { "CreatePlacementGroup", "cluster" })
- ListenableFuture<Void> createPlacementGroupInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region, @FormParam("GroupName") String name);
-
- /**
- * @see PlacementGroupClient#deletePlacementGroupInRegion
- */
- @Named("DeletePlacementGroup")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "DeletePlacementGroup")
- @Fallback(VoidOnNotFoundOr404.class)
- ListenableFuture<Void> deletePlacementGroupInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region, @FormParam("GroupName") String name);
-
- /**
- * @see PlacementGroupClient#describePlacementGroupsInRegion
- */
- @Named("DescribePlacementGroups")
- @POST
- @Path("/")
- @FormParams(keys = ACTION, values = "DescribePlacementGroups")
- @XMLResponseParser(DescribePlacementGroupsResponseHandler.class)
- @Fallback(EmptySetOnNotFoundOr404.class)
- ListenableFuture<? extends Set<PlacementGroup>> describePlacementGroupsInRegion(
- @EndpointParam(parser = RegionToEndpointOrProviderIfNull.class) @Nullable String region,
- @BinderParam(BindGroupNamesToIndexedFormParams.class) String... placementGroupIds);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/5f3b8d3f/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
deleted file mode 100644
index 3dfd8cc..0000000
--- a/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/services/PlacementGroupClient.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.aws.ec2.services;
-
-import java.util.Set;
-import org.jclouds.aws.ec2.domain.PlacementGroup;
-import org.jclouds.javax.annotation.Nullable;
-
-/**
- * Provides Placement Group services for EC2. For more information, refer to the Amazon EC2
- * Developer Guide.
- * <p/>
- *
- * @author Adrian Cole
- */
-public interface PlacementGroupClient {
-
- /**
- * Creates a placement group that you launch cluster compute instances into. You must give the
- * group a name unique within the scope of your account.
- *
- * @param region
- * Region to create the placement group in.
- * @param name
- * The name of the placement group..
- * @param strategy
- * The placement group strategy.
- * @see #describePlacementGroupsInRegion
- * @see #deletePlacementGroupInRegion
- *
- * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreatePlacementGroup.html"
- * />
- */
- void createPlacementGroupInRegion(@Nullable String region, String name, String strategy);
-
- /**
- * like {@link #createPlacementGroupInRegion(String,String,String) except that the strategy is default: "cluster".
- */
- void createPlacementGroupInRegion(@Nullable String region, String name);
-
- /**
- * Deletes a placement group from your account. You must terminate all instances in the placement group before deleting it.
- *
- * @param region
- * Region to delete the placement from from
- * @param name
- * Name of the security group to delete.
- *
- * @see #describePlacementGroupsInRegion
- * @see #createPlacementGroupInRegion
- *
- * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DeletePlacementGroup.html"
- * />
- */
- void deletePlacementGroupInRegion(@Nullable String region, String name);
-
- /**
- *
- * Returns information about one or more placement groups in your account.
- *
- * @param region
- * The bundleTask ID is tied to the Region.
- * @param groupNames
- * The name of the placement group. You can specify more than one in the request, or
- * omit the parameter if you want information about all your placement groups. By
- * default, all placement groups are described
- *
- * @see #deletePlacementGroupInRegion
- * @see #createPlacementGroupInRegion
- * @see <a href="http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-DescribePlacementGroups.html"
- * />
- */
- Set<PlacementGroup> describePlacementGroupsInRegion(@Nullable String region,
- String... groupNames);
-}