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

Policy for customizing shrink operations. Allows configuration of * decommissioning timeout and targeted instance shrinking.

See * Also:

AWS * API Reference

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

The desired timeout for decommissioning an instance. Overrides the default * YARN decommissioning timeout.

*/ inline int GetDecommissionTimeout() const{ return m_decommissionTimeout; } /** *

The desired timeout for decommissioning an instance. Overrides the default * YARN decommissioning timeout.

*/ inline bool DecommissionTimeoutHasBeenSet() const { return m_decommissionTimeoutHasBeenSet; } /** *

The desired timeout for decommissioning an instance. Overrides the default * YARN decommissioning timeout.

*/ inline void SetDecommissionTimeout(int value) { m_decommissionTimeoutHasBeenSet = true; m_decommissionTimeout = value; } /** *

The desired timeout for decommissioning an instance. Overrides the default * YARN decommissioning timeout.

*/ inline ShrinkPolicy& WithDecommissionTimeout(int value) { SetDecommissionTimeout(value); return *this;} /** *

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

*/ inline const InstanceResizePolicy& GetInstanceResizePolicy() const{ return m_instanceResizePolicy; } /** *

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

*/ inline bool InstanceResizePolicyHasBeenSet() const { return m_instanceResizePolicyHasBeenSet; } /** *

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

*/ inline void SetInstanceResizePolicy(const InstanceResizePolicy& value) { m_instanceResizePolicyHasBeenSet = true; m_instanceResizePolicy = value; } /** *

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

*/ inline void SetInstanceResizePolicy(InstanceResizePolicy&& value) { m_instanceResizePolicyHasBeenSet = true; m_instanceResizePolicy = std::move(value); } /** *

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

*/ inline ShrinkPolicy& WithInstanceResizePolicy(const InstanceResizePolicy& value) { SetInstanceResizePolicy(value); return *this;} /** *

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

*/ inline ShrinkPolicy& WithInstanceResizePolicy(InstanceResizePolicy&& value) { SetInstanceResizePolicy(std::move(value)); return *this;} private: int m_decommissionTimeout; bool m_decommissionTimeoutHasBeenSet = false; InstanceResizePolicy m_instanceResizePolicy; bool m_instanceResizePolicyHasBeenSet = false; }; } // namespace Model } // namespace EMR } // namespace Aws