stratosphere-0.4.1: library-gen/Stratosphere/Resources/ElastiCacheReplicationGroup.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html
module Stratosphere.Resources.ElastiCacheReplicationGroup where
import Control.Lens hiding ((.=))
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Monoid (mempty)
import Data.Text
import Stratosphere.Values
import Stratosphere.ResourceProperties.ElastiCacheReplicationGroupNodeGroupConfiguration
import Stratosphere.ResourceProperties.Tag
-- | Full data type definition for ElastiCacheReplicationGroup. See
-- | 'elastiCacheReplicationGroup' for a more convenient constructor.
data ElastiCacheReplicationGroup =
ElastiCacheReplicationGroup
{ _elastiCacheReplicationGroupAutoMinorVersionUpgrade :: Maybe (Val Bool')
, _elastiCacheReplicationGroupAutomaticFailoverEnabled :: Maybe (Val Bool')
, _elastiCacheReplicationGroupCacheNodeType :: Maybe (Val Text)
, _elastiCacheReplicationGroupCacheParameterGroupName :: Maybe (Val Text)
, _elastiCacheReplicationGroupCacheSecurityGroupNames :: Maybe [Val Text]
, _elastiCacheReplicationGroupCacheSubnetGroupName :: Maybe (Val Text)
, _elastiCacheReplicationGroupEngine :: Maybe (Val Text)
, _elastiCacheReplicationGroupEngineVersion :: Maybe (Val Text)
, _elastiCacheReplicationGroupNodeGroupConfiguration :: Maybe [ElastiCacheReplicationGroupNodeGroupConfiguration]
, _elastiCacheReplicationGroupNotificationTopicArn :: Maybe (Val Text)
, _elastiCacheReplicationGroupNumCacheClusters :: Maybe (Val Integer')
, _elastiCacheReplicationGroupNumNodeGroups :: Maybe (Val Integer')
, _elastiCacheReplicationGroupPort :: Maybe (Val Integer')
, _elastiCacheReplicationGroupPreferredCacheClusterAZs :: Maybe [Val Text]
, _elastiCacheReplicationGroupPreferredMaintenanceWindow :: Maybe (Val Text)
, _elastiCacheReplicationGroupPrimaryClusterId :: Maybe (Val Text)
, _elastiCacheReplicationGroupReplicasPerNodeGroup :: Maybe (Val Integer')
, _elastiCacheReplicationGroupReplicationGroupDescription :: Val Text
, _elastiCacheReplicationGroupReplicationGroupId :: Maybe (Val Text)
, _elastiCacheReplicationGroupSecurityGroupIds :: Maybe [Val Text]
, _elastiCacheReplicationGroupSnapshotArns :: Maybe [Val Text]
, _elastiCacheReplicationGroupSnapshotName :: Maybe (Val Text)
, _elastiCacheReplicationGroupSnapshotRetentionLimit :: Maybe (Val Integer')
, _elastiCacheReplicationGroupSnapshotWindow :: Maybe (Val Text)
, _elastiCacheReplicationGroupSnapshottingClusterId :: Maybe (Val Text)
, _elastiCacheReplicationGroupTags :: Maybe [Tag]
} deriving (Show, Eq)
instance ToJSON ElastiCacheReplicationGroup where
toJSON ElastiCacheReplicationGroup{..} =
object $
catMaybes
[ ("AutoMinorVersionUpgrade" .=) <$> _elastiCacheReplicationGroupAutoMinorVersionUpgrade
, ("AutomaticFailoverEnabled" .=) <$> _elastiCacheReplicationGroupAutomaticFailoverEnabled
, ("CacheNodeType" .=) <$> _elastiCacheReplicationGroupCacheNodeType
, ("CacheParameterGroupName" .=) <$> _elastiCacheReplicationGroupCacheParameterGroupName
, ("CacheSecurityGroupNames" .=) <$> _elastiCacheReplicationGroupCacheSecurityGroupNames
, ("CacheSubnetGroupName" .=) <$> _elastiCacheReplicationGroupCacheSubnetGroupName
, ("Engine" .=) <$> _elastiCacheReplicationGroupEngine
, ("EngineVersion" .=) <$> _elastiCacheReplicationGroupEngineVersion
, ("NodeGroupConfiguration" .=) <$> _elastiCacheReplicationGroupNodeGroupConfiguration
, ("NotificationTopicArn" .=) <$> _elastiCacheReplicationGroupNotificationTopicArn
, ("NumCacheClusters" .=) <$> _elastiCacheReplicationGroupNumCacheClusters
, ("NumNodeGroups" .=) <$> _elastiCacheReplicationGroupNumNodeGroups
, ("Port" .=) <$> _elastiCacheReplicationGroupPort
, ("PreferredCacheClusterAZs" .=) <$> _elastiCacheReplicationGroupPreferredCacheClusterAZs
, ("PreferredMaintenanceWindow" .=) <$> _elastiCacheReplicationGroupPreferredMaintenanceWindow
, ("PrimaryClusterId" .=) <$> _elastiCacheReplicationGroupPrimaryClusterId
, ("ReplicasPerNodeGroup" .=) <$> _elastiCacheReplicationGroupReplicasPerNodeGroup
, Just ("ReplicationGroupDescription" .= _elastiCacheReplicationGroupReplicationGroupDescription)
, ("ReplicationGroupId" .=) <$> _elastiCacheReplicationGroupReplicationGroupId
, ("SecurityGroupIds" .=) <$> _elastiCacheReplicationGroupSecurityGroupIds
, ("SnapshotArns" .=) <$> _elastiCacheReplicationGroupSnapshotArns
, ("SnapshotName" .=) <$> _elastiCacheReplicationGroupSnapshotName
, ("SnapshotRetentionLimit" .=) <$> _elastiCacheReplicationGroupSnapshotRetentionLimit
, ("SnapshotWindow" .=) <$> _elastiCacheReplicationGroupSnapshotWindow
, ("SnapshottingClusterId" .=) <$> _elastiCacheReplicationGroupSnapshottingClusterId
, ("Tags" .=) <$> _elastiCacheReplicationGroupTags
]
instance FromJSON ElastiCacheReplicationGroup where
parseJSON (Object obj) =
ElastiCacheReplicationGroup <$>
obj .:? "AutoMinorVersionUpgrade" <*>
obj .:? "AutomaticFailoverEnabled" <*>
obj .:? "CacheNodeType" <*>
obj .:? "CacheParameterGroupName" <*>
obj .:? "CacheSecurityGroupNames" <*>
obj .:? "CacheSubnetGroupName" <*>
obj .:? "Engine" <*>
obj .:? "EngineVersion" <*>
obj .:? "NodeGroupConfiguration" <*>
obj .:? "NotificationTopicArn" <*>
obj .:? "NumCacheClusters" <*>
obj .:? "NumNodeGroups" <*>
obj .:? "Port" <*>
obj .:? "PreferredCacheClusterAZs" <*>
obj .:? "PreferredMaintenanceWindow" <*>
obj .:? "PrimaryClusterId" <*>
obj .:? "ReplicasPerNodeGroup" <*>
obj .: "ReplicationGroupDescription" <*>
obj .:? "ReplicationGroupId" <*>
obj .:? "SecurityGroupIds" <*>
obj .:? "SnapshotArns" <*>
obj .:? "SnapshotName" <*>
obj .:? "SnapshotRetentionLimit" <*>
obj .:? "SnapshotWindow" <*>
obj .:? "SnapshottingClusterId" <*>
obj .:? "Tags"
parseJSON _ = mempty
-- | Constructor for 'ElastiCacheReplicationGroup' containing required fields
-- | as arguments.
elastiCacheReplicationGroup
:: Val Text -- ^ 'ecrgReplicationGroupDescription'
-> ElastiCacheReplicationGroup
elastiCacheReplicationGroup replicationGroupDescriptionarg =
ElastiCacheReplicationGroup
{ _elastiCacheReplicationGroupAutoMinorVersionUpgrade = Nothing
, _elastiCacheReplicationGroupAutomaticFailoverEnabled = Nothing
, _elastiCacheReplicationGroupCacheNodeType = Nothing
, _elastiCacheReplicationGroupCacheParameterGroupName = Nothing
, _elastiCacheReplicationGroupCacheSecurityGroupNames = Nothing
, _elastiCacheReplicationGroupCacheSubnetGroupName = Nothing
, _elastiCacheReplicationGroupEngine = Nothing
, _elastiCacheReplicationGroupEngineVersion = Nothing
, _elastiCacheReplicationGroupNodeGroupConfiguration = Nothing
, _elastiCacheReplicationGroupNotificationTopicArn = Nothing
, _elastiCacheReplicationGroupNumCacheClusters = Nothing
, _elastiCacheReplicationGroupNumNodeGroups = Nothing
, _elastiCacheReplicationGroupPort = Nothing
, _elastiCacheReplicationGroupPreferredCacheClusterAZs = Nothing
, _elastiCacheReplicationGroupPreferredMaintenanceWindow = Nothing
, _elastiCacheReplicationGroupPrimaryClusterId = Nothing
, _elastiCacheReplicationGroupReplicasPerNodeGroup = Nothing
, _elastiCacheReplicationGroupReplicationGroupDescription = replicationGroupDescriptionarg
, _elastiCacheReplicationGroupReplicationGroupId = Nothing
, _elastiCacheReplicationGroupSecurityGroupIds = Nothing
, _elastiCacheReplicationGroupSnapshotArns = Nothing
, _elastiCacheReplicationGroupSnapshotName = Nothing
, _elastiCacheReplicationGroupSnapshotRetentionLimit = Nothing
, _elastiCacheReplicationGroupSnapshotWindow = Nothing
, _elastiCacheReplicationGroupSnapshottingClusterId = Nothing
, _elastiCacheReplicationGroupTags = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-autominorversionupgrade
ecrgAutoMinorVersionUpgrade :: Lens' ElastiCacheReplicationGroup (Maybe (Val Bool'))
ecrgAutoMinorVersionUpgrade = lens _elastiCacheReplicationGroupAutoMinorVersionUpgrade (\s a -> s { _elastiCacheReplicationGroupAutoMinorVersionUpgrade = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-automaticfailoverenabled
ecrgAutomaticFailoverEnabled :: Lens' ElastiCacheReplicationGroup (Maybe (Val Bool'))
ecrgAutomaticFailoverEnabled = lens _elastiCacheReplicationGroupAutomaticFailoverEnabled (\s a -> s { _elastiCacheReplicationGroupAutomaticFailoverEnabled = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachenodetype
ecrgCacheNodeType :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgCacheNodeType = lens _elastiCacheReplicationGroupCacheNodeType (\s a -> s { _elastiCacheReplicationGroupCacheNodeType = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cacheparametergroupname
ecrgCacheParameterGroupName :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgCacheParameterGroupName = lens _elastiCacheReplicationGroupCacheParameterGroupName (\s a -> s { _elastiCacheReplicationGroupCacheParameterGroupName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachesecuritygroupnames
ecrgCacheSecurityGroupNames :: Lens' ElastiCacheReplicationGroup (Maybe [Val Text])
ecrgCacheSecurityGroupNames = lens _elastiCacheReplicationGroupCacheSecurityGroupNames (\s a -> s { _elastiCacheReplicationGroupCacheSecurityGroupNames = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-cachesubnetgroupname
ecrgCacheSubnetGroupName :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgCacheSubnetGroupName = lens _elastiCacheReplicationGroupCacheSubnetGroupName (\s a -> s { _elastiCacheReplicationGroupCacheSubnetGroupName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-engine
ecrgEngine :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgEngine = lens _elastiCacheReplicationGroupEngine (\s a -> s { _elastiCacheReplicationGroupEngine = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-engineversion
ecrgEngineVersion :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgEngineVersion = lens _elastiCacheReplicationGroupEngineVersion (\s a -> s { _elastiCacheReplicationGroupEngineVersion = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-nodegroupconfiguration
ecrgNodeGroupConfiguration :: Lens' ElastiCacheReplicationGroup (Maybe [ElastiCacheReplicationGroupNodeGroupConfiguration])
ecrgNodeGroupConfiguration = lens _elastiCacheReplicationGroupNodeGroupConfiguration (\s a -> s { _elastiCacheReplicationGroupNodeGroupConfiguration = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-notificationtopicarn
ecrgNotificationTopicArn :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgNotificationTopicArn = lens _elastiCacheReplicationGroupNotificationTopicArn (\s a -> s { _elastiCacheReplicationGroupNotificationTopicArn = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-numcacheclusters
ecrgNumCacheClusters :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
ecrgNumCacheClusters = lens _elastiCacheReplicationGroupNumCacheClusters (\s a -> s { _elastiCacheReplicationGroupNumCacheClusters = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-numnodegroups
ecrgNumNodeGroups :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
ecrgNumNodeGroups = lens _elastiCacheReplicationGroupNumNodeGroups (\s a -> s { _elastiCacheReplicationGroupNumNodeGroups = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-port
ecrgPort :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
ecrgPort = lens _elastiCacheReplicationGroupPort (\s a -> s { _elastiCacheReplicationGroupPort = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-preferredcacheclusterazs
ecrgPreferredCacheClusterAZs :: Lens' ElastiCacheReplicationGroup (Maybe [Val Text])
ecrgPreferredCacheClusterAZs = lens _elastiCacheReplicationGroupPreferredCacheClusterAZs (\s a -> s { _elastiCacheReplicationGroupPreferredCacheClusterAZs = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-preferredmaintenancewindow
ecrgPreferredMaintenanceWindow :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgPreferredMaintenanceWindow = lens _elastiCacheReplicationGroupPreferredMaintenanceWindow (\s a -> s { _elastiCacheReplicationGroupPreferredMaintenanceWindow = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-primaryclusterid
ecrgPrimaryClusterId :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgPrimaryClusterId = lens _elastiCacheReplicationGroupPrimaryClusterId (\s a -> s { _elastiCacheReplicationGroupPrimaryClusterId = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicaspernodegroup
ecrgReplicasPerNodeGroup :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
ecrgReplicasPerNodeGroup = lens _elastiCacheReplicationGroupReplicasPerNodeGroup (\s a -> s { _elastiCacheReplicationGroupReplicasPerNodeGroup = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicationgroupdescription
ecrgReplicationGroupDescription :: Lens' ElastiCacheReplicationGroup (Val Text)
ecrgReplicationGroupDescription = lens _elastiCacheReplicationGroupReplicationGroupDescription (\s a -> s { _elastiCacheReplicationGroupReplicationGroupDescription = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-replicationgroupid
ecrgReplicationGroupId :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgReplicationGroupId = lens _elastiCacheReplicationGroupReplicationGroupId (\s a -> s { _elastiCacheReplicationGroupReplicationGroupId = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-securitygroupids
ecrgSecurityGroupIds :: Lens' ElastiCacheReplicationGroup (Maybe [Val Text])
ecrgSecurityGroupIds = lens _elastiCacheReplicationGroupSecurityGroupIds (\s a -> s { _elastiCacheReplicationGroupSecurityGroupIds = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotarns
ecrgSnapshotArns :: Lens' ElastiCacheReplicationGroup (Maybe [Val Text])
ecrgSnapshotArns = lens _elastiCacheReplicationGroupSnapshotArns (\s a -> s { _elastiCacheReplicationGroupSnapshotArns = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotname
ecrgSnapshotName :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgSnapshotName = lens _elastiCacheReplicationGroupSnapshotName (\s a -> s { _elastiCacheReplicationGroupSnapshotName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotretentionlimit
ecrgSnapshotRetentionLimit :: Lens' ElastiCacheReplicationGroup (Maybe (Val Integer'))
ecrgSnapshotRetentionLimit = lens _elastiCacheReplicationGroupSnapshotRetentionLimit (\s a -> s { _elastiCacheReplicationGroupSnapshotRetentionLimit = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshotwindow
ecrgSnapshotWindow :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgSnapshotWindow = lens _elastiCacheReplicationGroupSnapshotWindow (\s a -> s { _elastiCacheReplicationGroupSnapshotWindow = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-snapshottingclusterid
ecrgSnapshottingClusterId :: Lens' ElastiCacheReplicationGroup (Maybe (Val Text))
ecrgSnapshottingClusterId = lens _elastiCacheReplicationGroupSnapshottingClusterId (\s a -> s { _elastiCacheReplicationGroupSnapshottingClusterId = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-tags
ecrgTags :: Lens' ElastiCacheReplicationGroup (Maybe [Tag])
ecrgTags = lens _elastiCacheReplicationGroupTags (\s a -> s { _elastiCacheReplicationGroupTags = a })