{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html module Stratosphere.ResourceProperties.AutoScalingScalingPolicyCustomizedMetricSpecification where import Stratosphere.ResourceImports import Stratosphere.ResourceProperties.AutoScalingScalingPolicyMetricDimension -- | Full data type definition for -- AutoScalingScalingPolicyCustomizedMetricSpecification. See -- 'autoScalingScalingPolicyCustomizedMetricSpecification' for a more -- convenient constructor. data AutoScalingScalingPolicyCustomizedMetricSpecification = AutoScalingScalingPolicyCustomizedMetricSpecification { _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions :: Maybe [AutoScalingScalingPolicyMetricDimension] , _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName :: Val Text , _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace :: Val Text , _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic :: Val Text , _autoScalingScalingPolicyCustomizedMetricSpecificationUnit :: Maybe (Val Text) } deriving (Show, Eq) instance ToJSON AutoScalingScalingPolicyCustomizedMetricSpecification where toJSON AutoScalingScalingPolicyCustomizedMetricSpecification{..} = object $ catMaybes [ fmap (("Dimensions",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions , (Just . ("MetricName",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName , (Just . ("Namespace",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace , (Just . ("Statistic",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic , fmap (("Unit",) . toJSON) _autoScalingScalingPolicyCustomizedMetricSpecificationUnit ] instance FromJSON AutoScalingScalingPolicyCustomizedMetricSpecification where parseJSON (Object obj) = AutoScalingScalingPolicyCustomizedMetricSpecification <$> (obj .:? "Dimensions") <*> (obj .: "MetricName") <*> (obj .: "Namespace") <*> (obj .: "Statistic") <*> (obj .:? "Unit") parseJSON _ = mempty -- | Constructor for 'AutoScalingScalingPolicyCustomizedMetricSpecification' -- containing required fields as arguments. autoScalingScalingPolicyCustomizedMetricSpecification :: Val Text -- ^ 'asspcmsMetricName' -> Val Text -- ^ 'asspcmsNamespace' -> Val Text -- ^ 'asspcmsStatistic' -> AutoScalingScalingPolicyCustomizedMetricSpecification autoScalingScalingPolicyCustomizedMetricSpecification metricNamearg namespacearg statisticarg = AutoScalingScalingPolicyCustomizedMetricSpecification { _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions = Nothing , _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName = metricNamearg , _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace = namespacearg , _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic = statisticarg , _autoScalingScalingPolicyCustomizedMetricSpecificationUnit = Nothing } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-dimensions asspcmsDimensions :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Maybe [AutoScalingScalingPolicyMetricDimension]) asspcmsDimensions = lens _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationDimensions = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-metricname asspcmsMetricName :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Val Text) asspcmsMetricName = lens _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationMetricName = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-namespace asspcmsNamespace :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Val Text) asspcmsNamespace = lens _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationNamespace = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-statistic asspcmsStatistic :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Val Text) asspcmsStatistic = lens _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationStatistic = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-autoscaling-scalingpolicy-customizedmetricspecification.html#cfn-autoscaling-scalingpolicy-customizedmetricspecification-unit asspcmsUnit :: Lens' AutoScalingScalingPolicyCustomizedMetricSpecification (Maybe (Val Text)) asspcmsUnit = lens _autoScalingScalingPolicyCustomizedMetricSpecificationUnit (\s a -> s { _autoScalingScalingPolicyCustomizedMetricSpecificationUnit = a })