packages feed

stratosphere-elasticloadbalancingv2-1.0.0: gen/Stratosphere/ElasticLoadBalancingV2/TargetGroup.hs

module Stratosphere.ElasticLoadBalancingV2.TargetGroup (
        module Exports, TargetGroup(..), mkTargetGroup
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.ElasticLoadBalancingV2.TargetGroup.MatcherProperty as Exports
import {-# SOURCE #-} Stratosphere.ElasticLoadBalancingV2.TargetGroup.TargetDescriptionProperty as Exports
import {-# SOURCE #-} Stratosphere.ElasticLoadBalancingV2.TargetGroup.TargetGroupAttributeProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Tag
import Stratosphere.Value
data TargetGroup
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html>
    TargetGroup {haddock_workaround_ :: (),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckenabled>
                 healthCheckEnabled :: (Prelude.Maybe (Value Prelude.Bool)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckintervalseconds>
                 healthCheckIntervalSeconds :: (Prelude.Maybe (Value Prelude.Integer)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckpath>
                 healthCheckPath :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckport>
                 healthCheckPort :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthcheckprotocol>
                 healthCheckProtocol :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthchecktimeoutseconds>
                 healthCheckTimeoutSeconds :: (Prelude.Maybe (Value Prelude.Integer)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-healthythresholdcount>
                 healthyThresholdCount :: (Prelude.Maybe (Value Prelude.Integer)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-ipaddresstype>
                 ipAddressType :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-matcher>
                 matcher :: (Prelude.Maybe MatcherProperty),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-name>
                 name :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-port>
                 port :: (Prelude.Maybe (Value Prelude.Integer)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-protocol>
                 protocol :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-protocolversion>
                 protocolVersion :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-tags>
                 tags :: (Prelude.Maybe [Tag]),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-targetgroupattributes>
                 targetGroupAttributes :: (Prelude.Maybe [TargetGroupAttributeProperty]),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-targettype>
                 targetType :: (Prelude.Maybe (Value Prelude.Text)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-targets>
                 targets :: (Prelude.Maybe [TargetDescriptionProperty]),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-unhealthythresholdcount>
                 unhealthyThresholdCount :: (Prelude.Maybe (Value Prelude.Integer)),
                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html#cfn-elasticloadbalancingv2-targetgroup-vpcid>
                 vpcId :: (Prelude.Maybe (Value Prelude.Text))}
  deriving stock (Prelude.Eq, Prelude.Show)
mkTargetGroup :: TargetGroup
mkTargetGroup
  = TargetGroup
      {haddock_workaround_ = (), healthCheckEnabled = Prelude.Nothing,
       healthCheckIntervalSeconds = Prelude.Nothing,
       healthCheckPath = Prelude.Nothing,
       healthCheckPort = Prelude.Nothing,
       healthCheckProtocol = Prelude.Nothing,
       healthCheckTimeoutSeconds = Prelude.Nothing,
       healthyThresholdCount = Prelude.Nothing,
       ipAddressType = Prelude.Nothing, matcher = Prelude.Nothing,
       name = Prelude.Nothing, port = Prelude.Nothing,
       protocol = Prelude.Nothing, protocolVersion = Prelude.Nothing,
       tags = Prelude.Nothing, targetGroupAttributes = Prelude.Nothing,
       targetType = Prelude.Nothing, targets = Prelude.Nothing,
       unhealthyThresholdCount = Prelude.Nothing, vpcId = Prelude.Nothing}
instance ToResourceProperties TargetGroup where
  toResourceProperties TargetGroup {..}
    = ResourceProperties
        {awsType = "AWS::ElasticLoadBalancingV2::TargetGroup",
         supportsTags = Prelude.True,
         properties = Prelude.fromList
                        (Prelude.catMaybes
                           [(JSON..=) "HealthCheckEnabled" Prelude.<$> healthCheckEnabled,
                            (JSON..=) "HealthCheckIntervalSeconds"
                              Prelude.<$> healthCheckIntervalSeconds,
                            (JSON..=) "HealthCheckPath" Prelude.<$> healthCheckPath,
                            (JSON..=) "HealthCheckPort" Prelude.<$> healthCheckPort,
                            (JSON..=) "HealthCheckProtocol" Prelude.<$> healthCheckProtocol,
                            (JSON..=) "HealthCheckTimeoutSeconds"
                              Prelude.<$> healthCheckTimeoutSeconds,
                            (JSON..=) "HealthyThresholdCount"
                              Prelude.<$> healthyThresholdCount,
                            (JSON..=) "IpAddressType" Prelude.<$> ipAddressType,
                            (JSON..=) "Matcher" Prelude.<$> matcher,
                            (JSON..=) "Name" Prelude.<$> name,
                            (JSON..=) "Port" Prelude.<$> port,
                            (JSON..=) "Protocol" Prelude.<$> protocol,
                            (JSON..=) "ProtocolVersion" Prelude.<$> protocolVersion,
                            (JSON..=) "Tags" Prelude.<$> tags,
                            (JSON..=) "TargetGroupAttributes"
                              Prelude.<$> targetGroupAttributes,
                            (JSON..=) "TargetType" Prelude.<$> targetType,
                            (JSON..=) "Targets" Prelude.<$> targets,
                            (JSON..=) "UnhealthyThresholdCount"
                              Prelude.<$> unhealthyThresholdCount,
                            (JSON..=) "VpcId" Prelude.<$> vpcId])}
instance JSON.ToJSON TargetGroup where
  toJSON TargetGroup {..}
    = JSON.object
        (Prelude.fromList
           (Prelude.catMaybes
              [(JSON..=) "HealthCheckEnabled" Prelude.<$> healthCheckEnabled,
               (JSON..=) "HealthCheckIntervalSeconds"
                 Prelude.<$> healthCheckIntervalSeconds,
               (JSON..=) "HealthCheckPath" Prelude.<$> healthCheckPath,
               (JSON..=) "HealthCheckPort" Prelude.<$> healthCheckPort,
               (JSON..=) "HealthCheckProtocol" Prelude.<$> healthCheckProtocol,
               (JSON..=) "HealthCheckTimeoutSeconds"
                 Prelude.<$> healthCheckTimeoutSeconds,
               (JSON..=) "HealthyThresholdCount"
                 Prelude.<$> healthyThresholdCount,
               (JSON..=) "IpAddressType" Prelude.<$> ipAddressType,
               (JSON..=) "Matcher" Prelude.<$> matcher,
               (JSON..=) "Name" Prelude.<$> name,
               (JSON..=) "Port" Prelude.<$> port,
               (JSON..=) "Protocol" Prelude.<$> protocol,
               (JSON..=) "ProtocolVersion" Prelude.<$> protocolVersion,
               (JSON..=) "Tags" Prelude.<$> tags,
               (JSON..=) "TargetGroupAttributes"
                 Prelude.<$> targetGroupAttributes,
               (JSON..=) "TargetType" Prelude.<$> targetType,
               (JSON..=) "Targets" Prelude.<$> targets,
               (JSON..=) "UnhealthyThresholdCount"
                 Prelude.<$> unhealthyThresholdCount,
               (JSON..=) "VpcId" Prelude.<$> vpcId]))
instance Property "HealthCheckEnabled" TargetGroup where
  type PropertyType "HealthCheckEnabled" TargetGroup = Value Prelude.Bool
  set newValue TargetGroup {..}
    = TargetGroup {healthCheckEnabled = Prelude.pure newValue, ..}
instance Property "HealthCheckIntervalSeconds" TargetGroup where
  type PropertyType "HealthCheckIntervalSeconds" TargetGroup = Value Prelude.Integer
  set newValue TargetGroup {..}
    = TargetGroup
        {healthCheckIntervalSeconds = Prelude.pure newValue, ..}
instance Property "HealthCheckPath" TargetGroup where
  type PropertyType "HealthCheckPath" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {healthCheckPath = Prelude.pure newValue, ..}
instance Property "HealthCheckPort" TargetGroup where
  type PropertyType "HealthCheckPort" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {healthCheckPort = Prelude.pure newValue, ..}
instance Property "HealthCheckProtocol" TargetGroup where
  type PropertyType "HealthCheckProtocol" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {healthCheckProtocol = Prelude.pure newValue, ..}
instance Property "HealthCheckTimeoutSeconds" TargetGroup where
  type PropertyType "HealthCheckTimeoutSeconds" TargetGroup = Value Prelude.Integer
  set newValue TargetGroup {..}
    = TargetGroup
        {healthCheckTimeoutSeconds = Prelude.pure newValue, ..}
instance Property "HealthyThresholdCount" TargetGroup where
  type PropertyType "HealthyThresholdCount" TargetGroup = Value Prelude.Integer
  set newValue TargetGroup {..}
    = TargetGroup {healthyThresholdCount = Prelude.pure newValue, ..}
instance Property "IpAddressType" TargetGroup where
  type PropertyType "IpAddressType" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {ipAddressType = Prelude.pure newValue, ..}
instance Property "Matcher" TargetGroup where
  type PropertyType "Matcher" TargetGroup = MatcherProperty
  set newValue TargetGroup {..}
    = TargetGroup {matcher = Prelude.pure newValue, ..}
instance Property "Name" TargetGroup where
  type PropertyType "Name" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {name = Prelude.pure newValue, ..}
instance Property "Port" TargetGroup where
  type PropertyType "Port" TargetGroup = Value Prelude.Integer
  set newValue TargetGroup {..}
    = TargetGroup {port = Prelude.pure newValue, ..}
instance Property "Protocol" TargetGroup where
  type PropertyType "Protocol" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {protocol = Prelude.pure newValue, ..}
instance Property "ProtocolVersion" TargetGroup where
  type PropertyType "ProtocolVersion" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {protocolVersion = Prelude.pure newValue, ..}
instance Property "Tags" TargetGroup where
  type PropertyType "Tags" TargetGroup = [Tag]
  set newValue TargetGroup {..}
    = TargetGroup {tags = Prelude.pure newValue, ..}
instance Property "TargetGroupAttributes" TargetGroup where
  type PropertyType "TargetGroupAttributes" TargetGroup = [TargetGroupAttributeProperty]
  set newValue TargetGroup {..}
    = TargetGroup {targetGroupAttributes = Prelude.pure newValue, ..}
instance Property "TargetType" TargetGroup where
  type PropertyType "TargetType" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {targetType = Prelude.pure newValue, ..}
instance Property "Targets" TargetGroup where
  type PropertyType "Targets" TargetGroup = [TargetDescriptionProperty]
  set newValue TargetGroup {..}
    = TargetGroup {targets = Prelude.pure newValue, ..}
instance Property "UnhealthyThresholdCount" TargetGroup where
  type PropertyType "UnhealthyThresholdCount" TargetGroup = Value Prelude.Integer
  set newValue TargetGroup {..}
    = TargetGroup {unhealthyThresholdCount = Prelude.pure newValue, ..}
instance Property "VpcId" TargetGroup where
  type PropertyType "VpcId" TargetGroup = Value Prelude.Text
  set newValue TargetGroup {..}
    = TargetGroup {vpcId = Prelude.pure newValue, ..}