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: ReplicationGroup {haddock_workaround_ :: (), -- | See: atRestEncryptionEnabled :: (Prelude.Maybe (Value Prelude.Bool)), -- | See: authToken :: (Prelude.Maybe (Value Prelude.Text)), -- | See: autoMinorVersionUpgrade :: (Prelude.Maybe (Value Prelude.Bool)), -- | See: automaticFailoverEnabled :: (Prelude.Maybe (Value Prelude.Bool)), -- | See: cacheNodeType :: (Prelude.Maybe (Value Prelude.Text)), -- | See: cacheParameterGroupName :: (Prelude.Maybe (Value Prelude.Text)), -- | See: cacheSecurityGroupNames :: (Prelude.Maybe (ValueList Prelude.Text)), -- | See: cacheSubnetGroupName :: (Prelude.Maybe (Value Prelude.Text)), -- | See: clusterMode :: (Prelude.Maybe (Value Prelude.Text)), -- | See: dataTieringEnabled :: (Prelude.Maybe (Value Prelude.Bool)), -- | See: engine :: (Prelude.Maybe (Value Prelude.Text)), -- | See: engineVersion :: (Prelude.Maybe (Value Prelude.Text)), -- | See: globalReplicationGroupId :: (Prelude.Maybe (Value Prelude.Text)), -- | See: ipDiscovery :: (Prelude.Maybe (Value Prelude.Text)), -- | See: kmsKeyId :: (Prelude.Maybe (Value Prelude.Text)), -- | See: logDeliveryConfigurations :: (Prelude.Maybe [LogDeliveryConfigurationRequestProperty]), -- | See: multiAZEnabled :: (Prelude.Maybe (Value Prelude.Bool)), -- | See: networkType :: (Prelude.Maybe (Value Prelude.Text)), -- | See: nodeGroupConfiguration :: (Prelude.Maybe [NodeGroupConfigurationProperty]), -- | See: notificationTopicArn :: (Prelude.Maybe (Value Prelude.Text)), -- | See: numCacheClusters :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: numNodeGroups :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: port :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: preferredCacheClusterAZs :: (Prelude.Maybe (ValueList Prelude.Text)), -- | See: preferredMaintenanceWindow :: (Prelude.Maybe (Value Prelude.Text)), -- | See: primaryClusterId :: (Prelude.Maybe (Value Prelude.Text)), -- | See: replicasPerNodeGroup :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: replicationGroupDescription :: (Value Prelude.Text), -- | See: replicationGroupId :: (Prelude.Maybe (Value Prelude.Text)), -- | See: securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text)), -- | See: snapshotArns :: (Prelude.Maybe (ValueList Prelude.Text)), -- | See: snapshotName :: (Prelude.Maybe (Value Prelude.Text)), -- | See: snapshotRetentionLimit :: (Prelude.Maybe (Value Prelude.Integer)), -- | See: snapshotWindow :: (Prelude.Maybe (Value Prelude.Text)), -- | See: snapshottingClusterId :: (Prelude.Maybe (Value Prelude.Text)), -- | See: tags :: (Prelude.Maybe [Tag]), -- | See: transitEncryptionEnabled :: (Prelude.Maybe (Value Prelude.Bool)), -- | See: transitEncryptionMode :: (Prelude.Maybe (Value Prelude.Text)), -- | See: 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, ..}