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

Node group (shard) configuration options when adding or removing replicas. * Each node group (shard) configuration has the following members: NodeGroupId, * NewReplicaCount, and PreferredAvailabilityZones.

See Also:

AWS * API Reference

*/ class AWS_ELASTICACHE_API ConfigureShard { public: ConfigureShard(); ConfigureShard(const Aws::Utils::Xml::XmlNode& xmlNode); ConfigureShard& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

The 4-digit id for the node group you are configuring. For Redis (cluster * mode disabled) replication groups, the node group id is always 0001. To find a * Redis (cluster mode enabled)'s node group's (shard's) id, see Finding * a Shard's Id.

*/ inline const Aws::String& GetNodeGroupId() const{ return m_nodeGroupId; } /** *

The 4-digit id for the node group you are configuring. For Redis (cluster * mode disabled) replication groups, the node group id is always 0001. To find a * Redis (cluster mode enabled)'s node group's (shard's) id, see Finding * a Shard's Id.

*/ inline bool NodeGroupIdHasBeenSet() const { return m_nodeGroupIdHasBeenSet; } /** *

The 4-digit id for the node group you are configuring. For Redis (cluster * mode disabled) replication groups, the node group id is always 0001. To find a * Redis (cluster mode enabled)'s node group's (shard's) id, see Finding * a Shard's Id.

*/ inline void SetNodeGroupId(const Aws::String& value) { m_nodeGroupIdHasBeenSet = true; m_nodeGroupId = value; } /** *

The 4-digit id for the node group you are configuring. For Redis (cluster * mode disabled) replication groups, the node group id is always 0001. To find a * Redis (cluster mode enabled)'s node group's (shard's) id, see Finding * a Shard's Id.

*/ inline void SetNodeGroupId(Aws::String&& value) { m_nodeGroupIdHasBeenSet = true; m_nodeGroupId = std::move(value); } /** *

The 4-digit id for the node group you are configuring. For Redis (cluster * mode disabled) replication groups, the node group id is always 0001. To find a * Redis (cluster mode enabled)'s node group's (shard's) id, see Finding * a Shard's Id.

*/ inline void SetNodeGroupId(const char* value) { m_nodeGroupIdHasBeenSet = true; m_nodeGroupId.assign(value); } /** *

The 4-digit id for the node group you are configuring. For Redis (cluster * mode disabled) replication groups, the node group id is always 0001. To find a * Redis (cluster mode enabled)'s node group's (shard's) id, see Finding * a Shard's Id.

*/ inline ConfigureShard& WithNodeGroupId(const Aws::String& value) { SetNodeGroupId(value); return *this;} /** *

The 4-digit id for the node group you are configuring. For Redis (cluster * mode disabled) replication groups, the node group id is always 0001. To find a * Redis (cluster mode enabled)'s node group's (shard's) id, see Finding * a Shard's Id.

*/ inline ConfigureShard& WithNodeGroupId(Aws::String&& value) { SetNodeGroupId(std::move(value)); return *this;} /** *

The 4-digit id for the node group you are configuring. For Redis (cluster * mode disabled) replication groups, the node group id is always 0001. To find a * Redis (cluster mode enabled)'s node group's (shard's) id, see Finding * a Shard's Id.

*/ inline ConfigureShard& WithNodeGroupId(const char* value) { SetNodeGroupId(value); return *this;} /** *

The number of replicas you want in this node group at the end of this * operation. The maximum value for NewReplicaCount is 5. The minimum * value depends upon the type of Redis replication group you are working with.

*

The minimum number of replicas in a shard or replication group is:

    *
  • Redis (cluster mode disabled)

    • If Multi-AZ: 1

    • *
    • If Multi-AZ: 0

  • Redis (cluster mode * enabled): 0 (though you will not be able to failover to a replica if your * primary node fails)

*/ inline int GetNewReplicaCount() const{ return m_newReplicaCount; } /** *

The number of replicas you want in this node group at the end of this * operation. The maximum value for NewReplicaCount is 5. The minimum * value depends upon the type of Redis replication group you are working with.

*

The minimum number of replicas in a shard or replication group is:

    *
  • Redis (cluster mode disabled)

    • If Multi-AZ: 1

    • *
    • If Multi-AZ: 0

  • Redis (cluster mode * enabled): 0 (though you will not be able to failover to a replica if your * primary node fails)

*/ inline bool NewReplicaCountHasBeenSet() const { return m_newReplicaCountHasBeenSet; } /** *

The number of replicas you want in this node group at the end of this * operation. The maximum value for NewReplicaCount is 5. The minimum * value depends upon the type of Redis replication group you are working with.

*

The minimum number of replicas in a shard or replication group is:

    *
  • Redis (cluster mode disabled)

    • If Multi-AZ: 1

    • *
    • If Multi-AZ: 0

  • Redis (cluster mode * enabled): 0 (though you will not be able to failover to a replica if your * primary node fails)

*/ inline void SetNewReplicaCount(int value) { m_newReplicaCountHasBeenSet = true; m_newReplicaCount = value; } /** *

The number of replicas you want in this node group at the end of this * operation. The maximum value for NewReplicaCount is 5. The minimum * value depends upon the type of Redis replication group you are working with.

*

The minimum number of replicas in a shard or replication group is:

    *
  • Redis (cluster mode disabled)

    • If Multi-AZ: 1

    • *
    • If Multi-AZ: 0

  • Redis (cluster mode * enabled): 0 (though you will not be able to failover to a replica if your * primary node fails)

*/ inline ConfigureShard& WithNewReplicaCount(int value) { SetNewReplicaCount(value); return *this;} /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline const Aws::Vector& GetPreferredAvailabilityZones() const{ return m_preferredAvailabilityZones; } /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline bool PreferredAvailabilityZonesHasBeenSet() const { return m_preferredAvailabilityZonesHasBeenSet; } /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline void SetPreferredAvailabilityZones(const Aws::Vector& value) { m_preferredAvailabilityZonesHasBeenSet = true; m_preferredAvailabilityZones = value; } /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline void SetPreferredAvailabilityZones(Aws::Vector&& value) { m_preferredAvailabilityZonesHasBeenSet = true; m_preferredAvailabilityZones = std::move(value); } /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline ConfigureShard& WithPreferredAvailabilityZones(const Aws::Vector& value) { SetPreferredAvailabilityZones(value); return *this;} /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline ConfigureShard& WithPreferredAvailabilityZones(Aws::Vector&& value) { SetPreferredAvailabilityZones(std::move(value)); return *this;} /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline ConfigureShard& AddPreferredAvailabilityZones(const Aws::String& value) { m_preferredAvailabilityZonesHasBeenSet = true; m_preferredAvailabilityZones.push_back(value); return *this; } /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline ConfigureShard& AddPreferredAvailabilityZones(Aws::String&& value) { m_preferredAvailabilityZonesHasBeenSet = true; m_preferredAvailabilityZones.push_back(std::move(value)); return *this; } /** *

A list of PreferredAvailabilityZone strings that specify which * availability zones the replication group's nodes are to be in. The nummber of * PreferredAvailabilityZone values must equal the value of * NewReplicaCount plus 1 to account for the primary node. If this * member of ReplicaConfiguration is omitted, ElastiCache for Redis * selects the availability zone for each of the replicas.

*/ inline ConfigureShard& AddPreferredAvailabilityZones(const char* value) { m_preferredAvailabilityZonesHasBeenSet = true; m_preferredAvailabilityZones.push_back(value); return *this; } private: Aws::String m_nodeGroupId; bool m_nodeGroupIdHasBeenSet; int m_newReplicaCount; bool m_newReplicaCountHasBeenSet; Aws::Vector m_preferredAvailabilityZones; bool m_preferredAvailabilityZonesHasBeenSet; }; } // namespace Model } // namespace ElastiCache } // namespace Aws