{-# 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.DeleteFileSystem
-- 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 file system. After deletion, the file system no longer exists,
-- and its data is gone. Any existing automatic backups and snapshots are
-- also deleted.
--
-- To delete an Amazon FSx for NetApp ONTAP file system, first delete all
-- the volumes and storage virtual machines (SVMs) on the file system. Then
-- provide a @FileSystemId@ value to the @DeleFileSystem@ operation.
--
-- By default, when you delete an Amazon FSx for Windows File Server file
-- system, a final backup is created upon deletion. This final backup
-- isn\'t subject to the file system\'s retention policy, and must be
-- manually deleted.
--
-- The @DeleteFileSystem@ operation returns while the file system has the
-- @DELETING@ status. You can check the file system deletion status by
-- calling the
-- <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DescribeFileSystems.html DescribeFileSystems>
-- operation, which returns a list of file systems in your account. If you
-- pass the file system ID for a deleted file system, the
-- @DescribeFileSystems@ operation returns a @FileSystemNotFound@ error.
--
-- If a data repository task is in a @PENDING@ or @EXECUTING@ state,
-- deleting an Amazon FSx for Lustre file system will fail with an HTTP
-- status code 400 (Bad Request).
--
-- The data in a deleted file system is also deleted and can\'t be
-- recovered by any means.
module Amazonka.FSx.DeleteFileSystem
  ( -- * Creating a Request
    DeleteFileSystem (..),
    newDeleteFileSystem,

    -- * Request Lenses
    deleteFileSystem_clientRequestToken,
    deleteFileSystem_lustreConfiguration,
    deleteFileSystem_openZFSConfiguration,
    deleteFileSystem_windowsConfiguration,
    deleteFileSystem_fileSystemId,

    -- * Destructuring the Response
    DeleteFileSystemResponse (..),
    newDeleteFileSystemResponse,

    -- * Response Lenses
    deleteFileSystemResponse_fileSystemId,
    deleteFileSystemResponse_lifecycle,
    deleteFileSystemResponse_lustreResponse,
    deleteFileSystemResponse_openZFSResponse,
    deleteFileSystemResponse_windowsResponse,
    deleteFileSystemResponse_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 for @DeleteFileSystem@ operation.
--
-- /See:/ 'newDeleteFileSystem' smart constructor.
data DeleteFileSystem = DeleteFileSystem'
  { -- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
    -- idempotent deletion. This token is automatically filled on your behalf
    -- when using the Command Line Interface (CLI) or an Amazon Web Services
    -- SDK.
    DeleteFileSystem -> Maybe Text
clientRequestToken :: Prelude.Maybe Prelude.Text,
    DeleteFileSystem -> Maybe DeleteFileSystemLustreConfiguration
lustreConfiguration :: Prelude.Maybe DeleteFileSystemLustreConfiguration,
    -- | The configuration object for the OpenZFS file system used in the
    -- @DeleteFileSystem@ operation.
    DeleteFileSystem -> Maybe DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration :: Prelude.Maybe DeleteFileSystemOpenZFSConfiguration,
    DeleteFileSystem -> Maybe DeleteFileSystemWindowsConfiguration
windowsConfiguration :: Prelude.Maybe DeleteFileSystemWindowsConfiguration,
    -- | The ID of the file system that you want to delete.
    DeleteFileSystem -> Text
fileSystemId :: Prelude.Text
  }
  deriving (DeleteFileSystem -> DeleteFileSystem -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteFileSystem -> DeleteFileSystem -> Bool
$c/= :: DeleteFileSystem -> DeleteFileSystem -> Bool
== :: DeleteFileSystem -> DeleteFileSystem -> Bool
$c== :: DeleteFileSystem -> DeleteFileSystem -> Bool
Prelude.Eq, ReadPrec [DeleteFileSystem]
ReadPrec DeleteFileSystem
Int -> ReadS DeleteFileSystem
ReadS [DeleteFileSystem]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteFileSystem]
$creadListPrec :: ReadPrec [DeleteFileSystem]
readPrec :: ReadPrec DeleteFileSystem
$creadPrec :: ReadPrec DeleteFileSystem
readList :: ReadS [DeleteFileSystem]
$creadList :: ReadS [DeleteFileSystem]
readsPrec :: Int -> ReadS DeleteFileSystem
$creadsPrec :: Int -> ReadS DeleteFileSystem
Prelude.Read, Int -> DeleteFileSystem -> ShowS
[DeleteFileSystem] -> ShowS
DeleteFileSystem -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteFileSystem] -> ShowS
$cshowList :: [DeleteFileSystem] -> ShowS
show :: DeleteFileSystem -> String
$cshow :: DeleteFileSystem -> String
showsPrec :: Int -> DeleteFileSystem -> ShowS
$cshowsPrec :: Int -> DeleteFileSystem -> ShowS
Prelude.Show, forall x. Rep DeleteFileSystem x -> DeleteFileSystem
forall x. DeleteFileSystem -> Rep DeleteFileSystem x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteFileSystem x -> DeleteFileSystem
$cfrom :: forall x. DeleteFileSystem -> Rep DeleteFileSystem x
Prelude.Generic)

-- |
-- Create a value of 'DeleteFileSystem' 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', 'deleteFileSystem_clientRequestToken' - A string of up to 64 ASCII characters that Amazon FSx uses to ensure
-- idempotent deletion. This token is automatically filled on your behalf
-- when using the Command Line Interface (CLI) or an Amazon Web Services
-- SDK.
--
-- 'lustreConfiguration', 'deleteFileSystem_lustreConfiguration' - Undocumented member.
--
-- 'openZFSConfiguration', 'deleteFileSystem_openZFSConfiguration' - The configuration object for the OpenZFS file system used in the
-- @DeleteFileSystem@ operation.
--
-- 'windowsConfiguration', 'deleteFileSystem_windowsConfiguration' - Undocumented member.
--
-- 'fileSystemId', 'deleteFileSystem_fileSystemId' - The ID of the file system that you want to delete.
newDeleteFileSystem ::
  -- | 'fileSystemId'
  Prelude.Text ->
  DeleteFileSystem
newDeleteFileSystem :: Text -> DeleteFileSystem
newDeleteFileSystem Text
pFileSystemId_ =
  DeleteFileSystem'
    { $sel:clientRequestToken:DeleteFileSystem' :: Maybe Text
clientRequestToken =
        forall a. Maybe a
Prelude.Nothing,
      $sel:lustreConfiguration:DeleteFileSystem' :: Maybe DeleteFileSystemLustreConfiguration
lustreConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:openZFSConfiguration:DeleteFileSystem' :: Maybe DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:windowsConfiguration:DeleteFileSystem' :: Maybe DeleteFileSystemWindowsConfiguration
windowsConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:fileSystemId:DeleteFileSystem' :: Text
fileSystemId = Text
pFileSystemId_
    }

-- | A string of up to 64 ASCII characters that Amazon FSx uses to ensure
-- idempotent deletion. This token is automatically filled on your behalf
-- when using the Command Line Interface (CLI) or an Amazon Web Services
-- SDK.
deleteFileSystem_clientRequestToken :: Lens.Lens' DeleteFileSystem (Prelude.Maybe Prelude.Text)
deleteFileSystem_clientRequestToken :: Lens' DeleteFileSystem (Maybe Text)
deleteFileSystem_clientRequestToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystem' {Maybe Text
clientRequestToken :: Maybe Text
$sel:clientRequestToken:DeleteFileSystem' :: DeleteFileSystem -> Maybe Text
clientRequestToken} -> Maybe Text
clientRequestToken) (\s :: DeleteFileSystem
s@DeleteFileSystem' {} Maybe Text
a -> DeleteFileSystem
s {$sel:clientRequestToken:DeleteFileSystem' :: Maybe Text
clientRequestToken = Maybe Text
a} :: DeleteFileSystem)

-- | Undocumented member.
deleteFileSystem_lustreConfiguration :: Lens.Lens' DeleteFileSystem (Prelude.Maybe DeleteFileSystemLustreConfiguration)
deleteFileSystem_lustreConfiguration :: Lens' DeleteFileSystem (Maybe DeleteFileSystemLustreConfiguration)
deleteFileSystem_lustreConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystem' {Maybe DeleteFileSystemLustreConfiguration
lustreConfiguration :: Maybe DeleteFileSystemLustreConfiguration
$sel:lustreConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemLustreConfiguration
lustreConfiguration} -> Maybe DeleteFileSystemLustreConfiguration
lustreConfiguration) (\s :: DeleteFileSystem
s@DeleteFileSystem' {} Maybe DeleteFileSystemLustreConfiguration
a -> DeleteFileSystem
s {$sel:lustreConfiguration:DeleteFileSystem' :: Maybe DeleteFileSystemLustreConfiguration
lustreConfiguration = Maybe DeleteFileSystemLustreConfiguration
a} :: DeleteFileSystem)

-- | The configuration object for the OpenZFS file system used in the
-- @DeleteFileSystem@ operation.
deleteFileSystem_openZFSConfiguration :: Lens.Lens' DeleteFileSystem (Prelude.Maybe DeleteFileSystemOpenZFSConfiguration)
deleteFileSystem_openZFSConfiguration :: Lens' DeleteFileSystem (Maybe DeleteFileSystemOpenZFSConfiguration)
deleteFileSystem_openZFSConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystem' {Maybe DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration :: Maybe DeleteFileSystemOpenZFSConfiguration
$sel:openZFSConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration} -> Maybe DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration) (\s :: DeleteFileSystem
s@DeleteFileSystem' {} Maybe DeleteFileSystemOpenZFSConfiguration
a -> DeleteFileSystem
s {$sel:openZFSConfiguration:DeleteFileSystem' :: Maybe DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration = Maybe DeleteFileSystemOpenZFSConfiguration
a} :: DeleteFileSystem)

-- | Undocumented member.
deleteFileSystem_windowsConfiguration :: Lens.Lens' DeleteFileSystem (Prelude.Maybe DeleteFileSystemWindowsConfiguration)
deleteFileSystem_windowsConfiguration :: Lens' DeleteFileSystem (Maybe DeleteFileSystemWindowsConfiguration)
deleteFileSystem_windowsConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystem' {Maybe DeleteFileSystemWindowsConfiguration
windowsConfiguration :: Maybe DeleteFileSystemWindowsConfiguration
$sel:windowsConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemWindowsConfiguration
windowsConfiguration} -> Maybe DeleteFileSystemWindowsConfiguration
windowsConfiguration) (\s :: DeleteFileSystem
s@DeleteFileSystem' {} Maybe DeleteFileSystemWindowsConfiguration
a -> DeleteFileSystem
s {$sel:windowsConfiguration:DeleteFileSystem' :: Maybe DeleteFileSystemWindowsConfiguration
windowsConfiguration = Maybe DeleteFileSystemWindowsConfiguration
a} :: DeleteFileSystem)

-- | The ID of the file system that you want to delete.
deleteFileSystem_fileSystemId :: Lens.Lens' DeleteFileSystem Prelude.Text
deleteFileSystem_fileSystemId :: Lens' DeleteFileSystem Text
deleteFileSystem_fileSystemId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystem' {Text
fileSystemId :: Text
$sel:fileSystemId:DeleteFileSystem' :: DeleteFileSystem -> Text
fileSystemId} -> Text
fileSystemId) (\s :: DeleteFileSystem
s@DeleteFileSystem' {} Text
a -> DeleteFileSystem
s {$sel:fileSystemId:DeleteFileSystem' :: Text
fileSystemId = Text
a} :: DeleteFileSystem)

instance Core.AWSRequest DeleteFileSystem where
  type
    AWSResponse DeleteFileSystem =
      DeleteFileSystemResponse
  request :: (Service -> Service)
-> DeleteFileSystem -> Request DeleteFileSystem
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 DeleteFileSystem
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteFileSystem)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe FileSystemLifecycle
-> Maybe DeleteFileSystemLustreResponse
-> Maybe DeleteFileSystemOpenZFSResponse
-> Maybe DeleteFileSystemWindowsResponse
-> Int
-> DeleteFileSystemResponse
DeleteFileSystemResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"FileSystemId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Lifecycle")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"LustreResponse")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"OpenZFSResponse")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"WindowsResponse")
            forall (f :: * -> *) a b. Applicative f => 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 DeleteFileSystem where
  hashWithSalt :: Int -> DeleteFileSystem -> Int
hashWithSalt Int
_salt DeleteFileSystem' {Maybe Text
Maybe DeleteFileSystemWindowsConfiguration
Maybe DeleteFileSystemOpenZFSConfiguration
Maybe DeleteFileSystemLustreConfiguration
Text
fileSystemId :: Text
windowsConfiguration :: Maybe DeleteFileSystemWindowsConfiguration
openZFSConfiguration :: Maybe DeleteFileSystemOpenZFSConfiguration
lustreConfiguration :: Maybe DeleteFileSystemLustreConfiguration
clientRequestToken :: Maybe Text
$sel:fileSystemId:DeleteFileSystem' :: DeleteFileSystem -> Text
$sel:windowsConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemWindowsConfiguration
$sel:openZFSConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemOpenZFSConfiguration
$sel:lustreConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemLustreConfiguration
$sel:clientRequestToken:DeleteFileSystem' :: DeleteFileSystem -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
clientRequestToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeleteFileSystemLustreConfiguration
lustreConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DeleteFileSystemWindowsConfiguration
windowsConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
fileSystemId

instance Prelude.NFData DeleteFileSystem where
  rnf :: DeleteFileSystem -> ()
rnf DeleteFileSystem' {Maybe Text
Maybe DeleteFileSystemWindowsConfiguration
Maybe DeleteFileSystemOpenZFSConfiguration
Maybe DeleteFileSystemLustreConfiguration
Text
fileSystemId :: Text
windowsConfiguration :: Maybe DeleteFileSystemWindowsConfiguration
openZFSConfiguration :: Maybe DeleteFileSystemOpenZFSConfiguration
lustreConfiguration :: Maybe DeleteFileSystemLustreConfiguration
clientRequestToken :: Maybe Text
$sel:fileSystemId:DeleteFileSystem' :: DeleteFileSystem -> Text
$sel:windowsConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemWindowsConfiguration
$sel:openZFSConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemOpenZFSConfiguration
$sel:lustreConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemLustreConfiguration
$sel:clientRequestToken:DeleteFileSystem' :: DeleteFileSystem -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
clientRequestToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeleteFileSystemLustreConfiguration
lustreConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeleteFileSystemWindowsConfiguration
windowsConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
fileSystemId

instance Data.ToHeaders DeleteFileSystem where
  toHeaders :: DeleteFileSystem -> 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
"AWSSimbaAPIService_v20180301.DeleteFileSystem" ::
                          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 DeleteFileSystem where
  toJSON :: DeleteFileSystem -> Value
toJSON DeleteFileSystem' {Maybe Text
Maybe DeleteFileSystemWindowsConfiguration
Maybe DeleteFileSystemOpenZFSConfiguration
Maybe DeleteFileSystemLustreConfiguration
Text
fileSystemId :: Text
windowsConfiguration :: Maybe DeleteFileSystemWindowsConfiguration
openZFSConfiguration :: Maybe DeleteFileSystemOpenZFSConfiguration
lustreConfiguration :: Maybe DeleteFileSystemLustreConfiguration
clientRequestToken :: Maybe Text
$sel:fileSystemId:DeleteFileSystem' :: DeleteFileSystem -> Text
$sel:windowsConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemWindowsConfiguration
$sel:openZFSConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemOpenZFSConfiguration
$sel:lustreConfiguration:DeleteFileSystem' :: DeleteFileSystem -> Maybe DeleteFileSystemLustreConfiguration
$sel:clientRequestToken:DeleteFileSystem' :: DeleteFileSystem -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ClientRequestToken" 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
clientRequestToken,
            (Key
"LustreConfiguration" 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 DeleteFileSystemLustreConfiguration
lustreConfiguration,
            (Key
"OpenZFSConfiguration" 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 DeleteFileSystemOpenZFSConfiguration
openZFSConfiguration,
            (Key
"WindowsConfiguration" 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 DeleteFileSystemWindowsConfiguration
windowsConfiguration,
            forall a. a -> Maybe a
Prelude.Just (Key
"FileSystemId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
fileSystemId)
          ]
      )

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

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

-- | The response object for the @DeleteFileSystem@ operation.
--
-- /See:/ 'newDeleteFileSystemResponse' smart constructor.
data DeleteFileSystemResponse = DeleteFileSystemResponse'
  { -- | The ID of the file system that\'s being deleted.
    DeleteFileSystemResponse -> Maybe Text
fileSystemId :: Prelude.Maybe Prelude.Text,
    -- | The file system lifecycle for the deletion request. If the
    -- @DeleteFileSystem@ operation is successful, this status is @DELETING@.
    DeleteFileSystemResponse -> Maybe FileSystemLifecycle
lifecycle :: Prelude.Maybe FileSystemLifecycle,
    DeleteFileSystemResponse -> Maybe DeleteFileSystemLustreResponse
lustreResponse :: Prelude.Maybe DeleteFileSystemLustreResponse,
    -- | The response object for the OpenZFS file system that\'s being deleted in
    -- the @DeleteFileSystem@ operation.
    DeleteFileSystemResponse -> Maybe DeleteFileSystemOpenZFSResponse
openZFSResponse :: Prelude.Maybe DeleteFileSystemOpenZFSResponse,
    DeleteFileSystemResponse -> Maybe DeleteFileSystemWindowsResponse
windowsResponse :: Prelude.Maybe DeleteFileSystemWindowsResponse,
    -- | The response's http status code.
    DeleteFileSystemResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteFileSystemResponse -> DeleteFileSystemResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteFileSystemResponse -> DeleteFileSystemResponse -> Bool
$c/= :: DeleteFileSystemResponse -> DeleteFileSystemResponse -> Bool
== :: DeleteFileSystemResponse -> DeleteFileSystemResponse -> Bool
$c== :: DeleteFileSystemResponse -> DeleteFileSystemResponse -> Bool
Prelude.Eq, ReadPrec [DeleteFileSystemResponse]
ReadPrec DeleteFileSystemResponse
Int -> ReadS DeleteFileSystemResponse
ReadS [DeleteFileSystemResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteFileSystemResponse]
$creadListPrec :: ReadPrec [DeleteFileSystemResponse]
readPrec :: ReadPrec DeleteFileSystemResponse
$creadPrec :: ReadPrec DeleteFileSystemResponse
readList :: ReadS [DeleteFileSystemResponse]
$creadList :: ReadS [DeleteFileSystemResponse]
readsPrec :: Int -> ReadS DeleteFileSystemResponse
$creadsPrec :: Int -> ReadS DeleteFileSystemResponse
Prelude.Read, Int -> DeleteFileSystemResponse -> ShowS
[DeleteFileSystemResponse] -> ShowS
DeleteFileSystemResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteFileSystemResponse] -> ShowS
$cshowList :: [DeleteFileSystemResponse] -> ShowS
show :: DeleteFileSystemResponse -> String
$cshow :: DeleteFileSystemResponse -> String
showsPrec :: Int -> DeleteFileSystemResponse -> ShowS
$cshowsPrec :: Int -> DeleteFileSystemResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteFileSystemResponse x -> DeleteFileSystemResponse
forall x.
DeleteFileSystemResponse -> Rep DeleteFileSystemResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteFileSystemResponse x -> DeleteFileSystemResponse
$cfrom :: forall x.
DeleteFileSystemResponse -> Rep DeleteFileSystemResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteFileSystemResponse' 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:
--
-- 'fileSystemId', 'deleteFileSystemResponse_fileSystemId' - The ID of the file system that\'s being deleted.
--
-- 'lifecycle', 'deleteFileSystemResponse_lifecycle' - The file system lifecycle for the deletion request. If the
-- @DeleteFileSystem@ operation is successful, this status is @DELETING@.
--
-- 'lustreResponse', 'deleteFileSystemResponse_lustreResponse' - Undocumented member.
--
-- 'openZFSResponse', 'deleteFileSystemResponse_openZFSResponse' - The response object for the OpenZFS file system that\'s being deleted in
-- the @DeleteFileSystem@ operation.
--
-- 'windowsResponse', 'deleteFileSystemResponse_windowsResponse' - Undocumented member.
--
-- 'httpStatus', 'deleteFileSystemResponse_httpStatus' - The response's http status code.
newDeleteFileSystemResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteFileSystemResponse
newDeleteFileSystemResponse :: Int -> DeleteFileSystemResponse
newDeleteFileSystemResponse Int
pHttpStatus_ =
  DeleteFileSystemResponse'
    { $sel:fileSystemId:DeleteFileSystemResponse' :: Maybe Text
fileSystemId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:lifecycle:DeleteFileSystemResponse' :: Maybe FileSystemLifecycle
lifecycle = forall a. Maybe a
Prelude.Nothing,
      $sel:lustreResponse:DeleteFileSystemResponse' :: Maybe DeleteFileSystemLustreResponse
lustreResponse = forall a. Maybe a
Prelude.Nothing,
      $sel:openZFSResponse:DeleteFileSystemResponse' :: Maybe DeleteFileSystemOpenZFSResponse
openZFSResponse = forall a. Maybe a
Prelude.Nothing,
      $sel:windowsResponse:DeleteFileSystemResponse' :: Maybe DeleteFileSystemWindowsResponse
windowsResponse = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteFileSystemResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ID of the file system that\'s being deleted.
deleteFileSystemResponse_fileSystemId :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe Prelude.Text)
deleteFileSystemResponse_fileSystemId :: Lens' DeleteFileSystemResponse (Maybe Text)
deleteFileSystemResponse_fileSystemId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystemResponse' {Maybe Text
fileSystemId :: Maybe Text
$sel:fileSystemId:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe Text
fileSystemId} -> Maybe Text
fileSystemId) (\s :: DeleteFileSystemResponse
s@DeleteFileSystemResponse' {} Maybe Text
a -> DeleteFileSystemResponse
s {$sel:fileSystemId:DeleteFileSystemResponse' :: Maybe Text
fileSystemId = Maybe Text
a} :: DeleteFileSystemResponse)

-- | The file system lifecycle for the deletion request. If the
-- @DeleteFileSystem@ operation is successful, this status is @DELETING@.
deleteFileSystemResponse_lifecycle :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe FileSystemLifecycle)
deleteFileSystemResponse_lifecycle :: Lens' DeleteFileSystemResponse (Maybe FileSystemLifecycle)
deleteFileSystemResponse_lifecycle = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystemResponse' {Maybe FileSystemLifecycle
lifecycle :: Maybe FileSystemLifecycle
$sel:lifecycle:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe FileSystemLifecycle
lifecycle} -> Maybe FileSystemLifecycle
lifecycle) (\s :: DeleteFileSystemResponse
s@DeleteFileSystemResponse' {} Maybe FileSystemLifecycle
a -> DeleteFileSystemResponse
s {$sel:lifecycle:DeleteFileSystemResponse' :: Maybe FileSystemLifecycle
lifecycle = Maybe FileSystemLifecycle
a} :: DeleteFileSystemResponse)

-- | Undocumented member.
deleteFileSystemResponse_lustreResponse :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe DeleteFileSystemLustreResponse)
deleteFileSystemResponse_lustreResponse :: Lens'
  DeleteFileSystemResponse (Maybe DeleteFileSystemLustreResponse)
deleteFileSystemResponse_lustreResponse = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystemResponse' {Maybe DeleteFileSystemLustreResponse
lustreResponse :: Maybe DeleteFileSystemLustreResponse
$sel:lustreResponse:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe DeleteFileSystemLustreResponse
lustreResponse} -> Maybe DeleteFileSystemLustreResponse
lustreResponse) (\s :: DeleteFileSystemResponse
s@DeleteFileSystemResponse' {} Maybe DeleteFileSystemLustreResponse
a -> DeleteFileSystemResponse
s {$sel:lustreResponse:DeleteFileSystemResponse' :: Maybe DeleteFileSystemLustreResponse
lustreResponse = Maybe DeleteFileSystemLustreResponse
a} :: DeleteFileSystemResponse)

-- | The response object for the OpenZFS file system that\'s being deleted in
-- the @DeleteFileSystem@ operation.
deleteFileSystemResponse_openZFSResponse :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe DeleteFileSystemOpenZFSResponse)
deleteFileSystemResponse_openZFSResponse :: Lens'
  DeleteFileSystemResponse (Maybe DeleteFileSystemOpenZFSResponse)
deleteFileSystemResponse_openZFSResponse = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystemResponse' {Maybe DeleteFileSystemOpenZFSResponse
openZFSResponse :: Maybe DeleteFileSystemOpenZFSResponse
$sel:openZFSResponse:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe DeleteFileSystemOpenZFSResponse
openZFSResponse} -> Maybe DeleteFileSystemOpenZFSResponse
openZFSResponse) (\s :: DeleteFileSystemResponse
s@DeleteFileSystemResponse' {} Maybe DeleteFileSystemOpenZFSResponse
a -> DeleteFileSystemResponse
s {$sel:openZFSResponse:DeleteFileSystemResponse' :: Maybe DeleteFileSystemOpenZFSResponse
openZFSResponse = Maybe DeleteFileSystemOpenZFSResponse
a} :: DeleteFileSystemResponse)

-- | Undocumented member.
deleteFileSystemResponse_windowsResponse :: Lens.Lens' DeleteFileSystemResponse (Prelude.Maybe DeleteFileSystemWindowsResponse)
deleteFileSystemResponse_windowsResponse :: Lens'
  DeleteFileSystemResponse (Maybe DeleteFileSystemWindowsResponse)
deleteFileSystemResponse_windowsResponse = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteFileSystemResponse' {Maybe DeleteFileSystemWindowsResponse
windowsResponse :: Maybe DeleteFileSystemWindowsResponse
$sel:windowsResponse:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe DeleteFileSystemWindowsResponse
windowsResponse} -> Maybe DeleteFileSystemWindowsResponse
windowsResponse) (\s :: DeleteFileSystemResponse
s@DeleteFileSystemResponse' {} Maybe DeleteFileSystemWindowsResponse
a -> DeleteFileSystemResponse
s {$sel:windowsResponse:DeleteFileSystemResponse' :: Maybe DeleteFileSystemWindowsResponse
windowsResponse = Maybe DeleteFileSystemWindowsResponse
a} :: DeleteFileSystemResponse)

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

instance Prelude.NFData DeleteFileSystemResponse where
  rnf :: DeleteFileSystemResponse -> ()
rnf DeleteFileSystemResponse' {Int
Maybe Text
Maybe FileSystemLifecycle
Maybe DeleteFileSystemWindowsResponse
Maybe DeleteFileSystemOpenZFSResponse
Maybe DeleteFileSystemLustreResponse
httpStatus :: Int
windowsResponse :: Maybe DeleteFileSystemWindowsResponse
openZFSResponse :: Maybe DeleteFileSystemOpenZFSResponse
lustreResponse :: Maybe DeleteFileSystemLustreResponse
lifecycle :: Maybe FileSystemLifecycle
fileSystemId :: Maybe Text
$sel:httpStatus:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Int
$sel:windowsResponse:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe DeleteFileSystemWindowsResponse
$sel:openZFSResponse:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe DeleteFileSystemOpenZFSResponse
$sel:lustreResponse:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe DeleteFileSystemLustreResponse
$sel:lifecycle:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe FileSystemLifecycle
$sel:fileSystemId:DeleteFileSystemResponse' :: DeleteFileSystemResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
fileSystemId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FileSystemLifecycle
lifecycle
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeleteFileSystemLustreResponse
lustreResponse
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeleteFileSystemOpenZFSResponse
openZFSResponse
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DeleteFileSystemWindowsResponse
windowsResponse
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus