/** * 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 drs { namespace Model { /** *

A rule in the Point in Time (PIT) policy representing when to take snapshots * and how long to retain them for.

See Also:

AWS * API Reference

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

Whether this rule is enabled or not.

*/ inline bool GetEnabled() const{ return m_enabled; } /** *

Whether this rule is enabled or not.

*/ inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; } /** *

Whether this rule is enabled or not.

*/ inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; } /** *

Whether this rule is enabled or not.

*/ inline PITPolicyRule& WithEnabled(bool value) { SetEnabled(value); return *this;} /** *

How often, in the chosen units, a snapshot should be taken.

*/ inline int GetInterval() const{ return m_interval; } /** *

How often, in the chosen units, a snapshot should be taken.

*/ inline bool IntervalHasBeenSet() const { return m_intervalHasBeenSet; } /** *

How often, in the chosen units, a snapshot should be taken.

*/ inline void SetInterval(int value) { m_intervalHasBeenSet = true; m_interval = value; } /** *

How often, in the chosen units, a snapshot should be taken.

*/ inline PITPolicyRule& WithInterval(int value) { SetInterval(value); return *this;} /** *

The duration to retain a snapshot for, in the chosen units.

*/ inline int GetRetentionDuration() const{ return m_retentionDuration; } /** *

The duration to retain a snapshot for, in the chosen units.

*/ inline bool RetentionDurationHasBeenSet() const { return m_retentionDurationHasBeenSet; } /** *

The duration to retain a snapshot for, in the chosen units.

*/ inline void SetRetentionDuration(int value) { m_retentionDurationHasBeenSet = true; m_retentionDuration = value; } /** *

The duration to retain a snapshot for, in the chosen units.

*/ inline PITPolicyRule& WithRetentionDuration(int value) { SetRetentionDuration(value); return *this;} /** *

The ID of the rule.

*/ inline long long GetRuleID() const{ return m_ruleID; } /** *

The ID of the rule.

*/ inline bool RuleIDHasBeenSet() const { return m_ruleIDHasBeenSet; } /** *

The ID of the rule.

*/ inline void SetRuleID(long long value) { m_ruleIDHasBeenSet = true; m_ruleID = value; } /** *

The ID of the rule.

*/ inline PITPolicyRule& WithRuleID(long long value) { SetRuleID(value); return *this;} /** *

The units used to measure the interval and retentionDuration.

*/ inline const PITPolicyRuleUnits& GetUnits() const{ return m_units; } /** *

The units used to measure the interval and retentionDuration.

*/ inline bool UnitsHasBeenSet() const { return m_unitsHasBeenSet; } /** *

The units used to measure the interval and retentionDuration.

*/ inline void SetUnits(const PITPolicyRuleUnits& value) { m_unitsHasBeenSet = true; m_units = value; } /** *

The units used to measure the interval and retentionDuration.

*/ inline void SetUnits(PITPolicyRuleUnits&& value) { m_unitsHasBeenSet = true; m_units = std::move(value); } /** *

The units used to measure the interval and retentionDuration.

*/ inline PITPolicyRule& WithUnits(const PITPolicyRuleUnits& value) { SetUnits(value); return *this;} /** *

The units used to measure the interval and retentionDuration.

*/ inline PITPolicyRule& WithUnits(PITPolicyRuleUnits&& value) { SetUnits(std::move(value)); return *this;} private: bool m_enabled; bool m_enabledHasBeenSet = false; int m_interval; bool m_intervalHasBeenSet = false; int m_retentionDuration; bool m_retentionDurationHasBeenSet = false; long long m_ruleID; bool m_ruleIDHasBeenSet = false; PITPolicyRuleUnits m_units; bool m_unitsHasBeenSet = false; }; } // namespace Model } // namespace drs } // namespace Aws