packages feed

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

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

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

module Stratosphere.ResourceProperties.ECSCapacityProviderManagedScaling where

import Stratosphere.ResourceImports


-- | Full data type definition for ECSCapacityProviderManagedScaling. See
-- 'ecsCapacityProviderManagedScaling' for a more convenient constructor.
data ECSCapacityProviderManagedScaling =
  ECSCapacityProviderManagedScaling
  { _eCSCapacityProviderManagedScalingMaximumScalingStepSize :: Maybe (Val Integer)
  , _eCSCapacityProviderManagedScalingMinimumScalingStepSize :: Maybe (Val Integer)
  , _eCSCapacityProviderManagedScalingStatus :: Maybe (Val Text)
  , _eCSCapacityProviderManagedScalingTargetCapacity :: Maybe (Val Integer)
  } deriving (Show, Eq)

instance ToJSON ECSCapacityProviderManagedScaling where
  toJSON ECSCapacityProviderManagedScaling{..} =
    object $
    catMaybes
    [ fmap (("MaximumScalingStepSize",) . toJSON) _eCSCapacityProviderManagedScalingMaximumScalingStepSize
    , fmap (("MinimumScalingStepSize",) . toJSON) _eCSCapacityProviderManagedScalingMinimumScalingStepSize
    , fmap (("Status",) . toJSON) _eCSCapacityProviderManagedScalingStatus
    , fmap (("TargetCapacity",) . toJSON) _eCSCapacityProviderManagedScalingTargetCapacity
    ]

-- | Constructor for 'ECSCapacityProviderManagedScaling' containing required
-- fields as arguments.
ecsCapacityProviderManagedScaling
  :: ECSCapacityProviderManagedScaling
ecsCapacityProviderManagedScaling  =
  ECSCapacityProviderManagedScaling
  { _eCSCapacityProviderManagedScalingMaximumScalingStepSize = Nothing
  , _eCSCapacityProviderManagedScalingMinimumScalingStepSize = Nothing
  , _eCSCapacityProviderManagedScalingStatus = Nothing
  , _eCSCapacityProviderManagedScalingTargetCapacity = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedscaling.html#cfn-ecs-capacityprovider-managedscaling-maximumscalingstepsize
ecscpmsMaximumScalingStepSize :: Lens' ECSCapacityProviderManagedScaling (Maybe (Val Integer))
ecscpmsMaximumScalingStepSize = lens _eCSCapacityProviderManagedScalingMaximumScalingStepSize (\s a -> s { _eCSCapacityProviderManagedScalingMaximumScalingStepSize = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedscaling.html#cfn-ecs-capacityprovider-managedscaling-minimumscalingstepsize
ecscpmsMinimumScalingStepSize :: Lens' ECSCapacityProviderManagedScaling (Maybe (Val Integer))
ecscpmsMinimumScalingStepSize = lens _eCSCapacityProviderManagedScalingMinimumScalingStepSize (\s a -> s { _eCSCapacityProviderManagedScalingMinimumScalingStepSize = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedscaling.html#cfn-ecs-capacityprovider-managedscaling-status
ecscpmsStatus :: Lens' ECSCapacityProviderManagedScaling (Maybe (Val Text))
ecscpmsStatus = lens _eCSCapacityProviderManagedScalingStatus (\s a -> s { _eCSCapacityProviderManagedScalingStatus = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-capacityprovider-managedscaling.html#cfn-ecs-capacityprovider-managedscaling-targetcapacity
ecscpmsTargetCapacity :: Lens' ECSCapacityProviderManagedScaling (Maybe (Val Integer))
ecscpmsTargetCapacity = lens _eCSCapacityProviderManagedScalingTargetCapacity (\s a -> s { _eCSCapacityProviderManagedScalingTargetCapacity = a })