/*
* 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 elasticmapreduce-2009-03-31.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.ElasticMapReduce.Model
{
///
/// The launch specification for Spot Instances in the instance fleet, which determines
/// the defined duration, provisioning timeout behavior, and allocation strategy.
///
///
///
/// The instance fleet configuration is available only in Amazon EMR releases 4.8.0 and
/// later, excluding 5.0.x versions. Spot Instance allocation strategy is available in
/// Amazon EMR releases 5.12.1 and later.
///
///
///
/// Spot Instances with a defined duration (also known as Spot blocks) are no longer available
/// to new customers from July 1, 2021. For customers who have previously used the feature,
/// we will continue to support Spot Instances with a defined duration until December
/// 31, 2022.
///
///
///
public partial class SpotProvisioningSpecification
{
private SpotProvisioningAllocationStrategy _allocationStrategy;
private int? _blockDurationMinutes;
private SpotProvisioningTimeoutAction _timeoutAction;
private int? _timeoutDurationMinutes;
///
/// Gets and sets the property AllocationStrategy.
///
/// Specifies the strategy to use in launching Spot Instance fleets. Currently, the only
/// option is capacity-optimized (the default), which launches instances from Spot Instance
/// pools with optimal capacity for the number of instances that are launching.
///
///
public SpotProvisioningAllocationStrategy 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 BlockDurationMinutes.
///
/// The defined duration for Spot Instances (also known as Spot blocks) in minutes. When
/// specified, the Spot Instance does not terminate before the defined duration expires,
/// and defined duration pricing for Spot Instances applies. Valid values are 60, 120,
/// 180, 240, 300, or 360. The duration period starts as soon as a Spot Instance receives
/// its instance ID. At the end of the duration, Amazon EC2 marks the Spot Instance for
/// termination and provides a Spot Instance termination notice, which gives the instance
/// a two-minute warning before it terminates.
///
///
///
/// Spot Instances with a defined duration (also known as Spot blocks) are no longer available
/// to new customers from July 1, 2021. For customers who have previously used the feature,
/// we will continue to support Spot Instances with a defined duration until December
/// 31, 2022.
///
///
///
[AWSProperty(Min=0)]
public int BlockDurationMinutes
{
get { return this._blockDurationMinutes.GetValueOrDefault(); }
set { this._blockDurationMinutes = value; }
}
// Check to see if BlockDurationMinutes property is set
internal bool IsSetBlockDurationMinutes()
{
return this._blockDurationMinutes.HasValue;
}
///
/// Gets and sets the property TimeoutAction.
///
/// The action to take when TargetSpotCapacity
has not been fulfilled when
/// the TimeoutDurationMinutes
has expired; that is, when all Spot Instances
/// could not be provisioned within the Spot provisioning timeout. Valid values are TERMINATE_CLUSTER
/// and SWITCH_TO_ON_DEMAND
. SWITCH_TO_ON_DEMAND specifies that if no Spot
/// Instances are available, On-Demand Instances should be provisioned to fulfill any
/// remaining Spot capacity.
///
///
[AWSProperty(Required=true)]
public SpotProvisioningTimeoutAction TimeoutAction
{
get { return this._timeoutAction; }
set { this._timeoutAction = value; }
}
// Check to see if TimeoutAction property is set
internal bool IsSetTimeoutAction()
{
return this._timeoutAction != null;
}
///
/// Gets and sets the property TimeoutDurationMinutes.
///
/// The Spot provisioning timeout period in minutes. If Spot Instances are not provisioned
/// within this time period, the TimeOutAction
is taken. Minimum value is
/// 5 and maximum value is 1440. The timeout applies only during initial provisioning,
/// when the cluster is first created.
///
///
[AWSProperty(Required=true, Min=0)]
public int TimeoutDurationMinutes
{
get { return this._timeoutDurationMinutes.GetValueOrDefault(); }
set { this._timeoutDurationMinutes = value; }
}
// Check to see if TimeoutDurationMinutes property is set
internal bool IsSetTimeoutDurationMinutes()
{
return this._timeoutDurationMinutes.HasValue;
}
}
}