{-# 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.ResilienceHub.Types.TestRecommendation 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.ResilienceHub.Types.RecommendationItem
import Amazonka.ResilienceHub.Types.TestRisk
import Amazonka.ResilienceHub.Types.TestType
data TestRecommendation = TestRecommendation'
{
TestRecommendation -> Maybe Text
appComponentName :: Prelude.Maybe Prelude.Text,
TestRecommendation -> Maybe (NonEmpty Text)
dependsOnAlarms :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
TestRecommendation -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
TestRecommendation -> Maybe Text
intent :: Prelude.Maybe Prelude.Text,
TestRecommendation -> Maybe [RecommendationItem]
items :: Prelude.Maybe [RecommendationItem],
TestRecommendation -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
TestRecommendation -> Maybe Text
prerequisite :: Prelude.Maybe Prelude.Text,
TestRecommendation -> Maybe Text
recommendationId :: Prelude.Maybe Prelude.Text,
TestRecommendation -> Maybe TestRisk
risk :: Prelude.Maybe TestRisk,
TestRecommendation -> Maybe TestType
type' :: Prelude.Maybe TestType,
TestRecommendation -> Text
referenceId :: Prelude.Text
}
deriving (TestRecommendation -> TestRecommendation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TestRecommendation -> TestRecommendation -> Bool
$c/= :: TestRecommendation -> TestRecommendation -> Bool
== :: TestRecommendation -> TestRecommendation -> Bool
$c== :: TestRecommendation -> TestRecommendation -> Bool
Prelude.Eq, ReadPrec [TestRecommendation]
ReadPrec TestRecommendation
Int -> ReadS TestRecommendation
ReadS [TestRecommendation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TestRecommendation]
$creadListPrec :: ReadPrec [TestRecommendation]
readPrec :: ReadPrec TestRecommendation
$creadPrec :: ReadPrec TestRecommendation
readList :: ReadS [TestRecommendation]
$creadList :: ReadS [TestRecommendation]
readsPrec :: Int -> ReadS TestRecommendation
$creadsPrec :: Int -> ReadS TestRecommendation
Prelude.Read, Int -> TestRecommendation -> ShowS
[TestRecommendation] -> ShowS
TestRecommendation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TestRecommendation] -> ShowS
$cshowList :: [TestRecommendation] -> ShowS
show :: TestRecommendation -> String
$cshow :: TestRecommendation -> String
showsPrec :: Int -> TestRecommendation -> ShowS
$cshowsPrec :: Int -> TestRecommendation -> ShowS
Prelude.Show, forall x. Rep TestRecommendation x -> TestRecommendation
forall x. TestRecommendation -> Rep TestRecommendation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TestRecommendation x -> TestRecommendation
$cfrom :: forall x. TestRecommendation -> Rep TestRecommendation x
Prelude.Generic)
newTestRecommendation ::
Prelude.Text ->
TestRecommendation
newTestRecommendation :: Text -> TestRecommendation
newTestRecommendation Text
pReferenceId_ =
TestRecommendation'
{ $sel:appComponentName:TestRecommendation' :: Maybe Text
appComponentName =
forall a. Maybe a
Prelude.Nothing,
$sel:dependsOnAlarms:TestRecommendation' :: Maybe (NonEmpty Text)
dependsOnAlarms = forall a. Maybe a
Prelude.Nothing,
$sel:description:TestRecommendation' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
$sel:intent:TestRecommendation' :: Maybe Text
intent = forall a. Maybe a
Prelude.Nothing,
$sel:items:TestRecommendation' :: Maybe [RecommendationItem]
items = forall a. Maybe a
Prelude.Nothing,
$sel:name:TestRecommendation' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
$sel:prerequisite:TestRecommendation' :: Maybe Text
prerequisite = forall a. Maybe a
Prelude.Nothing,
$sel:recommendationId:TestRecommendation' :: Maybe Text
recommendationId = forall a. Maybe a
Prelude.Nothing,
$sel:risk:TestRecommendation' :: Maybe TestRisk
risk = forall a. Maybe a
Prelude.Nothing,
$sel:type':TestRecommendation' :: Maybe TestType
type' = forall a. Maybe a
Prelude.Nothing,
$sel:referenceId:TestRecommendation' :: Text
referenceId = Text
pReferenceId_
}
testRecommendation_appComponentName :: Lens.Lens' TestRecommendation (Prelude.Maybe Prelude.Text)
testRecommendation_appComponentName :: Lens' TestRecommendation (Maybe Text)
testRecommendation_appComponentName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe Text
appComponentName :: Maybe Text
$sel:appComponentName:TestRecommendation' :: TestRecommendation -> Maybe Text
appComponentName} -> Maybe Text
appComponentName) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe Text
a -> TestRecommendation
s {$sel:appComponentName:TestRecommendation' :: Maybe Text
appComponentName = Maybe Text
a} :: TestRecommendation)
testRecommendation_dependsOnAlarms :: Lens.Lens' TestRecommendation (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
testRecommendation_dependsOnAlarms :: Lens' TestRecommendation (Maybe (NonEmpty Text))
testRecommendation_dependsOnAlarms = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe (NonEmpty Text)
dependsOnAlarms :: Maybe (NonEmpty Text)
$sel:dependsOnAlarms:TestRecommendation' :: TestRecommendation -> Maybe (NonEmpty Text)
dependsOnAlarms} -> Maybe (NonEmpty Text)
dependsOnAlarms) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe (NonEmpty Text)
a -> TestRecommendation
s {$sel:dependsOnAlarms:TestRecommendation' :: Maybe (NonEmpty Text)
dependsOnAlarms = Maybe (NonEmpty Text)
a} :: TestRecommendation) 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
testRecommendation_description :: Lens.Lens' TestRecommendation (Prelude.Maybe Prelude.Text)
testRecommendation_description :: Lens' TestRecommendation (Maybe Text)
testRecommendation_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe Text
description :: Maybe Text
$sel:description:TestRecommendation' :: TestRecommendation -> Maybe Text
description} -> Maybe Text
description) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe Text
a -> TestRecommendation
s {$sel:description:TestRecommendation' :: Maybe Text
description = Maybe Text
a} :: TestRecommendation)
testRecommendation_intent :: Lens.Lens' TestRecommendation (Prelude.Maybe Prelude.Text)
testRecommendation_intent :: Lens' TestRecommendation (Maybe Text)
testRecommendation_intent = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe Text
intent :: Maybe Text
$sel:intent:TestRecommendation' :: TestRecommendation -> Maybe Text
intent} -> Maybe Text
intent) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe Text
a -> TestRecommendation
s {$sel:intent:TestRecommendation' :: Maybe Text
intent = Maybe Text
a} :: TestRecommendation)
testRecommendation_items :: Lens.Lens' TestRecommendation (Prelude.Maybe [RecommendationItem])
testRecommendation_items :: Lens' TestRecommendation (Maybe [RecommendationItem])
testRecommendation_items = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe [RecommendationItem]
items :: Maybe [RecommendationItem]
$sel:items:TestRecommendation' :: TestRecommendation -> Maybe [RecommendationItem]
items} -> Maybe [RecommendationItem]
items) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe [RecommendationItem]
a -> TestRecommendation
s {$sel:items:TestRecommendation' :: Maybe [RecommendationItem]
items = Maybe [RecommendationItem]
a} :: TestRecommendation) 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
testRecommendation_name :: Lens.Lens' TestRecommendation (Prelude.Maybe Prelude.Text)
testRecommendation_name :: Lens' TestRecommendation (Maybe Text)
testRecommendation_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe Text
name :: Maybe Text
$sel:name:TestRecommendation' :: TestRecommendation -> Maybe Text
name} -> Maybe Text
name) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe Text
a -> TestRecommendation
s {$sel:name:TestRecommendation' :: Maybe Text
name = Maybe Text
a} :: TestRecommendation)
testRecommendation_prerequisite :: Lens.Lens' TestRecommendation (Prelude.Maybe Prelude.Text)
testRecommendation_prerequisite :: Lens' TestRecommendation (Maybe Text)
testRecommendation_prerequisite = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe Text
prerequisite :: Maybe Text
$sel:prerequisite:TestRecommendation' :: TestRecommendation -> Maybe Text
prerequisite} -> Maybe Text
prerequisite) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe Text
a -> TestRecommendation
s {$sel:prerequisite:TestRecommendation' :: Maybe Text
prerequisite = Maybe Text
a} :: TestRecommendation)
testRecommendation_recommendationId :: Lens.Lens' TestRecommendation (Prelude.Maybe Prelude.Text)
testRecommendation_recommendationId :: Lens' TestRecommendation (Maybe Text)
testRecommendation_recommendationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe Text
recommendationId :: Maybe Text
$sel:recommendationId:TestRecommendation' :: TestRecommendation -> Maybe Text
recommendationId} -> Maybe Text
recommendationId) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe Text
a -> TestRecommendation
s {$sel:recommendationId:TestRecommendation' :: Maybe Text
recommendationId = Maybe Text
a} :: TestRecommendation)
testRecommendation_risk :: Lens.Lens' TestRecommendation (Prelude.Maybe TestRisk)
testRecommendation_risk :: Lens' TestRecommendation (Maybe TestRisk)
testRecommendation_risk = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe TestRisk
risk :: Maybe TestRisk
$sel:risk:TestRecommendation' :: TestRecommendation -> Maybe TestRisk
risk} -> Maybe TestRisk
risk) (\s :: TestRecommendation
s@TestRecommendation' {} Maybe TestRisk
a -> TestRecommendation
s {$sel:risk:TestRecommendation' :: Maybe TestRisk
risk = Maybe TestRisk
a} :: TestRecommendation)
testRecommendation_type :: Lens.Lens' TestRecommendation (Prelude.Maybe TestType)
testRecommendation_type :: Lens' TestRecommendation (Maybe TestType)
testRecommendation_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Maybe TestType
type' :: Maybe TestType
$sel:type':TestRecommendation' :: TestRecommendation -> Maybe TestType
type'} -> Maybe TestType
type') (\s :: TestRecommendation
s@TestRecommendation' {} Maybe TestType
a -> TestRecommendation
s {$sel:type':TestRecommendation' :: Maybe TestType
type' = Maybe TestType
a} :: TestRecommendation)
testRecommendation_referenceId :: Lens.Lens' TestRecommendation Prelude.Text
testRecommendation_referenceId :: Lens' TestRecommendation Text
testRecommendation_referenceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TestRecommendation' {Text
referenceId :: Text
$sel:referenceId:TestRecommendation' :: TestRecommendation -> Text
referenceId} -> Text
referenceId) (\s :: TestRecommendation
s@TestRecommendation' {} Text
a -> TestRecommendation
s {$sel:referenceId:TestRecommendation' :: Text
referenceId = Text
a} :: TestRecommendation)
instance Data.FromJSON TestRecommendation where
parseJSON :: Value -> Parser TestRecommendation
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"TestRecommendation"
( \Object
x ->
Maybe Text
-> Maybe (NonEmpty Text)
-> Maybe Text
-> Maybe Text
-> Maybe [RecommendationItem]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe TestRisk
-> Maybe TestType
-> Text
-> TestRecommendation
TestRecommendation'
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
"appComponentName")
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
"dependsOnAlarms")
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
"description")
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
"intent")
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
"items" 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
"name")
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
"prerequisite")
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
"recommendationId")
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
"risk")
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
"type")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"referenceId")
)
instance Prelude.Hashable TestRecommendation where
hashWithSalt :: Int -> TestRecommendation -> Int
hashWithSalt Int
_salt TestRecommendation' {Maybe [RecommendationItem]
Maybe (NonEmpty Text)
Maybe Text
Maybe TestRisk
Maybe TestType
Text
referenceId :: Text
type' :: Maybe TestType
risk :: Maybe TestRisk
recommendationId :: Maybe Text
prerequisite :: Maybe Text
name :: Maybe Text
items :: Maybe [RecommendationItem]
intent :: Maybe Text
description :: Maybe Text
dependsOnAlarms :: Maybe (NonEmpty Text)
appComponentName :: Maybe Text
$sel:referenceId:TestRecommendation' :: TestRecommendation -> Text
$sel:type':TestRecommendation' :: TestRecommendation -> Maybe TestType
$sel:risk:TestRecommendation' :: TestRecommendation -> Maybe TestRisk
$sel:recommendationId:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:prerequisite:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:name:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:items:TestRecommendation' :: TestRecommendation -> Maybe [RecommendationItem]
$sel:intent:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:description:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:dependsOnAlarms:TestRecommendation' :: TestRecommendation -> Maybe (NonEmpty Text)
$sel:appComponentName:TestRecommendation' :: TestRecommendation -> Maybe Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
appComponentName
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
dependsOnAlarms
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
intent
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [RecommendationItem]
items
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
prerequisite
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
recommendationId
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TestRisk
risk
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TestType
type'
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
referenceId
instance Prelude.NFData TestRecommendation where
rnf :: TestRecommendation -> ()
rnf TestRecommendation' {Maybe [RecommendationItem]
Maybe (NonEmpty Text)
Maybe Text
Maybe TestRisk
Maybe TestType
Text
referenceId :: Text
type' :: Maybe TestType
risk :: Maybe TestRisk
recommendationId :: Maybe Text
prerequisite :: Maybe Text
name :: Maybe Text
items :: Maybe [RecommendationItem]
intent :: Maybe Text
description :: Maybe Text
dependsOnAlarms :: Maybe (NonEmpty Text)
appComponentName :: Maybe Text
$sel:referenceId:TestRecommendation' :: TestRecommendation -> Text
$sel:type':TestRecommendation' :: TestRecommendation -> Maybe TestType
$sel:risk:TestRecommendation' :: TestRecommendation -> Maybe TestRisk
$sel:recommendationId:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:prerequisite:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:name:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:items:TestRecommendation' :: TestRecommendation -> Maybe [RecommendationItem]
$sel:intent:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:description:TestRecommendation' :: TestRecommendation -> Maybe Text
$sel:dependsOnAlarms:TestRecommendation' :: TestRecommendation -> Maybe (NonEmpty Text)
$sel:appComponentName:TestRecommendation' :: TestRecommendation -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
appComponentName
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
dependsOnAlarms
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
intent
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [RecommendationItem]
items
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
prerequisite
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
recommendationId
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TestRisk
risk
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TestType
type'
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
referenceId