{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# 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.DescribeSimulationJob
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes a simulation job.
module Amazonka.RobOMaker.DescribeSimulationJob
  ( -- * Creating a Request
    DescribeSimulationJob (..),
    newDescribeSimulationJob,

    -- * Request Lenses
    describeSimulationJob_job,

    -- * Destructuring the Response
    DescribeSimulationJobResponse (..),
    newDescribeSimulationJobResponse,

    -- * Response Lenses
    describeSimulationJobResponse_arn,
    describeSimulationJobResponse_clientRequestToken,
    describeSimulationJobResponse_compute,
    describeSimulationJobResponse_dataSources,
    describeSimulationJobResponse_failureBehavior,
    describeSimulationJobResponse_failureCode,
    describeSimulationJobResponse_failureReason,
    describeSimulationJobResponse_iamRole,
    describeSimulationJobResponse_lastStartedAt,
    describeSimulationJobResponse_lastUpdatedAt,
    describeSimulationJobResponse_loggingConfig,
    describeSimulationJobResponse_maxJobDurationInSeconds,
    describeSimulationJobResponse_name,
    describeSimulationJobResponse_networkInterface,
    describeSimulationJobResponse_outputLocation,
    describeSimulationJobResponse_robotApplications,
    describeSimulationJobResponse_simulationApplications,
    describeSimulationJobResponse_simulationTimeMillis,
    describeSimulationJobResponse_status,
    describeSimulationJobResponse_tags,
    describeSimulationJobResponse_vpcConfig,
    describeSimulationJobResponse_httpStatus,
  )
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.RobOMaker.Types

-- | /See:/ 'newDescribeSimulationJob' smart constructor.
data DescribeSimulationJob = DescribeSimulationJob'
  { -- | The Amazon Resource Name (ARN) of the simulation job to be described.
    DescribeSimulationJob -> Text
job :: Prelude.Text
  }
  deriving (DescribeSimulationJob -> DescribeSimulationJob -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSimulationJob -> DescribeSimulationJob -> Bool
$c/= :: DescribeSimulationJob -> DescribeSimulationJob -> Bool
== :: DescribeSimulationJob -> DescribeSimulationJob -> Bool
$c== :: DescribeSimulationJob -> DescribeSimulationJob -> Bool
Prelude.Eq, ReadPrec [DescribeSimulationJob]
ReadPrec DescribeSimulationJob
Int -> ReadS DescribeSimulationJob
ReadS [DescribeSimulationJob]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSimulationJob]
$creadListPrec :: ReadPrec [DescribeSimulationJob]
readPrec :: ReadPrec DescribeSimulationJob
$creadPrec :: ReadPrec DescribeSimulationJob
readList :: ReadS [DescribeSimulationJob]
$creadList :: ReadS [DescribeSimulationJob]
readsPrec :: Int -> ReadS DescribeSimulationJob
$creadsPrec :: Int -> ReadS DescribeSimulationJob
Prelude.Read, Int -> DescribeSimulationJob -> ShowS
[DescribeSimulationJob] -> ShowS
DescribeSimulationJob -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSimulationJob] -> ShowS
$cshowList :: [DescribeSimulationJob] -> ShowS
show :: DescribeSimulationJob -> String
$cshow :: DescribeSimulationJob -> String
showsPrec :: Int -> DescribeSimulationJob -> ShowS
$cshowsPrec :: Int -> DescribeSimulationJob -> ShowS
Prelude.Show, forall x. Rep DescribeSimulationJob x -> DescribeSimulationJob
forall x. DescribeSimulationJob -> Rep DescribeSimulationJob x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeSimulationJob x -> DescribeSimulationJob
$cfrom :: forall x. DescribeSimulationJob -> Rep DescribeSimulationJob x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSimulationJob' 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:
--
-- 'job', 'describeSimulationJob_job' - The Amazon Resource Name (ARN) of the simulation job to be described.
newDescribeSimulationJob ::
  -- | 'job'
  Prelude.Text ->
  DescribeSimulationJob
newDescribeSimulationJob :: Text -> DescribeSimulationJob
newDescribeSimulationJob Text
pJob_ =
  DescribeSimulationJob' {$sel:job:DescribeSimulationJob' :: Text
job = Text
pJob_}

-- | The Amazon Resource Name (ARN) of the simulation job to be described.
describeSimulationJob_job :: Lens.Lens' DescribeSimulationJob Prelude.Text
describeSimulationJob_job :: Lens' DescribeSimulationJob Text
describeSimulationJob_job = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJob' {Text
job :: Text
$sel:job:DescribeSimulationJob' :: DescribeSimulationJob -> Text
job} -> Text
job) (\s :: DescribeSimulationJob
s@DescribeSimulationJob' {} Text
a -> DescribeSimulationJob
s {$sel:job:DescribeSimulationJob' :: Text
job = Text
a} :: DescribeSimulationJob)

instance Core.AWSRequest DescribeSimulationJob where
  type
    AWSResponse DescribeSimulationJob =
      DescribeSimulationJobResponse
  request :: (Service -> Service)
-> DescribeSimulationJob -> Request DescribeSimulationJob
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeSimulationJob
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeSimulationJob)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe ComputeResponse
-> Maybe [DataSource]
-> Maybe FailureBehavior
-> Maybe SimulationJobErrorCode
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe POSIX
-> Maybe LoggingConfig
-> Maybe Integer
-> Maybe Text
-> Maybe NetworkInterface
-> Maybe OutputLocation
-> Maybe (NonEmpty RobotApplicationConfig)
-> Maybe (NonEmpty SimulationApplicationConfig)
-> Maybe Integer
-> Maybe SimulationJobStatus
-> Maybe (HashMap Text Text)
-> Maybe VPCConfigResponse
-> Int
-> DescribeSimulationJobResponse
DescribeSimulationJobResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"clientRequestToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (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 -> Either String (Maybe a)
Data..?> Key
"dataSources" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ 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 -> Either String (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 -> Either String (Maybe a)
Data..?> Key
"failureCode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"failureReason")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (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 -> Either String (Maybe a)
Data..?> Key
"lastStartedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"lastUpdatedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (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 -> Either String (Maybe a)
Data..?> Key
"maxJobDurationInSeconds")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"networkInterface")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (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 -> Either String (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 -> Either String (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 -> Either String (Maybe a)
Data..?> Key
"simulationTimeMillis")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"status")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"tags" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ 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 -> Either String (Maybe a)
Data..?> Key
"vpcConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeSimulationJob where
  hashWithSalt :: Int -> DescribeSimulationJob -> Int
hashWithSalt Int
_salt DescribeSimulationJob' {Text
job :: Text
$sel:job:DescribeSimulationJob' :: DescribeSimulationJob -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
job

instance Prelude.NFData DescribeSimulationJob where
  rnf :: DescribeSimulationJob -> ()
rnf DescribeSimulationJob' {Text
job :: Text
$sel:job:DescribeSimulationJob' :: DescribeSimulationJob -> Text
..} = forall a. NFData a => a -> ()
Prelude.rnf Text
job

instance Data.ToHeaders DescribeSimulationJob where
  toHeaders :: DescribeSimulationJob -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeSimulationJob where
  toJSON :: DescribeSimulationJob -> Value
toJSON DescribeSimulationJob' {Text
job :: Text
$sel:job:DescribeSimulationJob' :: DescribeSimulationJob -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"job" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
job)]
      )

instance Data.ToPath DescribeSimulationJob where
  toPath :: DescribeSimulationJob -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/describeSimulationJob"

instance Data.ToQuery DescribeSimulationJob where
  toQuery :: DescribeSimulationJob -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeSimulationJobResponse' smart constructor.
data DescribeSimulationJobResponse = DescribeSimulationJobResponse'
  { -- | The Amazon Resource Name (ARN) of the simulation job.
    DescribeSimulationJobResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | Unique, case-sensitive identifier that you provide to ensure the
    -- idempotency of the request.
    DescribeSimulationJobResponse -> Maybe Text
clientRequestToken :: Prelude.Maybe Prelude.Text,
    -- | Compute information for the simulation job.
    DescribeSimulationJobResponse -> Maybe ComputeResponse
compute :: Prelude.Maybe ComputeResponse,
    -- | The data sources for the simulation job.
    DescribeSimulationJobResponse -> Maybe [DataSource]
dataSources :: Prelude.Maybe [DataSource],
    -- | The failure behavior for the simulation job.
    DescribeSimulationJobResponse -> Maybe FailureBehavior
failureBehavior :: Prelude.Maybe FailureBehavior,
    -- | The failure code of the simulation job if it failed:
    --
    -- [InternalServiceError]
    --     Internal service error.
    --
    -- [RobotApplicationCrash]
    --     Robot application exited abnormally.
    --
    -- [SimulationApplicationCrash]
    --     Simulation application exited abnormally.
    --
    -- [BadPermissionsRobotApplication]
    --     Robot application bundle could not be downloaded.
    --
    -- [BadPermissionsSimulationApplication]
    --     Simulation application bundle could not be downloaded.
    --
    -- [BadPermissionsS3Output]
    --     Unable to publish outputs to customer-provided S3 bucket.
    --
    -- [BadPermissionsCloudwatchLogs]
    --     Unable to publish logs to customer-provided CloudWatch Logs
    --     resource.
    --
    -- [SubnetIpLimitExceeded]
    --     Subnet IP limit exceeded.
    --
    -- [ENILimitExceeded]
    --     ENI limit exceeded.
    --
    -- [BadPermissionsUserCredentials]
    --     Unable to use the Role provided.
    --
    -- [InvalidBundleRobotApplication]
    --     Robot bundle cannot be extracted (invalid format, bundling error, or
    --     other issue).
    --
    -- [InvalidBundleSimulationApplication]
    --     Simulation bundle cannot be extracted (invalid format, bundling
    --     error, or other issue).
    --
    -- [RobotApplicationVersionMismatchedEtag]
    --     Etag for RobotApplication does not match value during version
    --     creation.
    --
    -- [SimulationApplicationVersionMismatchedEtag]
    --     Etag for SimulationApplication does not match value during version
    --     creation.
    DescribeSimulationJobResponse -> Maybe SimulationJobErrorCode
failureCode :: Prelude.Maybe SimulationJobErrorCode,
    -- | Details about why the simulation job failed. For more information about
    -- troubleshooting, see
    -- <https://docs.aws.amazon.com/robomaker/latest/dg/troubleshooting.html Troubleshooting>.
    DescribeSimulationJobResponse -> Maybe Text
failureReason :: Prelude.Maybe Prelude.Text,
    -- | The IAM role that allows the simulation instance to call the AWS APIs
    -- that are specified in its associated policies on your behalf.
    DescribeSimulationJobResponse -> Maybe Text
iamRole :: Prelude.Maybe Prelude.Text,
    -- | The time, in milliseconds since the epoch, when the simulation job was
    -- last started.
    DescribeSimulationJobResponse -> Maybe POSIX
lastStartedAt :: Prelude.Maybe Data.POSIX,
    -- | The time, in milliseconds since the epoch, when the simulation job was
    -- last updated.
    DescribeSimulationJobResponse -> Maybe POSIX
lastUpdatedAt :: Prelude.Maybe Data.POSIX,
    -- | The logging configuration.
    DescribeSimulationJobResponse -> Maybe LoggingConfig
loggingConfig :: Prelude.Maybe LoggingConfig,
    -- | The maximum job duration in seconds. The value must be 8 days (691,200
    -- seconds) or less.
    DescribeSimulationJobResponse -> Maybe Integer
maxJobDurationInSeconds :: Prelude.Maybe Prelude.Integer,
    -- | The name of the simulation job.
    DescribeSimulationJobResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The network interface information for the simulation job.
    DescribeSimulationJobResponse -> Maybe NetworkInterface
networkInterface :: Prelude.Maybe NetworkInterface,
    -- | Location for output files generated by the simulation job.
    DescribeSimulationJobResponse -> Maybe OutputLocation
outputLocation :: Prelude.Maybe OutputLocation,
    -- | A list of robot applications.
    DescribeSimulationJobResponse
-> Maybe (NonEmpty RobotApplicationConfig)
robotApplications :: Prelude.Maybe (Prelude.NonEmpty RobotApplicationConfig),
    -- | A list of simulation applications.
    DescribeSimulationJobResponse
-> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications :: Prelude.Maybe (Prelude.NonEmpty SimulationApplicationConfig),
    -- | The simulation job execution duration in milliseconds.
    DescribeSimulationJobResponse -> Maybe Integer
simulationTimeMillis :: Prelude.Maybe Prelude.Integer,
    -- | The status of the simulation job.
    DescribeSimulationJobResponse -> Maybe SimulationJobStatus
status :: Prelude.Maybe SimulationJobStatus,
    -- | The list of all tags added to the specified simulation job.
    DescribeSimulationJobResponse -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The VPC configuration.
    DescribeSimulationJobResponse -> Maybe VPCConfigResponse
vpcConfig :: Prelude.Maybe VPCConfigResponse,
    -- | The response's http status code.
    DescribeSimulationJobResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeSimulationJobResponse
-> DescribeSimulationJobResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSimulationJobResponse
-> DescribeSimulationJobResponse -> Bool
$c/= :: DescribeSimulationJobResponse
-> DescribeSimulationJobResponse -> Bool
== :: DescribeSimulationJobResponse
-> DescribeSimulationJobResponse -> Bool
$c== :: DescribeSimulationJobResponse
-> DescribeSimulationJobResponse -> Bool
Prelude.Eq, ReadPrec [DescribeSimulationJobResponse]
ReadPrec DescribeSimulationJobResponse
Int -> ReadS DescribeSimulationJobResponse
ReadS [DescribeSimulationJobResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSimulationJobResponse]
$creadListPrec :: ReadPrec [DescribeSimulationJobResponse]
readPrec :: ReadPrec DescribeSimulationJobResponse
$creadPrec :: ReadPrec DescribeSimulationJobResponse
readList :: ReadS [DescribeSimulationJobResponse]
$creadList :: ReadS [DescribeSimulationJobResponse]
readsPrec :: Int -> ReadS DescribeSimulationJobResponse
$creadsPrec :: Int -> ReadS DescribeSimulationJobResponse
Prelude.Read, Int -> DescribeSimulationJobResponse -> ShowS
[DescribeSimulationJobResponse] -> ShowS
DescribeSimulationJobResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSimulationJobResponse] -> ShowS
$cshowList :: [DescribeSimulationJobResponse] -> ShowS
show :: DescribeSimulationJobResponse -> String
$cshow :: DescribeSimulationJobResponse -> String
showsPrec :: Int -> DescribeSimulationJobResponse -> ShowS
$cshowsPrec :: Int -> DescribeSimulationJobResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeSimulationJobResponse x
-> DescribeSimulationJobResponse
forall x.
DescribeSimulationJobResponse
-> Rep DescribeSimulationJobResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSimulationJobResponse x
-> DescribeSimulationJobResponse
$cfrom :: forall x.
DescribeSimulationJobResponse
-> Rep DescribeSimulationJobResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSimulationJobResponse' 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:
--
-- 'arn', 'describeSimulationJobResponse_arn' - The Amazon Resource Name (ARN) of the simulation job.
--
-- 'clientRequestToken', 'describeSimulationJobResponse_clientRequestToken' - Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
--
-- 'compute', 'describeSimulationJobResponse_compute' - Compute information for the simulation job.
--
-- 'dataSources', 'describeSimulationJobResponse_dataSources' - The data sources for the simulation job.
--
-- 'failureBehavior', 'describeSimulationJobResponse_failureBehavior' - The failure behavior for the simulation job.
--
-- 'failureCode', 'describeSimulationJobResponse_failureCode' - The failure code of the simulation job if it failed:
--
-- [InternalServiceError]
--     Internal service error.
--
-- [RobotApplicationCrash]
--     Robot application exited abnormally.
--
-- [SimulationApplicationCrash]
--     Simulation application exited abnormally.
--
-- [BadPermissionsRobotApplication]
--     Robot application bundle could not be downloaded.
--
-- [BadPermissionsSimulationApplication]
--     Simulation application bundle could not be downloaded.
--
-- [BadPermissionsS3Output]
--     Unable to publish outputs to customer-provided S3 bucket.
--
-- [BadPermissionsCloudwatchLogs]
--     Unable to publish logs to customer-provided CloudWatch Logs
--     resource.
--
-- [SubnetIpLimitExceeded]
--     Subnet IP limit exceeded.
--
-- [ENILimitExceeded]
--     ENI limit exceeded.
--
-- [BadPermissionsUserCredentials]
--     Unable to use the Role provided.
--
-- [InvalidBundleRobotApplication]
--     Robot bundle cannot be extracted (invalid format, bundling error, or
--     other issue).
--
-- [InvalidBundleSimulationApplication]
--     Simulation bundle cannot be extracted (invalid format, bundling
--     error, or other issue).
--
-- [RobotApplicationVersionMismatchedEtag]
--     Etag for RobotApplication does not match value during version
--     creation.
--
-- [SimulationApplicationVersionMismatchedEtag]
--     Etag for SimulationApplication does not match value during version
--     creation.
--
-- 'failureReason', 'describeSimulationJobResponse_failureReason' - Details about why the simulation job failed. For more information about
-- troubleshooting, see
-- <https://docs.aws.amazon.com/robomaker/latest/dg/troubleshooting.html Troubleshooting>.
--
-- 'iamRole', 'describeSimulationJobResponse_iamRole' - The IAM role that allows the simulation instance to call the AWS APIs
-- that are specified in its associated policies on your behalf.
--
-- 'lastStartedAt', 'describeSimulationJobResponse_lastStartedAt' - The time, in milliseconds since the epoch, when the simulation job was
-- last started.
--
-- 'lastUpdatedAt', 'describeSimulationJobResponse_lastUpdatedAt' - The time, in milliseconds since the epoch, when the simulation job was
-- last updated.
--
-- 'loggingConfig', 'describeSimulationJobResponse_loggingConfig' - The logging configuration.
--
-- 'maxJobDurationInSeconds', 'describeSimulationJobResponse_maxJobDurationInSeconds' - The maximum job duration in seconds. The value must be 8 days (691,200
-- seconds) or less.
--
-- 'name', 'describeSimulationJobResponse_name' - The name of the simulation job.
--
-- 'networkInterface', 'describeSimulationJobResponse_networkInterface' - The network interface information for the simulation job.
--
-- 'outputLocation', 'describeSimulationJobResponse_outputLocation' - Location for output files generated by the simulation job.
--
-- 'robotApplications', 'describeSimulationJobResponse_robotApplications' - A list of robot applications.
--
-- 'simulationApplications', 'describeSimulationJobResponse_simulationApplications' - A list of simulation applications.
--
-- 'simulationTimeMillis', 'describeSimulationJobResponse_simulationTimeMillis' - The simulation job execution duration in milliseconds.
--
-- 'status', 'describeSimulationJobResponse_status' - The status of the simulation job.
--
-- 'tags', 'describeSimulationJobResponse_tags' - The list of all tags added to the specified simulation job.
--
-- 'vpcConfig', 'describeSimulationJobResponse_vpcConfig' - The VPC configuration.
--
-- 'httpStatus', 'describeSimulationJobResponse_httpStatus' - The response's http status code.
newDescribeSimulationJobResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeSimulationJobResponse
newDescribeSimulationJobResponse :: Int -> DescribeSimulationJobResponse
newDescribeSimulationJobResponse Int
pHttpStatus_ =
  DescribeSimulationJobResponse'
    { $sel:arn:DescribeSimulationJobResponse' :: Maybe Text
arn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:clientRequestToken:DescribeSimulationJobResponse' :: Maybe Text
clientRequestToken = forall a. Maybe a
Prelude.Nothing,
      $sel:compute:DescribeSimulationJobResponse' :: Maybe ComputeResponse
compute = forall a. Maybe a
Prelude.Nothing,
      $sel:dataSources:DescribeSimulationJobResponse' :: Maybe [DataSource]
dataSources = forall a. Maybe a
Prelude.Nothing,
      $sel:failureBehavior:DescribeSimulationJobResponse' :: Maybe FailureBehavior
failureBehavior = forall a. Maybe a
Prelude.Nothing,
      $sel:failureCode:DescribeSimulationJobResponse' :: Maybe SimulationJobErrorCode
failureCode = forall a. Maybe a
Prelude.Nothing,
      $sel:failureReason:DescribeSimulationJobResponse' :: Maybe Text
failureReason = forall a. Maybe a
Prelude.Nothing,
      $sel:iamRole:DescribeSimulationJobResponse' :: Maybe Text
iamRole = forall a. Maybe a
Prelude.Nothing,
      $sel:lastStartedAt:DescribeSimulationJobResponse' :: Maybe POSIX
lastStartedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedAt:DescribeSimulationJobResponse' :: Maybe POSIX
lastUpdatedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:loggingConfig:DescribeSimulationJobResponse' :: Maybe LoggingConfig
loggingConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:maxJobDurationInSeconds:DescribeSimulationJobResponse' :: Maybe Integer
maxJobDurationInSeconds = forall a. Maybe a
Prelude.Nothing,
      $sel:name:DescribeSimulationJobResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:networkInterface:DescribeSimulationJobResponse' :: Maybe NetworkInterface
networkInterface = forall a. Maybe a
Prelude.Nothing,
      $sel:outputLocation:DescribeSimulationJobResponse' :: Maybe OutputLocation
outputLocation = forall a. Maybe a
Prelude.Nothing,
      $sel:robotApplications:DescribeSimulationJobResponse' :: Maybe (NonEmpty RobotApplicationConfig)
robotApplications = forall a. Maybe a
Prelude.Nothing,
      $sel:simulationApplications:DescribeSimulationJobResponse' :: Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications = forall a. Maybe a
Prelude.Nothing,
      $sel:simulationTimeMillis:DescribeSimulationJobResponse' :: Maybe Integer
simulationTimeMillis = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeSimulationJobResponse' :: Maybe SimulationJobStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:DescribeSimulationJobResponse' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:vpcConfig:DescribeSimulationJobResponse' :: Maybe VPCConfigResponse
vpcConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeSimulationJobResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | Unique, case-sensitive identifier that you provide to ensure the
-- idempotency of the request.
describeSimulationJobResponse_clientRequestToken :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe Prelude.Text)
describeSimulationJobResponse_clientRequestToken :: Lens' DescribeSimulationJobResponse (Maybe Text)
describeSimulationJobResponse_clientRequestToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe Text
clientRequestToken :: Maybe Text
$sel:clientRequestToken:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Text
clientRequestToken} -> Maybe Text
clientRequestToken) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe Text
a -> DescribeSimulationJobResponse
s {$sel:clientRequestToken:DescribeSimulationJobResponse' :: Maybe Text
clientRequestToken = Maybe Text
a} :: DescribeSimulationJobResponse)

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

-- | The data sources for the simulation job.
describeSimulationJobResponse_dataSources :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe [DataSource])
describeSimulationJobResponse_dataSources :: Lens' DescribeSimulationJobResponse (Maybe [DataSource])
describeSimulationJobResponse_dataSources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe [DataSource]
dataSources :: Maybe [DataSource]
$sel:dataSources:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe [DataSource]
dataSources} -> Maybe [DataSource]
dataSources) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe [DataSource]
a -> DescribeSimulationJobResponse
s {$sel:dataSources:DescribeSimulationJobResponse' :: Maybe [DataSource]
dataSources = Maybe [DataSource]
a} :: DescribeSimulationJobResponse) 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 for the simulation job.
describeSimulationJobResponse_failureBehavior :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe FailureBehavior)
describeSimulationJobResponse_failureBehavior :: Lens' DescribeSimulationJobResponse (Maybe FailureBehavior)
describeSimulationJobResponse_failureBehavior = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe FailureBehavior
failureBehavior :: Maybe FailureBehavior
$sel:failureBehavior:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe FailureBehavior
failureBehavior} -> Maybe FailureBehavior
failureBehavior) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe FailureBehavior
a -> DescribeSimulationJobResponse
s {$sel:failureBehavior:DescribeSimulationJobResponse' :: Maybe FailureBehavior
failureBehavior = Maybe FailureBehavior
a} :: DescribeSimulationJobResponse)

-- | The failure code of the simulation job if it failed:
--
-- [InternalServiceError]
--     Internal service error.
--
-- [RobotApplicationCrash]
--     Robot application exited abnormally.
--
-- [SimulationApplicationCrash]
--     Simulation application exited abnormally.
--
-- [BadPermissionsRobotApplication]
--     Robot application bundle could not be downloaded.
--
-- [BadPermissionsSimulationApplication]
--     Simulation application bundle could not be downloaded.
--
-- [BadPermissionsS3Output]
--     Unable to publish outputs to customer-provided S3 bucket.
--
-- [BadPermissionsCloudwatchLogs]
--     Unable to publish logs to customer-provided CloudWatch Logs
--     resource.
--
-- [SubnetIpLimitExceeded]
--     Subnet IP limit exceeded.
--
-- [ENILimitExceeded]
--     ENI limit exceeded.
--
-- [BadPermissionsUserCredentials]
--     Unable to use the Role provided.
--
-- [InvalidBundleRobotApplication]
--     Robot bundle cannot be extracted (invalid format, bundling error, or
--     other issue).
--
-- [InvalidBundleSimulationApplication]
--     Simulation bundle cannot be extracted (invalid format, bundling
--     error, or other issue).
--
-- [RobotApplicationVersionMismatchedEtag]
--     Etag for RobotApplication does not match value during version
--     creation.
--
-- [SimulationApplicationVersionMismatchedEtag]
--     Etag for SimulationApplication does not match value during version
--     creation.
describeSimulationJobResponse_failureCode :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe SimulationJobErrorCode)
describeSimulationJobResponse_failureCode :: Lens' DescribeSimulationJobResponse (Maybe SimulationJobErrorCode)
describeSimulationJobResponse_failureCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe SimulationJobErrorCode
failureCode :: Maybe SimulationJobErrorCode
$sel:failureCode:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe SimulationJobErrorCode
failureCode} -> Maybe SimulationJobErrorCode
failureCode) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe SimulationJobErrorCode
a -> DescribeSimulationJobResponse
s {$sel:failureCode:DescribeSimulationJobResponse' :: Maybe SimulationJobErrorCode
failureCode = Maybe SimulationJobErrorCode
a} :: DescribeSimulationJobResponse)

-- | Details about why the simulation job failed. For more information about
-- troubleshooting, see
-- <https://docs.aws.amazon.com/robomaker/latest/dg/troubleshooting.html Troubleshooting>.
describeSimulationJobResponse_failureReason :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe Prelude.Text)
describeSimulationJobResponse_failureReason :: Lens' DescribeSimulationJobResponse (Maybe Text)
describeSimulationJobResponse_failureReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe Text
failureReason :: Maybe Text
$sel:failureReason:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Text
failureReason} -> Maybe Text
failureReason) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe Text
a -> DescribeSimulationJobResponse
s {$sel:failureReason:DescribeSimulationJobResponse' :: Maybe Text
failureReason = Maybe Text
a} :: DescribeSimulationJobResponse)

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

-- | The time, in milliseconds since the epoch, when the simulation job was
-- last started.
describeSimulationJobResponse_lastStartedAt :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe Prelude.UTCTime)
describeSimulationJobResponse_lastStartedAt :: Lens' DescribeSimulationJobResponse (Maybe UTCTime)
describeSimulationJobResponse_lastStartedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe POSIX
lastStartedAt :: Maybe POSIX
$sel:lastStartedAt:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe POSIX
lastStartedAt} -> Maybe POSIX
lastStartedAt) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe POSIX
a -> DescribeSimulationJobResponse
s {$sel:lastStartedAt:DescribeSimulationJobResponse' :: Maybe POSIX
lastStartedAt = Maybe POSIX
a} :: DescribeSimulationJobResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The time, in milliseconds since the epoch, when the simulation job was
-- last updated.
describeSimulationJobResponse_lastUpdatedAt :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe Prelude.UTCTime)
describeSimulationJobResponse_lastUpdatedAt :: Lens' DescribeSimulationJobResponse (Maybe UTCTime)
describeSimulationJobResponse_lastUpdatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe POSIX
lastUpdatedAt :: Maybe POSIX
$sel:lastUpdatedAt:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe POSIX
lastUpdatedAt} -> Maybe POSIX
lastUpdatedAt) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe POSIX
a -> DescribeSimulationJobResponse
s {$sel:lastUpdatedAt:DescribeSimulationJobResponse' :: Maybe POSIX
lastUpdatedAt = Maybe POSIX
a} :: DescribeSimulationJobResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

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

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

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

-- | The network interface information for the simulation job.
describeSimulationJobResponse_networkInterface :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe NetworkInterface)
describeSimulationJobResponse_networkInterface :: Lens' DescribeSimulationJobResponse (Maybe NetworkInterface)
describeSimulationJobResponse_networkInterface = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe NetworkInterface
networkInterface :: Maybe NetworkInterface
$sel:networkInterface:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe NetworkInterface
networkInterface} -> Maybe NetworkInterface
networkInterface) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe NetworkInterface
a -> DescribeSimulationJobResponse
s {$sel:networkInterface:DescribeSimulationJobResponse' :: Maybe NetworkInterface
networkInterface = Maybe NetworkInterface
a} :: DescribeSimulationJobResponse)

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

-- | A list of robot applications.
describeSimulationJobResponse_robotApplications :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe (Prelude.NonEmpty RobotApplicationConfig))
describeSimulationJobResponse_robotApplications :: Lens'
  DescribeSimulationJobResponse
  (Maybe (NonEmpty RobotApplicationConfig))
describeSimulationJobResponse_robotApplications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe (NonEmpty RobotApplicationConfig)
robotApplications :: Maybe (NonEmpty RobotApplicationConfig)
$sel:robotApplications:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse
-> Maybe (NonEmpty RobotApplicationConfig)
robotApplications} -> Maybe (NonEmpty RobotApplicationConfig)
robotApplications) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe (NonEmpty RobotApplicationConfig)
a -> DescribeSimulationJobResponse
s {$sel:robotApplications:DescribeSimulationJobResponse' :: Maybe (NonEmpty RobotApplicationConfig)
robotApplications = Maybe (NonEmpty RobotApplicationConfig)
a} :: DescribeSimulationJobResponse) 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 list of simulation applications.
describeSimulationJobResponse_simulationApplications :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe (Prelude.NonEmpty SimulationApplicationConfig))
describeSimulationJobResponse_simulationApplications :: Lens'
  DescribeSimulationJobResponse
  (Maybe (NonEmpty SimulationApplicationConfig))
describeSimulationJobResponse_simulationApplications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications :: Maybe (NonEmpty SimulationApplicationConfig)
$sel:simulationApplications:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse
-> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications} -> Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe (NonEmpty SimulationApplicationConfig)
a -> DescribeSimulationJobResponse
s {$sel:simulationApplications:DescribeSimulationJobResponse' :: Maybe (NonEmpty SimulationApplicationConfig)
simulationApplications = Maybe (NonEmpty SimulationApplicationConfig)
a} :: DescribeSimulationJobResponse) 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 job execution duration in milliseconds.
describeSimulationJobResponse_simulationTimeMillis :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe Prelude.Integer)
describeSimulationJobResponse_simulationTimeMillis :: Lens' DescribeSimulationJobResponse (Maybe Integer)
describeSimulationJobResponse_simulationTimeMillis = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe Integer
simulationTimeMillis :: Maybe Integer
$sel:simulationTimeMillis:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Integer
simulationTimeMillis} -> Maybe Integer
simulationTimeMillis) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe Integer
a -> DescribeSimulationJobResponse
s {$sel:simulationTimeMillis:DescribeSimulationJobResponse' :: Maybe Integer
simulationTimeMillis = Maybe Integer
a} :: DescribeSimulationJobResponse)

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

-- | The list of all tags added to the specified simulation job.
describeSimulationJobResponse_tags :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
describeSimulationJobResponse_tags :: Lens' DescribeSimulationJobResponse (Maybe (HashMap Text Text))
describeSimulationJobResponse_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe (HashMap Text Text)
a -> DescribeSimulationJobResponse
s {$sel:tags:DescribeSimulationJobResponse' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: DescribeSimulationJobResponse) 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 VPC configuration.
describeSimulationJobResponse_vpcConfig :: Lens.Lens' DescribeSimulationJobResponse (Prelude.Maybe VPCConfigResponse)
describeSimulationJobResponse_vpcConfig :: Lens' DescribeSimulationJobResponse (Maybe VPCConfigResponse)
describeSimulationJobResponse_vpcConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Maybe VPCConfigResponse
vpcConfig :: Maybe VPCConfigResponse
$sel:vpcConfig:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe VPCConfigResponse
vpcConfig} -> Maybe VPCConfigResponse
vpcConfig) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Maybe VPCConfigResponse
a -> DescribeSimulationJobResponse
s {$sel:vpcConfig:DescribeSimulationJobResponse' :: Maybe VPCConfigResponse
vpcConfig = Maybe VPCConfigResponse
a} :: DescribeSimulationJobResponse)

-- | The response's http status code.
describeSimulationJobResponse_httpStatus :: Lens.Lens' DescribeSimulationJobResponse Prelude.Int
describeSimulationJobResponse_httpStatus :: Lens' DescribeSimulationJobResponse Int
describeSimulationJobResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationJobResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeSimulationJobResponse
s@DescribeSimulationJobResponse' {} Int
a -> DescribeSimulationJobResponse
s {$sel:httpStatus:DescribeSimulationJobResponse' :: Int
httpStatus = Int
a} :: DescribeSimulationJobResponse)

instance Prelude.NFData DescribeSimulationJobResponse where
  rnf :: DescribeSimulationJobResponse -> ()
rnf DescribeSimulationJobResponse' {Int
Maybe Integer
Maybe [DataSource]
Maybe (NonEmpty RobotApplicationConfig)
Maybe (NonEmpty SimulationApplicationConfig)
Maybe Text
Maybe (HashMap Text Text)
Maybe POSIX
Maybe ComputeResponse
Maybe FailureBehavior
Maybe LoggingConfig
Maybe NetworkInterface
Maybe OutputLocation
Maybe SimulationJobErrorCode
Maybe SimulationJobStatus
Maybe VPCConfigResponse
httpStatus :: Int
vpcConfig :: Maybe VPCConfigResponse
tags :: Maybe (HashMap Text Text)
status :: Maybe SimulationJobStatus
simulationTimeMillis :: Maybe Integer
simulationApplications :: Maybe (NonEmpty SimulationApplicationConfig)
robotApplications :: Maybe (NonEmpty RobotApplicationConfig)
outputLocation :: Maybe OutputLocation
networkInterface :: Maybe NetworkInterface
name :: Maybe Text
maxJobDurationInSeconds :: Maybe Integer
loggingConfig :: Maybe LoggingConfig
lastUpdatedAt :: Maybe POSIX
lastStartedAt :: Maybe POSIX
iamRole :: Maybe Text
failureReason :: Maybe Text
failureCode :: Maybe SimulationJobErrorCode
failureBehavior :: Maybe FailureBehavior
dataSources :: Maybe [DataSource]
compute :: Maybe ComputeResponse
clientRequestToken :: Maybe Text
arn :: Maybe Text
$sel:httpStatus:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Int
$sel:vpcConfig:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe VPCConfigResponse
$sel:tags:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe (HashMap Text Text)
$sel:status:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe SimulationJobStatus
$sel:simulationTimeMillis:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Integer
$sel:simulationApplications:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse
-> Maybe (NonEmpty SimulationApplicationConfig)
$sel:robotApplications:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse
-> Maybe (NonEmpty RobotApplicationConfig)
$sel:outputLocation:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe OutputLocation
$sel:networkInterface:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe NetworkInterface
$sel:name:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Text
$sel:maxJobDurationInSeconds:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Integer
$sel:loggingConfig:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe LoggingConfig
$sel:lastUpdatedAt:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe POSIX
$sel:lastStartedAt:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe POSIX
$sel:iamRole:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Text
$sel:failureReason:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Text
$sel:failureCode:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe SimulationJobErrorCode
$sel:failureBehavior:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe FailureBehavior
$sel:dataSources:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe [DataSource]
$sel:compute:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe ComputeResponse
$sel:clientRequestToken:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Text
$sel:arn:DescribeSimulationJobResponse' :: DescribeSimulationJobResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientRequestToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ComputeResponse
compute
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [DataSource]
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 SimulationJobErrorCode
failureCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
failureReason
      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 POSIX
lastStartedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdatedAt
      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 Integer
maxJobDurationInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NetworkInterface
networkInterface
      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 Integer
simulationTimeMillis
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SimulationJobStatus
status
      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 VPCConfigResponse
vpcConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus