/** * 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 { /** *

This represents a step in a cluster.

See Also:

AWS * API Reference

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

The identifier of the cluster step.

*/ inline const Aws::String& GetId() const{ return m_id; } /** *

The identifier of the cluster step.

*/ inline bool IdHasBeenSet() const { return m_idHasBeenSet; } /** *

The identifier of the cluster step.

*/ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; } /** *

The identifier of the cluster step.

*/ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); } /** *

The identifier of the cluster step.

*/ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); } /** *

The identifier of the cluster step.

*/ inline Step& WithId(const Aws::String& value) { SetId(value); return *this;} /** *

The identifier of the cluster step.

*/ inline Step& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;} /** *

The identifier of the cluster step.

*/ inline Step& WithId(const char* value) { SetId(value); return *this;} /** *

The name of the cluster step.

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

The name of the cluster step.

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

The name of the cluster step.

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

The name of the cluster step.

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

The name of the cluster step.

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

The name of the cluster step.

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

The name of the cluster step.

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

The name of the cluster step.

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

The Hadoop job configuration of the cluster step.

*/ inline const HadoopStepConfig& GetConfig() const{ return m_config; } /** *

The Hadoop job configuration of the cluster step.

*/ inline bool ConfigHasBeenSet() const { return m_configHasBeenSet; } /** *

The Hadoop job configuration of the cluster step.

*/ inline void SetConfig(const HadoopStepConfig& value) { m_configHasBeenSet = true; m_config = value; } /** *

The Hadoop job configuration of the cluster step.

*/ inline void SetConfig(HadoopStepConfig&& value) { m_configHasBeenSet = true; m_config = std::move(value); } /** *

The Hadoop job configuration of the cluster step.

*/ inline Step& WithConfig(const HadoopStepConfig& value) { SetConfig(value); return *this;} /** *

The Hadoop job configuration of the cluster step.

*/ inline Step& WithConfig(HadoopStepConfig&& value) { SetConfig(std::move(value)); return *this;} /** *

The action to take when the cluster step fails. Possible values are * TERMINATE_CLUSTER, CANCEL_AND_WAIT, and * CONTINUE. TERMINATE_JOB_FLOW is provided for backward * compatibility. We recommend using TERMINATE_CLUSTER instead.

*

If a cluster's StepConcurrencyLevel is greater than * 1, do not use AddJobFlowSteps to submit a step with * this parameter set to CANCEL_AND_WAIT or * TERMINATE_CLUSTER. The step is not submitted and the action fails * with a message that the ActionOnFailure setting is not valid.

*

If you change a cluster's StepConcurrencyLevel to be greater * than 1 while a step is running, the ActionOnFailure parameter may * not behave as you expect. In this case, for a step that fails with this * parameter set to CANCEL_AND_WAIT, pending steps and the running * step are not canceled; for a step that fails with this parameter set to * TERMINATE_CLUSTER, the cluster does not terminate.

*/ inline const ActionOnFailure& GetActionOnFailure() const{ return m_actionOnFailure; } /** *

The action to take when the cluster step fails. Possible values are * TERMINATE_CLUSTER, CANCEL_AND_WAIT, and * CONTINUE. TERMINATE_JOB_FLOW is provided for backward * compatibility. We recommend using TERMINATE_CLUSTER instead.

*

If a cluster's StepConcurrencyLevel is greater than * 1, do not use AddJobFlowSteps to submit a step with * this parameter set to CANCEL_AND_WAIT or * TERMINATE_CLUSTER. The step is not submitted and the action fails * with a message that the ActionOnFailure setting is not valid.

*

If you change a cluster's StepConcurrencyLevel to be greater * than 1 while a step is running, the ActionOnFailure parameter may * not behave as you expect. In this case, for a step that fails with this * parameter set to CANCEL_AND_WAIT, pending steps and the running * step are not canceled; for a step that fails with this parameter set to * TERMINATE_CLUSTER, the cluster does not terminate.

*/ inline bool ActionOnFailureHasBeenSet() const { return m_actionOnFailureHasBeenSet; } /** *

The action to take when the cluster step fails. Possible values are * TERMINATE_CLUSTER, CANCEL_AND_WAIT, and * CONTINUE. TERMINATE_JOB_FLOW is provided for backward * compatibility. We recommend using TERMINATE_CLUSTER instead.

*

If a cluster's StepConcurrencyLevel is greater than * 1, do not use AddJobFlowSteps to submit a step with * this parameter set to CANCEL_AND_WAIT or * TERMINATE_CLUSTER. The step is not submitted and the action fails * with a message that the ActionOnFailure setting is not valid.

*

If you change a cluster's StepConcurrencyLevel to be greater * than 1 while a step is running, the ActionOnFailure parameter may * not behave as you expect. In this case, for a step that fails with this * parameter set to CANCEL_AND_WAIT, pending steps and the running * step are not canceled; for a step that fails with this parameter set to * TERMINATE_CLUSTER, the cluster does not terminate.

*/ inline void SetActionOnFailure(const ActionOnFailure& value) { m_actionOnFailureHasBeenSet = true; m_actionOnFailure = value; } /** *

The action to take when the cluster step fails. Possible values are * TERMINATE_CLUSTER, CANCEL_AND_WAIT, and * CONTINUE. TERMINATE_JOB_FLOW is provided for backward * compatibility. We recommend using TERMINATE_CLUSTER instead.

*

If a cluster's StepConcurrencyLevel is greater than * 1, do not use AddJobFlowSteps to submit a step with * this parameter set to CANCEL_AND_WAIT or * TERMINATE_CLUSTER. The step is not submitted and the action fails * with a message that the ActionOnFailure setting is not valid.

*

If you change a cluster's StepConcurrencyLevel to be greater * than 1 while a step is running, the ActionOnFailure parameter may * not behave as you expect. In this case, for a step that fails with this * parameter set to CANCEL_AND_WAIT, pending steps and the running * step are not canceled; for a step that fails with this parameter set to * TERMINATE_CLUSTER, the cluster does not terminate.

*/ inline void SetActionOnFailure(ActionOnFailure&& value) { m_actionOnFailureHasBeenSet = true; m_actionOnFailure = std::move(value); } /** *

The action to take when the cluster step fails. Possible values are * TERMINATE_CLUSTER, CANCEL_AND_WAIT, and * CONTINUE. TERMINATE_JOB_FLOW is provided for backward * compatibility. We recommend using TERMINATE_CLUSTER instead.

*

If a cluster's StepConcurrencyLevel is greater than * 1, do not use AddJobFlowSteps to submit a step with * this parameter set to CANCEL_AND_WAIT or * TERMINATE_CLUSTER. The step is not submitted and the action fails * with a message that the ActionOnFailure setting is not valid.

*

If you change a cluster's StepConcurrencyLevel to be greater * than 1 while a step is running, the ActionOnFailure parameter may * not behave as you expect. In this case, for a step that fails with this * parameter set to CANCEL_AND_WAIT, pending steps and the running * step are not canceled; for a step that fails with this parameter set to * TERMINATE_CLUSTER, the cluster does not terminate.

*/ inline Step& WithActionOnFailure(const ActionOnFailure& value) { SetActionOnFailure(value); return *this;} /** *

The action to take when the cluster step fails. Possible values are * TERMINATE_CLUSTER, CANCEL_AND_WAIT, and * CONTINUE. TERMINATE_JOB_FLOW is provided for backward * compatibility. We recommend using TERMINATE_CLUSTER instead.

*

If a cluster's StepConcurrencyLevel is greater than * 1, do not use AddJobFlowSteps to submit a step with * this parameter set to CANCEL_AND_WAIT or * TERMINATE_CLUSTER. The step is not submitted and the action fails * with a message that the ActionOnFailure setting is not valid.

*

If you change a cluster's StepConcurrencyLevel to be greater * than 1 while a step is running, the ActionOnFailure parameter may * not behave as you expect. In this case, for a step that fails with this * parameter set to CANCEL_AND_WAIT, pending steps and the running * step are not canceled; for a step that fails with this parameter set to * TERMINATE_CLUSTER, the cluster does not terminate.

*/ inline Step& WithActionOnFailure(ActionOnFailure&& value) { SetActionOnFailure(std::move(value)); return *this;} /** *

The current execution status details of the cluster step.

*/ inline const StepStatus& GetStatus() const{ return m_status; } /** *

The current execution status details of the cluster step.

*/ inline bool StatusHasBeenSet() const { return m_statusHasBeenSet; } /** *

The current execution status details of the cluster step.

*/ inline void SetStatus(const StepStatus& value) { m_statusHasBeenSet = true; m_status = value; } /** *

The current execution status details of the cluster step.

*/ inline void SetStatus(StepStatus&& value) { m_statusHasBeenSet = true; m_status = std::move(value); } /** *

The current execution status details of the cluster step.

*/ inline Step& WithStatus(const StepStatus& value) { SetStatus(value); return *this;} /** *

The current execution status details of the cluster step.

*/ inline Step& WithStatus(StepStatus&& value) { SetStatus(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the runtime role for a step on the cluster. * The runtime role can be a cross-account IAM role. The runtime role ARN is a * combination of account ID, role name, and role type using the following format: * arn:partition:service:region:account:resource.

For example, * arn:aws:IAM::1234567890:role/ReadOnly is a correctly formatted * runtime role ARN.

*/ inline const Aws::String& GetExecutionRoleArn() const{ return m_executionRoleArn; } /** *

The Amazon Resource Name (ARN) of the runtime role for a step on the cluster. * The runtime role can be a cross-account IAM role. The runtime role ARN is a * combination of account ID, role name, and role type using the following format: * arn:partition:service:region:account:resource.

For example, * arn:aws:IAM::1234567890:role/ReadOnly is a correctly formatted * runtime role ARN.

*/ inline bool ExecutionRoleArnHasBeenSet() const { return m_executionRoleArnHasBeenSet; } /** *

The Amazon Resource Name (ARN) of the runtime role for a step on the cluster. * The runtime role can be a cross-account IAM role. The runtime role ARN is a * combination of account ID, role name, and role type using the following format: * arn:partition:service:region:account:resource.

For example, * arn:aws:IAM::1234567890:role/ReadOnly is a correctly formatted * runtime role ARN.

*/ inline void SetExecutionRoleArn(const Aws::String& value) { m_executionRoleArnHasBeenSet = true; m_executionRoleArn = value; } /** *

The Amazon Resource Name (ARN) of the runtime role for a step on the cluster. * The runtime role can be a cross-account IAM role. The runtime role ARN is a * combination of account ID, role name, and role type using the following format: * arn:partition:service:region:account:resource.

For example, * arn:aws:IAM::1234567890:role/ReadOnly is a correctly formatted * runtime role ARN.

*/ inline void SetExecutionRoleArn(Aws::String&& value) { m_executionRoleArnHasBeenSet = true; m_executionRoleArn = std::move(value); } /** *

The Amazon Resource Name (ARN) of the runtime role for a step on the cluster. * The runtime role can be a cross-account IAM role. The runtime role ARN is a * combination of account ID, role name, and role type using the following format: * arn:partition:service:region:account:resource.

For example, * arn:aws:IAM::1234567890:role/ReadOnly is a correctly formatted * runtime role ARN.

*/ inline void SetExecutionRoleArn(const char* value) { m_executionRoleArnHasBeenSet = true; m_executionRoleArn.assign(value); } /** *

The Amazon Resource Name (ARN) of the runtime role for a step on the cluster. * The runtime role can be a cross-account IAM role. The runtime role ARN is a * combination of account ID, role name, and role type using the following format: * arn:partition:service:region:account:resource.

For example, * arn:aws:IAM::1234567890:role/ReadOnly is a correctly formatted * runtime role ARN.

*/ inline Step& WithExecutionRoleArn(const Aws::String& value) { SetExecutionRoleArn(value); return *this;} /** *

The Amazon Resource Name (ARN) of the runtime role for a step on the cluster. * The runtime role can be a cross-account IAM role. The runtime role ARN is a * combination of account ID, role name, and role type using the following format: * arn:partition:service:region:account:resource.

For example, * arn:aws:IAM::1234567890:role/ReadOnly is a correctly formatted * runtime role ARN.

*/ inline Step& WithExecutionRoleArn(Aws::String&& value) { SetExecutionRoleArn(std::move(value)); return *this;} /** *

The Amazon Resource Name (ARN) of the runtime role for a step on the cluster. * The runtime role can be a cross-account IAM role. The runtime role ARN is a * combination of account ID, role name, and role type using the following format: * arn:partition:service:region:account:resource.

For example, * arn:aws:IAM::1234567890:role/ReadOnly is a correctly formatted * runtime role ARN.

*/ inline Step& WithExecutionRoleArn(const char* value) { SetExecutionRoleArn(value); return *this;} private: Aws::String m_id; bool m_idHasBeenSet = false; Aws::String m_name; bool m_nameHasBeenSet = false; HadoopStepConfig m_config; bool m_configHasBeenSet = false; ActionOnFailure m_actionOnFailure; bool m_actionOnFailureHasBeenSet = false; StepStatus m_status; bool m_statusHasBeenSet = false; Aws::String m_executionRoleArn; bool m_executionRoleArnHasBeenSet = false; }; } // namespace Model } // namespace EMR } // namespace Aws