packages feed

stratosphere-dax-1.0.0: gen/Stratosphere/DAX/Cluster.hs

module Stratosphere.DAX.Cluster (
        module Exports, Cluster(..), mkCluster
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.DAX.Cluster.SSESpecificationProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data Cluster
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html>
    Cluster {haddock_workaround_ :: (),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-availabilityzones>
             availabilityZones :: (Prelude.Maybe (ValueList Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-clusterendpointencryptiontype>
             clusterEndpointEncryptionType :: (Prelude.Maybe (Value Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-clustername>
             clusterName :: (Prelude.Maybe (Value Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-description>
             description :: (Prelude.Maybe (Value Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-iamrolearn>
             iAMRoleARN :: (Value Prelude.Text),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-networktype>
             networkType :: (Prelude.Maybe (Value Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-nodetype>
             nodeType :: (Value Prelude.Text),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-notificationtopicarn>
             notificationTopicARN :: (Prelude.Maybe (Value Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-parametergroupname>
             parameterGroupName :: (Prelude.Maybe (Value Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-preferredmaintenancewindow>
             preferredMaintenanceWindow :: (Prelude.Maybe (Value Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-replicationfactor>
             replicationFactor :: (Value Prelude.Integer),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-ssespecification>
             sSESpecification :: (Prelude.Maybe SSESpecificationProperty),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-securitygroupids>
             securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-subnetgroupname>
             subnetGroupName :: (Prelude.Maybe (Value Prelude.Text)),
             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-tags>
             tags :: (Prelude.Maybe JSON.Object)}
  deriving stock (Prelude.Eq, Prelude.Show)
mkCluster ::
  Value Prelude.Text
  -> Value Prelude.Text -> Value Prelude.Integer -> Cluster
mkCluster iAMRoleARN nodeType replicationFactor
  = Cluster
      {haddock_workaround_ = (), iAMRoleARN = iAMRoleARN,
       nodeType = nodeType, replicationFactor = replicationFactor,
       availabilityZones = Prelude.Nothing,
       clusterEndpointEncryptionType = Prelude.Nothing,
       clusterName = Prelude.Nothing, description = Prelude.Nothing,
       networkType = Prelude.Nothing,
       notificationTopicARN = Prelude.Nothing,
       parameterGroupName = Prelude.Nothing,
       preferredMaintenanceWindow = Prelude.Nothing,
       sSESpecification = Prelude.Nothing,
       securityGroupIds = Prelude.Nothing,
       subnetGroupName = Prelude.Nothing, tags = Prelude.Nothing}
instance ToResourceProperties Cluster where
  toResourceProperties Cluster {..}
    = ResourceProperties
        {awsType = "AWS::DAX::Cluster", supportsTags = Prelude.True,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["IAMRoleARN" JSON..= iAMRoleARN, "NodeType" JSON..= nodeType,
                            "ReplicationFactor" JSON..= replicationFactor]
                           (Prelude.catMaybes
                              [(JSON..=) "AvailabilityZones" Prelude.<$> availabilityZones,
                               (JSON..=) "ClusterEndpointEncryptionType"
                                 Prelude.<$> clusterEndpointEncryptionType,
                               (JSON..=) "ClusterName" Prelude.<$> clusterName,
                               (JSON..=) "Description" Prelude.<$> description,
                               (JSON..=) "NetworkType" Prelude.<$> networkType,
                               (JSON..=) "NotificationTopicARN" Prelude.<$> notificationTopicARN,
                               (JSON..=) "ParameterGroupName" Prelude.<$> parameterGroupName,
                               (JSON..=) "PreferredMaintenanceWindow"
                                 Prelude.<$> preferredMaintenanceWindow,
                               (JSON..=) "SSESpecification" Prelude.<$> sSESpecification,
                               (JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
                               (JSON..=) "SubnetGroupName" Prelude.<$> subnetGroupName,
                               (JSON..=) "Tags" Prelude.<$> tags]))}
instance JSON.ToJSON Cluster where
  toJSON Cluster {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["IAMRoleARN" JSON..= iAMRoleARN, "NodeType" JSON..= nodeType,
               "ReplicationFactor" JSON..= replicationFactor]
              (Prelude.catMaybes
                 [(JSON..=) "AvailabilityZones" Prelude.<$> availabilityZones,
                  (JSON..=) "ClusterEndpointEncryptionType"
                    Prelude.<$> clusterEndpointEncryptionType,
                  (JSON..=) "ClusterName" Prelude.<$> clusterName,
                  (JSON..=) "Description" Prelude.<$> description,
                  (JSON..=) "NetworkType" Prelude.<$> networkType,
                  (JSON..=) "NotificationTopicARN" Prelude.<$> notificationTopicARN,
                  (JSON..=) "ParameterGroupName" Prelude.<$> parameterGroupName,
                  (JSON..=) "PreferredMaintenanceWindow"
                    Prelude.<$> preferredMaintenanceWindow,
                  (JSON..=) "SSESpecification" Prelude.<$> sSESpecification,
                  (JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
                  (JSON..=) "SubnetGroupName" Prelude.<$> subnetGroupName,
                  (JSON..=) "Tags" Prelude.<$> tags])))
instance Property "AvailabilityZones" Cluster where
  type PropertyType "AvailabilityZones" Cluster = ValueList Prelude.Text
  set newValue Cluster {..}
    = Cluster {availabilityZones = Prelude.pure newValue, ..}
instance Property "ClusterEndpointEncryptionType" Cluster where
  type PropertyType "ClusterEndpointEncryptionType" Cluster = Value Prelude.Text
  set newValue Cluster {..}
    = Cluster
        {clusterEndpointEncryptionType = Prelude.pure newValue, ..}
instance Property "ClusterName" Cluster where
  type PropertyType "ClusterName" Cluster = Value Prelude.Text
  set newValue Cluster {..}
    = Cluster {clusterName = Prelude.pure newValue, ..}
instance Property "Description" Cluster where
  type PropertyType "Description" Cluster = Value Prelude.Text
  set newValue Cluster {..}
    = Cluster {description = Prelude.pure newValue, ..}
instance Property "IAMRoleARN" Cluster where
  type PropertyType "IAMRoleARN" Cluster = Value Prelude.Text
  set newValue Cluster {..} = Cluster {iAMRoleARN = newValue, ..}
instance Property "NetworkType" Cluster where
  type PropertyType "NetworkType" Cluster = Value Prelude.Text
  set newValue Cluster {..}
    = Cluster {networkType = Prelude.pure newValue, ..}
instance Property "NodeType" Cluster where
  type PropertyType "NodeType" Cluster = Value Prelude.Text
  set newValue Cluster {..} = Cluster {nodeType = newValue, ..}
instance Property "NotificationTopicARN" Cluster where
  type PropertyType "NotificationTopicARN" Cluster = Value Prelude.Text
  set newValue Cluster {..}
    = Cluster {notificationTopicARN = Prelude.pure newValue, ..}
instance Property "ParameterGroupName" Cluster where
  type PropertyType "ParameterGroupName" Cluster = Value Prelude.Text
  set newValue Cluster {..}
    = Cluster {parameterGroupName = Prelude.pure newValue, ..}
instance Property "PreferredMaintenanceWindow" Cluster where
  type PropertyType "PreferredMaintenanceWindow" Cluster = Value Prelude.Text
  set newValue Cluster {..}
    = Cluster {preferredMaintenanceWindow = Prelude.pure newValue, ..}
instance Property "ReplicationFactor" Cluster where
  type PropertyType "ReplicationFactor" Cluster = Value Prelude.Integer
  set newValue Cluster {..}
    = Cluster {replicationFactor = newValue, ..}
instance Property "SSESpecification" Cluster where
  type PropertyType "SSESpecification" Cluster = SSESpecificationProperty
  set newValue Cluster {..}
    = Cluster {sSESpecification = Prelude.pure newValue, ..}
instance Property "SecurityGroupIds" Cluster where
  type PropertyType "SecurityGroupIds" Cluster = ValueList Prelude.Text
  set newValue Cluster {..}
    = Cluster {securityGroupIds = Prelude.pure newValue, ..}
instance Property "SubnetGroupName" Cluster where
  type PropertyType "SubnetGroupName" Cluster = Value Prelude.Text
  set newValue Cluster {..}
    = Cluster {subnetGroupName = Prelude.pure newValue, ..}
instance Property "Tags" Cluster where
  type PropertyType "Tags" Cluster = JSON.Object
  set newValue Cluster {..}
    = Cluster {tags = Prelude.pure newValue, ..}