{-# 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.RobOMaker.Types.SimulationJob
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.RobOMaker.Types.SimulationJob where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.RobOMaker.Types.ComputeResponse
import Amazonka.RobOMaker.Types.DataSource
import Amazonka.RobOMaker.Types.FailureBehavior
import Amazonka.RobOMaker.Types.LoggingConfig
import Amazonka.RobOMaker.Types.NetworkInterface
import Amazonka.RobOMaker.Types.OutputLocation
import Amazonka.RobOMaker.Types.RobotApplicationConfig
import Amazonka.RobOMaker.Types.SimulationApplicationConfig
import Amazonka.RobOMaker.Types.SimulationJobErrorCode
import Amazonka.RobOMaker.Types.SimulationJobStatus
import Amazonka.RobOMaker.Types.VPCConfigResponse

-- | Information about a simulation job.
--
-- /See:/ 'newSimulationJob' smart constructor.
data SimulationJob = SimulationJob'
  { -- | The reason why the simulation job failed.
    SimulationJob -> Maybe Text
failureReason :: Prelude.Maybe Prelude.Text,
    -- | The failure behavior the simulation job.
    --
    -- [Continue]
    --     Leaves the host running for its maximum timeout duration after a
    --     @4XX@ error code.
    --
    -- [Fail]
    --     Stop the simulation job and terminate the instance.
    SimulationJob -> Maybe FailureBehavior
failureBehavior :: Prelude.Maybe FailureBehavior,
    -- | Status of the simulation job.
    SimulationJob -> Maybe SimulationJobStatus
status :: Prelude.Maybe SimulationJobStatus,
    -- | The time, in milliseconds since the epoch, when the simulation job was
    -- last updated.
    SimulationJob -> Maybe POSIX
lastUpdatedAt :: Prelude.Maybe Core.POSIX,
    -- | The Amazon Resource Name (ARN) of the simulation job.
    SimulationJob -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | A list of robot applications.
    SimulationJob -> Maybe (NonEmpty RobotApplicationConfig)
robotApplications :: Prelude.Maybe (Prelude.NonEmpty RobotApplicationConfig),
    -- | The failure code of the simulation job if it failed.
    SimulationJob -> Maybe SimulationJobErrorCode
failureCode :: Prelude.Maybe SimulationJobErrorCode,
    -- | Compute information for the simulation job
    SimulationJob -> Maybe ComputeResponse
compute :: Prelude.Maybe ComputeResponse,
    -- | Information about a network interface.
    SimulationJob -> Maybe NetworkInterface
networkInterface :: Prelude.Maybe NetworkInterface,
    -- | The data sources for the simulation job.
    SimulationJob -> Maybe [DataSource]
dataSources :: Prelude.Maybe [DataSource],
    -- | The name of the simulation job.
    SimulationJob -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | VPC configuration information.
    SimulationJob -> Maybe VPCConfigResponse
vpcConfig :: Prelude.Maybe VPCConfigResponse,
    -- | Location for output files generated by the simulation job.
    SimulationJob -> Maybe OutputLocation
outputLocation :: Prelude.Maybe OutputLocation,
    -- | A list of simulation applications.
    SimulationJob -> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications :: Prelude.Maybe (Prelude.NonEmpty SimulationApplicationConfig),
    -- | The simulation job execution duration in milliseconds.
    SimulationJob -> Maybe Integer
simulationTimeMillis :: Prelude.Maybe Prelude.Integer,
    -- | A unique identifier for this @SimulationJob@ request.
    SimulationJob -> Maybe Text
clientRequestToken :: Prelude.Maybe Prelude.Text,
    -- | The time, in milliseconds since the epoch, when the simulation job was
    -- last started.
    SimulationJob -> Maybe POSIX
lastStartedAt :: Prelude.Maybe Core.POSIX,
    -- | The logging configuration.
    SimulationJob -> Maybe LoggingConfig
loggingConfig :: Prelude.Maybe LoggingConfig,
    -- | The IAM role that allows the simulation instance to call the AWS APIs
    -- that are specified in its associated policies on your behalf. This is
    -- how credentials are passed in to your simulation job.
    SimulationJob -> Maybe Text
iamRole :: Prelude.Maybe Prelude.Text,
    -- | The maximum simulation job duration in seconds. The value must be 8 days
    -- (691,200 seconds) or less.
    SimulationJob -> Maybe Integer
maxJobDurationInSeconds :: Prelude.Maybe Prelude.Integer,
    -- | A map that contains tag keys and tag values that are attached to the
    -- simulation job.
    SimulationJob -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)
  }
  deriving (SimulationJob -> SimulationJob -> Bool
(SimulationJob -> SimulationJob -> Bool)
-> (SimulationJob -> SimulationJob -> Bool) -> Eq SimulationJob
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SimulationJob -> SimulationJob -> Bool
$c/= :: SimulationJob -> SimulationJob -> Bool
== :: SimulationJob -> SimulationJob -> Bool
$c== :: SimulationJob -> SimulationJob -> Bool
Prelude.Eq, ReadPrec [SimulationJob]
ReadPrec SimulationJob
Int -> ReadS SimulationJob
ReadS [SimulationJob]
(Int -> ReadS SimulationJob)
-> ReadS [SimulationJob]
-> ReadPrec SimulationJob
-> ReadPrec [SimulationJob]
-> Read SimulationJob
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SimulationJob]
$creadListPrec :: ReadPrec [SimulationJob]
readPrec :: ReadPrec SimulationJob
$creadPrec :: ReadPrec SimulationJob
readList :: ReadS [SimulationJob]
$creadList :: ReadS [SimulationJob]
readsPrec :: Int -> ReadS SimulationJob
$creadsPrec :: Int -> ReadS SimulationJob
Prelude.Read, Int -> SimulationJob -> ShowS
[SimulationJob] -> ShowS
SimulationJob -> String
(Int -> SimulationJob -> ShowS)
-> (SimulationJob -> String)
-> ([SimulationJob] -> ShowS)
-> Show SimulationJob
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SimulationJob] -> ShowS
$cshowList :: [SimulationJob] -> ShowS
show :: SimulationJob -> String
$cshow :: SimulationJob -> String
showsPrec :: Int -> SimulationJob -> ShowS
$cshowsPrec :: Int -> SimulationJob -> ShowS
Prelude.Show, (forall x. SimulationJob -> Rep SimulationJob x)
-> (forall x. Rep SimulationJob x -> SimulationJob)
-> Generic SimulationJob
forall x. Rep SimulationJob x -> SimulationJob
forall x. SimulationJob -> Rep SimulationJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SimulationJob x -> SimulationJob
$cfrom :: forall x. SimulationJob -> Rep SimulationJob x
Prelude.Generic)

-- |
-- Create a value of 'SimulationJob' 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:
--
-- 'failureReason', 'simulationJob_failureReason' - The reason why the simulation job failed.
--
-- 'failureBehavior', 'simulationJob_failureBehavior' - The failure behavior the simulation job.
--
-- [Continue]
--     Leaves the host running for its maximum timeout duration after a
--     @4XX@ error code.
--
-- [Fail]
--     Stop the simulation job and terminate the instance.
--
-- 'status', 'simulationJob_status' - Status of the simulation job.
--
-- 'lastUpdatedAt', 'simulationJob_lastUpdatedAt' - The time, in milliseconds since the epoch, when the simulation job was
-- last updated.
--
-- 'arn', 'simulationJob_arn' - The Amazon Resource Name (ARN) of the simulation job.
--
-- 'robotApplications', 'simulationJob_robotApplications' - A list of robot applications.
--
-- 'failureCode', 'simulationJob_failureCode' - The failure code of the simulation job if it failed.
--
-- 'compute', 'simulationJob_compute' - Compute information for the simulation job
--
-- 'networkInterface', 'simulationJob_networkInterface' - Information about a network interface.
--
-- 'dataSources', 'simulationJob_dataSources' - The data sources for the simulation job.
--
-- 'name', 'simulationJob_name' - The name of the simulation job.
--
-- 'vpcConfig', 'simulationJob_vpcConfig' - VPC configuration information.
--
-- 'outputLocation', 'simulationJob_outputLocation' - Location for output files generated by the simulation job.
--
-- 'simulationApplications', 'simulationJob_simulationApplications' - A list of simulation applications.
--
-- 'simulationTimeMillis', 'simulationJob_simulationTimeMillis' - The simulation job execution duration in milliseconds.
--
-- 'clientRequestToken', 'simulationJob_clientRequestToken' - A unique identifier for this @SimulationJob@ request.
--
-- 'lastStartedAt', 'simulationJob_lastStartedAt' - The time, in milliseconds since the epoch, when the simulation job was
-- last started.
--
-- 'loggingConfig', 'simulationJob_loggingConfig' - The logging configuration.
--
-- 'iamRole', 'simulationJob_iamRole' - The IAM role that allows the simulation instance to call the AWS APIs
-- that are specified in its associated policies on your behalf. This is
-- how credentials are passed in to your simulation job.
--
-- 'maxJobDurationInSeconds', 'simulationJob_maxJobDurationInSeconds' - The maximum simulation job duration in seconds. The value must be 8 days
-- (691,200 seconds) or less.
--
-- 'tags', 'simulationJob_tags' - A map that contains tag keys and tag values that are attached to the
-- simulation job.
newSimulationJob ::
  SimulationJob
newSimulationJob :: SimulationJob
newSimulationJob =
  SimulationJob' :: Maybe Text
-> Maybe FailureBehavior
-> Maybe SimulationJobStatus
-> Maybe POSIX
-> Maybe Text
-> Maybe (NonEmpty RobotApplicationConfig)
-> Maybe SimulationJobErrorCode
-> Maybe ComputeResponse
-> Maybe NetworkInterface
-> Maybe [DataSource]
-> Maybe Text
-> Maybe VPCConfigResponse
-> Maybe OutputLocation
-> Maybe (NonEmpty SimulationApplicationConfig)
-> Maybe Integer
-> Maybe Text
-> Maybe POSIX
-> Maybe LoggingConfig
-> Maybe Text
-> Maybe Integer
-> Maybe (HashMap Text Text)
-> SimulationJob
SimulationJob'
    { $sel:failureReason:SimulationJob' :: Maybe Text
failureReason = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:failureBehavior:SimulationJob' :: Maybe FailureBehavior
failureBehavior = Maybe FailureBehavior
forall a. Maybe a
Prelude.Nothing,
      $sel:status:SimulationJob' :: Maybe SimulationJobStatus
status = Maybe SimulationJobStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedAt:SimulationJob' :: Maybe POSIX
lastUpdatedAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:SimulationJob' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:robotApplications:SimulationJob' :: Maybe (NonEmpty RobotApplicationConfig)
robotApplications = Maybe (NonEmpty RobotApplicationConfig)
forall a. Maybe a
Prelude.Nothing,
      $sel:failureCode:SimulationJob' :: Maybe SimulationJobErrorCode
failureCode = Maybe SimulationJobErrorCode
forall a. Maybe a
Prelude.Nothing,
      $sel:compute:SimulationJob' :: Maybe ComputeResponse
compute = Maybe ComputeResponse
forall a. Maybe a
Prelude.Nothing,
      $sel:networkInterface:SimulationJob' :: Maybe NetworkInterface
networkInterface = Maybe NetworkInterface
forall a. Maybe a
Prelude.Nothing,
      $sel:dataSources:SimulationJob' :: Maybe [DataSource]
dataSources = Maybe [DataSource]
forall a. Maybe a
Prelude.Nothing,
      $sel:name:SimulationJob' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfig:SimulationJob' :: Maybe VPCConfigResponse
vpcConfig = Maybe VPCConfigResponse
forall a. Maybe a
Prelude.Nothing,
      $sel:outputLocation:SimulationJob' :: Maybe OutputLocation
outputLocation = Maybe OutputLocation
forall a. Maybe a
Prelude.Nothing,
      $sel:simulationApplications:SimulationJob' :: Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications = Maybe (NonEmpty SimulationApplicationConfig)
forall a. Maybe a
Prelude.Nothing,
      $sel:simulationTimeMillis:SimulationJob' :: Maybe Integer
simulationTimeMillis = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:clientRequestToken:SimulationJob' :: Maybe Text
clientRequestToken = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastStartedAt:SimulationJob' :: Maybe POSIX
lastStartedAt = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:loggingConfig:SimulationJob' :: Maybe LoggingConfig
loggingConfig = Maybe LoggingConfig
forall a. Maybe a
Prelude.Nothing,
      $sel:iamRole:SimulationJob' :: Maybe Text
iamRole = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:maxJobDurationInSeconds:SimulationJob' :: Maybe Integer
maxJobDurationInSeconds = Maybe Integer
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:SimulationJob' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing
    }

-- | The reason why the simulation job failed.
simulationJob_failureReason :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.Text)
simulationJob_failureReason :: (Maybe Text -> f (Maybe Text)) -> SimulationJob -> f SimulationJob
simulationJob_failureReason = (SimulationJob -> Maybe Text)
-> (SimulationJob -> Maybe Text -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe Text
failureReason :: Maybe Text
$sel:failureReason:SimulationJob' :: SimulationJob -> Maybe Text
failureReason} -> Maybe Text
failureReason) (\s :: SimulationJob
s@SimulationJob' {} Maybe Text
a -> SimulationJob
s {$sel:failureReason:SimulationJob' :: Maybe Text
failureReason = Maybe Text
a} :: SimulationJob)

-- | The failure behavior the simulation job.
--
-- [Continue]
--     Leaves the host running for its maximum timeout duration after a
--     @4XX@ error code.
--
-- [Fail]
--     Stop the simulation job and terminate the instance.
simulationJob_failureBehavior :: Lens.Lens' SimulationJob (Prelude.Maybe FailureBehavior)
simulationJob_failureBehavior :: (Maybe FailureBehavior -> f (Maybe FailureBehavior))
-> SimulationJob -> f SimulationJob
simulationJob_failureBehavior = (SimulationJob -> Maybe FailureBehavior)
-> (SimulationJob -> Maybe FailureBehavior -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe FailureBehavior)
     (Maybe FailureBehavior)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe FailureBehavior
failureBehavior :: Maybe FailureBehavior
$sel:failureBehavior:SimulationJob' :: SimulationJob -> Maybe FailureBehavior
failureBehavior} -> Maybe FailureBehavior
failureBehavior) (\s :: SimulationJob
s@SimulationJob' {} Maybe FailureBehavior
a -> SimulationJob
s {$sel:failureBehavior:SimulationJob' :: Maybe FailureBehavior
failureBehavior = Maybe FailureBehavior
a} :: SimulationJob)

-- | Status of the simulation job.
simulationJob_status :: Lens.Lens' SimulationJob (Prelude.Maybe SimulationJobStatus)
simulationJob_status :: (Maybe SimulationJobStatus -> f (Maybe SimulationJobStatus))
-> SimulationJob -> f SimulationJob
simulationJob_status = (SimulationJob -> Maybe SimulationJobStatus)
-> (SimulationJob -> Maybe SimulationJobStatus -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe SimulationJobStatus)
     (Maybe SimulationJobStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe SimulationJobStatus
status :: Maybe SimulationJobStatus
$sel:status:SimulationJob' :: SimulationJob -> Maybe SimulationJobStatus
status} -> Maybe SimulationJobStatus
status) (\s :: SimulationJob
s@SimulationJob' {} Maybe SimulationJobStatus
a -> SimulationJob
s {$sel:status:SimulationJob' :: Maybe SimulationJobStatus
status = Maybe SimulationJobStatus
a} :: SimulationJob)

-- | The time, in milliseconds since the epoch, when the simulation job was
-- last updated.
simulationJob_lastUpdatedAt :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.UTCTime)
simulationJob_lastUpdatedAt :: (Maybe UTCTime -> f (Maybe UTCTime))
-> SimulationJob -> f SimulationJob
simulationJob_lastUpdatedAt = (SimulationJob -> Maybe POSIX)
-> (SimulationJob -> Maybe POSIX -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe POSIX
lastUpdatedAt :: Maybe POSIX
$sel:lastUpdatedAt:SimulationJob' :: SimulationJob -> Maybe POSIX
lastUpdatedAt} -> Maybe POSIX
lastUpdatedAt) (\s :: SimulationJob
s@SimulationJob' {} Maybe POSIX
a -> SimulationJob
s {$sel:lastUpdatedAt:SimulationJob' :: Maybe POSIX
lastUpdatedAt = Maybe POSIX
a} :: SimulationJob) ((Maybe POSIX -> f (Maybe POSIX))
 -> SimulationJob -> f SimulationJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> SimulationJob
-> f SimulationJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The Amazon Resource Name (ARN) of the simulation job.
simulationJob_arn :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.Text)
simulationJob_arn :: (Maybe Text -> f (Maybe Text)) -> SimulationJob -> f SimulationJob
simulationJob_arn = (SimulationJob -> Maybe Text)
-> (SimulationJob -> Maybe Text -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe Text
arn :: Maybe Text
$sel:arn:SimulationJob' :: SimulationJob -> Maybe Text
arn} -> Maybe Text
arn) (\s :: SimulationJob
s@SimulationJob' {} Maybe Text
a -> SimulationJob
s {$sel:arn:SimulationJob' :: Maybe Text
arn = Maybe Text
a} :: SimulationJob)

-- | A list of robot applications.
simulationJob_robotApplications :: Lens.Lens' SimulationJob (Prelude.Maybe (Prelude.NonEmpty RobotApplicationConfig))
simulationJob_robotApplications :: (Maybe (NonEmpty RobotApplicationConfig)
 -> f (Maybe (NonEmpty RobotApplicationConfig)))
-> SimulationJob -> f SimulationJob
simulationJob_robotApplications = (SimulationJob -> Maybe (NonEmpty RobotApplicationConfig))
-> (SimulationJob
    -> Maybe (NonEmpty RobotApplicationConfig) -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe (NonEmpty RobotApplicationConfig))
     (Maybe (NonEmpty RobotApplicationConfig))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe (NonEmpty RobotApplicationConfig)
robotApplications :: Maybe (NonEmpty RobotApplicationConfig)
$sel:robotApplications:SimulationJob' :: SimulationJob -> Maybe (NonEmpty RobotApplicationConfig)
robotApplications} -> Maybe (NonEmpty RobotApplicationConfig)
robotApplications) (\s :: SimulationJob
s@SimulationJob' {} Maybe (NonEmpty RobotApplicationConfig)
a -> SimulationJob
s {$sel:robotApplications:SimulationJob' :: Maybe (NonEmpty RobotApplicationConfig)
robotApplications = Maybe (NonEmpty RobotApplicationConfig)
a} :: SimulationJob) ((Maybe (NonEmpty RobotApplicationConfig)
  -> f (Maybe (NonEmpty RobotApplicationConfig)))
 -> SimulationJob -> f SimulationJob)
-> ((Maybe (NonEmpty RobotApplicationConfig)
     -> f (Maybe (NonEmpty RobotApplicationConfig)))
    -> Maybe (NonEmpty RobotApplicationConfig)
    -> f (Maybe (NonEmpty RobotApplicationConfig)))
-> (Maybe (NonEmpty RobotApplicationConfig)
    -> f (Maybe (NonEmpty RobotApplicationConfig)))
-> SimulationJob
-> f SimulationJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty RobotApplicationConfig)
  (NonEmpty RobotApplicationConfig)
  (NonEmpty RobotApplicationConfig)
  (NonEmpty RobotApplicationConfig)
-> Iso
     (Maybe (NonEmpty RobotApplicationConfig))
     (Maybe (NonEmpty RobotApplicationConfig))
     (Maybe (NonEmpty RobotApplicationConfig))
     (Maybe (NonEmpty RobotApplicationConfig))
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 AnIso
  (NonEmpty RobotApplicationConfig)
  (NonEmpty RobotApplicationConfig)
  (NonEmpty RobotApplicationConfig)
  (NonEmpty RobotApplicationConfig)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The failure code of the simulation job if it failed.
simulationJob_failureCode :: Lens.Lens' SimulationJob (Prelude.Maybe SimulationJobErrorCode)
simulationJob_failureCode :: (Maybe SimulationJobErrorCode -> f (Maybe SimulationJobErrorCode))
-> SimulationJob -> f SimulationJob
simulationJob_failureCode = (SimulationJob -> Maybe SimulationJobErrorCode)
-> (SimulationJob -> Maybe SimulationJobErrorCode -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe SimulationJobErrorCode)
     (Maybe SimulationJobErrorCode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe SimulationJobErrorCode
failureCode :: Maybe SimulationJobErrorCode
$sel:failureCode:SimulationJob' :: SimulationJob -> Maybe SimulationJobErrorCode
failureCode} -> Maybe SimulationJobErrorCode
failureCode) (\s :: SimulationJob
s@SimulationJob' {} Maybe SimulationJobErrorCode
a -> SimulationJob
s {$sel:failureCode:SimulationJob' :: Maybe SimulationJobErrorCode
failureCode = Maybe SimulationJobErrorCode
a} :: SimulationJob)

-- | Compute information for the simulation job
simulationJob_compute :: Lens.Lens' SimulationJob (Prelude.Maybe ComputeResponse)
simulationJob_compute :: (Maybe ComputeResponse -> f (Maybe ComputeResponse))
-> SimulationJob -> f SimulationJob
simulationJob_compute = (SimulationJob -> Maybe ComputeResponse)
-> (SimulationJob -> Maybe ComputeResponse -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe ComputeResponse)
     (Maybe ComputeResponse)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe ComputeResponse
compute :: Maybe ComputeResponse
$sel:compute:SimulationJob' :: SimulationJob -> Maybe ComputeResponse
compute} -> Maybe ComputeResponse
compute) (\s :: SimulationJob
s@SimulationJob' {} Maybe ComputeResponse
a -> SimulationJob
s {$sel:compute:SimulationJob' :: Maybe ComputeResponse
compute = Maybe ComputeResponse
a} :: SimulationJob)

-- | Information about a network interface.
simulationJob_networkInterface :: Lens.Lens' SimulationJob (Prelude.Maybe NetworkInterface)
simulationJob_networkInterface :: (Maybe NetworkInterface -> f (Maybe NetworkInterface))
-> SimulationJob -> f SimulationJob
simulationJob_networkInterface = (SimulationJob -> Maybe NetworkInterface)
-> (SimulationJob -> Maybe NetworkInterface -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe NetworkInterface)
     (Maybe NetworkInterface)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe NetworkInterface
networkInterface :: Maybe NetworkInterface
$sel:networkInterface:SimulationJob' :: SimulationJob -> Maybe NetworkInterface
networkInterface} -> Maybe NetworkInterface
networkInterface) (\s :: SimulationJob
s@SimulationJob' {} Maybe NetworkInterface
a -> SimulationJob
s {$sel:networkInterface:SimulationJob' :: Maybe NetworkInterface
networkInterface = Maybe NetworkInterface
a} :: SimulationJob)

-- | The data sources for the simulation job.
simulationJob_dataSources :: Lens.Lens' SimulationJob (Prelude.Maybe [DataSource])
simulationJob_dataSources :: (Maybe [DataSource] -> f (Maybe [DataSource]))
-> SimulationJob -> f SimulationJob
simulationJob_dataSources = (SimulationJob -> Maybe [DataSource])
-> (SimulationJob -> Maybe [DataSource] -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe [DataSource])
     (Maybe [DataSource])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe [DataSource]
dataSources :: Maybe [DataSource]
$sel:dataSources:SimulationJob' :: SimulationJob -> Maybe [DataSource]
dataSources} -> Maybe [DataSource]
dataSources) (\s :: SimulationJob
s@SimulationJob' {} Maybe [DataSource]
a -> SimulationJob
s {$sel:dataSources:SimulationJob' :: Maybe [DataSource]
dataSources = Maybe [DataSource]
a} :: SimulationJob) ((Maybe [DataSource] -> f (Maybe [DataSource]))
 -> SimulationJob -> f SimulationJob)
-> ((Maybe [DataSource] -> f (Maybe [DataSource]))
    -> Maybe [DataSource] -> f (Maybe [DataSource]))
-> (Maybe [DataSource] -> f (Maybe [DataSource]))
-> SimulationJob
-> f SimulationJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [DataSource] [DataSource] [DataSource] [DataSource]
-> Iso
     (Maybe [DataSource])
     (Maybe [DataSource])
     (Maybe [DataSource])
     (Maybe [DataSource])
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 AnIso [DataSource] [DataSource] [DataSource] [DataSource]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the simulation job.
simulationJob_name :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.Text)
simulationJob_name :: (Maybe Text -> f (Maybe Text)) -> SimulationJob -> f SimulationJob
simulationJob_name = (SimulationJob -> Maybe Text)
-> (SimulationJob -> Maybe Text -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe Text
name :: Maybe Text
$sel:name:SimulationJob' :: SimulationJob -> Maybe Text
name} -> Maybe Text
name) (\s :: SimulationJob
s@SimulationJob' {} Maybe Text
a -> SimulationJob
s {$sel:name:SimulationJob' :: Maybe Text
name = Maybe Text
a} :: SimulationJob)

-- | VPC configuration information.
simulationJob_vpcConfig :: Lens.Lens' SimulationJob (Prelude.Maybe VPCConfigResponse)
simulationJob_vpcConfig :: (Maybe VPCConfigResponse -> f (Maybe VPCConfigResponse))
-> SimulationJob -> f SimulationJob
simulationJob_vpcConfig = (SimulationJob -> Maybe VPCConfigResponse)
-> (SimulationJob -> Maybe VPCConfigResponse -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe VPCConfigResponse)
     (Maybe VPCConfigResponse)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe VPCConfigResponse
vpcConfig :: Maybe VPCConfigResponse
$sel:vpcConfig:SimulationJob' :: SimulationJob -> Maybe VPCConfigResponse
vpcConfig} -> Maybe VPCConfigResponse
vpcConfig) (\s :: SimulationJob
s@SimulationJob' {} Maybe VPCConfigResponse
a -> SimulationJob
s {$sel:vpcConfig:SimulationJob' :: Maybe VPCConfigResponse
vpcConfig = Maybe VPCConfigResponse
a} :: SimulationJob)

-- | Location for output files generated by the simulation job.
simulationJob_outputLocation :: Lens.Lens' SimulationJob (Prelude.Maybe OutputLocation)
simulationJob_outputLocation :: (Maybe OutputLocation -> f (Maybe OutputLocation))
-> SimulationJob -> f SimulationJob
simulationJob_outputLocation = (SimulationJob -> Maybe OutputLocation)
-> (SimulationJob -> Maybe OutputLocation -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe OutputLocation)
     (Maybe OutputLocation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe OutputLocation
outputLocation :: Maybe OutputLocation
$sel:outputLocation:SimulationJob' :: SimulationJob -> Maybe OutputLocation
outputLocation} -> Maybe OutputLocation
outputLocation) (\s :: SimulationJob
s@SimulationJob' {} Maybe OutputLocation
a -> SimulationJob
s {$sel:outputLocation:SimulationJob' :: Maybe OutputLocation
outputLocation = Maybe OutputLocation
a} :: SimulationJob)

-- | A list of simulation applications.
simulationJob_simulationApplications :: Lens.Lens' SimulationJob (Prelude.Maybe (Prelude.NonEmpty SimulationApplicationConfig))
simulationJob_simulationApplications :: (Maybe (NonEmpty SimulationApplicationConfig)
 -> f (Maybe (NonEmpty SimulationApplicationConfig)))
-> SimulationJob -> f SimulationJob
simulationJob_simulationApplications = (SimulationJob -> Maybe (NonEmpty SimulationApplicationConfig))
-> (SimulationJob
    -> Maybe (NonEmpty SimulationApplicationConfig) -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe (NonEmpty SimulationApplicationConfig))
     (Maybe (NonEmpty SimulationApplicationConfig))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications :: Maybe (NonEmpty SimulationApplicationConfig)
$sel:simulationApplications:SimulationJob' :: SimulationJob -> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications} -> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications) (\s :: SimulationJob
s@SimulationJob' {} Maybe (NonEmpty SimulationApplicationConfig)
a -> SimulationJob
s {$sel:simulationApplications:SimulationJob' :: Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications = Maybe (NonEmpty SimulationApplicationConfig)
a} :: SimulationJob) ((Maybe (NonEmpty SimulationApplicationConfig)
  -> f (Maybe (NonEmpty SimulationApplicationConfig)))
 -> SimulationJob -> f SimulationJob)
-> ((Maybe (NonEmpty SimulationApplicationConfig)
     -> f (Maybe (NonEmpty SimulationApplicationConfig)))
    -> Maybe (NonEmpty SimulationApplicationConfig)
    -> f (Maybe (NonEmpty SimulationApplicationConfig)))
-> (Maybe (NonEmpty SimulationApplicationConfig)
    -> f (Maybe (NonEmpty SimulationApplicationConfig)))
-> SimulationJob
-> f SimulationJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty SimulationApplicationConfig)
  (NonEmpty SimulationApplicationConfig)
  (NonEmpty SimulationApplicationConfig)
  (NonEmpty SimulationApplicationConfig)
-> Iso
     (Maybe (NonEmpty SimulationApplicationConfig))
     (Maybe (NonEmpty SimulationApplicationConfig))
     (Maybe (NonEmpty SimulationApplicationConfig))
     (Maybe (NonEmpty SimulationApplicationConfig))
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 AnIso
  (NonEmpty SimulationApplicationConfig)
  (NonEmpty SimulationApplicationConfig)
  (NonEmpty SimulationApplicationConfig)
  (NonEmpty SimulationApplicationConfig)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The simulation job execution duration in milliseconds.
simulationJob_simulationTimeMillis :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.Integer)
simulationJob_simulationTimeMillis :: (Maybe Integer -> f (Maybe Integer))
-> SimulationJob -> f SimulationJob
simulationJob_simulationTimeMillis = (SimulationJob -> Maybe Integer)
-> (SimulationJob -> Maybe Integer -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe Integer
simulationTimeMillis :: Maybe Integer
$sel:simulationTimeMillis:SimulationJob' :: SimulationJob -> Maybe Integer
simulationTimeMillis} -> Maybe Integer
simulationTimeMillis) (\s :: SimulationJob
s@SimulationJob' {} Maybe Integer
a -> SimulationJob
s {$sel:simulationTimeMillis:SimulationJob' :: Maybe Integer
simulationTimeMillis = Maybe Integer
a} :: SimulationJob)

-- | A unique identifier for this @SimulationJob@ request.
simulationJob_clientRequestToken :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.Text)
simulationJob_clientRequestToken :: (Maybe Text -> f (Maybe Text)) -> SimulationJob -> f SimulationJob
simulationJob_clientRequestToken = (SimulationJob -> Maybe Text)
-> (SimulationJob -> Maybe Text -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe Text
clientRequestToken :: Maybe Text
$sel:clientRequestToken:SimulationJob' :: SimulationJob -> Maybe Text
clientRequestToken} -> Maybe Text
clientRequestToken) (\s :: SimulationJob
s@SimulationJob' {} Maybe Text
a -> SimulationJob
s {$sel:clientRequestToken:SimulationJob' :: Maybe Text
clientRequestToken = Maybe Text
a} :: SimulationJob)

-- | The time, in milliseconds since the epoch, when the simulation job was
-- last started.
simulationJob_lastStartedAt :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.UTCTime)
simulationJob_lastStartedAt :: (Maybe UTCTime -> f (Maybe UTCTime))
-> SimulationJob -> f SimulationJob
simulationJob_lastStartedAt = (SimulationJob -> Maybe POSIX)
-> (SimulationJob -> Maybe POSIX -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe POSIX
lastStartedAt :: Maybe POSIX
$sel:lastStartedAt:SimulationJob' :: SimulationJob -> Maybe POSIX
lastStartedAt} -> Maybe POSIX
lastStartedAt) (\s :: SimulationJob
s@SimulationJob' {} Maybe POSIX
a -> SimulationJob
s {$sel:lastStartedAt:SimulationJob' :: Maybe POSIX
lastStartedAt = Maybe POSIX
a} :: SimulationJob) ((Maybe POSIX -> f (Maybe POSIX))
 -> SimulationJob -> f SimulationJob)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> SimulationJob
-> f SimulationJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The logging configuration.
simulationJob_loggingConfig :: Lens.Lens' SimulationJob (Prelude.Maybe LoggingConfig)
simulationJob_loggingConfig :: (Maybe LoggingConfig -> f (Maybe LoggingConfig))
-> SimulationJob -> f SimulationJob
simulationJob_loggingConfig = (SimulationJob -> Maybe LoggingConfig)
-> (SimulationJob -> Maybe LoggingConfig -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe LoggingConfig)
     (Maybe LoggingConfig)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe LoggingConfig
loggingConfig :: Maybe LoggingConfig
$sel:loggingConfig:SimulationJob' :: SimulationJob -> Maybe LoggingConfig
loggingConfig} -> Maybe LoggingConfig
loggingConfig) (\s :: SimulationJob
s@SimulationJob' {} Maybe LoggingConfig
a -> SimulationJob
s {$sel:loggingConfig:SimulationJob' :: Maybe LoggingConfig
loggingConfig = Maybe LoggingConfig
a} :: SimulationJob)

-- | The IAM role that allows the simulation instance to call the AWS APIs
-- that are specified in its associated policies on your behalf. This is
-- how credentials are passed in to your simulation job.
simulationJob_iamRole :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.Text)
simulationJob_iamRole :: (Maybe Text -> f (Maybe Text)) -> SimulationJob -> f SimulationJob
simulationJob_iamRole = (SimulationJob -> Maybe Text)
-> (SimulationJob -> Maybe Text -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe Text
iamRole :: Maybe Text
$sel:iamRole:SimulationJob' :: SimulationJob -> Maybe Text
iamRole} -> Maybe Text
iamRole) (\s :: SimulationJob
s@SimulationJob' {} Maybe Text
a -> SimulationJob
s {$sel:iamRole:SimulationJob' :: Maybe Text
iamRole = Maybe Text
a} :: SimulationJob)

-- | The maximum simulation job duration in seconds. The value must be 8 days
-- (691,200 seconds) or less.
simulationJob_maxJobDurationInSeconds :: Lens.Lens' SimulationJob (Prelude.Maybe Prelude.Integer)
simulationJob_maxJobDurationInSeconds :: (Maybe Integer -> f (Maybe Integer))
-> SimulationJob -> f SimulationJob
simulationJob_maxJobDurationInSeconds = (SimulationJob -> Maybe Integer)
-> (SimulationJob -> Maybe Integer -> SimulationJob)
-> Lens SimulationJob SimulationJob (Maybe Integer) (Maybe Integer)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe Integer
maxJobDurationInSeconds :: Maybe Integer
$sel:maxJobDurationInSeconds:SimulationJob' :: SimulationJob -> Maybe Integer
maxJobDurationInSeconds} -> Maybe Integer
maxJobDurationInSeconds) (\s :: SimulationJob
s@SimulationJob' {} Maybe Integer
a -> SimulationJob
s {$sel:maxJobDurationInSeconds:SimulationJob' :: Maybe Integer
maxJobDurationInSeconds = Maybe Integer
a} :: SimulationJob)

-- | A map that contains tag keys and tag values that are attached to the
-- simulation job.
simulationJob_tags :: Lens.Lens' SimulationJob (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
simulationJob_tags :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> SimulationJob -> f SimulationJob
simulationJob_tags = (SimulationJob -> Maybe (HashMap Text Text))
-> (SimulationJob -> Maybe (HashMap Text Text) -> SimulationJob)
-> Lens
     SimulationJob
     SimulationJob
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJob' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:SimulationJob' :: SimulationJob -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: SimulationJob
s@SimulationJob' {} Maybe (HashMap Text Text)
a -> SimulationJob
s {$sel:tags:SimulationJob' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: SimulationJob) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> SimulationJob -> f SimulationJob)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> SimulationJob
-> f SimulationJob
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.FromJSON SimulationJob where
  parseJSON :: Value -> Parser SimulationJob
parseJSON =
    String
-> (Object -> Parser SimulationJob)
-> Value
-> Parser SimulationJob
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"SimulationJob"
      ( \Object
x ->
          Maybe Text
-> Maybe FailureBehavior
-> Maybe SimulationJobStatus
-> Maybe POSIX
-> Maybe Text
-> Maybe (NonEmpty RobotApplicationConfig)
-> Maybe SimulationJobErrorCode
-> Maybe ComputeResponse
-> Maybe NetworkInterface
-> Maybe [DataSource]
-> Maybe Text
-> Maybe VPCConfigResponse
-> Maybe OutputLocation
-> Maybe (NonEmpty SimulationApplicationConfig)
-> Maybe Integer
-> Maybe Text
-> Maybe POSIX
-> Maybe LoggingConfig
-> Maybe Text
-> Maybe Integer
-> Maybe (HashMap Text Text)
-> SimulationJob
SimulationJob'
            (Maybe Text
 -> Maybe FailureBehavior
 -> Maybe SimulationJobStatus
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe (NonEmpty RobotApplicationConfig)
 -> Maybe SimulationJobErrorCode
 -> Maybe ComputeResponse
 -> Maybe NetworkInterface
 -> Maybe [DataSource]
 -> Maybe Text
 -> Maybe VPCConfigResponse
 -> Maybe OutputLocation
 -> Maybe (NonEmpty SimulationApplicationConfig)
 -> Maybe Integer
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe LoggingConfig
 -> Maybe Text
 -> Maybe Integer
 -> Maybe (HashMap Text Text)
 -> SimulationJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe FailureBehavior
      -> Maybe SimulationJobStatus
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (NonEmpty RobotApplicationConfig)
      -> Maybe SimulationJobErrorCode
      -> Maybe ComputeResponse
      -> Maybe NetworkInterface
      -> Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"failureReason")
            Parser
  (Maybe FailureBehavior
   -> Maybe SimulationJobStatus
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (NonEmpty RobotApplicationConfig)
   -> Maybe SimulationJobErrorCode
   -> Maybe ComputeResponse
   -> Maybe NetworkInterface
   -> Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe FailureBehavior)
-> Parser
     (Maybe SimulationJobStatus
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe (NonEmpty RobotApplicationConfig)
      -> Maybe SimulationJobErrorCode
      -> Maybe ComputeResponse
      -> Maybe NetworkInterface
      -> Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe FailureBehavior)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"failureBehavior")
            Parser
  (Maybe SimulationJobStatus
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe (NonEmpty RobotApplicationConfig)
   -> Maybe SimulationJobErrorCode
   -> Maybe ComputeResponse
   -> Maybe NetworkInterface
   -> Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe SimulationJobStatus)
-> Parser
     (Maybe POSIX
      -> Maybe Text
      -> Maybe (NonEmpty RobotApplicationConfig)
      -> Maybe SimulationJobErrorCode
      -> Maybe ComputeResponse
      -> Maybe NetworkInterface
      -> Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SimulationJobStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"status")
            Parser
  (Maybe POSIX
   -> Maybe Text
   -> Maybe (NonEmpty RobotApplicationConfig)
   -> Maybe SimulationJobErrorCode
   -> Maybe ComputeResponse
   -> Maybe NetworkInterface
   -> Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe (NonEmpty RobotApplicationConfig)
      -> Maybe SimulationJobErrorCode
      -> Maybe ComputeResponse
      -> Maybe NetworkInterface
      -> Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"lastUpdatedAt")
            Parser
  (Maybe Text
   -> Maybe (NonEmpty RobotApplicationConfig)
   -> Maybe SimulationJobErrorCode
   -> Maybe ComputeResponse
   -> Maybe NetworkInterface
   -> Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe (NonEmpty RobotApplicationConfig)
      -> Maybe SimulationJobErrorCode
      -> Maybe ComputeResponse
      -> Maybe NetworkInterface
      -> Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"arn")
            Parser
  (Maybe (NonEmpty RobotApplicationConfig)
   -> Maybe SimulationJobErrorCode
   -> Maybe ComputeResponse
   -> Maybe NetworkInterface
   -> Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe (NonEmpty RobotApplicationConfig))
-> Parser
     (Maybe SimulationJobErrorCode
      -> Maybe ComputeResponse
      -> Maybe NetworkInterface
      -> Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty RobotApplicationConfig))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"robotApplications")
            Parser
  (Maybe SimulationJobErrorCode
   -> Maybe ComputeResponse
   -> Maybe NetworkInterface
   -> Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe SimulationJobErrorCode)
-> Parser
     (Maybe ComputeResponse
      -> Maybe NetworkInterface
      -> Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe SimulationJobErrorCode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"failureCode")
            Parser
  (Maybe ComputeResponse
   -> Maybe NetworkInterface
   -> Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe ComputeResponse)
-> Parser
     (Maybe NetworkInterface
      -> Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ComputeResponse)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"compute")
            Parser
  (Maybe NetworkInterface
   -> Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe NetworkInterface)
-> Parser
     (Maybe [DataSource]
      -> Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NetworkInterface)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"networkInterface")
            Parser
  (Maybe [DataSource]
   -> Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe [DataSource])
-> Parser
     (Maybe Text
      -> Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [DataSource]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"dataSources" Parser (Maybe (Maybe [DataSource]))
-> Maybe [DataSource] -> Parser (Maybe [DataSource])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [DataSource]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe VPCConfigResponse
      -> Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"name")
            Parser
  (Maybe VPCConfigResponse
   -> Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe VPCConfigResponse)
-> Parser
     (Maybe OutputLocation
      -> Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe VPCConfigResponse)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"vpcConfig")
            Parser
  (Maybe OutputLocation
   -> Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe OutputLocation)
-> Parser
     (Maybe (NonEmpty SimulationApplicationConfig)
      -> Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe OutputLocation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"outputLocation")
            Parser
  (Maybe (NonEmpty SimulationApplicationConfig)
   -> Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe (NonEmpty SimulationApplicationConfig))
-> Parser
     (Maybe Integer
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe (NonEmpty SimulationApplicationConfig))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"simulationApplications")
            Parser
  (Maybe Integer
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe Integer)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"simulationTimeMillis")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clientRequestToken")
            Parser
  (Maybe POSIX
   -> Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe LoggingConfig
      -> Maybe Text
      -> Maybe Integer
      -> Maybe (HashMap Text Text)
      -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"lastStartedAt")
            Parser
  (Maybe LoggingConfig
   -> Maybe Text
   -> Maybe Integer
   -> Maybe (HashMap Text Text)
   -> SimulationJob)
-> Parser (Maybe LoggingConfig)
-> Parser
     (Maybe Text
      -> Maybe Integer -> Maybe (HashMap Text Text) -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LoggingConfig)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"loggingConfig")
            Parser
  (Maybe Text
   -> Maybe Integer -> Maybe (HashMap Text Text) -> SimulationJob)
-> Parser (Maybe Text)
-> Parser
     (Maybe Integer -> Maybe (HashMap Text Text) -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"iamRole")
            Parser
  (Maybe Integer -> Maybe (HashMap Text Text) -> SimulationJob)
-> Parser (Maybe Integer)
-> Parser (Maybe (HashMap Text Text) -> SimulationJob)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"maxJobDurationInSeconds")
            Parser (Maybe (HashMap Text Text) -> SimulationJob)
-> Parser (Maybe (HashMap Text Text)) -> Parser SimulationJob
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tags" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable SimulationJob

instance Prelude.NFData SimulationJob