stratosphere-0.1.0: library-gen/Stratosphere/ResourceProperties/ConnectionDrainingPolicy.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | The ConnectionDrainingPolicy property describes how deregistered or
-- unhealthy instances handle in-flight requests for the
-- AWS::ElasticLoadBalancing::LoadBalancer resource. Connection draining
-- ensures that the load balancer completes serving all in-flight requests
-- made to a registered instance when the instance is deregistered or becomes
-- unhealthy. Without connection draining, the load balancer closes
-- connections to deregistered or unhealthy instances, and any in-flight
-- requests are not completed. For more information about connection draining
-- and default values, see Enable or Disable Connection Draining for Your Load
-- Balancer in the Elastic Load Balancing Developer Guide.
module Stratosphere.ResourceProperties.ConnectionDrainingPolicy where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
-- | Full data type definition for ConnectionDrainingPolicy. See
-- 'connectionDrainingPolicy' for a more convenient constructor.
data ConnectionDrainingPolicy =
ConnectionDrainingPolicy
{ _connectionDrainingPolicyEnabled :: Val Bool'
, _connectionDrainingPolicyTimeout :: Maybe (Val Integer')
} deriving (Show, Generic)
instance ToJSON ConnectionDrainingPolicy where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 25, omitNothingFields = True }
instance FromJSON ConnectionDrainingPolicy where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 25, omitNothingFields = True }
-- | Constructor for 'ConnectionDrainingPolicy' containing required fields as
-- arguments.
connectionDrainingPolicy
:: Val Bool' -- ^ 'cdpEnabled'
-> ConnectionDrainingPolicy
connectionDrainingPolicy enabledarg =
ConnectionDrainingPolicy
{ _connectionDrainingPolicyEnabled = enabledarg
, _connectionDrainingPolicyTimeout = Nothing
}
-- | Whether or not connection draining is enabled for the load balancer.
cdpEnabled :: Lens' ConnectionDrainingPolicy (Val Bool')
cdpEnabled = lens _connectionDrainingPolicyEnabled (\s a -> s { _connectionDrainingPolicyEnabled = a })
-- | The time in seconds after the load balancer closes all connections to a
-- deregistered or unhealthy instance.
cdpTimeout :: Lens' ConnectionDrainingPolicy (Maybe (Val Integer'))
cdpTimeout = lens _connectionDrainingPolicyTimeout (\s a -> s { _connectionDrainingPolicyTimeout = a })