/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace EMR { namespace Model { /** *

The Amazon EC2 unit limits for a managed scaling policy. The managed scaling * activity of a cluster can not be above or below these limits. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

See Also:

AWS * API Reference

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

The unit type used for specifying a managed scaling policy.

*/ inline const ComputeLimitsUnitType& GetUnitType() const{ return m_unitType; } /** *

The unit type used for specifying a managed scaling policy.

*/ inline bool UnitTypeHasBeenSet() const { return m_unitTypeHasBeenSet; } /** *

The unit type used for specifying a managed scaling policy.

*/ inline void SetUnitType(const ComputeLimitsUnitType& value) { m_unitTypeHasBeenSet = true; m_unitType = value; } /** *

The unit type used for specifying a managed scaling policy.

*/ inline void SetUnitType(ComputeLimitsUnitType&& value) { m_unitTypeHasBeenSet = true; m_unitType = std::move(value); } /** *

The unit type used for specifying a managed scaling policy.

*/ inline ComputeLimits& WithUnitType(const ComputeLimitsUnitType& value) { SetUnitType(value); return *this;} /** *

The unit type used for specifying a managed scaling policy.

*/ inline ComputeLimits& WithUnitType(ComputeLimitsUnitType&& value) { SetUnitType(std::move(value)); return *this;} /** *

The lower boundary of Amazon EC2 units. It is measured through vCPU cores or * instances for instance groups and measured through units for instance fleets. * Managed scaling activities are not allowed beyond this boundary. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

*/ inline int GetMinimumCapacityUnits() const{ return m_minimumCapacityUnits; } /** *

The lower boundary of Amazon EC2 units. It is measured through vCPU cores or * instances for instance groups and measured through units for instance fleets. * Managed scaling activities are not allowed beyond this boundary. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

*/ inline bool MinimumCapacityUnitsHasBeenSet() const { return m_minimumCapacityUnitsHasBeenSet; } /** *

The lower boundary of Amazon EC2 units. It is measured through vCPU cores or * instances for instance groups and measured through units for instance fleets. * Managed scaling activities are not allowed beyond this boundary. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

*/ inline void SetMinimumCapacityUnits(int value) { m_minimumCapacityUnitsHasBeenSet = true; m_minimumCapacityUnits = value; } /** *

The lower boundary of Amazon EC2 units. It is measured through vCPU cores or * instances for instance groups and measured through units for instance fleets. * Managed scaling activities are not allowed beyond this boundary. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

*/ inline ComputeLimits& WithMinimumCapacityUnits(int value) { SetMinimumCapacityUnits(value); return *this;} /** *

The upper boundary of Amazon EC2 units. It is measured through vCPU cores or * instances for instance groups and measured through units for instance fleets. * Managed scaling activities are not allowed beyond this boundary. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

*/ inline int GetMaximumCapacityUnits() const{ return m_maximumCapacityUnits; } /** *

The upper boundary of Amazon EC2 units. It is measured through vCPU cores or * instances for instance groups and measured through units for instance fleets. * Managed scaling activities are not allowed beyond this boundary. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

*/ inline bool MaximumCapacityUnitsHasBeenSet() const { return m_maximumCapacityUnitsHasBeenSet; } /** *

The upper boundary of Amazon EC2 units. It is measured through vCPU cores or * instances for instance groups and measured through units for instance fleets. * Managed scaling activities are not allowed beyond this boundary. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

*/ inline void SetMaximumCapacityUnits(int value) { m_maximumCapacityUnitsHasBeenSet = true; m_maximumCapacityUnits = value; } /** *

The upper boundary of Amazon EC2 units. It is measured through vCPU cores or * instances for instance groups and measured through units for instance fleets. * Managed scaling activities are not allowed beyond this boundary. The limit only * applies to the core and task nodes. The master node cannot be scaled after * initial configuration.

*/ inline ComputeLimits& WithMaximumCapacityUnits(int value) { SetMaximumCapacityUnits(value); return *this;} /** *

The upper boundary of On-Demand Amazon EC2 units. It is measured through * vCPU cores or instances for instance groups and measured through units for * instance fleets. The On-Demand units are not allowed to scale beyond this * boundary. The parameter is used to split capacity allocation between On-Demand * and Spot Instances.

*/ inline int GetMaximumOnDemandCapacityUnits() const{ return m_maximumOnDemandCapacityUnits; } /** *

The upper boundary of On-Demand Amazon EC2 units. It is measured through * vCPU cores or instances for instance groups and measured through units for * instance fleets. The On-Demand units are not allowed to scale beyond this * boundary. The parameter is used to split capacity allocation between On-Demand * and Spot Instances.

*/ inline bool MaximumOnDemandCapacityUnitsHasBeenSet() const { return m_maximumOnDemandCapacityUnitsHasBeenSet; } /** *

The upper boundary of On-Demand Amazon EC2 units. It is measured through * vCPU cores or instances for instance groups and measured through units for * instance fleets. The On-Demand units are not allowed to scale beyond this * boundary. The parameter is used to split capacity allocation between On-Demand * and Spot Instances.

*/ inline void SetMaximumOnDemandCapacityUnits(int value) { m_maximumOnDemandCapacityUnitsHasBeenSet = true; m_maximumOnDemandCapacityUnits = value; } /** *

The upper boundary of On-Demand Amazon EC2 units. It is measured through * vCPU cores or instances for instance groups and measured through units for * instance fleets. The On-Demand units are not allowed to scale beyond this * boundary. The parameter is used to split capacity allocation between On-Demand * and Spot Instances.

*/ inline ComputeLimits& WithMaximumOnDemandCapacityUnits(int value) { SetMaximumOnDemandCapacityUnits(value); return *this;} /** *

The upper boundary of Amazon EC2 units for core node type in a cluster. It * is measured through vCPU cores or instances for instance groups and measured * through units for instance fleets. The core units are not allowed to scale * beyond this boundary. The parameter is used to split capacity allocation between * core and task nodes.

*/ inline int GetMaximumCoreCapacityUnits() const{ return m_maximumCoreCapacityUnits; } /** *

The upper boundary of Amazon EC2 units for core node type in a cluster. It * is measured through vCPU cores or instances for instance groups and measured * through units for instance fleets. The core units are not allowed to scale * beyond this boundary. The parameter is used to split capacity allocation between * core and task nodes.

*/ inline bool MaximumCoreCapacityUnitsHasBeenSet() const { return m_maximumCoreCapacityUnitsHasBeenSet; } /** *

The upper boundary of Amazon EC2 units for core node type in a cluster. It * is measured through vCPU cores or instances for instance groups and measured * through units for instance fleets. The core units are not allowed to scale * beyond this boundary. The parameter is used to split capacity allocation between * core and task nodes.

*/ inline void SetMaximumCoreCapacityUnits(int value) { m_maximumCoreCapacityUnitsHasBeenSet = true; m_maximumCoreCapacityUnits = value; } /** *

The upper boundary of Amazon EC2 units for core node type in a cluster. It * is measured through vCPU cores or instances for instance groups and measured * through units for instance fleets. The core units are not allowed to scale * beyond this boundary. The parameter is used to split capacity allocation between * core and task nodes.

*/ inline ComputeLimits& WithMaximumCoreCapacityUnits(int value) { SetMaximumCoreCapacityUnits(value); return *this;} private: ComputeLimitsUnitType m_unitType; bool m_unitTypeHasBeenSet = false; int m_minimumCapacityUnits; bool m_minimumCapacityUnitsHasBeenSet = false; int m_maximumCapacityUnits; bool m_maximumCapacityUnitsHasBeenSet = false; int m_maximumOnDemandCapacityUnits; bool m_maximumOnDemandCapacityUnitsHasBeenSet = false; int m_maximumCoreCapacityUnits; bool m_maximumCoreCapacityUnitsHasBeenSet = false; }; } // namespace Model } // namespace EMR } // namespace Aws