{-# 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.SimulationJobRequest
-- 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.RobOMaker.Types.SimulationJobRequest 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.RobOMaker.Types.Compute
import Amazonka.RobOMaker.Types.DataSourceConfig
import Amazonka.RobOMaker.Types.FailureBehavior
import Amazonka.RobOMaker.Types.LoggingConfig
import Amazonka.RobOMaker.Types.OutputLocation
import Amazonka.RobOMaker.Types.RobotApplicationConfig
import Amazonka.RobOMaker.Types.SimulationApplicationConfig
import Amazonka.RobOMaker.Types.VPCConfig

-- | Information about a simulation job request.
--
-- /See:/ 'newSimulationJobRequest' smart constructor.
data SimulationJobRequest = SimulationJobRequest'
  { -- | Compute information for the simulation job
    SimulationJobRequest -> Maybe Compute
compute :: Prelude.Maybe Compute,
    -- | Specify data sources to mount read-only files from S3 into your
    -- simulation. These files are available under
    -- @\/opt\/robomaker\/datasources\/data_source_name@.
    --
    -- There is a limit of 100 files and a combined size of 25GB for all
    -- @DataSourceConfig@ objects.
    SimulationJobRequest -> Maybe (NonEmpty DataSourceConfig)
dataSources :: Prelude.Maybe (Prelude.NonEmpty DataSourceConfig),
    -- | 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.
    SimulationJobRequest -> Maybe FailureBehavior
failureBehavior :: Prelude.Maybe FailureBehavior,
    -- | The IAM role name 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.
    SimulationJobRequest -> Maybe Text
iamRole :: Prelude.Maybe Prelude.Text,
    SimulationJobRequest -> Maybe LoggingConfig
loggingConfig :: Prelude.Maybe LoggingConfig,
    SimulationJobRequest -> Maybe OutputLocation
outputLocation :: Prelude.Maybe OutputLocation,
    -- | The robot applications to use in the simulation job.
    SimulationJobRequest -> Maybe (NonEmpty RobotApplicationConfig)
robotApplications :: Prelude.Maybe (Prelude.NonEmpty RobotApplicationConfig),
    -- | The simulation applications to use in the simulation job.
    SimulationJobRequest
-> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications :: Prelude.Maybe (Prelude.NonEmpty SimulationApplicationConfig),
    -- | A map that contains tag keys and tag values that are attached to the
    -- simulation job request.
    SimulationJobRequest -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | A Boolean indicating whether to use default applications in the
    -- simulation job. Default applications include Gazebo, rqt, rviz and
    -- terminal access.
    SimulationJobRequest -> Maybe Bool
useDefaultApplications :: Prelude.Maybe Prelude.Bool,
    SimulationJobRequest -> Maybe VPCConfig
vpcConfig :: Prelude.Maybe VPCConfig,
    -- | The maximum simulation job duration in seconds. The value must be 8 days
    -- (691,200 seconds) or less.
    SimulationJobRequest -> Integer
maxJobDurationInSeconds :: Prelude.Integer
  }
  deriving (SimulationJobRequest -> SimulationJobRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SimulationJobRequest -> SimulationJobRequest -> Bool
$c/= :: SimulationJobRequest -> SimulationJobRequest -> Bool
== :: SimulationJobRequest -> SimulationJobRequest -> Bool
$c== :: SimulationJobRequest -> SimulationJobRequest -> Bool
Prelude.Eq, ReadPrec [SimulationJobRequest]
ReadPrec SimulationJobRequest
Int -> ReadS SimulationJobRequest
ReadS [SimulationJobRequest]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SimulationJobRequest]
$creadListPrec :: ReadPrec [SimulationJobRequest]
readPrec :: ReadPrec SimulationJobRequest
$creadPrec :: ReadPrec SimulationJobRequest
readList :: ReadS [SimulationJobRequest]
$creadList :: ReadS [SimulationJobRequest]
readsPrec :: Int -> ReadS SimulationJobRequest
$creadsPrec :: Int -> ReadS SimulationJobRequest
Prelude.Read, Int -> SimulationJobRequest -> ShowS
[SimulationJobRequest] -> ShowS
SimulationJobRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SimulationJobRequest] -> ShowS
$cshowList :: [SimulationJobRequest] -> ShowS
show :: SimulationJobRequest -> String
$cshow :: SimulationJobRequest -> String
showsPrec :: Int -> SimulationJobRequest -> ShowS
$cshowsPrec :: Int -> SimulationJobRequest -> ShowS
Prelude.Show, forall x. Rep SimulationJobRequest x -> SimulationJobRequest
forall x. SimulationJobRequest -> Rep SimulationJobRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SimulationJobRequest x -> SimulationJobRequest
$cfrom :: forall x. SimulationJobRequest -> Rep SimulationJobRequest x
Prelude.Generic)

-- |
-- Create a value of 'SimulationJobRequest' 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:
--
-- 'compute', 'simulationJobRequest_compute' - Compute information for the simulation job
--
-- 'dataSources', 'simulationJobRequest_dataSources' - Specify data sources to mount read-only files from S3 into your
-- simulation. These files are available under
-- @\/opt\/robomaker\/datasources\/data_source_name@.
--
-- There is a limit of 100 files and a combined size of 25GB for all
-- @DataSourceConfig@ objects.
--
-- 'failureBehavior', 'simulationJobRequest_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.
--
-- 'iamRole', 'simulationJobRequest_iamRole' - The IAM role name 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.
--
-- 'loggingConfig', 'simulationJobRequest_loggingConfig' - Undocumented member.
--
-- 'outputLocation', 'simulationJobRequest_outputLocation' - Undocumented member.
--
-- 'robotApplications', 'simulationJobRequest_robotApplications' - The robot applications to use in the simulation job.
--
-- 'simulationApplications', 'simulationJobRequest_simulationApplications' - The simulation applications to use in the simulation job.
--
-- 'tags', 'simulationJobRequest_tags' - A map that contains tag keys and tag values that are attached to the
-- simulation job request.
--
-- 'useDefaultApplications', 'simulationJobRequest_useDefaultApplications' - A Boolean indicating whether to use default applications in the
-- simulation job. Default applications include Gazebo, rqt, rviz and
-- terminal access.
--
-- 'vpcConfig', 'simulationJobRequest_vpcConfig' - Undocumented member.
--
-- 'maxJobDurationInSeconds', 'simulationJobRequest_maxJobDurationInSeconds' - The maximum simulation job duration in seconds. The value must be 8 days
-- (691,200 seconds) or less.
newSimulationJobRequest ::
  -- | 'maxJobDurationInSeconds'
  Prelude.Integer ->
  SimulationJobRequest
newSimulationJobRequest :: Integer -> SimulationJobRequest
newSimulationJobRequest Integer
pMaxJobDurationInSeconds_ =
  SimulationJobRequest'
    { $sel:compute:SimulationJobRequest' :: Maybe Compute
compute = forall a. Maybe a
Prelude.Nothing,
      $sel:dataSources:SimulationJobRequest' :: Maybe (NonEmpty DataSourceConfig)
dataSources = forall a. Maybe a
Prelude.Nothing,
      $sel:failureBehavior:SimulationJobRequest' :: Maybe FailureBehavior
failureBehavior = forall a. Maybe a
Prelude.Nothing,
      $sel:iamRole:SimulationJobRequest' :: Maybe Text
iamRole = forall a. Maybe a
Prelude.Nothing,
      $sel:loggingConfig:SimulationJobRequest' :: Maybe LoggingConfig
loggingConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:outputLocation:SimulationJobRequest' :: Maybe OutputLocation
outputLocation = forall a. Maybe a
Prelude.Nothing,
      $sel:robotApplications:SimulationJobRequest' :: Maybe (NonEmpty RobotApplicationConfig)
robotApplications = forall a. Maybe a
Prelude.Nothing,
      $sel:simulationApplications:SimulationJobRequest' :: Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:SimulationJobRequest' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:useDefaultApplications:SimulationJobRequest' :: Maybe Bool
useDefaultApplications = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfig:SimulationJobRequest' :: Maybe VPCConfig
vpcConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:maxJobDurationInSeconds:SimulationJobRequest' :: Integer
maxJobDurationInSeconds = Integer
pMaxJobDurationInSeconds_
    }

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

-- | Specify data sources to mount read-only files from S3 into your
-- simulation. These files are available under
-- @\/opt\/robomaker\/datasources\/data_source_name@.
--
-- There is a limit of 100 files and a combined size of 25GB for all
-- @DataSourceConfig@ objects.
simulationJobRequest_dataSources :: Lens.Lens' SimulationJobRequest (Prelude.Maybe (Prelude.NonEmpty DataSourceConfig))
simulationJobRequest_dataSources :: Lens' SimulationJobRequest (Maybe (NonEmpty DataSourceConfig))
simulationJobRequest_dataSources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe (NonEmpty DataSourceConfig)
dataSources :: Maybe (NonEmpty DataSourceConfig)
$sel:dataSources:SimulationJobRequest' :: SimulationJobRequest -> Maybe (NonEmpty DataSourceConfig)
dataSources} -> Maybe (NonEmpty DataSourceConfig)
dataSources) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe (NonEmpty DataSourceConfig)
a -> SimulationJobRequest
s {$sel:dataSources:SimulationJobRequest' :: Maybe (NonEmpty DataSourceConfig)
dataSources = Maybe (NonEmpty DataSourceConfig)
a} :: SimulationJobRequest) 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 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.
simulationJobRequest_failureBehavior :: Lens.Lens' SimulationJobRequest (Prelude.Maybe FailureBehavior)
simulationJobRequest_failureBehavior :: Lens' SimulationJobRequest (Maybe FailureBehavior)
simulationJobRequest_failureBehavior = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe FailureBehavior
failureBehavior :: Maybe FailureBehavior
$sel:failureBehavior:SimulationJobRequest' :: SimulationJobRequest -> Maybe FailureBehavior
failureBehavior} -> Maybe FailureBehavior
failureBehavior) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe FailureBehavior
a -> SimulationJobRequest
s {$sel:failureBehavior:SimulationJobRequest' :: Maybe FailureBehavior
failureBehavior = Maybe FailureBehavior
a} :: SimulationJobRequest)

-- | The IAM role name 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.
simulationJobRequest_iamRole :: Lens.Lens' SimulationJobRequest (Prelude.Maybe Prelude.Text)
simulationJobRequest_iamRole :: Lens' SimulationJobRequest (Maybe Text)
simulationJobRequest_iamRole = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe Text
iamRole :: Maybe Text
$sel:iamRole:SimulationJobRequest' :: SimulationJobRequest -> Maybe Text
iamRole} -> Maybe Text
iamRole) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe Text
a -> SimulationJobRequest
s {$sel:iamRole:SimulationJobRequest' :: Maybe Text
iamRole = Maybe Text
a} :: SimulationJobRequest)

-- | Undocumented member.
simulationJobRequest_loggingConfig :: Lens.Lens' SimulationJobRequest (Prelude.Maybe LoggingConfig)
simulationJobRequest_loggingConfig :: Lens' SimulationJobRequest (Maybe LoggingConfig)
simulationJobRequest_loggingConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe LoggingConfig
loggingConfig :: Maybe LoggingConfig
$sel:loggingConfig:SimulationJobRequest' :: SimulationJobRequest -> Maybe LoggingConfig
loggingConfig} -> Maybe LoggingConfig
loggingConfig) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe LoggingConfig
a -> SimulationJobRequest
s {$sel:loggingConfig:SimulationJobRequest' :: Maybe LoggingConfig
loggingConfig = Maybe LoggingConfig
a} :: SimulationJobRequest)

-- | Undocumented member.
simulationJobRequest_outputLocation :: Lens.Lens' SimulationJobRequest (Prelude.Maybe OutputLocation)
simulationJobRequest_outputLocation :: Lens' SimulationJobRequest (Maybe OutputLocation)
simulationJobRequest_outputLocation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe OutputLocation
outputLocation :: Maybe OutputLocation
$sel:outputLocation:SimulationJobRequest' :: SimulationJobRequest -> Maybe OutputLocation
outputLocation} -> Maybe OutputLocation
outputLocation) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe OutputLocation
a -> SimulationJobRequest
s {$sel:outputLocation:SimulationJobRequest' :: Maybe OutputLocation
outputLocation = Maybe OutputLocation
a} :: SimulationJobRequest)

-- | The robot applications to use in the simulation job.
simulationJobRequest_robotApplications :: Lens.Lens' SimulationJobRequest (Prelude.Maybe (Prelude.NonEmpty RobotApplicationConfig))
simulationJobRequest_robotApplications :: Lens'
  SimulationJobRequest (Maybe (NonEmpty RobotApplicationConfig))
simulationJobRequest_robotApplications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe (NonEmpty RobotApplicationConfig)
robotApplications :: Maybe (NonEmpty RobotApplicationConfig)
$sel:robotApplications:SimulationJobRequest' :: SimulationJobRequest -> Maybe (NonEmpty RobotApplicationConfig)
robotApplications} -> Maybe (NonEmpty RobotApplicationConfig)
robotApplications) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe (NonEmpty RobotApplicationConfig)
a -> SimulationJobRequest
s {$sel:robotApplications:SimulationJobRequest' :: Maybe (NonEmpty RobotApplicationConfig)
robotApplications = Maybe (NonEmpty RobotApplicationConfig)
a} :: SimulationJobRequest) 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 simulation applications to use in the simulation job.
simulationJobRequest_simulationApplications :: Lens.Lens' SimulationJobRequest (Prelude.Maybe (Prelude.NonEmpty SimulationApplicationConfig))
simulationJobRequest_simulationApplications :: Lens'
  SimulationJobRequest (Maybe (NonEmpty SimulationApplicationConfig))
simulationJobRequest_simulationApplications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications :: Maybe (NonEmpty SimulationApplicationConfig)
$sel:simulationApplications:SimulationJobRequest' :: SimulationJobRequest
-> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications} -> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe (NonEmpty SimulationApplicationConfig)
a -> SimulationJobRequest
s {$sel:simulationApplications:SimulationJobRequest' :: Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications = Maybe (NonEmpty SimulationApplicationConfig)
a} :: SimulationJobRequest) 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

-- | A map that contains tag keys and tag values that are attached to the
-- simulation job request.
simulationJobRequest_tags :: Lens.Lens' SimulationJobRequest (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
simulationJobRequest_tags :: Lens' SimulationJobRequest (Maybe (HashMap Text Text))
simulationJobRequest_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:SimulationJobRequest' :: SimulationJobRequest -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe (HashMap Text Text)
a -> SimulationJobRequest
s {$sel:tags:SimulationJobRequest' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: SimulationJobRequest) 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

-- | A Boolean indicating whether to use default applications in the
-- simulation job. Default applications include Gazebo, rqt, rviz and
-- terminal access.
simulationJobRequest_useDefaultApplications :: Lens.Lens' SimulationJobRequest (Prelude.Maybe Prelude.Bool)
simulationJobRequest_useDefaultApplications :: Lens' SimulationJobRequest (Maybe Bool)
simulationJobRequest_useDefaultApplications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe Bool
useDefaultApplications :: Maybe Bool
$sel:useDefaultApplications:SimulationJobRequest' :: SimulationJobRequest -> Maybe Bool
useDefaultApplications} -> Maybe Bool
useDefaultApplications) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe Bool
a -> SimulationJobRequest
s {$sel:useDefaultApplications:SimulationJobRequest' :: Maybe Bool
useDefaultApplications = Maybe Bool
a} :: SimulationJobRequest)

-- | Undocumented member.
simulationJobRequest_vpcConfig :: Lens.Lens' SimulationJobRequest (Prelude.Maybe VPCConfig)
simulationJobRequest_vpcConfig :: Lens' SimulationJobRequest (Maybe VPCConfig)
simulationJobRequest_vpcConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SimulationJobRequest' {Maybe VPCConfig
vpcConfig :: Maybe VPCConfig
$sel:vpcConfig:SimulationJobRequest' :: SimulationJobRequest -> Maybe VPCConfig
vpcConfig} -> Maybe VPCConfig
vpcConfig) (\s :: SimulationJobRequest
s@SimulationJobRequest' {} Maybe VPCConfig
a -> SimulationJobRequest
s {$sel:vpcConfig:SimulationJobRequest' :: Maybe VPCConfig
vpcConfig = Maybe VPCConfig
a} :: SimulationJobRequest)

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

instance Data.FromJSON SimulationJobRequest where
  parseJSON :: Value -> Parser SimulationJobRequest
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"SimulationJobRequest"
      ( \Object
x ->
          Maybe Compute
-> Maybe (NonEmpty DataSourceConfig)
-> Maybe FailureBehavior
-> Maybe Text
-> Maybe LoggingConfig
-> Maybe OutputLocation
-> Maybe (NonEmpty RobotApplicationConfig)
-> Maybe (NonEmpty SimulationApplicationConfig)
-> Maybe (HashMap Text Text)
-> Maybe Bool
-> Maybe VPCConfig
-> Integer
-> SimulationJobRequest
SimulationJobRequest'
            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
"compute")
            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
"dataSources")
            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
"failureBehavior")
            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
"iamRole")
            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
"loggingConfig")
            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
"outputLocation")
            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
"robotApplications")
            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
"simulationApplications")
            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
"useDefaultApplications")
            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
"vpcConfig")
            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
"maxJobDurationInSeconds")
      )

instance Prelude.Hashable SimulationJobRequest where
  hashWithSalt :: Int -> SimulationJobRequest -> Int
hashWithSalt Int
_salt SimulationJobRequest' {Integer
Maybe Bool
Maybe (NonEmpty DataSourceConfig)
Maybe (NonEmpty RobotApplicationConfig)
Maybe (NonEmpty SimulationApplicationConfig)
Maybe Text
Maybe (HashMap Text Text)
Maybe Compute
Maybe FailureBehavior
Maybe LoggingConfig
Maybe OutputLocation
Maybe VPCConfig
maxJobDurationInSeconds :: Integer
vpcConfig :: Maybe VPCConfig
useDefaultApplications :: Maybe Bool
tags :: Maybe (HashMap Text Text)
simulationApplications :: Maybe (NonEmpty SimulationApplicationConfig)
robotApplications :: Maybe (NonEmpty RobotApplicationConfig)
outputLocation :: Maybe OutputLocation
loggingConfig :: Maybe LoggingConfig
iamRole :: Maybe Text
failureBehavior :: Maybe FailureBehavior
dataSources :: Maybe (NonEmpty DataSourceConfig)
compute :: Maybe Compute
$sel:maxJobDurationInSeconds:SimulationJobRequest' :: SimulationJobRequest -> Integer
$sel:vpcConfig:SimulationJobRequest' :: SimulationJobRequest -> Maybe VPCConfig
$sel:useDefaultApplications:SimulationJobRequest' :: SimulationJobRequest -> Maybe Bool
$sel:tags:SimulationJobRequest' :: SimulationJobRequest -> Maybe (HashMap Text Text)
$sel:simulationApplications:SimulationJobRequest' :: SimulationJobRequest
-> Maybe (NonEmpty SimulationApplicationConfig)
$sel:robotApplications:SimulationJobRequest' :: SimulationJobRequest -> Maybe (NonEmpty RobotApplicationConfig)
$sel:outputLocation:SimulationJobRequest' :: SimulationJobRequest -> Maybe OutputLocation
$sel:loggingConfig:SimulationJobRequest' :: SimulationJobRequest -> Maybe LoggingConfig
$sel:iamRole:SimulationJobRequest' :: SimulationJobRequest -> Maybe Text
$sel:failureBehavior:SimulationJobRequest' :: SimulationJobRequest -> Maybe FailureBehavior
$sel:dataSources:SimulationJobRequest' :: SimulationJobRequest -> Maybe (NonEmpty DataSourceConfig)
$sel:compute:SimulationJobRequest' :: SimulationJobRequest -> Maybe Compute
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Compute
compute
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty DataSourceConfig)
dataSources
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FailureBehavior
failureBehavior
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
iamRole
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LoggingConfig
loggingConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OutputLocation
outputLocation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty RobotApplicationConfig)
robotApplications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
useDefaultApplications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VPCConfig
vpcConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Integer
maxJobDurationInSeconds

instance Prelude.NFData SimulationJobRequest where
  rnf :: SimulationJobRequest -> ()
rnf SimulationJobRequest' {Integer
Maybe Bool
Maybe (NonEmpty DataSourceConfig)
Maybe (NonEmpty RobotApplicationConfig)
Maybe (NonEmpty SimulationApplicationConfig)
Maybe Text
Maybe (HashMap Text Text)
Maybe Compute
Maybe FailureBehavior
Maybe LoggingConfig
Maybe OutputLocation
Maybe VPCConfig
maxJobDurationInSeconds :: Integer
vpcConfig :: Maybe VPCConfig
useDefaultApplications :: Maybe Bool
tags :: Maybe (HashMap Text Text)
simulationApplications :: Maybe (NonEmpty SimulationApplicationConfig)
robotApplications :: Maybe (NonEmpty RobotApplicationConfig)
outputLocation :: Maybe OutputLocation
loggingConfig :: Maybe LoggingConfig
iamRole :: Maybe Text
failureBehavior :: Maybe FailureBehavior
dataSources :: Maybe (NonEmpty DataSourceConfig)
compute :: Maybe Compute
$sel:maxJobDurationInSeconds:SimulationJobRequest' :: SimulationJobRequest -> Integer
$sel:vpcConfig:SimulationJobRequest' :: SimulationJobRequest -> Maybe VPCConfig
$sel:useDefaultApplications:SimulationJobRequest' :: SimulationJobRequest -> Maybe Bool
$sel:tags:SimulationJobRequest' :: SimulationJobRequest -> Maybe (HashMap Text Text)
$sel:simulationApplications:SimulationJobRequest' :: SimulationJobRequest
-> Maybe (NonEmpty SimulationApplicationConfig)
$sel:robotApplications:SimulationJobRequest' :: SimulationJobRequest -> Maybe (NonEmpty RobotApplicationConfig)
$sel:outputLocation:SimulationJobRequest' :: SimulationJobRequest -> Maybe OutputLocation
$sel:loggingConfig:SimulationJobRequest' :: SimulationJobRequest -> Maybe LoggingConfig
$sel:iamRole:SimulationJobRequest' :: SimulationJobRequest -> Maybe Text
$sel:failureBehavior:SimulationJobRequest' :: SimulationJobRequest -> Maybe FailureBehavior
$sel:dataSources:SimulationJobRequest' :: SimulationJobRequest -> Maybe (NonEmpty DataSourceConfig)
$sel:compute:SimulationJobRequest' :: SimulationJobRequest -> Maybe Compute
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Compute
compute
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty DataSourceConfig)
dataSources
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FailureBehavior
failureBehavior
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
iamRole
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LoggingConfig
loggingConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OutputLocation
outputLocation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty RobotApplicationConfig)
robotApplications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications
      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 Bool
useDefaultApplications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VPCConfig
vpcConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Integer
maxJobDurationInSeconds

instance Data.ToJSON SimulationJobRequest where
  toJSON :: SimulationJobRequest -> Value
toJSON SimulationJobRequest' {Integer
Maybe Bool
Maybe (NonEmpty DataSourceConfig)
Maybe (NonEmpty RobotApplicationConfig)
Maybe (NonEmpty SimulationApplicationConfig)
Maybe Text
Maybe (HashMap Text Text)
Maybe Compute
Maybe FailureBehavior
Maybe LoggingConfig
Maybe OutputLocation
Maybe VPCConfig
maxJobDurationInSeconds :: Integer
vpcConfig :: Maybe VPCConfig
useDefaultApplications :: Maybe Bool
tags :: Maybe (HashMap Text Text)
simulationApplications :: Maybe (NonEmpty SimulationApplicationConfig)
robotApplications :: Maybe (NonEmpty RobotApplicationConfig)
outputLocation :: Maybe OutputLocation
loggingConfig :: Maybe LoggingConfig
iamRole :: Maybe Text
failureBehavior :: Maybe FailureBehavior
dataSources :: Maybe (NonEmpty DataSourceConfig)
compute :: Maybe Compute
$sel:maxJobDurationInSeconds:SimulationJobRequest' :: SimulationJobRequest -> Integer
$sel:vpcConfig:SimulationJobRequest' :: SimulationJobRequest -> Maybe VPCConfig
$sel:useDefaultApplications:SimulationJobRequest' :: SimulationJobRequest -> Maybe Bool
$sel:tags:SimulationJobRequest' :: SimulationJobRequest -> Maybe (HashMap Text Text)
$sel:simulationApplications:SimulationJobRequest' :: SimulationJobRequest
-> Maybe (NonEmpty SimulationApplicationConfig)
$sel:robotApplications:SimulationJobRequest' :: SimulationJobRequest -> Maybe (NonEmpty RobotApplicationConfig)
$sel:outputLocation:SimulationJobRequest' :: SimulationJobRequest -> Maybe OutputLocation
$sel:loggingConfig:SimulationJobRequest' :: SimulationJobRequest -> Maybe LoggingConfig
$sel:iamRole:SimulationJobRequest' :: SimulationJobRequest -> Maybe Text
$sel:failureBehavior:SimulationJobRequest' :: SimulationJobRequest -> Maybe FailureBehavior
$sel:dataSources:SimulationJobRequest' :: SimulationJobRequest -> Maybe (NonEmpty DataSourceConfig)
$sel:compute:SimulationJobRequest' :: SimulationJobRequest -> Maybe Compute
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"compute" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Compute
compute,
            (Key
"dataSources" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty DataSourceConfig)
dataSources,
            (Key
"failureBehavior" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FailureBehavior
failureBehavior,
            (Key
"iamRole" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
iamRole,
            (Key
"loggingConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LoggingConfig
loggingConfig,
            (Key
"outputLocation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OutputLocation
outputLocation,
            (Key
"robotApplications" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty RobotApplicationConfig)
robotApplications,
            (Key
"simulationApplications" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications,
            (Key
"tags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
tags,
            (Key
"useDefaultApplications" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
useDefaultApplications,
            (Key
"vpcConfig" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VPCConfig
vpcConfig,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"maxJobDurationInSeconds"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Integer
maxJobDurationInSeconds
              )
          ]
      )