{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# 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 . fmap Integer') _eMRClusterCloudWatchAlarmDefinitionEvaluationPeriods , (Just . ("MetricName",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionMetricName , fmap (("Namespace",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionNamespace , (Just . ("Period",) . toJSON . fmap Integer') _eMRClusterCloudWatchAlarmDefinitionPeriod , fmap (("Statistic",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionStatistic , (Just . ("Threshold",) . toJSON . fmap Double') _eMRClusterCloudWatchAlarmDefinitionThreshold , fmap (("Unit",) . toJSON) _eMRClusterCloudWatchAlarmDefinitionUnit ] instance FromJSON EMRClusterCloudWatchAlarmDefinition where parseJSON (Object obj) = EMRClusterCloudWatchAlarmDefinition <$> (obj .: "ComparisonOperator") <*> (obj .:? "Dimensions") <*> fmap (fmap (fmap unInteger')) (obj .:? "EvaluationPeriods") <*> (obj .: "MetricName") <*> (obj .:? "Namespace") <*> fmap (fmap unInteger') (obj .: "Period") <*> (obj .:? "Statistic") <*> fmap (fmap unDouble') (obj .: "Threshold") <*> (obj .:? "Unit") parseJSON _ = mempty -- | 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 })