packages feed

amazonka-fsx-2.0: gen/Amazonka/FSx/DisassociateFileSystemAliases.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.FSx.DisassociateFileSystemAliases
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Use this action to disassociate, or remove, one or more Domain Name
-- Service (DNS) aliases from an Amazon FSx for Windows File Server file
-- system. If you attempt to disassociate a DNS alias that is not
-- associated with the file system, Amazon FSx responds with a 400 Bad
-- Request. For more information, see
-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>.
--
-- The system generated response showing the DNS aliases that Amazon FSx is
-- attempting to disassociate from the file system. Use the API operation
-- to monitor the status of the aliases Amazon FSx is disassociating with
-- the file system.
module Amazonka.FSx.DisassociateFileSystemAliases
  ( -- * Creating a Request
    DisassociateFileSystemAliases (..),
    newDisassociateFileSystemAliases,

    -- * Request Lenses
    disassociateFileSystemAliases_clientRequestToken,
    disassociateFileSystemAliases_fileSystemId,
    disassociateFileSystemAliases_aliases,

    -- * Destructuring the Response
    DisassociateFileSystemAliasesResponse (..),
    newDisassociateFileSystemAliasesResponse,

    -- * Response Lenses
    disassociateFileSystemAliasesResponse_aliases,
    disassociateFileSystemAliasesResponse_httpStatus,
  )
where

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

-- | The request object of DNS aliases to disassociate from an Amazon FSx for
-- Windows File Server file system.
--
-- /See:/ 'newDisassociateFileSystemAliases' smart constructor.
data DisassociateFileSystemAliases = DisassociateFileSystemAliases'
  { clientRequestToken :: Prelude.Maybe Prelude.Text,
    -- | Specifies the file system from which to disassociate the DNS aliases.
    fileSystemId :: Prelude.Text,
    -- | An array of one or more DNS alias names to disassociate, or remove, from
    -- the file system.
    aliases :: [Prelude.Text]
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DisassociateFileSystemAliases' 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:
--
-- 'clientRequestToken', 'disassociateFileSystemAliases_clientRequestToken' - Undocumented member.
--
-- 'fileSystemId', 'disassociateFileSystemAliases_fileSystemId' - Specifies the file system from which to disassociate the DNS aliases.
--
-- 'aliases', 'disassociateFileSystemAliases_aliases' - An array of one or more DNS alias names to disassociate, or remove, from
-- the file system.
newDisassociateFileSystemAliases ::
  -- | 'fileSystemId'
  Prelude.Text ->
  DisassociateFileSystemAliases
newDisassociateFileSystemAliases pFileSystemId_ =
  DisassociateFileSystemAliases'
    { clientRequestToken =
        Prelude.Nothing,
      fileSystemId = pFileSystemId_,
      aliases = Prelude.mempty
    }

-- | Undocumented member.
disassociateFileSystemAliases_clientRequestToken :: Lens.Lens' DisassociateFileSystemAliases (Prelude.Maybe Prelude.Text)
disassociateFileSystemAliases_clientRequestToken = Lens.lens (\DisassociateFileSystemAliases' {clientRequestToken} -> clientRequestToken) (\s@DisassociateFileSystemAliases' {} a -> s {clientRequestToken = a} :: DisassociateFileSystemAliases)

-- | Specifies the file system from which to disassociate the DNS aliases.
disassociateFileSystemAliases_fileSystemId :: Lens.Lens' DisassociateFileSystemAliases Prelude.Text
disassociateFileSystemAliases_fileSystemId = Lens.lens (\DisassociateFileSystemAliases' {fileSystemId} -> fileSystemId) (\s@DisassociateFileSystemAliases' {} a -> s {fileSystemId = a} :: DisassociateFileSystemAliases)

-- | An array of one or more DNS alias names to disassociate, or remove, from
-- the file system.
disassociateFileSystemAliases_aliases :: Lens.Lens' DisassociateFileSystemAliases [Prelude.Text]
disassociateFileSystemAliases_aliases = Lens.lens (\DisassociateFileSystemAliases' {aliases} -> aliases) (\s@DisassociateFileSystemAliases' {} a -> s {aliases = a} :: DisassociateFileSystemAliases) Prelude.. Lens.coerced

instance
  Core.AWSRequest
    DisassociateFileSystemAliases
  where
  type
    AWSResponse DisassociateFileSystemAliases =
      DisassociateFileSystemAliasesResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          DisassociateFileSystemAliasesResponse'
            Prelude.<$> (x Data..?> "Aliases" Core..!@ Prelude.mempty)
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    DisassociateFileSystemAliases
  where
  hashWithSalt _salt DisassociateFileSystemAliases' {..} =
    _salt
      `Prelude.hashWithSalt` clientRequestToken
      `Prelude.hashWithSalt` fileSystemId
      `Prelude.hashWithSalt` aliases

instance Prelude.NFData DisassociateFileSystemAliases where
  rnf DisassociateFileSystemAliases' {..} =
    Prelude.rnf clientRequestToken
      `Prelude.seq` Prelude.rnf fileSystemId
      `Prelude.seq` Prelude.rnf aliases

instance Data.ToHeaders DisassociateFileSystemAliases where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "AWSSimbaAPIService_v20180301.DisassociateFileSystemAliases" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DisassociateFileSystemAliases where
  toJSON DisassociateFileSystemAliases' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("ClientRequestToken" Data..=)
              Prelude.<$> clientRequestToken,
            Prelude.Just ("FileSystemId" Data..= fileSystemId),
            Prelude.Just ("Aliases" Data..= aliases)
          ]
      )

instance Data.ToPath DisassociateFileSystemAliases where
  toPath = Prelude.const "/"

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

-- | The system generated response showing the DNS aliases that Amazon FSx is
-- attempting to disassociate from the file system. Use the API operation
-- to monitor the status of the aliases Amazon FSx is removing from the
-- file system.
--
-- /See:/ 'newDisassociateFileSystemAliasesResponse' smart constructor.
data DisassociateFileSystemAliasesResponse = DisassociateFileSystemAliasesResponse'
  { -- | An array of one or more DNS aliases that Amazon FSx is attempting to
    -- disassociate from the file system.
    aliases :: Prelude.Maybe [Alias],
    -- | The response's http status code.
    httpStatus :: Prelude.Int
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DisassociateFileSystemAliasesResponse' 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:
--
-- 'aliases', 'disassociateFileSystemAliasesResponse_aliases' - An array of one or more DNS aliases that Amazon FSx is attempting to
-- disassociate from the file system.
--
-- 'httpStatus', 'disassociateFileSystemAliasesResponse_httpStatus' - The response's http status code.
newDisassociateFileSystemAliasesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DisassociateFileSystemAliasesResponse
newDisassociateFileSystemAliasesResponse pHttpStatus_ =
  DisassociateFileSystemAliasesResponse'
    { aliases =
        Prelude.Nothing,
      httpStatus = pHttpStatus_
    }

-- | An array of one or more DNS aliases that Amazon FSx is attempting to
-- disassociate from the file system.
disassociateFileSystemAliasesResponse_aliases :: Lens.Lens' DisassociateFileSystemAliasesResponse (Prelude.Maybe [Alias])
disassociateFileSystemAliasesResponse_aliases = Lens.lens (\DisassociateFileSystemAliasesResponse' {aliases} -> aliases) (\s@DisassociateFileSystemAliasesResponse' {} a -> s {aliases = a} :: DisassociateFileSystemAliasesResponse) Prelude.. Lens.mapping Lens.coerced

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

instance
  Prelude.NFData
    DisassociateFileSystemAliasesResponse
  where
  rnf DisassociateFileSystemAliasesResponse' {..} =
    Prelude.rnf aliases
      `Prelude.seq` Prelude.rnf httpStatus