/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace EMR { namespace 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 versions 4.8.0 and later, excluding 5.0.x versions. Spot instance * allocation strategy is available in Amazon EMR version 5.12.1 and later.

*

See Also:

AWS * API Reference

*/ class AWS_EMR_API SpotProvisioningSpecification { public: SpotProvisioningSpecification(); SpotProvisioningSpecification(Aws::Utils::Json::JsonView jsonValue); SpotProvisioningSpecification& operator=(Aws::Utils::Json::JsonView jsonValue); Aws::Utils::Json::JsonValue Jsonize() const; /** *

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.

*/ inline int GetTimeoutDurationMinutes() const{ return m_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.

*/ inline bool TimeoutDurationMinutesHasBeenSet() const { return m_timeoutDurationMinutesHasBeenSet; } /** *

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.

*/ inline void SetTimeoutDurationMinutes(int value) { m_timeoutDurationMinutesHasBeenSet = true; m_timeoutDurationMinutes = value; } /** *

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.

*/ inline SpotProvisioningSpecification& WithTimeoutDurationMinutes(int value) { SetTimeoutDurationMinutes(value); return *this;} /** *

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.

*/ inline const SpotProvisioningTimeoutAction& GetTimeoutAction() const{ return m_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.

*/ inline bool TimeoutActionHasBeenSet() const { return m_timeoutActionHasBeenSet; } /** *

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.

*/ inline void SetTimeoutAction(const SpotProvisioningTimeoutAction& value) { m_timeoutActionHasBeenSet = true; m_timeoutAction = value; } /** *

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.

*/ inline void SetTimeoutAction(SpotProvisioningTimeoutAction&& value) { m_timeoutActionHasBeenSet = true; m_timeoutAction = std::move(value); } /** *

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.

*/ inline SpotProvisioningSpecification& WithTimeoutAction(const SpotProvisioningTimeoutAction& value) { SetTimeoutAction(value); return *this;} /** *

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.

*/ inline SpotProvisioningSpecification& WithTimeoutAction(SpotProvisioningTimeoutAction&& value) { SetTimeoutAction(std::move(value)); return *this;} /** *

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.

*/ inline int GetBlockDurationMinutes() const{ return m_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.

*/ inline bool BlockDurationMinutesHasBeenSet() const { return m_blockDurationMinutesHasBeenSet; } /** *

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.

*/ inline void SetBlockDurationMinutes(int value) { m_blockDurationMinutesHasBeenSet = true; m_blockDurationMinutes = value; } /** *

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.

*/ inline SpotProvisioningSpecification& WithBlockDurationMinutes(int value) { SetBlockDurationMinutes(value); return *this;} /** *

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.

*/ inline const SpotProvisioningAllocationStrategy& GetAllocationStrategy() const{ return m_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.

*/ inline bool AllocationStrategyHasBeenSet() const { return m_allocationStrategyHasBeenSet; } /** *

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.

*/ inline void SetAllocationStrategy(const SpotProvisioningAllocationStrategy& value) { m_allocationStrategyHasBeenSet = true; m_allocationStrategy = value; } /** *

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.

*/ inline void SetAllocationStrategy(SpotProvisioningAllocationStrategy&& value) { m_allocationStrategyHasBeenSet = true; m_allocationStrategy = std::move(value); } /** *

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.

*/ inline SpotProvisioningSpecification& WithAllocationStrategy(const SpotProvisioningAllocationStrategy& value) { SetAllocationStrategy(value); return *this;} /** *

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.

*/ inline SpotProvisioningSpecification& WithAllocationStrategy(SpotProvisioningAllocationStrategy&& value) { SetAllocationStrategy(std::move(value)); return *this;} private: int m_timeoutDurationMinutes; bool m_timeoutDurationMinutesHasBeenSet; SpotProvisioningTimeoutAction m_timeoutAction; bool m_timeoutActionHasBeenSet; int m_blockDurationMinutes; bool m_blockDurationMinutesHasBeenSet; SpotProvisioningAllocationStrategy m_allocationStrategy; bool m_allocationStrategyHasBeenSet; }; } // namespace Model } // namespace EMR } // namespace Aws