/* * 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 } }