/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the ec2-2016-11-15.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.EC2.Model
{
///
/// Describes the configuration of a Spot Fleet request.
///
public partial class SpotFleetRequestConfigData
{
private AllocationStrategy _allocationStrategy;
private string _clientToken;
private string _context;
private ExcessCapacityTerminationPolicy _excessCapacityTerminationPolicy;
private double? _fulfilledCapacity;
private string _iamFleetRole;
private InstanceInterruptionBehavior _instanceInterruptionBehavior;
private int? _instancePoolsToUseCount;
private List _launchSpecifications = new List();
private List _launchTemplateConfigs = new List();
private LoadBalancersConfig _loadBalancersConfig;
private OnDemandAllocationStrategy _onDemandAllocationStrategy;
private double? _onDemandFulfilledCapacity;
private string _onDemandMaxTotalPrice;
private int? _onDemandTargetCapacity;
private bool? _replaceUnhealthyInstances;
private SpotMaintenanceStrategies _spotMaintenanceStrategies;
private string _spotMaxTotalPrice;
private string _spotPrice;
private List _tagSpecifications = new List();
private int? _targetCapacity;
private TargetCapacityUnitType _targetCapacityUnitType;
private bool? _terminateInstancesWithExpiration;
private FleetType _type;
private DateTime? _validFromUtc;
private DateTime? _validUntilUtc;
///
/// Gets and sets the property AllocationStrategy.
///
/// The strategy that determines how to allocate the target Spot Instance capacity across
/// the Spot Instance pools specified by the Spot Fleet launch configuration. For more
/// information, see Allocation
/// strategies for Spot Instances in the Amazon EC2 User Guide.
///
/// - priceCapacityOptimized (recommended)
-
///
/// Spot Fleet identifies the pools with the highest capacity availability for the number
/// of instances that are launching. This means that we will request Spot Instances from
/// the pools that we believe have the lowest chance of interruption in the near term.
/// Spot Fleet then requests Spot Instances from the lowest priced of these pools.
///
///
- capacityOptimized
-
///
/// Spot Fleet identifies the pools with the highest capacity availability for the number
/// of instances that are launching. This means that we will request Spot Instances from
/// the pools that we believe have the lowest chance of interruption in the near term.
/// To give certain instance types a higher chance of launching first, use
capacityOptimizedPrioritized
.
/// Set a priority for each instance type by using the Priority
parameter
/// for LaunchTemplateOverrides
. You can assign the same priority to different
/// LaunchTemplateOverrides
. EC2 implements the priorities on a best-effort
/// basis, but optimizes for capacity first. capacityOptimizedPrioritized
/// is supported only if your Spot Fleet uses a launch template. Note that if the OnDemandAllocationStrategy
/// is set to prioritized
, the same priority is applied when fulfilling On-Demand
/// capacity.
///
/// - diversified
-
///
/// Spot Fleet requests instances from all of the Spot Instance pools that you specify.
///
///
- lowestPrice
-
///
/// Spot Fleet requests instances from the lowest priced Spot Instance pool that has available
/// capacity. If the lowest priced pool doesn't have available capacity, the Spot Instances
/// come from the next lowest priced pool that has available capacity. If a pool runs
/// out of capacity before fulfilling your desired capacity, Spot Fleet will continue
/// to fulfill your request by drawing from the next lowest priced pool. To ensure that
/// your desired capacity is met, you might receive Spot Instances from several pools.
/// Because this strategy only considers instance price and not capacity availability,
/// it might lead to high interruption rates.
///
///
///
/// Default: lowestPrice
///
///
public AllocationStrategy AllocationStrategy
{
get { return this._allocationStrategy; }
set { this._allocationStrategy = value; }
}
// Check to see if AllocationStrategy property is set
internal bool IsSetAllocationStrategy()
{
return this._allocationStrategy != null;
}
///
/// Gets and sets the property ClientToken.
///
/// A unique, case-sensitive identifier that you provide to ensure the idempotency of
/// your listings. This helps to avoid duplicate listings. For more information, see Ensuring
/// Idempotency.
///
///
public string ClientToken
{
get { return this._clientToken; }
set { this._clientToken = value; }
}
// Check to see if ClientToken property is set
internal bool IsSetClientToken()
{
return this._clientToken != null;
}
///
/// Gets and sets the property Context.
///
/// Reserved.
///
///
public string Context
{
get { return this._context; }
set { this._context = value; }
}
// Check to see if Context property is set
internal bool IsSetContext()
{
return this._context != null;
}
///
/// Gets and sets the property ExcessCapacityTerminationPolicy.
///
/// Indicates whether running instances should be terminated if you decrease the target
/// capacity of the Spot Fleet request below the current size of the Spot Fleet.
///
///
///
/// Supported only for fleets of type maintain
.
///
///
public ExcessCapacityTerminationPolicy ExcessCapacityTerminationPolicy
{
get { return this._excessCapacityTerminationPolicy; }
set { this._excessCapacityTerminationPolicy = value; }
}
// Check to see if ExcessCapacityTerminationPolicy property is set
internal bool IsSetExcessCapacityTerminationPolicy()
{
return this._excessCapacityTerminationPolicy != null;
}
///
/// Gets and sets the property FulfilledCapacity.
///
/// The number of units fulfilled by this request compared to the set target capacity.
/// You cannot set this value.
///
///
public double FulfilledCapacity
{
get { return this._fulfilledCapacity.GetValueOrDefault(); }
set { this._fulfilledCapacity = value; }
}
// Check to see if FulfilledCapacity property is set
internal bool IsSetFulfilledCapacity()
{
return this._fulfilledCapacity.HasValue;
}
///
/// Gets and sets the property IamFleetRole.
///
/// The Amazon Resource Name (ARN) of an Identity and Access Management (IAM) role that
/// grants the Spot Fleet the permission to request, launch, terminate, and tag instances
/// on your behalf. For more information, see Spot
/// Fleet prerequisites in the Amazon EC2 User Guide. Spot Fleet can terminate
/// Spot Instances on your behalf when you cancel its Spot Fleet request using CancelSpotFleetRequests
/// or when the Spot Fleet request expires, if you set TerminateInstancesWithExpiration
.
///
///
[AWSProperty(Required=true)]
public string IamFleetRole
{
get { return this._iamFleetRole; }
set { this._iamFleetRole = value; }
}
// Check to see if IamFleetRole property is set
internal bool IsSetIamFleetRole()
{
return this._iamFleetRole != null;
}
///
/// Gets and sets the property InstanceInterruptionBehavior.
///
/// The behavior when a Spot Instance is interrupted. The default is terminate
.
///
///
public InstanceInterruptionBehavior InstanceInterruptionBehavior
{
get { return this._instanceInterruptionBehavior; }
set { this._instanceInterruptionBehavior = value; }
}
// Check to see if InstanceInterruptionBehavior property is set
internal bool IsSetInstanceInterruptionBehavior()
{
return this._instanceInterruptionBehavior != null;
}
///
/// Gets and sets the property InstancePoolsToUseCount.
///
/// The number of Spot pools across which to allocate your target Spot capacity. Valid
/// only when Spot AllocationStrategy is set to lowest-price
. Spot
/// Fleet selects the cheapest Spot pools and evenly allocates your target Spot capacity
/// across the number of Spot pools that you specify.
///
///
///
/// Note that Spot Fleet attempts to draw Spot Instances from the number of pools that
/// you specify on a best effort basis. If a pool runs out of Spot capacity before fulfilling
/// your target capacity, Spot Fleet will continue to fulfill your request by drawing
/// from the next cheapest pool. To ensure that your target capacity is met, you might
/// receive Spot Instances from more than the number of pools that you specified. Similarly,
/// if most of the pools have no Spot capacity, you might receive your full target capacity
/// from fewer than the number of pools that you specified.
///
///
public int InstancePoolsToUseCount
{
get { return this._instancePoolsToUseCount.GetValueOrDefault(); }
set { this._instancePoolsToUseCount = value; }
}
// Check to see if InstancePoolsToUseCount property is set
internal bool IsSetInstancePoolsToUseCount()
{
return this._instancePoolsToUseCount.HasValue;
}
///
/// Gets and sets the property LaunchSpecifications.
///
/// The launch specifications for the Spot Fleet request. If you specify LaunchSpecifications
,
/// you can't specify LaunchTemplateConfigs
. If you include On-Demand capacity
/// in your request, you must use LaunchTemplateConfigs
.
///
///
public List LaunchSpecifications
{
get { return this._launchSpecifications; }
set { this._launchSpecifications = value; }
}
// Check to see if LaunchSpecifications property is set
internal bool IsSetLaunchSpecifications()
{
return this._launchSpecifications != null && this._launchSpecifications.Count > 0;
}
///
/// Gets and sets the property LaunchTemplateConfigs.
///
/// The launch template and overrides. If you specify LaunchTemplateConfigs
,
/// you can't specify LaunchSpecifications
. If you include On-Demand capacity
/// in your request, you must use LaunchTemplateConfigs
.
///
///
public List LaunchTemplateConfigs
{
get { return this._launchTemplateConfigs; }
set { this._launchTemplateConfigs = value; }
}
// Check to see if LaunchTemplateConfigs property is set
internal bool IsSetLaunchTemplateConfigs()
{
return this._launchTemplateConfigs != null && this._launchTemplateConfigs.Count > 0;
}
///
/// Gets and sets the property LoadBalancersConfig.
///
/// One or more Classic Load Balancers and target groups to attach to the Spot Fleet request.
/// Spot Fleet registers the running Spot Instances with the specified Classic Load Balancers
/// and target groups.
///
///
///
/// With Network Load Balancers, Spot Fleet cannot register instances that have the following
/// instance types: C1, CC1, CC2, CG1, CG2, CR1, CS1, G1, G2, HI1, HS1, M1, M2, M3, and
/// T1.
///
///
public LoadBalancersConfig LoadBalancersConfig
{
get { return this._loadBalancersConfig; }
set { this._loadBalancersConfig = value; }
}
// Check to see if LoadBalancersConfig property is set
internal bool IsSetLoadBalancersConfig()
{
return this._loadBalancersConfig != null;
}
///
/// Gets and sets the property OnDemandAllocationStrategy.
///
/// The order of the launch template overrides to use in fulfilling On-Demand capacity.
/// If you specify lowestPrice
, Spot Fleet uses price to determine the order,
/// launching the lowest price first. If you specify prioritized
, Spot Fleet
/// uses the priority that you assign to each Spot Fleet launch template override, launching
/// the highest priority first. If you do not specify a value, Spot Fleet defaults to
/// lowestPrice
.
///
///
public OnDemandAllocationStrategy OnDemandAllocationStrategy
{
get { return this._onDemandAllocationStrategy; }
set { this._onDemandAllocationStrategy = value; }
}
// Check to see if OnDemandAllocationStrategy property is set
internal bool IsSetOnDemandAllocationStrategy()
{
return this._onDemandAllocationStrategy != null;
}
///
/// Gets and sets the property OnDemandFulfilledCapacity.
///
/// The number of On-Demand units fulfilled by this request compared to the set target
/// On-Demand capacity.
///
///
public double OnDemandFulfilledCapacity
{
get { return this._onDemandFulfilledCapacity.GetValueOrDefault(); }
set { this._onDemandFulfilledCapacity = value; }
}
// Check to see if OnDemandFulfilledCapacity property is set
internal bool IsSetOnDemandFulfilledCapacity()
{
return this._onDemandFulfilledCapacity.HasValue;
}
///
/// Gets and sets the property OnDemandMaxTotalPrice.
///
/// The maximum amount per hour for On-Demand Instances that you're willing to pay. You
/// can use the onDemandMaxTotalPrice
parameter, the spotMaxTotalPrice
/// parameter, or both parameters to ensure that your fleet cost does not exceed your
/// budget. If you set a maximum price per hour for the On-Demand Instances and Spot Instances
/// in your request, Spot Fleet will launch instances until it reaches the maximum amount
/// you're willing to pay. When the maximum amount you're willing to pay is reached, the
/// fleet stops launching instances even if it hasn’t met the target capacity.
///
///
public string OnDemandMaxTotalPrice
{
get { return this._onDemandMaxTotalPrice; }
set { this._onDemandMaxTotalPrice = value; }
}
// Check to see if OnDemandMaxTotalPrice property is set
internal bool IsSetOnDemandMaxTotalPrice()
{
return this._onDemandMaxTotalPrice != null;
}
///
/// Gets and sets the property OnDemandTargetCapacity.
///
/// The number of On-Demand units to request. You can choose to set the target capacity
/// in terms of instances or a performance characteristic that is important to your application
/// workload, such as vCPUs, memory, or I/O. If the request type is maintain
,
/// you can specify a target capacity of 0 and add capacity later.
///
///
public int OnDemandTargetCapacity
{
get { return this._onDemandTargetCapacity.GetValueOrDefault(); }
set { this._onDemandTargetCapacity = value; }
}
// Check to see if OnDemandTargetCapacity property is set
internal bool IsSetOnDemandTargetCapacity()
{
return this._onDemandTargetCapacity.HasValue;
}
///
/// Gets and sets the property ReplaceUnhealthyInstances.
///
/// Indicates whether Spot Fleet should replace unhealthy instances.
///
///
public bool ReplaceUnhealthyInstances
{
get { return this._replaceUnhealthyInstances.GetValueOrDefault(); }
set { this._replaceUnhealthyInstances = value; }
}
// Check to see if ReplaceUnhealthyInstances property is set
internal bool IsSetReplaceUnhealthyInstances()
{
return this._replaceUnhealthyInstances.HasValue;
}
///
/// Gets and sets the property SpotMaintenanceStrategies.
///
/// The strategies for managing your Spot Instances that are at an elevated risk of being
/// interrupted.
///
///
public SpotMaintenanceStrategies SpotMaintenanceStrategies
{
get { return this._spotMaintenanceStrategies; }
set { this._spotMaintenanceStrategies = value; }
}
// Check to see if SpotMaintenanceStrategies property is set
internal bool IsSetSpotMaintenanceStrategies()
{
return this._spotMaintenanceStrategies != null;
}
///
/// Gets and sets the property SpotMaxTotalPrice.
///
/// The maximum amount per hour for Spot Instances that you're willing to pay. You can
/// use the spotdMaxTotalPrice
parameter, the onDemandMaxTotalPrice
/// parameter, or both parameters to ensure that your fleet cost does not exceed your
/// budget. If you set a maximum price per hour for the On-Demand Instances and Spot Instances
/// in your request, Spot Fleet will launch instances until it reaches the maximum amount
/// you're willing to pay. When the maximum amount you're willing to pay is reached, the
/// fleet stops launching instances even if it hasn’t met the target capacity.
///
///
public string SpotMaxTotalPrice
{
get { return this._spotMaxTotalPrice; }
set { this._spotMaxTotalPrice = value; }
}
// Check to see if SpotMaxTotalPrice property is set
internal bool IsSetSpotMaxTotalPrice()
{
return this._spotMaxTotalPrice != null;
}
///
/// Gets and sets the property SpotPrice.
///
/// The maximum price per unit hour that you are willing to pay for a Spot Instance. We
/// do not recommend using this parameter because it can lead to increased interruptions.
/// If you do not specify this parameter, you will pay the current Spot price.
///
///
///
/// If you specify a maximum price, your instances will be interrupted more frequently
/// than if you do not specify this parameter.
///
///
///
public string SpotPrice
{
get { return this._spotPrice; }
set { this._spotPrice = value; }
}
// Check to see if SpotPrice property is set
internal bool IsSetSpotPrice()
{
return this._spotPrice != null;
}
///
/// Gets and sets the property TagSpecifications.
///
/// The key-value pair for tagging the Spot Fleet request on creation. The value for ResourceType
/// must be spot-fleet-request
, otherwise the Spot Fleet request fails. To
/// tag instances at launch, specify the tags in the launch
/// template (valid only if you use LaunchTemplateConfigs
) or in the
/// SpotFleetTagSpecification
///
(valid only if you use LaunchSpecifications
). For information
/// about tagging after launch, see Tagging
/// Your Resources.
///
///
public List TagSpecifications
{
get { return this._tagSpecifications; }
set { this._tagSpecifications = value; }
}
// Check to see if TagSpecifications property is set
internal bool IsSetTagSpecifications()
{
return this._tagSpecifications != null && this._tagSpecifications.Count > 0;
}
///
/// Gets and sets the property TargetCapacity.
///
/// The number of units to request for the Spot Fleet. You can choose to set the target
/// capacity in terms of instances or a performance characteristic that is important to
/// your application workload, such as vCPUs, memory, or I/O. If the request type is maintain
,
/// you can specify a target capacity of 0 and add capacity later.
///
///
[AWSProperty(Required=true)]
public int TargetCapacity
{
get { return this._targetCapacity.GetValueOrDefault(); }
set { this._targetCapacity = value; }
}
// Check to see if TargetCapacity property is set
internal bool IsSetTargetCapacity()
{
return this._targetCapacity.HasValue;
}
///
/// Gets and sets the property TargetCapacityUnitType.
///
/// The unit for the target capacity. TargetCapacityUnitType
can only be
/// specified when InstanceRequirements
is specified.
///
///
///
/// Default: units
(translates to number of instances)
///
///
public TargetCapacityUnitType TargetCapacityUnitType
{
get { return this._targetCapacityUnitType; }
set { this._targetCapacityUnitType = value; }
}
// Check to see if TargetCapacityUnitType property is set
internal bool IsSetTargetCapacityUnitType()
{
return this._targetCapacityUnitType != null;
}
///
/// Gets and sets the property TerminateInstancesWithExpiration.
///
/// Indicates whether running Spot Instances are terminated when the Spot Fleet request
/// expires.
///
///
public bool TerminateInstancesWithExpiration
{
get { return this._terminateInstancesWithExpiration.GetValueOrDefault(); }
set { this._terminateInstancesWithExpiration = value; }
}
// Check to see if TerminateInstancesWithExpiration property is set
internal bool IsSetTerminateInstancesWithExpiration()
{
return this._terminateInstancesWithExpiration.HasValue;
}
///
/// Gets and sets the property Type.
///
/// The type of request. Indicates whether the Spot Fleet only requests the target capacity
/// or also attempts to maintain it. When this value is request
, the Spot
/// Fleet only places the required requests. It does not attempt to replenish Spot Instances
/// if capacity is diminished, nor does it submit requests in alternative Spot pools if
/// capacity is not available. When this value is maintain
, the Spot Fleet
/// maintains the target capacity. The Spot Fleet places the required requests to meet
/// capacity and automatically replenishes any interrupted instances. Default: maintain
.
/// instant
is listed but is not used by Spot Fleet.
///
///
public FleetType Type
{
get { return this._type; }
set { this._type = value; }
}
// Check to see if Type property is set
internal bool IsSetType()
{
return this._type != null;
}
///
/// Gets and sets the property ValidFromUtc.
///
/// The start date and time of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ).
/// By default, Amazon EC2 starts fulfilling the request immediately.
///
///
public DateTime ValidFromUtc
{
get { return this._validFromUtc.GetValueOrDefault(); }
set { this._validFrom = this._validFromUtc = value; }
}
// Check to see if ValidFromUtc property is set
internal bool IsSetValidFromUtc()
{
return this._validFromUtc.HasValue;
}
///
/// Gets and sets the property ValidUntilUtc.
///
/// The end date and time of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ).
/// After the end date and time, no new Spot Instance requests are placed or able to fulfill
/// the request. If no value is specified, the Spot Fleet request remains until you cancel
/// it.
///
///
public DateTime ValidUntilUtc
{
get { return this._validUntilUtc.GetValueOrDefault(); }
set { this._validUntil = this._validUntilUtc = value; }
}
// Check to see if ValidUntilUtc property is set
internal bool IsSetValidUntilUtc()
{
return this._validUntilUtc.HasValue;
}
#region Backwards compatible properties
private DateTime? _validFrom;
private DateTime? _validUntil;
///
/// Gets and sets the property ValidFromUtc.
///
/// This property is deprecated. Setting this property results in non-UTC DateTimes not
/// being marshalled correctly. Use ValidFromUtc instead. Setting either ValidFrom or
/// ValidFromUtc results in both ValidFrom and ValidFromUtc being assigned, the latest
/// assignment to either one of the two property is reflected in the value of both. ValidFrom
/// is provided for backwards compatibility only and assigning a non-Utc DateTime to it
/// results in the wrong timestamp being passed to the service.
///
///
///
/// The start date and time of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ).
/// By default, Amazon EC2 starts fulfilling the request immediately.
///
///
[Obsolete("Setting this property results in non-UTC DateTimes not being marshalled correctly. " +
"Use ValidFromUtc instead. Setting either ValidFrom or ValidFromUtc results in both ValidFrom and " +
"ValidFromUtc being assigned, the latest assignment to either one of the two property is " +
"reflected in the value of both. ValidFrom is provided for backwards compatibility only and " +
"assigning a non-Utc DateTime to it results in the wrong timestamp being passed to the service.", false)]
public DateTime ValidFrom
{
get { return this._validFrom.GetValueOrDefault(); }
set
{
this._validFrom = value;
this._validFromUtc = new DateTime(value.Ticks, DateTimeKind.Utc);
}
}
///
/// Gets and sets the property ValidUntilUtc.
///
/// This property is deprecated. Setting this property results in non-UTC DateTimes not
/// being marshalled correctly. Use ValidUntilUtc instead. Setting either ValidUntil or
/// ValidUntilUtc results in both ValidUntil and ValidUntilUtc being assigned, the latest
/// assignment to either one of the two property is reflected in the value of both. ValidUntil
/// is provided for backwards compatibility only and assigning a non-Utc DateTime to it
/// results in the wrong timestamp being passed to the service.
///
///
///
/// The end date and time of the request, in UTC format (YYYY-MM-DDTHH:MM:SSZ).
/// After the end date and time, no new Spot Instance requests are placed or able to fulfill
/// the request. If no value is specified, the Spot Fleet request remains until you cancel
/// it.
///
///
[Obsolete("Setting this property results in non-UTC DateTimes not being marshalled correctly. " +
"Use ValidUntilUtc instead. Setting either ValidUntil or ValidUntilUtc results in both ValidUntil and " +
"ValidUntilUtc being assigned, the latest assignment to either one of the two property is " +
"reflected in the value of both. ValidUntil is provided for backwards compatibility only and " +
"assigning a non-Utc DateTime to it results in the wrong timestamp being passed to the service.", false)]
public DateTime ValidUntil
{
get { return this._validUntil.GetValueOrDefault(); }
set
{
this._validUntil = value;
this._validUntilUtc = new DateTime(value.Ticks, DateTimeKind.Utc);
}
}
#endregion
}
}