{-# 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.CostExplorer.Types.RightsizingRecommendation where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import Amazonka.CostExplorer.Types.CurrentInstance
import Amazonka.CostExplorer.Types.FindingReasonCode
import Amazonka.CostExplorer.Types.ModifyRecommendationDetail
import Amazonka.CostExplorer.Types.RightsizingType
import Amazonka.CostExplorer.Types.TerminateRecommendationDetail
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
data RightsizingRecommendation = RightsizingRecommendation'
{
RightsizingRecommendation -> Maybe Text
accountId :: Prelude.Maybe Prelude.Text,
RightsizingRecommendation -> Maybe CurrentInstance
currentInstance :: Prelude.Maybe CurrentInstance,
RightsizingRecommendation -> Maybe [FindingReasonCode]
findingReasonCodes :: Prelude.Maybe [FindingReasonCode],
RightsizingRecommendation -> Maybe ModifyRecommendationDetail
modifyRecommendationDetail :: Prelude.Maybe ModifyRecommendationDetail,
RightsizingRecommendation -> Maybe RightsizingType
rightsizingType :: Prelude.Maybe RightsizingType,
RightsizingRecommendation -> Maybe TerminateRecommendationDetail
terminateRecommendationDetail :: Prelude.Maybe TerminateRecommendationDetail
}
deriving (RightsizingRecommendation -> RightsizingRecommendation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RightsizingRecommendation -> RightsizingRecommendation -> Bool
$c/= :: RightsizingRecommendation -> RightsizingRecommendation -> Bool
== :: RightsizingRecommendation -> RightsizingRecommendation -> Bool
$c== :: RightsizingRecommendation -> RightsizingRecommendation -> Bool
Prelude.Eq, ReadPrec [RightsizingRecommendation]
ReadPrec RightsizingRecommendation
Int -> ReadS RightsizingRecommendation
ReadS [RightsizingRecommendation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RightsizingRecommendation]
$creadListPrec :: ReadPrec [RightsizingRecommendation]
readPrec :: ReadPrec RightsizingRecommendation
$creadPrec :: ReadPrec RightsizingRecommendation
readList :: ReadS [RightsizingRecommendation]
$creadList :: ReadS [RightsizingRecommendation]
readsPrec :: Int -> ReadS RightsizingRecommendation
$creadsPrec :: Int -> ReadS RightsizingRecommendation
Prelude.Read, Int -> RightsizingRecommendation -> ShowS
[RightsizingRecommendation] -> ShowS
RightsizingRecommendation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RightsizingRecommendation] -> ShowS
$cshowList :: [RightsizingRecommendation] -> ShowS
show :: RightsizingRecommendation -> String
$cshow :: RightsizingRecommendation -> String
showsPrec :: Int -> RightsizingRecommendation -> ShowS
$cshowsPrec :: Int -> RightsizingRecommendation -> ShowS
Prelude.Show, forall x.
Rep RightsizingRecommendation x -> RightsizingRecommendation
forall x.
RightsizingRecommendation -> Rep RightsizingRecommendation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep RightsizingRecommendation x -> RightsizingRecommendation
$cfrom :: forall x.
RightsizingRecommendation -> Rep RightsizingRecommendation x
Prelude.Generic)
newRightsizingRecommendation ::
RightsizingRecommendation
newRightsizingRecommendation :: RightsizingRecommendation
newRightsizingRecommendation =
RightsizingRecommendation'
{ $sel:accountId:RightsizingRecommendation' :: Maybe Text
accountId =
forall a. Maybe a
Prelude.Nothing,
$sel:currentInstance:RightsizingRecommendation' :: Maybe CurrentInstance
currentInstance = forall a. Maybe a
Prelude.Nothing,
$sel:findingReasonCodes:RightsizingRecommendation' :: Maybe [FindingReasonCode]
findingReasonCodes = forall a. Maybe a
Prelude.Nothing,
$sel:modifyRecommendationDetail:RightsizingRecommendation' :: Maybe ModifyRecommendationDetail
modifyRecommendationDetail = forall a. Maybe a
Prelude.Nothing,
$sel:rightsizingType:RightsizingRecommendation' :: Maybe RightsizingType
rightsizingType = forall a. Maybe a
Prelude.Nothing,
$sel:terminateRecommendationDetail:RightsizingRecommendation' :: Maybe TerminateRecommendationDetail
terminateRecommendationDetail = forall a. Maybe a
Prelude.Nothing
}
rightsizingRecommendation_accountId :: Lens.Lens' RightsizingRecommendation (Prelude.Maybe Prelude.Text)
rightsizingRecommendation_accountId :: Lens' RightsizingRecommendation (Maybe Text)
rightsizingRecommendation_accountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RightsizingRecommendation' {Maybe Text
accountId :: Maybe Text
$sel:accountId:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe Text
accountId} -> Maybe Text
accountId) (\s :: RightsizingRecommendation
s@RightsizingRecommendation' {} Maybe Text
a -> RightsizingRecommendation
s {$sel:accountId:RightsizingRecommendation' :: Maybe Text
accountId = Maybe Text
a} :: RightsizingRecommendation)
rightsizingRecommendation_currentInstance :: Lens.Lens' RightsizingRecommendation (Prelude.Maybe CurrentInstance)
rightsizingRecommendation_currentInstance :: Lens' RightsizingRecommendation (Maybe CurrentInstance)
rightsizingRecommendation_currentInstance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RightsizingRecommendation' {Maybe CurrentInstance
currentInstance :: Maybe CurrentInstance
$sel:currentInstance:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe CurrentInstance
currentInstance} -> Maybe CurrentInstance
currentInstance) (\s :: RightsizingRecommendation
s@RightsizingRecommendation' {} Maybe CurrentInstance
a -> RightsizingRecommendation
s {$sel:currentInstance:RightsizingRecommendation' :: Maybe CurrentInstance
currentInstance = Maybe CurrentInstance
a} :: RightsizingRecommendation)
rightsizingRecommendation_findingReasonCodes :: Lens.Lens' RightsizingRecommendation (Prelude.Maybe [FindingReasonCode])
rightsizingRecommendation_findingReasonCodes :: Lens' RightsizingRecommendation (Maybe [FindingReasonCode])
rightsizingRecommendation_findingReasonCodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RightsizingRecommendation' {Maybe [FindingReasonCode]
findingReasonCodes :: Maybe [FindingReasonCode]
$sel:findingReasonCodes:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe [FindingReasonCode]
findingReasonCodes} -> Maybe [FindingReasonCode]
findingReasonCodes) (\s :: RightsizingRecommendation
s@RightsizingRecommendation' {} Maybe [FindingReasonCode]
a -> RightsizingRecommendation
s {$sel:findingReasonCodes:RightsizingRecommendation' :: Maybe [FindingReasonCode]
findingReasonCodes = Maybe [FindingReasonCode]
a} :: RightsizingRecommendation) 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
rightsizingRecommendation_modifyRecommendationDetail :: Lens.Lens' RightsizingRecommendation (Prelude.Maybe ModifyRecommendationDetail)
rightsizingRecommendation_modifyRecommendationDetail :: Lens' RightsizingRecommendation (Maybe ModifyRecommendationDetail)
rightsizingRecommendation_modifyRecommendationDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RightsizingRecommendation' {Maybe ModifyRecommendationDetail
modifyRecommendationDetail :: Maybe ModifyRecommendationDetail
$sel:modifyRecommendationDetail:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe ModifyRecommendationDetail
modifyRecommendationDetail} -> Maybe ModifyRecommendationDetail
modifyRecommendationDetail) (\s :: RightsizingRecommendation
s@RightsizingRecommendation' {} Maybe ModifyRecommendationDetail
a -> RightsizingRecommendation
s {$sel:modifyRecommendationDetail:RightsizingRecommendation' :: Maybe ModifyRecommendationDetail
modifyRecommendationDetail = Maybe ModifyRecommendationDetail
a} :: RightsizingRecommendation)
rightsizingRecommendation_rightsizingType :: Lens.Lens' RightsizingRecommendation (Prelude.Maybe RightsizingType)
rightsizingRecommendation_rightsizingType :: Lens' RightsizingRecommendation (Maybe RightsizingType)
rightsizingRecommendation_rightsizingType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RightsizingRecommendation' {Maybe RightsizingType
rightsizingType :: Maybe RightsizingType
$sel:rightsizingType:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe RightsizingType
rightsizingType} -> Maybe RightsizingType
rightsizingType) (\s :: RightsizingRecommendation
s@RightsizingRecommendation' {} Maybe RightsizingType
a -> RightsizingRecommendation
s {$sel:rightsizingType:RightsizingRecommendation' :: Maybe RightsizingType
rightsizingType = Maybe RightsizingType
a} :: RightsizingRecommendation)
rightsizingRecommendation_terminateRecommendationDetail :: Lens.Lens' RightsizingRecommendation (Prelude.Maybe TerminateRecommendationDetail)
rightsizingRecommendation_terminateRecommendationDetail :: Lens'
RightsizingRecommendation (Maybe TerminateRecommendationDetail)
rightsizingRecommendation_terminateRecommendationDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RightsizingRecommendation' {Maybe TerminateRecommendationDetail
terminateRecommendationDetail :: Maybe TerminateRecommendationDetail
$sel:terminateRecommendationDetail:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe TerminateRecommendationDetail
terminateRecommendationDetail} -> Maybe TerminateRecommendationDetail
terminateRecommendationDetail) (\s :: RightsizingRecommendation
s@RightsizingRecommendation' {} Maybe TerminateRecommendationDetail
a -> RightsizingRecommendation
s {$sel:terminateRecommendationDetail:RightsizingRecommendation' :: Maybe TerminateRecommendationDetail
terminateRecommendationDetail = Maybe TerminateRecommendationDetail
a} :: RightsizingRecommendation)
instance Data.FromJSON RightsizingRecommendation where
parseJSON :: Value -> Parser RightsizingRecommendation
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"RightsizingRecommendation"
( \Object
x ->
Maybe Text
-> Maybe CurrentInstance
-> Maybe [FindingReasonCode]
-> Maybe ModifyRecommendationDetail
-> Maybe RightsizingType
-> Maybe TerminateRecommendationDetail
-> RightsizingRecommendation
RightsizingRecommendation'
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
"AccountId")
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
"CurrentInstance")
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
"FindingReasonCodes"
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
"ModifyRecommendationDetail")
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
"RightsizingType")
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
"TerminateRecommendationDetail")
)
instance Prelude.Hashable RightsizingRecommendation where
hashWithSalt :: Int -> RightsizingRecommendation -> Int
hashWithSalt Int
_salt RightsizingRecommendation' {Maybe [FindingReasonCode]
Maybe Text
Maybe RightsizingType
Maybe CurrentInstance
Maybe ModifyRecommendationDetail
Maybe TerminateRecommendationDetail
terminateRecommendationDetail :: Maybe TerminateRecommendationDetail
rightsizingType :: Maybe RightsizingType
modifyRecommendationDetail :: Maybe ModifyRecommendationDetail
findingReasonCodes :: Maybe [FindingReasonCode]
currentInstance :: Maybe CurrentInstance
accountId :: Maybe Text
$sel:terminateRecommendationDetail:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe TerminateRecommendationDetail
$sel:rightsizingType:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe RightsizingType
$sel:modifyRecommendationDetail:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe ModifyRecommendationDetail
$sel:findingReasonCodes:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe [FindingReasonCode]
$sel:currentInstance:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe CurrentInstance
$sel:accountId:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
accountId
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CurrentInstance
currentInstance
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [FindingReasonCode]
findingReasonCodes
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModifyRecommendationDetail
modifyRecommendationDetail
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RightsizingType
rightsizingType
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TerminateRecommendationDetail
terminateRecommendationDetail
instance Prelude.NFData RightsizingRecommendation where
rnf :: RightsizingRecommendation -> ()
rnf RightsizingRecommendation' {Maybe [FindingReasonCode]
Maybe Text
Maybe RightsizingType
Maybe CurrentInstance
Maybe ModifyRecommendationDetail
Maybe TerminateRecommendationDetail
terminateRecommendationDetail :: Maybe TerminateRecommendationDetail
rightsizingType :: Maybe RightsizingType
modifyRecommendationDetail :: Maybe ModifyRecommendationDetail
findingReasonCodes :: Maybe [FindingReasonCode]
currentInstance :: Maybe CurrentInstance
accountId :: Maybe Text
$sel:terminateRecommendationDetail:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe TerminateRecommendationDetail
$sel:rightsizingType:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe RightsizingType
$sel:modifyRecommendationDetail:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe ModifyRecommendationDetail
$sel:findingReasonCodes:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe [FindingReasonCode]
$sel:currentInstance:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe CurrentInstance
$sel:accountId:RightsizingRecommendation' :: RightsizingRecommendation -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
accountId
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CurrentInstance
currentInstance
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [FindingReasonCode]
findingReasonCodes
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModifyRecommendationDetail
modifyRecommendationDetail
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RightsizingType
rightsizingType
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TerminateRecommendationDetail
terminateRecommendationDetail