stratosphere-0.22.3: library-gen/Stratosphere/ResourceProperties/AutoScalingPlansScalingPlanScalingInstruction.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html
module Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanScalingInstruction where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AutoScalingPlansScalingPlanTargetTrackingConfiguration
-- | Full data type definition for
-- AutoScalingPlansScalingPlanScalingInstruction. See
-- 'autoScalingPlansScalingPlanScalingInstruction' for a more convenient
-- constructor.
data AutoScalingPlansScalingPlanScalingInstruction =
AutoScalingPlansScalingPlanScalingInstruction
{ _autoScalingPlansScalingPlanScalingInstructionMaxCapacity :: Val Integer
, _autoScalingPlansScalingPlanScalingInstructionMinCapacity :: Val Integer
, _autoScalingPlansScalingPlanScalingInstructionResourceId :: Val Text
, _autoScalingPlansScalingPlanScalingInstructionScalableDimension :: Val Text
, _autoScalingPlansScalingPlanScalingInstructionServiceNamespace :: Val Text
, _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations :: [AutoScalingPlansScalingPlanTargetTrackingConfiguration]
} deriving (Show, Eq)
instance ToJSON AutoScalingPlansScalingPlanScalingInstruction where
toJSON AutoScalingPlansScalingPlanScalingInstruction{..} =
object $
catMaybes
[ (Just . ("MaxCapacity",) . toJSON . fmap Integer') _autoScalingPlansScalingPlanScalingInstructionMaxCapacity
, (Just . ("MinCapacity",) . toJSON . fmap Integer') _autoScalingPlansScalingPlanScalingInstructionMinCapacity
, (Just . ("ResourceId",) . toJSON) _autoScalingPlansScalingPlanScalingInstructionResourceId
, (Just . ("ScalableDimension",) . toJSON) _autoScalingPlansScalingPlanScalingInstructionScalableDimension
, (Just . ("ServiceNamespace",) . toJSON) _autoScalingPlansScalingPlanScalingInstructionServiceNamespace
, (Just . ("TargetTrackingConfigurations",) . toJSON) _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations
]
instance FromJSON AutoScalingPlansScalingPlanScalingInstruction where
parseJSON (Object obj) =
AutoScalingPlansScalingPlanScalingInstruction <$>
fmap (fmap unInteger') (obj .: "MaxCapacity") <*>
fmap (fmap unInteger') (obj .: "MinCapacity") <*>
(obj .: "ResourceId") <*>
(obj .: "ScalableDimension") <*>
(obj .: "ServiceNamespace") <*>
(obj .: "TargetTrackingConfigurations")
parseJSON _ = mempty
-- | Constructor for 'AutoScalingPlansScalingPlanScalingInstruction'
-- containing required fields as arguments.
autoScalingPlansScalingPlanScalingInstruction
:: Val Integer -- ^ 'aspspsiMaxCapacity'
-> Val Integer -- ^ 'aspspsiMinCapacity'
-> Val Text -- ^ 'aspspsiResourceId'
-> Val Text -- ^ 'aspspsiScalableDimension'
-> Val Text -- ^ 'aspspsiServiceNamespace'
-> [AutoScalingPlansScalingPlanTargetTrackingConfiguration] -- ^ 'aspspsiTargetTrackingConfigurations'
-> AutoScalingPlansScalingPlanScalingInstruction
autoScalingPlansScalingPlanScalingInstruction maxCapacityarg minCapacityarg resourceIdarg scalableDimensionarg serviceNamespacearg targetTrackingConfigurationsarg =
AutoScalingPlansScalingPlanScalingInstruction
{ _autoScalingPlansScalingPlanScalingInstructionMaxCapacity = maxCapacityarg
, _autoScalingPlansScalingPlanScalingInstructionMinCapacity = minCapacityarg
, _autoScalingPlansScalingPlanScalingInstructionResourceId = resourceIdarg
, _autoScalingPlansScalingPlanScalingInstructionScalableDimension = scalableDimensionarg
, _autoScalingPlansScalingPlanScalingInstructionServiceNamespace = serviceNamespacearg
, _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations = targetTrackingConfigurationsarg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-maxcapacity
aspspsiMaxCapacity :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Integer)
aspspsiMaxCapacity = lens _autoScalingPlansScalingPlanScalingInstructionMaxCapacity (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionMaxCapacity = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-mincapacity
aspspsiMinCapacity :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Integer)
aspspsiMinCapacity = lens _autoScalingPlansScalingPlanScalingInstructionMinCapacity (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionMinCapacity = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-resourceid
aspspsiResourceId :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Text)
aspspsiResourceId = lens _autoScalingPlansScalingPlanScalingInstructionResourceId (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionResourceId = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-scalabledimension
aspspsiScalableDimension :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Text)
aspspsiScalableDimension = lens _autoScalingPlansScalingPlanScalingInstructionScalableDimension (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionScalableDimension = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-servicenamespace
aspspsiServiceNamespace :: Lens' AutoScalingPlansScalingPlanScalingInstruction (Val Text)
aspspsiServiceNamespace = lens _autoScalingPlansScalingPlanScalingInstructionServiceNamespace (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionServiceNamespace = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscalingplans-scalingplan-scalinginstruction.html#cfn-autoscalingplans-scalingplan-scalinginstruction-targettrackingconfigurations
aspspsiTargetTrackingConfigurations :: Lens' AutoScalingPlansScalingPlanScalingInstruction [AutoScalingPlansScalingPlanTargetTrackingConfiguration]
aspspsiTargetTrackingConfigurations = lens _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations (\s a -> s { _autoScalingPlansScalingPlanScalingInstructionTargetTrackingConfigurations = a })