{-# 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.EMR.Types.AutoScalingPolicyDescription where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EMR.Types.AutoScalingPolicyStatus
import Amazonka.EMR.Types.ScalingConstraints
import Amazonka.EMR.Types.ScalingRule
import qualified Amazonka.Prelude as Prelude
data AutoScalingPolicyDescription = AutoScalingPolicyDescription'
{
AutoScalingPolicyDescription -> Maybe ScalingConstraints
constraints :: Prelude.Maybe ScalingConstraints,
AutoScalingPolicyDescription -> Maybe [ScalingRule]
rules :: Prelude.Maybe [ScalingRule],
AutoScalingPolicyDescription -> Maybe AutoScalingPolicyStatus
status :: Prelude.Maybe AutoScalingPolicyStatus
}
deriving (AutoScalingPolicyDescription
-> AutoScalingPolicyDescription -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AutoScalingPolicyDescription
-> AutoScalingPolicyDescription -> Bool
$c/= :: AutoScalingPolicyDescription
-> AutoScalingPolicyDescription -> Bool
== :: AutoScalingPolicyDescription
-> AutoScalingPolicyDescription -> Bool
$c== :: AutoScalingPolicyDescription
-> AutoScalingPolicyDescription -> Bool
Prelude.Eq, ReadPrec [AutoScalingPolicyDescription]
ReadPrec AutoScalingPolicyDescription
Int -> ReadS AutoScalingPolicyDescription
ReadS [AutoScalingPolicyDescription]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AutoScalingPolicyDescription]
$creadListPrec :: ReadPrec [AutoScalingPolicyDescription]
readPrec :: ReadPrec AutoScalingPolicyDescription
$creadPrec :: ReadPrec AutoScalingPolicyDescription
readList :: ReadS [AutoScalingPolicyDescription]
$creadList :: ReadS [AutoScalingPolicyDescription]
readsPrec :: Int -> ReadS AutoScalingPolicyDescription
$creadsPrec :: Int -> ReadS AutoScalingPolicyDescription
Prelude.Read, Int -> AutoScalingPolicyDescription -> ShowS
[AutoScalingPolicyDescription] -> ShowS
AutoScalingPolicyDescription -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AutoScalingPolicyDescription] -> ShowS
$cshowList :: [AutoScalingPolicyDescription] -> ShowS
show :: AutoScalingPolicyDescription -> String
$cshow :: AutoScalingPolicyDescription -> String
showsPrec :: Int -> AutoScalingPolicyDescription -> ShowS
$cshowsPrec :: Int -> AutoScalingPolicyDescription -> ShowS
Prelude.Show, forall x.
Rep AutoScalingPolicyDescription x -> AutoScalingPolicyDescription
forall x.
AutoScalingPolicyDescription -> Rep AutoScalingPolicyDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AutoScalingPolicyDescription x -> AutoScalingPolicyDescription
$cfrom :: forall x.
AutoScalingPolicyDescription -> Rep AutoScalingPolicyDescription x
Prelude.Generic)
newAutoScalingPolicyDescription ::
AutoScalingPolicyDescription
newAutoScalingPolicyDescription :: AutoScalingPolicyDescription
newAutoScalingPolicyDescription =
AutoScalingPolicyDescription'
{ $sel:constraints:AutoScalingPolicyDescription' :: Maybe ScalingConstraints
constraints =
forall a. Maybe a
Prelude.Nothing,
$sel:rules:AutoScalingPolicyDescription' :: Maybe [ScalingRule]
rules = forall a. Maybe a
Prelude.Nothing,
$sel:status:AutoScalingPolicyDescription' :: Maybe AutoScalingPolicyStatus
status = forall a. Maybe a
Prelude.Nothing
}
autoScalingPolicyDescription_constraints :: Lens.Lens' AutoScalingPolicyDescription (Prelude.Maybe ScalingConstraints)
autoScalingPolicyDescription_constraints :: Lens' AutoScalingPolicyDescription (Maybe ScalingConstraints)
autoScalingPolicyDescription_constraints = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AutoScalingPolicyDescription' {Maybe ScalingConstraints
constraints :: Maybe ScalingConstraints
$sel:constraints:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe ScalingConstraints
constraints} -> Maybe ScalingConstraints
constraints) (\s :: AutoScalingPolicyDescription
s@AutoScalingPolicyDescription' {} Maybe ScalingConstraints
a -> AutoScalingPolicyDescription
s {$sel:constraints:AutoScalingPolicyDescription' :: Maybe ScalingConstraints
constraints = Maybe ScalingConstraints
a} :: AutoScalingPolicyDescription)
autoScalingPolicyDescription_rules :: Lens.Lens' AutoScalingPolicyDescription (Prelude.Maybe [ScalingRule])
autoScalingPolicyDescription_rules :: Lens' AutoScalingPolicyDescription (Maybe [ScalingRule])
autoScalingPolicyDescription_rules = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AutoScalingPolicyDescription' {Maybe [ScalingRule]
rules :: Maybe [ScalingRule]
$sel:rules:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe [ScalingRule]
rules} -> Maybe [ScalingRule]
rules) (\s :: AutoScalingPolicyDescription
s@AutoScalingPolicyDescription' {} Maybe [ScalingRule]
a -> AutoScalingPolicyDescription
s {$sel:rules:AutoScalingPolicyDescription' :: Maybe [ScalingRule]
rules = Maybe [ScalingRule]
a} :: AutoScalingPolicyDescription) 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
autoScalingPolicyDescription_status :: Lens.Lens' AutoScalingPolicyDescription (Prelude.Maybe AutoScalingPolicyStatus)
autoScalingPolicyDescription_status :: Lens' AutoScalingPolicyDescription (Maybe AutoScalingPolicyStatus)
autoScalingPolicyDescription_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AutoScalingPolicyDescription' {Maybe AutoScalingPolicyStatus
status :: Maybe AutoScalingPolicyStatus
$sel:status:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe AutoScalingPolicyStatus
status} -> Maybe AutoScalingPolicyStatus
status) (\s :: AutoScalingPolicyDescription
s@AutoScalingPolicyDescription' {} Maybe AutoScalingPolicyStatus
a -> AutoScalingPolicyDescription
s {$sel:status:AutoScalingPolicyDescription' :: Maybe AutoScalingPolicyStatus
status = Maybe AutoScalingPolicyStatus
a} :: AutoScalingPolicyDescription)
instance Data.FromJSON AutoScalingPolicyDescription where
parseJSON :: Value -> Parser AutoScalingPolicyDescription
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"AutoScalingPolicyDescription"
( \Object
x ->
Maybe ScalingConstraints
-> Maybe [ScalingRule]
-> Maybe AutoScalingPolicyStatus
-> AutoScalingPolicyDescription
AutoScalingPolicyDescription'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Constraints")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Rules" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Status")
)
instance
Prelude.Hashable
AutoScalingPolicyDescription
where
hashWithSalt :: Int -> AutoScalingPolicyDescription -> Int
hashWithSalt Int
_salt AutoScalingPolicyDescription' {Maybe [ScalingRule]
Maybe AutoScalingPolicyStatus
Maybe ScalingConstraints
status :: Maybe AutoScalingPolicyStatus
rules :: Maybe [ScalingRule]
constraints :: Maybe ScalingConstraints
$sel:status:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe AutoScalingPolicyStatus
$sel:rules:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe [ScalingRule]
$sel:constraints:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe ScalingConstraints
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ScalingConstraints
constraints
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ScalingRule]
rules
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AutoScalingPolicyStatus
status
instance Prelude.NFData AutoScalingPolicyDescription where
rnf :: AutoScalingPolicyDescription -> ()
rnf AutoScalingPolicyDescription' {Maybe [ScalingRule]
Maybe AutoScalingPolicyStatus
Maybe ScalingConstraints
status :: Maybe AutoScalingPolicyStatus
rules :: Maybe [ScalingRule]
constraints :: Maybe ScalingConstraints
$sel:status:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe AutoScalingPolicyStatus
$sel:rules:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe [ScalingRule]
$sel:constraints:AutoScalingPolicyDescription' :: AutoScalingPolicyDescription -> Maybe ScalingConstraints
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe ScalingConstraints
constraints
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ScalingRule]
rules
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AutoScalingPolicyStatus
status