{-# 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.CreateImageVersion
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a version of the SageMaker image specified by @ImageName@. The
-- version represents the Amazon Elastic Container Registry (ECR) container
-- image specified by @BaseImage@.
module Amazonka.SageMaker.CreateImageVersion
  ( -- * Creating a Request
    CreateImageVersion (..),
    newCreateImageVersion,

    -- * Request Lenses
    createImageVersion_aliases,
    createImageVersion_horovod,
    createImageVersion_jobType,
    createImageVersion_mLFramework,
    createImageVersion_processor,
    createImageVersion_programmingLang,
    createImageVersion_releaseNotes,
    createImageVersion_vendorGuidance,
    createImageVersion_baseImage,
    createImageVersion_clientToken,
    createImageVersion_imageName,

    -- * Destructuring the Response
    CreateImageVersionResponse (..),
    newCreateImageVersionResponse,

    -- * Response Lenses
    createImageVersionResponse_imageVersionArn,
    createImageVersionResponse_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:/ 'newCreateImageVersion' smart constructor.
data CreateImageVersion = CreateImageVersion'
  { -- | A list of aliases created with the image version.
    CreateImageVersion -> Maybe [Text]
aliases :: Prelude.Maybe [Prelude.Text],
    -- | Indicates Horovod compatibility.
    CreateImageVersion -> Maybe Bool
horovod :: Prelude.Maybe Prelude.Bool,
    -- | Indicates SageMaker job type compatibility.
    --
    -- -   @TRAINING@: The image version is compatible with SageMaker training
    --     jobs.
    --
    -- -   @INFERENCE@: The image version is compatible with SageMaker
    --     inference jobs.
    --
    -- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
    --     notebook kernels.
    CreateImageVersion -> Maybe JobType
jobType :: Prelude.Maybe JobType,
    -- | The machine learning framework vended in the image version.
    CreateImageVersion -> Maybe Text
mLFramework :: Prelude.Maybe Prelude.Text,
    -- | Indicates CPU or GPU compatibility.
    --
    -- -   @CPU@: The image version is compatible with CPU.
    --
    -- -   @GPU@: The image version is compatible with GPU.
    CreateImageVersion -> Maybe Processor
processor :: Prelude.Maybe Processor,
    -- | The supported programming language and its version.
    CreateImageVersion -> Maybe Text
programmingLang :: Prelude.Maybe Prelude.Text,
    -- | The maintainer description of the image version.
    CreateImageVersion -> Maybe Text
releaseNotes :: Prelude.Maybe Prelude.Text,
    -- | The stability of the image version, specified by the maintainer.
    --
    -- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
    --     version stability.
    --
    -- -   @STABLE@: The image version is stable.
    --
    -- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
    --     image versions that are set to be archived are automatically
    --     archived after three months.
    --
    -- -   @ARCHIVED@: The image version is archived. Archived image versions
    --     are not searchable and are no longer actively supported.
    CreateImageVersion -> Maybe VendorGuidance
vendorGuidance :: Prelude.Maybe VendorGuidance,
    -- | The registry path of the container image to use as the starting point
    -- for this version. The path is an Amazon Elastic Container Registry (ECR)
    -- URI in the following format:
    --
    -- @\<acct-id>.dkr.ecr.\<region>.amazonaws.com\/\<repo-name[:tag] or [\@digest]>@
    CreateImageVersion -> Text
baseImage :: Prelude.Text,
    -- | A unique ID. If not specified, the Amazon Web Services CLI and Amazon
    -- Web Services SDKs, such as the SDK for Python (Boto3), add a unique
    -- value to the call.
    CreateImageVersion -> Text
clientToken :: Prelude.Text,
    -- | The @ImageName@ of the @Image@ to create a version of.
    CreateImageVersion -> Text
imageName :: Prelude.Text
  }
  deriving (CreateImageVersion -> CreateImageVersion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateImageVersion -> CreateImageVersion -> Bool
$c/= :: CreateImageVersion -> CreateImageVersion -> Bool
== :: CreateImageVersion -> CreateImageVersion -> Bool
$c== :: CreateImageVersion -> CreateImageVersion -> Bool
Prelude.Eq, ReadPrec [CreateImageVersion]
ReadPrec CreateImageVersion
Int -> ReadS CreateImageVersion
ReadS [CreateImageVersion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateImageVersion]
$creadListPrec :: ReadPrec [CreateImageVersion]
readPrec :: ReadPrec CreateImageVersion
$creadPrec :: ReadPrec CreateImageVersion
readList :: ReadS [CreateImageVersion]
$creadList :: ReadS [CreateImageVersion]
readsPrec :: Int -> ReadS CreateImageVersion
$creadsPrec :: Int -> ReadS CreateImageVersion
Prelude.Read, Int -> CreateImageVersion -> ShowS
[CreateImageVersion] -> ShowS
CreateImageVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateImageVersion] -> ShowS
$cshowList :: [CreateImageVersion] -> ShowS
show :: CreateImageVersion -> String
$cshow :: CreateImageVersion -> String
showsPrec :: Int -> CreateImageVersion -> ShowS
$cshowsPrec :: Int -> CreateImageVersion -> ShowS
Prelude.Show, forall x. Rep CreateImageVersion x -> CreateImageVersion
forall x. CreateImageVersion -> Rep CreateImageVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateImageVersion x -> CreateImageVersion
$cfrom :: forall x. CreateImageVersion -> Rep CreateImageVersion x
Prelude.Generic)

-- |
-- Create a value of 'CreateImageVersion' 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:
--
-- 'aliases', 'createImageVersion_aliases' - A list of aliases created with the image version.
--
-- 'horovod', 'createImageVersion_horovod' - Indicates Horovod compatibility.
--
-- 'jobType', 'createImageVersion_jobType' - Indicates SageMaker job type compatibility.
--
-- -   @TRAINING@: The image version is compatible with SageMaker training
--     jobs.
--
-- -   @INFERENCE@: The image version is compatible with SageMaker
--     inference jobs.
--
-- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
--     notebook kernels.
--
-- 'mLFramework', 'createImageVersion_mLFramework' - The machine learning framework vended in the image version.
--
-- 'processor', 'createImageVersion_processor' - Indicates CPU or GPU compatibility.
--
-- -   @CPU@: The image version is compatible with CPU.
--
-- -   @GPU@: The image version is compatible with GPU.
--
-- 'programmingLang', 'createImageVersion_programmingLang' - The supported programming language and its version.
--
-- 'releaseNotes', 'createImageVersion_releaseNotes' - The maintainer description of the image version.
--
-- 'vendorGuidance', 'createImageVersion_vendorGuidance' - The stability of the image version, specified by the maintainer.
--
-- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
--     version stability.
--
-- -   @STABLE@: The image version is stable.
--
-- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
--     image versions that are set to be archived are automatically
--     archived after three months.
--
-- -   @ARCHIVED@: The image version is archived. Archived image versions
--     are not searchable and are no longer actively supported.
--
-- 'baseImage', 'createImageVersion_baseImage' - The registry path of the container image to use as the starting point
-- for this version. The path is an Amazon Elastic Container Registry (ECR)
-- URI in the following format:
--
-- @\<acct-id>.dkr.ecr.\<region>.amazonaws.com\/\<repo-name[:tag] or [\@digest]>@
--
-- 'clientToken', 'createImageVersion_clientToken' - A unique ID. If not specified, the Amazon Web Services CLI and Amazon
-- Web Services SDKs, such as the SDK for Python (Boto3), add a unique
-- value to the call.
--
-- 'imageName', 'createImageVersion_imageName' - The @ImageName@ of the @Image@ to create a version of.
newCreateImageVersion ::
  -- | 'baseImage'
  Prelude.Text ->
  -- | 'clientToken'
  Prelude.Text ->
  -- | 'imageName'
  Prelude.Text ->
  CreateImageVersion
newCreateImageVersion :: Text -> Text -> Text -> CreateImageVersion
newCreateImageVersion
  Text
pBaseImage_
  Text
pClientToken_
  Text
pImageName_ =
    CreateImageVersion'
      { $sel:aliases:CreateImageVersion' :: Maybe [Text]
aliases = forall a. Maybe a
Prelude.Nothing,
        $sel:horovod:CreateImageVersion' :: Maybe Bool
horovod = forall a. Maybe a
Prelude.Nothing,
        $sel:jobType:CreateImageVersion' :: Maybe JobType
jobType = forall a. Maybe a
Prelude.Nothing,
        $sel:mLFramework:CreateImageVersion' :: Maybe Text
mLFramework = forall a. Maybe a
Prelude.Nothing,
        $sel:processor:CreateImageVersion' :: Maybe Processor
processor = forall a. Maybe a
Prelude.Nothing,
        $sel:programmingLang:CreateImageVersion' :: Maybe Text
programmingLang = forall a. Maybe a
Prelude.Nothing,
        $sel:releaseNotes:CreateImageVersion' :: Maybe Text
releaseNotes = forall a. Maybe a
Prelude.Nothing,
        $sel:vendorGuidance:CreateImageVersion' :: Maybe VendorGuidance
vendorGuidance = forall a. Maybe a
Prelude.Nothing,
        $sel:baseImage:CreateImageVersion' :: Text
baseImage = Text
pBaseImage_,
        $sel:clientToken:CreateImageVersion' :: Text
clientToken = Text
pClientToken_,
        $sel:imageName:CreateImageVersion' :: Text
imageName = Text
pImageName_
      }

-- | A list of aliases created with the image version.
createImageVersion_aliases :: Lens.Lens' CreateImageVersion (Prelude.Maybe [Prelude.Text])
createImageVersion_aliases :: Lens' CreateImageVersion (Maybe [Text])
createImageVersion_aliases = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Maybe [Text]
aliases :: Maybe [Text]
$sel:aliases:CreateImageVersion' :: CreateImageVersion -> Maybe [Text]
aliases} -> Maybe [Text]
aliases) (\s :: CreateImageVersion
s@CreateImageVersion' {} Maybe [Text]
a -> CreateImageVersion
s {$sel:aliases:CreateImageVersion' :: Maybe [Text]
aliases = Maybe [Text]
a} :: CreateImageVersion) 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

-- | Indicates Horovod compatibility.
createImageVersion_horovod :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Bool)
createImageVersion_horovod :: Lens' CreateImageVersion (Maybe Bool)
createImageVersion_horovod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Maybe Bool
horovod :: Maybe Bool
$sel:horovod:CreateImageVersion' :: CreateImageVersion -> Maybe Bool
horovod} -> Maybe Bool
horovod) (\s :: CreateImageVersion
s@CreateImageVersion' {} Maybe Bool
a -> CreateImageVersion
s {$sel:horovod:CreateImageVersion' :: Maybe Bool
horovod = Maybe Bool
a} :: CreateImageVersion)

-- | Indicates SageMaker job type compatibility.
--
-- -   @TRAINING@: The image version is compatible with SageMaker training
--     jobs.
--
-- -   @INFERENCE@: The image version is compatible with SageMaker
--     inference jobs.
--
-- -   @NOTEBOOK_KERNEL@: The image version is compatible with SageMaker
--     notebook kernels.
createImageVersion_jobType :: Lens.Lens' CreateImageVersion (Prelude.Maybe JobType)
createImageVersion_jobType :: Lens' CreateImageVersion (Maybe JobType)
createImageVersion_jobType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Maybe JobType
jobType :: Maybe JobType
$sel:jobType:CreateImageVersion' :: CreateImageVersion -> Maybe JobType
jobType} -> Maybe JobType
jobType) (\s :: CreateImageVersion
s@CreateImageVersion' {} Maybe JobType
a -> CreateImageVersion
s {$sel:jobType:CreateImageVersion' :: Maybe JobType
jobType = Maybe JobType
a} :: CreateImageVersion)

-- | The machine learning framework vended in the image version.
createImageVersion_mLFramework :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text)
createImageVersion_mLFramework :: Lens' CreateImageVersion (Maybe Text)
createImageVersion_mLFramework = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Maybe Text
mLFramework :: Maybe Text
$sel:mLFramework:CreateImageVersion' :: CreateImageVersion -> Maybe Text
mLFramework} -> Maybe Text
mLFramework) (\s :: CreateImageVersion
s@CreateImageVersion' {} Maybe Text
a -> CreateImageVersion
s {$sel:mLFramework:CreateImageVersion' :: Maybe Text
mLFramework = Maybe Text
a} :: CreateImageVersion)

-- | Indicates CPU or GPU compatibility.
--
-- -   @CPU@: The image version is compatible with CPU.
--
-- -   @GPU@: The image version is compatible with GPU.
createImageVersion_processor :: Lens.Lens' CreateImageVersion (Prelude.Maybe Processor)
createImageVersion_processor :: Lens' CreateImageVersion (Maybe Processor)
createImageVersion_processor = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Maybe Processor
processor :: Maybe Processor
$sel:processor:CreateImageVersion' :: CreateImageVersion -> Maybe Processor
processor} -> Maybe Processor
processor) (\s :: CreateImageVersion
s@CreateImageVersion' {} Maybe Processor
a -> CreateImageVersion
s {$sel:processor:CreateImageVersion' :: Maybe Processor
processor = Maybe Processor
a} :: CreateImageVersion)

-- | The supported programming language and its version.
createImageVersion_programmingLang :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text)
createImageVersion_programmingLang :: Lens' CreateImageVersion (Maybe Text)
createImageVersion_programmingLang = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Maybe Text
programmingLang :: Maybe Text
$sel:programmingLang:CreateImageVersion' :: CreateImageVersion -> Maybe Text
programmingLang} -> Maybe Text
programmingLang) (\s :: CreateImageVersion
s@CreateImageVersion' {} Maybe Text
a -> CreateImageVersion
s {$sel:programmingLang:CreateImageVersion' :: Maybe Text
programmingLang = Maybe Text
a} :: CreateImageVersion)

-- | The maintainer description of the image version.
createImageVersion_releaseNotes :: Lens.Lens' CreateImageVersion (Prelude.Maybe Prelude.Text)
createImageVersion_releaseNotes :: Lens' CreateImageVersion (Maybe Text)
createImageVersion_releaseNotes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Maybe Text
releaseNotes :: Maybe Text
$sel:releaseNotes:CreateImageVersion' :: CreateImageVersion -> Maybe Text
releaseNotes} -> Maybe Text
releaseNotes) (\s :: CreateImageVersion
s@CreateImageVersion' {} Maybe Text
a -> CreateImageVersion
s {$sel:releaseNotes:CreateImageVersion' :: Maybe Text
releaseNotes = Maybe Text
a} :: CreateImageVersion)

-- | The stability of the image version, specified by the maintainer.
--
-- -   @NOT_PROVIDED@: The maintainers did not provide a status for image
--     version stability.
--
-- -   @STABLE@: The image version is stable.
--
-- -   @TO_BE_ARCHIVED@: The image version is set to be archived. Custom
--     image versions that are set to be archived are automatically
--     archived after three months.
--
-- -   @ARCHIVED@: The image version is archived. Archived image versions
--     are not searchable and are no longer actively supported.
createImageVersion_vendorGuidance :: Lens.Lens' CreateImageVersion (Prelude.Maybe VendorGuidance)
createImageVersion_vendorGuidance :: Lens' CreateImageVersion (Maybe VendorGuidance)
createImageVersion_vendorGuidance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Maybe VendorGuidance
vendorGuidance :: Maybe VendorGuidance
$sel:vendorGuidance:CreateImageVersion' :: CreateImageVersion -> Maybe VendorGuidance
vendorGuidance} -> Maybe VendorGuidance
vendorGuidance) (\s :: CreateImageVersion
s@CreateImageVersion' {} Maybe VendorGuidance
a -> CreateImageVersion
s {$sel:vendorGuidance:CreateImageVersion' :: Maybe VendorGuidance
vendorGuidance = Maybe VendorGuidance
a} :: CreateImageVersion)

-- | The registry path of the container image to use as the starting point
-- for this version. The path is an Amazon Elastic Container Registry (ECR)
-- URI in the following format:
--
-- @\<acct-id>.dkr.ecr.\<region>.amazonaws.com\/\<repo-name[:tag] or [\@digest]>@
createImageVersion_baseImage :: Lens.Lens' CreateImageVersion Prelude.Text
createImageVersion_baseImage :: Lens' CreateImageVersion Text
createImageVersion_baseImage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Text
baseImage :: Text
$sel:baseImage:CreateImageVersion' :: CreateImageVersion -> Text
baseImage} -> Text
baseImage) (\s :: CreateImageVersion
s@CreateImageVersion' {} Text
a -> CreateImageVersion
s {$sel:baseImage:CreateImageVersion' :: Text
baseImage = Text
a} :: CreateImageVersion)

-- | A unique ID. If not specified, the Amazon Web Services CLI and Amazon
-- Web Services SDKs, such as the SDK for Python (Boto3), add a unique
-- value to the call.
createImageVersion_clientToken :: Lens.Lens' CreateImageVersion Prelude.Text
createImageVersion_clientToken :: Lens' CreateImageVersion Text
createImageVersion_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Text
clientToken :: Text
$sel:clientToken:CreateImageVersion' :: CreateImageVersion -> Text
clientToken} -> Text
clientToken) (\s :: CreateImageVersion
s@CreateImageVersion' {} Text
a -> CreateImageVersion
s {$sel:clientToken:CreateImageVersion' :: Text
clientToken = Text
a} :: CreateImageVersion)

-- | The @ImageName@ of the @Image@ to create a version of.
createImageVersion_imageName :: Lens.Lens' CreateImageVersion Prelude.Text
createImageVersion_imageName :: Lens' CreateImageVersion Text
createImageVersion_imageName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersion' {Text
imageName :: Text
$sel:imageName:CreateImageVersion' :: CreateImageVersion -> Text
imageName} -> Text
imageName) (\s :: CreateImageVersion
s@CreateImageVersion' {} Text
a -> CreateImageVersion
s {$sel:imageName:CreateImageVersion' :: Text
imageName = Text
a} :: CreateImageVersion)

instance Core.AWSRequest CreateImageVersion where
  type
    AWSResponse CreateImageVersion =
      CreateImageVersionResponse
  request :: (Service -> Service)
-> CreateImageVersion -> Request CreateImageVersion
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 CreateImageVersion
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateImageVersion)))
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 -> Int -> CreateImageVersionResponse
CreateImageVersionResponse'
            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
"ImageVersionArn")
            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 CreateImageVersion where
  hashWithSalt :: Int -> CreateImageVersion -> Int
hashWithSalt Int
_salt CreateImageVersion' {Maybe Bool
Maybe [Text]
Maybe Text
Maybe JobType
Maybe Processor
Maybe VendorGuidance
Text
imageName :: Text
clientToken :: Text
baseImage :: Text
vendorGuidance :: Maybe VendorGuidance
releaseNotes :: Maybe Text
programmingLang :: Maybe Text
processor :: Maybe Processor
mLFramework :: Maybe Text
jobType :: Maybe JobType
horovod :: Maybe Bool
aliases :: Maybe [Text]
$sel:imageName:CreateImageVersion' :: CreateImageVersion -> Text
$sel:clientToken:CreateImageVersion' :: CreateImageVersion -> Text
$sel:baseImage:CreateImageVersion' :: CreateImageVersion -> Text
$sel:vendorGuidance:CreateImageVersion' :: CreateImageVersion -> Maybe VendorGuidance
$sel:releaseNotes:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:programmingLang:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:processor:CreateImageVersion' :: CreateImageVersion -> Maybe Processor
$sel:mLFramework:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:jobType:CreateImageVersion' :: CreateImageVersion -> Maybe JobType
$sel:horovod:CreateImageVersion' :: CreateImageVersion -> Maybe Bool
$sel:aliases:CreateImageVersion' :: CreateImageVersion -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
aliases
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
horovod
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JobType
jobType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
mLFramework
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Processor
processor
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
programmingLang
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
releaseNotes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VendorGuidance
vendorGuidance
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
baseImage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
imageName

instance Prelude.NFData CreateImageVersion where
  rnf :: CreateImageVersion -> ()
rnf CreateImageVersion' {Maybe Bool
Maybe [Text]
Maybe Text
Maybe JobType
Maybe Processor
Maybe VendorGuidance
Text
imageName :: Text
clientToken :: Text
baseImage :: Text
vendorGuidance :: Maybe VendorGuidance
releaseNotes :: Maybe Text
programmingLang :: Maybe Text
processor :: Maybe Processor
mLFramework :: Maybe Text
jobType :: Maybe JobType
horovod :: Maybe Bool
aliases :: Maybe [Text]
$sel:imageName:CreateImageVersion' :: CreateImageVersion -> Text
$sel:clientToken:CreateImageVersion' :: CreateImageVersion -> Text
$sel:baseImage:CreateImageVersion' :: CreateImageVersion -> Text
$sel:vendorGuidance:CreateImageVersion' :: CreateImageVersion -> Maybe VendorGuidance
$sel:releaseNotes:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:programmingLang:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:processor:CreateImageVersion' :: CreateImageVersion -> Maybe Processor
$sel:mLFramework:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:jobType:CreateImageVersion' :: CreateImageVersion -> Maybe JobType
$sel:horovod:CreateImageVersion' :: CreateImageVersion -> Maybe Bool
$sel:aliases:CreateImageVersion' :: CreateImageVersion -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
aliases
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
horovod
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JobType
jobType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
mLFramework
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Processor
processor
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
programmingLang
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
releaseNotes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VendorGuidance
vendorGuidance
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
baseImage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
imageName

instance Data.ToHeaders CreateImageVersion where
  toHeaders :: CreateImageVersion -> 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.CreateImageVersion" ::
                          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 CreateImageVersion where
  toJSON :: CreateImageVersion -> Value
toJSON CreateImageVersion' {Maybe Bool
Maybe [Text]
Maybe Text
Maybe JobType
Maybe Processor
Maybe VendorGuidance
Text
imageName :: Text
clientToken :: Text
baseImage :: Text
vendorGuidance :: Maybe VendorGuidance
releaseNotes :: Maybe Text
programmingLang :: Maybe Text
processor :: Maybe Processor
mLFramework :: Maybe Text
jobType :: Maybe JobType
horovod :: Maybe Bool
aliases :: Maybe [Text]
$sel:imageName:CreateImageVersion' :: CreateImageVersion -> Text
$sel:clientToken:CreateImageVersion' :: CreateImageVersion -> Text
$sel:baseImage:CreateImageVersion' :: CreateImageVersion -> Text
$sel:vendorGuidance:CreateImageVersion' :: CreateImageVersion -> Maybe VendorGuidance
$sel:releaseNotes:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:programmingLang:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:processor:CreateImageVersion' :: CreateImageVersion -> Maybe Processor
$sel:mLFramework:CreateImageVersion' :: CreateImageVersion -> Maybe Text
$sel:jobType:CreateImageVersion' :: CreateImageVersion -> Maybe JobType
$sel:horovod:CreateImageVersion' :: CreateImageVersion -> Maybe Bool
$sel:aliases:CreateImageVersion' :: CreateImageVersion -> Maybe [Text]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Aliases" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
aliases,
            (Key
"Horovod" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
horovod,
            (Key
"JobType" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe JobType
jobType,
            (Key
"MLFramework" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
mLFramework,
            (Key
"Processor" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Processor
processor,
            (Key
"ProgrammingLang" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
programmingLang,
            (Key
"ReleaseNotes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
releaseNotes,
            (Key
"VendorGuidance" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VendorGuidance
vendorGuidance,
            forall a. a -> Maybe a
Prelude.Just (Key
"BaseImage" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
baseImage),
            forall a. a -> Maybe a
Prelude.Just (Key
"ClientToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
clientToken),
            forall a. a -> Maybe a
Prelude.Just (Key
"ImageName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
imageName)
          ]
      )

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

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

-- | /See:/ 'newCreateImageVersionResponse' smart constructor.
data CreateImageVersionResponse = CreateImageVersionResponse'
  { -- | The ARN of the image version.
    CreateImageVersionResponse -> Maybe Text
imageVersionArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateImageVersionResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateImageVersionResponse -> CreateImageVersionResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateImageVersionResponse -> CreateImageVersionResponse -> Bool
$c/= :: CreateImageVersionResponse -> CreateImageVersionResponse -> Bool
== :: CreateImageVersionResponse -> CreateImageVersionResponse -> Bool
$c== :: CreateImageVersionResponse -> CreateImageVersionResponse -> Bool
Prelude.Eq, ReadPrec [CreateImageVersionResponse]
ReadPrec CreateImageVersionResponse
Int -> ReadS CreateImageVersionResponse
ReadS [CreateImageVersionResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateImageVersionResponse]
$creadListPrec :: ReadPrec [CreateImageVersionResponse]
readPrec :: ReadPrec CreateImageVersionResponse
$creadPrec :: ReadPrec CreateImageVersionResponse
readList :: ReadS [CreateImageVersionResponse]
$creadList :: ReadS [CreateImageVersionResponse]
readsPrec :: Int -> ReadS CreateImageVersionResponse
$creadsPrec :: Int -> ReadS CreateImageVersionResponse
Prelude.Read, Int -> CreateImageVersionResponse -> ShowS
[CreateImageVersionResponse] -> ShowS
CreateImageVersionResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateImageVersionResponse] -> ShowS
$cshowList :: [CreateImageVersionResponse] -> ShowS
show :: CreateImageVersionResponse -> String
$cshow :: CreateImageVersionResponse -> String
showsPrec :: Int -> CreateImageVersionResponse -> ShowS
$cshowsPrec :: Int -> CreateImageVersionResponse -> ShowS
Prelude.Show, forall x.
Rep CreateImageVersionResponse x -> CreateImageVersionResponse
forall x.
CreateImageVersionResponse -> Rep CreateImageVersionResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateImageVersionResponse x -> CreateImageVersionResponse
$cfrom :: forall x.
CreateImageVersionResponse -> Rep CreateImageVersionResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateImageVersionResponse' 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:
--
-- 'imageVersionArn', 'createImageVersionResponse_imageVersionArn' - The ARN of the image version.
--
-- 'httpStatus', 'createImageVersionResponse_httpStatus' - The response's http status code.
newCreateImageVersionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateImageVersionResponse
newCreateImageVersionResponse :: Int -> CreateImageVersionResponse
newCreateImageVersionResponse Int
pHttpStatus_ =
  CreateImageVersionResponse'
    { $sel:imageVersionArn:CreateImageVersionResponse' :: Maybe Text
imageVersionArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateImageVersionResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the image version.
createImageVersionResponse_imageVersionArn :: Lens.Lens' CreateImageVersionResponse (Prelude.Maybe Prelude.Text)
createImageVersionResponse_imageVersionArn :: Lens' CreateImageVersionResponse (Maybe Text)
createImageVersionResponse_imageVersionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateImageVersionResponse' {Maybe Text
imageVersionArn :: Maybe Text
$sel:imageVersionArn:CreateImageVersionResponse' :: CreateImageVersionResponse -> Maybe Text
imageVersionArn} -> Maybe Text
imageVersionArn) (\s :: CreateImageVersionResponse
s@CreateImageVersionResponse' {} Maybe Text
a -> CreateImageVersionResponse
s {$sel:imageVersionArn:CreateImageVersionResponse' :: Maybe Text
imageVersionArn = Maybe Text
a} :: CreateImageVersionResponse)

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

instance Prelude.NFData CreateImageVersionResponse where
  rnf :: CreateImageVersionResponse -> ()
rnf CreateImageVersionResponse' {Int
Maybe Text
httpStatus :: Int
imageVersionArn :: Maybe Text
$sel:httpStatus:CreateImageVersionResponse' :: CreateImageVersionResponse -> Int
$sel:imageVersionArn:CreateImageVersionResponse' :: CreateImageVersionResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
imageVersionArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus