{-# 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.EFS.DeleteReplicationConfiguration
-- 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 existing replication configuration. To delete a replication
-- configuration, you must make the request from the Amazon Web Services
-- Region in which the destination file system is located. Deleting a
-- replication configuration ends the replication process. After a
-- replication configuration is deleted, the destination file system is no
-- longer read-only. You can write to the destination file system after its
-- status becomes @Writeable@.
module Amazonka.EFS.DeleteReplicationConfiguration
  ( -- * Creating a Request
    DeleteReplicationConfiguration (..),
    newDeleteReplicationConfiguration,

    -- * Request Lenses
    deleteReplicationConfiguration_sourceFileSystemId,

    -- * Destructuring the Response
    DeleteReplicationConfigurationResponse (..),
    newDeleteReplicationConfigurationResponse,
  )
where

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

-- | /See:/ 'newDeleteReplicationConfiguration' smart constructor.
data DeleteReplicationConfiguration = DeleteReplicationConfiguration'
  { -- | The ID of the source file system in the replication configuration.
    DeleteReplicationConfiguration -> Text
sourceFileSystemId :: Prelude.Text
  }
  deriving (DeleteReplicationConfiguration
-> DeleteReplicationConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteReplicationConfiguration
-> DeleteReplicationConfiguration -> Bool
$c/= :: DeleteReplicationConfiguration
-> DeleteReplicationConfiguration -> Bool
== :: DeleteReplicationConfiguration
-> DeleteReplicationConfiguration -> Bool
$c== :: DeleteReplicationConfiguration
-> DeleteReplicationConfiguration -> Bool
Prelude.Eq, ReadPrec [DeleteReplicationConfiguration]
ReadPrec DeleteReplicationConfiguration
Int -> ReadS DeleteReplicationConfiguration
ReadS [DeleteReplicationConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteReplicationConfiguration]
$creadListPrec :: ReadPrec [DeleteReplicationConfiguration]
readPrec :: ReadPrec DeleteReplicationConfiguration
$creadPrec :: ReadPrec DeleteReplicationConfiguration
readList :: ReadS [DeleteReplicationConfiguration]
$creadList :: ReadS [DeleteReplicationConfiguration]
readsPrec :: Int -> ReadS DeleteReplicationConfiguration
$creadsPrec :: Int -> ReadS DeleteReplicationConfiguration
Prelude.Read, Int -> DeleteReplicationConfiguration -> ShowS
[DeleteReplicationConfiguration] -> ShowS
DeleteReplicationConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteReplicationConfiguration] -> ShowS
$cshowList :: [DeleteReplicationConfiguration] -> ShowS
show :: DeleteReplicationConfiguration -> String
$cshow :: DeleteReplicationConfiguration -> String
showsPrec :: Int -> DeleteReplicationConfiguration -> ShowS
$cshowsPrec :: Int -> DeleteReplicationConfiguration -> ShowS
Prelude.Show, forall x.
Rep DeleteReplicationConfiguration x
-> DeleteReplicationConfiguration
forall x.
DeleteReplicationConfiguration
-> Rep DeleteReplicationConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteReplicationConfiguration x
-> DeleteReplicationConfiguration
$cfrom :: forall x.
DeleteReplicationConfiguration
-> Rep DeleteReplicationConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'DeleteReplicationConfiguration' 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:
--
-- 'sourceFileSystemId', 'deleteReplicationConfiguration_sourceFileSystemId' - The ID of the source file system in the replication configuration.
newDeleteReplicationConfiguration ::
  -- | 'sourceFileSystemId'
  Prelude.Text ->
  DeleteReplicationConfiguration
newDeleteReplicationConfiguration :: Text -> DeleteReplicationConfiguration
newDeleteReplicationConfiguration
  Text
pSourceFileSystemId_ =
    DeleteReplicationConfiguration'
      { $sel:sourceFileSystemId:DeleteReplicationConfiguration' :: Text
sourceFileSystemId =
          Text
pSourceFileSystemId_
      }

-- | The ID of the source file system in the replication configuration.
deleteReplicationConfiguration_sourceFileSystemId :: Lens.Lens' DeleteReplicationConfiguration Prelude.Text
deleteReplicationConfiguration_sourceFileSystemId :: Lens' DeleteReplicationConfiguration Text
deleteReplicationConfiguration_sourceFileSystemId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteReplicationConfiguration' {Text
sourceFileSystemId :: Text
$sel:sourceFileSystemId:DeleteReplicationConfiguration' :: DeleteReplicationConfiguration -> Text
sourceFileSystemId} -> Text
sourceFileSystemId) (\s :: DeleteReplicationConfiguration
s@DeleteReplicationConfiguration' {} Text
a -> DeleteReplicationConfiguration
s {$sel:sourceFileSystemId:DeleteReplicationConfiguration' :: Text
sourceFileSystemId = Text
a} :: DeleteReplicationConfiguration)

instance
  Core.AWSRequest
    DeleteReplicationConfiguration
  where
  type
    AWSResponse DeleteReplicationConfiguration =
      DeleteReplicationConfigurationResponse
  request :: (Service -> Service)
-> DeleteReplicationConfiguration
-> Request DeleteReplicationConfiguration
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteReplicationConfiguration
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DeleteReplicationConfiguration)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull
      DeleteReplicationConfigurationResponse
DeleteReplicationConfigurationResponse'

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

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

instance
  Data.ToHeaders
    DeleteReplicationConfiguration
  where
  toHeaders :: DeleteReplicationConfiguration -> [Header]
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DeleteReplicationConfiguration where
  toPath :: DeleteReplicationConfiguration -> ByteString
toPath DeleteReplicationConfiguration' {Text
sourceFileSystemId :: Text
$sel:sourceFileSystemId:DeleteReplicationConfiguration' :: DeleteReplicationConfiguration -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2015-02-01/file-systems/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
sourceFileSystemId,
        ByteString
"/replication-configuration"
      ]

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

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

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

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