{-# 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.CacheCluster
-- 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.CacheCluster 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.CacheNode
import Amazonka.ElastiCache.Types.CacheParameterGroupStatus
import Amazonka.ElastiCache.Types.CacheSecurityGroupMembership
import Amazonka.ElastiCache.Types.Endpoint
import Amazonka.ElastiCache.Types.IpDiscovery
import Amazonka.ElastiCache.Types.LogDeliveryConfiguration
import Amazonka.ElastiCache.Types.NetworkType
import Amazonka.ElastiCache.Types.NotificationConfiguration
import Amazonka.ElastiCache.Types.PendingModifiedValues
import Amazonka.ElastiCache.Types.SecurityGroupMembership
import Amazonka.ElastiCache.Types.TransitEncryptionMode
import qualified Amazonka.Prelude as Prelude

-- | Contains all of the attributes of a specific cluster.
--
-- /See:/ 'newCacheCluster' smart constructor.
data CacheCluster = CacheCluster'
  { -- | The ARN (Amazon Resource Name) of the cache cluster.
    CacheCluster -> 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 at-rest encryption 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@
    CacheCluster -> Maybe Bool
atRestEncryptionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | A flag that enables using an @AuthToken@ (password) when issuing Redis
    -- commands.
    --
    -- Default: @false@
    CacheCluster -> Maybe Bool
authTokenEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The date the auth token was last modified
    CacheCluster -> 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.
    CacheCluster -> Maybe Bool
autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | The date and time when the cluster was created.
    CacheCluster -> Maybe ISO8601
cacheClusterCreateTime :: Prelude.Maybe Data.ISO8601,
    -- | The user-supplied identifier of the cluster. This identifier is a unique
    -- key that identifies a cluster.
    CacheCluster -> Maybe Text
cacheClusterId :: Prelude.Maybe Prelude.Text,
    -- | The current state of this cluster, one of the following values:
    -- @available@, @creating@, @deleted@, @deleting@, @incompatible-network@,
    -- @modifying@, @rebooting cluster nodes@, @restore-failed@, or
    -- @snapshotting@.
    CacheCluster -> Maybe Text
cacheClusterStatus :: Prelude.Maybe Prelude.Text,
    -- | The name of the compute and memory capacity node type for the cluster.
    --
    -- The following node types are supported by ElastiCache. Generally
    -- speaking, the current generation types provide more memory and
    -- computational power at lower cost when compared to their equivalent
    -- previous generation counterparts.
    --
    -- -   General purpose:
    --
    --     -   Current generation:
    --
    --         __M6g node types__ (available only for Redis engine version
    --         5.0.6 onward and for Memcached engine version 1.5.16 onward):
    --         @cache.m6g.large@, @cache.m6g.xlarge@, @cache.m6g.2xlarge@,
    --         @cache.m6g.4xlarge@, @cache.m6g.8xlarge@, @cache.m6g.12xlarge@,
    --         @cache.m6g.16xlarge@
    --
    --         For region availability, see
    --         <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion Supported Node Types>
    --
    --         __M5 node types:__ @cache.m5.large@, @cache.m5.xlarge@,
    --         @cache.m5.2xlarge@, @cache.m5.4xlarge@, @cache.m5.12xlarge@,
    --         @cache.m5.24xlarge@
    --
    --         __M4 node types:__ @cache.m4.large@, @cache.m4.xlarge@,
    --         @cache.m4.2xlarge@, @cache.m4.4xlarge@, @cache.m4.10xlarge@
    --
    --         __T4g node types__ (available only for Redis engine version
    --         5.0.6 onward and Memcached engine version 1.5.16 onward):
    --         @cache.t4g.micro@, @cache.t4g.small@, @cache.t4g.medium@
    --
    --         __T3 node types:__ @cache.t3.micro@, @cache.t3.small@,
    --         @cache.t3.medium@
    --
    --         __T2 node types:__ @cache.t2.micro@, @cache.t2.small@,
    --         @cache.t2.medium@
    --
    --     -   Previous generation: (not recommended. Existing clusters are
    --         still supported but creation of new clusters is not supported
    --         for these types.)
    --
    --         __T1 node types:__ @cache.t1.micro@
    --
    --         __M1 node types:__ @cache.m1.small@, @cache.m1.medium@,
    --         @cache.m1.large@, @cache.m1.xlarge@
    --
    --         __M3 node types:__ @cache.m3.medium@, @cache.m3.large@,
    --         @cache.m3.xlarge@, @cache.m3.2xlarge@
    --
    -- -   Compute optimized:
    --
    --     -   Previous generation: (not recommended. Existing clusters are
    --         still supported but creation of new clusters is not supported
    --         for these types.)
    --
    --         __C1 node types:__ @cache.c1.xlarge@
    --
    -- -   Memory optimized:
    --
    --     -   Current generation:
    --
    --         __R6g node types__ (available only for Redis engine version
    --         5.0.6 onward and for Memcached engine version 1.5.16 onward).
    --
    --         @cache.r6g.large@, @cache.r6g.xlarge@, @cache.r6g.2xlarge@,
    --         @cache.r6g.4xlarge@, @cache.r6g.8xlarge@, @cache.r6g.12xlarge@,
    --         @cache.r6g.16xlarge@
    --
    --         For region availability, see
    --         <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion Supported Node Types>
    --
    --         __R5 node types:__ @cache.r5.large@, @cache.r5.xlarge@,
    --         @cache.r5.2xlarge@, @cache.r5.4xlarge@, @cache.r5.12xlarge@,
    --         @cache.r5.24xlarge@
    --
    --         __R4 node types:__ @cache.r4.large@, @cache.r4.xlarge@,
    --         @cache.r4.2xlarge@, @cache.r4.4xlarge@, @cache.r4.8xlarge@,
    --         @cache.r4.16xlarge@
    --
    --     -   Previous generation: (not recommended. Existing clusters are
    --         still supported but creation of new clusters is not supported
    --         for these types.)
    --
    --         __M2 node types:__ @cache.m2.xlarge@, @cache.m2.2xlarge@,
    --         @cache.m2.4xlarge@
    --
    --         __R3 node types:__ @cache.r3.large@, @cache.r3.xlarge@,
    --         @cache.r3.2xlarge@, @cache.r3.4xlarge@, @cache.r3.8xlarge@
    --
    -- __Additional node type info__
    --
    -- -   All current generation instance types are created in Amazon VPC by
    --     default.
    --
    -- -   Redis append-only files (AOF) are not supported for T1 or T2
    --     instances.
    --
    -- -   Redis Multi-AZ with automatic failover is not supported on T1
    --     instances.
    --
    -- -   Redis configuration variables @appendonly@ and @appendfsync@ are not
    --     supported on Redis version 2.8.22 and later.
    CacheCluster -> Maybe Text
cacheNodeType :: Prelude.Maybe Prelude.Text,
    -- | A list of cache nodes that are members of the cluster.
    CacheCluster -> Maybe [CacheNode]
cacheNodes :: Prelude.Maybe [CacheNode],
    -- | Status of the cache parameter group.
    CacheCluster -> Maybe CacheParameterGroupStatus
cacheParameterGroup :: Prelude.Maybe CacheParameterGroupStatus,
    -- | A list of cache security group elements, composed of name and status
    -- sub-elements.
    CacheCluster -> Maybe [CacheSecurityGroupMembership]
cacheSecurityGroups :: Prelude.Maybe [CacheSecurityGroupMembership],
    -- | The name of the cache subnet group associated with the cluster.
    CacheCluster -> Maybe Text
cacheSubnetGroupName :: Prelude.Maybe Prelude.Text,
    -- | The URL of the web page where you can download the latest ElastiCache
    -- client library.
    CacheCluster -> Maybe Text
clientDownloadLandingPage :: Prelude.Maybe Prelude.Text,
    -- | Represents a Memcached cluster endpoint which can be used by an
    -- application to connect to any node in the cluster. The configuration
    -- endpoint will always have @.cfg@ in it.
    --
    -- Example: @mem-3.9dvc4r@/@.cfg@/@.usw2.cache.amazonaws.com:11211@
    CacheCluster -> Maybe Endpoint
configurationEndpoint :: Prelude.Maybe Endpoint,
    -- | The name of the cache engine (@memcached@ or @redis@) to be used for
    -- this cluster.
    CacheCluster -> Maybe Text
engine :: Prelude.Maybe Prelude.Text,
    -- | The version of the cache engine that is used in this cluster.
    CacheCluster -> Maybe Text
engineVersion :: Prelude.Maybe Prelude.Text,
    -- | The network type associated with the 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>.
    CacheCluster -> Maybe IpDiscovery
ipDiscovery :: Prelude.Maybe IpDiscovery,
    -- | Returns the destination, format and type of the logs.
    CacheCluster -> Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations :: Prelude.Maybe [LogDeliveryConfiguration],
    -- | 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>.
    CacheCluster -> Maybe NetworkType
networkType :: Prelude.Maybe NetworkType,
    -- | Describes a notification topic and its status. Notification topics are
    -- used for publishing ElastiCache events to subscribers using Amazon
    -- Simple Notification Service (SNS).
    CacheCluster -> Maybe NotificationConfiguration
notificationConfiguration :: Prelude.Maybe NotificationConfiguration,
    -- | The number of cache nodes in the cluster.
    --
    -- For clusters running Redis, this value must be 1. For clusters running
    -- Memcached, this value must be between 1 and 40.
    CacheCluster -> Maybe Int
numCacheNodes :: Prelude.Maybe Prelude.Int,
    CacheCluster -> Maybe PendingModifiedValues
pendingModifiedValues :: Prelude.Maybe PendingModifiedValues,
    -- | The name of the Availability Zone in which the cluster is located or
    -- \"Multiple\" if the cache nodes are located in different Availability
    -- Zones.
    CacheCluster -> Maybe Text
preferredAvailabilityZone :: Prelude.Maybe Prelude.Text,
    -- | Specifies the weekly time range during which maintenance on the cluster
    -- is performed. It is specified as a range in the format
    -- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window
    -- is a 60 minute period.
    --
    -- Valid values for @ddd@ are:
    --
    -- -   @sun@
    --
    -- -   @mon@
    --
    -- -   @tue@
    --
    -- -   @wed@
    --
    -- -   @thu@
    --
    -- -   @fri@
    --
    -- -   @sat@
    --
    -- Example: @sun:23:00-mon:01:30@
    CacheCluster -> Maybe Text
preferredMaintenanceWindow :: Prelude.Maybe Prelude.Text,
    -- | The outpost ARN in which the cache cluster is created.
    CacheCluster -> Maybe Text
preferredOutpostArn :: Prelude.Maybe Prelude.Text,
    -- | The replication group to which this cluster belongs. If this field is
    -- empty, the cluster is not associated with any replication group.
    CacheCluster -> Maybe Text
replicationGroupId :: Prelude.Maybe Prelude.Text,
    -- | A boolean value indicating whether log delivery is enabled for the
    -- replication group.
    CacheCluster -> Maybe Bool
replicationGroupLogDeliveryEnabled :: Prelude.Maybe Prelude.Bool,
    -- | A list of VPC Security Groups associated with the cluster.
    CacheCluster -> Maybe [SecurityGroupMembership]
securityGroups :: Prelude.Maybe [SecurityGroupMembership],
    -- | 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.
    CacheCluster -> Maybe Int
snapshotRetentionLimit :: Prelude.Maybe Prelude.Int,
    -- | The daily time range (in UTC) during which ElastiCache begins taking a
    -- daily snapshot of your cluster.
    --
    -- Example: @05:00-09:00@
    CacheCluster -> Maybe Text
snapshotWindow :: 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@
    CacheCluster -> Maybe Bool
transitEncryptionEnabled :: Prelude.Maybe Prelude.Bool,
    -- | A setting that allows you to migrate your clients to use in-transit
    -- encryption, with no downtime.
    CacheCluster -> Maybe TransitEncryptionMode
transitEncryptionMode :: Prelude.Maybe TransitEncryptionMode
  }
  deriving (CacheCluster -> CacheCluster -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CacheCluster -> CacheCluster -> Bool
$c/= :: CacheCluster -> CacheCluster -> Bool
== :: CacheCluster -> CacheCluster -> Bool
$c== :: CacheCluster -> CacheCluster -> Bool
Prelude.Eq, ReadPrec [CacheCluster]
ReadPrec CacheCluster
Int -> ReadS CacheCluster
ReadS [CacheCluster]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CacheCluster]
$creadListPrec :: ReadPrec [CacheCluster]
readPrec :: ReadPrec CacheCluster
$creadPrec :: ReadPrec CacheCluster
readList :: ReadS [CacheCluster]
$creadList :: ReadS [CacheCluster]
readsPrec :: Int -> ReadS CacheCluster
$creadsPrec :: Int -> ReadS CacheCluster
Prelude.Read, Int -> CacheCluster -> ShowS
[CacheCluster] -> ShowS
CacheCluster -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CacheCluster] -> ShowS
$cshowList :: [CacheCluster] -> ShowS
show :: CacheCluster -> String
$cshow :: CacheCluster -> String
showsPrec :: Int -> CacheCluster -> ShowS
$cshowsPrec :: Int -> CacheCluster -> ShowS
Prelude.Show, forall x. Rep CacheCluster x -> CacheCluster
forall x. CacheCluster -> Rep CacheCluster x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CacheCluster x -> CacheCluster
$cfrom :: forall x. CacheCluster -> Rep CacheCluster x
Prelude.Generic)

-- |
-- Create a value of 'CacheCluster' 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', 'cacheCluster_arn' - The ARN (Amazon Resource Name) of the cache cluster.
--
-- 'atRestEncryptionEnabled', 'cacheCluster_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 at-rest encryption 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', 'cacheCluster_authTokenEnabled' - A flag that enables using an @AuthToken@ (password) when issuing Redis
-- commands.
--
-- Default: @false@
--
-- 'authTokenLastModifiedDate', 'cacheCluster_authTokenLastModifiedDate' - The date the auth token was last modified
--
-- 'autoMinorVersionUpgrade', 'cacheCluster_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.
--
-- 'cacheClusterCreateTime', 'cacheCluster_cacheClusterCreateTime' - The date and time when the cluster was created.
--
-- 'cacheClusterId', 'cacheCluster_cacheClusterId' - The user-supplied identifier of the cluster. This identifier is a unique
-- key that identifies a cluster.
--
-- 'cacheClusterStatus', 'cacheCluster_cacheClusterStatus' - The current state of this cluster, one of the following values:
-- @available@, @creating@, @deleted@, @deleting@, @incompatible-network@,
-- @modifying@, @rebooting cluster nodes@, @restore-failed@, or
-- @snapshotting@.
--
-- 'cacheNodeType', 'cacheCluster_cacheNodeType' - The name of the compute and memory capacity node type for the cluster.
--
-- The following node types are supported by ElastiCache. Generally
-- speaking, the current generation types provide more memory and
-- computational power at lower cost when compared to their equivalent
-- previous generation counterparts.
--
-- -   General purpose:
--
--     -   Current generation:
--
--         __M6g node types__ (available only for Redis engine version
--         5.0.6 onward and for Memcached engine version 1.5.16 onward):
--         @cache.m6g.large@, @cache.m6g.xlarge@, @cache.m6g.2xlarge@,
--         @cache.m6g.4xlarge@, @cache.m6g.8xlarge@, @cache.m6g.12xlarge@,
--         @cache.m6g.16xlarge@
--
--         For region availability, see
--         <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion Supported Node Types>
--
--         __M5 node types:__ @cache.m5.large@, @cache.m5.xlarge@,
--         @cache.m5.2xlarge@, @cache.m5.4xlarge@, @cache.m5.12xlarge@,
--         @cache.m5.24xlarge@
--
--         __M4 node types:__ @cache.m4.large@, @cache.m4.xlarge@,
--         @cache.m4.2xlarge@, @cache.m4.4xlarge@, @cache.m4.10xlarge@
--
--         __T4g node types__ (available only for Redis engine version
--         5.0.6 onward and Memcached engine version 1.5.16 onward):
--         @cache.t4g.micro@, @cache.t4g.small@, @cache.t4g.medium@
--
--         __T3 node types:__ @cache.t3.micro@, @cache.t3.small@,
--         @cache.t3.medium@
--
--         __T2 node types:__ @cache.t2.micro@, @cache.t2.small@,
--         @cache.t2.medium@
--
--     -   Previous generation: (not recommended. Existing clusters are
--         still supported but creation of new clusters is not supported
--         for these types.)
--
--         __T1 node types:__ @cache.t1.micro@
--
--         __M1 node types:__ @cache.m1.small@, @cache.m1.medium@,
--         @cache.m1.large@, @cache.m1.xlarge@
--
--         __M3 node types:__ @cache.m3.medium@, @cache.m3.large@,
--         @cache.m3.xlarge@, @cache.m3.2xlarge@
--
-- -   Compute optimized:
--
--     -   Previous generation: (not recommended. Existing clusters are
--         still supported but creation of new clusters is not supported
--         for these types.)
--
--         __C1 node types:__ @cache.c1.xlarge@
--
-- -   Memory optimized:
--
--     -   Current generation:
--
--         __R6g node types__ (available only for Redis engine version
--         5.0.6 onward and for Memcached engine version 1.5.16 onward).
--
--         @cache.r6g.large@, @cache.r6g.xlarge@, @cache.r6g.2xlarge@,
--         @cache.r6g.4xlarge@, @cache.r6g.8xlarge@, @cache.r6g.12xlarge@,
--         @cache.r6g.16xlarge@
--
--         For region availability, see
--         <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion Supported Node Types>
--
--         __R5 node types:__ @cache.r5.large@, @cache.r5.xlarge@,
--         @cache.r5.2xlarge@, @cache.r5.4xlarge@, @cache.r5.12xlarge@,
--         @cache.r5.24xlarge@
--
--         __R4 node types:__ @cache.r4.large@, @cache.r4.xlarge@,
--         @cache.r4.2xlarge@, @cache.r4.4xlarge@, @cache.r4.8xlarge@,
--         @cache.r4.16xlarge@
--
--     -   Previous generation: (not recommended. Existing clusters are
--         still supported but creation of new clusters is not supported
--         for these types.)
--
--         __M2 node types:__ @cache.m2.xlarge@, @cache.m2.2xlarge@,
--         @cache.m2.4xlarge@
--
--         __R3 node types:__ @cache.r3.large@, @cache.r3.xlarge@,
--         @cache.r3.2xlarge@, @cache.r3.4xlarge@, @cache.r3.8xlarge@
--
-- __Additional node type info__
--
-- -   All current generation instance types are created in Amazon VPC by
--     default.
--
-- -   Redis append-only files (AOF) are not supported for T1 or T2
--     instances.
--
-- -   Redis Multi-AZ with automatic failover is not supported on T1
--     instances.
--
-- -   Redis configuration variables @appendonly@ and @appendfsync@ are not
--     supported on Redis version 2.8.22 and later.
--
-- 'cacheNodes', 'cacheCluster_cacheNodes' - A list of cache nodes that are members of the cluster.
--
-- 'cacheParameterGroup', 'cacheCluster_cacheParameterGroup' - Status of the cache parameter group.
--
-- 'cacheSecurityGroups', 'cacheCluster_cacheSecurityGroups' - A list of cache security group elements, composed of name and status
-- sub-elements.
--
-- 'cacheSubnetGroupName', 'cacheCluster_cacheSubnetGroupName' - The name of the cache subnet group associated with the cluster.
--
-- 'clientDownloadLandingPage', 'cacheCluster_clientDownloadLandingPage' - The URL of the web page where you can download the latest ElastiCache
-- client library.
--
-- 'configurationEndpoint', 'cacheCluster_configurationEndpoint' - Represents a Memcached cluster endpoint which can be used by an
-- application to connect to any node in the cluster. The configuration
-- endpoint will always have @.cfg@ in it.
--
-- Example: @mem-3.9dvc4r@/@.cfg@/@.usw2.cache.amazonaws.com:11211@
--
-- 'engine', 'cacheCluster_engine' - The name of the cache engine (@memcached@ or @redis@) to be used for
-- this cluster.
--
-- 'engineVersion', 'cacheCluster_engineVersion' - The version of the cache engine that is used in this cluster.
--
-- 'ipDiscovery', 'cacheCluster_ipDiscovery' - The network type associated with the 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>.
--
-- 'logDeliveryConfigurations', 'cacheCluster_logDeliveryConfigurations' - Returns the destination, format and type of the logs.
--
-- 'networkType', 'cacheCluster_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>.
--
-- 'notificationConfiguration', 'cacheCluster_notificationConfiguration' - Describes a notification topic and its status. Notification topics are
-- used for publishing ElastiCache events to subscribers using Amazon
-- Simple Notification Service (SNS).
--
-- 'numCacheNodes', 'cacheCluster_numCacheNodes' - The number of cache nodes in the cluster.
--
-- For clusters running Redis, this value must be 1. For clusters running
-- Memcached, this value must be between 1 and 40.
--
-- 'pendingModifiedValues', 'cacheCluster_pendingModifiedValues' - Undocumented member.
--
-- 'preferredAvailabilityZone', 'cacheCluster_preferredAvailabilityZone' - The name of the Availability Zone in which the cluster is located or
-- \"Multiple\" if the cache nodes are located in different Availability
-- Zones.
--
-- 'preferredMaintenanceWindow', 'cacheCluster_preferredMaintenanceWindow' - Specifies the weekly time range during which maintenance on the cluster
-- is performed. It is specified as a range in the format
-- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window
-- is a 60 minute period.
--
-- Valid values for @ddd@ are:
--
-- -   @sun@
--
-- -   @mon@
--
-- -   @tue@
--
-- -   @wed@
--
-- -   @thu@
--
-- -   @fri@
--
-- -   @sat@
--
-- Example: @sun:23:00-mon:01:30@
--
-- 'preferredOutpostArn', 'cacheCluster_preferredOutpostArn' - The outpost ARN in which the cache cluster is created.
--
-- 'replicationGroupId', 'cacheCluster_replicationGroupId' - The replication group to which this cluster belongs. If this field is
-- empty, the cluster is not associated with any replication group.
--
-- 'replicationGroupLogDeliveryEnabled', 'cacheCluster_replicationGroupLogDeliveryEnabled' - A boolean value indicating whether log delivery is enabled for the
-- replication group.
--
-- 'securityGroups', 'cacheCluster_securityGroups' - A list of VPC Security Groups associated with the cluster.
--
-- 'snapshotRetentionLimit', 'cacheCluster_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', 'cacheCluster_snapshotWindow' - The daily time range (in UTC) during which ElastiCache begins taking a
-- daily snapshot of your cluster.
--
-- Example: @05:00-09:00@
--
-- 'transitEncryptionEnabled', 'cacheCluster_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', 'cacheCluster_transitEncryptionMode' - A setting that allows you to migrate your clients to use in-transit
-- encryption, with no downtime.
newCacheCluster ::
  CacheCluster
newCacheCluster :: CacheCluster
newCacheCluster =
  CacheCluster'
    { $sel:arn:CacheCluster' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:atRestEncryptionEnabled:CacheCluster' :: Maybe Bool
atRestEncryptionEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:authTokenEnabled:CacheCluster' :: Maybe Bool
authTokenEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:authTokenLastModifiedDate:CacheCluster' :: Maybe ISO8601
authTokenLastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:autoMinorVersionUpgrade:CacheCluster' :: Maybe Bool
autoMinorVersionUpgrade = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterCreateTime:CacheCluster' :: Maybe ISO8601
cacheClusterCreateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterId:CacheCluster' :: Maybe Text
cacheClusterId = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheClusterStatus:CacheCluster' :: Maybe Text
cacheClusterStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheNodeType:CacheCluster' :: Maybe Text
cacheNodeType = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheNodes:CacheCluster' :: Maybe [CacheNode]
cacheNodes = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheParameterGroup:CacheCluster' :: Maybe CacheParameterGroupStatus
cacheParameterGroup = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheSecurityGroups:CacheCluster' :: Maybe [CacheSecurityGroupMembership]
cacheSecurityGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:cacheSubnetGroupName:CacheCluster' :: Maybe Text
cacheSubnetGroupName = forall a. Maybe a
Prelude.Nothing,
      $sel:clientDownloadLandingPage:CacheCluster' :: Maybe Text
clientDownloadLandingPage = forall a. Maybe a
Prelude.Nothing,
      $sel:configurationEndpoint:CacheCluster' :: Maybe Endpoint
configurationEndpoint = forall a. Maybe a
Prelude.Nothing,
      $sel:engine:CacheCluster' :: Maybe Text
engine = forall a. Maybe a
Prelude.Nothing,
      $sel:engineVersion:CacheCluster' :: Maybe Text
engineVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:ipDiscovery:CacheCluster' :: Maybe IpDiscovery
ipDiscovery = forall a. Maybe a
Prelude.Nothing,
      $sel:logDeliveryConfigurations:CacheCluster' :: Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations = forall a. Maybe a
Prelude.Nothing,
      $sel:networkType:CacheCluster' :: Maybe NetworkType
networkType = forall a. Maybe a
Prelude.Nothing,
      $sel:notificationConfiguration:CacheCluster' :: Maybe NotificationConfiguration
notificationConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:numCacheNodes:CacheCluster' :: Maybe Int
numCacheNodes = forall a. Maybe a
Prelude.Nothing,
      $sel:pendingModifiedValues:CacheCluster' :: Maybe PendingModifiedValues
pendingModifiedValues = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredAvailabilityZone:CacheCluster' :: Maybe Text
preferredAvailabilityZone = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredMaintenanceWindow:CacheCluster' :: Maybe Text
preferredMaintenanceWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:preferredOutpostArn:CacheCluster' :: Maybe Text
preferredOutpostArn = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationGroupId:CacheCluster' :: Maybe Text
replicationGroupId = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationGroupLogDeliveryEnabled:CacheCluster' :: Maybe Bool
replicationGroupLogDeliveryEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:securityGroups:CacheCluster' :: Maybe [SecurityGroupMembership]
securityGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotRetentionLimit:CacheCluster' :: Maybe Int
snapshotRetentionLimit = forall a. Maybe a
Prelude.Nothing,
      $sel:snapshotWindow:CacheCluster' :: Maybe Text
snapshotWindow = forall a. Maybe a
Prelude.Nothing,
      $sel:transitEncryptionEnabled:CacheCluster' :: Maybe Bool
transitEncryptionEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:transitEncryptionMode:CacheCluster' :: Maybe TransitEncryptionMode
transitEncryptionMode = forall a. Maybe a
Prelude.Nothing
    }

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

-- | 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 at-rest encryption 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@
cacheCluster_atRestEncryptionEnabled :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Bool)
cacheCluster_atRestEncryptionEnabled :: Lens' CacheCluster (Maybe Bool)
cacheCluster_atRestEncryptionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Bool
atRestEncryptionEnabled :: Maybe Bool
$sel:atRestEncryptionEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
atRestEncryptionEnabled} -> Maybe Bool
atRestEncryptionEnabled) (\s :: CacheCluster
s@CacheCluster' {} Maybe Bool
a -> CacheCluster
s {$sel:atRestEncryptionEnabled:CacheCluster' :: Maybe Bool
atRestEncryptionEnabled = Maybe Bool
a} :: CacheCluster)

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

-- | The date the auth token was last modified
cacheCluster_authTokenLastModifiedDate :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.UTCTime)
cacheCluster_authTokenLastModifiedDate :: Lens' CacheCluster (Maybe UTCTime)
cacheCluster_authTokenLastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe ISO8601
authTokenLastModifiedDate :: Maybe ISO8601
$sel:authTokenLastModifiedDate:CacheCluster' :: CacheCluster -> Maybe ISO8601
authTokenLastModifiedDate} -> Maybe ISO8601
authTokenLastModifiedDate) (\s :: CacheCluster
s@CacheCluster' {} Maybe ISO8601
a -> CacheCluster
s {$sel:authTokenLastModifiedDate:CacheCluster' :: Maybe ISO8601
authTokenLastModifiedDate = Maybe ISO8601
a} :: CacheCluster) 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.
cacheCluster_autoMinorVersionUpgrade :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Bool)
cacheCluster_autoMinorVersionUpgrade :: Lens' CacheCluster (Maybe Bool)
cacheCluster_autoMinorVersionUpgrade = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Bool
autoMinorVersionUpgrade :: Maybe Bool
$sel:autoMinorVersionUpgrade:CacheCluster' :: CacheCluster -> Maybe Bool
autoMinorVersionUpgrade} -> Maybe Bool
autoMinorVersionUpgrade) (\s :: CacheCluster
s@CacheCluster' {} Maybe Bool
a -> CacheCluster
s {$sel:autoMinorVersionUpgrade:CacheCluster' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
a} :: CacheCluster)

-- | The date and time when the cluster was created.
cacheCluster_cacheClusterCreateTime :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.UTCTime)
cacheCluster_cacheClusterCreateTime :: Lens' CacheCluster (Maybe UTCTime)
cacheCluster_cacheClusterCreateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe ISO8601
cacheClusterCreateTime :: Maybe ISO8601
$sel:cacheClusterCreateTime:CacheCluster' :: CacheCluster -> Maybe ISO8601
cacheClusterCreateTime} -> Maybe ISO8601
cacheClusterCreateTime) (\s :: CacheCluster
s@CacheCluster' {} Maybe ISO8601
a -> CacheCluster
s {$sel:cacheClusterCreateTime:CacheCluster' :: Maybe ISO8601
cacheClusterCreateTime = Maybe ISO8601
a} :: CacheCluster) 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 user-supplied identifier of the cluster. This identifier is a unique
-- key that identifies a cluster.
cacheCluster_cacheClusterId :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_cacheClusterId :: Lens' CacheCluster (Maybe Text)
cacheCluster_cacheClusterId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
cacheClusterId :: Maybe Text
$sel:cacheClusterId:CacheCluster' :: CacheCluster -> Maybe Text
cacheClusterId} -> Maybe Text
cacheClusterId) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:cacheClusterId:CacheCluster' :: Maybe Text
cacheClusterId = Maybe Text
a} :: CacheCluster)

-- | The current state of this cluster, one of the following values:
-- @available@, @creating@, @deleted@, @deleting@, @incompatible-network@,
-- @modifying@, @rebooting cluster nodes@, @restore-failed@, or
-- @snapshotting@.
cacheCluster_cacheClusterStatus :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_cacheClusterStatus :: Lens' CacheCluster (Maybe Text)
cacheCluster_cacheClusterStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
cacheClusterStatus :: Maybe Text
$sel:cacheClusterStatus:CacheCluster' :: CacheCluster -> Maybe Text
cacheClusterStatus} -> Maybe Text
cacheClusterStatus) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:cacheClusterStatus:CacheCluster' :: Maybe Text
cacheClusterStatus = Maybe Text
a} :: CacheCluster)

-- | The name of the compute and memory capacity node type for the cluster.
--
-- The following node types are supported by ElastiCache. Generally
-- speaking, the current generation types provide more memory and
-- computational power at lower cost when compared to their equivalent
-- previous generation counterparts.
--
-- -   General purpose:
--
--     -   Current generation:
--
--         __M6g node types__ (available only for Redis engine version
--         5.0.6 onward and for Memcached engine version 1.5.16 onward):
--         @cache.m6g.large@, @cache.m6g.xlarge@, @cache.m6g.2xlarge@,
--         @cache.m6g.4xlarge@, @cache.m6g.8xlarge@, @cache.m6g.12xlarge@,
--         @cache.m6g.16xlarge@
--
--         For region availability, see
--         <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion Supported Node Types>
--
--         __M5 node types:__ @cache.m5.large@, @cache.m5.xlarge@,
--         @cache.m5.2xlarge@, @cache.m5.4xlarge@, @cache.m5.12xlarge@,
--         @cache.m5.24xlarge@
--
--         __M4 node types:__ @cache.m4.large@, @cache.m4.xlarge@,
--         @cache.m4.2xlarge@, @cache.m4.4xlarge@, @cache.m4.10xlarge@
--
--         __T4g node types__ (available only for Redis engine version
--         5.0.6 onward and Memcached engine version 1.5.16 onward):
--         @cache.t4g.micro@, @cache.t4g.small@, @cache.t4g.medium@
--
--         __T3 node types:__ @cache.t3.micro@, @cache.t3.small@,
--         @cache.t3.medium@
--
--         __T2 node types:__ @cache.t2.micro@, @cache.t2.small@,
--         @cache.t2.medium@
--
--     -   Previous generation: (not recommended. Existing clusters are
--         still supported but creation of new clusters is not supported
--         for these types.)
--
--         __T1 node types:__ @cache.t1.micro@
--
--         __M1 node types:__ @cache.m1.small@, @cache.m1.medium@,
--         @cache.m1.large@, @cache.m1.xlarge@
--
--         __M3 node types:__ @cache.m3.medium@, @cache.m3.large@,
--         @cache.m3.xlarge@, @cache.m3.2xlarge@
--
-- -   Compute optimized:
--
--     -   Previous generation: (not recommended. Existing clusters are
--         still supported but creation of new clusters is not supported
--         for these types.)
--
--         __C1 node types:__ @cache.c1.xlarge@
--
-- -   Memory optimized:
--
--     -   Current generation:
--
--         __R6g node types__ (available only for Redis engine version
--         5.0.6 onward and for Memcached engine version 1.5.16 onward).
--
--         @cache.r6g.large@, @cache.r6g.xlarge@, @cache.r6g.2xlarge@,
--         @cache.r6g.4xlarge@, @cache.r6g.8xlarge@, @cache.r6g.12xlarge@,
--         @cache.r6g.16xlarge@
--
--         For region availability, see
--         <https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion Supported Node Types>
--
--         __R5 node types:__ @cache.r5.large@, @cache.r5.xlarge@,
--         @cache.r5.2xlarge@, @cache.r5.4xlarge@, @cache.r5.12xlarge@,
--         @cache.r5.24xlarge@
--
--         __R4 node types:__ @cache.r4.large@, @cache.r4.xlarge@,
--         @cache.r4.2xlarge@, @cache.r4.4xlarge@, @cache.r4.8xlarge@,
--         @cache.r4.16xlarge@
--
--     -   Previous generation: (not recommended. Existing clusters are
--         still supported but creation of new clusters is not supported
--         for these types.)
--
--         __M2 node types:__ @cache.m2.xlarge@, @cache.m2.2xlarge@,
--         @cache.m2.4xlarge@
--
--         __R3 node types:__ @cache.r3.large@, @cache.r3.xlarge@,
--         @cache.r3.2xlarge@, @cache.r3.4xlarge@, @cache.r3.8xlarge@
--
-- __Additional node type info__
--
-- -   All current generation instance types are created in Amazon VPC by
--     default.
--
-- -   Redis append-only files (AOF) are not supported for T1 or T2
--     instances.
--
-- -   Redis Multi-AZ with automatic failover is not supported on T1
--     instances.
--
-- -   Redis configuration variables @appendonly@ and @appendfsync@ are not
--     supported on Redis version 2.8.22 and later.
cacheCluster_cacheNodeType :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_cacheNodeType :: Lens' CacheCluster (Maybe Text)
cacheCluster_cacheNodeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
cacheNodeType :: Maybe Text
$sel:cacheNodeType:CacheCluster' :: CacheCluster -> Maybe Text
cacheNodeType} -> Maybe Text
cacheNodeType) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:cacheNodeType:CacheCluster' :: Maybe Text
cacheNodeType = Maybe Text
a} :: CacheCluster)

-- | A list of cache nodes that are members of the cluster.
cacheCluster_cacheNodes :: Lens.Lens' CacheCluster (Prelude.Maybe [CacheNode])
cacheCluster_cacheNodes :: Lens' CacheCluster (Maybe [CacheNode])
cacheCluster_cacheNodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe [CacheNode]
cacheNodes :: Maybe [CacheNode]
$sel:cacheNodes:CacheCluster' :: CacheCluster -> Maybe [CacheNode]
cacheNodes} -> Maybe [CacheNode]
cacheNodes) (\s :: CacheCluster
s@CacheCluster' {} Maybe [CacheNode]
a -> CacheCluster
s {$sel:cacheNodes:CacheCluster' :: Maybe [CacheNode]
cacheNodes = Maybe [CacheNode]
a} :: CacheCluster) 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

-- | Status of the cache parameter group.
cacheCluster_cacheParameterGroup :: Lens.Lens' CacheCluster (Prelude.Maybe CacheParameterGroupStatus)
cacheCluster_cacheParameterGroup :: Lens' CacheCluster (Maybe CacheParameterGroupStatus)
cacheCluster_cacheParameterGroup = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe CacheParameterGroupStatus
cacheParameterGroup :: Maybe CacheParameterGroupStatus
$sel:cacheParameterGroup:CacheCluster' :: CacheCluster -> Maybe CacheParameterGroupStatus
cacheParameterGroup} -> Maybe CacheParameterGroupStatus
cacheParameterGroup) (\s :: CacheCluster
s@CacheCluster' {} Maybe CacheParameterGroupStatus
a -> CacheCluster
s {$sel:cacheParameterGroup:CacheCluster' :: Maybe CacheParameterGroupStatus
cacheParameterGroup = Maybe CacheParameterGroupStatus
a} :: CacheCluster)

-- | A list of cache security group elements, composed of name and status
-- sub-elements.
cacheCluster_cacheSecurityGroups :: Lens.Lens' CacheCluster (Prelude.Maybe [CacheSecurityGroupMembership])
cacheCluster_cacheSecurityGroups :: Lens' CacheCluster (Maybe [CacheSecurityGroupMembership])
cacheCluster_cacheSecurityGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe [CacheSecurityGroupMembership]
cacheSecurityGroups :: Maybe [CacheSecurityGroupMembership]
$sel:cacheSecurityGroups:CacheCluster' :: CacheCluster -> Maybe [CacheSecurityGroupMembership]
cacheSecurityGroups} -> Maybe [CacheSecurityGroupMembership]
cacheSecurityGroups) (\s :: CacheCluster
s@CacheCluster' {} Maybe [CacheSecurityGroupMembership]
a -> CacheCluster
s {$sel:cacheSecurityGroups:CacheCluster' :: Maybe [CacheSecurityGroupMembership]
cacheSecurityGroups = Maybe [CacheSecurityGroupMembership]
a} :: CacheCluster) 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 name of the cache subnet group associated with the cluster.
cacheCluster_cacheSubnetGroupName :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_cacheSubnetGroupName :: Lens' CacheCluster (Maybe Text)
cacheCluster_cacheSubnetGroupName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
cacheSubnetGroupName :: Maybe Text
$sel:cacheSubnetGroupName:CacheCluster' :: CacheCluster -> Maybe Text
cacheSubnetGroupName} -> Maybe Text
cacheSubnetGroupName) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:cacheSubnetGroupName:CacheCluster' :: Maybe Text
cacheSubnetGroupName = Maybe Text
a} :: CacheCluster)

-- | The URL of the web page where you can download the latest ElastiCache
-- client library.
cacheCluster_clientDownloadLandingPage :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_clientDownloadLandingPage :: Lens' CacheCluster (Maybe Text)
cacheCluster_clientDownloadLandingPage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
clientDownloadLandingPage :: Maybe Text
$sel:clientDownloadLandingPage:CacheCluster' :: CacheCluster -> Maybe Text
clientDownloadLandingPage} -> Maybe Text
clientDownloadLandingPage) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:clientDownloadLandingPage:CacheCluster' :: Maybe Text
clientDownloadLandingPage = Maybe Text
a} :: CacheCluster)

-- | Represents a Memcached cluster endpoint which can be used by an
-- application to connect to any node in the cluster. The configuration
-- endpoint will always have @.cfg@ in it.
--
-- Example: @mem-3.9dvc4r@/@.cfg@/@.usw2.cache.amazonaws.com:11211@
cacheCluster_configurationEndpoint :: Lens.Lens' CacheCluster (Prelude.Maybe Endpoint)
cacheCluster_configurationEndpoint :: Lens' CacheCluster (Maybe Endpoint)
cacheCluster_configurationEndpoint = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Endpoint
configurationEndpoint :: Maybe Endpoint
$sel:configurationEndpoint:CacheCluster' :: CacheCluster -> Maybe Endpoint
configurationEndpoint} -> Maybe Endpoint
configurationEndpoint) (\s :: CacheCluster
s@CacheCluster' {} Maybe Endpoint
a -> CacheCluster
s {$sel:configurationEndpoint:CacheCluster' :: Maybe Endpoint
configurationEndpoint = Maybe Endpoint
a} :: CacheCluster)

-- | The name of the cache engine (@memcached@ or @redis@) to be used for
-- this cluster.
cacheCluster_engine :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_engine :: Lens' CacheCluster (Maybe Text)
cacheCluster_engine = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
engine :: Maybe Text
$sel:engine:CacheCluster' :: CacheCluster -> Maybe Text
engine} -> Maybe Text
engine) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:engine:CacheCluster' :: Maybe Text
engine = Maybe Text
a} :: CacheCluster)

-- | The version of the cache engine that is used in this cluster.
cacheCluster_engineVersion :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_engineVersion :: Lens' CacheCluster (Maybe Text)
cacheCluster_engineVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
engineVersion :: Maybe Text
$sel:engineVersion:CacheCluster' :: CacheCluster -> Maybe Text
engineVersion} -> Maybe Text
engineVersion) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:engineVersion:CacheCluster' :: Maybe Text
engineVersion = Maybe Text
a} :: CacheCluster)

-- | The network type associated with the 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>.
cacheCluster_ipDiscovery :: Lens.Lens' CacheCluster (Prelude.Maybe IpDiscovery)
cacheCluster_ipDiscovery :: Lens' CacheCluster (Maybe IpDiscovery)
cacheCluster_ipDiscovery = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe IpDiscovery
ipDiscovery :: Maybe IpDiscovery
$sel:ipDiscovery:CacheCluster' :: CacheCluster -> Maybe IpDiscovery
ipDiscovery} -> Maybe IpDiscovery
ipDiscovery) (\s :: CacheCluster
s@CacheCluster' {} Maybe IpDiscovery
a -> CacheCluster
s {$sel:ipDiscovery:CacheCluster' :: Maybe IpDiscovery
ipDiscovery = Maybe IpDiscovery
a} :: CacheCluster)

-- | Returns the destination, format and type of the logs.
cacheCluster_logDeliveryConfigurations :: Lens.Lens' CacheCluster (Prelude.Maybe [LogDeliveryConfiguration])
cacheCluster_logDeliveryConfigurations :: Lens' CacheCluster (Maybe [LogDeliveryConfiguration])
cacheCluster_logDeliveryConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations :: Maybe [LogDeliveryConfiguration]
$sel:logDeliveryConfigurations:CacheCluster' :: CacheCluster -> Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations} -> Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations) (\s :: CacheCluster
s@CacheCluster' {} Maybe [LogDeliveryConfiguration]
a -> CacheCluster
s {$sel:logDeliveryConfigurations:CacheCluster' :: Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations = Maybe [LogDeliveryConfiguration]
a} :: CacheCluster) 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

-- | 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>.
cacheCluster_networkType :: Lens.Lens' CacheCluster (Prelude.Maybe NetworkType)
cacheCluster_networkType :: Lens' CacheCluster (Maybe NetworkType)
cacheCluster_networkType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe NetworkType
networkType :: Maybe NetworkType
$sel:networkType:CacheCluster' :: CacheCluster -> Maybe NetworkType
networkType} -> Maybe NetworkType
networkType) (\s :: CacheCluster
s@CacheCluster' {} Maybe NetworkType
a -> CacheCluster
s {$sel:networkType:CacheCluster' :: Maybe NetworkType
networkType = Maybe NetworkType
a} :: CacheCluster)

-- | Describes a notification topic and its status. Notification topics are
-- used for publishing ElastiCache events to subscribers using Amazon
-- Simple Notification Service (SNS).
cacheCluster_notificationConfiguration :: Lens.Lens' CacheCluster (Prelude.Maybe NotificationConfiguration)
cacheCluster_notificationConfiguration :: Lens' CacheCluster (Maybe NotificationConfiguration)
cacheCluster_notificationConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe NotificationConfiguration
notificationConfiguration :: Maybe NotificationConfiguration
$sel:notificationConfiguration:CacheCluster' :: CacheCluster -> Maybe NotificationConfiguration
notificationConfiguration} -> Maybe NotificationConfiguration
notificationConfiguration) (\s :: CacheCluster
s@CacheCluster' {} Maybe NotificationConfiguration
a -> CacheCluster
s {$sel:notificationConfiguration:CacheCluster' :: Maybe NotificationConfiguration
notificationConfiguration = Maybe NotificationConfiguration
a} :: CacheCluster)

-- | The number of cache nodes in the cluster.
--
-- For clusters running Redis, this value must be 1. For clusters running
-- Memcached, this value must be between 1 and 40.
cacheCluster_numCacheNodes :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Int)
cacheCluster_numCacheNodes :: Lens' CacheCluster (Maybe Int)
cacheCluster_numCacheNodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Int
numCacheNodes :: Maybe Int
$sel:numCacheNodes:CacheCluster' :: CacheCluster -> Maybe Int
numCacheNodes} -> Maybe Int
numCacheNodes) (\s :: CacheCluster
s@CacheCluster' {} Maybe Int
a -> CacheCluster
s {$sel:numCacheNodes:CacheCluster' :: Maybe Int
numCacheNodes = Maybe Int
a} :: CacheCluster)

-- | Undocumented member.
cacheCluster_pendingModifiedValues :: Lens.Lens' CacheCluster (Prelude.Maybe PendingModifiedValues)
cacheCluster_pendingModifiedValues :: Lens' CacheCluster (Maybe PendingModifiedValues)
cacheCluster_pendingModifiedValues = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe PendingModifiedValues
pendingModifiedValues :: Maybe PendingModifiedValues
$sel:pendingModifiedValues:CacheCluster' :: CacheCluster -> Maybe PendingModifiedValues
pendingModifiedValues} -> Maybe PendingModifiedValues
pendingModifiedValues) (\s :: CacheCluster
s@CacheCluster' {} Maybe PendingModifiedValues
a -> CacheCluster
s {$sel:pendingModifiedValues:CacheCluster' :: Maybe PendingModifiedValues
pendingModifiedValues = Maybe PendingModifiedValues
a} :: CacheCluster)

-- | The name of the Availability Zone in which the cluster is located or
-- \"Multiple\" if the cache nodes are located in different Availability
-- Zones.
cacheCluster_preferredAvailabilityZone :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_preferredAvailabilityZone :: Lens' CacheCluster (Maybe Text)
cacheCluster_preferredAvailabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
preferredAvailabilityZone :: Maybe Text
$sel:preferredAvailabilityZone:CacheCluster' :: CacheCluster -> Maybe Text
preferredAvailabilityZone} -> Maybe Text
preferredAvailabilityZone) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:preferredAvailabilityZone:CacheCluster' :: Maybe Text
preferredAvailabilityZone = Maybe Text
a} :: CacheCluster)

-- | Specifies the weekly time range during which maintenance on the cluster
-- is performed. It is specified as a range in the format
-- ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance window
-- is a 60 minute period.
--
-- Valid values for @ddd@ are:
--
-- -   @sun@
--
-- -   @mon@
--
-- -   @tue@
--
-- -   @wed@
--
-- -   @thu@
--
-- -   @fri@
--
-- -   @sat@
--
-- Example: @sun:23:00-mon:01:30@
cacheCluster_preferredMaintenanceWindow :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_preferredMaintenanceWindow :: Lens' CacheCluster (Maybe Text)
cacheCluster_preferredMaintenanceWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
preferredMaintenanceWindow :: Maybe Text
$sel:preferredMaintenanceWindow:CacheCluster' :: CacheCluster -> Maybe Text
preferredMaintenanceWindow} -> Maybe Text
preferredMaintenanceWindow) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:preferredMaintenanceWindow:CacheCluster' :: Maybe Text
preferredMaintenanceWindow = Maybe Text
a} :: CacheCluster)

-- | The outpost ARN in which the cache cluster is created.
cacheCluster_preferredOutpostArn :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_preferredOutpostArn :: Lens' CacheCluster (Maybe Text)
cacheCluster_preferredOutpostArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
preferredOutpostArn :: Maybe Text
$sel:preferredOutpostArn:CacheCluster' :: CacheCluster -> Maybe Text
preferredOutpostArn} -> Maybe Text
preferredOutpostArn) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:preferredOutpostArn:CacheCluster' :: Maybe Text
preferredOutpostArn = Maybe Text
a} :: CacheCluster)

-- | The replication group to which this cluster belongs. If this field is
-- empty, the cluster is not associated with any replication group.
cacheCluster_replicationGroupId :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_replicationGroupId :: Lens' CacheCluster (Maybe Text)
cacheCluster_replicationGroupId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
replicationGroupId :: Maybe Text
$sel:replicationGroupId:CacheCluster' :: CacheCluster -> Maybe Text
replicationGroupId} -> Maybe Text
replicationGroupId) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:replicationGroupId:CacheCluster' :: Maybe Text
replicationGroupId = Maybe Text
a} :: CacheCluster)

-- | A boolean value indicating whether log delivery is enabled for the
-- replication group.
cacheCluster_replicationGroupLogDeliveryEnabled :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Bool)
cacheCluster_replicationGroupLogDeliveryEnabled :: Lens' CacheCluster (Maybe Bool)
cacheCluster_replicationGroupLogDeliveryEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Bool
replicationGroupLogDeliveryEnabled :: Maybe Bool
$sel:replicationGroupLogDeliveryEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
replicationGroupLogDeliveryEnabled} -> Maybe Bool
replicationGroupLogDeliveryEnabled) (\s :: CacheCluster
s@CacheCluster' {} Maybe Bool
a -> CacheCluster
s {$sel:replicationGroupLogDeliveryEnabled:CacheCluster' :: Maybe Bool
replicationGroupLogDeliveryEnabled = Maybe Bool
a} :: CacheCluster)

-- | A list of VPC Security Groups associated with the cluster.
cacheCluster_securityGroups :: Lens.Lens' CacheCluster (Prelude.Maybe [SecurityGroupMembership])
cacheCluster_securityGroups :: Lens' CacheCluster (Maybe [SecurityGroupMembership])
cacheCluster_securityGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe [SecurityGroupMembership]
securityGroups :: Maybe [SecurityGroupMembership]
$sel:securityGroups:CacheCluster' :: CacheCluster -> Maybe [SecurityGroupMembership]
securityGroups} -> Maybe [SecurityGroupMembership]
securityGroups) (\s :: CacheCluster
s@CacheCluster' {} Maybe [SecurityGroupMembership]
a -> CacheCluster
s {$sel:securityGroups:CacheCluster' :: Maybe [SecurityGroupMembership]
securityGroups = Maybe [SecurityGroupMembership]
a} :: CacheCluster) 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 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.
cacheCluster_snapshotRetentionLimit :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Int)
cacheCluster_snapshotRetentionLimit :: Lens' CacheCluster (Maybe Int)
cacheCluster_snapshotRetentionLimit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Int
snapshotRetentionLimit :: Maybe Int
$sel:snapshotRetentionLimit:CacheCluster' :: CacheCluster -> Maybe Int
snapshotRetentionLimit} -> Maybe Int
snapshotRetentionLimit) (\s :: CacheCluster
s@CacheCluster' {} Maybe Int
a -> CacheCluster
s {$sel:snapshotRetentionLimit:CacheCluster' :: Maybe Int
snapshotRetentionLimit = Maybe Int
a} :: CacheCluster)

-- | The daily time range (in UTC) during which ElastiCache begins taking a
-- daily snapshot of your cluster.
--
-- Example: @05:00-09:00@
cacheCluster_snapshotWindow :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Text)
cacheCluster_snapshotWindow :: Lens' CacheCluster (Maybe Text)
cacheCluster_snapshotWindow = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Text
snapshotWindow :: Maybe Text
$sel:snapshotWindow:CacheCluster' :: CacheCluster -> Maybe Text
snapshotWindow} -> Maybe Text
snapshotWindow) (\s :: CacheCluster
s@CacheCluster' {} Maybe Text
a -> CacheCluster
s {$sel:snapshotWindow:CacheCluster' :: Maybe Text
snapshotWindow = Maybe Text
a} :: CacheCluster)

-- | 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@
cacheCluster_transitEncryptionEnabled :: Lens.Lens' CacheCluster (Prelude.Maybe Prelude.Bool)
cacheCluster_transitEncryptionEnabled :: Lens' CacheCluster (Maybe Bool)
cacheCluster_transitEncryptionEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CacheCluster' {Maybe Bool
transitEncryptionEnabled :: Maybe Bool
$sel:transitEncryptionEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
transitEncryptionEnabled} -> Maybe Bool
transitEncryptionEnabled) (\s :: CacheCluster
s@CacheCluster' {} Maybe Bool
a -> CacheCluster
s {$sel:transitEncryptionEnabled:CacheCluster' :: Maybe Bool
transitEncryptionEnabled = Maybe Bool
a} :: CacheCluster)

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

instance Data.FromXML CacheCluster where
  parseXML :: [Node] -> Either String CacheCluster
parseXML [Node]
x =
    Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Bool
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [CacheNode]
-> Maybe CacheParameterGroupStatus
-> Maybe [CacheSecurityGroupMembership]
-> Maybe Text
-> Maybe Text
-> Maybe Endpoint
-> Maybe Text
-> Maybe Text
-> Maybe IpDiscovery
-> Maybe [LogDeliveryConfiguration]
-> Maybe NetworkType
-> Maybe NotificationConfiguration
-> Maybe Int
-> Maybe PendingModifiedValues
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe [SecurityGroupMembership]
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe TransitEncryptionMode
-> CacheCluster
CacheCluster'
      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
"CacheClusterCreateTime")
      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
"CacheClusterId")
      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
"CacheClusterStatus")
      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
"CacheNodes"
                      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
"CacheNode")
                  )
      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
"CacheParameterGroup")
      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
"CacheSecurityGroups"
                      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
"CacheSecurityGroup")
                  )
      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
"CacheSubnetGroupName")
      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
"ClientDownloadLandingPage")
      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
"Engine")
      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
"EngineVersion")
      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
"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
"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
"NotificationConfiguration")
      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
"NumCacheNodes")
      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
"PreferredAvailabilityZone")
      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
"PreferredMaintenanceWindow")
      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
"PreferredOutpostArn")
      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
"ReplicationGroupLogDeliveryEnabled")
      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
"SecurityGroups"
                      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")
                  )
      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
"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")

instance Prelude.Hashable CacheCluster where
  hashWithSalt :: Int -> CacheCluster -> Int
hashWithSalt Int
_salt CacheCluster' {Maybe Bool
Maybe Int
Maybe [CacheSecurityGroupMembership]
Maybe [CacheNode]
Maybe [LogDeliveryConfiguration]
Maybe [SecurityGroupMembership]
Maybe Text
Maybe ISO8601
Maybe CacheParameterGroupStatus
Maybe Endpoint
Maybe IpDiscovery
Maybe NetworkType
Maybe NotificationConfiguration
Maybe TransitEncryptionMode
Maybe PendingModifiedValues
transitEncryptionMode :: Maybe TransitEncryptionMode
transitEncryptionEnabled :: Maybe Bool
snapshotWindow :: Maybe Text
snapshotRetentionLimit :: Maybe Int
securityGroups :: Maybe [SecurityGroupMembership]
replicationGroupLogDeliveryEnabled :: Maybe Bool
replicationGroupId :: Maybe Text
preferredOutpostArn :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
preferredAvailabilityZone :: Maybe Text
pendingModifiedValues :: Maybe PendingModifiedValues
numCacheNodes :: Maybe Int
notificationConfiguration :: Maybe NotificationConfiguration
networkType :: Maybe NetworkType
logDeliveryConfigurations :: Maybe [LogDeliveryConfiguration]
ipDiscovery :: Maybe IpDiscovery
engineVersion :: Maybe Text
engine :: Maybe Text
configurationEndpoint :: Maybe Endpoint
clientDownloadLandingPage :: Maybe Text
cacheSubnetGroupName :: Maybe Text
cacheSecurityGroups :: Maybe [CacheSecurityGroupMembership]
cacheParameterGroup :: Maybe CacheParameterGroupStatus
cacheNodes :: Maybe [CacheNode]
cacheNodeType :: Maybe Text
cacheClusterStatus :: Maybe Text
cacheClusterId :: Maybe Text
cacheClusterCreateTime :: Maybe ISO8601
autoMinorVersionUpgrade :: Maybe Bool
authTokenLastModifiedDate :: Maybe ISO8601
authTokenEnabled :: Maybe Bool
atRestEncryptionEnabled :: Maybe Bool
arn :: Maybe Text
$sel:transitEncryptionMode:CacheCluster' :: CacheCluster -> Maybe TransitEncryptionMode
$sel:transitEncryptionEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:snapshotWindow:CacheCluster' :: CacheCluster -> Maybe Text
$sel:snapshotRetentionLimit:CacheCluster' :: CacheCluster -> Maybe Int
$sel:securityGroups:CacheCluster' :: CacheCluster -> Maybe [SecurityGroupMembership]
$sel:replicationGroupLogDeliveryEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:replicationGroupId:CacheCluster' :: CacheCluster -> Maybe Text
$sel:preferredOutpostArn:CacheCluster' :: CacheCluster -> Maybe Text
$sel:preferredMaintenanceWindow:CacheCluster' :: CacheCluster -> Maybe Text
$sel:preferredAvailabilityZone:CacheCluster' :: CacheCluster -> Maybe Text
$sel:pendingModifiedValues:CacheCluster' :: CacheCluster -> Maybe PendingModifiedValues
$sel:numCacheNodes:CacheCluster' :: CacheCluster -> Maybe Int
$sel:notificationConfiguration:CacheCluster' :: CacheCluster -> Maybe NotificationConfiguration
$sel:networkType:CacheCluster' :: CacheCluster -> Maybe NetworkType
$sel:logDeliveryConfigurations:CacheCluster' :: CacheCluster -> Maybe [LogDeliveryConfiguration]
$sel:ipDiscovery:CacheCluster' :: CacheCluster -> Maybe IpDiscovery
$sel:engineVersion:CacheCluster' :: CacheCluster -> Maybe Text
$sel:engine:CacheCluster' :: CacheCluster -> Maybe Text
$sel:configurationEndpoint:CacheCluster' :: CacheCluster -> Maybe Endpoint
$sel:clientDownloadLandingPage:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheSubnetGroupName:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheSecurityGroups:CacheCluster' :: CacheCluster -> Maybe [CacheSecurityGroupMembership]
$sel:cacheParameterGroup:CacheCluster' :: CacheCluster -> Maybe CacheParameterGroupStatus
$sel:cacheNodes:CacheCluster' :: CacheCluster -> Maybe [CacheNode]
$sel:cacheNodeType:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheClusterStatus:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheClusterId:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheClusterCreateTime:CacheCluster' :: CacheCluster -> Maybe ISO8601
$sel:autoMinorVersionUpgrade:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:authTokenLastModifiedDate:CacheCluster' :: CacheCluster -> Maybe ISO8601
$sel:authTokenEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:atRestEncryptionEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:arn:CacheCluster' :: CacheCluster -> 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 ISO8601
cacheClusterCreateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
cacheClusterId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
cacheClusterStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
cacheNodeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [CacheNode]
cacheNodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CacheParameterGroupStatus
cacheParameterGroup
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [CacheSecurityGroupMembership]
cacheSecurityGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
cacheSubnetGroupName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientDownloadLandingPage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Endpoint
configurationEndpoint
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engine
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
engineVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IpDiscovery
ipDiscovery
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LogDeliveryConfiguration]
logDeliveryConfigurations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NetworkType
networkType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NotificationConfiguration
notificationConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
numCacheNodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PendingModifiedValues
pendingModifiedValues
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredAvailabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredMaintenanceWindow
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredOutpostArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replicationGroupId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
replicationGroupLogDeliveryEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SecurityGroupMembership]
securityGroups
      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 Bool
transitEncryptionEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TransitEncryptionMode
transitEncryptionMode

instance Prelude.NFData CacheCluster where
  rnf :: CacheCluster -> ()
rnf CacheCluster' {Maybe Bool
Maybe Int
Maybe [CacheSecurityGroupMembership]
Maybe [CacheNode]
Maybe [LogDeliveryConfiguration]
Maybe [SecurityGroupMembership]
Maybe Text
Maybe ISO8601
Maybe CacheParameterGroupStatus
Maybe Endpoint
Maybe IpDiscovery
Maybe NetworkType
Maybe NotificationConfiguration
Maybe TransitEncryptionMode
Maybe PendingModifiedValues
transitEncryptionMode :: Maybe TransitEncryptionMode
transitEncryptionEnabled :: Maybe Bool
snapshotWindow :: Maybe Text
snapshotRetentionLimit :: Maybe Int
securityGroups :: Maybe [SecurityGroupMembership]
replicationGroupLogDeliveryEnabled :: Maybe Bool
replicationGroupId :: Maybe Text
preferredOutpostArn :: Maybe Text
preferredMaintenanceWindow :: Maybe Text
preferredAvailabilityZone :: Maybe Text
pendingModifiedValues :: Maybe PendingModifiedValues
numCacheNodes :: Maybe Int
notificationConfiguration :: Maybe NotificationConfiguration
networkType :: Maybe NetworkType
logDeliveryConfigurations :: Maybe [LogDeliveryConfiguration]
ipDiscovery :: Maybe IpDiscovery
engineVersion :: Maybe Text
engine :: Maybe Text
configurationEndpoint :: Maybe Endpoint
clientDownloadLandingPage :: Maybe Text
cacheSubnetGroupName :: Maybe Text
cacheSecurityGroups :: Maybe [CacheSecurityGroupMembership]
cacheParameterGroup :: Maybe CacheParameterGroupStatus
cacheNodes :: Maybe [CacheNode]
cacheNodeType :: Maybe Text
cacheClusterStatus :: Maybe Text
cacheClusterId :: Maybe Text
cacheClusterCreateTime :: Maybe ISO8601
autoMinorVersionUpgrade :: Maybe Bool
authTokenLastModifiedDate :: Maybe ISO8601
authTokenEnabled :: Maybe Bool
atRestEncryptionEnabled :: Maybe Bool
arn :: Maybe Text
$sel:transitEncryptionMode:CacheCluster' :: CacheCluster -> Maybe TransitEncryptionMode
$sel:transitEncryptionEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:snapshotWindow:CacheCluster' :: CacheCluster -> Maybe Text
$sel:snapshotRetentionLimit:CacheCluster' :: CacheCluster -> Maybe Int
$sel:securityGroups:CacheCluster' :: CacheCluster -> Maybe [SecurityGroupMembership]
$sel:replicationGroupLogDeliveryEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:replicationGroupId:CacheCluster' :: CacheCluster -> Maybe Text
$sel:preferredOutpostArn:CacheCluster' :: CacheCluster -> Maybe Text
$sel:preferredMaintenanceWindow:CacheCluster' :: CacheCluster -> Maybe Text
$sel:preferredAvailabilityZone:CacheCluster' :: CacheCluster -> Maybe Text
$sel:pendingModifiedValues:CacheCluster' :: CacheCluster -> Maybe PendingModifiedValues
$sel:numCacheNodes:CacheCluster' :: CacheCluster -> Maybe Int
$sel:notificationConfiguration:CacheCluster' :: CacheCluster -> Maybe NotificationConfiguration
$sel:networkType:CacheCluster' :: CacheCluster -> Maybe NetworkType
$sel:logDeliveryConfigurations:CacheCluster' :: CacheCluster -> Maybe [LogDeliveryConfiguration]
$sel:ipDiscovery:CacheCluster' :: CacheCluster -> Maybe IpDiscovery
$sel:engineVersion:CacheCluster' :: CacheCluster -> Maybe Text
$sel:engine:CacheCluster' :: CacheCluster -> Maybe Text
$sel:configurationEndpoint:CacheCluster' :: CacheCluster -> Maybe Endpoint
$sel:clientDownloadLandingPage:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheSubnetGroupName:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheSecurityGroups:CacheCluster' :: CacheCluster -> Maybe [CacheSecurityGroupMembership]
$sel:cacheParameterGroup:CacheCluster' :: CacheCluster -> Maybe CacheParameterGroupStatus
$sel:cacheNodes:CacheCluster' :: CacheCluster -> Maybe [CacheNode]
$sel:cacheNodeType:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheClusterStatus:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheClusterId:CacheCluster' :: CacheCluster -> Maybe Text
$sel:cacheClusterCreateTime:CacheCluster' :: CacheCluster -> Maybe ISO8601
$sel:autoMinorVersionUpgrade:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:authTokenLastModifiedDate:CacheCluster' :: CacheCluster -> Maybe ISO8601
$sel:authTokenEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:atRestEncryptionEnabled:CacheCluster' :: CacheCluster -> Maybe Bool
$sel:arn:CacheCluster' :: CacheCluster -> 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 ISO8601
cacheClusterCreateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
cacheClusterId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
cacheClusterStatus
      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 [CacheNode]
cacheNodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CacheParameterGroupStatus
cacheParameterGroup
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [CacheSecurityGroupMembership]
cacheSecurityGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
cacheSubnetGroupName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientDownloadLandingPage
      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 Text
engine
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
engineVersion
      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 [LogDeliveryConfiguration]
logDeliveryConfigurations
      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 NotificationConfiguration
notificationConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
numCacheNodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe PendingModifiedValues
pendingModifiedValues
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
preferredAvailabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
preferredMaintenanceWindow
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
preferredOutpostArn
      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 Bool
replicationGroupLogDeliveryEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [SecurityGroupMembership]
securityGroups
      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 Bool
transitEncryptionEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe TransitEncryptionMode
transitEncryptionMode