packages feed

amazonka-eks-2.0: gen/Amazonka/EKS/DeregisterCluster.hs

{-# 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.EKS.DeregisterCluster
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deregisters a connected cluster to remove it from the Amazon EKS control
-- plane.
module Amazonka.EKS.DeregisterCluster
  ( -- * Creating a Request
    DeregisterCluster (..),
    newDeregisterCluster,

    -- * Request Lenses
    deregisterCluster_name,

    -- * Destructuring the Response
    DeregisterClusterResponse (..),
    newDeregisterClusterResponse,

    -- * Response Lenses
    deregisterClusterResponse_cluster,
    deregisterClusterResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EKS.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDeregisterCluster' smart constructor.
data DeregisterCluster = DeregisterCluster'
  { -- | The name of the connected cluster to deregister.
    name :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeregisterCluster' 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:
--
-- 'name', 'deregisterCluster_name' - The name of the connected cluster to deregister.
newDeregisterCluster ::
  -- | 'name'
  Prelude.Text ->
  DeregisterCluster
newDeregisterCluster pName_ =
  DeregisterCluster' {name = pName_}

-- | The name of the connected cluster to deregister.
deregisterCluster_name :: Lens.Lens' DeregisterCluster Prelude.Text
deregisterCluster_name = Lens.lens (\DeregisterCluster' {name} -> name) (\s@DeregisterCluster' {} a -> s {name = a} :: DeregisterCluster)

instance Core.AWSRequest DeregisterCluster where
  type
    AWSResponse DeregisterCluster =
      DeregisterClusterResponse
  request overrides =
    Request.delete (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DeregisterClusterResponse'
            Prelude.<$> (x Data..?> "cluster")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance Prelude.Hashable DeregisterCluster where
  hashWithSalt _salt DeregisterCluster' {..} =
    _salt `Prelude.hashWithSalt` name

instance Prelude.NFData DeregisterCluster where
  rnf DeregisterCluster' {..} = Prelude.rnf name

instance Data.ToHeaders DeregisterCluster where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeregisterCluster where
  toPath DeregisterCluster' {..} =
    Prelude.mconcat
      ["/cluster-registrations/", Data.toBS name]

instance Data.ToQuery DeregisterCluster where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newDeregisterClusterResponse' smart constructor.
data DeregisterClusterResponse = DeregisterClusterResponse'
  { cluster :: Prelude.Maybe Cluster,
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DeregisterClusterResponse' 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:
--
-- 'cluster', 'deregisterClusterResponse_cluster' - Undocumented member.
--
-- 'httpStatus', 'deregisterClusterResponse_httpStatus' - The response's http status code.
newDeregisterClusterResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeregisterClusterResponse
newDeregisterClusterResponse pHttpStatus_ =
  DeregisterClusterResponse'
    { cluster =
        Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | Undocumented member.
deregisterClusterResponse_cluster :: Lens.Lens' DeregisterClusterResponse (Prelude.Maybe Cluster)
deregisterClusterResponse_cluster = Lens.lens (\DeregisterClusterResponse' {cluster} -> cluster) (\s@DeregisterClusterResponse' {} a -> s {cluster = a} :: DeregisterClusterResponse)

-- | The response's http status code.
deregisterClusterResponse_httpStatus :: Lens.Lens' DeregisterClusterResponse Prelude.Int
deregisterClusterResponse_httpStatus = Lens.lens (\DeregisterClusterResponse' {httpStatus} -> httpStatus) (\s@DeregisterClusterResponse' {} a -> s {httpStatus = a} :: DeregisterClusterResponse)

instance Prelude.NFData DeregisterClusterResponse where
  rnf DeregisterClusterResponse' {..} =
    Prelude.rnf cluster
      `Prelude.seq` Prelude.rnf httpStatus