packages feed

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

module Stratosphere.ElastiCache.GlobalReplicationGroup (
        module Exports, GlobalReplicationGroup(..),
        mkGlobalReplicationGroup
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.ElastiCache.GlobalReplicationGroup.GlobalReplicationGroupMemberProperty as Exports
import {-# SOURCE #-} Stratosphere.ElastiCache.GlobalReplicationGroup.RegionalConfigurationProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data GlobalReplicationGroup
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html>
    GlobalReplicationGroup {haddock_workaround_ :: (),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-automaticfailoverenabled>
                            automaticFailoverEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-cachenodetype>
                            cacheNodeType :: (Prelude.Maybe (Value Prelude.Text)),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-cacheparametergroupname>
                            cacheParameterGroupName :: (Prelude.Maybe (Value Prelude.Text)),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-engine>
                            engine :: (Prelude.Maybe (Value Prelude.Text)),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-engineversion>
                            engineVersion :: (Prelude.Maybe (Value Prelude.Text)),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-globalnodegroupcount>
                            globalNodeGroupCount :: (Prelude.Maybe (Value Prelude.Integer)),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-globalreplicationgroupdescription>
                            globalReplicationGroupDescription :: (Prelude.Maybe (Value Prelude.Text)),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-globalreplicationgroupidsuffix>
                            globalReplicationGroupIdSuffix :: (Prelude.Maybe (Value Prelude.Text)),
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-members>
                            members :: [GlobalReplicationGroupMemberProperty],
                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-globalreplicationgroup.html#cfn-elasticache-globalreplicationgroup-regionalconfigurations>
                            regionalConfigurations :: (Prelude.Maybe [RegionalConfigurationProperty])}
  deriving stock (Prelude.Eq, Prelude.Show)
mkGlobalReplicationGroup ::
  [GlobalReplicationGroupMemberProperty] -> GlobalReplicationGroup
mkGlobalReplicationGroup members
  = GlobalReplicationGroup
      {haddock_workaround_ = (), members = members,
       automaticFailoverEnabled = Prelude.Nothing,
       cacheNodeType = Prelude.Nothing,
       cacheParameterGroupName = Prelude.Nothing,
       engine = Prelude.Nothing, engineVersion = Prelude.Nothing,
       globalNodeGroupCount = Prelude.Nothing,
       globalReplicationGroupDescription = Prelude.Nothing,
       globalReplicationGroupIdSuffix = Prelude.Nothing,
       regionalConfigurations = Prelude.Nothing}
instance ToResourceProperties GlobalReplicationGroup where
  toResourceProperties GlobalReplicationGroup {..}
    = ResourceProperties
        {awsType = "AWS::ElastiCache::GlobalReplicationGroup",
         supportsTags = Prelude.False,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["Members" JSON..= members]
                           (Prelude.catMaybes
                              [(JSON..=) "AutomaticFailoverEnabled"
                                 Prelude.<$> automaticFailoverEnabled,
                               (JSON..=) "CacheNodeType" Prelude.<$> cacheNodeType,
                               (JSON..=) "CacheParameterGroupName"
                                 Prelude.<$> cacheParameterGroupName,
                               (JSON..=) "Engine" Prelude.<$> engine,
                               (JSON..=) "EngineVersion" Prelude.<$> engineVersion,
                               (JSON..=) "GlobalNodeGroupCount" Prelude.<$> globalNodeGroupCount,
                               (JSON..=) "GlobalReplicationGroupDescription"
                                 Prelude.<$> globalReplicationGroupDescription,
                               (JSON..=) "GlobalReplicationGroupIdSuffix"
                                 Prelude.<$> globalReplicationGroupIdSuffix,
                               (JSON..=) "RegionalConfigurations"
                                 Prelude.<$> regionalConfigurations]))}
instance JSON.ToJSON GlobalReplicationGroup where
  toJSON GlobalReplicationGroup {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["Members" JSON..= members]
              (Prelude.catMaybes
                 [(JSON..=) "AutomaticFailoverEnabled"
                    Prelude.<$> automaticFailoverEnabled,
                  (JSON..=) "CacheNodeType" Prelude.<$> cacheNodeType,
                  (JSON..=) "CacheParameterGroupName"
                    Prelude.<$> cacheParameterGroupName,
                  (JSON..=) "Engine" Prelude.<$> engine,
                  (JSON..=) "EngineVersion" Prelude.<$> engineVersion,
                  (JSON..=) "GlobalNodeGroupCount" Prelude.<$> globalNodeGroupCount,
                  (JSON..=) "GlobalReplicationGroupDescription"
                    Prelude.<$> globalReplicationGroupDescription,
                  (JSON..=) "GlobalReplicationGroupIdSuffix"
                    Prelude.<$> globalReplicationGroupIdSuffix,
                  (JSON..=) "RegionalConfigurations"
                    Prelude.<$> regionalConfigurations])))
instance Property "AutomaticFailoverEnabled" GlobalReplicationGroup where
  type PropertyType "AutomaticFailoverEnabled" GlobalReplicationGroup = Value Prelude.Bool
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup
        {automaticFailoverEnabled = Prelude.pure newValue, ..}
instance Property "CacheNodeType" GlobalReplicationGroup where
  type PropertyType "CacheNodeType" GlobalReplicationGroup = Value Prelude.Text
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup
        {cacheNodeType = Prelude.pure newValue, ..}
instance Property "CacheParameterGroupName" GlobalReplicationGroup where
  type PropertyType "CacheParameterGroupName" GlobalReplicationGroup = Value Prelude.Text
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup
        {cacheParameterGroupName = Prelude.pure newValue, ..}
instance Property "Engine" GlobalReplicationGroup where
  type PropertyType "Engine" GlobalReplicationGroup = Value Prelude.Text
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup {engine = Prelude.pure newValue, ..}
instance Property "EngineVersion" GlobalReplicationGroup where
  type PropertyType "EngineVersion" GlobalReplicationGroup = Value Prelude.Text
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup
        {engineVersion = Prelude.pure newValue, ..}
instance Property "GlobalNodeGroupCount" GlobalReplicationGroup where
  type PropertyType "GlobalNodeGroupCount" GlobalReplicationGroup = Value Prelude.Integer
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup
        {globalNodeGroupCount = Prelude.pure newValue, ..}
instance Property "GlobalReplicationGroupDescription" GlobalReplicationGroup where
  type PropertyType "GlobalReplicationGroupDescription" GlobalReplicationGroup = Value Prelude.Text
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup
        {globalReplicationGroupDescription = Prelude.pure newValue, ..}
instance Property "GlobalReplicationGroupIdSuffix" GlobalReplicationGroup where
  type PropertyType "GlobalReplicationGroupIdSuffix" GlobalReplicationGroup = Value Prelude.Text
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup
        {globalReplicationGroupIdSuffix = Prelude.pure newValue, ..}
instance Property "Members" GlobalReplicationGroup where
  type PropertyType "Members" GlobalReplicationGroup = [GlobalReplicationGroupMemberProperty]
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup {members = newValue, ..}
instance Property "RegionalConfigurations" GlobalReplicationGroup where
  type PropertyType "RegionalConfigurations" GlobalReplicationGroup = [RegionalConfigurationProperty]
  set newValue GlobalReplicationGroup {..}
    = GlobalReplicationGroup
        {regionalConfigurations = Prelude.pure newValue, ..}