/*******************************************************************************
* Copyright 2012-2019 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.
* *****************************************************************************
*
* AWS Tools for Windows (TM) PowerShell (TM)
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management.Automation;
using System.Text;
using Amazon.PowerShell.Common;
using Amazon.Runtime;
using Amazon.EC2;
using Amazon.EC2.Model;
namespace Amazon.PowerShell.Cmdlets.EC2
{
///
/// Creates a Spot Fleet request.
///
///
///
/// The Spot Fleet request specifies the total target capacity and the On-Demand target
/// capacity. Amazon EC2 calculates the difference between the total capacity and On-Demand
/// capacity, and launches the difference as Spot capacity.
///
/// You can submit a single request that includes multiple launch specifications that
/// vary by instance type, AMI, Availability Zone, or subnet.
///
/// By default, the Spot Fleet requests Spot Instances in the Spot Instance pool where
/// the price per unit is the lowest. Each launch specification can include its own instance
/// weighting that reflects the value of the instance type to your application workload.
///
/// Alternatively, you can specify that the Spot Fleet distribute the target capacity
/// across the Spot pools included in its launch specifications. By ensuring that the
/// Spot Instances in your Spot Fleet are in different Spot pools, you can improve the
/// availability of your fleet.
///
/// You can specify tags for the Spot Fleet request and instances launched by the fleet.
/// You cannot tag other resource types in a Spot Fleet request because only the spot-fleet-request
/// and instance
resource types are supported.
///
/// For more information, see Spot
/// Fleet requests in the Amazon EC2 User Guide.
///
/// We strongly discourage using the RequestSpotFleet API because it is a legacy API with
/// no planned investment. For options for requesting Spot Instances, see Which
/// is the best Spot request method to use? in the Amazon EC2 User Guide.
///
///
[Cmdlet("Request", "EC2SpotFleet", SupportsShouldProcess = true, ConfirmImpact = ConfirmImpact.Medium)]
[OutputType("Amazon.EC2.Model.RequestSpotFleetResponse")]
[AWSCmdlet("Calls the Amazon Elastic Compute Cloud (EC2) RequestSpotFleet API operation.", Operation = new[] {"RequestSpotFleet"}, SelectReturnType = typeof(Amazon.EC2.Model.RequestSpotFleetResponse))]
[AWSCmdletOutput("Amazon.EC2.Model.RequestSpotFleetResponse",
"This cmdlet returns an Amazon.EC2.Model.RequestSpotFleetResponse object containing multiple properties. The object can also be referenced from properties attached to the cmdlet entry in the $AWSHistory stack."
)]
public partial class RequestEC2SpotFleetCmdlet : AmazonEC2ClientCmdlet, IExecutor
{
protected override bool IsSensitiveRequest { get; set; } = true;
#region Parameter SpotFleetRequestConfig_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
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.EC2.AllocationStrategy")]
public Amazon.EC2.AllocationStrategy SpotFleetRequestConfig_AllocationStrategy { get; set; }
#endregion
#region Parameter ClassicLoadBalancersConfig_ClassicLoadBalancer
///
///
/// One or more Classic Load Balancers.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SpotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig_ClassicLoadBalancers")]
public Amazon.EC2.Model.ClassicLoadBalancer[] ClassicLoadBalancersConfig_ClassicLoadBalancer { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String SpotFleetRequestConfig_ClientToken { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_Context
///
///
/// Reserved.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String SpotFleetRequestConfig_Context { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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
.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.EC2.ExcessCapacityTerminationPolicy")]
public Amazon.EC2.ExcessCapacityTerminationPolicy SpotFleetRequestConfig_ExcessCapacityTerminationPolicy { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_FulfilledCapacity
///
///
/// The number of units fulfilled by this request compared to the set target capacity.
/// You cannot set this value.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Double? SpotFleetRequestConfig_FulfilledCapacity { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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
.
///
///
#if !MODULAR
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
#else
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true, Mandatory = true)]
[System.Management.Automation.AllowEmptyString]
[System.Management.Automation.AllowNull]
#endif
[Amazon.PowerShell.Common.AWSRequiredParameter]
public System.String SpotFleetRequestConfig_IamFleetRole { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_InstanceInterruptionBehavior
///
///
/// The behavior when a Spot Instance is interrupted. The default is terminate
.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.EC2.InstanceInterruptionBehavior")]
public Amazon.EC2.InstanceInterruptionBehavior SpotFleetRequestConfig_InstanceInterruptionBehavior { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Int32? SpotFleetRequestConfig_InstancePoolsToUseCount { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_LaunchSpecification
///
///
/// 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
.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SpotFleetRequestConfig_LaunchSpecifications")]
public Amazon.EC2.Model.SpotFleetLaunchSpecification[] SpotFleetRequestConfig_LaunchSpecification { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_LaunchTemplateConfig
///
///
/// 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
.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SpotFleetRequestConfig_LaunchTemplateConfigs")]
public Amazon.EC2.Model.LaunchTemplateConfig[] SpotFleetRequestConfig_LaunchTemplateConfig { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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
.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.EC2.OnDemandAllocationStrategy")]
public Amazon.EC2.OnDemandAllocationStrategy SpotFleetRequestConfig_OnDemandAllocationStrategy { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_OnDemandFulfilledCapacity
///
///
/// The number of On-Demand units fulfilled by this request compared to the set target
/// On-Demand capacity.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Double? SpotFleetRequestConfig_OnDemandFulfilledCapacity { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String SpotFleetRequestConfig_OnDemandMaxTotalPrice { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Int32? SpotFleetRequestConfig_OnDemandTargetCapacity { get; set; }
#endregion
#region Parameter CapacityRebalance_ReplacementStrategy
///
///
/// The replacement strategy to use. Only available for fleets of type maintain
.launch
- Spot Fleet launches a new replacement Spot Instance when a
/// rebalance notification is emitted for an existing Spot Instance in the fleet. Spot
/// Fleet does not terminate the instances that receive a rebalance notification. You
/// can terminate the old instances, or you can leave them running. You are charged for
/// all instances while they are running. launch-before-terminate
- Spot Fleet launches a new replacement Spot
/// Instance when a rebalance notification is emitted for an existing Spot Instance in
/// the fleet, and then, after a delay that you specify (in TerminationDelay
),
/// terminates the instances that received a rebalance notification.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SpotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_ReplacementStrategy")]
[AWSConstantClassSource("Amazon.EC2.ReplacementStrategy")]
public Amazon.EC2.ReplacementStrategy CapacityRebalance_ReplacementStrategy { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_ReplaceUnhealthyInstance
///
///
/// Indicates whether Spot Fleet should replace unhealthy instances.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SpotFleetRequestConfig_ReplaceUnhealthyInstances")]
public System.Boolean? SpotFleetRequestConfig_ReplaceUnhealthyInstance { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.String SpotFleetRequestConfig_SpotMaxTotalPrice { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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.
///
///
[System.Management.Automation.Parameter(Position = 0, ValueFromPipelineByPropertyName = true, ValueFromPipeline = true)]
public System.String SpotFleetRequestConfig_SpotPrice { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_TagSpecification
///
///
/// 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SpotFleetRequestConfig_TagSpecifications")]
public Amazon.EC2.Model.TagSpecification[] SpotFleetRequestConfig_TagSpecification { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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.
///
///
#if !MODULAR
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
#else
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true, Mandatory = true)]
[System.Management.Automation.AllowNull]
#endif
[Amazon.PowerShell.Common.AWSRequiredParameter]
public System.Int32? SpotFleetRequestConfig_TargetCapacity { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_TargetCapacityUnitType
///
///
/// The unit for the target capacity. TargetCapacityUnitType
can only be
/// specified when InstanceRequirements
is specified.Default: units
(translates to number of instances)
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.EC2.TargetCapacityUnitType")]
public Amazon.EC2.TargetCapacityUnitType SpotFleetRequestConfig_TargetCapacityUnitType { get; set; }
#endregion
#region Parameter TargetGroupsConfig_TargetGroup
///
///
/// One or more target groups.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SpotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig_TargetGroups")]
public Amazon.EC2.Model.TargetGroup[] TargetGroupsConfig_TargetGroup { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_TerminateInstancesWithExpiration
///
///
/// Indicates whether running Spot Instances are terminated when the Spot Fleet request
/// expires.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.Boolean? SpotFleetRequestConfig_TerminateInstancesWithExpiration { get; set; }
#endregion
#region Parameter CapacityRebalance_TerminationDelay
///
///
/// The amount of time (in seconds) that Amazon EC2 waits before terminating the old Spot
/// Instance after launching a new replacement Spot Instance.Required when ReplacementStrategy
is set to launch-before-terminate
.Not valid when ReplacementStrategy
is set to launch
.Valid values: Minimum value of 120
seconds. Maximum value of 7200
/// seconds.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[Alias("SpotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_TerminationDelay")]
public System.Int32? CapacityRebalance_TerminationDelay { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[AWSConstantClassSource("Amazon.EC2.FleetType")]
public Amazon.EC2.FleetType SpotFleetRequestConfig_Type { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_UtcValidFrom
///
///
/// 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.DateTime? SpotFleetRequestConfig_UtcValidFrom { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_UtcValidUntil
///
///
/// 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.
///
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public System.DateTime? SpotFleetRequestConfig_UtcValidUntil { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_ValidFrom
///
///
/// 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.
///
/// This parameter is deprecated.
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[System.ObsoleteAttribute("This parameter is deprecated and may result in the wrong timestamp being passed to the service, use SpotFleetRequestConfig_UtcValidFrom instead.")]
public System.DateTime? SpotFleetRequestConfig_ValidFrom { get; set; }
#endregion
#region Parameter SpotFleetRequestConfig_ValidUntil
///
///
/// 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.
///
/// This parameter is deprecated.
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
[System.ObsoleteAttribute("This parameter is deprecated and may result in the wrong timestamp being passed to the service, use SpotFleetRequestConfig_UtcValidUntil instead.")]
public System.DateTime? SpotFleetRequestConfig_ValidUntil { get; set; }
#endregion
#region Parameter Select
///
/// Use the -Select parameter to control the cmdlet output. The default value is '*'.
/// Specifying -Select '*' will result in the cmdlet returning the whole service response (Amazon.EC2.Model.RequestSpotFleetResponse).
/// Specifying the name of a property of type Amazon.EC2.Model.RequestSpotFleetResponse will result in that property being returned.
/// Specifying -Select '^ParameterName' will result in the cmdlet returning the selected cmdlet parameter value.
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public string Select { get; set; } = "*";
#endregion
#region Parameter PassThru
///
/// Changes the cmdlet behavior to return the value passed to the SpotFleetRequestConfig_SpotPrice parameter.
/// The -PassThru parameter is deprecated, use -Select '^SpotFleetRequestConfig_SpotPrice' instead. This parameter will be removed in a future version.
///
[System.Obsolete("The -PassThru parameter is deprecated, use -Select '^SpotFleetRequestConfig_SpotPrice' instead. This parameter will be removed in a future version.")]
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public SwitchParameter PassThru { get; set; }
#endregion
#region Parameter Force
///
/// This parameter overrides confirmation prompts to force
/// the cmdlet to continue its operation. This parameter should always
/// be used with caution.
///
[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]
public SwitchParameter Force { get; set; }
#endregion
protected override void ProcessRecord()
{
this._AWSSignerType = "v4";
base.ProcessRecord();
var resourceIdentifiersText = FormatParameterValuesForConfirmationMsg(nameof(this.SpotFleetRequestConfig_SpotPrice), MyInvocation.BoundParameters);
if (!ConfirmShouldProceed(this.Force.IsPresent, resourceIdentifiersText, "Request-EC2SpotFleet (RequestSpotFleet)"))
{
return;
}
var context = new CmdletContext();
// allow for manipulation of parameters prior to loading into context
PreExecutionContextLoad(context);
#pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
if (ParameterWasBound(nameof(this.Select)))
{
context.Select = CreateSelectDelegate(Select) ??
throw new System.ArgumentException("Invalid value for -Select parameter.", nameof(this.Select));
if (this.PassThru.IsPresent)
{
throw new System.ArgumentException("-PassThru cannot be used when -Select is specified.", nameof(this.Select));
}
}
else if (this.PassThru.IsPresent)
{
context.Select = (response, cmdlet) => this.SpotFleetRequestConfig_SpotPrice;
}
#pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute
context.SpotFleetRequestConfig_AllocationStrategy = this.SpotFleetRequestConfig_AllocationStrategy;
context.SpotFleetRequestConfig_ClientToken = this.SpotFleetRequestConfig_ClientToken;
context.SpotFleetRequestConfig_Context = this.SpotFleetRequestConfig_Context;
context.SpotFleetRequestConfig_ExcessCapacityTerminationPolicy = this.SpotFleetRequestConfig_ExcessCapacityTerminationPolicy;
context.SpotFleetRequestConfig_FulfilledCapacity = this.SpotFleetRequestConfig_FulfilledCapacity;
context.SpotFleetRequestConfig_IamFleetRole = this.SpotFleetRequestConfig_IamFleetRole;
#if MODULAR
if (this.SpotFleetRequestConfig_IamFleetRole == null && ParameterWasBound(nameof(this.SpotFleetRequestConfig_IamFleetRole)))
{
WriteWarning("You are passing $null as a value for parameter SpotFleetRequestConfig_IamFleetRole which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues.");
}
#endif
context.SpotFleetRequestConfig_InstanceInterruptionBehavior = this.SpotFleetRequestConfig_InstanceInterruptionBehavior;
context.SpotFleetRequestConfig_InstancePoolsToUseCount = this.SpotFleetRequestConfig_InstancePoolsToUseCount;
if (this.SpotFleetRequestConfig_LaunchSpecification != null)
{
context.SpotFleetRequestConfig_LaunchSpecification = new List(this.SpotFleetRequestConfig_LaunchSpecification);
}
if (this.SpotFleetRequestConfig_LaunchTemplateConfig != null)
{
context.SpotFleetRequestConfig_LaunchTemplateConfig = new List(this.SpotFleetRequestConfig_LaunchTemplateConfig);
}
if (this.ClassicLoadBalancersConfig_ClassicLoadBalancer != null)
{
context.ClassicLoadBalancersConfig_ClassicLoadBalancer = new List(this.ClassicLoadBalancersConfig_ClassicLoadBalancer);
}
if (this.TargetGroupsConfig_TargetGroup != null)
{
context.TargetGroupsConfig_TargetGroup = new List(this.TargetGroupsConfig_TargetGroup);
}
context.SpotFleetRequestConfig_OnDemandAllocationStrategy = this.SpotFleetRequestConfig_OnDemandAllocationStrategy;
context.SpotFleetRequestConfig_OnDemandFulfilledCapacity = this.SpotFleetRequestConfig_OnDemandFulfilledCapacity;
context.SpotFleetRequestConfig_OnDemandMaxTotalPrice = this.SpotFleetRequestConfig_OnDemandMaxTotalPrice;
context.SpotFleetRequestConfig_OnDemandTargetCapacity = this.SpotFleetRequestConfig_OnDemandTargetCapacity;
context.SpotFleetRequestConfig_ReplaceUnhealthyInstance = this.SpotFleetRequestConfig_ReplaceUnhealthyInstance;
context.CapacityRebalance_ReplacementStrategy = this.CapacityRebalance_ReplacementStrategy;
context.CapacityRebalance_TerminationDelay = this.CapacityRebalance_TerminationDelay;
context.SpotFleetRequestConfig_SpotMaxTotalPrice = this.SpotFleetRequestConfig_SpotMaxTotalPrice;
context.SpotFleetRequestConfig_SpotPrice = this.SpotFleetRequestConfig_SpotPrice;
if (this.SpotFleetRequestConfig_TagSpecification != null)
{
context.SpotFleetRequestConfig_TagSpecification = new List(this.SpotFleetRequestConfig_TagSpecification);
}
context.SpotFleetRequestConfig_TargetCapacity = this.SpotFleetRequestConfig_TargetCapacity;
#if MODULAR
if (this.SpotFleetRequestConfig_TargetCapacity == null && ParameterWasBound(nameof(this.SpotFleetRequestConfig_TargetCapacity)))
{
WriteWarning("You are passing $null as a value for parameter SpotFleetRequestConfig_TargetCapacity which is marked as required. In case you believe this parameter was incorrectly marked as required, report this by opening an issue at https://github.com/aws/aws-tools-for-powershell/issues.");
}
#endif
context.SpotFleetRequestConfig_TargetCapacityUnitType = this.SpotFleetRequestConfig_TargetCapacityUnitType;
context.SpotFleetRequestConfig_TerminateInstancesWithExpiration = this.SpotFleetRequestConfig_TerminateInstancesWithExpiration;
context.SpotFleetRequestConfig_Type = this.SpotFleetRequestConfig_Type;
context.SpotFleetRequestConfig_UtcValidFrom = this.SpotFleetRequestConfig_UtcValidFrom;
context.SpotFleetRequestConfig_UtcValidUntil = this.SpotFleetRequestConfig_UtcValidUntil;
#pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
context.SpotFleetRequestConfig_ValidFrom = this.SpotFleetRequestConfig_ValidFrom;
#pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute
#pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
context.SpotFleetRequestConfig_ValidUntil = this.SpotFleetRequestConfig_ValidUntil;
#pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute
// allow further manipulation of loaded context prior to processing
PostExecutionContextLoad(context);
var output = Execute(context) as CmdletOutput;
ProcessOutput(output);
}
#region IExecutor Members
public object Execute(ExecutorContext context)
{
var cmdletContext = context as CmdletContext;
// create request
var request = new Amazon.EC2.Model.RequestSpotFleetRequest();
// populate SpotFleetRequestConfig
var requestSpotFleetRequestConfigIsNull = true;
request.SpotFleetRequestConfig = new Amazon.EC2.Model.SpotFleetRequestConfigData();
Amazon.EC2.AllocationStrategy requestSpotFleetRequestConfig_spotFleetRequestConfig_AllocationStrategy = null;
if (cmdletContext.SpotFleetRequestConfig_AllocationStrategy != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_AllocationStrategy = cmdletContext.SpotFleetRequestConfig_AllocationStrategy;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_AllocationStrategy != null)
{
request.SpotFleetRequestConfig.AllocationStrategy = requestSpotFleetRequestConfig_spotFleetRequestConfig_AllocationStrategy;
requestSpotFleetRequestConfigIsNull = false;
}
System.String requestSpotFleetRequestConfig_spotFleetRequestConfig_ClientToken = null;
if (cmdletContext.SpotFleetRequestConfig_ClientToken != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_ClientToken = cmdletContext.SpotFleetRequestConfig_ClientToken;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_ClientToken != null)
{
request.SpotFleetRequestConfig.ClientToken = requestSpotFleetRequestConfig_spotFleetRequestConfig_ClientToken;
requestSpotFleetRequestConfigIsNull = false;
}
System.String requestSpotFleetRequestConfig_spotFleetRequestConfig_Context = null;
if (cmdletContext.SpotFleetRequestConfig_Context != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_Context = cmdletContext.SpotFleetRequestConfig_Context;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_Context != null)
{
request.SpotFleetRequestConfig.Context = requestSpotFleetRequestConfig_spotFleetRequestConfig_Context;
requestSpotFleetRequestConfigIsNull = false;
}
Amazon.EC2.ExcessCapacityTerminationPolicy requestSpotFleetRequestConfig_spotFleetRequestConfig_ExcessCapacityTerminationPolicy = null;
if (cmdletContext.SpotFleetRequestConfig_ExcessCapacityTerminationPolicy != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_ExcessCapacityTerminationPolicy = cmdletContext.SpotFleetRequestConfig_ExcessCapacityTerminationPolicy;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_ExcessCapacityTerminationPolicy != null)
{
request.SpotFleetRequestConfig.ExcessCapacityTerminationPolicy = requestSpotFleetRequestConfig_spotFleetRequestConfig_ExcessCapacityTerminationPolicy;
requestSpotFleetRequestConfigIsNull = false;
}
System.Double? requestSpotFleetRequestConfig_spotFleetRequestConfig_FulfilledCapacity = null;
if (cmdletContext.SpotFleetRequestConfig_FulfilledCapacity != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_FulfilledCapacity = cmdletContext.SpotFleetRequestConfig_FulfilledCapacity.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_FulfilledCapacity != null)
{
request.SpotFleetRequestConfig.FulfilledCapacity = requestSpotFleetRequestConfig_spotFleetRequestConfig_FulfilledCapacity.Value;
requestSpotFleetRequestConfigIsNull = false;
}
System.String requestSpotFleetRequestConfig_spotFleetRequestConfig_IamFleetRole = null;
if (cmdletContext.SpotFleetRequestConfig_IamFleetRole != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_IamFleetRole = cmdletContext.SpotFleetRequestConfig_IamFleetRole;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_IamFleetRole != null)
{
request.SpotFleetRequestConfig.IamFleetRole = requestSpotFleetRequestConfig_spotFleetRequestConfig_IamFleetRole;
requestSpotFleetRequestConfigIsNull = false;
}
Amazon.EC2.InstanceInterruptionBehavior requestSpotFleetRequestConfig_spotFleetRequestConfig_InstanceInterruptionBehavior = null;
if (cmdletContext.SpotFleetRequestConfig_InstanceInterruptionBehavior != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_InstanceInterruptionBehavior = cmdletContext.SpotFleetRequestConfig_InstanceInterruptionBehavior;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_InstanceInterruptionBehavior != null)
{
request.SpotFleetRequestConfig.InstanceInterruptionBehavior = requestSpotFleetRequestConfig_spotFleetRequestConfig_InstanceInterruptionBehavior;
requestSpotFleetRequestConfigIsNull = false;
}
System.Int32? requestSpotFleetRequestConfig_spotFleetRequestConfig_InstancePoolsToUseCount = null;
if (cmdletContext.SpotFleetRequestConfig_InstancePoolsToUseCount != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_InstancePoolsToUseCount = cmdletContext.SpotFleetRequestConfig_InstancePoolsToUseCount.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_InstancePoolsToUseCount != null)
{
request.SpotFleetRequestConfig.InstancePoolsToUseCount = requestSpotFleetRequestConfig_spotFleetRequestConfig_InstancePoolsToUseCount.Value;
requestSpotFleetRequestConfigIsNull = false;
}
List requestSpotFleetRequestConfig_spotFleetRequestConfig_LaunchSpecification = null;
if (cmdletContext.SpotFleetRequestConfig_LaunchSpecification != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LaunchSpecification = cmdletContext.SpotFleetRequestConfig_LaunchSpecification;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LaunchSpecification != null)
{
request.SpotFleetRequestConfig.LaunchSpecifications = requestSpotFleetRequestConfig_spotFleetRequestConfig_LaunchSpecification;
requestSpotFleetRequestConfigIsNull = false;
}
List requestSpotFleetRequestConfig_spotFleetRequestConfig_LaunchTemplateConfig = null;
if (cmdletContext.SpotFleetRequestConfig_LaunchTemplateConfig != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LaunchTemplateConfig = cmdletContext.SpotFleetRequestConfig_LaunchTemplateConfig;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LaunchTemplateConfig != null)
{
request.SpotFleetRequestConfig.LaunchTemplateConfigs = requestSpotFleetRequestConfig_spotFleetRequestConfig_LaunchTemplateConfig;
requestSpotFleetRequestConfigIsNull = false;
}
Amazon.EC2.OnDemandAllocationStrategy requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandAllocationStrategy = null;
if (cmdletContext.SpotFleetRequestConfig_OnDemandAllocationStrategy != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandAllocationStrategy = cmdletContext.SpotFleetRequestConfig_OnDemandAllocationStrategy;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandAllocationStrategy != null)
{
request.SpotFleetRequestConfig.OnDemandAllocationStrategy = requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandAllocationStrategy;
requestSpotFleetRequestConfigIsNull = false;
}
System.Double? requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandFulfilledCapacity = null;
if (cmdletContext.SpotFleetRequestConfig_OnDemandFulfilledCapacity != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandFulfilledCapacity = cmdletContext.SpotFleetRequestConfig_OnDemandFulfilledCapacity.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandFulfilledCapacity != null)
{
request.SpotFleetRequestConfig.OnDemandFulfilledCapacity = requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandFulfilledCapacity.Value;
requestSpotFleetRequestConfigIsNull = false;
}
System.String requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandMaxTotalPrice = null;
if (cmdletContext.SpotFleetRequestConfig_OnDemandMaxTotalPrice != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandMaxTotalPrice = cmdletContext.SpotFleetRequestConfig_OnDemandMaxTotalPrice;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandMaxTotalPrice != null)
{
request.SpotFleetRequestConfig.OnDemandMaxTotalPrice = requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandMaxTotalPrice;
requestSpotFleetRequestConfigIsNull = false;
}
System.Int32? requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandTargetCapacity = null;
if (cmdletContext.SpotFleetRequestConfig_OnDemandTargetCapacity != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandTargetCapacity = cmdletContext.SpotFleetRequestConfig_OnDemandTargetCapacity.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandTargetCapacity != null)
{
request.SpotFleetRequestConfig.OnDemandTargetCapacity = requestSpotFleetRequestConfig_spotFleetRequestConfig_OnDemandTargetCapacity.Value;
requestSpotFleetRequestConfigIsNull = false;
}
System.Boolean? requestSpotFleetRequestConfig_spotFleetRequestConfig_ReplaceUnhealthyInstance = null;
if (cmdletContext.SpotFleetRequestConfig_ReplaceUnhealthyInstance != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_ReplaceUnhealthyInstance = cmdletContext.SpotFleetRequestConfig_ReplaceUnhealthyInstance.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_ReplaceUnhealthyInstance != null)
{
request.SpotFleetRequestConfig.ReplaceUnhealthyInstances = requestSpotFleetRequestConfig_spotFleetRequestConfig_ReplaceUnhealthyInstance.Value;
requestSpotFleetRequestConfigIsNull = false;
}
System.String requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaxTotalPrice = null;
if (cmdletContext.SpotFleetRequestConfig_SpotMaxTotalPrice != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaxTotalPrice = cmdletContext.SpotFleetRequestConfig_SpotMaxTotalPrice;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaxTotalPrice != null)
{
request.SpotFleetRequestConfig.SpotMaxTotalPrice = requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaxTotalPrice;
requestSpotFleetRequestConfigIsNull = false;
}
System.String requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotPrice = null;
if (cmdletContext.SpotFleetRequestConfig_SpotPrice != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotPrice = cmdletContext.SpotFleetRequestConfig_SpotPrice;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotPrice != null)
{
request.SpotFleetRequestConfig.SpotPrice = requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotPrice;
requestSpotFleetRequestConfigIsNull = false;
}
List requestSpotFleetRequestConfig_spotFleetRequestConfig_TagSpecification = null;
if (cmdletContext.SpotFleetRequestConfig_TagSpecification != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_TagSpecification = cmdletContext.SpotFleetRequestConfig_TagSpecification;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_TagSpecification != null)
{
request.SpotFleetRequestConfig.TagSpecifications = requestSpotFleetRequestConfig_spotFleetRequestConfig_TagSpecification;
requestSpotFleetRequestConfigIsNull = false;
}
System.Int32? requestSpotFleetRequestConfig_spotFleetRequestConfig_TargetCapacity = null;
if (cmdletContext.SpotFleetRequestConfig_TargetCapacity != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_TargetCapacity = cmdletContext.SpotFleetRequestConfig_TargetCapacity.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_TargetCapacity != null)
{
request.SpotFleetRequestConfig.TargetCapacity = requestSpotFleetRequestConfig_spotFleetRequestConfig_TargetCapacity.Value;
requestSpotFleetRequestConfigIsNull = false;
}
Amazon.EC2.TargetCapacityUnitType requestSpotFleetRequestConfig_spotFleetRequestConfig_TargetCapacityUnitType = null;
if (cmdletContext.SpotFleetRequestConfig_TargetCapacityUnitType != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_TargetCapacityUnitType = cmdletContext.SpotFleetRequestConfig_TargetCapacityUnitType;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_TargetCapacityUnitType != null)
{
request.SpotFleetRequestConfig.TargetCapacityUnitType = requestSpotFleetRequestConfig_spotFleetRequestConfig_TargetCapacityUnitType;
requestSpotFleetRequestConfigIsNull = false;
}
System.Boolean? requestSpotFleetRequestConfig_spotFleetRequestConfig_TerminateInstancesWithExpiration = null;
if (cmdletContext.SpotFleetRequestConfig_TerminateInstancesWithExpiration != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_TerminateInstancesWithExpiration = cmdletContext.SpotFleetRequestConfig_TerminateInstancesWithExpiration.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_TerminateInstancesWithExpiration != null)
{
request.SpotFleetRequestConfig.TerminateInstancesWithExpiration = requestSpotFleetRequestConfig_spotFleetRequestConfig_TerminateInstancesWithExpiration.Value;
requestSpotFleetRequestConfigIsNull = false;
}
Amazon.EC2.FleetType requestSpotFleetRequestConfig_spotFleetRequestConfig_Type = null;
if (cmdletContext.SpotFleetRequestConfig_Type != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_Type = cmdletContext.SpotFleetRequestConfig_Type;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_Type != null)
{
request.SpotFleetRequestConfig.Type = requestSpotFleetRequestConfig_spotFleetRequestConfig_Type;
requestSpotFleetRequestConfigIsNull = false;
}
System.DateTime? requestSpotFleetRequestConfig_spotFleetRequestConfig_UtcValidFrom = null;
if (cmdletContext.SpotFleetRequestConfig_UtcValidFrom != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_UtcValidFrom = cmdletContext.SpotFleetRequestConfig_UtcValidFrom.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_UtcValidFrom != null)
{
request.SpotFleetRequestConfig.ValidFromUtc = requestSpotFleetRequestConfig_spotFleetRequestConfig_UtcValidFrom.Value;
requestSpotFleetRequestConfigIsNull = false;
}
System.DateTime? requestSpotFleetRequestConfig_spotFleetRequestConfig_UtcValidUntil = null;
if (cmdletContext.SpotFleetRequestConfig_UtcValidUntil != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_UtcValidUntil = cmdletContext.SpotFleetRequestConfig_UtcValidUntil.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_UtcValidUntil != null)
{
request.SpotFleetRequestConfig.ValidUntilUtc = requestSpotFleetRequestConfig_spotFleetRequestConfig_UtcValidUntil.Value;
requestSpotFleetRequestConfigIsNull = false;
}
#pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
System.DateTime? requestSpotFleetRequestConfig_spotFleetRequestConfig_ValidFrom = null;
if (cmdletContext.SpotFleetRequestConfig_ValidFrom != null)
{
if (cmdletContext.SpotFleetRequestConfig_UtcValidFrom != null)
{
throw new System.ArgumentException("Parameters SpotFleetRequestConfig_ValidFrom and SpotFleetRequestConfig_UtcValidFrom are mutually exclusive.", nameof(this.SpotFleetRequestConfig_ValidFrom));
}
requestSpotFleetRequestConfig_spotFleetRequestConfig_ValidFrom = cmdletContext.SpotFleetRequestConfig_ValidFrom.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_ValidFrom != null)
{
request.SpotFleetRequestConfig.ValidFrom = requestSpotFleetRequestConfig_spotFleetRequestConfig_ValidFrom.Value;
requestSpotFleetRequestConfigIsNull = false;
}
#pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute
#pragma warning disable CS0618, CS0612 //A class member was marked with the Obsolete attribute
System.DateTime? requestSpotFleetRequestConfig_spotFleetRequestConfig_ValidUntil = null;
if (cmdletContext.SpotFleetRequestConfig_ValidUntil != null)
{
if (cmdletContext.SpotFleetRequestConfig_UtcValidUntil != null)
{
throw new System.ArgumentException("Parameters SpotFleetRequestConfig_ValidUntil and SpotFleetRequestConfig_UtcValidUntil are mutually exclusive.", nameof(this.SpotFleetRequestConfig_ValidUntil));
}
requestSpotFleetRequestConfig_spotFleetRequestConfig_ValidUntil = cmdletContext.SpotFleetRequestConfig_ValidUntil.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_ValidUntil != null)
{
request.SpotFleetRequestConfig.ValidUntil = requestSpotFleetRequestConfig_spotFleetRequestConfig_ValidUntil.Value;
requestSpotFleetRequestConfigIsNull = false;
}
#pragma warning restore CS0618, CS0612 //A class member was marked with the Obsolete attribute
Amazon.EC2.Model.SpotMaintenanceStrategies requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies = null;
// populate SpotMaintenanceStrategies
var requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategiesIsNull = true;
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies = new Amazon.EC2.Model.SpotMaintenanceStrategies();
Amazon.EC2.Model.SpotCapacityRebalance requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance = null;
// populate CapacityRebalance
var requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalanceIsNull = true;
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance = new Amazon.EC2.Model.SpotCapacityRebalance();
Amazon.EC2.ReplacementStrategy requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_capacityRebalance_ReplacementStrategy = null;
if (cmdletContext.CapacityRebalance_ReplacementStrategy != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_capacityRebalance_ReplacementStrategy = cmdletContext.CapacityRebalance_ReplacementStrategy;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_capacityRebalance_ReplacementStrategy != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance.ReplacementStrategy = requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_capacityRebalance_ReplacementStrategy;
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalanceIsNull = false;
}
System.Int32? requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_capacityRebalance_TerminationDelay = null;
if (cmdletContext.CapacityRebalance_TerminationDelay != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_capacityRebalance_TerminationDelay = cmdletContext.CapacityRebalance_TerminationDelay.Value;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_capacityRebalance_TerminationDelay != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance.TerminationDelay = requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance_capacityRebalance_TerminationDelay.Value;
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalanceIsNull = false;
}
// determine if requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance should be set to null
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalanceIsNull)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance = null;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies.CapacityRebalance = requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies_spotFleetRequestConfig_SpotMaintenanceStrategies_CapacityRebalance;
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategiesIsNull = false;
}
// determine if requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies should be set to null
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategiesIsNull)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies = null;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies != null)
{
request.SpotFleetRequestConfig.SpotMaintenanceStrategies = requestSpotFleetRequestConfig_spotFleetRequestConfig_SpotMaintenanceStrategies;
requestSpotFleetRequestConfigIsNull = false;
}
Amazon.EC2.Model.LoadBalancersConfig requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig = null;
// populate LoadBalancersConfig
var requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfigIsNull = true;
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig = new Amazon.EC2.Model.LoadBalancersConfig();
Amazon.EC2.Model.ClassicLoadBalancersConfig requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig = null;
// populate ClassicLoadBalancersConfig
var requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfigIsNull = true;
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig = new Amazon.EC2.Model.ClassicLoadBalancersConfig();
List requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig_classicLoadBalancersConfig_ClassicLoadBalancer = null;
if (cmdletContext.ClassicLoadBalancersConfig_ClassicLoadBalancer != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig_classicLoadBalancersConfig_ClassicLoadBalancer = cmdletContext.ClassicLoadBalancersConfig_ClassicLoadBalancer;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig_classicLoadBalancersConfig_ClassicLoadBalancer != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig.ClassicLoadBalancers = requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig_classicLoadBalancersConfig_ClassicLoadBalancer;
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfigIsNull = false;
}
// determine if requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig should be set to null
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfigIsNull)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig = null;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig.ClassicLoadBalancersConfig = requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_ClassicLoadBalancersConfig;
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfigIsNull = false;
}
Amazon.EC2.Model.TargetGroupsConfig requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig = null;
// populate TargetGroupsConfig
var requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfigIsNull = true;
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig = new Amazon.EC2.Model.TargetGroupsConfig();
List requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig_targetGroupsConfig_TargetGroup = null;
if (cmdletContext.TargetGroupsConfig_TargetGroup != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig_targetGroupsConfig_TargetGroup = cmdletContext.TargetGroupsConfig_TargetGroup;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig_targetGroupsConfig_TargetGroup != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig.TargetGroups = requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig_targetGroupsConfig_TargetGroup;
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfigIsNull = false;
}
// determine if requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig should be set to null
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfigIsNull)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig = null;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig != null)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig.TargetGroupsConfig = requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig_spotFleetRequestConfig_LoadBalancersConfig_TargetGroupsConfig;
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfigIsNull = false;
}
// determine if requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig should be set to null
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfigIsNull)
{
requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig = null;
}
if (requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig != null)
{
request.SpotFleetRequestConfig.LoadBalancersConfig = requestSpotFleetRequestConfig_spotFleetRequestConfig_LoadBalancersConfig;
requestSpotFleetRequestConfigIsNull = false;
}
// determine if request.SpotFleetRequestConfig should be set to null
if (requestSpotFleetRequestConfigIsNull)
{
request.SpotFleetRequestConfig = null;
}
CmdletOutput output;
// issue call
var client = Client ?? CreateClient(_CurrentCredentials, _RegionEndpoint);
try
{
var response = CallAWSServiceOperation(client, request);
object pipelineOutput = null;
pipelineOutput = cmdletContext.Select(response, this);
output = new CmdletOutput
{
PipelineOutput = pipelineOutput,
ServiceResponse = response
};
}
catch (Exception e)
{
output = new CmdletOutput { ErrorResponse = e };
}
return output;
}
public ExecutorContext CreateContext()
{
return new CmdletContext();
}
#endregion
#region AWS Service Operation Call
private Amazon.EC2.Model.RequestSpotFleetResponse CallAWSServiceOperation(IAmazonEC2 client, Amazon.EC2.Model.RequestSpotFleetRequest request)
{
Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "Amazon Elastic Compute Cloud (EC2)", "RequestSpotFleet");
try
{
#if DESKTOP
return client.RequestSpotFleet(request);
#elif CORECLR
return client.RequestSpotFleetAsync(request).GetAwaiter().GetResult();
#else
#error "Unknown build edition"
#endif
}
catch (AmazonServiceException exc)
{
var webException = exc.InnerException as System.Net.WebException;
if (webException != null)
{
throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
}
throw;
}
}
#endregion
internal partial class CmdletContext : ExecutorContext
{
public Amazon.EC2.AllocationStrategy SpotFleetRequestConfig_AllocationStrategy { get; set; }
public System.String SpotFleetRequestConfig_ClientToken { get; set; }
public System.String SpotFleetRequestConfig_Context { get; set; }
public Amazon.EC2.ExcessCapacityTerminationPolicy SpotFleetRequestConfig_ExcessCapacityTerminationPolicy { get; set; }
public System.Double? SpotFleetRequestConfig_FulfilledCapacity { get; set; }
public System.String SpotFleetRequestConfig_IamFleetRole { get; set; }
public Amazon.EC2.InstanceInterruptionBehavior SpotFleetRequestConfig_InstanceInterruptionBehavior { get; set; }
public System.Int32? SpotFleetRequestConfig_InstancePoolsToUseCount { get; set; }
public List SpotFleetRequestConfig_LaunchSpecification { get; set; }
public List SpotFleetRequestConfig_LaunchTemplateConfig { get; set; }
public List ClassicLoadBalancersConfig_ClassicLoadBalancer { get; set; }
public List TargetGroupsConfig_TargetGroup { get; set; }
public Amazon.EC2.OnDemandAllocationStrategy SpotFleetRequestConfig_OnDemandAllocationStrategy { get; set; }
public System.Double? SpotFleetRequestConfig_OnDemandFulfilledCapacity { get; set; }
public System.String SpotFleetRequestConfig_OnDemandMaxTotalPrice { get; set; }
public System.Int32? SpotFleetRequestConfig_OnDemandTargetCapacity { get; set; }
public System.Boolean? SpotFleetRequestConfig_ReplaceUnhealthyInstance { get; set; }
public Amazon.EC2.ReplacementStrategy CapacityRebalance_ReplacementStrategy { get; set; }
public System.Int32? CapacityRebalance_TerminationDelay { get; set; }
public System.String SpotFleetRequestConfig_SpotMaxTotalPrice { get; set; }
public System.String SpotFleetRequestConfig_SpotPrice { get; set; }
public List SpotFleetRequestConfig_TagSpecification { get; set; }
public System.Int32? SpotFleetRequestConfig_TargetCapacity { get; set; }
public Amazon.EC2.TargetCapacityUnitType SpotFleetRequestConfig_TargetCapacityUnitType { get; set; }
public System.Boolean? SpotFleetRequestConfig_TerminateInstancesWithExpiration { get; set; }
public Amazon.EC2.FleetType SpotFleetRequestConfig_Type { get; set; }
public System.DateTime? SpotFleetRequestConfig_UtcValidFrom { get; set; }
public System.DateTime? SpotFleetRequestConfig_UtcValidUntil { get; set; }
[System.ObsoleteAttribute]
public System.DateTime? SpotFleetRequestConfig_ValidFrom { get; set; }
[System.ObsoleteAttribute]
public System.DateTime? SpotFleetRequestConfig_ValidUntil { get; set; }
public System.Func Select { get; set; } =
(response, cmdlet) => response;
}
}
}