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

A description of a cluster (job flow).

See Also:

AWS * API Reference

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

The job flow identifier.

*/ inline const Aws::String& GetJobFlowId() const{ return m_jobFlowId; } /** *

The job flow identifier.

*/ inline bool JobFlowIdHasBeenSet() const { return m_jobFlowIdHasBeenSet; } /** *

The job flow identifier.

*/ inline void SetJobFlowId(const Aws::String& value) { m_jobFlowIdHasBeenSet = true; m_jobFlowId = value; } /** *

The job flow identifier.

*/ inline void SetJobFlowId(Aws::String&& value) { m_jobFlowIdHasBeenSet = true; m_jobFlowId = std::move(value); } /** *

The job flow identifier.

*/ inline void SetJobFlowId(const char* value) { m_jobFlowIdHasBeenSet = true; m_jobFlowId.assign(value); } /** *

The job flow identifier.

*/ inline JobFlowDetail& WithJobFlowId(const Aws::String& value) { SetJobFlowId(value); return *this;} /** *

The job flow identifier.

*/ inline JobFlowDetail& WithJobFlowId(Aws::String&& value) { SetJobFlowId(std::move(value)); return *this;} /** *

The job flow identifier.

*/ inline JobFlowDetail& WithJobFlowId(const char* value) { SetJobFlowId(value); return *this;} /** *

The name of the job flow.

*/ inline const Aws::String& GetName() const{ return m_name; } /** *

The name of the job flow.

*/ inline bool NameHasBeenSet() const { return m_nameHasBeenSet; } /** *

The name of the job flow.

*/ inline void SetName(const Aws::String& value) { m_nameHasBeenSet = true; m_name = value; } /** *

The name of the job flow.

*/ inline void SetName(Aws::String&& value) { m_nameHasBeenSet = true; m_name = std::move(value); } /** *

The name of the job flow.

*/ inline void SetName(const char* value) { m_nameHasBeenSet = true; m_name.assign(value); } /** *

The name of the job flow.

*/ inline JobFlowDetail& WithName(const Aws::String& value) { SetName(value); return *this;} /** *

The name of the job flow.

*/ inline JobFlowDetail& WithName(Aws::String&& value) { SetName(std::move(value)); return *this;} /** *

The name of the job flow.

*/ inline JobFlowDetail& WithName(const char* value) { SetName(value); return *this;} /** *

The location in Amazon S3 where log files for the job are stored.

*/ inline const Aws::String& GetLogUri() const{ return m_logUri; } /** *

The location in Amazon S3 where log files for the job are stored.

*/ inline bool LogUriHasBeenSet() const { return m_logUriHasBeenSet; } /** *

The location in Amazon S3 where log files for the job are stored.

*/ inline void SetLogUri(const Aws::String& value) { m_logUriHasBeenSet = true; m_logUri = value; } /** *

The location in Amazon S3 where log files for the job are stored.

*/ inline void SetLogUri(Aws::String&& value) { m_logUriHasBeenSet = true; m_logUri = std::move(value); } /** *

The location in Amazon S3 where log files for the job are stored.

*/ inline void SetLogUri(const char* value) { m_logUriHasBeenSet = true; m_logUri.assign(value); } /** *

The location in Amazon S3 where log files for the job are stored.

*/ inline JobFlowDetail& WithLogUri(const Aws::String& value) { SetLogUri(value); return *this;} /** *

The location in Amazon S3 where log files for the job are stored.

*/ inline JobFlowDetail& WithLogUri(Aws::String&& value) { SetLogUri(std::move(value)); return *this;} /** *

The location in Amazon S3 where log files for the job are stored.

*/ inline JobFlowDetail& WithLogUri(const char* value) { SetLogUri(value); return *this;} /** *

The KMS key used for encrypting log files. This attribute is only available * with Amazon EMR 5.30.0 and later, excluding 6.0.0.

*/ inline const Aws::String& GetLogEncryptionKmsKeyId() const{ return m_logEncryptionKmsKeyId; } /** *

The KMS key used for encrypting log files. This attribute is only available * with Amazon EMR 5.30.0 and later, excluding 6.0.0.

*/ inline bool LogEncryptionKmsKeyIdHasBeenSet() const { return m_logEncryptionKmsKeyIdHasBeenSet; } /** *

The KMS key used for encrypting log files. This attribute is only available * with Amazon EMR 5.30.0 and later, excluding 6.0.0.

*/ inline void SetLogEncryptionKmsKeyId(const Aws::String& value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId = value; } /** *

The KMS key used for encrypting log files. This attribute is only available * with Amazon EMR 5.30.0 and later, excluding 6.0.0.

*/ inline void SetLogEncryptionKmsKeyId(Aws::String&& value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId = std::move(value); } /** *

The KMS key used for encrypting log files. This attribute is only available * with Amazon EMR 5.30.0 and later, excluding 6.0.0.

*/ inline void SetLogEncryptionKmsKeyId(const char* value) { m_logEncryptionKmsKeyIdHasBeenSet = true; m_logEncryptionKmsKeyId.assign(value); } /** *

The KMS key used for encrypting log files. This attribute is only available * with Amazon EMR 5.30.0 and later, excluding 6.0.0.

*/ inline JobFlowDetail& WithLogEncryptionKmsKeyId(const Aws::String& value) { SetLogEncryptionKmsKeyId(value); return *this;} /** *

The KMS key used for encrypting log files. This attribute is only available * with Amazon EMR 5.30.0 and later, excluding 6.0.0.

*/ inline JobFlowDetail& WithLogEncryptionKmsKeyId(Aws::String&& value) { SetLogEncryptionKmsKeyId(std::move(value)); return *this;} /** *

The KMS key used for encrypting log files. This attribute is only available * with Amazon EMR 5.30.0 and later, excluding 6.0.0.

*/ inline JobFlowDetail& WithLogEncryptionKmsKeyId(const char* value) { SetLogEncryptionKmsKeyId(value); return *this;} /** *

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases * 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use * CustomAmiID.

*/ inline const Aws::String& GetAmiVersion() const{ return m_amiVersion; } /** *

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases * 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use * CustomAmiID.

*/ inline bool AmiVersionHasBeenSet() const { return m_amiVersionHasBeenSet; } /** *

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases * 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use * CustomAmiID.

*/ inline void SetAmiVersion(const Aws::String& value) { m_amiVersionHasBeenSet = true; m_amiVersion = value; } /** *

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases * 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use * CustomAmiID.

*/ inline void SetAmiVersion(Aws::String&& value) { m_amiVersionHasBeenSet = true; m_amiVersion = std::move(value); } /** *

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases * 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use * CustomAmiID.

*/ inline void SetAmiVersion(const char* value) { m_amiVersionHasBeenSet = true; m_amiVersion.assign(value); } /** *

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases * 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use * CustomAmiID.

*/ inline JobFlowDetail& WithAmiVersion(const Aws::String& value) { SetAmiVersion(value); return *this;} /** *

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases * 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use * CustomAmiID.

*/ inline JobFlowDetail& WithAmiVersion(Aws::String&& value) { SetAmiVersion(std::move(value)); return *this;} /** *

Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases * 4.0 and later, ReleaseLabel is used. To specify a custom AMI, use * CustomAmiID.

*/ inline JobFlowDetail& WithAmiVersion(const char* value) { SetAmiVersion(value); return *this;} /** *

Describes the execution status of the job flow.

*/ inline const JobFlowExecutionStatusDetail& GetExecutionStatusDetail() const{ return m_executionStatusDetail; } /** *

Describes the execution status of the job flow.

*/ inline bool ExecutionStatusDetailHasBeenSet() const { return m_executionStatusDetailHasBeenSet; } /** *

Describes the execution status of the job flow.

*/ inline void SetExecutionStatusDetail(const JobFlowExecutionStatusDetail& value) { m_executionStatusDetailHasBeenSet = true; m_executionStatusDetail = value; } /** *

Describes the execution status of the job flow.

*/ inline void SetExecutionStatusDetail(JobFlowExecutionStatusDetail&& value) { m_executionStatusDetailHasBeenSet = true; m_executionStatusDetail = std::move(value); } /** *

Describes the execution status of the job flow.

*/ inline JobFlowDetail& WithExecutionStatusDetail(const JobFlowExecutionStatusDetail& value) { SetExecutionStatusDetail(value); return *this;} /** *

Describes the execution status of the job flow.

*/ inline JobFlowDetail& WithExecutionStatusDetail(JobFlowExecutionStatusDetail&& value) { SetExecutionStatusDetail(std::move(value)); return *this;} /** *

Describes the Amazon EC2 instances of the job flow.

*/ inline const JobFlowInstancesDetail& GetInstances() const{ return m_instances; } /** *

Describes the Amazon EC2 instances of the job flow.

*/ inline bool InstancesHasBeenSet() const { return m_instancesHasBeenSet; } /** *

Describes the Amazon EC2 instances of the job flow.

*/ inline void SetInstances(const JobFlowInstancesDetail& value) { m_instancesHasBeenSet = true; m_instances = value; } /** *

Describes the Amazon EC2 instances of the job flow.

*/ inline void SetInstances(JobFlowInstancesDetail&& value) { m_instancesHasBeenSet = true; m_instances = std::move(value); } /** *

Describes the Amazon EC2 instances of the job flow.

*/ inline JobFlowDetail& WithInstances(const JobFlowInstancesDetail& value) { SetInstances(value); return *this;} /** *

Describes the Amazon EC2 instances of the job flow.

*/ inline JobFlowDetail& WithInstances(JobFlowInstancesDetail&& value) { SetInstances(std::move(value)); return *this;} /** *

A list of steps run by the job flow.

*/ inline const Aws::Vector& GetSteps() const{ return m_steps; } /** *

A list of steps run by the job flow.

*/ inline bool StepsHasBeenSet() const { return m_stepsHasBeenSet; } /** *

A list of steps run by the job flow.

*/ inline void SetSteps(const Aws::Vector& value) { m_stepsHasBeenSet = true; m_steps = value; } /** *

A list of steps run by the job flow.

*/ inline void SetSteps(Aws::Vector&& value) { m_stepsHasBeenSet = true; m_steps = std::move(value); } /** *

A list of steps run by the job flow.

*/ inline JobFlowDetail& WithSteps(const Aws::Vector& value) { SetSteps(value); return *this;} /** *

A list of steps run by the job flow.

*/ inline JobFlowDetail& WithSteps(Aws::Vector&& value) { SetSteps(std::move(value)); return *this;} /** *

A list of steps run by the job flow.

*/ inline JobFlowDetail& AddSteps(const StepDetail& value) { m_stepsHasBeenSet = true; m_steps.push_back(value); return *this; } /** *

A list of steps run by the job flow.

*/ inline JobFlowDetail& AddSteps(StepDetail&& value) { m_stepsHasBeenSet = true; m_steps.push_back(std::move(value)); return *this; } /** *

A list of the bootstrap actions run by the job flow.

*/ inline const Aws::Vector& GetBootstrapActions() const{ return m_bootstrapActions; } /** *

A list of the bootstrap actions run by the job flow.

*/ inline bool BootstrapActionsHasBeenSet() const { return m_bootstrapActionsHasBeenSet; } /** *

A list of the bootstrap actions run by the job flow.

*/ inline void SetBootstrapActions(const Aws::Vector& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions = value; } /** *

A list of the bootstrap actions run by the job flow.

*/ inline void SetBootstrapActions(Aws::Vector&& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions = std::move(value); } /** *

A list of the bootstrap actions run by the job flow.

*/ inline JobFlowDetail& WithBootstrapActions(const Aws::Vector& value) { SetBootstrapActions(value); return *this;} /** *

A list of the bootstrap actions run by the job flow.

*/ inline JobFlowDetail& WithBootstrapActions(Aws::Vector&& value) { SetBootstrapActions(std::move(value)); return *this;} /** *

A list of the bootstrap actions run by the job flow.

*/ inline JobFlowDetail& AddBootstrapActions(const BootstrapActionDetail& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions.push_back(value); return *this; } /** *

A list of the bootstrap actions run by the job flow.

*/ inline JobFlowDetail& AddBootstrapActions(BootstrapActionDetail&& value) { m_bootstrapActionsHasBeenSet = true; m_bootstrapActions.push_back(std::move(value)); return *this; } /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline const Aws::Vector& GetSupportedProducts() const{ return m_supportedProducts; } /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline bool SupportedProductsHasBeenSet() const { return m_supportedProductsHasBeenSet; } /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline void SetSupportedProducts(const Aws::Vector& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts = value; } /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline void SetSupportedProducts(Aws::Vector&& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts = std::move(value); } /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline JobFlowDetail& WithSupportedProducts(const Aws::Vector& value) { SetSupportedProducts(value); return *this;} /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline JobFlowDetail& WithSupportedProducts(Aws::Vector&& value) { SetSupportedProducts(std::move(value)); return *this;} /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline JobFlowDetail& AddSupportedProducts(const Aws::String& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(value); return *this; } /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline JobFlowDetail& AddSupportedProducts(Aws::String&& value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(std::move(value)); return *this; } /** *

A list of strings set by third-party software when the job flow is launched. * If you are not using third-party software to manage the job flow, this value is * empty.

*/ inline JobFlowDetail& AddSupportedProducts(const char* value) { m_supportedProductsHasBeenSet = true; m_supportedProducts.push_back(value); return *this; } /** *

Indicates whether the cluster is visible to IAM principals in the Amazon Web * Services account associated with the cluster. When true, IAM * principals in the Amazon Web Services account can perform Amazon EMR cluster * actions that their IAM policies allow. When false, only the IAM * principal that created the cluster and the Amazon Web Services account root user * can perform Amazon EMR actions, regardless of IAM permissions policies attached * to other IAM principals.

The default value is true if a * value is not provided when creating a cluster using the Amazon EMR API * RunJobFlow command, the CLI create-cluster * command, or the Amazon Web Services Management Console.

*/ inline bool GetVisibleToAllUsers() const{ return m_visibleToAllUsers; } /** *

Indicates whether the cluster is visible to IAM principals in the Amazon Web * Services account associated with the cluster. When true, IAM * principals in the Amazon Web Services account can perform Amazon EMR cluster * actions that their IAM policies allow. When false, only the IAM * principal that created the cluster and the Amazon Web Services account root user * can perform Amazon EMR actions, regardless of IAM permissions policies attached * to other IAM principals.

The default value is true if a * value is not provided when creating a cluster using the Amazon EMR API * RunJobFlow command, the CLI create-cluster * command, or the Amazon Web Services Management Console.

*/ inline bool VisibleToAllUsersHasBeenSet() const { return m_visibleToAllUsersHasBeenSet; } /** *

Indicates whether the cluster is visible to IAM principals in the Amazon Web * Services account associated with the cluster. When true, IAM * principals in the Amazon Web Services account can perform Amazon EMR cluster * actions that their IAM policies allow. When false, only the IAM * principal that created the cluster and the Amazon Web Services account root user * can perform Amazon EMR actions, regardless of IAM permissions policies attached * to other IAM principals.

The default value is true if a * value is not provided when creating a cluster using the Amazon EMR API * RunJobFlow command, the CLI create-cluster * command, or the Amazon Web Services Management Console.

*/ inline void SetVisibleToAllUsers(bool value) { m_visibleToAllUsersHasBeenSet = true; m_visibleToAllUsers = value; } /** *

Indicates whether the cluster is visible to IAM principals in the Amazon Web * Services account associated with the cluster. When true, IAM * principals in the Amazon Web Services account can perform Amazon EMR cluster * actions that their IAM policies allow. When false, only the IAM * principal that created the cluster and the Amazon Web Services account root user * can perform Amazon EMR actions, regardless of IAM permissions policies attached * to other IAM principals.

The default value is true if a * value is not provided when creating a cluster using the Amazon EMR API * RunJobFlow command, the CLI create-cluster * command, or the Amazon Web Services Management Console.

*/ inline JobFlowDetail& WithVisibleToAllUsers(bool value) { SetVisibleToAllUsers(value); return *this;} /** *

The IAM role that was specified when the job flow was launched. The Amazon * EC2 instances of the job flow assume this role.

*/ inline const Aws::String& GetJobFlowRole() const{ return m_jobFlowRole; } /** *

The IAM role that was specified when the job flow was launched. The Amazon * EC2 instances of the job flow assume this role.

*/ inline bool JobFlowRoleHasBeenSet() const { return m_jobFlowRoleHasBeenSet; } /** *

The IAM role that was specified when the job flow was launched. The Amazon * EC2 instances of the job flow assume this role.

*/ inline void SetJobFlowRole(const Aws::String& value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole = value; } /** *

The IAM role that was specified when the job flow was launched. The Amazon * EC2 instances of the job flow assume this role.

*/ inline void SetJobFlowRole(Aws::String&& value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole = std::move(value); } /** *

The IAM role that was specified when the job flow was launched. The Amazon * EC2 instances of the job flow assume this role.

*/ inline void SetJobFlowRole(const char* value) { m_jobFlowRoleHasBeenSet = true; m_jobFlowRole.assign(value); } /** *

The IAM role that was specified when the job flow was launched. The Amazon * EC2 instances of the job flow assume this role.

*/ inline JobFlowDetail& WithJobFlowRole(const Aws::String& value) { SetJobFlowRole(value); return *this;} /** *

The IAM role that was specified when the job flow was launched. The Amazon * EC2 instances of the job flow assume this role.

*/ inline JobFlowDetail& WithJobFlowRole(Aws::String&& value) { SetJobFlowRole(std::move(value)); return *this;} /** *

The IAM role that was specified when the job flow was launched. The Amazon * EC2 instances of the job flow assume this role.

*/ inline JobFlowDetail& WithJobFlowRole(const char* value) { SetJobFlowRole(value); return *this;} /** *

The IAM role that is assumed by the Amazon EMR service to access Amazon Web * Services resources on your behalf.

*/ inline const Aws::String& GetServiceRole() const{ return m_serviceRole; } /** *

The IAM role that is assumed by the Amazon EMR service to access Amazon Web * Services resources on your behalf.

*/ inline bool ServiceRoleHasBeenSet() const { return m_serviceRoleHasBeenSet; } /** *

The IAM role that is assumed by the Amazon EMR service to access Amazon Web * Services resources on your behalf.

*/ inline void SetServiceRole(const Aws::String& value) { m_serviceRoleHasBeenSet = true; m_serviceRole = value; } /** *

The IAM role that is assumed by the Amazon EMR service to access Amazon Web * Services resources on your behalf.

*/ inline void SetServiceRole(Aws::String&& value) { m_serviceRoleHasBeenSet = true; m_serviceRole = std::move(value); } /** *

The IAM role that is assumed by the Amazon EMR service to access Amazon Web * Services resources on your behalf.

*/ inline void SetServiceRole(const char* value) { m_serviceRoleHasBeenSet = true; m_serviceRole.assign(value); } /** *

The IAM role that is assumed by the Amazon EMR service to access Amazon Web * Services resources on your behalf.

*/ inline JobFlowDetail& WithServiceRole(const Aws::String& value) { SetServiceRole(value); return *this;} /** *

The IAM role that is assumed by the Amazon EMR service to access Amazon Web * Services resources on your behalf.

*/ inline JobFlowDetail& WithServiceRole(Aws::String&& value) { SetServiceRole(std::move(value)); return *this;} /** *

The IAM role that is assumed by the Amazon EMR service to access Amazon Web * Services resources on your behalf.

*/ inline JobFlowDetail& WithServiceRole(const char* value) { SetServiceRole(value); return *this;} /** *

An IAM role for automatic scaling policies. The default role is * EMR_AutoScaling_DefaultRole. The IAM role provides a way for the * automatic scaling feature to get the required permissions it needs to launch and * terminate Amazon EC2 instances in an instance group.

*/ inline const Aws::String& GetAutoScalingRole() const{ return m_autoScalingRole; } /** *

An IAM role for automatic scaling policies. The default role is * EMR_AutoScaling_DefaultRole. The IAM role provides a way for the * automatic scaling feature to get the required permissions it needs to launch and * terminate Amazon EC2 instances in an instance group.

*/ inline bool AutoScalingRoleHasBeenSet() const { return m_autoScalingRoleHasBeenSet; } /** *

An IAM role for automatic scaling policies. The default role is * EMR_AutoScaling_DefaultRole. The IAM role provides a way for the * automatic scaling feature to get the required permissions it needs to launch and * terminate Amazon EC2 instances in an instance group.

*/ inline void SetAutoScalingRole(const Aws::String& value) { m_autoScalingRoleHasBeenSet = true; m_autoScalingRole = value; } /** *

An IAM role for automatic scaling policies. The default role is * EMR_AutoScaling_DefaultRole. The IAM role provides a way for the * automatic scaling feature to get the required permissions it needs to launch and * terminate Amazon EC2 instances in an instance group.

*/ inline void SetAutoScalingRole(Aws::String&& value) { m_autoScalingRoleHasBeenSet = true; m_autoScalingRole = std::move(value); } /** *

An IAM role for automatic scaling policies. The default role is * EMR_AutoScaling_DefaultRole. The IAM role provides a way for the * automatic scaling feature to get the required permissions it needs to launch and * terminate Amazon EC2 instances in an instance group.

*/ inline void SetAutoScalingRole(const char* value) { m_autoScalingRoleHasBeenSet = true; m_autoScalingRole.assign(value); } /** *

An IAM role for automatic scaling policies. The default role is * EMR_AutoScaling_DefaultRole. The IAM role provides a way for the * automatic scaling feature to get the required permissions it needs to launch and * terminate Amazon EC2 instances in an instance group.

*/ inline JobFlowDetail& WithAutoScalingRole(const Aws::String& value) { SetAutoScalingRole(value); return *this;} /** *

An IAM role for automatic scaling policies. The default role is * EMR_AutoScaling_DefaultRole. The IAM role provides a way for the * automatic scaling feature to get the required permissions it needs to launch and * terminate Amazon EC2 instances in an instance group.

*/ inline JobFlowDetail& WithAutoScalingRole(Aws::String&& value) { SetAutoScalingRole(std::move(value)); return *this;} /** *

An IAM role for automatic scaling policies. The default role is * EMR_AutoScaling_DefaultRole. The IAM role provides a way for the * automatic scaling feature to get the required permissions it needs to launch and * terminate Amazon EC2 instances in an instance group.

*/ inline JobFlowDetail& WithAutoScalingRole(const char* value) { SetAutoScalingRole(value); return *this;} /** *

The way that individual Amazon EC2 instances terminate when an automatic * scale-in activity occurs or an instance group is resized. * TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates * nodes at the instance-hour boundary, regardless of when the request to terminate * the instance was submitted. This option is only available with Amazon EMR 5.1.0 * and later and is the default for clusters created using that version. * TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes * to a deny list and drains tasks from nodes before terminating the Amazon EC2 * instances, regardless of the instance-hour boundary. With either behavior, * Amazon EMR removes the least active nodes first and blocks instance termination * if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION * available only in Amazon EMR releases 4.1.0 and later, and is the default for * releases of Amazon EMR earlier than 5.1.0.

*/ inline const ScaleDownBehavior& GetScaleDownBehavior() const{ return m_scaleDownBehavior; } /** *

The way that individual Amazon EC2 instances terminate when an automatic * scale-in activity occurs or an instance group is resized. * TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates * nodes at the instance-hour boundary, regardless of when the request to terminate * the instance was submitted. This option is only available with Amazon EMR 5.1.0 * and later and is the default for clusters created using that version. * TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes * to a deny list and drains tasks from nodes before terminating the Amazon EC2 * instances, regardless of the instance-hour boundary. With either behavior, * Amazon EMR removes the least active nodes first and blocks instance termination * if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION * available only in Amazon EMR releases 4.1.0 and later, and is the default for * releases of Amazon EMR earlier than 5.1.0.

*/ inline bool ScaleDownBehaviorHasBeenSet() const { return m_scaleDownBehaviorHasBeenSet; } /** *

The way that individual Amazon EC2 instances terminate when an automatic * scale-in activity occurs or an instance group is resized. * TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates * nodes at the instance-hour boundary, regardless of when the request to terminate * the instance was submitted. This option is only available with Amazon EMR 5.1.0 * and later and is the default for clusters created using that version. * TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes * to a deny list and drains tasks from nodes before terminating the Amazon EC2 * instances, regardless of the instance-hour boundary. With either behavior, * Amazon EMR removes the least active nodes first and blocks instance termination * if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION * available only in Amazon EMR releases 4.1.0 and later, and is the default for * releases of Amazon EMR earlier than 5.1.0.

*/ inline void SetScaleDownBehavior(const ScaleDownBehavior& value) { m_scaleDownBehaviorHasBeenSet = true; m_scaleDownBehavior = value; } /** *

The way that individual Amazon EC2 instances terminate when an automatic * scale-in activity occurs or an instance group is resized. * TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates * nodes at the instance-hour boundary, regardless of when the request to terminate * the instance was submitted. This option is only available with Amazon EMR 5.1.0 * and later and is the default for clusters created using that version. * TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes * to a deny list and drains tasks from nodes before terminating the Amazon EC2 * instances, regardless of the instance-hour boundary. With either behavior, * Amazon EMR removes the least active nodes first and blocks instance termination * if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION * available only in Amazon EMR releases 4.1.0 and later, and is the default for * releases of Amazon EMR earlier than 5.1.0.

*/ inline void SetScaleDownBehavior(ScaleDownBehavior&& value) { m_scaleDownBehaviorHasBeenSet = true; m_scaleDownBehavior = std::move(value); } /** *

The way that individual Amazon EC2 instances terminate when an automatic * scale-in activity occurs or an instance group is resized. * TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates * nodes at the instance-hour boundary, regardless of when the request to terminate * the instance was submitted. This option is only available with Amazon EMR 5.1.0 * and later and is the default for clusters created using that version. * TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes * to a deny list and drains tasks from nodes before terminating the Amazon EC2 * instances, regardless of the instance-hour boundary. With either behavior, * Amazon EMR removes the least active nodes first and blocks instance termination * if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION * available only in Amazon EMR releases 4.1.0 and later, and is the default for * releases of Amazon EMR earlier than 5.1.0.

*/ inline JobFlowDetail& WithScaleDownBehavior(const ScaleDownBehavior& value) { SetScaleDownBehavior(value); return *this;} /** *

The way that individual Amazon EC2 instances terminate when an automatic * scale-in activity occurs or an instance group is resized. * TERMINATE_AT_INSTANCE_HOUR indicates that Amazon EMR terminates * nodes at the instance-hour boundary, regardless of when the request to terminate * the instance was submitted. This option is only available with Amazon EMR 5.1.0 * and later and is the default for clusters created using that version. * TERMINATE_AT_TASK_COMPLETION indicates that Amazon EMR adds nodes * to a deny list and drains tasks from nodes before terminating the Amazon EC2 * instances, regardless of the instance-hour boundary. With either behavior, * Amazon EMR removes the least active nodes first and blocks instance termination * if it could lead to HDFS corruption. TERMINATE_AT_TASK_COMPLETION * available only in Amazon EMR releases 4.1.0 and later, and is the default for * releases of Amazon EMR earlier than 5.1.0.

*/ inline JobFlowDetail& WithScaleDownBehavior(ScaleDownBehavior&& value) { SetScaleDownBehavior(std::move(value)); return *this;} private: Aws::String m_jobFlowId; bool m_jobFlowIdHasBeenSet = false; Aws::String m_name; bool m_nameHasBeenSet = false; Aws::String m_logUri; bool m_logUriHasBeenSet = false; Aws::String m_logEncryptionKmsKeyId; bool m_logEncryptionKmsKeyIdHasBeenSet = false; Aws::String m_amiVersion; bool m_amiVersionHasBeenSet = false; JobFlowExecutionStatusDetail m_executionStatusDetail; bool m_executionStatusDetailHasBeenSet = false; JobFlowInstancesDetail m_instances; bool m_instancesHasBeenSet = false; Aws::Vector m_steps; bool m_stepsHasBeenSet = false; Aws::Vector m_bootstrapActions; bool m_bootstrapActionsHasBeenSet = false; Aws::Vector m_supportedProducts; bool m_supportedProductsHasBeenSet = false; bool m_visibleToAllUsers; bool m_visibleToAllUsersHasBeenSet = false; Aws::String m_jobFlowRole; bool m_jobFlowRoleHasBeenSet = false; Aws::String m_serviceRole; bool m_serviceRoleHasBeenSet = false; Aws::String m_autoScalingRole; bool m_autoScalingRoleHasBeenSet = false; ScaleDownBehavior m_scaleDownBehavior; bool m_scaleDownBehaviorHasBeenSet = false; }; } // namespace Model } // namespace EMR } // namespace Aws