{-# 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.SimSpaceWeaver.DescribeSimulation
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns the current state of the given simulation.
module Amazonka.SimSpaceWeaver.DescribeSimulation
  ( -- * Creating a Request
    DescribeSimulation (..),
    newDescribeSimulation,

    -- * Request Lenses
    describeSimulation_simulation,

    -- * Destructuring the Response
    DescribeSimulationResponse (..),
    newDescribeSimulationResponse,

    -- * Response Lenses
    describeSimulationResponse_arn,
    describeSimulationResponse_creationTime,
    describeSimulationResponse_description,
    describeSimulationResponse_executionId,
    describeSimulationResponse_liveSimulationState,
    describeSimulationResponse_loggingConfiguration,
    describeSimulationResponse_maximumDuration,
    describeSimulationResponse_name,
    describeSimulationResponse_roleArn,
    describeSimulationResponse_schemaError,
    describeSimulationResponse_schemaS3Location,
    describeSimulationResponse_status,
    describeSimulationResponse_targetStatus,
    describeSimulationResponse_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.SimSpaceWeaver.Types

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

-- |
-- Create a value of 'DescribeSimulation' 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:
--
-- 'simulation', 'describeSimulation_simulation' - The name of the simulation.
newDescribeSimulation ::
  -- | 'simulation'
  Prelude.Text ->
  DescribeSimulation
newDescribeSimulation :: Text -> DescribeSimulation
newDescribeSimulation Text
pSimulation_ =
  DescribeSimulation' {$sel:simulation:DescribeSimulation' :: Text
simulation = Text
pSimulation_}

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

instance Core.AWSRequest DescribeSimulation where
  type
    AWSResponse DescribeSimulation =
      DescribeSimulationResponse
  request :: (Service -> Service)
-> DescribeSimulation -> Request DescribeSimulation
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeSimulation
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeSimulation)))
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 POSIX
-> Maybe Text
-> Maybe Text
-> Maybe LiveSimulationState
-> Maybe LoggingConfiguration
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe S3Location
-> Maybe SimulationStatus
-> Maybe SimulationTargetStatus
-> Int
-> DescribeSimulationResponse
DescribeSimulationResponse'
            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
"CreationTime")
            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
"Description")
            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
"ExecutionId")
            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
"LiveSimulationState")
            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
"LoggingConfiguration")
            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
"MaximumDuration")
            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
"RoleArn")
            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
"SchemaError")
            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
"SchemaS3Location")
            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
"TargetStatus")
            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 DescribeSimulation where
  hashWithSalt :: Int -> DescribeSimulation -> Int
hashWithSalt Int
_salt DescribeSimulation' {Text
simulation :: Text
$sel:simulation:DescribeSimulation' :: DescribeSimulation -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
simulation

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

instance Data.ToHeaders DescribeSimulation where
  toHeaders :: DescribeSimulation -> 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.ToPath DescribeSimulation where
  toPath :: DescribeSimulation -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/describesimulation"

instance Data.ToQuery DescribeSimulation where
  toQuery :: DescribeSimulation -> QueryString
toQuery DescribeSimulation' {Text
simulation :: Text
$sel:simulation:DescribeSimulation' :: DescribeSimulation -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"simulation" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
simulation]

-- | /See:/ 'newDescribeSimulationResponse' smart constructor.
data DescribeSimulationResponse = DescribeSimulationResponse'
  { -- | The Amazon Resource Name (ARN) of the simulation. For more information
    -- about ARNs, see
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
    -- in the /Amazon Web Services General Reference/.
    DescribeSimulationResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The time when the simulation was created, expressed as the number of
    -- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
    -- 1, 1970).
    DescribeSimulationResponse -> Maybe POSIX
creationTime :: Prelude.Maybe Data.POSIX,
    -- | The description of the simulation.
    DescribeSimulationResponse -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | A universally unique identifier (UUID) for this simulation.
    DescribeSimulationResponse -> Maybe Text
executionId :: Prelude.Maybe Prelude.Text,
    -- | A collection of additional state information, such as domain and clock
    -- configuration.
    DescribeSimulationResponse -> Maybe LiveSimulationState
liveSimulationState :: Prelude.Maybe LiveSimulationState,
    -- | Settings that control how SimSpace Weaver handles your simulation log
    -- data.
    DescribeSimulationResponse -> Maybe LoggingConfiguration
loggingConfiguration :: Prelude.Maybe LoggingConfiguration,
    -- | The maximum running time of the simulation, specified as a number of
    -- months (m or M), hours (h or H), or days (d or D). The simulation stops
    -- when it reaches this limit.
    DescribeSimulationResponse -> Maybe Text
maximumDuration :: Prelude.Maybe Prelude.Text,
    -- | The name of the simulation.
    DescribeSimulationResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the Identity and Access Management
    -- (IAM) role that the simulation assumes to perform actions. For more
    -- information about ARNs, see
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
    -- in the /Amazon Web Services General Reference/. For more information
    -- about IAM roles, see
    -- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
    -- in the /Identity and Access Management User Guide/.
    DescribeSimulationResponse -> Maybe Text
roleArn :: Prelude.Maybe Prelude.Text,
    -- | An error message that SimSpace Weaver returns only if there is a problem
    -- with the simulation schema.
    DescribeSimulationResponse -> Maybe Text
schemaError :: Prelude.Maybe Prelude.Text,
    -- | The location of the simulation schema in Amazon Simple Storage Service
    -- (Amazon S3). For more information about Amazon S3, see the
    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
    -- .
    DescribeSimulationResponse -> Maybe S3Location
schemaS3Location :: Prelude.Maybe S3Location,
    -- | The current lifecycle state of the simulation.
    DescribeSimulationResponse -> Maybe SimulationStatus
status :: Prelude.Maybe SimulationStatus,
    -- | The desired lifecycle state of the simulation.
    DescribeSimulationResponse -> Maybe SimulationTargetStatus
targetStatus :: Prelude.Maybe SimulationTargetStatus,
    -- | The response's http status code.
    DescribeSimulationResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeSimulationResponse -> DescribeSimulationResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSimulationResponse -> DescribeSimulationResponse -> Bool
$c/= :: DescribeSimulationResponse -> DescribeSimulationResponse -> Bool
== :: DescribeSimulationResponse -> DescribeSimulationResponse -> Bool
$c== :: DescribeSimulationResponse -> DescribeSimulationResponse -> Bool
Prelude.Eq, ReadPrec [DescribeSimulationResponse]
ReadPrec DescribeSimulationResponse
Int -> ReadS DescribeSimulationResponse
ReadS [DescribeSimulationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSimulationResponse]
$creadListPrec :: ReadPrec [DescribeSimulationResponse]
readPrec :: ReadPrec DescribeSimulationResponse
$creadPrec :: ReadPrec DescribeSimulationResponse
readList :: ReadS [DescribeSimulationResponse]
$creadList :: ReadS [DescribeSimulationResponse]
readsPrec :: Int -> ReadS DescribeSimulationResponse
$creadsPrec :: Int -> ReadS DescribeSimulationResponse
Prelude.Read, Int -> DescribeSimulationResponse -> ShowS
[DescribeSimulationResponse] -> ShowS
DescribeSimulationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSimulationResponse] -> ShowS
$cshowList :: [DescribeSimulationResponse] -> ShowS
show :: DescribeSimulationResponse -> String
$cshow :: DescribeSimulationResponse -> String
showsPrec :: Int -> DescribeSimulationResponse -> ShowS
$cshowsPrec :: Int -> DescribeSimulationResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeSimulationResponse x -> DescribeSimulationResponse
forall x.
DescribeSimulationResponse -> Rep DescribeSimulationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSimulationResponse x -> DescribeSimulationResponse
$cfrom :: forall x.
DescribeSimulationResponse -> Rep DescribeSimulationResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSimulationResponse' 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', 'describeSimulationResponse_arn' - The Amazon Resource Name (ARN) of the simulation. For more information
-- about ARNs, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
-- in the /Amazon Web Services General Reference/.
--
-- 'creationTime', 'describeSimulationResponse_creationTime' - The time when the simulation was created, expressed as the number of
-- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
-- 1, 1970).
--
-- 'description', 'describeSimulationResponse_description' - The description of the simulation.
--
-- 'executionId', 'describeSimulationResponse_executionId' - A universally unique identifier (UUID) for this simulation.
--
-- 'liveSimulationState', 'describeSimulationResponse_liveSimulationState' - A collection of additional state information, such as domain and clock
-- configuration.
--
-- 'loggingConfiguration', 'describeSimulationResponse_loggingConfiguration' - Settings that control how SimSpace Weaver handles your simulation log
-- data.
--
-- 'maximumDuration', 'describeSimulationResponse_maximumDuration' - The maximum running time of the simulation, specified as a number of
-- months (m or M), hours (h or H), or days (d or D). The simulation stops
-- when it reaches this limit.
--
-- 'name', 'describeSimulationResponse_name' - The name of the simulation.
--
-- 'roleArn', 'describeSimulationResponse_roleArn' - The Amazon Resource Name (ARN) of the Identity and Access Management
-- (IAM) role that the simulation assumes to perform actions. For more
-- information about ARNs, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
-- in the /Amazon Web Services General Reference/. For more information
-- about IAM roles, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
-- in the /Identity and Access Management User Guide/.
--
-- 'schemaError', 'describeSimulationResponse_schemaError' - An error message that SimSpace Weaver returns only if there is a problem
-- with the simulation schema.
--
-- 'schemaS3Location', 'describeSimulationResponse_schemaS3Location' - The location of the simulation schema in Amazon Simple Storage Service
-- (Amazon S3). For more information about Amazon S3, see the
-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
-- .
--
-- 'status', 'describeSimulationResponse_status' - The current lifecycle state of the simulation.
--
-- 'targetStatus', 'describeSimulationResponse_targetStatus' - The desired lifecycle state of the simulation.
--
-- 'httpStatus', 'describeSimulationResponse_httpStatus' - The response's http status code.
newDescribeSimulationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeSimulationResponse
newDescribeSimulationResponse :: Int -> DescribeSimulationResponse
newDescribeSimulationResponse Int
pHttpStatus_ =
  DescribeSimulationResponse'
    { $sel:arn:DescribeSimulationResponse' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:creationTime:DescribeSimulationResponse' :: Maybe POSIX
creationTime = forall a. Maybe a
Prelude.Nothing,
      $sel:description:DescribeSimulationResponse' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:executionId:DescribeSimulationResponse' :: Maybe Text
executionId = forall a. Maybe a
Prelude.Nothing,
      $sel:liveSimulationState:DescribeSimulationResponse' :: Maybe LiveSimulationState
liveSimulationState = forall a. Maybe a
Prelude.Nothing,
      $sel:loggingConfiguration:DescribeSimulationResponse' :: Maybe LoggingConfiguration
loggingConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:maximumDuration:DescribeSimulationResponse' :: Maybe Text
maximumDuration = forall a. Maybe a
Prelude.Nothing,
      $sel:name:DescribeSimulationResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:roleArn:DescribeSimulationResponse' :: Maybe Text
roleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:schemaError:DescribeSimulationResponse' :: Maybe Text
schemaError = forall a. Maybe a
Prelude.Nothing,
      $sel:schemaS3Location:DescribeSimulationResponse' :: Maybe S3Location
schemaS3Location = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DescribeSimulationResponse' :: Maybe SimulationStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:targetStatus:DescribeSimulationResponse' :: Maybe SimulationTargetStatus
targetStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeSimulationResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The Amazon Resource Name (ARN) of the simulation. For more information
-- about ARNs, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
-- in the /Amazon Web Services General Reference/.
describeSimulationResponse_arn :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
describeSimulationResponse_arn :: Lens' DescribeSimulationResponse (Maybe Text)
describeSimulationResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe Text
a -> DescribeSimulationResponse
s {$sel:arn:DescribeSimulationResponse' :: Maybe Text
arn = Maybe Text
a} :: DescribeSimulationResponse)

-- | The time when the simulation was created, expressed as the number of
-- seconds and milliseconds in UTC since the Unix epoch (0:0:0.000, January
-- 1, 1970).
describeSimulationResponse_creationTime :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.UTCTime)
describeSimulationResponse_creationTime :: Lens' DescribeSimulationResponse (Maybe UTCTime)
describeSimulationResponse_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe POSIX
a -> DescribeSimulationResponse
s {$sel:creationTime:DescribeSimulationResponse' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: DescribeSimulationResponse) 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 description of the simulation.
describeSimulationResponse_description :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
describeSimulationResponse_description :: Lens' DescribeSimulationResponse (Maybe Text)
describeSimulationResponse_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe Text
description :: Maybe Text
$sel:description:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
description} -> Maybe Text
description) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe Text
a -> DescribeSimulationResponse
s {$sel:description:DescribeSimulationResponse' :: Maybe Text
description = Maybe Text
a} :: DescribeSimulationResponse)

-- | A universally unique identifier (UUID) for this simulation.
describeSimulationResponse_executionId :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
describeSimulationResponse_executionId :: Lens' DescribeSimulationResponse (Maybe Text)
describeSimulationResponse_executionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe Text
executionId :: Maybe Text
$sel:executionId:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
executionId} -> Maybe Text
executionId) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe Text
a -> DescribeSimulationResponse
s {$sel:executionId:DescribeSimulationResponse' :: Maybe Text
executionId = Maybe Text
a} :: DescribeSimulationResponse)

-- | A collection of additional state information, such as domain and clock
-- configuration.
describeSimulationResponse_liveSimulationState :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe LiveSimulationState)
describeSimulationResponse_liveSimulationState :: Lens' DescribeSimulationResponse (Maybe LiveSimulationState)
describeSimulationResponse_liveSimulationState = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe LiveSimulationState
liveSimulationState :: Maybe LiveSimulationState
$sel:liveSimulationState:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe LiveSimulationState
liveSimulationState} -> Maybe LiveSimulationState
liveSimulationState) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe LiveSimulationState
a -> DescribeSimulationResponse
s {$sel:liveSimulationState:DescribeSimulationResponse' :: Maybe LiveSimulationState
liveSimulationState = Maybe LiveSimulationState
a} :: DescribeSimulationResponse)

-- | Settings that control how SimSpace Weaver handles your simulation log
-- data.
describeSimulationResponse_loggingConfiguration :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe LoggingConfiguration)
describeSimulationResponse_loggingConfiguration :: Lens' DescribeSimulationResponse (Maybe LoggingConfiguration)
describeSimulationResponse_loggingConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe LoggingConfiguration
loggingConfiguration :: Maybe LoggingConfiguration
$sel:loggingConfiguration:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe LoggingConfiguration
loggingConfiguration} -> Maybe LoggingConfiguration
loggingConfiguration) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe LoggingConfiguration
a -> DescribeSimulationResponse
s {$sel:loggingConfiguration:DescribeSimulationResponse' :: Maybe LoggingConfiguration
loggingConfiguration = Maybe LoggingConfiguration
a} :: DescribeSimulationResponse)

-- | The maximum running time of the simulation, specified as a number of
-- months (m or M), hours (h or H), or days (d or D). The simulation stops
-- when it reaches this limit.
describeSimulationResponse_maximumDuration :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
describeSimulationResponse_maximumDuration :: Lens' DescribeSimulationResponse (Maybe Text)
describeSimulationResponse_maximumDuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe Text
maximumDuration :: Maybe Text
$sel:maximumDuration:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
maximumDuration} -> Maybe Text
maximumDuration) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe Text
a -> DescribeSimulationResponse
s {$sel:maximumDuration:DescribeSimulationResponse' :: Maybe Text
maximumDuration = Maybe Text
a} :: DescribeSimulationResponse)

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

-- | The Amazon Resource Name (ARN) of the Identity and Access Management
-- (IAM) role that the simulation assumes to perform actions. For more
-- information about ARNs, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs)>
-- in the /Amazon Web Services General Reference/. For more information
-- about IAM roles, see
-- <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html IAM roles>
-- in the /Identity and Access Management User Guide/.
describeSimulationResponse_roleArn :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
describeSimulationResponse_roleArn :: Lens' DescribeSimulationResponse (Maybe Text)
describeSimulationResponse_roleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe Text
roleArn :: Maybe Text
$sel:roleArn:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
roleArn} -> Maybe Text
roleArn) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe Text
a -> DescribeSimulationResponse
s {$sel:roleArn:DescribeSimulationResponse' :: Maybe Text
roleArn = Maybe Text
a} :: DescribeSimulationResponse)

-- | An error message that SimSpace Weaver returns only if there is a problem
-- with the simulation schema.
describeSimulationResponse_schemaError :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe Prelude.Text)
describeSimulationResponse_schemaError :: Lens' DescribeSimulationResponse (Maybe Text)
describeSimulationResponse_schemaError = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe Text
schemaError :: Maybe Text
$sel:schemaError:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
schemaError} -> Maybe Text
schemaError) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe Text
a -> DescribeSimulationResponse
s {$sel:schemaError:DescribeSimulationResponse' :: Maybe Text
schemaError = Maybe Text
a} :: DescribeSimulationResponse)

-- | The location of the simulation schema in Amazon Simple Storage Service
-- (Amazon S3). For more information about Amazon S3, see the
-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html Amazon Simple Storage Service User Guide>
-- .
describeSimulationResponse_schemaS3Location :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe S3Location)
describeSimulationResponse_schemaS3Location :: Lens' DescribeSimulationResponse (Maybe S3Location)
describeSimulationResponse_schemaS3Location = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe S3Location
schemaS3Location :: Maybe S3Location
$sel:schemaS3Location:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe S3Location
schemaS3Location} -> Maybe S3Location
schemaS3Location) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe S3Location
a -> DescribeSimulationResponse
s {$sel:schemaS3Location:DescribeSimulationResponse' :: Maybe S3Location
schemaS3Location = Maybe S3Location
a} :: DescribeSimulationResponse)

-- | The current lifecycle state of the simulation.
describeSimulationResponse_status :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe SimulationStatus)
describeSimulationResponse_status :: Lens' DescribeSimulationResponse (Maybe SimulationStatus)
describeSimulationResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe SimulationStatus
status :: Maybe SimulationStatus
$sel:status:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe SimulationStatus
status} -> Maybe SimulationStatus
status) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe SimulationStatus
a -> DescribeSimulationResponse
s {$sel:status:DescribeSimulationResponse' :: Maybe SimulationStatus
status = Maybe SimulationStatus
a} :: DescribeSimulationResponse)

-- | The desired lifecycle state of the simulation.
describeSimulationResponse_targetStatus :: Lens.Lens' DescribeSimulationResponse (Prelude.Maybe SimulationTargetStatus)
describeSimulationResponse_targetStatus :: Lens' DescribeSimulationResponse (Maybe SimulationTargetStatus)
describeSimulationResponse_targetStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSimulationResponse' {Maybe SimulationTargetStatus
targetStatus :: Maybe SimulationTargetStatus
$sel:targetStatus:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe SimulationTargetStatus
targetStatus} -> Maybe SimulationTargetStatus
targetStatus) (\s :: DescribeSimulationResponse
s@DescribeSimulationResponse' {} Maybe SimulationTargetStatus
a -> DescribeSimulationResponse
s {$sel:targetStatus:DescribeSimulationResponse' :: Maybe SimulationTargetStatus
targetStatus = Maybe SimulationTargetStatus
a} :: DescribeSimulationResponse)

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

instance Prelude.NFData DescribeSimulationResponse where
  rnf :: DescribeSimulationResponse -> ()
rnf DescribeSimulationResponse' {Int
Maybe Text
Maybe POSIX
Maybe LoggingConfiguration
Maybe S3Location
Maybe LiveSimulationState
Maybe SimulationStatus
Maybe SimulationTargetStatus
httpStatus :: Int
targetStatus :: Maybe SimulationTargetStatus
status :: Maybe SimulationStatus
schemaS3Location :: Maybe S3Location
schemaError :: Maybe Text
roleArn :: Maybe Text
name :: Maybe Text
maximumDuration :: Maybe Text
loggingConfiguration :: Maybe LoggingConfiguration
liveSimulationState :: Maybe LiveSimulationState
executionId :: Maybe Text
description :: Maybe Text
creationTime :: Maybe POSIX
arn :: Maybe Text
$sel:httpStatus:DescribeSimulationResponse' :: DescribeSimulationResponse -> Int
$sel:targetStatus:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe SimulationTargetStatus
$sel:status:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe SimulationStatus
$sel:schemaS3Location:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe S3Location
$sel:schemaError:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
$sel:roleArn:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
$sel:name:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
$sel:maximumDuration:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
$sel:loggingConfiguration:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe LoggingConfiguration
$sel:liveSimulationState:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe LiveSimulationState
$sel:executionId:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
$sel:description:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe Text
$sel:creationTime:DescribeSimulationResponse' :: DescribeSimulationResponse -> Maybe POSIX
$sel:arn:DescribeSimulationResponse' :: DescribeSimulationResponse -> 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 POSIX
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
executionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LiveSimulationState
liveSimulationState
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LoggingConfiguration
loggingConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
maximumDuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
roleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
schemaError
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3Location
schemaS3Location
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SimulationStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SimulationTargetStatus
targetStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus