{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Amazonka.Route53.Types.CloudWatchAlarmConfiguration where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.Route53.Internal
import Amazonka.Route53.Types.ComparisonOperator
import Amazonka.Route53.Types.Dimension
import Amazonka.Route53.Types.Statistic
data CloudWatchAlarmConfiguration = CloudWatchAlarmConfiguration'
{
CloudWatchAlarmConfiguration -> Maybe [Dimension]
dimensions :: Prelude.Maybe [Dimension],
CloudWatchAlarmConfiguration -> Natural
evaluationPeriods :: Prelude.Natural,
CloudWatchAlarmConfiguration -> Double
threshold :: Prelude.Double,
CloudWatchAlarmConfiguration -> ComparisonOperator
comparisonOperator :: ComparisonOperator,
CloudWatchAlarmConfiguration -> Natural
period :: Prelude.Natural,
CloudWatchAlarmConfiguration -> Text
metricName :: Prelude.Text,
CloudWatchAlarmConfiguration -> Text
namespace :: Prelude.Text,
CloudWatchAlarmConfiguration -> Statistic
statistic :: Statistic
}
deriving (CloudWatchAlarmConfiguration
-> CloudWatchAlarmConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CloudWatchAlarmConfiguration
-> CloudWatchAlarmConfiguration -> Bool
$c/= :: CloudWatchAlarmConfiguration
-> CloudWatchAlarmConfiguration -> Bool
== :: CloudWatchAlarmConfiguration
-> CloudWatchAlarmConfiguration -> Bool
$c== :: CloudWatchAlarmConfiguration
-> CloudWatchAlarmConfiguration -> Bool
Prelude.Eq, ReadPrec [CloudWatchAlarmConfiguration]
ReadPrec CloudWatchAlarmConfiguration
Int -> ReadS CloudWatchAlarmConfiguration
ReadS [CloudWatchAlarmConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CloudWatchAlarmConfiguration]
$creadListPrec :: ReadPrec [CloudWatchAlarmConfiguration]
readPrec :: ReadPrec CloudWatchAlarmConfiguration
$creadPrec :: ReadPrec CloudWatchAlarmConfiguration
readList :: ReadS [CloudWatchAlarmConfiguration]
$creadList :: ReadS [CloudWatchAlarmConfiguration]
readsPrec :: Int -> ReadS CloudWatchAlarmConfiguration
$creadsPrec :: Int -> ReadS CloudWatchAlarmConfiguration
Prelude.Read, Int -> CloudWatchAlarmConfiguration -> ShowS
[CloudWatchAlarmConfiguration] -> ShowS
CloudWatchAlarmConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CloudWatchAlarmConfiguration] -> ShowS
$cshowList :: [CloudWatchAlarmConfiguration] -> ShowS
show :: CloudWatchAlarmConfiguration -> String
$cshow :: CloudWatchAlarmConfiguration -> String
showsPrec :: Int -> CloudWatchAlarmConfiguration -> ShowS
$cshowsPrec :: Int -> CloudWatchAlarmConfiguration -> ShowS
Prelude.Show, forall x.
Rep CloudWatchAlarmConfiguration x -> CloudWatchAlarmConfiguration
forall x.
CloudWatchAlarmConfiguration -> Rep CloudWatchAlarmConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CloudWatchAlarmConfiguration x -> CloudWatchAlarmConfiguration
$cfrom :: forall x.
CloudWatchAlarmConfiguration -> Rep CloudWatchAlarmConfiguration x
Prelude.Generic)
newCloudWatchAlarmConfiguration ::
Prelude.Natural ->
Prelude.Double ->
ComparisonOperator ->
Prelude.Natural ->
Prelude.Text ->
Prelude.Text ->
Statistic ->
CloudWatchAlarmConfiguration
newCloudWatchAlarmConfiguration :: Natural
-> Double
-> ComparisonOperator
-> Natural
-> Text
-> Text
-> Statistic
-> CloudWatchAlarmConfiguration
newCloudWatchAlarmConfiguration
Natural
pEvaluationPeriods_
Double
pThreshold_
ComparisonOperator
pComparisonOperator_
Natural
pPeriod_
Text
pMetricName_
Text
pNamespace_
Statistic
pStatistic_ =
CloudWatchAlarmConfiguration'
{ $sel:dimensions:CloudWatchAlarmConfiguration' :: Maybe [Dimension]
dimensions =
forall a. Maybe a
Prelude.Nothing,
$sel:evaluationPeriods:CloudWatchAlarmConfiguration' :: Natural
evaluationPeriods = Natural
pEvaluationPeriods_,
$sel:threshold:CloudWatchAlarmConfiguration' :: Double
threshold = Double
pThreshold_,
$sel:comparisonOperator:CloudWatchAlarmConfiguration' :: ComparisonOperator
comparisonOperator = ComparisonOperator
pComparisonOperator_,
$sel:period:CloudWatchAlarmConfiguration' :: Natural
period = Natural
pPeriod_,
$sel:metricName:CloudWatchAlarmConfiguration' :: Text
metricName = Text
pMetricName_,
$sel:namespace:CloudWatchAlarmConfiguration' :: Text
namespace = Text
pNamespace_,
$sel:statistic:CloudWatchAlarmConfiguration' :: Statistic
statistic = Statistic
pStatistic_
}
cloudWatchAlarmConfiguration_dimensions :: Lens.Lens' CloudWatchAlarmConfiguration (Prelude.Maybe [Dimension])
cloudWatchAlarmConfiguration_dimensions :: Lens' CloudWatchAlarmConfiguration (Maybe [Dimension])
cloudWatchAlarmConfiguration_dimensions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CloudWatchAlarmConfiguration' {Maybe [Dimension]
dimensions :: Maybe [Dimension]
$sel:dimensions:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Maybe [Dimension]
dimensions} -> Maybe [Dimension]
dimensions) (\s :: CloudWatchAlarmConfiguration
s@CloudWatchAlarmConfiguration' {} Maybe [Dimension]
a -> CloudWatchAlarmConfiguration
s {$sel:dimensions:CloudWatchAlarmConfiguration' :: Maybe [Dimension]
dimensions = Maybe [Dimension]
a} :: CloudWatchAlarmConfiguration) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
cloudWatchAlarmConfiguration_evaluationPeriods :: Lens.Lens' CloudWatchAlarmConfiguration Prelude.Natural
cloudWatchAlarmConfiguration_evaluationPeriods :: Lens' CloudWatchAlarmConfiguration Natural
cloudWatchAlarmConfiguration_evaluationPeriods = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CloudWatchAlarmConfiguration' {Natural
evaluationPeriods :: Natural
$sel:evaluationPeriods:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Natural
evaluationPeriods} -> Natural
evaluationPeriods) (\s :: CloudWatchAlarmConfiguration
s@CloudWatchAlarmConfiguration' {} Natural
a -> CloudWatchAlarmConfiguration
s {$sel:evaluationPeriods:CloudWatchAlarmConfiguration' :: Natural
evaluationPeriods = Natural
a} :: CloudWatchAlarmConfiguration)
cloudWatchAlarmConfiguration_threshold :: Lens.Lens' CloudWatchAlarmConfiguration Prelude.Double
cloudWatchAlarmConfiguration_threshold :: Lens' CloudWatchAlarmConfiguration Double
cloudWatchAlarmConfiguration_threshold = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CloudWatchAlarmConfiguration' {Double
threshold :: Double
$sel:threshold:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Double
threshold} -> Double
threshold) (\s :: CloudWatchAlarmConfiguration
s@CloudWatchAlarmConfiguration' {} Double
a -> CloudWatchAlarmConfiguration
s {$sel:threshold:CloudWatchAlarmConfiguration' :: Double
threshold = Double
a} :: CloudWatchAlarmConfiguration)
cloudWatchAlarmConfiguration_comparisonOperator :: Lens.Lens' CloudWatchAlarmConfiguration ComparisonOperator
cloudWatchAlarmConfiguration_comparisonOperator :: Lens' CloudWatchAlarmConfiguration ComparisonOperator
cloudWatchAlarmConfiguration_comparisonOperator = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CloudWatchAlarmConfiguration' {ComparisonOperator
comparisonOperator :: ComparisonOperator
$sel:comparisonOperator:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> ComparisonOperator
comparisonOperator} -> ComparisonOperator
comparisonOperator) (\s :: CloudWatchAlarmConfiguration
s@CloudWatchAlarmConfiguration' {} ComparisonOperator
a -> CloudWatchAlarmConfiguration
s {$sel:comparisonOperator:CloudWatchAlarmConfiguration' :: ComparisonOperator
comparisonOperator = ComparisonOperator
a} :: CloudWatchAlarmConfiguration)
cloudWatchAlarmConfiguration_period :: Lens.Lens' CloudWatchAlarmConfiguration Prelude.Natural
cloudWatchAlarmConfiguration_period :: Lens' CloudWatchAlarmConfiguration Natural
cloudWatchAlarmConfiguration_period = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CloudWatchAlarmConfiguration' {Natural
period :: Natural
$sel:period:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Natural
period} -> Natural
period) (\s :: CloudWatchAlarmConfiguration
s@CloudWatchAlarmConfiguration' {} Natural
a -> CloudWatchAlarmConfiguration
s {$sel:period:CloudWatchAlarmConfiguration' :: Natural
period = Natural
a} :: CloudWatchAlarmConfiguration)
cloudWatchAlarmConfiguration_metricName :: Lens.Lens' CloudWatchAlarmConfiguration Prelude.Text
cloudWatchAlarmConfiguration_metricName :: Lens' CloudWatchAlarmConfiguration Text
cloudWatchAlarmConfiguration_metricName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CloudWatchAlarmConfiguration' {Text
metricName :: Text
$sel:metricName:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Text
metricName} -> Text
metricName) (\s :: CloudWatchAlarmConfiguration
s@CloudWatchAlarmConfiguration' {} Text
a -> CloudWatchAlarmConfiguration
s {$sel:metricName:CloudWatchAlarmConfiguration' :: Text
metricName = Text
a} :: CloudWatchAlarmConfiguration)
cloudWatchAlarmConfiguration_namespace :: Lens.Lens' CloudWatchAlarmConfiguration Prelude.Text
cloudWatchAlarmConfiguration_namespace :: Lens' CloudWatchAlarmConfiguration Text
cloudWatchAlarmConfiguration_namespace = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CloudWatchAlarmConfiguration' {Text
namespace :: Text
$sel:namespace:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Text
namespace} -> Text
namespace) (\s :: CloudWatchAlarmConfiguration
s@CloudWatchAlarmConfiguration' {} Text
a -> CloudWatchAlarmConfiguration
s {$sel:namespace:CloudWatchAlarmConfiguration' :: Text
namespace = Text
a} :: CloudWatchAlarmConfiguration)
cloudWatchAlarmConfiguration_statistic :: Lens.Lens' CloudWatchAlarmConfiguration Statistic
cloudWatchAlarmConfiguration_statistic :: Lens' CloudWatchAlarmConfiguration Statistic
cloudWatchAlarmConfiguration_statistic = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CloudWatchAlarmConfiguration' {Statistic
statistic :: Statistic
$sel:statistic:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Statistic
statistic} -> Statistic
statistic) (\s :: CloudWatchAlarmConfiguration
s@CloudWatchAlarmConfiguration' {} Statistic
a -> CloudWatchAlarmConfiguration
s {$sel:statistic:CloudWatchAlarmConfiguration' :: Statistic
statistic = Statistic
a} :: CloudWatchAlarmConfiguration)
instance Data.FromXML CloudWatchAlarmConfiguration where
parseXML :: [Node] -> Either String CloudWatchAlarmConfiguration
parseXML [Node]
x =
Maybe [Dimension]
-> Natural
-> Double
-> ComparisonOperator
-> Natural
-> Text
-> Text
-> Statistic
-> CloudWatchAlarmConfiguration
CloudWatchAlarmConfiguration'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Dimensions"
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"Dimension")
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"EvaluationPeriods")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Threshold")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"ComparisonOperator")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Period")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"MetricName")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Namespace")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Statistic")
instance
Prelude.Hashable
CloudWatchAlarmConfiguration
where
hashWithSalt :: Int -> CloudWatchAlarmConfiguration -> Int
hashWithSalt Int
_salt CloudWatchAlarmConfiguration' {Double
Natural
Maybe [Dimension]
Text
ComparisonOperator
Statistic
statistic :: Statistic
namespace :: Text
metricName :: Text
period :: Natural
comparisonOperator :: ComparisonOperator
threshold :: Double
evaluationPeriods :: Natural
dimensions :: Maybe [Dimension]
$sel:statistic:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Statistic
$sel:namespace:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Text
$sel:metricName:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Text
$sel:period:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Natural
$sel:comparisonOperator:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> ComparisonOperator
$sel:threshold:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Double
$sel:evaluationPeriods:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Natural
$sel:dimensions:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Maybe [Dimension]
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Dimension]
dimensions
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
evaluationPeriods
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Double
threshold
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ComparisonOperator
comparisonOperator
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
period
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
metricName
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
namespace
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Statistic
statistic
instance Prelude.NFData CloudWatchAlarmConfiguration where
rnf :: CloudWatchAlarmConfiguration -> ()
rnf CloudWatchAlarmConfiguration' {Double
Natural
Maybe [Dimension]
Text
ComparisonOperator
Statistic
statistic :: Statistic
namespace :: Text
metricName :: Text
period :: Natural
comparisonOperator :: ComparisonOperator
threshold :: Double
evaluationPeriods :: Natural
dimensions :: Maybe [Dimension]
$sel:statistic:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Statistic
$sel:namespace:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Text
$sel:metricName:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Text
$sel:period:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Natural
$sel:comparisonOperator:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> ComparisonOperator
$sel:threshold:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Double
$sel:evaluationPeriods:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Natural
$sel:dimensions:CloudWatchAlarmConfiguration' :: CloudWatchAlarmConfiguration -> Maybe [Dimension]
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe [Dimension]
dimensions
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
evaluationPeriods
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Double
threshold
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ComparisonOperator
comparisonOperator
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
period
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
metricName
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
namespace
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Statistic
statistic