stratosphere-0.1.2: library-gen/Stratosphere/ResourceProperties/AutoScalingMetricsCollection.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | The MetricsCollection is a property of the
-- AWS::AutoScaling::AutoScalingGroup resource that describes the group
-- metrics that an Auto Scaling group sends to CloudWatch. These metrics
-- describe the group rather than any of its instances. For more information,
-- see EnableMetricsCollection in the Auto Scaling API Reference.
module Stratosphere.ResourceProperties.AutoScalingMetricsCollection 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 AutoScalingMetricsCollection. See
-- 'autoScalingMetricsCollection' for a more convenient constructor.
data AutoScalingMetricsCollection =
AutoScalingMetricsCollection
{ _autoScalingMetricsCollectionGranularity :: Val Text
, _autoScalingMetricsCollectionMetrics :: Maybe [Val Text]
} deriving (Show, Generic)
instance ToJSON AutoScalingMetricsCollection where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 29, omitNothingFields = True }
instance FromJSON AutoScalingMetricsCollection where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 29, omitNothingFields = True }
-- | Constructor for 'AutoScalingMetricsCollection' containing required fields
-- as arguments.
autoScalingMetricsCollection
:: Val Text -- ^ 'asmcGranularity'
-> AutoScalingMetricsCollection
autoScalingMetricsCollection granularityarg =
AutoScalingMetricsCollection
{ _autoScalingMetricsCollectionGranularity = granularityarg
, _autoScalingMetricsCollectionMetrics = Nothing
}
-- | The frequency at which Auto Scaling sends aggregated data to CloudWatch.
-- For example, you can specify 1Minute to send aggregated data to CloudWatch
-- every minute.
asmcGranularity :: Lens' AutoScalingMetricsCollection (Val Text)
asmcGranularity = lens _autoScalingMetricsCollectionGranularity (\s a -> s { _autoScalingMetricsCollectionGranularity = a })
-- | The list of metrics to collect. If you don't specify any metrics, all
-- metrics are enabled.
asmcMetrics :: Lens' AutoScalingMetricsCollection (Maybe [Val Text])
asmcMetrics = lens _autoScalingMetricsCollectionMetrics (\s a -> s { _autoScalingMetricsCollectionMetrics = a })