packages feed

stratosphere-elasticache-1.0.0: gen/Stratosphere/ElastiCache/ReplicationGroup.hs

module Stratosphere.ElastiCache.ReplicationGroup (
        module Exports, ReplicationGroup(..), mkReplicationGroup
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.ElastiCache.ReplicationGroup.LogDeliveryConfigurationRequestProperty as Exports
import {-# SOURCE #-} Stratosphere.ElastiCache.ReplicationGroup.NodeGroupConfigurationProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Tag
import Stratosphere.Value
data ReplicationGroup
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html>
    ReplicationGroup {haddock_workaround_ :: (),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-atrestencryptionenabled>
                      atRestEncryptionEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-authtoken>
                      authToken :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-autominorversionupgrade>
                      autoMinorVersionUpgrade :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-automaticfailoverenabled>
                      automaticFailoverEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachenodetype>
                      cacheNodeType :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cacheparametergroupname>
                      cacheParameterGroupName :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachesecuritygroupnames>
                      cacheSecurityGroupNames :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachesubnetgroupname>
                      cacheSubnetGroupName :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-clustermode>
                      clusterMode :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-datatieringenabled>
                      dataTieringEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-engine>
                      engine :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-engineversion>
                      engineVersion :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-globalreplicationgroupid>
                      globalReplicationGroupId :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-ipdiscovery>
                      ipDiscovery :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-kmskeyid>
                      kmsKeyId :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-logdeliveryconfigurations>
                      logDeliveryConfigurations :: (Prelude.Maybe [LogDeliveryConfigurationRequestProperty]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-multiazenabled>
                      multiAZEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-networktype>
                      networkType :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-nodegroupconfiguration>
                      nodeGroupConfiguration :: (Prelude.Maybe [NodeGroupConfigurationProperty]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-notificationtopicarn>
                      notificationTopicArn :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-numcacheclusters>
                      numCacheClusters :: (Prelude.Maybe (Value Prelude.Integer)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-numnodegroups>
                      numNodeGroups :: (Prelude.Maybe (Value Prelude.Integer)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-port>
                      port :: (Prelude.Maybe (Value Prelude.Integer)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-preferredcacheclusterazs>
                      preferredCacheClusterAZs :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-preferredmaintenancewindow>
                      preferredMaintenanceWindow :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-primaryclusterid>
                      primaryClusterId :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicaspernodegroup>
                      replicasPerNodeGroup :: (Prelude.Maybe (Value Prelude.Integer)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicationgroupdescription>
                      replicationGroupDescription :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicationgroupid>
                      replicationGroupId :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-securitygroupids>
                      securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotarns>
                      snapshotArns :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotname>
                      snapshotName :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotretentionlimit>
                      snapshotRetentionLimit :: (Prelude.Maybe (Value Prelude.Integer)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotwindow>
                      snapshotWindow :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshottingclusterid>
                      snapshottingClusterId :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-tags>
                      tags :: (Prelude.Maybe [Tag]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-transitencryptionenabled>
                      transitEncryptionEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-transitencryptionmode>
                      transitEncryptionMode :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-usergroupids>
                      userGroupIds :: (Prelude.Maybe (ValueList Prelude.Text))}
  deriving stock (Prelude.Eq, Prelude.Show)
mkReplicationGroup :: Value Prelude.Text -> ReplicationGroup
mkReplicationGroup replicationGroupDescription
  = ReplicationGroup
      {haddock_workaround_ = (),
       replicationGroupDescription = replicationGroupDescription,
       atRestEncryptionEnabled = Prelude.Nothing,
       authToken = Prelude.Nothing,
       autoMinorVersionUpgrade = Prelude.Nothing,
       automaticFailoverEnabled = Prelude.Nothing,
       cacheNodeType = Prelude.Nothing,
       cacheParameterGroupName = Prelude.Nothing,
       cacheSecurityGroupNames = Prelude.Nothing,
       cacheSubnetGroupName = Prelude.Nothing,
       clusterMode = Prelude.Nothing,
       dataTieringEnabled = Prelude.Nothing, engine = Prelude.Nothing,
       engineVersion = Prelude.Nothing,
       globalReplicationGroupId = Prelude.Nothing,
       ipDiscovery = Prelude.Nothing, kmsKeyId = Prelude.Nothing,
       logDeliveryConfigurations = Prelude.Nothing,
       multiAZEnabled = Prelude.Nothing, networkType = Prelude.Nothing,
       nodeGroupConfiguration = Prelude.Nothing,
       notificationTopicArn = Prelude.Nothing,
       numCacheClusters = Prelude.Nothing,
       numNodeGroups = Prelude.Nothing, port = Prelude.Nothing,
       preferredCacheClusterAZs = Prelude.Nothing,
       preferredMaintenanceWindow = Prelude.Nothing,
       primaryClusterId = Prelude.Nothing,
       replicasPerNodeGroup = Prelude.Nothing,
       replicationGroupId = Prelude.Nothing,
       securityGroupIds = Prelude.Nothing, snapshotArns = Prelude.Nothing,
       snapshotName = Prelude.Nothing,
       snapshotRetentionLimit = Prelude.Nothing,
       snapshotWindow = Prelude.Nothing,
       snapshottingClusterId = Prelude.Nothing, tags = Prelude.Nothing,
       transitEncryptionEnabled = Prelude.Nothing,
       transitEncryptionMode = Prelude.Nothing,
       userGroupIds = Prelude.Nothing}
instance ToResourceProperties ReplicationGroup where
  toResourceProperties ReplicationGroup {..}
    = ResourceProperties
        {awsType = "AWS::ElastiCache::ReplicationGroup",
         supportsTags = Prelude.True,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["ReplicationGroupDescription" JSON..= replicationGroupDescription]
                           (Prelude.catMaybes
                              [(JSON..=) "AtRestEncryptionEnabled"
                                 Prelude.<$> atRestEncryptionEnabled,
                               (JSON..=) "AuthToken" Prelude.<$> authToken,
                               (JSON..=) "AutoMinorVersionUpgrade"
                                 Prelude.<$> autoMinorVersionUpgrade,
                               (JSON..=) "AutomaticFailoverEnabled"
                                 Prelude.<$> automaticFailoverEnabled,
                               (JSON..=) "CacheNodeType" Prelude.<$> cacheNodeType,
                               (JSON..=) "CacheParameterGroupName"
                                 Prelude.<$> cacheParameterGroupName,
                               (JSON..=) "CacheSecurityGroupNames"
                                 Prelude.<$> cacheSecurityGroupNames,
                               (JSON..=) "CacheSubnetGroupName" Prelude.<$> cacheSubnetGroupName,
                               (JSON..=) "ClusterMode" Prelude.<$> clusterMode,
                               (JSON..=) "DataTieringEnabled" Prelude.<$> dataTieringEnabled,
                               (JSON..=) "Engine" Prelude.<$> engine,
                               (JSON..=) "EngineVersion" Prelude.<$> engineVersion,
                               (JSON..=) "GlobalReplicationGroupId"
                                 Prelude.<$> globalReplicationGroupId,
                               (JSON..=) "IpDiscovery" Prelude.<$> ipDiscovery,
                               (JSON..=) "KmsKeyId" Prelude.<$> kmsKeyId,
                               (JSON..=) "LogDeliveryConfigurations"
                                 Prelude.<$> logDeliveryConfigurations,
                               (JSON..=) "MultiAZEnabled" Prelude.<$> multiAZEnabled,
                               (JSON..=) "NetworkType" Prelude.<$> networkType,
                               (JSON..=) "NodeGroupConfiguration"
                                 Prelude.<$> nodeGroupConfiguration,
                               (JSON..=) "NotificationTopicArn" Prelude.<$> notificationTopicArn,
                               (JSON..=) "NumCacheClusters" Prelude.<$> numCacheClusters,
                               (JSON..=) "NumNodeGroups" Prelude.<$> numNodeGroups,
                               (JSON..=) "Port" Prelude.<$> port,
                               (JSON..=) "PreferredCacheClusterAZs"
                                 Prelude.<$> preferredCacheClusterAZs,
                               (JSON..=) "PreferredMaintenanceWindow"
                                 Prelude.<$> preferredMaintenanceWindow,
                               (JSON..=) "PrimaryClusterId" Prelude.<$> primaryClusterId,
                               (JSON..=) "ReplicasPerNodeGroup" Prelude.<$> replicasPerNodeGroup,
                               (JSON..=) "ReplicationGroupId" Prelude.<$> replicationGroupId,
                               (JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
                               (JSON..=) "SnapshotArns" Prelude.<$> snapshotArns,
                               (JSON..=) "SnapshotName" Prelude.<$> snapshotName,
                               (JSON..=) "SnapshotRetentionLimit"
                                 Prelude.<$> snapshotRetentionLimit,
                               (JSON..=) "SnapshotWindow" Prelude.<$> snapshotWindow,
                               (JSON..=) "SnapshottingClusterId"
                                 Prelude.<$> snapshottingClusterId,
                               (JSON..=) "Tags" Prelude.<$> tags,
                               (JSON..=) "TransitEncryptionEnabled"
                                 Prelude.<$> transitEncryptionEnabled,
                               (JSON..=) "TransitEncryptionMode"
                                 Prelude.<$> transitEncryptionMode,
                               (JSON..=) "UserGroupIds" Prelude.<$> userGroupIds]))}
instance JSON.ToJSON ReplicationGroup where
  toJSON ReplicationGroup {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["ReplicationGroupDescription" JSON..= replicationGroupDescription]
              (Prelude.catMaybes
                 [(JSON..=) "AtRestEncryptionEnabled"
                    Prelude.<$> atRestEncryptionEnabled,
                  (JSON..=) "AuthToken" Prelude.<$> authToken,
                  (JSON..=) "AutoMinorVersionUpgrade"
                    Prelude.<$> autoMinorVersionUpgrade,
                  (JSON..=) "AutomaticFailoverEnabled"
                    Prelude.<$> automaticFailoverEnabled,
                  (JSON..=) "CacheNodeType" Prelude.<$> cacheNodeType,
                  (JSON..=) "CacheParameterGroupName"
                    Prelude.<$> cacheParameterGroupName,
                  (JSON..=) "CacheSecurityGroupNames"
                    Prelude.<$> cacheSecurityGroupNames,
                  (JSON..=) "CacheSubnetGroupName" Prelude.<$> cacheSubnetGroupName,
                  (JSON..=) "ClusterMode" Prelude.<$> clusterMode,
                  (JSON..=) "DataTieringEnabled" Prelude.<$> dataTieringEnabled,
                  (JSON..=) "Engine" Prelude.<$> engine,
                  (JSON..=) "EngineVersion" Prelude.<$> engineVersion,
                  (JSON..=) "GlobalReplicationGroupId"
                    Prelude.<$> globalReplicationGroupId,
                  (JSON..=) "IpDiscovery" Prelude.<$> ipDiscovery,
                  (JSON..=) "KmsKeyId" Prelude.<$> kmsKeyId,
                  (JSON..=) "LogDeliveryConfigurations"
                    Prelude.<$> logDeliveryConfigurations,
                  (JSON..=) "MultiAZEnabled" Prelude.<$> multiAZEnabled,
                  (JSON..=) "NetworkType" Prelude.<$> networkType,
                  (JSON..=) "NodeGroupConfiguration"
                    Prelude.<$> nodeGroupConfiguration,
                  (JSON..=) "NotificationTopicArn" Prelude.<$> notificationTopicArn,
                  (JSON..=) "NumCacheClusters" Prelude.<$> numCacheClusters,
                  (JSON..=) "NumNodeGroups" Prelude.<$> numNodeGroups,
                  (JSON..=) "Port" Prelude.<$> port,
                  (JSON..=) "PreferredCacheClusterAZs"
                    Prelude.<$> preferredCacheClusterAZs,
                  (JSON..=) "PreferredMaintenanceWindow"
                    Prelude.<$> preferredMaintenanceWindow,
                  (JSON..=) "PrimaryClusterId" Prelude.<$> primaryClusterId,
                  (JSON..=) "ReplicasPerNodeGroup" Prelude.<$> replicasPerNodeGroup,
                  (JSON..=) "ReplicationGroupId" Prelude.<$> replicationGroupId,
                  (JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
                  (JSON..=) "SnapshotArns" Prelude.<$> snapshotArns,
                  (JSON..=) "SnapshotName" Prelude.<$> snapshotName,
                  (JSON..=) "SnapshotRetentionLimit"
                    Prelude.<$> snapshotRetentionLimit,
                  (JSON..=) "SnapshotWindow" Prelude.<$> snapshotWindow,
                  (JSON..=) "SnapshottingClusterId"
                    Prelude.<$> snapshottingClusterId,
                  (JSON..=) "Tags" Prelude.<$> tags,
                  (JSON..=) "TransitEncryptionEnabled"
                    Prelude.<$> transitEncryptionEnabled,
                  (JSON..=) "TransitEncryptionMode"
                    Prelude.<$> transitEncryptionMode,
                  (JSON..=) "UserGroupIds" Prelude.<$> userGroupIds])))
instance Property "AtRestEncryptionEnabled" ReplicationGroup where
  type PropertyType "AtRestEncryptionEnabled" ReplicationGroup = Value Prelude.Bool
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {atRestEncryptionEnabled = Prelude.pure newValue, ..}
instance Property "AuthToken" ReplicationGroup where
  type PropertyType "AuthToken" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {authToken = Prelude.pure newValue, ..}
instance Property "AutoMinorVersionUpgrade" ReplicationGroup where
  type PropertyType "AutoMinorVersionUpgrade" ReplicationGroup = Value Prelude.Bool
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {autoMinorVersionUpgrade = Prelude.pure newValue, ..}
instance Property "AutomaticFailoverEnabled" ReplicationGroup where
  type PropertyType "AutomaticFailoverEnabled" ReplicationGroup = Value Prelude.Bool
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {automaticFailoverEnabled = Prelude.pure newValue, ..}
instance Property "CacheNodeType" ReplicationGroup where
  type PropertyType "CacheNodeType" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {cacheNodeType = Prelude.pure newValue, ..}
instance Property "CacheParameterGroupName" ReplicationGroup where
  type PropertyType "CacheParameterGroupName" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {cacheParameterGroupName = Prelude.pure newValue, ..}
instance Property "CacheSecurityGroupNames" ReplicationGroup where
  type PropertyType "CacheSecurityGroupNames" ReplicationGroup = ValueList Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {cacheSecurityGroupNames = Prelude.pure newValue, ..}
instance Property "CacheSubnetGroupName" ReplicationGroup where
  type PropertyType "CacheSubnetGroupName" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {cacheSubnetGroupName = Prelude.pure newValue, ..}
instance Property "ClusterMode" ReplicationGroup where
  type PropertyType "ClusterMode" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {clusterMode = Prelude.pure newValue, ..}
instance Property "DataTieringEnabled" ReplicationGroup where
  type PropertyType "DataTieringEnabled" ReplicationGroup = Value Prelude.Bool
  set newValue ReplicationGroup {..}
    = ReplicationGroup {dataTieringEnabled = Prelude.pure newValue, ..}
instance Property "Engine" ReplicationGroup where
  type PropertyType "Engine" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {engine = Prelude.pure newValue, ..}
instance Property "EngineVersion" ReplicationGroup where
  type PropertyType "EngineVersion" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {engineVersion = Prelude.pure newValue, ..}
instance Property "GlobalReplicationGroupId" ReplicationGroup where
  type PropertyType "GlobalReplicationGroupId" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {globalReplicationGroupId = Prelude.pure newValue, ..}
instance Property "IpDiscovery" ReplicationGroup where
  type PropertyType "IpDiscovery" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {ipDiscovery = Prelude.pure newValue, ..}
instance Property "KmsKeyId" ReplicationGroup where
  type PropertyType "KmsKeyId" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {kmsKeyId = Prelude.pure newValue, ..}
instance Property "LogDeliveryConfigurations" ReplicationGroup where
  type PropertyType "LogDeliveryConfigurations" ReplicationGroup = [LogDeliveryConfigurationRequestProperty]
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {logDeliveryConfigurations = Prelude.pure newValue, ..}
instance Property "MultiAZEnabled" ReplicationGroup where
  type PropertyType "MultiAZEnabled" ReplicationGroup = Value Prelude.Bool
  set newValue ReplicationGroup {..}
    = ReplicationGroup {multiAZEnabled = Prelude.pure newValue, ..}
instance Property "NetworkType" ReplicationGroup where
  type PropertyType "NetworkType" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {networkType = Prelude.pure newValue, ..}
instance Property "NodeGroupConfiguration" ReplicationGroup where
  type PropertyType "NodeGroupConfiguration" ReplicationGroup = [NodeGroupConfigurationProperty]
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {nodeGroupConfiguration = Prelude.pure newValue, ..}
instance Property "NotificationTopicArn" ReplicationGroup where
  type PropertyType "NotificationTopicArn" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {notificationTopicArn = Prelude.pure newValue, ..}
instance Property "NumCacheClusters" ReplicationGroup where
  type PropertyType "NumCacheClusters" ReplicationGroup = Value Prelude.Integer
  set newValue ReplicationGroup {..}
    = ReplicationGroup {numCacheClusters = Prelude.pure newValue, ..}
instance Property "NumNodeGroups" ReplicationGroup where
  type PropertyType "NumNodeGroups" ReplicationGroup = Value Prelude.Integer
  set newValue ReplicationGroup {..}
    = ReplicationGroup {numNodeGroups = Prelude.pure newValue, ..}
instance Property "Port" ReplicationGroup where
  type PropertyType "Port" ReplicationGroup = Value Prelude.Integer
  set newValue ReplicationGroup {..}
    = ReplicationGroup {port = Prelude.pure newValue, ..}
instance Property "PreferredCacheClusterAZs" ReplicationGroup where
  type PropertyType "PreferredCacheClusterAZs" ReplicationGroup = ValueList Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {preferredCacheClusterAZs = Prelude.pure newValue, ..}
instance Property "PreferredMaintenanceWindow" ReplicationGroup where
  type PropertyType "PreferredMaintenanceWindow" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {preferredMaintenanceWindow = Prelude.pure newValue, ..}
instance Property "PrimaryClusterId" ReplicationGroup where
  type PropertyType "PrimaryClusterId" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {primaryClusterId = Prelude.pure newValue, ..}
instance Property "ReplicasPerNodeGroup" ReplicationGroup where
  type PropertyType "ReplicasPerNodeGroup" ReplicationGroup = Value Prelude.Integer
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {replicasPerNodeGroup = Prelude.pure newValue, ..}
instance Property "ReplicationGroupDescription" ReplicationGroup where
  type PropertyType "ReplicationGroupDescription" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {replicationGroupDescription = newValue, ..}
instance Property "ReplicationGroupId" ReplicationGroup where
  type PropertyType "ReplicationGroupId" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {replicationGroupId = Prelude.pure newValue, ..}
instance Property "SecurityGroupIds" ReplicationGroup where
  type PropertyType "SecurityGroupIds" ReplicationGroup = ValueList Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {securityGroupIds = Prelude.pure newValue, ..}
instance Property "SnapshotArns" ReplicationGroup where
  type PropertyType "SnapshotArns" ReplicationGroup = ValueList Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {snapshotArns = Prelude.pure newValue, ..}
instance Property "SnapshotName" ReplicationGroup where
  type PropertyType "SnapshotName" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {snapshotName = Prelude.pure newValue, ..}
instance Property "SnapshotRetentionLimit" ReplicationGroup where
  type PropertyType "SnapshotRetentionLimit" ReplicationGroup = Value Prelude.Integer
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {snapshotRetentionLimit = Prelude.pure newValue, ..}
instance Property "SnapshotWindow" ReplicationGroup where
  type PropertyType "SnapshotWindow" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {snapshotWindow = Prelude.pure newValue, ..}
instance Property "SnapshottingClusterId" ReplicationGroup where
  type PropertyType "SnapshottingClusterId" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {snapshottingClusterId = Prelude.pure newValue, ..}
instance Property "Tags" ReplicationGroup where
  type PropertyType "Tags" ReplicationGroup = [Tag]
  set newValue ReplicationGroup {..}
    = ReplicationGroup {tags = Prelude.pure newValue, ..}
instance Property "TransitEncryptionEnabled" ReplicationGroup where
  type PropertyType "TransitEncryptionEnabled" ReplicationGroup = Value Prelude.Bool
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {transitEncryptionEnabled = Prelude.pure newValue, ..}
instance Property "TransitEncryptionMode" ReplicationGroup where
  type PropertyType "TransitEncryptionMode" ReplicationGroup = Value Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup
        {transitEncryptionMode = Prelude.pure newValue, ..}
instance Property "UserGroupIds" ReplicationGroup where
  type PropertyType "UserGroupIds" ReplicationGroup = ValueList Prelude.Text
  set newValue ReplicationGroup {..}
    = ReplicationGroup {userGroupIds = Prelude.pure newValue, ..}