packages feed

stratosphere-0.55.0: library-gen/Stratosphere/ResourceProperties/ECSCapacityProviderAutoScalingGroupProvider.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-autoscalinggroupprovider.html

module Stratosphere.ResourceProperties.ECSCapacityProviderAutoScalingGroupProvider where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ECSCapacityProviderManagedScaling

-- | Full data type definition for
-- ECSCapacityProviderAutoScalingGroupProvider. See
-- 'ecsCapacityProviderAutoScalingGroupProvider' for a more convenient
-- constructor.
data ECSCapacityProviderAutoScalingGroupProvider =
  ECSCapacityProviderAutoScalingGroupProvider
  { _eCSCapacityProviderAutoScalingGroupProviderAutoScalingGroupArn :: Val Text
  , _eCSCapacityProviderAutoScalingGroupProviderManagedScaling :: Maybe ECSCapacityProviderManagedScaling
  , _eCSCapacityProviderAutoScalingGroupProviderManagedTerminationProtection :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON ECSCapacityProviderAutoScalingGroupProvider where
  toJSON ECSCapacityProviderAutoScalingGroupProvider{..} =
    object $
    catMaybes
    [ (Just . ("AutoScalingGroupArn",) . toJSON) _eCSCapacityProviderAutoScalingGroupProviderAutoScalingGroupArn
    , fmap (("ManagedScaling",) . toJSON) _eCSCapacityProviderAutoScalingGroupProviderManagedScaling
    , fmap (("ManagedTerminationProtection",) . toJSON) _eCSCapacityProviderAutoScalingGroupProviderManagedTerminationProtection
    ]

-- | Constructor for 'ECSCapacityProviderAutoScalingGroupProvider' containing
-- required fields as arguments.
ecsCapacityProviderAutoScalingGroupProvider
  :: Val Text -- ^ 'ecscpasgpAutoScalingGroupArn'
  -> ECSCapacityProviderAutoScalingGroupProvider
ecsCapacityProviderAutoScalingGroupProvider autoScalingGroupArnarg =
  ECSCapacityProviderAutoScalingGroupProvider
  { _eCSCapacityProviderAutoScalingGroupProviderAutoScalingGroupArn = autoScalingGroupArnarg
  , _eCSCapacityProviderAutoScalingGroupProviderManagedScaling = Nothing
  , _eCSCapacityProviderAutoScalingGroupProviderManagedTerminationProtection = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-autoscalinggroupprovider.html#cfn-ecs-capacityprovider-autoscalinggroupprovider-autoscalinggrouparn
ecscpasgpAutoScalingGroupArn :: Lens' ECSCapacityProviderAutoScalingGroupProvider (Val Text)
ecscpasgpAutoScalingGroupArn = lens _eCSCapacityProviderAutoScalingGroupProviderAutoScalingGroupArn (\s a -> s { _eCSCapacityProviderAutoScalingGroupProviderAutoScalingGroupArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-autoscalinggroupprovider.html#cfn-ecs-capacityprovider-autoscalinggroupprovider-managedscaling
ecscpasgpManagedScaling :: Lens' ECSCapacityProviderAutoScalingGroupProvider (Maybe ECSCapacityProviderManagedScaling)
ecscpasgpManagedScaling = lens _eCSCapacityProviderAutoScalingGroupProviderManagedScaling (\s a -> s { _eCSCapacityProviderAutoScalingGroupProviderManagedScaling = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-autoscalinggroupprovider.html#cfn-ecs-capacityprovider-autoscalinggroupprovider-managedterminationprotection
ecscpasgpManagedTerminationProtection :: Lens' ECSCapacityProviderAutoScalingGroupProvider (Maybe (Val Text))
ecscpasgpManagedTerminationProtection = lens _eCSCapacityProviderAutoScalingGroupProviderManagedTerminationProtection (\s a -> s { _eCSCapacityProviderAutoScalingGroupProviderManagedTerminationProtection = a })