{-# 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.UpdateImageVersion
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates the properties of a SageMaker image version.
module Amazonka.SageMaker.UpdateImageVersion
  ( -- * Creating a Request
    UpdateImageVersion (..),
    newUpdateImageVersion,

    -- * Request Lenses
    updateImageVersion_alias,
    updateImageVersion_aliasesToAdd,
    updateImageVersion_aliasesToDelete,
    updateImageVersion_horovod,
    updateImageVersion_jobType,
    updateImageVersion_mLFramework,
    updateImageVersion_processor,
    updateImageVersion_programmingLang,
    updateImageVersion_releaseNotes,
    updateImageVersion_vendorGuidance,
    updateImageVersion_version,
    updateImageVersion_imageName,

    -- * Destructuring the Response
    UpdateImageVersionResponse (..),
    newUpdateImageVersionResponse,

    -- * Response Lenses
    updateImageVersionResponse_imageVersionArn,
    updateImageVersionResponse_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:/ 'newUpdateImageVersion' smart constructor.
data UpdateImageVersion = UpdateImageVersion'
  { -- | The alias of the image version.
    UpdateImageVersion -> Maybe Text
alias :: Prelude.Maybe Prelude.Text,
    -- | A list of aliases to add.
    UpdateImageVersion -> Maybe [Text]
aliasesToAdd :: Prelude.Maybe [Prelude.Text],
    -- | A list of aliases to delete.
    UpdateImageVersion -> Maybe [Text]
aliasesToDelete :: Prelude.Maybe [Prelude.Text],
    -- | Indicates Horovod compatibility.
    UpdateImageVersion -> 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.
    UpdateImageVersion -> Maybe JobType
jobType :: Prelude.Maybe JobType,
    -- | The machine learning framework vended in the image version.
    UpdateImageVersion -> 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.
    UpdateImageVersion -> Maybe Processor
processor :: Prelude.Maybe Processor,
    -- | The supported programming language and its version.
    UpdateImageVersion -> Maybe Text
programmingLang :: Prelude.Maybe Prelude.Text,
    -- | The maintainer description of the image version.
    UpdateImageVersion -> Maybe Text
releaseNotes :: Prelude.Maybe Prelude.Text,
    -- | The availability 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.
    UpdateImageVersion -> Maybe VendorGuidance
vendorGuidance :: Prelude.Maybe VendorGuidance,
    -- | The version of the image.
    UpdateImageVersion -> Maybe Natural
version :: Prelude.Maybe Prelude.Natural,
    -- | The name of the image.
    UpdateImageVersion -> Text
imageName :: Prelude.Text
  }
  deriving (UpdateImageVersion -> UpdateImageVersion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateImageVersion -> UpdateImageVersion -> Bool
$c/= :: UpdateImageVersion -> UpdateImageVersion -> Bool
== :: UpdateImageVersion -> UpdateImageVersion -> Bool
$c== :: UpdateImageVersion -> UpdateImageVersion -> Bool
Prelude.Eq, ReadPrec [UpdateImageVersion]
ReadPrec UpdateImageVersion
Int -> ReadS UpdateImageVersion
ReadS [UpdateImageVersion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateImageVersion]
$creadListPrec :: ReadPrec [UpdateImageVersion]
readPrec :: ReadPrec UpdateImageVersion
$creadPrec :: ReadPrec UpdateImageVersion
readList :: ReadS [UpdateImageVersion]
$creadList :: ReadS [UpdateImageVersion]
readsPrec :: Int -> ReadS UpdateImageVersion
$creadsPrec :: Int -> ReadS UpdateImageVersion
Prelude.Read, Int -> UpdateImageVersion -> ShowS
[UpdateImageVersion] -> ShowS
UpdateImageVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateImageVersion] -> ShowS
$cshowList :: [UpdateImageVersion] -> ShowS
show :: UpdateImageVersion -> String
$cshow :: UpdateImageVersion -> String
showsPrec :: Int -> UpdateImageVersion -> ShowS
$cshowsPrec :: Int -> UpdateImageVersion -> ShowS
Prelude.Show, forall x. Rep UpdateImageVersion x -> UpdateImageVersion
forall x. UpdateImageVersion -> Rep UpdateImageVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateImageVersion x -> UpdateImageVersion
$cfrom :: forall x. UpdateImageVersion -> Rep UpdateImageVersion x
Prelude.Generic)

-- |
-- Create a value of 'UpdateImageVersion' 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:
--
-- 'alias', 'updateImageVersion_alias' - The alias of the image version.
--
-- 'aliasesToAdd', 'updateImageVersion_aliasesToAdd' - A list of aliases to add.
--
-- 'aliasesToDelete', 'updateImageVersion_aliasesToDelete' - A list of aliases to delete.
--
-- 'horovod', 'updateImageVersion_horovod' - Indicates Horovod compatibility.
--
-- 'jobType', 'updateImageVersion_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', 'updateImageVersion_mLFramework' - The machine learning framework vended in the image version.
--
-- 'processor', 'updateImageVersion_processor' - Indicates CPU or GPU compatibility.
--
-- -   @CPU@: The image version is compatible with CPU.
--
-- -   @GPU@: The image version is compatible with GPU.
--
-- 'programmingLang', 'updateImageVersion_programmingLang' - The supported programming language and its version.
--
-- 'releaseNotes', 'updateImageVersion_releaseNotes' - The maintainer description of the image version.
--
-- 'vendorGuidance', 'updateImageVersion_vendorGuidance' - The availability 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.
--
-- 'version', 'updateImageVersion_version' - The version of the image.
--
-- 'imageName', 'updateImageVersion_imageName' - The name of the image.
newUpdateImageVersion ::
  -- | 'imageName'
  Prelude.Text ->
  UpdateImageVersion
newUpdateImageVersion :: Text -> UpdateImageVersion
newUpdateImageVersion Text
pImageName_ =
  UpdateImageVersion'
    { $sel:alias:UpdateImageVersion' :: Maybe Text
alias = forall a. Maybe a
Prelude.Nothing,
      $sel:aliasesToAdd:UpdateImageVersion' :: Maybe [Text]
aliasesToAdd = forall a. Maybe a
Prelude.Nothing,
      $sel:aliasesToDelete:UpdateImageVersion' :: Maybe [Text]
aliasesToDelete = forall a. Maybe a
Prelude.Nothing,
      $sel:horovod:UpdateImageVersion' :: Maybe Bool
horovod = forall a. Maybe a
Prelude.Nothing,
      $sel:jobType:UpdateImageVersion' :: Maybe JobType
jobType = forall a. Maybe a
Prelude.Nothing,
      $sel:mLFramework:UpdateImageVersion' :: Maybe Text
mLFramework = forall a. Maybe a
Prelude.Nothing,
      $sel:processor:UpdateImageVersion' :: Maybe Processor
processor = forall a. Maybe a
Prelude.Nothing,
      $sel:programmingLang:UpdateImageVersion' :: Maybe Text
programmingLang = forall a. Maybe a
Prelude.Nothing,
      $sel:releaseNotes:UpdateImageVersion' :: Maybe Text
releaseNotes = forall a. Maybe a
Prelude.Nothing,
      $sel:vendorGuidance:UpdateImageVersion' :: Maybe VendorGuidance
vendorGuidance = forall a. Maybe a
Prelude.Nothing,
      $sel:version:UpdateImageVersion' :: Maybe Natural
version = forall a. Maybe a
Prelude.Nothing,
      $sel:imageName:UpdateImageVersion' :: Text
imageName = Text
pImageName_
    }

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

-- | A list of aliases to add.
updateImageVersion_aliasesToAdd :: Lens.Lens' UpdateImageVersion (Prelude.Maybe [Prelude.Text])
updateImageVersion_aliasesToAdd :: Lens' UpdateImageVersion (Maybe [Text])
updateImageVersion_aliasesToAdd = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateImageVersion' {Maybe [Text]
aliasesToAdd :: Maybe [Text]
$sel:aliasesToAdd:UpdateImageVersion' :: UpdateImageVersion -> Maybe [Text]
aliasesToAdd} -> Maybe [Text]
aliasesToAdd) (\s :: UpdateImageVersion
s@UpdateImageVersion' {} Maybe [Text]
a -> UpdateImageVersion
s {$sel:aliasesToAdd:UpdateImageVersion' :: Maybe [Text]
aliasesToAdd = Maybe [Text]
a} :: UpdateImageVersion) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A list of aliases to delete.
updateImageVersion_aliasesToDelete :: Lens.Lens' UpdateImageVersion (Prelude.Maybe [Prelude.Text])
updateImageVersion_aliasesToDelete :: Lens' UpdateImageVersion (Maybe [Text])
updateImageVersion_aliasesToDelete = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateImageVersion' {Maybe [Text]
aliasesToDelete :: Maybe [Text]
$sel:aliasesToDelete:UpdateImageVersion' :: UpdateImageVersion -> Maybe [Text]
aliasesToDelete} -> Maybe [Text]
aliasesToDelete) (\s :: UpdateImageVersion
s@UpdateImageVersion' {} Maybe [Text]
a -> UpdateImageVersion
s {$sel:aliasesToDelete:UpdateImageVersion' :: Maybe [Text]
aliasesToDelete = Maybe [Text]
a} :: UpdateImageVersion) 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.
updateImageVersion_horovod :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Prelude.Bool)
updateImageVersion_horovod :: Lens' UpdateImageVersion (Maybe Bool)
updateImageVersion_horovod = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateImageVersion' {Maybe Bool
horovod :: Maybe Bool
$sel:horovod:UpdateImageVersion' :: UpdateImageVersion -> Maybe Bool
horovod} -> Maybe Bool
horovod) (\s :: UpdateImageVersion
s@UpdateImageVersion' {} Maybe Bool
a -> UpdateImageVersion
s {$sel:horovod:UpdateImageVersion' :: Maybe Bool
horovod = Maybe Bool
a} :: UpdateImageVersion)

-- | 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.
updateImageVersion_jobType :: Lens.Lens' UpdateImageVersion (Prelude.Maybe JobType)
updateImageVersion_jobType :: Lens' UpdateImageVersion (Maybe JobType)
updateImageVersion_jobType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateImageVersion' {Maybe JobType
jobType :: Maybe JobType
$sel:jobType:UpdateImageVersion' :: UpdateImageVersion -> Maybe JobType
jobType} -> Maybe JobType
jobType) (\s :: UpdateImageVersion
s@UpdateImageVersion' {} Maybe JobType
a -> UpdateImageVersion
s {$sel:jobType:UpdateImageVersion' :: Maybe JobType
jobType = Maybe JobType
a} :: UpdateImageVersion)

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

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

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

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

-- | The availability 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.
updateImageVersion_vendorGuidance :: Lens.Lens' UpdateImageVersion (Prelude.Maybe VendorGuidance)
updateImageVersion_vendorGuidance :: Lens' UpdateImageVersion (Maybe VendorGuidance)
updateImageVersion_vendorGuidance = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateImageVersion' {Maybe VendorGuidance
vendorGuidance :: Maybe VendorGuidance
$sel:vendorGuidance:UpdateImageVersion' :: UpdateImageVersion -> Maybe VendorGuidance
vendorGuidance} -> Maybe VendorGuidance
vendorGuidance) (\s :: UpdateImageVersion
s@UpdateImageVersion' {} Maybe VendorGuidance
a -> UpdateImageVersion
s {$sel:vendorGuidance:UpdateImageVersion' :: Maybe VendorGuidance
vendorGuidance = Maybe VendorGuidance
a} :: UpdateImageVersion)

-- | The version of the image.
updateImageVersion_version :: Lens.Lens' UpdateImageVersion (Prelude.Maybe Prelude.Natural)
updateImageVersion_version :: Lens' UpdateImageVersion (Maybe Natural)
updateImageVersion_version = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateImageVersion' {Maybe Natural
version :: Maybe Natural
$sel:version:UpdateImageVersion' :: UpdateImageVersion -> Maybe Natural
version} -> Maybe Natural
version) (\s :: UpdateImageVersion
s@UpdateImageVersion' {} Maybe Natural
a -> UpdateImageVersion
s {$sel:version:UpdateImageVersion' :: Maybe Natural
version = Maybe Natural
a} :: UpdateImageVersion)

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

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

instance Prelude.NFData UpdateImageVersion where
  rnf :: UpdateImageVersion -> ()
rnf UpdateImageVersion' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe JobType
Maybe Processor
Maybe VendorGuidance
Text
imageName :: Text
version :: Maybe Natural
vendorGuidance :: Maybe VendorGuidance
releaseNotes :: Maybe Text
programmingLang :: Maybe Text
processor :: Maybe Processor
mLFramework :: Maybe Text
jobType :: Maybe JobType
horovod :: Maybe Bool
aliasesToDelete :: Maybe [Text]
aliasesToAdd :: Maybe [Text]
alias :: Maybe Text
$sel:imageName:UpdateImageVersion' :: UpdateImageVersion -> Text
$sel:version:UpdateImageVersion' :: UpdateImageVersion -> Maybe Natural
$sel:vendorGuidance:UpdateImageVersion' :: UpdateImageVersion -> Maybe VendorGuidance
$sel:releaseNotes:UpdateImageVersion' :: UpdateImageVersion -> Maybe Text
$sel:programmingLang:UpdateImageVersion' :: UpdateImageVersion -> Maybe Text
$sel:processor:UpdateImageVersion' :: UpdateImageVersion -> Maybe Processor
$sel:mLFramework:UpdateImageVersion' :: UpdateImageVersion -> Maybe Text
$sel:jobType:UpdateImageVersion' :: UpdateImageVersion -> Maybe JobType
$sel:horovod:UpdateImageVersion' :: UpdateImageVersion -> Maybe Bool
$sel:aliasesToDelete:UpdateImageVersion' :: UpdateImageVersion -> Maybe [Text]
$sel:aliasesToAdd:UpdateImageVersion' :: UpdateImageVersion -> Maybe [Text]
$sel:alias:UpdateImageVersion' :: UpdateImageVersion -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
alias
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
aliasesToAdd
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
aliasesToDelete
      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 Maybe Natural
version
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
imageName

instance Data.ToHeaders UpdateImageVersion where
  toHeaders :: UpdateImageVersion -> 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.UpdateImageVersion" ::
                          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 UpdateImageVersion where
  toJSON :: UpdateImageVersion -> Value
toJSON UpdateImageVersion' {Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe JobType
Maybe Processor
Maybe VendorGuidance
Text
imageName :: Text
version :: Maybe Natural
vendorGuidance :: Maybe VendorGuidance
releaseNotes :: Maybe Text
programmingLang :: Maybe Text
processor :: Maybe Processor
mLFramework :: Maybe Text
jobType :: Maybe JobType
horovod :: Maybe Bool
aliasesToDelete :: Maybe [Text]
aliasesToAdd :: Maybe [Text]
alias :: Maybe Text
$sel:imageName:UpdateImageVersion' :: UpdateImageVersion -> Text
$sel:version:UpdateImageVersion' :: UpdateImageVersion -> Maybe Natural
$sel:vendorGuidance:UpdateImageVersion' :: UpdateImageVersion -> Maybe VendorGuidance
$sel:releaseNotes:UpdateImageVersion' :: UpdateImageVersion -> Maybe Text
$sel:programmingLang:UpdateImageVersion' :: UpdateImageVersion -> Maybe Text
$sel:processor:UpdateImageVersion' :: UpdateImageVersion -> Maybe Processor
$sel:mLFramework:UpdateImageVersion' :: UpdateImageVersion -> Maybe Text
$sel:jobType:UpdateImageVersion' :: UpdateImageVersion -> Maybe JobType
$sel:horovod:UpdateImageVersion' :: UpdateImageVersion -> Maybe Bool
$sel:aliasesToDelete:UpdateImageVersion' :: UpdateImageVersion -> Maybe [Text]
$sel:aliasesToAdd:UpdateImageVersion' :: UpdateImageVersion -> Maybe [Text]
$sel:alias:UpdateImageVersion' :: UpdateImageVersion -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Alias" 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
alias,
            (Key
"AliasesToAdd" 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]
aliasesToAdd,
            (Key
"AliasesToDelete" 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]
aliasesToDelete,
            (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,
            (Key
"Version" 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 Natural
version,
            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 UpdateImageVersion where
  toPath :: UpdateImageVersion -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

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

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

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

instance Prelude.NFData UpdateImageVersionResponse where
  rnf :: UpdateImageVersionResponse -> ()
rnf UpdateImageVersionResponse' {Int
Maybe Text
httpStatus :: Int
imageVersionArn :: Maybe Text
$sel:httpStatus:UpdateImageVersionResponse' :: UpdateImageVersionResponse -> Int
$sel:imageVersionArn:UpdateImageVersionResponse' :: UpdateImageVersionResponse -> 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