/* * Copyright 2010-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file 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 com.amazonaws.services.ec2.model; import java.io.Serializable; import com.amazonaws.AmazonWebServiceRequest; import com.amazonaws.Request; import com.amazonaws.services.ec2.model.transform.RequestSpotInstancesRequestMarshaller; /** * Container for the parameters to the {@link com.amazonaws.services.ec2.AmazonEC2#requestSpotInstances(RequestSpotInstancesRequest) RequestSpotInstances operation}. *
* Creates a Spot instance request. Spot instances are instances that * Amazon EC2 launches when the bid 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 more information, see * Spot Instance Requests * in the Amazon Elastic Compute Cloud User Guide . *
* * @see com.amazonaws.services.ec2.AmazonEC2#requestSpotInstances(RequestSpotInstancesRequest) */ public class RequestSpotInstancesRequest extends AmazonWebServiceRequest implements Serializable, DryRunSupportedRequestDefault: 1 */ private Integer instanceCount; /** * The Spot instance request type.
Default: one-time
*
* Constraints:
* Allowed Values: one-time, persistent
*/
private String type;
/**
* The start date of the request. If this is a one-time request, the
* request becomes active at this date and time and remains active until
* all instances launch, the request expires, or the request is canceled.
* If the request is persistent, the request becomes active at this date
* and time and remains active until it expires or is canceled.
*
Default: The request is effective indefinitely. */ private java.util.Date validFrom; /** * The end date of the request. If this is a one-time request, the * request remains active until all instances launch, the request is * canceled, or this date is reached. If the request is persistent, it * remains active until it is canceled or this date and time is reached. *
Default: The request is effective indefinitely. */ private java.util.Date validUntil; /** * The instance launch group. Launch groups are Spot instances that * launch together and terminate together.
Default: Instances are * launched and terminated individually */ private String launchGroup; /** * The user-specified name for a logical grouping of bids.
When you * specify an Availability Zone group in a Spot Instance request, all * Spot instances in the request are launched in the same Availability * Zone. Instance proximity is maintained with this parameter, but the * choice of Availability Zone is not. The group applies only to bids for * Spot Instances of the same instance type. Any additional Spot instance * requests that are specified with the same Availability Zone group name * are launched in that same Availability Zone, as long as at least one * instance from the group is still active.
If there is no active * instance running in the Availability Zone group that you specify for a * new Spot instance request (all instances are terminated, the bid is * expired, or the bid falls below current market), then Amazon EC2 * launches the instance in any Availability Zone where the constraint * can be met. Consequently, the subsequent set of Spot instances could * be placed in a different zone from the original request, even if you * specified the same Availability Zone group.
Default: Instances are * launched in any available Availability Zone. */ private String availabilityZoneGroup; /** * The required duration for the Spot instances (also known as Spot * blocks), in minutes. This value must be a multiple of 60 (60, 120, * 180, 240, 300, or 360).
The duration period starts as soon as your * Spot instance receives its instance ID. At the end of the duration * period, Amazon EC2 marks the Spot instance for termination and * provides a Spot instance termination notice, which gives the instance * a two-minute warning before it terminates.
Note that you can't * specify an Availability Zone group or a launch group if you specify a * duration. */ private Integer blockDurationMinutes; /** * The launch specification. */ private LaunchSpecification launchSpecification; /** * Default constructor for a new RequestSpotInstancesRequest object. Callers should use the * setter or fluent setter (with...) methods to initialize this object after creating it. */ public RequestSpotInstancesRequest() {} /** * Constructs a new RequestSpotInstancesRequest object. * Callers should use the setter or fluent setter (with...) methods to * initialize any additional object members. * * @param spotPrice The maximum hourly price (bid) for any Spot instance * launched to fulfill the request. */ public RequestSpotInstancesRequest(String spotPrice) { setSpotPrice(spotPrice); } /** * The maximum hourly price (bid) for any Spot instance launched to * fulfill the request. * * @return The maximum hourly price (bid) for any Spot instance launched to * fulfill the request. */ public String getSpotPrice() { return spotPrice; } /** * The maximum hourly price (bid) for any Spot instance launched to * fulfill the request. * * @param spotPrice The maximum hourly price (bid) for any Spot instance launched to * fulfill the request. */ public void setSpotPrice(String spotPrice) { this.spotPrice = spotPrice; } /** * The maximum hourly price (bid) for any Spot instance launched to * fulfill the request. *
* Returns a reference to this object so that method calls can be chained together. * * @param spotPrice The maximum hourly price (bid) for any Spot instance launched to * fulfill the request. * * @return A reference to this updated object so that method calls can be chained * together. */ public RequestSpotInstancesRequest withSpotPrice(String spotPrice) { this.spotPrice = spotPrice; return this; } /** * Unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see How * to Ensure Idempotency in the Amazon Elastic Compute Cloud User * Guide. * * @return Unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see How * to Ensure Idempotency in the Amazon Elastic Compute Cloud User * Guide. */ public String getClientToken() { return clientToken; } /** * Unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see How * to Ensure Idempotency in the Amazon Elastic Compute Cloud User * Guide. * * @param clientToken Unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see How * to Ensure Idempotency in the Amazon Elastic Compute Cloud User * Guide. */ public void setClientToken(String clientToken) { this.clientToken = clientToken; } /** * Unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see How * to Ensure Idempotency in the Amazon Elastic Compute Cloud User * Guide. *
* Returns a reference to this object so that method calls can be chained together. * * @param clientToken Unique, case-sensitive identifier that you provide to ensure the * idempotency of the request. For more information, see How * to Ensure Idempotency in the Amazon Elastic Compute Cloud User * Guide. * * @return A reference to this updated object so that method calls can be chained * together. */ public RequestSpotInstancesRequest withClientToken(String clientToken) { this.clientToken = clientToken; return this; } /** * The maximum number of Spot instances to launch.
Default: 1 * * @return The maximum number of Spot instances to launch.
Default: 1 */ public Integer getInstanceCount() { return instanceCount; } /** * The maximum number of Spot instances to launch.
Default: 1 * * @param instanceCount The maximum number of Spot instances to launch.
Default: 1 */ public void setInstanceCount(Integer instanceCount) { this.instanceCount = instanceCount; } /** * The maximum number of Spot instances to launch.
Default: 1 *
* Returns a reference to this object so that method calls can be chained together. * * @param instanceCount The maximum number of Spot instances to launch.
Default: 1 * * @return A reference to this updated object so that method calls can be chained * together. */ public RequestSpotInstancesRequest withInstanceCount(Integer instanceCount) { this.instanceCount = instanceCount; return this; } /** * The Spot instance request type.
Default: one-time
*
* Constraints:
* Allowed Values: one-time, persistent
*
* @return The Spot instance request type.
Default: one-time
*
* @see SpotInstanceType
*/
public String getType() {
return type;
}
/**
* The Spot instance request type.
Default: one-time
*
* Constraints:
* Allowed Values: one-time, persistent
*
* @param type The Spot instance request type.
Default: one-time
*
* @see SpotInstanceType
*/
public void setType(String type) {
this.type = type;
}
/**
* The Spot instance request type.
Default: one-time
*
* Returns a reference to this object so that method calls can be chained together. *
* Constraints:
* Allowed Values: one-time, persistent
*
* @param type The Spot instance request type.
Default: one-time
*
* @return A reference to this updated object so that method calls can be chained
* together.
*
* @see SpotInstanceType
*/
public RequestSpotInstancesRequest withType(String type) {
this.type = type;
return this;
}
/**
* The Spot instance request type.
Default: one-time
*
* Constraints:
* Allowed Values: one-time, persistent
*
* @param type The Spot instance request type.
Default: one-time
*
* @see SpotInstanceType
*/
public void setType(SpotInstanceType type) {
this.type = type.toString();
}
/**
* The Spot instance request type.
Default: one-time
*
* Returns a reference to this object so that method calls can be chained together. *
* Constraints:
* Allowed Values: one-time, persistent
*
* @param type The Spot instance request type.
Default: one-time
*
* @return A reference to this updated object so that method calls can be chained
* together.
*
* @see SpotInstanceType
*/
public RequestSpotInstancesRequest withType(SpotInstanceType type) {
this.type = type.toString();
return this;
}
/**
* The start date of the request. If this is a one-time request, the
* request becomes active at this date and time and remains active until
* all instances launch, the request expires, or the request is canceled.
* If the request is persistent, the request becomes active at this date
* and time and remains active until it expires or is canceled.
*
Default: The request is effective indefinitely. * * @return The start date of the request. If this is a one-time request, the * request becomes active at this date and time and remains active until * all instances launch, the request expires, or the request is canceled. * If the request is persistent, the request becomes active at this date * and time and remains active until it expires or is canceled. *
Default: The request is effective indefinitely. */ public java.util.Date getValidFrom() { return validFrom; } /** * The start date of the request. If this is a one-time request, the * request becomes active at this date and time and remains active until * all instances launch, the request expires, or the request is canceled. * If the request is persistent, the request becomes active at this date * and time and remains active until it expires or is canceled. *
Default: The request is effective indefinitely. * * @param validFrom The start date of the request. If this is a one-time request, the * request becomes active at this date and time and remains active until * all instances launch, the request expires, or the request is canceled. * If the request is persistent, the request becomes active at this date * and time and remains active until it expires or is canceled. *
Default: The request is effective indefinitely. */ public void setValidFrom(java.util.Date validFrom) { this.validFrom = validFrom; } /** * The start date of the request. If this is a one-time request, the * request becomes active at this date and time and remains active until * all instances launch, the request expires, or the request is canceled. * If the request is persistent, the request becomes active at this date * and time and remains active until it expires or is canceled. *
Default: The request is effective indefinitely. *
* Returns a reference to this object so that method calls can be chained together. * * @param validFrom The start date of the request. If this is a one-time request, the * request becomes active at this date and time and remains active until * all instances launch, the request expires, or the request is canceled. * If the request is persistent, the request becomes active at this date * and time and remains active until it expires or is canceled. *
Default: The request is effective indefinitely. * * @return A reference to this updated object so that method calls can be chained * together. */ public RequestSpotInstancesRequest withValidFrom(java.util.Date validFrom) { this.validFrom = validFrom; return this; } /** * The end date of the request. If this is a one-time request, the * request remains active until all instances launch, the request is * canceled, or this date is reached. If the request is persistent, it * remains active until it is canceled or this date and time is reached. *
Default: The request is effective indefinitely. * * @return The end date of the request. If this is a one-time request, the * request remains active until all instances launch, the request is * canceled, or this date is reached. If the request is persistent, it * remains active until it is canceled or this date and time is reached. *
Default: The request is effective indefinitely. */ public java.util.Date getValidUntil() { return validUntil; } /** * The end date of the request. If this is a one-time request, the * request remains active until all instances launch, the request is * canceled, or this date is reached. If the request is persistent, it * remains active until it is canceled or this date and time is reached. *
Default: The request is effective indefinitely. * * @param validUntil The end date of the request. If this is a one-time request, the * request remains active until all instances launch, the request is * canceled, or this date is reached. If the request is persistent, it * remains active until it is canceled or this date and time is reached. *
Default: The request is effective indefinitely. */ public void setValidUntil(java.util.Date validUntil) { this.validUntil = validUntil; } /** * The end date of the request. If this is a one-time request, the * request remains active until all instances launch, the request is * canceled, or this date is reached. If the request is persistent, it * remains active until it is canceled or this date and time is reached. *
Default: The request is effective indefinitely. *
* Returns a reference to this object so that method calls can be chained together. * * @param validUntil The end date of the request. If this is a one-time request, the * request remains active until all instances launch, the request is * canceled, or this date is reached. If the request is persistent, it * remains active until it is canceled or this date and time is reached. *
Default: The request is effective indefinitely. * * @return A reference to this updated object so that method calls can be chained * together. */ public RequestSpotInstancesRequest withValidUntil(java.util.Date validUntil) { this.validUntil = validUntil; return this; } /** * The instance launch group. Launch groups are Spot instances that * launch together and terminate together.
Default: Instances are * launched and terminated individually * * @return The instance launch group. Launch groups are Spot instances that * launch together and terminate together.
Default: Instances are * launched and terminated individually */ public String getLaunchGroup() { return launchGroup; } /** * The instance launch group. Launch groups are Spot instances that * launch together and terminate together.
Default: Instances are * launched and terminated individually * * @param launchGroup The instance launch group. Launch groups are Spot instances that * launch together and terminate together.
Default: Instances are * launched and terminated individually */ public void setLaunchGroup(String launchGroup) { this.launchGroup = launchGroup; } /** * The instance launch group. Launch groups are Spot instances that * launch together and terminate together.
Default: Instances are * launched and terminated individually *
* Returns a reference to this object so that method calls can be chained together. * * @param launchGroup The instance launch group. Launch groups are Spot instances that * launch together and terminate together.
Default: Instances are * launched and terminated individually * * @return A reference to this updated object so that method calls can be chained * together. */ public RequestSpotInstancesRequest withLaunchGroup(String launchGroup) { this.launchGroup = launchGroup; return this; } /** * The user-specified name for a logical grouping of bids.
When you * specify an Availability Zone group in a Spot Instance request, all * Spot instances in the request are launched in the same Availability * Zone. Instance proximity is maintained with this parameter, but the * choice of Availability Zone is not. The group applies only to bids for * Spot Instances of the same instance type. Any additional Spot instance * requests that are specified with the same Availability Zone group name * are launched in that same Availability Zone, as long as at least one * instance from the group is still active.
If there is no active * instance running in the Availability Zone group that you specify for a * new Spot instance request (all instances are terminated, the bid is * expired, or the bid falls below current market), then Amazon EC2 * launches the instance in any Availability Zone where the constraint * can be met. Consequently, the subsequent set of Spot instances could * be placed in a different zone from the original request, even if you * specified the same Availability Zone group.
Default: Instances are * launched in any available Availability Zone. * * @return The user-specified name for a logical grouping of bids.
When you * specify an Availability Zone group in a Spot Instance request, all * Spot instances in the request are launched in the same Availability * Zone. Instance proximity is maintained with this parameter, but the * choice of Availability Zone is not. The group applies only to bids for * Spot Instances of the same instance type. Any additional Spot instance * requests that are specified with the same Availability Zone group name * are launched in that same Availability Zone, as long as at least one * instance from the group is still active.
If there is no active * instance running in the Availability Zone group that you specify for a * new Spot instance request (all instances are terminated, the bid is * expired, or the bid falls below current market), then Amazon EC2 * launches the instance in any Availability Zone where the constraint * can be met. Consequently, the subsequent set of Spot instances could * be placed in a different zone from the original request, even if you * specified the same Availability Zone group.
Default: Instances are * launched in any available Availability Zone. */ public String getAvailabilityZoneGroup() { return availabilityZoneGroup; } /** * The user-specified name for a logical grouping of bids.
When you * specify an Availability Zone group in a Spot Instance request, all * Spot instances in the request are launched in the same Availability * Zone. Instance proximity is maintained with this parameter, but the * choice of Availability Zone is not. The group applies only to bids for * Spot Instances of the same instance type. Any additional Spot instance * requests that are specified with the same Availability Zone group name * are launched in that same Availability Zone, as long as at least one * instance from the group is still active.
If there is no active * instance running in the Availability Zone group that you specify for a * new Spot instance request (all instances are terminated, the bid is * expired, or the bid falls below current market), then Amazon EC2 * launches the instance in any Availability Zone where the constraint * can be met. Consequently, the subsequent set of Spot instances could * be placed in a different zone from the original request, even if you * specified the same Availability Zone group.
Default: Instances are * launched in any available Availability Zone. * * @param availabilityZoneGroup The user-specified name for a logical grouping of bids.
When you * specify an Availability Zone group in a Spot Instance request, all * Spot instances in the request are launched in the same Availability * Zone. Instance proximity is maintained with this parameter, but the * choice of Availability Zone is not. The group applies only to bids for * Spot Instances of the same instance type. Any additional Spot instance * requests that are specified with the same Availability Zone group name * are launched in that same Availability Zone, as long as at least one * instance from the group is still active.
If there is no active * instance running in the Availability Zone group that you specify for a * new Spot instance request (all instances are terminated, the bid is * expired, or the bid falls below current market), then Amazon EC2 * launches the instance in any Availability Zone where the constraint * can be met. Consequently, the subsequent set of Spot instances could * be placed in a different zone from the original request, even if you * specified the same Availability Zone group.
Default: Instances are * launched in any available Availability Zone. */ public void setAvailabilityZoneGroup(String availabilityZoneGroup) { this.availabilityZoneGroup = availabilityZoneGroup; } /** * The user-specified name for a logical grouping of bids.
When you * specify an Availability Zone group in a Spot Instance request, all * Spot instances in the request are launched in the same Availability * Zone. Instance proximity is maintained with this parameter, but the * choice of Availability Zone is not. The group applies only to bids for * Spot Instances of the same instance type. Any additional Spot instance * requests that are specified with the same Availability Zone group name * are launched in that same Availability Zone, as long as at least one * instance from the group is still active.
If there is no active * instance running in the Availability Zone group that you specify for a * new Spot instance request (all instances are terminated, the bid is * expired, or the bid falls below current market), then Amazon EC2 * launches the instance in any Availability Zone where the constraint * can be met. Consequently, the subsequent set of Spot instances could * be placed in a different zone from the original request, even if you * specified the same Availability Zone group.
Default: Instances are * launched in any available Availability Zone. *
* Returns a reference to this object so that method calls can be chained together. * * @param availabilityZoneGroup The user-specified name for a logical grouping of bids.
When you * specify an Availability Zone group in a Spot Instance request, all * Spot instances in the request are launched in the same Availability * Zone. Instance proximity is maintained with this parameter, but the * choice of Availability Zone is not. The group applies only to bids for * Spot Instances of the same instance type. Any additional Spot instance * requests that are specified with the same Availability Zone group name * are launched in that same Availability Zone, as long as at least one * instance from the group is still active.
If there is no active * instance running in the Availability Zone group that you specify for a * new Spot instance request (all instances are terminated, the bid is * expired, or the bid falls below current market), then Amazon EC2 * launches the instance in any Availability Zone where the constraint * can be met. Consequently, the subsequent set of Spot instances could * be placed in a different zone from the original request, even if you * specified the same Availability Zone group.
Default: Instances are * launched in any available Availability Zone. * * @return A reference to this updated object so that method calls can be chained * together. */ public RequestSpotInstancesRequest withAvailabilityZoneGroup(String availabilityZoneGroup) { this.availabilityZoneGroup = availabilityZoneGroup; return this; } /** * The required duration for the Spot instances (also known as Spot * blocks), in minutes. This value must be a multiple of 60 (60, 120, * 180, 240, 300, or 360).
The duration period starts as soon as your * Spot instance receives its instance ID. At the end of the duration * period, Amazon EC2 marks the Spot instance for termination and * provides a Spot instance termination notice, which gives the instance * a two-minute warning before it terminates.
Note that you can't * specify an Availability Zone group or a launch group if you specify a * duration. * * @return The required duration for the Spot instances (also known as Spot * blocks), in minutes. This value must be a multiple of 60 (60, 120, * 180, 240, 300, or 360).
The duration period starts as soon as your * Spot instance receives its instance ID. At the end of the duration * period, Amazon EC2 marks the Spot instance for termination and * provides a Spot instance termination notice, which gives the instance * a two-minute warning before it terminates.
Note that you can't * specify an Availability Zone group or a launch group if you specify a * duration. */ public Integer getBlockDurationMinutes() { return blockDurationMinutes; } /** * The required duration for the Spot instances (also known as Spot * blocks), in minutes. This value must be a multiple of 60 (60, 120, * 180, 240, 300, or 360).
The duration period starts as soon as your * Spot instance receives its instance ID. At the end of the duration * period, Amazon EC2 marks the Spot instance for termination and * provides a Spot instance termination notice, which gives the instance * a two-minute warning before it terminates.
Note that you can't * specify an Availability Zone group or a launch group if you specify a * duration. * * @param blockDurationMinutes The required duration for the Spot instances (also known as Spot * blocks), in minutes. This value must be a multiple of 60 (60, 120, * 180, 240, 300, or 360).
The duration period starts as soon as your * Spot instance receives its instance ID. At the end of the duration * period, Amazon EC2 marks the Spot instance for termination and * provides a Spot instance termination notice, which gives the instance * a two-minute warning before it terminates.
Note that you can't * specify an Availability Zone group or a launch group if you specify a * duration. */ public void setBlockDurationMinutes(Integer blockDurationMinutes) { this.blockDurationMinutes = blockDurationMinutes; } /** * The required duration for the Spot instances (also known as Spot * blocks), in minutes. This value must be a multiple of 60 (60, 120, * 180, 240, 300, or 360).
The duration period starts as soon as your * Spot instance receives its instance ID. At the end of the duration * period, Amazon EC2 marks the Spot instance for termination and * provides a Spot instance termination notice, which gives the instance * a two-minute warning before it terminates.
Note that you can't * specify an Availability Zone group or a launch group if you specify a * duration. *
* Returns a reference to this object so that method calls can be chained together. * * @param blockDurationMinutes The required duration for the Spot instances (also known as Spot * blocks), in minutes. This value must be a multiple of 60 (60, 120, * 180, 240, 300, or 360).
The duration period starts as soon as your * Spot instance receives its instance ID. At the end of the duration * period, Amazon EC2 marks the Spot instance for termination and * provides a Spot instance termination notice, which gives the instance * a two-minute warning before it terminates.
Note that you can't * specify an Availability Zone group or a launch group if you specify a * duration. * * @return A reference to this updated object so that method calls can be chained * together. */ public RequestSpotInstancesRequest withBlockDurationMinutes(Integer blockDurationMinutes) { this.blockDurationMinutes = blockDurationMinutes; return this; } /** * The launch specification. * * @return The launch specification. */ public LaunchSpecification getLaunchSpecification() { return launchSpecification; } /** * The launch specification. * * @param launchSpecification The launch specification. */ public void setLaunchSpecification(LaunchSpecification launchSpecification) { this.launchSpecification = launchSpecification; } /** * The launch specification. *
* Returns a reference to this object so that method calls can be chained together.
*
* @param launchSpecification The launch specification.
*
* @return A reference to this updated object so that method calls can be chained
* together.
*/
public RequestSpotInstancesRequest withLaunchSpecification(LaunchSpecification launchSpecification) {
this.launchSpecification = launchSpecification;
return this;
}
/**
* This method is intended for internal use only.
* Returns the marshaled request configured with additional parameters to
* enable operation dry-run.
*/
@Override
public Request