packages feed

stratosphere-0.53.0: library-gen/Stratosphere/Resources/GlobalAcceleratorEndpointGroup.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html

module Stratosphere.Resources.GlobalAcceleratorEndpointGroup where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.GlobalAcceleratorEndpointGroupEndpointConfiguration

-- | Full data type definition for GlobalAcceleratorEndpointGroup. See
-- 'globalAcceleratorEndpointGroup' for a more convenient constructor.
data GlobalAcceleratorEndpointGroup =
  GlobalAcceleratorEndpointGroup
  { _globalAcceleratorEndpointGroupEndpointConfigurations :: Maybe [GlobalAcceleratorEndpointGroupEndpointConfiguration]
  , _globalAcceleratorEndpointGroupEndpointGroupRegion :: Val Text
  , _globalAcceleratorEndpointGroupHealthCheckIntervalSeconds :: Maybe (Val Integer)
  , _globalAcceleratorEndpointGroupHealthCheckPath :: Maybe (Val Text)
  , _globalAcceleratorEndpointGroupHealthCheckPort :: Maybe (Val Integer)
  , _globalAcceleratorEndpointGroupHealthCheckProtocol :: Maybe (Val Text)
  , _globalAcceleratorEndpointGroupListenerArn :: Val Text
  , _globalAcceleratorEndpointGroupThresholdCount :: Maybe (Val Integer)
  , _globalAcceleratorEndpointGroupTrafficDialPercentage :: Maybe (Val Double)
  } deriving (Show, Eq)

instance ToResourceProperties GlobalAcceleratorEndpointGroup where
  toResourceProperties GlobalAcceleratorEndpointGroup{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::GlobalAccelerator::EndpointGroup"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("EndpointConfigurations",) . toJSON) _globalAcceleratorEndpointGroupEndpointConfigurations
        , (Just . ("EndpointGroupRegion",) . toJSON) _globalAcceleratorEndpointGroupEndpointGroupRegion
        , fmap (("HealthCheckIntervalSeconds",) . toJSON) _globalAcceleratorEndpointGroupHealthCheckIntervalSeconds
        , fmap (("HealthCheckPath",) . toJSON) _globalAcceleratorEndpointGroupHealthCheckPath
        , fmap (("HealthCheckPort",) . toJSON) _globalAcceleratorEndpointGroupHealthCheckPort
        , fmap (("HealthCheckProtocol",) . toJSON) _globalAcceleratorEndpointGroupHealthCheckProtocol
        , (Just . ("ListenerArn",) . toJSON) _globalAcceleratorEndpointGroupListenerArn
        , fmap (("ThresholdCount",) . toJSON) _globalAcceleratorEndpointGroupThresholdCount
        , fmap (("TrafficDialPercentage",) . toJSON) _globalAcceleratorEndpointGroupTrafficDialPercentage
        ]
    }

-- | Constructor for 'GlobalAcceleratorEndpointGroup' containing required
-- fields as arguments.
globalAcceleratorEndpointGroup
  :: Val Text -- ^ 'gaegEndpointGroupRegion'
  -> Val Text -- ^ 'gaegListenerArn'
  -> GlobalAcceleratorEndpointGroup
globalAcceleratorEndpointGroup endpointGroupRegionarg listenerArnarg =
  GlobalAcceleratorEndpointGroup
  { _globalAcceleratorEndpointGroupEndpointConfigurations = Nothing
  , _globalAcceleratorEndpointGroupEndpointGroupRegion = endpointGroupRegionarg
  , _globalAcceleratorEndpointGroupHealthCheckIntervalSeconds = Nothing
  , _globalAcceleratorEndpointGroupHealthCheckPath = Nothing
  , _globalAcceleratorEndpointGroupHealthCheckPort = Nothing
  , _globalAcceleratorEndpointGroupHealthCheckProtocol = Nothing
  , _globalAcceleratorEndpointGroupListenerArn = listenerArnarg
  , _globalAcceleratorEndpointGroupThresholdCount = Nothing
  , _globalAcceleratorEndpointGroupTrafficDialPercentage = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-endpointconfigurations
gaegEndpointConfigurations :: Lens' GlobalAcceleratorEndpointGroup (Maybe [GlobalAcceleratorEndpointGroupEndpointConfiguration])
gaegEndpointConfigurations = lens _globalAcceleratorEndpointGroupEndpointConfigurations (\s a -> s { _globalAcceleratorEndpointGroupEndpointConfigurations = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-endpointgroupregion
gaegEndpointGroupRegion :: Lens' GlobalAcceleratorEndpointGroup (Val Text)
gaegEndpointGroupRegion = lens _globalAcceleratorEndpointGroupEndpointGroupRegion (\s a -> s { _globalAcceleratorEndpointGroupEndpointGroupRegion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-healthcheckintervalseconds
gaegHealthCheckIntervalSeconds :: Lens' GlobalAcceleratorEndpointGroup (Maybe (Val Integer))
gaegHealthCheckIntervalSeconds = lens _globalAcceleratorEndpointGroupHealthCheckIntervalSeconds (\s a -> s { _globalAcceleratorEndpointGroupHealthCheckIntervalSeconds = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-healthcheckpath
gaegHealthCheckPath :: Lens' GlobalAcceleratorEndpointGroup (Maybe (Val Text))
gaegHealthCheckPath = lens _globalAcceleratorEndpointGroupHealthCheckPath (\s a -> s { _globalAcceleratorEndpointGroupHealthCheckPath = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-healthcheckport
gaegHealthCheckPort :: Lens' GlobalAcceleratorEndpointGroup (Maybe (Val Integer))
gaegHealthCheckPort = lens _globalAcceleratorEndpointGroupHealthCheckPort (\s a -> s { _globalAcceleratorEndpointGroupHealthCheckPort = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-healthcheckprotocol
gaegHealthCheckProtocol :: Lens' GlobalAcceleratorEndpointGroup (Maybe (Val Text))
gaegHealthCheckProtocol = lens _globalAcceleratorEndpointGroupHealthCheckProtocol (\s a -> s { _globalAcceleratorEndpointGroupHealthCheckProtocol = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-listenerarn
gaegListenerArn :: Lens' GlobalAcceleratorEndpointGroup (Val Text)
gaegListenerArn = lens _globalAcceleratorEndpointGroupListenerArn (\s a -> s { _globalAcceleratorEndpointGroupListenerArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-thresholdcount
gaegThresholdCount :: Lens' GlobalAcceleratorEndpointGroup (Maybe (Val Integer))
gaegThresholdCount = lens _globalAcceleratorEndpointGroupThresholdCount (\s a -> s { _globalAcceleratorEndpointGroupThresholdCount = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-globalaccelerator-endpointgroup.html#cfn-globalaccelerator-endpointgroup-trafficdialpercentage
gaegTrafficDialPercentage :: Lens' GlobalAcceleratorEndpointGroup (Maybe (Val Double))
gaegTrafficDialPercentage = lens _globalAcceleratorEndpointGroupTrafficDialPercentage (\s a -> s { _globalAcceleratorEndpointGroupTrafficDialPercentage = a })