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

Specify the type of Amazon EC2 instances that the cluster (job flow) runs * on.

See Also:

AWS * API Reference

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

The Amazon EC2 master node instance type.

*/ inline const Aws::String& GetMasterInstanceType() const{ return m_masterInstanceType; } /** *

The Amazon EC2 master node instance type.

*/ inline bool MasterInstanceTypeHasBeenSet() const { return m_masterInstanceTypeHasBeenSet; } /** *

The Amazon EC2 master node instance type.

*/ inline void SetMasterInstanceType(const Aws::String& value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType = value; } /** *

The Amazon EC2 master node instance type.

*/ inline void SetMasterInstanceType(Aws::String&& value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType = std::move(value); } /** *

The Amazon EC2 master node instance type.

*/ inline void SetMasterInstanceType(const char* value) { m_masterInstanceTypeHasBeenSet = true; m_masterInstanceType.assign(value); } /** *

The Amazon EC2 master node instance type.

*/ inline JobFlowInstancesDetail& WithMasterInstanceType(const Aws::String& value) { SetMasterInstanceType(value); return *this;} /** *

The Amazon EC2 master node instance type.

*/ inline JobFlowInstancesDetail& WithMasterInstanceType(Aws::String&& value) { SetMasterInstanceType(std::move(value)); return *this;} /** *

The Amazon EC2 master node instance type.

*/ inline JobFlowInstancesDetail& WithMasterInstanceType(const char* value) { SetMasterInstanceType(value); return *this;} /** *

The DNS name of the master node. If the cluster is on a private subnet, this * is the private DNS name. On a public subnet, this is the public DNS name.

*/ inline const Aws::String& GetMasterPublicDnsName() const{ return m_masterPublicDnsName; } /** *

The DNS name of the master node. If the cluster is on a private subnet, this * is the private DNS name. On a public subnet, this is the public DNS name.

*/ inline bool MasterPublicDnsNameHasBeenSet() const { return m_masterPublicDnsNameHasBeenSet; } /** *

The DNS name of the master node. If the cluster is on a private subnet, this * is the private DNS name. On a public subnet, this is the public DNS name.

*/ inline void SetMasterPublicDnsName(const Aws::String& value) { m_masterPublicDnsNameHasBeenSet = true; m_masterPublicDnsName = value; } /** *

The DNS name of the master node. If the cluster is on a private subnet, this * is the private DNS name. On a public subnet, this is the public DNS name.

*/ inline void SetMasterPublicDnsName(Aws::String&& value) { m_masterPublicDnsNameHasBeenSet = true; m_masterPublicDnsName = std::move(value); } /** *

The DNS name of the master node. If the cluster is on a private subnet, this * is the private DNS name. On a public subnet, this is the public DNS name.

*/ inline void SetMasterPublicDnsName(const char* value) { m_masterPublicDnsNameHasBeenSet = true; m_masterPublicDnsName.assign(value); } /** *

The DNS name of the master node. If the cluster is on a private subnet, this * is the private DNS name. On a public subnet, this is the public DNS name.

*/ inline JobFlowInstancesDetail& WithMasterPublicDnsName(const Aws::String& value) { SetMasterPublicDnsName(value); return *this;} /** *

The DNS name of the master node. If the cluster is on a private subnet, this * is the private DNS name. On a public subnet, this is the public DNS name.

*/ inline JobFlowInstancesDetail& WithMasterPublicDnsName(Aws::String&& value) { SetMasterPublicDnsName(std::move(value)); return *this;} /** *

The DNS name of the master node. If the cluster is on a private subnet, this * is the private DNS name. On a public subnet, this is the public DNS name.

*/ inline JobFlowInstancesDetail& WithMasterPublicDnsName(const char* value) { SetMasterPublicDnsName(value); return *this;} /** *

The Amazon EC2 instance identifier of the master node.

*/ inline const Aws::String& GetMasterInstanceId() const{ return m_masterInstanceId; } /** *

The Amazon EC2 instance identifier of the master node.

*/ inline bool MasterInstanceIdHasBeenSet() const { return m_masterInstanceIdHasBeenSet; } /** *

The Amazon EC2 instance identifier of the master node.

*/ inline void SetMasterInstanceId(const Aws::String& value) { m_masterInstanceIdHasBeenSet = true; m_masterInstanceId = value; } /** *

The Amazon EC2 instance identifier of the master node.

*/ inline void SetMasterInstanceId(Aws::String&& value) { m_masterInstanceIdHasBeenSet = true; m_masterInstanceId = std::move(value); } /** *

The Amazon EC2 instance identifier of the master node.

*/ inline void SetMasterInstanceId(const char* value) { m_masterInstanceIdHasBeenSet = true; m_masterInstanceId.assign(value); } /** *

The Amazon EC2 instance identifier of the master node.

*/ inline JobFlowInstancesDetail& WithMasterInstanceId(const Aws::String& value) { SetMasterInstanceId(value); return *this;} /** *

The Amazon EC2 instance identifier of the master node.

*/ inline JobFlowInstancesDetail& WithMasterInstanceId(Aws::String&& value) { SetMasterInstanceId(std::move(value)); return *this;} /** *

The Amazon EC2 instance identifier of the master node.

*/ inline JobFlowInstancesDetail& WithMasterInstanceId(const char* value) { SetMasterInstanceId(value); return *this;} /** *

The Amazon EC2 core and task node instance type.

*/ inline const Aws::String& GetSlaveInstanceType() const{ return m_slaveInstanceType; } /** *

The Amazon EC2 core and task node instance type.

*/ inline bool SlaveInstanceTypeHasBeenSet() const { return m_slaveInstanceTypeHasBeenSet; } /** *

The Amazon EC2 core and task node instance type.

*/ inline void SetSlaveInstanceType(const Aws::String& value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType = value; } /** *

The Amazon EC2 core and task node instance type.

*/ inline void SetSlaveInstanceType(Aws::String&& value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType = std::move(value); } /** *

The Amazon EC2 core and task node instance type.

*/ inline void SetSlaveInstanceType(const char* value) { m_slaveInstanceTypeHasBeenSet = true; m_slaveInstanceType.assign(value); } /** *

The Amazon EC2 core and task node instance type.

*/ inline JobFlowInstancesDetail& WithSlaveInstanceType(const Aws::String& value) { SetSlaveInstanceType(value); return *this;} /** *

The Amazon EC2 core and task node instance type.

*/ inline JobFlowInstancesDetail& WithSlaveInstanceType(Aws::String&& value) { SetSlaveInstanceType(std::move(value)); return *this;} /** *

The Amazon EC2 core and task node instance type.

*/ inline JobFlowInstancesDetail& WithSlaveInstanceType(const char* value) { SetSlaveInstanceType(value); return *this;} /** *

The number of Amazon EC2 instances in the cluster. If the value is 1, the * same instance serves as both the master and core and task node. If the value is * greater than 1, one instance is the master node and all others are core and task * nodes.

*/ inline int GetInstanceCount() const{ return m_instanceCount; } /** *

The number of Amazon EC2 instances in the cluster. If the value is 1, the * same instance serves as both the master and core and task node. If the value is * greater than 1, one instance is the master node and all others are core and task * nodes.

*/ inline bool InstanceCountHasBeenSet() const { return m_instanceCountHasBeenSet; } /** *

The number of Amazon EC2 instances in the cluster. If the value is 1, the * same instance serves as both the master and core and task node. If the value is * greater than 1, one instance is the master node and all others are core and task * nodes.

*/ inline void SetInstanceCount(int value) { m_instanceCountHasBeenSet = true; m_instanceCount = value; } /** *

The number of Amazon EC2 instances in the cluster. If the value is 1, the * same instance serves as both the master and core and task node. If the value is * greater than 1, one instance is the master node and all others are core and task * nodes.

*/ inline JobFlowInstancesDetail& WithInstanceCount(int value) { SetInstanceCount(value); return *this;} /** *

Details about the instance groups in a cluster.

*/ inline const Aws::Vector& GetInstanceGroups() const{ return m_instanceGroups; } /** *

Details about the instance groups in a cluster.

*/ inline bool InstanceGroupsHasBeenSet() const { return m_instanceGroupsHasBeenSet; } /** *

Details about the instance groups in a cluster.

*/ inline void SetInstanceGroups(const Aws::Vector& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups = value; } /** *

Details about the instance groups in a cluster.

*/ inline void SetInstanceGroups(Aws::Vector&& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups = std::move(value); } /** *

Details about the instance groups in a cluster.

*/ inline JobFlowInstancesDetail& WithInstanceGroups(const Aws::Vector& value) { SetInstanceGroups(value); return *this;} /** *

Details about the instance groups in a cluster.

*/ inline JobFlowInstancesDetail& WithInstanceGroups(Aws::Vector&& value) { SetInstanceGroups(std::move(value)); return *this;} /** *

Details about the instance groups in a cluster.

*/ inline JobFlowInstancesDetail& AddInstanceGroups(const InstanceGroupDetail& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups.push_back(value); return *this; } /** *

Details about the instance groups in a cluster.

*/ inline JobFlowInstancesDetail& AddInstanceGroups(InstanceGroupDetail&& value) { m_instanceGroupsHasBeenSet = true; m_instanceGroups.push_back(std::move(value)); return *this; } /** *

An approximation of the cost of the cluster, represented in m1.small/hours. * This value is increased one time for every hour that an m1.small instance runs. * Larger instances are weighted more heavily, so an Amazon EC2 instance that is * roughly four times more expensive would result in the normalized instance hours * being increased incrementally four times. This result is only an approximation * and does not reflect the actual billing rate.

*/ inline int GetNormalizedInstanceHours() const{ return m_normalizedInstanceHours; } /** *

An approximation of the cost of the cluster, represented in m1.small/hours. * This value is increased one time for every hour that an m1.small instance runs. * Larger instances are weighted more heavily, so an Amazon EC2 instance that is * roughly four times more expensive would result in the normalized instance hours * being increased incrementally four times. This result is only an approximation * and does not reflect the actual billing rate.

*/ inline bool NormalizedInstanceHoursHasBeenSet() const { return m_normalizedInstanceHoursHasBeenSet; } /** *

An approximation of the cost of the cluster, represented in m1.small/hours. * This value is increased one time for every hour that an m1.small instance runs. * Larger instances are weighted more heavily, so an Amazon EC2 instance that is * roughly four times more expensive would result in the normalized instance hours * being increased incrementally four times. This result is only an approximation * and does not reflect the actual billing rate.

*/ inline void SetNormalizedInstanceHours(int value) { m_normalizedInstanceHoursHasBeenSet = true; m_normalizedInstanceHours = value; } /** *

An approximation of the cost of the cluster, represented in m1.small/hours. * This value is increased one time for every hour that an m1.small instance runs. * Larger instances are weighted more heavily, so an Amazon EC2 instance that is * roughly four times more expensive would result in the normalized instance hours * being increased incrementally four times. This result is only an approximation * and does not reflect the actual billing rate.

*/ inline JobFlowInstancesDetail& WithNormalizedInstanceHours(int value) { SetNormalizedInstanceHours(value); return *this;} /** *

The name of an Amazon EC2 key pair that can be used to connect to the master * node using SSH.

*/ inline const Aws::String& GetEc2KeyName() const{ return m_ec2KeyName; } /** *

The name of an Amazon EC2 key pair that can be used to connect to the master * node using SSH.

*/ inline bool Ec2KeyNameHasBeenSet() const { return m_ec2KeyNameHasBeenSet; } /** *

The name of an Amazon EC2 key pair that can be used to connect to the master * node using SSH.

*/ inline void SetEc2KeyName(const Aws::String& value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName = value; } /** *

The name of an Amazon EC2 key pair that can be used to connect to the master * node using SSH.

*/ inline void SetEc2KeyName(Aws::String&& value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName = std::move(value); } /** *

The name of an Amazon EC2 key pair that can be used to connect to the master * node using SSH.

*/ inline void SetEc2KeyName(const char* value) { m_ec2KeyNameHasBeenSet = true; m_ec2KeyName.assign(value); } /** *

The name of an Amazon EC2 key pair that can be used to connect to the master * node using SSH.

*/ inline JobFlowInstancesDetail& WithEc2KeyName(const Aws::String& value) { SetEc2KeyName(value); return *this;} /** *

The name of an Amazon EC2 key pair that can be used to connect to the master * node using SSH.

*/ inline JobFlowInstancesDetail& WithEc2KeyName(Aws::String&& value) { SetEc2KeyName(std::move(value)); return *this;} /** *

The name of an Amazon EC2 key pair that can be used to connect to the master * node using SSH.

*/ inline JobFlowInstancesDetail& WithEc2KeyName(const char* value) { SetEc2KeyName(value); return *this;} /** *

For clusters launched within Amazon Virtual Private Cloud, this is the * identifier of the subnet where the cluster was launched.

*/ inline const Aws::String& GetEc2SubnetId() const{ return m_ec2SubnetId; } /** *

For clusters launched within Amazon Virtual Private Cloud, this is the * identifier of the subnet where the cluster was launched.

*/ inline bool Ec2SubnetIdHasBeenSet() const { return m_ec2SubnetIdHasBeenSet; } /** *

For clusters launched within Amazon Virtual Private Cloud, this is the * identifier of the subnet where the cluster was launched.

*/ inline void SetEc2SubnetId(const Aws::String& value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId = value; } /** *

For clusters launched within Amazon Virtual Private Cloud, this is the * identifier of the subnet where the cluster was launched.

*/ inline void SetEc2SubnetId(Aws::String&& value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId = std::move(value); } /** *

For clusters launched within Amazon Virtual Private Cloud, this is the * identifier of the subnet where the cluster was launched.

*/ inline void SetEc2SubnetId(const char* value) { m_ec2SubnetIdHasBeenSet = true; m_ec2SubnetId.assign(value); } /** *

For clusters launched within Amazon Virtual Private Cloud, this is the * identifier of the subnet where the cluster was launched.

*/ inline JobFlowInstancesDetail& WithEc2SubnetId(const Aws::String& value) { SetEc2SubnetId(value); return *this;} /** *

For clusters launched within Amazon Virtual Private Cloud, this is the * identifier of the subnet where the cluster was launched.

*/ inline JobFlowInstancesDetail& WithEc2SubnetId(Aws::String&& value) { SetEc2SubnetId(std::move(value)); return *this;} /** *

For clusters launched within Amazon Virtual Private Cloud, this is the * identifier of the subnet where the cluster was launched.

*/ inline JobFlowInstancesDetail& WithEc2SubnetId(const char* value) { SetEc2SubnetId(value); return *this;} /** *

The Amazon EC2 Availability Zone for the cluster.

*/ inline const PlacementType& GetPlacement() const{ return m_placement; } /** *

The Amazon EC2 Availability Zone for the cluster.

*/ inline bool PlacementHasBeenSet() const { return m_placementHasBeenSet; } /** *

The Amazon EC2 Availability Zone for the cluster.

*/ inline void SetPlacement(const PlacementType& value) { m_placementHasBeenSet = true; m_placement = value; } /** *

The Amazon EC2 Availability Zone for the cluster.

*/ inline void SetPlacement(PlacementType&& value) { m_placementHasBeenSet = true; m_placement = std::move(value); } /** *

The Amazon EC2 Availability Zone for the cluster.

*/ inline JobFlowInstancesDetail& WithPlacement(const PlacementType& value) { SetPlacement(value); return *this;} /** *

The Amazon EC2 Availability Zone for the cluster.

*/ inline JobFlowInstancesDetail& WithPlacement(PlacementType&& value) { SetPlacement(std::move(value)); return *this;} /** *

Specifies whether the cluster should remain available after completing all * steps.

*/ inline bool GetKeepJobFlowAliveWhenNoSteps() const{ return m_keepJobFlowAliveWhenNoSteps; } /** *

Specifies whether the cluster should remain available after completing all * steps.

*/ inline bool KeepJobFlowAliveWhenNoStepsHasBeenSet() const { return m_keepJobFlowAliveWhenNoStepsHasBeenSet; } /** *

Specifies whether the cluster should remain available after completing all * steps.

*/ inline void SetKeepJobFlowAliveWhenNoSteps(bool value) { m_keepJobFlowAliveWhenNoStepsHasBeenSet = true; m_keepJobFlowAliveWhenNoSteps = value; } /** *

Specifies whether the cluster should remain available after completing all * steps.

*/ inline JobFlowInstancesDetail& WithKeepJobFlowAliveWhenNoSteps(bool value) { SetKeepJobFlowAliveWhenNoSteps(value); return *this;} /** *

Specifies whether the Amazon EC2 instances in the cluster are protected from * termination by API calls, user intervention, or in the event of a job-flow * error.

*/ inline bool GetTerminationProtected() const{ return m_terminationProtected; } /** *

Specifies whether the Amazon EC2 instances in the cluster are protected from * termination by API calls, user intervention, or in the event of a job-flow * error.

*/ inline bool TerminationProtectedHasBeenSet() const { return m_terminationProtectedHasBeenSet; } /** *

Specifies whether the Amazon EC2 instances in the cluster are protected from * termination by API calls, user intervention, or in the event of a job-flow * error.

*/ inline void SetTerminationProtected(bool value) { m_terminationProtectedHasBeenSet = true; m_terminationProtected = value; } /** *

Specifies whether the Amazon EC2 instances in the cluster are protected from * termination by API calls, user intervention, or in the event of a job-flow * error.

*/ inline JobFlowInstancesDetail& WithTerminationProtected(bool value) { SetTerminationProtected(value); return *this;} /** *

The Hadoop version for the cluster.

*/ inline const Aws::String& GetHadoopVersion() const{ return m_hadoopVersion; } /** *

The Hadoop version for the cluster.

*/ inline bool HadoopVersionHasBeenSet() const { return m_hadoopVersionHasBeenSet; } /** *

The Hadoop version for the cluster.

*/ inline void SetHadoopVersion(const Aws::String& value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion = value; } /** *

The Hadoop version for the cluster.

*/ inline void SetHadoopVersion(Aws::String&& value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion = std::move(value); } /** *

The Hadoop version for the cluster.

*/ inline void SetHadoopVersion(const char* value) { m_hadoopVersionHasBeenSet = true; m_hadoopVersion.assign(value); } /** *

The Hadoop version for the cluster.

*/ inline JobFlowInstancesDetail& WithHadoopVersion(const Aws::String& value) { SetHadoopVersion(value); return *this;} /** *

The Hadoop version for the cluster.

*/ inline JobFlowInstancesDetail& WithHadoopVersion(Aws::String&& value) { SetHadoopVersion(std::move(value)); return *this;} /** *

The Hadoop version for the cluster.

*/ inline JobFlowInstancesDetail& WithHadoopVersion(const char* value) { SetHadoopVersion(value); return *this;} private: Aws::String m_masterInstanceType; bool m_masterInstanceTypeHasBeenSet = false; Aws::String m_masterPublicDnsName; bool m_masterPublicDnsNameHasBeenSet = false; Aws::String m_masterInstanceId; bool m_masterInstanceIdHasBeenSet = false; Aws::String m_slaveInstanceType; bool m_slaveInstanceTypeHasBeenSet = false; int m_instanceCount; bool m_instanceCountHasBeenSet = false; Aws::Vector m_instanceGroups; bool m_instanceGroupsHasBeenSet = false; int m_normalizedInstanceHours; bool m_normalizedInstanceHoursHasBeenSet = false; Aws::String m_ec2KeyName; bool m_ec2KeyNameHasBeenSet = false; Aws::String m_ec2SubnetId; bool m_ec2SubnetIdHasBeenSet = false; PlacementType m_placement; bool m_placementHasBeenSet = false; bool m_keepJobFlowAliveWhenNoSteps; bool m_keepJobFlowAliveWhenNoStepsHasBeenSet = false; bool m_terminationProtected; bool m_terminationProtectedHasBeenSet = false; Aws::String m_hadoopVersion; bool m_hadoopVersionHasBeenSet = false; }; } // namespace Model } // namespace EMR } // namespace Aws