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

Custom policy for requesting termination protection or termination of * specific instances when shrinking an instance group.

See Also:

* AWS * API Reference

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

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline const Aws::Vector& GetInstancesToTerminate() const{ return m_instancesToTerminate; } /** *

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline bool InstancesToTerminateHasBeenSet() const { return m_instancesToTerminateHasBeenSet; } /** *

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline void SetInstancesToTerminate(const Aws::Vector& value) { m_instancesToTerminateHasBeenSet = true; m_instancesToTerminate = value; } /** *

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline void SetInstancesToTerminate(Aws::Vector&& value) { m_instancesToTerminateHasBeenSet = true; m_instancesToTerminate = std::move(value); } /** *

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline InstanceResizePolicy& WithInstancesToTerminate(const Aws::Vector& value) { SetInstancesToTerminate(value); return *this;} /** *

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline InstanceResizePolicy& WithInstancesToTerminate(Aws::Vector&& value) { SetInstancesToTerminate(std::move(value)); return *this;} /** *

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline InstanceResizePolicy& AddInstancesToTerminate(const Aws::String& value) { m_instancesToTerminateHasBeenSet = true; m_instancesToTerminate.push_back(value); return *this; } /** *

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline InstanceResizePolicy& AddInstancesToTerminate(Aws::String&& value) { m_instancesToTerminateHasBeenSet = true; m_instancesToTerminate.push_back(std::move(value)); return *this; } /** *

Specific list of instances to be terminated when shrinking an instance * group.

*/ inline InstanceResizePolicy& AddInstancesToTerminate(const char* value) { m_instancesToTerminateHasBeenSet = true; m_instancesToTerminate.push_back(value); return *this; } /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline const Aws::Vector& GetInstancesToProtect() const{ return m_instancesToProtect; } /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline bool InstancesToProtectHasBeenSet() const { return m_instancesToProtectHasBeenSet; } /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline void SetInstancesToProtect(const Aws::Vector& value) { m_instancesToProtectHasBeenSet = true; m_instancesToProtect = value; } /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline void SetInstancesToProtect(Aws::Vector&& value) { m_instancesToProtectHasBeenSet = true; m_instancesToProtect = std::move(value); } /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline InstanceResizePolicy& WithInstancesToProtect(const Aws::Vector& value) { SetInstancesToProtect(value); return *this;} /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline InstanceResizePolicy& WithInstancesToProtect(Aws::Vector&& value) { SetInstancesToProtect(std::move(value)); return *this;} /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline InstanceResizePolicy& AddInstancesToProtect(const Aws::String& value) { m_instancesToProtectHasBeenSet = true; m_instancesToProtect.push_back(value); return *this; } /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline InstanceResizePolicy& AddInstancesToProtect(Aws::String&& value) { m_instancesToProtectHasBeenSet = true; m_instancesToProtect.push_back(std::move(value)); return *this; } /** *

Specific list of instances to be protected when shrinking an instance * group.

*/ inline InstanceResizePolicy& AddInstancesToProtect(const char* value) { m_instancesToProtectHasBeenSet = true; m_instancesToProtect.push_back(value); return *this; } /** *

Decommissioning timeout override for the specific list of instances to be * terminated.

*/ inline int GetInstanceTerminationTimeout() const{ return m_instanceTerminationTimeout; } /** *

Decommissioning timeout override for the specific list of instances to be * terminated.

*/ inline bool InstanceTerminationTimeoutHasBeenSet() const { return m_instanceTerminationTimeoutHasBeenSet; } /** *

Decommissioning timeout override for the specific list of instances to be * terminated.

*/ inline void SetInstanceTerminationTimeout(int value) { m_instanceTerminationTimeoutHasBeenSet = true; m_instanceTerminationTimeout = value; } /** *

Decommissioning timeout override for the specific list of instances to be * terminated.

*/ inline InstanceResizePolicy& WithInstanceTerminationTimeout(int value) { SetInstanceTerminationTimeout(value); return *this;} private: Aws::Vector m_instancesToTerminate; bool m_instancesToTerminateHasBeenSet = false; Aws::Vector m_instancesToProtect; bool m_instancesToProtectHasBeenSet = false; int m_instanceTerminationTimeout; bool m_instanceTerminationTimeoutHasBeenSet = false; }; } // namespace Model } // namespace EMR } // namespace Aws