packages feed

stratosphere-0.34.0: library-gen/Stratosphere/ResourceProperties/EMRClusterCloudWatchAlarmDefinition.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html

module Stratosphere.ResourceProperties.EMRClusterCloudWatchAlarmDefinition where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.EMRClusterMetricDimension

-- | Full data type definition for EMRClusterCloudWatchAlarmDefinition. See
-- 'emrClusterCloudWatchAlarmDefinition' for a more convenient constructor.
data EMRClusterCloudWatchAlarmDefinition =
  EMRClusterCloudWatchAlarmDefinition
  { _eMRClusterCloudWatchAlarmDefinitionComparisonOperator :: Val Text
  , _eMRClusterCloudWatchAlarmDefinitionDimensions :: Maybe [EMRClusterMetricDimension]
  , _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods :: Maybe (Val Integer)
  , _eMRClusterCloudWatchAlarmDefinitionMetricName :: Val Text
  , _eMRClusterCloudWatchAlarmDefinitionNamespace :: Maybe (Val Text)
  , _eMRClusterCloudWatchAlarmDefinitionPeriod :: Val Integer
  , _eMRClusterCloudWatchAlarmDefinitionStatistic :: Maybe (Val Text)
  , _eMRClusterCloudWatchAlarmDefinitionThreshold :: Val Double
  , _eMRClusterCloudWatchAlarmDefinitionUnit :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON EMRClusterCloudWatchAlarmDefinition where
  toJSON EMRClusterCloudWatchAlarmDefinition{..} =
    object $
    catMaybes
    [ (Just . ("ComparisonOperator",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionComparisonOperator
    , fmap (("Dimensions",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionDimensions
    , fmap (("EvaluationPeriods",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods
    , (Just . ("MetricName",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionMetricName
    , fmap (("Namespace",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionNamespace
    , (Just . ("Period",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionPeriod
    , fmap (("Statistic",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionStatistic
    , (Just . ("Threshold",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionThreshold
    , fmap (("Unit",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionUnit
    ]

-- | Constructor for 'EMRClusterCloudWatchAlarmDefinition' containing required
-- fields as arguments.
emrClusterCloudWatchAlarmDefinition
  :: Val Text -- ^ 'emrccwadComparisonOperator'
  -> Val Text -- ^ 'emrccwadMetricName'
  -> Val Integer -- ^ 'emrccwadPeriod'
  -> Val Double -- ^ 'emrccwadThreshold'
  -> EMRClusterCloudWatchAlarmDefinition
emrClusterCloudWatchAlarmDefinition comparisonOperatorarg metricNamearg periodarg thresholdarg =
  EMRClusterCloudWatchAlarmDefinition
  { _eMRClusterCloudWatchAlarmDefinitionComparisonOperator = comparisonOperatorarg
  , _eMRClusterCloudWatchAlarmDefinitionDimensions = Nothing
  , _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods = Nothing
  , _eMRClusterCloudWatchAlarmDefinitionMetricName = metricNamearg
  , _eMRClusterCloudWatchAlarmDefinitionNamespace = Nothing
  , _eMRClusterCloudWatchAlarmDefinitionPeriod = periodarg
  , _eMRClusterCloudWatchAlarmDefinitionStatistic = Nothing
  , _eMRClusterCloudWatchAlarmDefinitionThreshold = thresholdarg
  , _eMRClusterCloudWatchAlarmDefinitionUnit = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-comparisonoperator
emrccwadComparisonOperator :: Lens' EMRClusterCloudWatchAlarmDefinition (Val Text)
emrccwadComparisonOperator = lens _eMRClusterCloudWatchAlarmDefinitionComparisonOperator (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionComparisonOperator = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-dimensions
emrccwadDimensions :: Lens' EMRClusterCloudWatchAlarmDefinition (Maybe [EMRClusterMetricDimension])
emrccwadDimensions = lens _eMRClusterCloudWatchAlarmDefinitionDimensions (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionDimensions = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-evaluationperiods
emrccwadEvaluationPeriods :: Lens' EMRClusterCloudWatchAlarmDefinition (Maybe (Val Integer))
emrccwadEvaluationPeriods = lens _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-metricname
emrccwadMetricName :: Lens' EMRClusterCloudWatchAlarmDefinition (Val Text)
emrccwadMetricName = lens _eMRClusterCloudWatchAlarmDefinitionMetricName (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionMetricName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-namespace
emrccwadNamespace :: Lens' EMRClusterCloudWatchAlarmDefinition (Maybe (Val Text))
emrccwadNamespace = lens _eMRClusterCloudWatchAlarmDefinitionNamespace (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionNamespace = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-period
emrccwadPeriod :: Lens' EMRClusterCloudWatchAlarmDefinition (Val Integer)
emrccwadPeriod = lens _eMRClusterCloudWatchAlarmDefinitionPeriod (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionPeriod = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-statistic
emrccwadStatistic :: Lens' EMRClusterCloudWatchAlarmDefinition (Maybe (Val Text))
emrccwadStatistic = lens _eMRClusterCloudWatchAlarmDefinitionStatistic (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionStatistic = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-threshold
emrccwadThreshold :: Lens' EMRClusterCloudWatchAlarmDefinition (Val Double)
emrccwadThreshold = lens _eMRClusterCloudWatchAlarmDefinitionThreshold (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionThreshold = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html#cfn-elasticmapreduce-cluster-cloudwatchalarmdefinition-unit
emrccwadUnit :: Lens' EMRClusterCloudWatchAlarmDefinition (Maybe (Val Text))
emrccwadUnit = lens _eMRClusterCloudWatchAlarmDefinitionUnit (\s a -> s { _eMRClusterCloudWatchAlarmDefinitionUnit = a })