{-# 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.DeleteImageVersion
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes a version of a SageMaker image. The container image the version
-- represents isn\'t deleted.
module Amazonka.SageMaker.DeleteImageVersion
  ( -- * Creating a Request
    DeleteImageVersion (..),
    newDeleteImageVersion,

    -- * Request Lenses
    deleteImageVersion_alias,
    deleteImageVersion_version,
    deleteImageVersion_imageName,

    -- * Destructuring the Response
    DeleteImageVersionResponse (..),
    newDeleteImageVersionResponse,

    -- * Response Lenses
    deleteImageVersionResponse_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:/ 'newDeleteImageVersion' smart constructor.
data DeleteImageVersion = DeleteImageVersion'
  { -- | The alias of the image to delete.
    DeleteImageVersion -> Maybe Text
alias :: Prelude.Maybe Prelude.Text,
    -- | The version to delete.
    DeleteImageVersion -> Maybe Natural
version :: Prelude.Maybe Prelude.Natural,
    -- | The name of the image to delete.
    DeleteImageVersion -> Text
imageName :: Prelude.Text
  }
  deriving (DeleteImageVersion -> DeleteImageVersion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteImageVersion -> DeleteImageVersion -> Bool
$c/= :: DeleteImageVersion -> DeleteImageVersion -> Bool
== :: DeleteImageVersion -> DeleteImageVersion -> Bool
$c== :: DeleteImageVersion -> DeleteImageVersion -> Bool
Prelude.Eq, ReadPrec [DeleteImageVersion]
ReadPrec DeleteImageVersion
Int -> ReadS DeleteImageVersion
ReadS [DeleteImageVersion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteImageVersion]
$creadListPrec :: ReadPrec [DeleteImageVersion]
readPrec :: ReadPrec DeleteImageVersion
$creadPrec :: ReadPrec DeleteImageVersion
readList :: ReadS [DeleteImageVersion]
$creadList :: ReadS [DeleteImageVersion]
readsPrec :: Int -> ReadS DeleteImageVersion
$creadsPrec :: Int -> ReadS DeleteImageVersion
Prelude.Read, Int -> DeleteImageVersion -> ShowS
[DeleteImageVersion] -> ShowS
DeleteImageVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteImageVersion] -> ShowS
$cshowList :: [DeleteImageVersion] -> ShowS
show :: DeleteImageVersion -> String
$cshow :: DeleteImageVersion -> String
showsPrec :: Int -> DeleteImageVersion -> ShowS
$cshowsPrec :: Int -> DeleteImageVersion -> ShowS
Prelude.Show, forall x. Rep DeleteImageVersion x -> DeleteImageVersion
forall x. DeleteImageVersion -> Rep DeleteImageVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteImageVersion x -> DeleteImageVersion
$cfrom :: forall x. DeleteImageVersion -> Rep DeleteImageVersion x
Prelude.Generic)

-- |
-- Create a value of 'DeleteImageVersion' 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', 'deleteImageVersion_alias' - The alias of the image to delete.
--
-- 'version', 'deleteImageVersion_version' - The version to delete.
--
-- 'imageName', 'deleteImageVersion_imageName' - The name of the image to delete.
newDeleteImageVersion ::
  -- | 'imageName'
  Prelude.Text ->
  DeleteImageVersion
newDeleteImageVersion :: Text -> DeleteImageVersion
newDeleteImageVersion Text
pImageName_ =
  DeleteImageVersion'
    { $sel:alias:DeleteImageVersion' :: Maybe Text
alias = forall a. Maybe a
Prelude.Nothing,
      $sel:version:DeleteImageVersion' :: Maybe Natural
version = forall a. Maybe a
Prelude.Nothing,
      $sel:imageName:DeleteImageVersion' :: Text
imageName = Text
pImageName_
    }

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

-- | The version to delete.
deleteImageVersion_version :: Lens.Lens' DeleteImageVersion (Prelude.Maybe Prelude.Natural)
deleteImageVersion_version :: Lens' DeleteImageVersion (Maybe Natural)
deleteImageVersion_version = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteImageVersion' {Maybe Natural
version :: Maybe Natural
$sel:version:DeleteImageVersion' :: DeleteImageVersion -> Maybe Natural
version} -> Maybe Natural
version) (\s :: DeleteImageVersion
s@DeleteImageVersion' {} Maybe Natural
a -> DeleteImageVersion
s {$sel:version:DeleteImageVersion' :: Maybe Natural
version = Maybe Natural
a} :: DeleteImageVersion)

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

instance Core.AWSRequest DeleteImageVersion where
  type
    AWSResponse DeleteImageVersion =
      DeleteImageVersionResponse
  request :: (Service -> Service)
-> DeleteImageVersion -> Request DeleteImageVersion
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 DeleteImageVersion
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteImageVersion)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> DeleteImageVersionResponse
DeleteImageVersionResponse'
            forall (f :: * -> *) a b. Functor 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 DeleteImageVersion where
  hashWithSalt :: Int -> DeleteImageVersion -> Int
hashWithSalt Int
_salt DeleteImageVersion' {Maybe Natural
Maybe Text
Text
imageName :: Text
version :: Maybe Natural
alias :: Maybe Text
$sel:imageName:DeleteImageVersion' :: DeleteImageVersion -> Text
$sel:version:DeleteImageVersion' :: DeleteImageVersion -> Maybe Natural
$sel:alias:DeleteImageVersion' :: DeleteImageVersion -> 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 Natural
version
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
imageName

instance Prelude.NFData DeleteImageVersion where
  rnf :: DeleteImageVersion -> ()
rnf DeleteImageVersion' {Maybe Natural
Maybe Text
Text
imageName :: Text
version :: Maybe Natural
alias :: Maybe Text
$sel:imageName:DeleteImageVersion' :: DeleteImageVersion -> Text
$sel:version:DeleteImageVersion' :: DeleteImageVersion -> Maybe Natural
$sel:alias:DeleteImageVersion' :: DeleteImageVersion -> 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 Natural
version
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
imageName

instance Data.ToHeaders DeleteImageVersion where
  toHeaders :: DeleteImageVersion -> 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.DeleteImageVersion" ::
                          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 DeleteImageVersion where
  toJSON :: DeleteImageVersion -> Value
toJSON DeleteImageVersion' {Maybe Natural
Maybe Text
Text
imageName :: Text
version :: Maybe Natural
alias :: Maybe Text
$sel:imageName:DeleteImageVersion' :: DeleteImageVersion -> Text
$sel:version:DeleteImageVersion' :: DeleteImageVersion -> Maybe Natural
$sel:alias:DeleteImageVersion' :: DeleteImageVersion -> 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
"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 DeleteImageVersion where
  toPath :: DeleteImageVersion -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

-- |
-- Create a value of 'DeleteImageVersionResponse' 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:
--
-- 'httpStatus', 'deleteImageVersionResponse_httpStatus' - The response's http status code.
newDeleteImageVersionResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteImageVersionResponse
newDeleteImageVersionResponse :: Int -> DeleteImageVersionResponse
newDeleteImageVersionResponse Int
pHttpStatus_ =
  DeleteImageVersionResponse'
    { $sel:httpStatus:DeleteImageVersionResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance Prelude.NFData DeleteImageVersionResponse where
  rnf :: DeleteImageVersionResponse -> ()
rnf DeleteImageVersionResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteImageVersionResponse' :: DeleteImageVersionResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus