{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.ElastiCache.Types.ReplicationGroup
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.ElastiCache.Types.ReplicationGroup where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ElastiCache.Types.AutomaticFailoverStatus
import Amazonka.ElastiCache.Types.DataTieringStatus
import Amazonka.ElastiCache.Types.Endpoint
import Amazonka.ElastiCache.Types.GlobalReplicationGroupInfo
import Amazonka.ElastiCache.Types.IpDiscovery
import Amazonka.ElastiCache.Types.LogDeliveryConfiguration
import Amazonka.ElastiCache.Types.MultiAZStatus
import Amazonka.ElastiCache.Types.NetworkType
import Amazonka.ElastiCache.Types.NodeGroup
import Amazonka.ElastiCache.Types.ReplicationGroupPendingModifiedValues
import Amazonka.ElastiCache.Types.TransitEncryptionMode
import qualified Amazonka.Prelude as Prelude

-- | Contains all of the attributes of a specific Redis replication group.
--
-- /See:/ 'newReplicationGroup' smart constructor.
data ReplicationGroup = ReplicationGroup'
  { -- | The ARN (Amazon Resource Name) of the replication group.
    ReplicationGroup -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | A flag that enables encryption at-rest when set to @true@.
    --
    -- You cannot modify the value of @AtRestEncryptionEnabled@ after the
    -- cluster is created. To enable encryption at-rest on a cluster you must
    -- set @AtRestEncryptionEnabled@ to @true@ when you create a cluster.
    --
    -- __Required:__ Only available when creating a replication group in an
    -- Amazon VPC using redis version @3.2.6@, @4.x@ or later.
    --
    -- Default: @false@
    ReplicationGroup -> Maybe Bool
atRestEncryptionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | A flag that enables using an @AuthToken@ (password) when issuing Redis
    -- commands.
    --
    -- Default: @false@
    ReplicationGroup -> Maybe Bool
authTokenEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The date the auth token was last modified
    ReplicationGroup -> Maybe ISO8601
authTokenLastModifiedDate :: Prelude.Maybe Data.ISO8601,
    -- | If you are running Redis engine version 6.0 or later, set this
    -- parameter to yes if you want to opt-in to the next auto minor version
    -- upgrade campaign. This parameter is disabled for previous versions.
    ReplicationGroup -> Maybe Bool
autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | Indicates the status of automatic failover for this Redis replication
    -- group.
    ReplicationGroup -> Maybe AutomaticFailoverStatus
automaticFailover :: Prelude.Maybe AutomaticFailoverStatus,
    -- | The name of the compute and memory capacity node type for each node in
    -- the replication group.
    ReplicationGroup -> Maybe Text
cacheNodeType :: Prelude.Maybe Prelude.Text,
    -- | A flag indicating whether or not this replication group is cluster
    -- enabled; i.e., whether its data can be partitioned across multiple
    -- shards (API\/CLI: node groups).
    --
    -- Valid values: @true@ | @false@
    ReplicationGroup -> Maybe Bool
clusterEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The configuration endpoint for this replication group. Use the
    -- configuration endpoint to connect to this replication group.
    ReplicationGroup -> Maybe Endpoint
configurationEndpoint :: Prelude.Maybe Endpoint,
    -- | Enables data tiering. Data tiering is only supported for replication
    -- groups using the r6gd node type. This parameter must be set to true when
    -- using r6gd nodes. For more information, see
    -- <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/data-tiering.html Data tiering>.
    ReplicationGroup -> Maybe DataTieringStatus
dataTiering :: Prelude.Maybe DataTieringStatus,
    -- | The user supplied description of the replication group.
    ReplicationGroup -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The name of the Global datastore and role of this replication group in
    -- the Global datastore.
    ReplicationGroup -> Maybe GlobalReplicationGroupInfo
globalReplicationGroupInfo :: Prelude.Maybe GlobalReplicationGroupInfo,
    -- | The network type you choose when modifying a cluster, either @ipv4@ |
    -- @ipv6@. IPv6 is supported for workloads using Redis engine version 6.2
    -- onward or Memcached engine version 1.6.6 on all instances built on the
    -- <https://aws.amazon.com/ec2/nitro/ Nitro system>.
    ReplicationGroup -> Maybe IpDiscovery
ipDiscovery :: Prelude.Maybe IpDiscovery,
    -- | The ID of the KMS key used to encrypt the disk in the cluster.
    ReplicationGroup -> Maybe Text
kmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | Returns the destination, format and type of the logs.
    ReplicationGroup -> Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations :: Prelude.Maybe [LogDeliveryConfiguration],
    -- | The names of all the cache clusters that are part of this replication
    -- group.
    ReplicationGroup -> Maybe [Text]
memberClusters :: Prelude.Maybe [Prelude.Text],
    -- | The outpost ARNs of the replication group\'s member clusters.
    ReplicationGroup -> Maybe [Text]
memberClustersOutpostArns :: Prelude.Maybe [Prelude.Text],
    -- | A flag indicating if you have Multi-AZ enabled to enhance fault
    -- tolerance. For more information, see
    -- <http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html Minimizing Downtime: Multi-AZ>
    ReplicationGroup -> Maybe MultiAZStatus
multiAZ :: Prelude.Maybe MultiAZStatus,
    -- | Must be either @ipv4@ | @ipv6@ | @dual_stack@. IPv6 is supported for
    -- workloads using Redis engine version 6.2 onward or Memcached engine
    -- version 1.6.6 on all instances built on the
    -- <https://aws.amazon.com/ec2/nitro/ Nitro system>.
    ReplicationGroup -> Maybe NetworkType
networkType :: Prelude.Maybe NetworkType,
    -- | A list of node groups in this replication group. For Redis (cluster mode
    -- disabled) replication groups, this is a single-element list. For Redis
    -- (cluster mode enabled) replication groups, the list contains an entry
    -- for each node group (shard).
    ReplicationGroup -> Maybe [NodeGroup]
nodeGroups :: Prelude.Maybe [NodeGroup],
    -- | A group of settings to be applied to the replication group, either
    -- immediately or during the next maintenance window.
    ReplicationGroup -> Maybe ReplicationGroupPendingModifiedValues
pendingModifiedValues :: Prelude.Maybe ReplicationGroupPendingModifiedValues,
    -- | The date and time when the cluster was created.
    ReplicationGroup -> Maybe ISO8601
replicationGroupCreateTime :: Prelude.Maybe Data.ISO8601,
    -- | The identifier for the replication group.
    ReplicationGroup -> Maybe Text
replicationGroupId :: Prelude.Maybe Prelude.Text,
    -- | The number of days for which ElastiCache retains automatic cluster
    -- snapshots before deleting them. For example, if you set
    -- @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is
    -- retained for 5 days before being deleted.
    --
    -- If the value of @SnapshotRetentionLimit@ is set to zero (0), backups are
    -- turned off.
    ReplicationGroup -> Maybe Int
snapshotRetentionLimit :: Prelude.Maybe Prelude.Int,
    -- | The daily time range (in UTC) during which ElastiCache begins taking a
    -- daily snapshot of your node group (shard).
    --
    -- Example: @05:00-09:00@
    --
    -- If you do not specify this parameter, ElastiCache automatically chooses
    -- an appropriate time range.
    --
    -- This parameter is only valid if the @Engine@ parameter is @redis@.
    ReplicationGroup -> Maybe Text
snapshotWindow :: Prelude.Maybe Prelude.Text,
    -- | The cluster ID that is used as the daily snapshot source for the
    -- replication group.
    ReplicationGroup -> Maybe Text
snapshottingClusterId :: Prelude.Maybe Prelude.Text,
    -- | The current state of this replication group - @creating@, @available@,
    -- @modifying@, @deleting@, @create-failed@, @snapshotting@.
    ReplicationGroup -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | A flag that enables in-transit encryption when set to @true@.
    --
    -- __Required:__ Only available when creating a replication group in an
    -- Amazon VPC using redis version @3.2.6@, @4.x@ or later.
    --
    -- Default: @false@
    ReplicationGroup -> Maybe Bool
transitEncryptionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | A setting that allows you to migrate your clients to use in-transit
    -- encryption, with no downtime.
    ReplicationGroup -> Maybe TransitEncryptionMode
transitEncryptionMode :: Prelude.Maybe TransitEncryptionMode,
    -- | The ID of the user group associated to the replication group.
    ReplicationGroup -> Maybe [Text]
userGroupIds :: Prelude.Maybe [Prelude.Text]
  }
  deriving (ReplicationGroup -> ReplicationGroup -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReplicationGroup -> ReplicationGroup -> Bool
$c/= :: ReplicationGroup -> ReplicationGroup -> Bool
== :: ReplicationGroup -> ReplicationGroup -> Bool
$c== :: ReplicationGroup -> ReplicationGroup -> Bool
Prelude.Eq, ReadPrec [ReplicationGroup]
ReadPrec ReplicationGroup
Int -> ReadS ReplicationGroup
ReadS [ReplicationGroup]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ReplicationGroup]
$creadListPrec :: ReadPrec [ReplicationGroup]
readPrec :: ReadPrec ReplicationGroup
$creadPrec :: ReadPrec ReplicationGroup
readList :: ReadS [ReplicationGroup]
$creadList :: ReadS [ReplicationGroup]
readsPrec :: Int -> ReadS ReplicationGroup
$creadsPrec :: Int -> ReadS ReplicationGroup
Prelude.Read, Int -> ReplicationGroup -> ShowS
[ReplicationGroup] -> ShowS
ReplicationGroup -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReplicationGroup] -> ShowS
$cshowList :: [ReplicationGroup] -> ShowS
show :: ReplicationGroup -> String
$cshow :: ReplicationGroup -> String
showsPrec :: Int -> ReplicationGroup -> ShowS
$cshowsPrec :: Int -> ReplicationGroup -> ShowS
Prelude.Show, forall x. Rep ReplicationGroup x -> ReplicationGroup
forall x. ReplicationGroup -> Rep ReplicationGroup x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ReplicationGroup x -> ReplicationGroup
$cfrom :: forall x. ReplicationGroup -> Rep ReplicationGroup x
Prelude.Generic)

-- |
-- Create a value of 'ReplicationGroup' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'arn', 'replicationGroup_arn' - The ARN (Amazon Resource Name) of the replication group.
--
-- 'atRestEncryptionEnabled', 'replicationGroup_atRestEncryptionEnabled' - A flag that enables encryption at-rest when set to @true@.
--
-- You cannot modify the value of @AtRestEncryptionEnabled@ after the
-- cluster is created. To enable encryption at-rest on a cluster you must
-- set @AtRestEncryptionEnabled@ to @true@ when you create a cluster.
--
-- __Required:__ Only available when creating a replication group in an
-- Amazon VPC using redis version @3.2.6@, @4.x@ or later.
--
-- Default: @false@
--
-- 'authTokenEnabled', 'replicationGroup_authTokenEnabled' - A flag that enables using an @AuthToken@ (password) when issuing Redis
-- commands.
--
-- Default: @false@
--
-- 'authTokenLastModifiedDate', 'replicationGroup_authTokenLastModifiedDate' - The date the auth token was last modified
--
-- 'autoMinorVersionUpgrade', 'replicationGroup_autoMinorVersionUpgrade' - If you are running Redis engine version 6.0 or later, set this
-- parameter to yes if you want to opt-in to the next auto minor version
-- upgrade campaign. This parameter is disabled for previous versions.
--
-- 'automaticFailover', 'replicationGroup_automaticFailover' - Indicates the status of automatic failover for this Redis replication
-- group.
--
-- 'cacheNodeType', 'replicationGroup_cacheNodeType' - The name of the compute and memory capacity node type for each node in
-- the replication group.
--
-- 'clusterEnabled', 'replicationGroup_clusterEnabled' - A flag indicating whether or not this replication group is cluster
-- enabled; i.e., whether its data can be partitioned across multiple
-- shards (API\/CLI: node groups).
--
-- Valid values: @true@ | @false@
--
-- 'configurationEndpoint', 'replicationGroup_configurationEndpoint' - The configuration endpoint for this replication group. Use the
-- configuration endpoint to connect to this replication group.
--
-- 'dataTiering', 'replicationGroup_dataTiering' - Enables data tiering. Data tiering is only supported for replication
-- groups using the r6gd node type. This parameter must be set to true when
-- using r6gd nodes. For more information, see
-- <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/data-tiering.html Data tiering>.
--
-- 'description', 'replicationGroup_description' - The user supplied description of the replication group.
--
-- 'globalReplicationGroupInfo', 'replicationGroup_globalReplicationGroupInfo' - The name of the Global datastore and role of this replication group in
-- the Global datastore.
--
-- 'ipDiscovery', 'replicationGroup_ipDiscovery' - The network type you choose when modifying a cluster, either @ipv4@ |
-- @ipv6@. IPv6 is supported for workloads using Redis engine version 6.2
-- onward or Memcached engine version 1.6.6 on all instances built on the
-- <https://aws.amazon.com/ec2/nitro/ Nitro system>.
--
-- 'kmsKeyId', 'replicationGroup_kmsKeyId' - The ID of the KMS key used to encrypt the disk in the cluster.
--
-- 'logDeliveryConfigurations', 'replicationGroup_logDeliveryConfigurations' - Returns the destination, format and type of the logs.
--
-- 'memberClusters', 'replicationGroup_memberClusters' - The names of all the cache clusters that are part of this replication
-- group.
--
-- 'memberClustersOutpostArns', 'replicationGroup_memberClustersOutpostArns' - The outpost ARNs of the replication group\'s member clusters.
--
-- 'multiAZ', 'replicationGroup_multiAZ' - A flag indicating if you have Multi-AZ enabled to enhance fault
-- tolerance. For more information, see
-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html Minimizing Downtime: Multi-AZ>
--
-- 'networkType', 'replicationGroup_networkType' - Must be either @ipv4@ | @ipv6@ | @dual_stack@. IPv6 is supported for
-- workloads using Redis engine version 6.2 onward or Memcached engine
-- version 1.6.6 on all instances built on the
-- <https://aws.amazon.com/ec2/nitro/ Nitro system>.
--
-- 'nodeGroups', 'replicationGroup_nodeGroups' - A list of node groups in this replication group. For Redis (cluster mode
-- disabled) replication groups, this is a single-element list. For Redis
-- (cluster mode enabled) replication groups, the list contains an entry
-- for each node group (shard).
--
-- 'pendingModifiedValues', 'replicationGroup_pendingModifiedValues' - A group of settings to be applied to the replication group, either
-- immediately or during the next maintenance window.
--
-- 'replicationGroupCreateTime', 'replicationGroup_replicationGroupCreateTime' - The date and time when the cluster was created.
--
-- 'replicationGroupId', 'replicationGroup_replicationGroupId' - The identifier for the replication group.
--
-- 'snapshotRetentionLimit', 'replicationGroup_snapshotRetentionLimit' - The number of days for which ElastiCache retains automatic cluster
-- snapshots before deleting them. For example, if you set
-- @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is
-- retained for 5 days before being deleted.
--
-- If the value of @SnapshotRetentionLimit@ is set to zero (0), backups are
-- turned off.
--
-- 'snapshotWindow', 'replicationGroup_snapshotWindow' - The daily time range (in UTC) during which ElastiCache begins taking a
-- daily snapshot of your node group (shard).
--
-- Example: @05:00-09:00@
--
-- If you do not specify this parameter, ElastiCache automatically chooses
-- an appropriate time range.
--
-- This parameter is only valid if the @Engine@ parameter is @redis@.
--
-- 'snapshottingClusterId', 'replicationGroup_snapshottingClusterId' - The cluster ID that is used as the daily snapshot source for the
-- replication group.
--
-- 'status', 'replicationGroup_status' - The current state of this replication group - @creating@, @available@,
-- @modifying@, @deleting@, @create-failed@, @snapshotting@.
--
-- 'transitEncryptionEnabled', 'replicationGroup_transitEncryptionEnabled' - A flag that enables in-transit encryption when set to @true@.
--
-- __Required:__ Only available when creating a replication group in an
-- Amazon VPC using redis version @3.2.6@, @4.x@ or later.
--
-- Default: @false@
--
-- 'transitEncryptionMode', 'replicationGroup_transitEncryptionMode' - A setting that allows you to migrate your clients to use in-transit
-- encryption, with no downtime.
--
-- 'userGroupIds', 'replicationGroup_userGroupIds' - The ID of the user group associated to the replication group.
newReplicationGroup ::
  ReplicationGroup
newReplicationGroup :: ReplicationGroup
newReplicationGroup =
  ReplicationGroup'
    { $sel:arn:ReplicationGroup' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:atRestEncryptionEnabled:ReplicationGroup' :: Maybe Bool
atRestEncryptionEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:authTokenEnabled:ReplicationGroup' :: Maybe Bool
authTokenEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:authTokenLastModifiedDate:ReplicationGroup' :: Maybe ISO8601
authTokenLastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:autoMinorVersionUpgrade:ReplicationGroup' :: Maybe Bool
autoMinorVersionUpgrade = forall a. Maybe a
Prelude.Nothing,
      $sel:automaticFailover:ReplicationGroup' :: Maybe AutomaticFailoverStatus
automaticFailover = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheNodeType:ReplicationGroup' :: Maybe Text
cacheNodeType = forall a. Maybe a
Prelude.Nothing,
      $sel:clusterEnabled:ReplicationGroup' :: Maybe Bool
clusterEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:configurationEndpoint:ReplicationGroup' :: Maybe Endpoint
configurationEndpoint = forall a. Maybe a
Prelude.Nothing,
      $sel:dataTiering:ReplicationGroup' :: Maybe DataTieringStatus
dataTiering = forall a. Maybe a
Prelude.Nothing,
      $sel:description:ReplicationGroup' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:globalReplicationGroupInfo:ReplicationGroup' :: Maybe GlobalReplicationGroupInfo
globalReplicationGroupInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:ipDiscovery:ReplicationGroup' :: Maybe IpDiscovery
ipDiscovery = forall a. Maybe a
Prelude.Nothing,
      $sel:kmsKeyId:ReplicationGroup' :: Maybe Text
kmsKeyId = forall a. Maybe a
Prelude.Nothing,
      $sel:logDeliveryConfigurations:ReplicationGroup' :: Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations = forall a. Maybe a
Prelude.Nothing,
      $sel:memberClusters:ReplicationGroup' :: Maybe [Text]
memberClusters = forall a. Maybe a
Prelude.Nothing,
      $sel:memberClustersOutpostArns:ReplicationGroup' :: Maybe [Text]
memberClustersOutpostArns = forall a. Maybe a
Prelude.Nothing,
      $sel:multiAZ:ReplicationGroup' :: Maybe MultiAZStatus
multiAZ = forall a. Maybe a
Prelude.Nothing,
      $sel:networkType:ReplicationGroup' :: Maybe NetworkType
networkType = forall a. Maybe a
Prelude.Nothing,
      $sel:nodeGroups:ReplicationGroup' :: Maybe [NodeGroup]
nodeGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingModifiedValues:ReplicationGroup' :: Maybe ReplicationGroupPendingModifiedValues
pendingModifiedValues = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationGroupCreateTime:ReplicationGroup' :: Maybe ISO8601
replicationGroupCreateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationGroupId:ReplicationGroup' :: Maybe Text
replicationGroupId = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotRetentionLimit:ReplicationGroup' :: Maybe Int
snapshotRetentionLimit = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotWindow:ReplicationGroup' :: Maybe Text
snapshotWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshottingClusterId:ReplicationGroup' :: Maybe Text
snapshottingClusterId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:ReplicationGroup' :: Maybe Text
status = forall a. Maybe a
Prelude.Nothing,
      $sel:transitEncryptionEnabled:ReplicationGroup' :: Maybe Bool
transitEncryptionEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:transitEncryptionMode:ReplicationGroup' :: Maybe TransitEncryptionMode
transitEncryptionMode = forall a. Maybe a
Prelude.Nothing,
      $sel:userGroupIds:ReplicationGroup' :: Maybe [Text]
userGroupIds = forall a. Maybe a
Prelude.Nothing
    }

-- | The ARN (Amazon Resource Name) of the replication group.
replicationGroup_arn :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Text)
replicationGroup_arn :: Lens' ReplicationGroup (Maybe Text)
replicationGroup_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Text
arn :: Maybe Text
$sel:arn:ReplicationGroup' :: ReplicationGroup -> Maybe Text
arn} -> Maybe Text
arn) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Text
a -> ReplicationGroup
s {$sel:arn:ReplicationGroup' :: Maybe Text
arn = Maybe Text
a} :: ReplicationGroup)

-- | A flag that enables encryption at-rest when set to @true@.
--
-- You cannot modify the value of @AtRestEncryptionEnabled@ after the
-- cluster is created. To enable encryption at-rest on a cluster you must
-- set @AtRestEncryptionEnabled@ to @true@ when you create a cluster.
--
-- __Required:__ Only available when creating a replication group in an
-- Amazon VPC using redis version @3.2.6@, @4.x@ or later.
--
-- Default: @false@
replicationGroup_atRestEncryptionEnabled :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Bool)
replicationGroup_atRestEncryptionEnabled :: Lens' ReplicationGroup (Maybe Bool)
replicationGroup_atRestEncryptionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Bool
atRestEncryptionEnabled :: Maybe Bool
$sel:atRestEncryptionEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
atRestEncryptionEnabled} -> Maybe Bool
atRestEncryptionEnabled) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Bool
a -> ReplicationGroup
s {$sel:atRestEncryptionEnabled:ReplicationGroup' :: Maybe Bool
atRestEncryptionEnabled = Maybe Bool
a} :: ReplicationGroup)

-- | A flag that enables using an @AuthToken@ (password) when issuing Redis
-- commands.
--
-- Default: @false@
replicationGroup_authTokenEnabled :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Bool)
replicationGroup_authTokenEnabled :: Lens' ReplicationGroup (Maybe Bool)
replicationGroup_authTokenEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Bool
authTokenEnabled :: Maybe Bool
$sel:authTokenEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
authTokenEnabled} -> Maybe Bool
authTokenEnabled) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Bool
a -> ReplicationGroup
s {$sel:authTokenEnabled:ReplicationGroup' :: Maybe Bool
authTokenEnabled = Maybe Bool
a} :: ReplicationGroup)

-- | The date the auth token was last modified
replicationGroup_authTokenLastModifiedDate :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.UTCTime)
replicationGroup_authTokenLastModifiedDate :: Lens' ReplicationGroup (Maybe UTCTime)
replicationGroup_authTokenLastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe ISO8601
authTokenLastModifiedDate :: Maybe ISO8601
$sel:authTokenLastModifiedDate:ReplicationGroup' :: ReplicationGroup -> Maybe ISO8601
authTokenLastModifiedDate} -> Maybe ISO8601
authTokenLastModifiedDate) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe ISO8601
a -> ReplicationGroup
s {$sel:authTokenLastModifiedDate:ReplicationGroup' :: Maybe ISO8601
authTokenLastModifiedDate = Maybe ISO8601
a} :: ReplicationGroup) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | If you are running Redis engine version 6.0 or later, set this
-- parameter to yes if you want to opt-in to the next auto minor version
-- upgrade campaign. This parameter is disabled for previous versions.
replicationGroup_autoMinorVersionUpgrade :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Bool)
replicationGroup_autoMinorVersionUpgrade :: Lens' ReplicationGroup (Maybe Bool)
replicationGroup_autoMinorVersionUpgrade = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Bool
autoMinorVersionUpgrade :: Maybe Bool
$sel:autoMinorVersionUpgrade:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
autoMinorVersionUpgrade} -> Maybe Bool
autoMinorVersionUpgrade) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Bool
a -> ReplicationGroup
s {$sel:autoMinorVersionUpgrade:ReplicationGroup' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
a} :: ReplicationGroup)

-- | Indicates the status of automatic failover for this Redis replication
-- group.
replicationGroup_automaticFailover :: Lens.Lens' ReplicationGroup (Prelude.Maybe AutomaticFailoverStatus)
replicationGroup_automaticFailover :: Lens' ReplicationGroup (Maybe AutomaticFailoverStatus)
replicationGroup_automaticFailover = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe AutomaticFailoverStatus
automaticFailover :: Maybe AutomaticFailoverStatus
$sel:automaticFailover:ReplicationGroup' :: ReplicationGroup -> Maybe AutomaticFailoverStatus
automaticFailover} -> Maybe AutomaticFailoverStatus
automaticFailover) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe AutomaticFailoverStatus
a -> ReplicationGroup
s {$sel:automaticFailover:ReplicationGroup' :: Maybe AutomaticFailoverStatus
automaticFailover = Maybe AutomaticFailoverStatus
a} :: ReplicationGroup)

-- | The name of the compute and memory capacity node type for each node in
-- the replication group.
replicationGroup_cacheNodeType :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Text)
replicationGroup_cacheNodeType :: Lens' ReplicationGroup (Maybe Text)
replicationGroup_cacheNodeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Text
cacheNodeType :: Maybe Text
$sel:cacheNodeType:ReplicationGroup' :: ReplicationGroup -> Maybe Text
cacheNodeType} -> Maybe Text
cacheNodeType) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Text
a -> ReplicationGroup
s {$sel:cacheNodeType:ReplicationGroup' :: Maybe Text
cacheNodeType = Maybe Text
a} :: ReplicationGroup)

-- | A flag indicating whether or not this replication group is cluster
-- enabled; i.e., whether its data can be partitioned across multiple
-- shards (API\/CLI: node groups).
--
-- Valid values: @true@ | @false@
replicationGroup_clusterEnabled :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Bool)
replicationGroup_clusterEnabled :: Lens' ReplicationGroup (Maybe Bool)
replicationGroup_clusterEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Bool
clusterEnabled :: Maybe Bool
$sel:clusterEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
clusterEnabled} -> Maybe Bool
clusterEnabled) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Bool
a -> ReplicationGroup
s {$sel:clusterEnabled:ReplicationGroup' :: Maybe Bool
clusterEnabled = Maybe Bool
a} :: ReplicationGroup)

-- | The configuration endpoint for this replication group. Use the
-- configuration endpoint to connect to this replication group.
replicationGroup_configurationEndpoint :: Lens.Lens' ReplicationGroup (Prelude.Maybe Endpoint)
replicationGroup_configurationEndpoint :: Lens' ReplicationGroup (Maybe Endpoint)
replicationGroup_configurationEndpoint = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Endpoint
configurationEndpoint :: Maybe Endpoint
$sel:configurationEndpoint:ReplicationGroup' :: ReplicationGroup -> Maybe Endpoint
configurationEndpoint} -> Maybe Endpoint
configurationEndpoint) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Endpoint
a -> ReplicationGroup
s {$sel:configurationEndpoint:ReplicationGroup' :: Maybe Endpoint
configurationEndpoint = Maybe Endpoint
a} :: ReplicationGroup)

-- | Enables data tiering. Data tiering is only supported for replication
-- groups using the r6gd node type. This parameter must be set to true when
-- using r6gd nodes. For more information, see
-- <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/data-tiering.html Data tiering>.
replicationGroup_dataTiering :: Lens.Lens' ReplicationGroup (Prelude.Maybe DataTieringStatus)
replicationGroup_dataTiering :: Lens' ReplicationGroup (Maybe DataTieringStatus)
replicationGroup_dataTiering = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe DataTieringStatus
dataTiering :: Maybe DataTieringStatus
$sel:dataTiering:ReplicationGroup' :: ReplicationGroup -> Maybe DataTieringStatus
dataTiering} -> Maybe DataTieringStatus
dataTiering) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe DataTieringStatus
a -> ReplicationGroup
s {$sel:dataTiering:ReplicationGroup' :: Maybe DataTieringStatus
dataTiering = Maybe DataTieringStatus
a} :: ReplicationGroup)

-- | The user supplied description of the replication group.
replicationGroup_description :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Text)
replicationGroup_description :: Lens' ReplicationGroup (Maybe Text)
replicationGroup_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Text
description :: Maybe Text
$sel:description:ReplicationGroup' :: ReplicationGroup -> Maybe Text
description} -> Maybe Text
description) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Text
a -> ReplicationGroup
s {$sel:description:ReplicationGroup' :: Maybe Text
description = Maybe Text
a} :: ReplicationGroup)

-- | The name of the Global datastore and role of this replication group in
-- the Global datastore.
replicationGroup_globalReplicationGroupInfo :: Lens.Lens' ReplicationGroup (Prelude.Maybe GlobalReplicationGroupInfo)
replicationGroup_globalReplicationGroupInfo :: Lens' ReplicationGroup (Maybe GlobalReplicationGroupInfo)
replicationGroup_globalReplicationGroupInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe GlobalReplicationGroupInfo
globalReplicationGroupInfo :: Maybe GlobalReplicationGroupInfo
$sel:globalReplicationGroupInfo:ReplicationGroup' :: ReplicationGroup -> Maybe GlobalReplicationGroupInfo
globalReplicationGroupInfo} -> Maybe GlobalReplicationGroupInfo
globalReplicationGroupInfo) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe GlobalReplicationGroupInfo
a -> ReplicationGroup
s {$sel:globalReplicationGroupInfo:ReplicationGroup' :: Maybe GlobalReplicationGroupInfo
globalReplicationGroupInfo = Maybe GlobalReplicationGroupInfo
a} :: ReplicationGroup)

-- | The network type you choose when modifying a cluster, either @ipv4@ |
-- @ipv6@. IPv6 is supported for workloads using Redis engine version 6.2
-- onward or Memcached engine version 1.6.6 on all instances built on the
-- <https://aws.amazon.com/ec2/nitro/ Nitro system>.
replicationGroup_ipDiscovery :: Lens.Lens' ReplicationGroup (Prelude.Maybe IpDiscovery)
replicationGroup_ipDiscovery :: Lens' ReplicationGroup (Maybe IpDiscovery)
replicationGroup_ipDiscovery = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe IpDiscovery
ipDiscovery :: Maybe IpDiscovery
$sel:ipDiscovery:ReplicationGroup' :: ReplicationGroup -> Maybe IpDiscovery
ipDiscovery} -> Maybe IpDiscovery
ipDiscovery) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe IpDiscovery
a -> ReplicationGroup
s {$sel:ipDiscovery:ReplicationGroup' :: Maybe IpDiscovery
ipDiscovery = Maybe IpDiscovery
a} :: ReplicationGroup)

-- | The ID of the KMS key used to encrypt the disk in the cluster.
replicationGroup_kmsKeyId :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Text)
replicationGroup_kmsKeyId :: Lens' ReplicationGroup (Maybe Text)
replicationGroup_kmsKeyId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Text
kmsKeyId :: Maybe Text
$sel:kmsKeyId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
kmsKeyId} -> Maybe Text
kmsKeyId) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Text
a -> ReplicationGroup
s {$sel:kmsKeyId:ReplicationGroup' :: Maybe Text
kmsKeyId = Maybe Text
a} :: ReplicationGroup)

-- | Returns the destination, format and type of the logs.
replicationGroup_logDeliveryConfigurations :: Lens.Lens' ReplicationGroup (Prelude.Maybe [LogDeliveryConfiguration])
replicationGroup_logDeliveryConfigurations :: Lens' ReplicationGroup (Maybe [LogDeliveryConfiguration])
replicationGroup_logDeliveryConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations :: Maybe [LogDeliveryConfiguration]
$sel:logDeliveryConfigurations:ReplicationGroup' :: ReplicationGroup -> Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations} -> Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe [LogDeliveryConfiguration]
a -> ReplicationGroup
s {$sel:logDeliveryConfigurations:ReplicationGroup' :: Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations = Maybe [LogDeliveryConfiguration]
a} :: ReplicationGroup) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The names of all the cache clusters that are part of this replication
-- group.
replicationGroup_memberClusters :: Lens.Lens' ReplicationGroup (Prelude.Maybe [Prelude.Text])
replicationGroup_memberClusters :: Lens' ReplicationGroup (Maybe [Text])
replicationGroup_memberClusters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe [Text]
memberClusters :: Maybe [Text]
$sel:memberClusters:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
memberClusters} -> Maybe [Text]
memberClusters) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe [Text]
a -> ReplicationGroup
s {$sel:memberClusters:ReplicationGroup' :: Maybe [Text]
memberClusters = Maybe [Text]
a} :: ReplicationGroup) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The outpost ARNs of the replication group\'s member clusters.
replicationGroup_memberClustersOutpostArns :: Lens.Lens' ReplicationGroup (Prelude.Maybe [Prelude.Text])
replicationGroup_memberClustersOutpostArns :: Lens' ReplicationGroup (Maybe [Text])
replicationGroup_memberClustersOutpostArns = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe [Text]
memberClustersOutpostArns :: Maybe [Text]
$sel:memberClustersOutpostArns:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
memberClustersOutpostArns} -> Maybe [Text]
memberClustersOutpostArns) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe [Text]
a -> ReplicationGroup
s {$sel:memberClustersOutpostArns:ReplicationGroup' :: Maybe [Text]
memberClustersOutpostArns = Maybe [Text]
a} :: ReplicationGroup) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A flag indicating if you have Multi-AZ enabled to enhance fault
-- tolerance. For more information, see
-- <http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html Minimizing Downtime: Multi-AZ>
replicationGroup_multiAZ :: Lens.Lens' ReplicationGroup (Prelude.Maybe MultiAZStatus)
replicationGroup_multiAZ :: Lens' ReplicationGroup (Maybe MultiAZStatus)
replicationGroup_multiAZ = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe MultiAZStatus
multiAZ :: Maybe MultiAZStatus
$sel:multiAZ:ReplicationGroup' :: ReplicationGroup -> Maybe MultiAZStatus
multiAZ} -> Maybe MultiAZStatus
multiAZ) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe MultiAZStatus
a -> ReplicationGroup
s {$sel:multiAZ:ReplicationGroup' :: Maybe MultiAZStatus
multiAZ = Maybe MultiAZStatus
a} :: ReplicationGroup)

-- | Must be either @ipv4@ | @ipv6@ | @dual_stack@. IPv6 is supported for
-- workloads using Redis engine version 6.2 onward or Memcached engine
-- version 1.6.6 on all instances built on the
-- <https://aws.amazon.com/ec2/nitro/ Nitro system>.
replicationGroup_networkType :: Lens.Lens' ReplicationGroup (Prelude.Maybe NetworkType)
replicationGroup_networkType :: Lens' ReplicationGroup (Maybe NetworkType)
replicationGroup_networkType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe NetworkType
networkType :: Maybe NetworkType
$sel:networkType:ReplicationGroup' :: ReplicationGroup -> Maybe NetworkType
networkType} -> Maybe NetworkType
networkType) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe NetworkType
a -> ReplicationGroup
s {$sel:networkType:ReplicationGroup' :: Maybe NetworkType
networkType = Maybe NetworkType
a} :: ReplicationGroup)

-- | A list of node groups in this replication group. For Redis (cluster mode
-- disabled) replication groups, this is a single-element list. For Redis
-- (cluster mode enabled) replication groups, the list contains an entry
-- for each node group (shard).
replicationGroup_nodeGroups :: Lens.Lens' ReplicationGroup (Prelude.Maybe [NodeGroup])
replicationGroup_nodeGroups :: Lens' ReplicationGroup (Maybe [NodeGroup])
replicationGroup_nodeGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe [NodeGroup]
nodeGroups :: Maybe [NodeGroup]
$sel:nodeGroups:ReplicationGroup' :: ReplicationGroup -> Maybe [NodeGroup]
nodeGroups} -> Maybe [NodeGroup]
nodeGroups) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe [NodeGroup]
a -> ReplicationGroup
s {$sel:nodeGroups:ReplicationGroup' :: Maybe [NodeGroup]
nodeGroups = Maybe [NodeGroup]
a} :: ReplicationGroup) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A group of settings to be applied to the replication group, either
-- immediately or during the next maintenance window.
replicationGroup_pendingModifiedValues :: Lens.Lens' ReplicationGroup (Prelude.Maybe ReplicationGroupPendingModifiedValues)
replicationGroup_pendingModifiedValues :: Lens'
  ReplicationGroup (Maybe ReplicationGroupPendingModifiedValues)
replicationGroup_pendingModifiedValues = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe ReplicationGroupPendingModifiedValues
pendingModifiedValues :: Maybe ReplicationGroupPendingModifiedValues
$sel:pendingModifiedValues:ReplicationGroup' :: ReplicationGroup -> Maybe ReplicationGroupPendingModifiedValues
pendingModifiedValues} -> Maybe ReplicationGroupPendingModifiedValues
pendingModifiedValues) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe ReplicationGroupPendingModifiedValues
a -> ReplicationGroup
s {$sel:pendingModifiedValues:ReplicationGroup' :: Maybe ReplicationGroupPendingModifiedValues
pendingModifiedValues = Maybe ReplicationGroupPendingModifiedValues
a} :: ReplicationGroup)

-- | The date and time when the cluster was created.
replicationGroup_replicationGroupCreateTime :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.UTCTime)
replicationGroup_replicationGroupCreateTime :: Lens' ReplicationGroup (Maybe UTCTime)
replicationGroup_replicationGroupCreateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe ISO8601
replicationGroupCreateTime :: Maybe ISO8601
$sel:replicationGroupCreateTime:ReplicationGroup' :: ReplicationGroup -> Maybe ISO8601
replicationGroupCreateTime} -> Maybe ISO8601
replicationGroupCreateTime) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe ISO8601
a -> ReplicationGroup
s {$sel:replicationGroupCreateTime:ReplicationGroup' :: Maybe ISO8601
replicationGroupCreateTime = Maybe ISO8601
a} :: ReplicationGroup) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The identifier for the replication group.
replicationGroup_replicationGroupId :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Text)
replicationGroup_replicationGroupId :: Lens' ReplicationGroup (Maybe Text)
replicationGroup_replicationGroupId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Text
replicationGroupId :: Maybe Text
$sel:replicationGroupId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
replicationGroupId} -> Maybe Text
replicationGroupId) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Text
a -> ReplicationGroup
s {$sel:replicationGroupId:ReplicationGroup' :: Maybe Text
replicationGroupId = Maybe Text
a} :: ReplicationGroup)

-- | The number of days for which ElastiCache retains automatic cluster
-- snapshots before deleting them. For example, if you set
-- @SnapshotRetentionLimit@ to 5, a snapshot that was taken today is
-- retained for 5 days before being deleted.
--
-- If the value of @SnapshotRetentionLimit@ is set to zero (0), backups are
-- turned off.
replicationGroup_snapshotRetentionLimit :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Int)
replicationGroup_snapshotRetentionLimit :: Lens' ReplicationGroup (Maybe Int)
replicationGroup_snapshotRetentionLimit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Int
snapshotRetentionLimit :: Maybe Int
$sel:snapshotRetentionLimit:ReplicationGroup' :: ReplicationGroup -> Maybe Int
snapshotRetentionLimit} -> Maybe Int
snapshotRetentionLimit) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Int
a -> ReplicationGroup
s {$sel:snapshotRetentionLimit:ReplicationGroup' :: Maybe Int
snapshotRetentionLimit = Maybe Int
a} :: ReplicationGroup)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
-- daily snapshot of your node group (shard).
--
-- Example: @05:00-09:00@
--
-- If you do not specify this parameter, ElastiCache automatically chooses
-- an appropriate time range.
--
-- This parameter is only valid if the @Engine@ parameter is @redis@.
replicationGroup_snapshotWindow :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Text)
replicationGroup_snapshotWindow :: Lens' ReplicationGroup (Maybe Text)
replicationGroup_snapshotWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Text
snapshotWindow :: Maybe Text
$sel:snapshotWindow:ReplicationGroup' :: ReplicationGroup -> Maybe Text
snapshotWindow} -> Maybe Text
snapshotWindow) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Text
a -> ReplicationGroup
s {$sel:snapshotWindow:ReplicationGroup' :: Maybe Text
snapshotWindow = Maybe Text
a} :: ReplicationGroup)

-- | The cluster ID that is used as the daily snapshot source for the
-- replication group.
replicationGroup_snapshottingClusterId :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Text)
replicationGroup_snapshottingClusterId :: Lens' ReplicationGroup (Maybe Text)
replicationGroup_snapshottingClusterId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Text
snapshottingClusterId :: Maybe Text
$sel:snapshottingClusterId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
snapshottingClusterId} -> Maybe Text
snapshottingClusterId) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Text
a -> ReplicationGroup
s {$sel:snapshottingClusterId:ReplicationGroup' :: Maybe Text
snapshottingClusterId = Maybe Text
a} :: ReplicationGroup)

-- | The current state of this replication group - @creating@, @available@,
-- @modifying@, @deleting@, @create-failed@, @snapshotting@.
replicationGroup_status :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Text)
replicationGroup_status :: Lens' ReplicationGroup (Maybe Text)
replicationGroup_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Text
status :: Maybe Text
$sel:status:ReplicationGroup' :: ReplicationGroup -> Maybe Text
status} -> Maybe Text
status) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Text
a -> ReplicationGroup
s {$sel:status:ReplicationGroup' :: Maybe Text
status = Maybe Text
a} :: ReplicationGroup)

-- | A flag that enables in-transit encryption when set to @true@.
--
-- __Required:__ Only available when creating a replication group in an
-- Amazon VPC using redis version @3.2.6@, @4.x@ or later.
--
-- Default: @false@
replicationGroup_transitEncryptionEnabled :: Lens.Lens' ReplicationGroup (Prelude.Maybe Prelude.Bool)
replicationGroup_transitEncryptionEnabled :: Lens' ReplicationGroup (Maybe Bool)
replicationGroup_transitEncryptionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe Bool
transitEncryptionEnabled :: Maybe Bool
$sel:transitEncryptionEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
transitEncryptionEnabled} -> Maybe Bool
transitEncryptionEnabled) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe Bool
a -> ReplicationGroup
s {$sel:transitEncryptionEnabled:ReplicationGroup' :: Maybe Bool
transitEncryptionEnabled = Maybe Bool
a} :: ReplicationGroup)

-- | A setting that allows you to migrate your clients to use in-transit
-- encryption, with no downtime.
replicationGroup_transitEncryptionMode :: Lens.Lens' ReplicationGroup (Prelude.Maybe TransitEncryptionMode)
replicationGroup_transitEncryptionMode :: Lens' ReplicationGroup (Maybe TransitEncryptionMode)
replicationGroup_transitEncryptionMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe TransitEncryptionMode
transitEncryptionMode :: Maybe TransitEncryptionMode
$sel:transitEncryptionMode:ReplicationGroup' :: ReplicationGroup -> Maybe TransitEncryptionMode
transitEncryptionMode} -> Maybe TransitEncryptionMode
transitEncryptionMode) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe TransitEncryptionMode
a -> ReplicationGroup
s {$sel:transitEncryptionMode:ReplicationGroup' :: Maybe TransitEncryptionMode
transitEncryptionMode = Maybe TransitEncryptionMode
a} :: ReplicationGroup)

-- | The ID of the user group associated to the replication group.
replicationGroup_userGroupIds :: Lens.Lens' ReplicationGroup (Prelude.Maybe [Prelude.Text])
replicationGroup_userGroupIds :: Lens' ReplicationGroup (Maybe [Text])
replicationGroup_userGroupIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReplicationGroup' {Maybe [Text]
userGroupIds :: Maybe [Text]
$sel:userGroupIds:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
userGroupIds} -> Maybe [Text]
userGroupIds) (\s :: ReplicationGroup
s@ReplicationGroup' {} Maybe [Text]
a -> ReplicationGroup
s {$sel:userGroupIds:ReplicationGroup' :: Maybe [Text]
userGroupIds = Maybe [Text]
a} :: ReplicationGroup) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromXML ReplicationGroup where
  parseXML :: [Node] -> Either String ReplicationGroup
parseXML [Node]
x =
    Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Bool
-> Maybe AutomaticFailoverStatus
-> Maybe Text
-> Maybe Bool
-> Maybe Endpoint
-> Maybe DataTieringStatus
-> Maybe Text
-> Maybe GlobalReplicationGroupInfo
-> Maybe IpDiscovery
-> Maybe Text
-> Maybe [LogDeliveryConfiguration]
-> Maybe [Text]
-> Maybe [Text]
-> Maybe MultiAZStatus
-> Maybe NetworkType
-> Maybe [NodeGroup]
-> Maybe ReplicationGroupPendingModifiedValues
-> Maybe ISO8601
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe TransitEncryptionMode
-> Maybe [Text]
-> ReplicationGroup
ReplicationGroup'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ARN")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AtRestEncryptionEnabled")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AuthTokenEnabled")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AuthTokenLastModifiedDate")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AutoMinorVersionUpgrade")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AutomaticFailover")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"CacheNodeType")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ClusterEnabled")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ConfigurationEndpoint")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"DataTiering")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Description")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"GlobalReplicationGroupInfo")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"IpDiscovery")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"KmsKeyId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"LogDeliveryConfigurations"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may
                        (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"LogDeliveryConfiguration")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"MemberClusters"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"ClusterId")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"MemberClustersOutpostArns"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may
                        (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"ReplicationGroupOutpostArn")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"MultiAZ")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NetworkType")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NodeGroups"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"NodeGroup")
                  )
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"PendingModifiedValues")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ReplicationGroupCreateTime")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ReplicationGroupId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"SnapshotRetentionLimit")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"SnapshotWindow")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"SnapshottingClusterId")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Status")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TransitEncryptionEnabled")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"TransitEncryptionMode")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                      forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"UserGroupIds"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )

instance Prelude.Hashable ReplicationGroup where
  hashWithSalt :: Int -> ReplicationGroup -> Int
hashWithSalt Int
_salt ReplicationGroup' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [LogDeliveryConfiguration]
Maybe [NodeGroup]
Maybe Text
Maybe ISO8601
Maybe AutomaticFailoverStatus
Maybe DataTieringStatus
Maybe Endpoint
Maybe GlobalReplicationGroupInfo
Maybe IpDiscovery
Maybe MultiAZStatus
Maybe NetworkType
Maybe TransitEncryptionMode
Maybe ReplicationGroupPendingModifiedValues
userGroupIds :: Maybe [Text]
transitEncryptionMode :: Maybe TransitEncryptionMode
transitEncryptionEnabled :: Maybe Bool
status :: Maybe Text
snapshottingClusterId :: Maybe Text
snapshotWindow :: Maybe Text
snapshotRetentionLimit :: Maybe Int
replicationGroupId :: Maybe Text
replicationGroupCreateTime :: Maybe ISO8601
pendingModifiedValues :: Maybe ReplicationGroupPendingModifiedValues
nodeGroups :: Maybe [NodeGroup]
networkType :: Maybe NetworkType
multiAZ :: Maybe MultiAZStatus
memberClustersOutpostArns :: Maybe [Text]
memberClusters :: Maybe [Text]
logDeliveryConfigurations :: Maybe [LogDeliveryConfiguration]
kmsKeyId :: Maybe Text
ipDiscovery :: Maybe IpDiscovery
globalReplicationGroupInfo :: Maybe GlobalReplicationGroupInfo
description :: Maybe Text
dataTiering :: Maybe DataTieringStatus
configurationEndpoint :: Maybe Endpoint
clusterEnabled :: Maybe Bool
cacheNodeType :: Maybe Text
automaticFailover :: Maybe AutomaticFailoverStatus
autoMinorVersionUpgrade :: Maybe Bool
authTokenLastModifiedDate :: Maybe ISO8601
authTokenEnabled :: Maybe Bool
atRestEncryptionEnabled :: Maybe Bool
arn :: Maybe Text
$sel:userGroupIds:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
$sel:transitEncryptionMode:ReplicationGroup' :: ReplicationGroup -> Maybe TransitEncryptionMode
$sel:transitEncryptionEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:status:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:snapshottingClusterId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:snapshotWindow:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:snapshotRetentionLimit:ReplicationGroup' :: ReplicationGroup -> Maybe Int
$sel:replicationGroupId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:replicationGroupCreateTime:ReplicationGroup' :: ReplicationGroup -> Maybe ISO8601
$sel:pendingModifiedValues:ReplicationGroup' :: ReplicationGroup -> Maybe ReplicationGroupPendingModifiedValues
$sel:nodeGroups:ReplicationGroup' :: ReplicationGroup -> Maybe [NodeGroup]
$sel:networkType:ReplicationGroup' :: ReplicationGroup -> Maybe NetworkType
$sel:multiAZ:ReplicationGroup' :: ReplicationGroup -> Maybe MultiAZStatus
$sel:memberClustersOutpostArns:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
$sel:memberClusters:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
$sel:logDeliveryConfigurations:ReplicationGroup' :: ReplicationGroup -> Maybe [LogDeliveryConfiguration]
$sel:kmsKeyId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:ipDiscovery:ReplicationGroup' :: ReplicationGroup -> Maybe IpDiscovery
$sel:globalReplicationGroupInfo:ReplicationGroup' :: ReplicationGroup -> Maybe GlobalReplicationGroupInfo
$sel:description:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:dataTiering:ReplicationGroup' :: ReplicationGroup -> Maybe DataTieringStatus
$sel:configurationEndpoint:ReplicationGroup' :: ReplicationGroup -> Maybe Endpoint
$sel:clusterEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:cacheNodeType:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:automaticFailover:ReplicationGroup' :: ReplicationGroup -> Maybe AutomaticFailoverStatus
$sel:autoMinorVersionUpgrade:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:authTokenLastModifiedDate:ReplicationGroup' :: ReplicationGroup -> Maybe ISO8601
$sel:authTokenEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:atRestEncryptionEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:arn:ReplicationGroup' :: ReplicationGroup -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
atRestEncryptionEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
authTokenEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
authTokenLastModifiedDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
autoMinorVersionUpgrade
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AutomaticFailoverStatus
automaticFailover
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
cacheNodeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
clusterEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Endpoint
configurationEndpoint
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataTieringStatus
dataTiering
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe GlobalReplicationGroupInfo
globalReplicationGroupInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IpDiscovery
ipDiscovery
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kmsKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
memberClusters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
memberClustersOutpostArns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MultiAZStatus
multiAZ
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NetworkType
networkType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [NodeGroup]
nodeGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReplicationGroupPendingModifiedValues
pendingModifiedValues
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
replicationGroupCreateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationGroupId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
snapshotRetentionLimit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
snapshotWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
snapshottingClusterId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
transitEncryptionEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TransitEncryptionMode
transitEncryptionMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
userGroupIds

instance Prelude.NFData ReplicationGroup where
  rnf :: ReplicationGroup -> ()
rnf ReplicationGroup' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [LogDeliveryConfiguration]
Maybe [NodeGroup]
Maybe Text
Maybe ISO8601
Maybe AutomaticFailoverStatus
Maybe DataTieringStatus
Maybe Endpoint
Maybe GlobalReplicationGroupInfo
Maybe IpDiscovery
Maybe MultiAZStatus
Maybe NetworkType
Maybe TransitEncryptionMode
Maybe ReplicationGroupPendingModifiedValues
userGroupIds :: Maybe [Text]
transitEncryptionMode :: Maybe TransitEncryptionMode
transitEncryptionEnabled :: Maybe Bool
status :: Maybe Text
snapshottingClusterId :: Maybe Text
snapshotWindow :: Maybe Text
snapshotRetentionLimit :: Maybe Int
replicationGroupId :: Maybe Text
replicationGroupCreateTime :: Maybe ISO8601
pendingModifiedValues :: Maybe ReplicationGroupPendingModifiedValues
nodeGroups :: Maybe [NodeGroup]
networkType :: Maybe NetworkType
multiAZ :: Maybe MultiAZStatus
memberClustersOutpostArns :: Maybe [Text]
memberClusters :: Maybe [Text]
logDeliveryConfigurations :: Maybe [LogDeliveryConfiguration]
kmsKeyId :: Maybe Text
ipDiscovery :: Maybe IpDiscovery
globalReplicationGroupInfo :: Maybe GlobalReplicationGroupInfo
description :: Maybe Text
dataTiering :: Maybe DataTieringStatus
configurationEndpoint :: Maybe Endpoint
clusterEnabled :: Maybe Bool
cacheNodeType :: Maybe Text
automaticFailover :: Maybe AutomaticFailoverStatus
autoMinorVersionUpgrade :: Maybe Bool
authTokenLastModifiedDate :: Maybe ISO8601
authTokenEnabled :: Maybe Bool
atRestEncryptionEnabled :: Maybe Bool
arn :: Maybe Text
$sel:userGroupIds:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
$sel:transitEncryptionMode:ReplicationGroup' :: ReplicationGroup -> Maybe TransitEncryptionMode
$sel:transitEncryptionEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:status:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:snapshottingClusterId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:snapshotWindow:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:snapshotRetentionLimit:ReplicationGroup' :: ReplicationGroup -> Maybe Int
$sel:replicationGroupId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:replicationGroupCreateTime:ReplicationGroup' :: ReplicationGroup -> Maybe ISO8601
$sel:pendingModifiedValues:ReplicationGroup' :: ReplicationGroup -> Maybe ReplicationGroupPendingModifiedValues
$sel:nodeGroups:ReplicationGroup' :: ReplicationGroup -> Maybe [NodeGroup]
$sel:networkType:ReplicationGroup' :: ReplicationGroup -> Maybe NetworkType
$sel:multiAZ:ReplicationGroup' :: ReplicationGroup -> Maybe MultiAZStatus
$sel:memberClustersOutpostArns:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
$sel:memberClusters:ReplicationGroup' :: ReplicationGroup -> Maybe [Text]
$sel:logDeliveryConfigurations:ReplicationGroup' :: ReplicationGroup -> Maybe [LogDeliveryConfiguration]
$sel:kmsKeyId:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:ipDiscovery:ReplicationGroup' :: ReplicationGroup -> Maybe IpDiscovery
$sel:globalReplicationGroupInfo:ReplicationGroup' :: ReplicationGroup -> Maybe GlobalReplicationGroupInfo
$sel:description:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:dataTiering:ReplicationGroup' :: ReplicationGroup -> Maybe DataTieringStatus
$sel:configurationEndpoint:ReplicationGroup' :: ReplicationGroup -> Maybe Endpoint
$sel:clusterEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:cacheNodeType:ReplicationGroup' :: ReplicationGroup -> Maybe Text
$sel:automaticFailover:ReplicationGroup' :: ReplicationGroup -> Maybe AutomaticFailoverStatus
$sel:autoMinorVersionUpgrade:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:authTokenLastModifiedDate:ReplicationGroup' :: ReplicationGroup -> Maybe ISO8601
$sel:authTokenEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:atRestEncryptionEnabled:ReplicationGroup' :: ReplicationGroup -> Maybe Bool
$sel:arn:ReplicationGroup' :: ReplicationGroup -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
atRestEncryptionEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
authTokenEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
authTokenLastModifiedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
autoMinorVersionUpgrade
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AutomaticFailoverStatus
automaticFailover
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
cacheNodeType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
clusterEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Endpoint
configurationEndpoint
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataTieringStatus
dataTiering
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe GlobalReplicationGroupInfo
globalReplicationGroupInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IpDiscovery
ipDiscovery
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
memberClusters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
memberClustersOutpostArns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MultiAZStatus
multiAZ
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NetworkType
networkType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [NodeGroup]
nodeGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ReplicationGroupPendingModifiedValues
pendingModifiedValues
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe ISO8601
replicationGroupCreateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
replicationGroupId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
snapshotRetentionLimit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
snapshotWindow
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
snapshottingClusterId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
transitEncryptionEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe TransitEncryptionMode
transitEncryptionMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [Text]
userGroupIds