{-# 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.DeleteEdgeDeploymentPlan
-- 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 an edge deployment plan if (and only if) all the stages in the
-- plan are inactive or there are no stages in the plan.
module Amazonka.SageMaker.DeleteEdgeDeploymentPlan
  ( -- * Creating a Request
    DeleteEdgeDeploymentPlan (..),
    newDeleteEdgeDeploymentPlan,

    -- * Request Lenses
    deleteEdgeDeploymentPlan_edgeDeploymentPlanName,

    -- * Destructuring the Response
    DeleteEdgeDeploymentPlanResponse (..),
    newDeleteEdgeDeploymentPlanResponse,
  )
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:/ 'newDeleteEdgeDeploymentPlan' smart constructor.
data DeleteEdgeDeploymentPlan = DeleteEdgeDeploymentPlan'
  { -- | The name of the edge deployment plan to delete.
    DeleteEdgeDeploymentPlan -> Text
edgeDeploymentPlanName :: Prelude.Text
  }
  deriving (DeleteEdgeDeploymentPlan -> DeleteEdgeDeploymentPlan -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteEdgeDeploymentPlan -> DeleteEdgeDeploymentPlan -> Bool
$c/= :: DeleteEdgeDeploymentPlan -> DeleteEdgeDeploymentPlan -> Bool
== :: DeleteEdgeDeploymentPlan -> DeleteEdgeDeploymentPlan -> Bool
$c== :: DeleteEdgeDeploymentPlan -> DeleteEdgeDeploymentPlan -> Bool
Prelude.Eq, ReadPrec [DeleteEdgeDeploymentPlan]
ReadPrec DeleteEdgeDeploymentPlan
Int -> ReadS DeleteEdgeDeploymentPlan
ReadS [DeleteEdgeDeploymentPlan]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteEdgeDeploymentPlan]
$creadListPrec :: ReadPrec [DeleteEdgeDeploymentPlan]
readPrec :: ReadPrec DeleteEdgeDeploymentPlan
$creadPrec :: ReadPrec DeleteEdgeDeploymentPlan
readList :: ReadS [DeleteEdgeDeploymentPlan]
$creadList :: ReadS [DeleteEdgeDeploymentPlan]
readsPrec :: Int -> ReadS DeleteEdgeDeploymentPlan
$creadsPrec :: Int -> ReadS DeleteEdgeDeploymentPlan
Prelude.Read, Int -> DeleteEdgeDeploymentPlan -> ShowS
[DeleteEdgeDeploymentPlan] -> ShowS
DeleteEdgeDeploymentPlan -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteEdgeDeploymentPlan] -> ShowS
$cshowList :: [DeleteEdgeDeploymentPlan] -> ShowS
show :: DeleteEdgeDeploymentPlan -> String
$cshow :: DeleteEdgeDeploymentPlan -> String
showsPrec :: Int -> DeleteEdgeDeploymentPlan -> ShowS
$cshowsPrec :: Int -> DeleteEdgeDeploymentPlan -> ShowS
Prelude.Show, forall x.
Rep DeleteEdgeDeploymentPlan x -> DeleteEdgeDeploymentPlan
forall x.
DeleteEdgeDeploymentPlan -> Rep DeleteEdgeDeploymentPlan x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteEdgeDeploymentPlan x -> DeleteEdgeDeploymentPlan
$cfrom :: forall x.
DeleteEdgeDeploymentPlan -> Rep DeleteEdgeDeploymentPlan x
Prelude.Generic)

-- |
-- Create a value of 'DeleteEdgeDeploymentPlan' 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:
--
-- 'edgeDeploymentPlanName', 'deleteEdgeDeploymentPlan_edgeDeploymentPlanName' - The name of the edge deployment plan to delete.
newDeleteEdgeDeploymentPlan ::
  -- | 'edgeDeploymentPlanName'
  Prelude.Text ->
  DeleteEdgeDeploymentPlan
newDeleteEdgeDeploymentPlan :: Text -> DeleteEdgeDeploymentPlan
newDeleteEdgeDeploymentPlan Text
pEdgeDeploymentPlanName_ =
  DeleteEdgeDeploymentPlan'
    { $sel:edgeDeploymentPlanName:DeleteEdgeDeploymentPlan' :: Text
edgeDeploymentPlanName =
        Text
pEdgeDeploymentPlanName_
    }

-- | The name of the edge deployment plan to delete.
deleteEdgeDeploymentPlan_edgeDeploymentPlanName :: Lens.Lens' DeleteEdgeDeploymentPlan Prelude.Text
deleteEdgeDeploymentPlan_edgeDeploymentPlanName :: Lens' DeleteEdgeDeploymentPlan Text
deleteEdgeDeploymentPlan_edgeDeploymentPlanName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteEdgeDeploymentPlan' {Text
edgeDeploymentPlanName :: Text
$sel:edgeDeploymentPlanName:DeleteEdgeDeploymentPlan' :: DeleteEdgeDeploymentPlan -> Text
edgeDeploymentPlanName} -> Text
edgeDeploymentPlanName) (\s :: DeleteEdgeDeploymentPlan
s@DeleteEdgeDeploymentPlan' {} Text
a -> DeleteEdgeDeploymentPlan
s {$sel:edgeDeploymentPlanName:DeleteEdgeDeploymentPlan' :: Text
edgeDeploymentPlanName = Text
a} :: DeleteEdgeDeploymentPlan)

instance Core.AWSRequest DeleteEdgeDeploymentPlan where
  type
    AWSResponse DeleteEdgeDeploymentPlan =
      DeleteEdgeDeploymentPlanResponse
  request :: (Service -> Service)
-> DeleteEdgeDeploymentPlan -> Request DeleteEdgeDeploymentPlan
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 DeleteEdgeDeploymentPlan
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteEdgeDeploymentPlan)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull
      DeleteEdgeDeploymentPlanResponse
DeleteEdgeDeploymentPlanResponse'

instance Prelude.Hashable DeleteEdgeDeploymentPlan where
  hashWithSalt :: Int -> DeleteEdgeDeploymentPlan -> Int
hashWithSalt Int
_salt DeleteEdgeDeploymentPlan' {Text
edgeDeploymentPlanName :: Text
$sel:edgeDeploymentPlanName:DeleteEdgeDeploymentPlan' :: DeleteEdgeDeploymentPlan -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
edgeDeploymentPlanName

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

instance Data.ToHeaders DeleteEdgeDeploymentPlan where
  toHeaders :: DeleteEdgeDeploymentPlan -> [Header]
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 -> [Header]
Data.=# ( ByteString
"SageMaker.DeleteEdgeDeploymentPlan" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

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

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

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

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

-- |
-- Create a value of 'DeleteEdgeDeploymentPlanResponse' 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.
newDeleteEdgeDeploymentPlanResponse ::
  DeleteEdgeDeploymentPlanResponse
newDeleteEdgeDeploymentPlanResponse :: DeleteEdgeDeploymentPlanResponse
newDeleteEdgeDeploymentPlanResponse =
  DeleteEdgeDeploymentPlanResponse
DeleteEdgeDeploymentPlanResponse'

instance
  Prelude.NFData
    DeleteEdgeDeploymentPlanResponse
  where
  rnf :: DeleteEdgeDeploymentPlanResponse -> ()
rnf DeleteEdgeDeploymentPlanResponse
_ = ()