{-# 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 #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.FIS.Types.Experiment
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.FIS.Types.Experiment where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.FIS.Types.ExperimentAction
import Amazonka.FIS.Types.ExperimentLogConfiguration
import Amazonka.FIS.Types.ExperimentState
import Amazonka.FIS.Types.ExperimentStopCondition
import Amazonka.FIS.Types.ExperimentTarget
import qualified Amazonka.Prelude as Prelude

-- | Describes an experiment.
--
-- /See:/ 'newExperiment' smart constructor.
data Experiment = Experiment'
  { -- | The actions for the experiment.
    Experiment -> Maybe (HashMap Text ExperimentAction)
actions :: Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentAction),
    -- | The time that the experiment was created.
    Experiment -> Maybe POSIX
creationTime :: Prelude.Maybe Data.POSIX,
    -- | The time that the experiment ended.
    Experiment -> Maybe POSIX
endTime :: Prelude.Maybe Data.POSIX,
    -- | The ID of the experiment template.
    Experiment -> Maybe Text
experimentTemplateId :: Prelude.Maybe Prelude.Text,
    -- | The ID of the experiment.
    Experiment -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | The configuration for experiment logging.
    Experiment -> Maybe ExperimentLogConfiguration
logConfiguration :: Prelude.Maybe ExperimentLogConfiguration,
    -- | The Amazon Resource Name (ARN) of an IAM role that grants the FIS
    -- service permission to perform service actions on your behalf.
    Experiment -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | The time that the experiment started.
    Experiment -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX,
    -- | The state of the experiment.
    Experiment -> Maybe ExperimentState
state :: Prelude.Maybe ExperimentState,
    -- | The stop conditions for the experiment.
    Experiment -> Maybe [ExperimentStopCondition]
stopConditions :: Prelude.Maybe [ExperimentStopCondition],
    -- | The tags for the experiment.
    Experiment -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The targets for the experiment.
    Experiment -> Maybe (HashMap Text ExperimentTarget)
targets :: Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentTarget)
  }
  deriving (Experiment -> Experiment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Experiment -> Experiment -> Bool
$c/= :: Experiment -> Experiment -> Bool
== :: Experiment -> Experiment -> Bool
$c== :: Experiment -> Experiment -> Bool
Prelude.Eq, ReadPrec [Experiment]
ReadPrec Experiment
Int -> ReadS Experiment
ReadS [Experiment]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Experiment]
$creadListPrec :: ReadPrec [Experiment]
readPrec :: ReadPrec Experiment
$creadPrec :: ReadPrec Experiment
readList :: ReadS [Experiment]
$creadList :: ReadS [Experiment]
readsPrec :: Int -> ReadS Experiment
$creadsPrec :: Int -> ReadS Experiment
Prelude.Read, Int -> Experiment -> ShowS
[Experiment] -> ShowS
Experiment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Experiment] -> ShowS
$cshowList :: [Experiment] -> ShowS
show :: Experiment -> String
$cshow :: Experiment -> String
showsPrec :: Int -> Experiment -> ShowS
$cshowsPrec :: Int -> Experiment -> ShowS
Prelude.Show, forall x. Rep Experiment x -> Experiment
forall x. Experiment -> Rep Experiment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Experiment x -> Experiment
$cfrom :: forall x. Experiment -> Rep Experiment x
Prelude.Generic)

-- |
-- Create a value of 'Experiment' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'actions', 'experiment_actions' - The actions for the experiment.
--
-- 'creationTime', 'experiment_creationTime' - The time that the experiment was created.
--
-- 'endTime', 'experiment_endTime' - The time that the experiment ended.
--
-- 'experimentTemplateId', 'experiment_experimentTemplateId' - The ID of the experiment template.
--
-- 'id', 'experiment_id' - The ID of the experiment.
--
-- 'logConfiguration', 'experiment_logConfiguration' - The configuration for experiment logging.
--
-- 'roleArn', 'experiment_roleArn' - The Amazon Resource Name (ARN) of an IAM role that grants the FIS
-- service permission to perform service actions on your behalf.
--
-- 'startTime', 'experiment_startTime' - The time that the experiment started.
--
-- 'state', 'experiment_state' - The state of the experiment.
--
-- 'stopConditions', 'experiment_stopConditions' - The stop conditions for the experiment.
--
-- 'tags', 'experiment_tags' - The tags for the experiment.
--
-- 'targets', 'experiment_targets' - The targets for the experiment.
newExperiment ::
  Experiment
newExperiment :: Experiment
newExperiment =
  Experiment'
    { $sel:actions:Experiment' :: Maybe (HashMap Text ExperimentAction)
actions = forall a. Maybe a
Prelude.Nothing,
      $sel:creationTime:Experiment' :: Maybe POSIX
creationTime = forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:Experiment' :: Maybe POSIX
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:experimentTemplateId:Experiment' :: Maybe Text
experimentTemplateId = forall a. Maybe a
Prelude.Nothing,
      $sel:id:Experiment' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:logConfiguration:Experiment' :: Maybe ExperimentLogConfiguration
logConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:Experiment' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:Experiment' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:state:Experiment' :: Maybe ExperimentState
state = forall a. Maybe a
Prelude.Nothing,
      $sel:stopConditions:Experiment' :: Maybe [ExperimentStopCondition]
stopConditions = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:Experiment' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:targets:Experiment' :: Maybe (HashMap Text ExperimentTarget)
targets = forall a. Maybe a
Prelude.Nothing
    }

-- | The actions for the experiment.
experiment_actions :: Lens.Lens' Experiment (Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentAction))
experiment_actions :: Lens' Experiment (Maybe (HashMap Text ExperimentAction))
experiment_actions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe (HashMap Text ExperimentAction)
actions :: Maybe (HashMap Text ExperimentAction)
$sel:actions:Experiment' :: Experiment -> Maybe (HashMap Text ExperimentAction)
actions} -> Maybe (HashMap Text ExperimentAction)
actions) (\s :: Experiment
s@Experiment' {} Maybe (HashMap Text ExperimentAction)
a -> Experiment
s {$sel:actions:Experiment' :: Maybe (HashMap Text ExperimentAction)
actions = Maybe (HashMap Text ExperimentAction)
a} :: Experiment) 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

-- | The time that the experiment was created.
experiment_creationTime :: Lens.Lens' Experiment (Prelude.Maybe Prelude.UTCTime)
experiment_creationTime :: Lens' Experiment (Maybe UTCTime)
experiment_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:Experiment' :: Experiment -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: Experiment
s@Experiment' {} Maybe POSIX
a -> Experiment
s {$sel:creationTime:Experiment' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: Experiment) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The time that the experiment ended.
experiment_endTime :: Lens.Lens' Experiment (Prelude.Maybe Prelude.UTCTime)
experiment_endTime :: Lens' Experiment (Maybe UTCTime)
experiment_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:Experiment' :: Experiment -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: Experiment
s@Experiment' {} Maybe POSIX
a -> Experiment
s {$sel:endTime:Experiment' :: Maybe POSIX
endTime = Maybe POSIX
a} :: Experiment) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The ID of the experiment template.
experiment_experimentTemplateId :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)
experiment_experimentTemplateId :: Lens' Experiment (Maybe Text)
experiment_experimentTemplateId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe Text
experimentTemplateId :: Maybe Text
$sel:experimentTemplateId:Experiment' :: Experiment -> Maybe Text
experimentTemplateId} -> Maybe Text
experimentTemplateId) (\s :: Experiment
s@Experiment' {} Maybe Text
a -> Experiment
s {$sel:experimentTemplateId:Experiment' :: Maybe Text
experimentTemplateId = Maybe Text
a} :: Experiment)

-- | The ID of the experiment.
experiment_id :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)
experiment_id :: Lens' Experiment (Maybe Text)
experiment_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe Text
id :: Maybe Text
$sel:id:Experiment' :: Experiment -> Maybe Text
id} -> Maybe Text
id) (\s :: Experiment
s@Experiment' {} Maybe Text
a -> Experiment
s {$sel:id:Experiment' :: Maybe Text
id = Maybe Text
a} :: Experiment)

-- | The configuration for experiment logging.
experiment_logConfiguration :: Lens.Lens' Experiment (Prelude.Maybe ExperimentLogConfiguration)
experiment_logConfiguration :: Lens' Experiment (Maybe ExperimentLogConfiguration)
experiment_logConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe ExperimentLogConfiguration
logConfiguration :: Maybe ExperimentLogConfiguration
$sel:logConfiguration:Experiment' :: Experiment -> Maybe ExperimentLogConfiguration
logConfiguration} -> Maybe ExperimentLogConfiguration
logConfiguration) (\s :: Experiment
s@Experiment' {} Maybe ExperimentLogConfiguration
a -> Experiment
s {$sel:logConfiguration:Experiment' :: Maybe ExperimentLogConfiguration
logConfiguration = Maybe ExperimentLogConfiguration
a} :: Experiment)

-- | The Amazon Resource Name (ARN) of an IAM role that grants the FIS
-- service permission to perform service actions on your behalf.
experiment_roleArn :: Lens.Lens' Experiment (Prelude.Maybe Prelude.Text)
experiment_roleArn :: Lens' Experiment (Maybe Text)
experiment_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:Experiment' :: Experiment -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: Experiment
s@Experiment' {} Maybe Text
a -> Experiment
s {$sel:roleArn:Experiment' :: Maybe Text
roleArn = Maybe Text
a} :: Experiment)

-- | The time that the experiment started.
experiment_startTime :: Lens.Lens' Experiment (Prelude.Maybe Prelude.UTCTime)
experiment_startTime :: Lens' Experiment (Maybe UTCTime)
experiment_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:Experiment' :: Experiment -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: Experiment
s@Experiment' {} Maybe POSIX
a -> Experiment
s {$sel:startTime:Experiment' :: Maybe POSIX
startTime = Maybe POSIX
a} :: Experiment) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The state of the experiment.
experiment_state :: Lens.Lens' Experiment (Prelude.Maybe ExperimentState)
experiment_state :: Lens' Experiment (Maybe ExperimentState)
experiment_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe ExperimentState
state :: Maybe ExperimentState
$sel:state:Experiment' :: Experiment -> Maybe ExperimentState
state} -> Maybe ExperimentState
state) (\s :: Experiment
s@Experiment' {} Maybe ExperimentState
a -> Experiment
s {$sel:state:Experiment' :: Maybe ExperimentState
state = Maybe ExperimentState
a} :: Experiment)

-- | The stop conditions for the experiment.
experiment_stopConditions :: Lens.Lens' Experiment (Prelude.Maybe [ExperimentStopCondition])
experiment_stopConditions :: Lens' Experiment (Maybe [ExperimentStopCondition])
experiment_stopConditions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe [ExperimentStopCondition]
stopConditions :: Maybe [ExperimentStopCondition]
$sel:stopConditions:Experiment' :: Experiment -> Maybe [ExperimentStopCondition]
stopConditions} -> Maybe [ExperimentStopCondition]
stopConditions) (\s :: Experiment
s@Experiment' {} Maybe [ExperimentStopCondition]
a -> Experiment
s {$sel:stopConditions:Experiment' :: Maybe [ExperimentStopCondition]
stopConditions = Maybe [ExperimentStopCondition]
a} :: Experiment) 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

-- | The tags for the experiment.
experiment_tags :: Lens.Lens' Experiment (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
experiment_tags :: Lens' Experiment (Maybe (HashMap Text Text))
experiment_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:Experiment' :: Experiment -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: Experiment
s@Experiment' {} Maybe (HashMap Text Text)
a -> Experiment
s {$sel:tags:Experiment' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: Experiment) 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

-- | The targets for the experiment.
experiment_targets :: Lens.Lens' Experiment (Prelude.Maybe (Prelude.HashMap Prelude.Text ExperimentTarget))
experiment_targets :: Lens' Experiment (Maybe (HashMap Text ExperimentTarget))
experiment_targets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Experiment' {Maybe (HashMap Text ExperimentTarget)
targets :: Maybe (HashMap Text ExperimentTarget)
$sel:targets:Experiment' :: Experiment -> Maybe (HashMap Text ExperimentTarget)
targets} -> Maybe (HashMap Text ExperimentTarget)
targets) (\s :: Experiment
s@Experiment' {} Maybe (HashMap Text ExperimentTarget)
a -> Experiment
s {$sel:targets:Experiment' :: Maybe (HashMap Text ExperimentTarget)
targets = Maybe (HashMap Text ExperimentTarget)
a} :: Experiment) 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

instance Data.FromJSON Experiment where
  parseJSON :: Value -> Parser Experiment
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Experiment"
      ( \Object
x ->
          Maybe (HashMap Text ExperimentAction)
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe ExperimentLogConfiguration
-> Maybe Text
-> Maybe POSIX
-> Maybe ExperimentState
-> Maybe [ExperimentStopCondition]
-> Maybe (HashMap Text Text)
-> Maybe (HashMap Text ExperimentTarget)
-> Experiment
Experiment'
            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
"actions" 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
"creationTime")
            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
"endTime")
            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
"experimentTemplateId")
            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
"id")
            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
"logConfiguration")
            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
"roleArn")
            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
"startTime")
            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
"state")
            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
"stopConditions" 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
"tags" 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
"targets" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable Experiment where
  hashWithSalt :: Int -> Experiment -> Int
hashWithSalt Int
_salt Experiment' {Maybe [ExperimentStopCondition]
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text ExperimentAction)
Maybe (HashMap Text ExperimentTarget)
Maybe POSIX
Maybe ExperimentLogConfiguration
Maybe ExperimentState
targets :: Maybe (HashMap Text ExperimentTarget)
tags :: Maybe (HashMap Text Text)
stopConditions :: Maybe [ExperimentStopCondition]
state :: Maybe ExperimentState
startTime :: Maybe POSIX
roleArn :: Maybe Text
logConfiguration :: Maybe ExperimentLogConfiguration
id :: Maybe Text
experimentTemplateId :: Maybe Text
endTime :: Maybe POSIX
creationTime :: Maybe POSIX
actions :: Maybe (HashMap Text ExperimentAction)
$sel:targets:Experiment' :: Experiment -> Maybe (HashMap Text ExperimentTarget)
$sel:tags:Experiment' :: Experiment -> Maybe (HashMap Text Text)
$sel:stopConditions:Experiment' :: Experiment -> Maybe [ExperimentStopCondition]
$sel:state:Experiment' :: Experiment -> Maybe ExperimentState
$sel:startTime:Experiment' :: Experiment -> Maybe POSIX
$sel:roleArn:Experiment' :: Experiment -> Maybe Text
$sel:logConfiguration:Experiment' :: Experiment -> Maybe ExperimentLogConfiguration
$sel:id:Experiment' :: Experiment -> Maybe Text
$sel:experimentTemplateId:Experiment' :: Experiment -> Maybe Text
$sel:endTime:Experiment' :: Experiment -> Maybe POSIX
$sel:creationTime:Experiment' :: Experiment -> Maybe POSIX
$sel:actions:Experiment' :: Experiment -> Maybe (HashMap Text ExperimentAction)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text ExperimentAction)
actions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
experimentTemplateId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExperimentLogConfiguration
logConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
roleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExperimentState
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ExperimentStopCondition]
stopConditions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text ExperimentTarget)
targets

instance Prelude.NFData Experiment where
  rnf :: Experiment -> ()
rnf Experiment' {Maybe [ExperimentStopCondition]
Maybe Text
Maybe (HashMap Text Text)
Maybe (HashMap Text ExperimentAction)
Maybe (HashMap Text ExperimentTarget)
Maybe POSIX
Maybe ExperimentLogConfiguration
Maybe ExperimentState
targets :: Maybe (HashMap Text ExperimentTarget)
tags :: Maybe (HashMap Text Text)
stopConditions :: Maybe [ExperimentStopCondition]
state :: Maybe ExperimentState
startTime :: Maybe POSIX
roleArn :: Maybe Text
logConfiguration :: Maybe ExperimentLogConfiguration
id :: Maybe Text
experimentTemplateId :: Maybe Text
endTime :: Maybe POSIX
creationTime :: Maybe POSIX
actions :: Maybe (HashMap Text ExperimentAction)
$sel:targets:Experiment' :: Experiment -> Maybe (HashMap Text ExperimentTarget)
$sel:tags:Experiment' :: Experiment -> Maybe (HashMap Text Text)
$sel:stopConditions:Experiment' :: Experiment -> Maybe [ExperimentStopCondition]
$sel:state:Experiment' :: Experiment -> Maybe ExperimentState
$sel:startTime:Experiment' :: Experiment -> Maybe POSIX
$sel:roleArn:Experiment' :: Experiment -> Maybe Text
$sel:logConfiguration:Experiment' :: Experiment -> Maybe ExperimentLogConfiguration
$sel:id:Experiment' :: Experiment -> Maybe Text
$sel:experimentTemplateId:Experiment' :: Experiment -> Maybe Text
$sel:endTime:Experiment' :: Experiment -> Maybe POSIX
$sel:creationTime:Experiment' :: Experiment -> Maybe POSIX
$sel:actions:Experiment' :: Experiment -> Maybe (HashMap Text ExperimentAction)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text ExperimentAction)
actions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
experimentTemplateId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ExperimentLogConfiguration
logConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ExperimentState
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ExperimentStopCondition]
stopConditions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text ExperimentTarget)
targets