{-# 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.SageMaker.DescribePipelineDefinitionForExecution
-- 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 the details of an execution\'s pipeline definition.
module Amazonka.SageMaker.DescribePipelineDefinitionForExecution
  ( -- * Creating a Request
    DescribePipelineDefinitionForExecution (..),
    newDescribePipelineDefinitionForExecution,

    -- * Request Lenses
    describePipelineDefinitionForExecution_pipelineExecutionArn,

    -- * Destructuring the Response
    DescribePipelineDefinitionForExecutionResponse (..),
    newDescribePipelineDefinitionForExecutionResponse,

    -- * Response Lenses
    describePipelineDefinitionForExecutionResponse_creationTime,
    describePipelineDefinitionForExecutionResponse_pipelineDefinition,
    describePipelineDefinitionForExecutionResponse_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.SageMaker.Types

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

-- |
-- Create a value of 'DescribePipelineDefinitionForExecution' 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:
--
-- 'pipelineExecutionArn', 'describePipelineDefinitionForExecution_pipelineExecutionArn' - The Amazon Resource Name (ARN) of the pipeline execution.
newDescribePipelineDefinitionForExecution ::
  -- | 'pipelineExecutionArn'
  Prelude.Text ->
  DescribePipelineDefinitionForExecution
newDescribePipelineDefinitionForExecution :: Text -> DescribePipelineDefinitionForExecution
newDescribePipelineDefinitionForExecution
  Text
pPipelineExecutionArn_ =
    DescribePipelineDefinitionForExecution'
      { $sel:pipelineExecutionArn:DescribePipelineDefinitionForExecution' :: Text
pipelineExecutionArn =
          Text
pPipelineExecutionArn_
      }

-- | The Amazon Resource Name (ARN) of the pipeline execution.
describePipelineDefinitionForExecution_pipelineExecutionArn :: Lens.Lens' DescribePipelineDefinitionForExecution Prelude.Text
describePipelineDefinitionForExecution_pipelineExecutionArn :: Lens' DescribePipelineDefinitionForExecution Text
describePipelineDefinitionForExecution_pipelineExecutionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribePipelineDefinitionForExecution' {Text
pipelineExecutionArn :: Text
$sel:pipelineExecutionArn:DescribePipelineDefinitionForExecution' :: DescribePipelineDefinitionForExecution -> Text
pipelineExecutionArn} -> Text
pipelineExecutionArn) (\s :: DescribePipelineDefinitionForExecution
s@DescribePipelineDefinitionForExecution' {} Text
a -> DescribePipelineDefinitionForExecution
s {$sel:pipelineExecutionArn:DescribePipelineDefinitionForExecution' :: Text
pipelineExecutionArn = Text
a} :: DescribePipelineDefinitionForExecution)

instance
  Core.AWSRequest
    DescribePipelineDefinitionForExecution
  where
  type
    AWSResponse
      DescribePipelineDefinitionForExecution =
      DescribePipelineDefinitionForExecutionResponse
  request :: (Service -> Service)
-> DescribePipelineDefinitionForExecution
-> Request DescribePipelineDefinitionForExecution
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 DescribePipelineDefinitionForExecution
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse DescribePipelineDefinitionForExecution)))
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 POSIX
-> Maybe Text
-> Int
-> DescribePipelineDefinitionForExecutionResponse
DescribePipelineDefinitionForExecutionResponse'
            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
"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
"PipelineDefinition")
            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
    DescribePipelineDefinitionForExecution
  where
  hashWithSalt :: Int -> DescribePipelineDefinitionForExecution -> Int
hashWithSalt
    Int
_salt
    DescribePipelineDefinitionForExecution' {Text
pipelineExecutionArn :: Text
$sel:pipelineExecutionArn:DescribePipelineDefinitionForExecution' :: DescribePipelineDefinitionForExecution -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
pipelineExecutionArn

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

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

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

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

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

-- | /See:/ 'newDescribePipelineDefinitionForExecutionResponse' smart constructor.
data DescribePipelineDefinitionForExecutionResponse = DescribePipelineDefinitionForExecutionResponse'
  { -- | The time when the pipeline was created.
    DescribePipelineDefinitionForExecutionResponse -> Maybe POSIX
creationTime :: Prelude.Maybe Data.POSIX,
    -- | The JSON pipeline definition.
    DescribePipelineDefinitionForExecutionResponse -> Maybe Text
pipelineDefinition :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribePipelineDefinitionForExecutionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribePipelineDefinitionForExecutionResponse
-> DescribePipelineDefinitionForExecutionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribePipelineDefinitionForExecutionResponse
-> DescribePipelineDefinitionForExecutionResponse -> Bool
$c/= :: DescribePipelineDefinitionForExecutionResponse
-> DescribePipelineDefinitionForExecutionResponse -> Bool
== :: DescribePipelineDefinitionForExecutionResponse
-> DescribePipelineDefinitionForExecutionResponse -> Bool
$c== :: DescribePipelineDefinitionForExecutionResponse
-> DescribePipelineDefinitionForExecutionResponse -> Bool
Prelude.Eq, ReadPrec [DescribePipelineDefinitionForExecutionResponse]
ReadPrec DescribePipelineDefinitionForExecutionResponse
Int -> ReadS DescribePipelineDefinitionForExecutionResponse
ReadS [DescribePipelineDefinitionForExecutionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribePipelineDefinitionForExecutionResponse]
$creadListPrec :: ReadPrec [DescribePipelineDefinitionForExecutionResponse]
readPrec :: ReadPrec DescribePipelineDefinitionForExecutionResponse
$creadPrec :: ReadPrec DescribePipelineDefinitionForExecutionResponse
readList :: ReadS [DescribePipelineDefinitionForExecutionResponse]
$creadList :: ReadS [DescribePipelineDefinitionForExecutionResponse]
readsPrec :: Int -> ReadS DescribePipelineDefinitionForExecutionResponse
$creadsPrec :: Int -> ReadS DescribePipelineDefinitionForExecutionResponse
Prelude.Read, Int -> DescribePipelineDefinitionForExecutionResponse -> ShowS
[DescribePipelineDefinitionForExecutionResponse] -> ShowS
DescribePipelineDefinitionForExecutionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribePipelineDefinitionForExecutionResponse] -> ShowS
$cshowList :: [DescribePipelineDefinitionForExecutionResponse] -> ShowS
show :: DescribePipelineDefinitionForExecutionResponse -> String
$cshow :: DescribePipelineDefinitionForExecutionResponse -> String
showsPrec :: Int -> DescribePipelineDefinitionForExecutionResponse -> ShowS
$cshowsPrec :: Int -> DescribePipelineDefinitionForExecutionResponse -> ShowS
Prelude.Show, forall x.
Rep DescribePipelineDefinitionForExecutionResponse x
-> DescribePipelineDefinitionForExecutionResponse
forall x.
DescribePipelineDefinitionForExecutionResponse
-> Rep DescribePipelineDefinitionForExecutionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribePipelineDefinitionForExecutionResponse x
-> DescribePipelineDefinitionForExecutionResponse
$cfrom :: forall x.
DescribePipelineDefinitionForExecutionResponse
-> Rep DescribePipelineDefinitionForExecutionResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribePipelineDefinitionForExecutionResponse' 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:
--
-- 'creationTime', 'describePipelineDefinitionForExecutionResponse_creationTime' - The time when the pipeline was created.
--
-- 'pipelineDefinition', 'describePipelineDefinitionForExecutionResponse_pipelineDefinition' - The JSON pipeline definition.
--
-- 'httpStatus', 'describePipelineDefinitionForExecutionResponse_httpStatus' - The response's http status code.
newDescribePipelineDefinitionForExecutionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribePipelineDefinitionForExecutionResponse
newDescribePipelineDefinitionForExecutionResponse :: Int -> DescribePipelineDefinitionForExecutionResponse
newDescribePipelineDefinitionForExecutionResponse
  Int
pHttpStatus_ =
    DescribePipelineDefinitionForExecutionResponse'
      { $sel:creationTime:DescribePipelineDefinitionForExecutionResponse' :: Maybe POSIX
creationTime =
          forall a. Maybe a
Prelude.Nothing,
        $sel:pipelineDefinition:DescribePipelineDefinitionForExecutionResponse' :: Maybe Text
pipelineDefinition =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribePipelineDefinitionForExecutionResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The time when the pipeline was created.
describePipelineDefinitionForExecutionResponse_creationTime :: Lens.Lens' DescribePipelineDefinitionForExecutionResponse (Prelude.Maybe Prelude.UTCTime)
describePipelineDefinitionForExecutionResponse_creationTime :: Lens'
  DescribePipelineDefinitionForExecutionResponse (Maybe UTCTime)
describePipelineDefinitionForExecutionResponse_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribePipelineDefinitionForExecutionResponse' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:DescribePipelineDefinitionForExecutionResponse' :: DescribePipelineDefinitionForExecutionResponse -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: DescribePipelineDefinitionForExecutionResponse
s@DescribePipelineDefinitionForExecutionResponse' {} Maybe POSIX
a -> DescribePipelineDefinitionForExecutionResponse
s {$sel:creationTime:DescribePipelineDefinitionForExecutionResponse' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: DescribePipelineDefinitionForExecutionResponse) 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 JSON pipeline definition.
describePipelineDefinitionForExecutionResponse_pipelineDefinition :: Lens.Lens' DescribePipelineDefinitionForExecutionResponse (Prelude.Maybe Prelude.Text)
describePipelineDefinitionForExecutionResponse_pipelineDefinition :: Lens' DescribePipelineDefinitionForExecutionResponse (Maybe Text)
describePipelineDefinitionForExecutionResponse_pipelineDefinition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribePipelineDefinitionForExecutionResponse' {Maybe Text
pipelineDefinition :: Maybe Text
$sel:pipelineDefinition:DescribePipelineDefinitionForExecutionResponse' :: DescribePipelineDefinitionForExecutionResponse -> Maybe Text
pipelineDefinition} -> Maybe Text
pipelineDefinition) (\s :: DescribePipelineDefinitionForExecutionResponse
s@DescribePipelineDefinitionForExecutionResponse' {} Maybe Text
a -> DescribePipelineDefinitionForExecutionResponse
s {$sel:pipelineDefinition:DescribePipelineDefinitionForExecutionResponse' :: Maybe Text
pipelineDefinition = Maybe Text
a} :: DescribePipelineDefinitionForExecutionResponse)

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

instance
  Prelude.NFData
    DescribePipelineDefinitionForExecutionResponse
  where
  rnf :: DescribePipelineDefinitionForExecutionResponse -> ()
rnf
    DescribePipelineDefinitionForExecutionResponse' {Int
Maybe Text
Maybe POSIX
httpStatus :: Int
pipelineDefinition :: Maybe Text
creationTime :: Maybe POSIX
$sel:httpStatus:DescribePipelineDefinitionForExecutionResponse' :: DescribePipelineDefinitionForExecutionResponse -> Int
$sel:pipelineDefinition:DescribePipelineDefinitionForExecutionResponse' :: DescribePipelineDefinitionForExecutionResponse -> Maybe Text
$sel:creationTime:DescribePipelineDefinitionForExecutionResponse' :: DescribePipelineDefinitionForExecutionResponse -> Maybe POSIX
..} =
      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
pipelineDefinition
        seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus