{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.FSx.Types.AdministrativeActionType
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.FSx.Types.AdministrativeActionType
  ( AdministrativeActionType
      ( ..,
        AdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION,
        AdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION,
        AdministrativeActionType_FILE_SYSTEM_UPDATE,
        AdministrativeActionType_RELEASE_NFS_V3_LOCKS,
        AdministrativeActionType_SNAPSHOT_UPDATE,
        AdministrativeActionType_STORAGE_OPTIMIZATION,
        AdministrativeActionType_VOLUME_RESTORE,
        AdministrativeActionType_VOLUME_UPDATE
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Describes the type of administrative action, as follows:
--
-- -   @FILE_SYSTEM_UPDATE@ - A file system update administrative action
--     initiated from the Amazon FSx console, API (@UpdateFileSystem@), or
--     CLI (@update-file-system@).
--
-- -   @STORAGE_OPTIMIZATION@ - After the @FILE_SYSTEM_UPDATE@ task to
--     increase a file system\'s storage capacity has been completed
--     successfully, a @STORAGE_OPTIMIZATION@ task starts.
--
--     -   For Windows and ONTAP, storage optimization is the process of
--         migrating the file system data to newer larger disks.
--
--     -   For Lustre, storage optimization consists of rebalancing the
--         data across the existing and newly added file servers.
--
--     You can track the storage-optimization progress using the
--     @ProgressPercent@ property. When @STORAGE_OPTIMIZATION@ has been
--     completed successfully, the parent @FILE_SYSTEM_UPDATE@ action
--     status changes to @COMPLETED@. For more information, see
--     <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-storage-capacity.html Managing storage capacity>
--     in the /Amazon FSx for Windows File Server User Guide/,
--     <https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html Managing storage and throughput capacity>
--     in the /Amazon FSx for Lustre User Guide/, and
--     <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/managing-storage-capacity.html Managing storage capacity and provisioned IOPS>
--     in the /Amazon FSx for NetApp ONTAP User Guide/.
--
-- -   @FILE_SYSTEM_ALIAS_ASSOCIATION@ - A file system update to associate
--     a new Domain Name System (DNS) alias with the file system. For more
--     information, see
--     <https://docs.aws.amazon.com/fsx/latest/APIReference/API_AssociateFileSystemAliases.html AssociateFileSystemAliases>.
--
-- -   @FILE_SYSTEM_ALIAS_DISASSOCIATION@ - A file system update to
--     disassociate a DNS alias from the file system. For more information,
--     see
--     <https://docs.aws.amazon.com/fsx/latest/APIReference/API_DisassociateFileSystemAliases.html DisassociateFileSystemAliases>.
--
-- -   @VOLUME_UPDATE@ - A volume update to an Amazon FSx for NetApp ONTAP
--     or Amazon FSx for OpenZFS volume initiated from the Amazon FSx
--     console, API (@UpdateVolume@), or CLI (@update-volume@).
--
-- -   @VOLUME_RESTORE@ - An Amazon FSx for OpenZFS volume is returned to
--     the state saved by the specified snapshot, initiated from an API
--     (@RestoreVolumeFromSnapshot@) or CLI
--     (@restore-volume-from-snapshot@).
--
-- -   @SNAPSHOT_UPDATE@ - A snapshot update to an Amazon FSx for OpenZFS
--     volume initiated from the Amazon FSx console, API
--     (@UpdateSnapshot@), or CLI (@update-snapshot@).
--
-- -   @RELEASE_NFS_V3_LOCKS@ - Tracks the release of Network File System
--     (NFS) V3 locks on an Amazon FSx for OpenZFS file system.
newtype AdministrativeActionType = AdministrativeActionType'
  { AdministrativeActionType -> Text
fromAdministrativeActionType ::
      Data.Text
  }
  deriving stock
    ( Int -> AdministrativeActionType -> ShowS
[AdministrativeActionType] -> ShowS
AdministrativeActionType -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AdministrativeActionType] -> ShowS
$cshowList :: [AdministrativeActionType] -> ShowS
show :: AdministrativeActionType -> String
$cshow :: AdministrativeActionType -> String
showsPrec :: Int -> AdministrativeActionType -> ShowS
$cshowsPrec :: Int -> AdministrativeActionType -> ShowS
Prelude.Show,
      ReadPrec [AdministrativeActionType]
ReadPrec AdministrativeActionType
Int -> ReadS AdministrativeActionType
ReadS [AdministrativeActionType]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AdministrativeActionType]
$creadListPrec :: ReadPrec [AdministrativeActionType]
readPrec :: ReadPrec AdministrativeActionType
$creadPrec :: ReadPrec AdministrativeActionType
readList :: ReadS [AdministrativeActionType]
$creadList :: ReadS [AdministrativeActionType]
readsPrec :: Int -> ReadS AdministrativeActionType
$creadsPrec :: Int -> ReadS AdministrativeActionType
Prelude.Read,
      AdministrativeActionType -> AdministrativeActionType -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AdministrativeActionType -> AdministrativeActionType -> Bool
$c/= :: AdministrativeActionType -> AdministrativeActionType -> Bool
== :: AdministrativeActionType -> AdministrativeActionType -> Bool
$c== :: AdministrativeActionType -> AdministrativeActionType -> Bool
Prelude.Eq,
      Eq AdministrativeActionType
AdministrativeActionType -> AdministrativeActionType -> Bool
AdministrativeActionType -> AdministrativeActionType -> Ordering
AdministrativeActionType
-> AdministrativeActionType -> AdministrativeActionType
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: AdministrativeActionType
-> AdministrativeActionType -> AdministrativeActionType
$cmin :: AdministrativeActionType
-> AdministrativeActionType -> AdministrativeActionType
max :: AdministrativeActionType
-> AdministrativeActionType -> AdministrativeActionType
$cmax :: AdministrativeActionType
-> AdministrativeActionType -> AdministrativeActionType
>= :: AdministrativeActionType -> AdministrativeActionType -> Bool
$c>= :: AdministrativeActionType -> AdministrativeActionType -> Bool
> :: AdministrativeActionType -> AdministrativeActionType -> Bool
$c> :: AdministrativeActionType -> AdministrativeActionType -> Bool
<= :: AdministrativeActionType -> AdministrativeActionType -> Bool
$c<= :: AdministrativeActionType -> AdministrativeActionType -> Bool
< :: AdministrativeActionType -> AdministrativeActionType -> Bool
$c< :: AdministrativeActionType -> AdministrativeActionType -> Bool
compare :: AdministrativeActionType -> AdministrativeActionType -> Ordering
$ccompare :: AdministrativeActionType -> AdministrativeActionType -> Ordering
Prelude.Ord,
      forall x.
Rep AdministrativeActionType x -> AdministrativeActionType
forall x.
AdministrativeActionType -> Rep AdministrativeActionType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AdministrativeActionType x -> AdministrativeActionType
$cfrom :: forall x.
AdministrativeActionType -> Rep AdministrativeActionType x
Prelude.Generic
    )
  deriving newtype
    ( Eq AdministrativeActionType
Int -> AdministrativeActionType -> Int
AdministrativeActionType -> Int
forall a. Eq a -> (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: AdministrativeActionType -> Int
$chash :: AdministrativeActionType -> Int
hashWithSalt :: Int -> AdministrativeActionType -> Int
$chashWithSalt :: Int -> AdministrativeActionType -> Int
Prelude.Hashable,
      AdministrativeActionType -> ()
forall a. (a -> ()) -> NFData a
rnf :: AdministrativeActionType -> ()
$crnf :: AdministrativeActionType -> ()
Prelude.NFData,
      Text -> Either String AdministrativeActionType
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String AdministrativeActionType
$cfromText :: Text -> Either String AdministrativeActionType
Data.FromText,
      AdministrativeActionType -> Text
forall a. (a -> Text) -> ToText a
toText :: AdministrativeActionType -> Text
$ctoText :: AdministrativeActionType -> Text
Data.ToText,
      AdministrativeActionType -> ByteString
forall a. (a -> ByteString) -> ToByteString a
toBS :: AdministrativeActionType -> ByteString
$ctoBS :: AdministrativeActionType -> ByteString
Data.ToByteString,
      AdministrativeActionType -> ByteStringBuilder
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: AdministrativeActionType -> ByteStringBuilder
$cbuild :: AdministrativeActionType -> ByteStringBuilder
Data.ToLog,
      HeaderName -> AdministrativeActionType -> [Header]
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> AdministrativeActionType -> [Header]
$ctoHeader :: HeaderName -> AdministrativeActionType -> [Header]
Data.ToHeader,
      AdministrativeActionType -> QueryString
forall a. (a -> QueryString) -> ToQuery a
toQuery :: AdministrativeActionType -> QueryString
$ctoQuery :: AdministrativeActionType -> QueryString
Data.ToQuery,
      Value -> Parser [AdministrativeActionType]
Value -> Parser AdministrativeActionType
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [AdministrativeActionType]
$cparseJSONList :: Value -> Parser [AdministrativeActionType]
parseJSON :: Value -> Parser AdministrativeActionType
$cparseJSON :: Value -> Parser AdministrativeActionType
Data.FromJSON,
      FromJSONKeyFunction [AdministrativeActionType]
FromJSONKeyFunction AdministrativeActionType
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [AdministrativeActionType]
$cfromJSONKeyList :: FromJSONKeyFunction [AdministrativeActionType]
fromJSONKey :: FromJSONKeyFunction AdministrativeActionType
$cfromJSONKey :: FromJSONKeyFunction AdministrativeActionType
Data.FromJSONKey,
      [AdministrativeActionType] -> Encoding
[AdministrativeActionType] -> Value
AdministrativeActionType -> Encoding
AdministrativeActionType -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [AdministrativeActionType] -> Encoding
$ctoEncodingList :: [AdministrativeActionType] -> Encoding
toJSONList :: [AdministrativeActionType] -> Value
$ctoJSONList :: [AdministrativeActionType] -> Value
toEncoding :: AdministrativeActionType -> Encoding
$ctoEncoding :: AdministrativeActionType -> Encoding
toJSON :: AdministrativeActionType -> Value
$ctoJSON :: AdministrativeActionType -> Value
Data.ToJSON,
      ToJSONKeyFunction [AdministrativeActionType]
ToJSONKeyFunction AdministrativeActionType
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [AdministrativeActionType]
$ctoJSONKeyList :: ToJSONKeyFunction [AdministrativeActionType]
toJSONKey :: ToJSONKeyFunction AdministrativeActionType
$ctoJSONKey :: ToJSONKeyFunction AdministrativeActionType
Data.ToJSONKey,
      [Node] -> Either String AdministrativeActionType
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String AdministrativeActionType
$cparseXML :: [Node] -> Either String AdministrativeActionType
Data.FromXML,
      AdministrativeActionType -> XML
forall a. (a -> XML) -> ToXML a
toXML :: AdministrativeActionType -> XML
$ctoXML :: AdministrativeActionType -> XML
Data.ToXML
    )

pattern AdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION :: AdministrativeActionType
pattern $bAdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION :: AdministrativeActionType
$mAdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION :: forall {r}.
AdministrativeActionType -> ((# #) -> r) -> ((# #) -> r) -> r
AdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION = AdministrativeActionType' "FILE_SYSTEM_ALIAS_ASSOCIATION"

pattern AdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION :: AdministrativeActionType
pattern $bAdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION :: AdministrativeActionType
$mAdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION :: forall {r}.
AdministrativeActionType -> ((# #) -> r) -> ((# #) -> r) -> r
AdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION = AdministrativeActionType' "FILE_SYSTEM_ALIAS_DISASSOCIATION"

pattern AdministrativeActionType_FILE_SYSTEM_UPDATE :: AdministrativeActionType
pattern $bAdministrativeActionType_FILE_SYSTEM_UPDATE :: AdministrativeActionType
$mAdministrativeActionType_FILE_SYSTEM_UPDATE :: forall {r}.
AdministrativeActionType -> ((# #) -> r) -> ((# #) -> r) -> r
AdministrativeActionType_FILE_SYSTEM_UPDATE = AdministrativeActionType' "FILE_SYSTEM_UPDATE"

pattern AdministrativeActionType_RELEASE_NFS_V3_LOCKS :: AdministrativeActionType
pattern $bAdministrativeActionType_RELEASE_NFS_V3_LOCKS :: AdministrativeActionType
$mAdministrativeActionType_RELEASE_NFS_V3_LOCKS :: forall {r}.
AdministrativeActionType -> ((# #) -> r) -> ((# #) -> r) -> r
AdministrativeActionType_RELEASE_NFS_V3_LOCKS = AdministrativeActionType' "RELEASE_NFS_V3_LOCKS"

pattern AdministrativeActionType_SNAPSHOT_UPDATE :: AdministrativeActionType
pattern $bAdministrativeActionType_SNAPSHOT_UPDATE :: AdministrativeActionType
$mAdministrativeActionType_SNAPSHOT_UPDATE :: forall {r}.
AdministrativeActionType -> ((# #) -> r) -> ((# #) -> r) -> r
AdministrativeActionType_SNAPSHOT_UPDATE = AdministrativeActionType' "SNAPSHOT_UPDATE"

pattern AdministrativeActionType_STORAGE_OPTIMIZATION :: AdministrativeActionType
pattern $bAdministrativeActionType_STORAGE_OPTIMIZATION :: AdministrativeActionType
$mAdministrativeActionType_STORAGE_OPTIMIZATION :: forall {r}.
AdministrativeActionType -> ((# #) -> r) -> ((# #) -> r) -> r
AdministrativeActionType_STORAGE_OPTIMIZATION = AdministrativeActionType' "STORAGE_OPTIMIZATION"

pattern AdministrativeActionType_VOLUME_RESTORE :: AdministrativeActionType
pattern $bAdministrativeActionType_VOLUME_RESTORE :: AdministrativeActionType
$mAdministrativeActionType_VOLUME_RESTORE :: forall {r}.
AdministrativeActionType -> ((# #) -> r) -> ((# #) -> r) -> r
AdministrativeActionType_VOLUME_RESTORE = AdministrativeActionType' "VOLUME_RESTORE"

pattern AdministrativeActionType_VOLUME_UPDATE :: AdministrativeActionType
pattern $bAdministrativeActionType_VOLUME_UPDATE :: AdministrativeActionType
$mAdministrativeActionType_VOLUME_UPDATE :: forall {r}.
AdministrativeActionType -> ((# #) -> r) -> ((# #) -> r) -> r
AdministrativeActionType_VOLUME_UPDATE = AdministrativeActionType' "VOLUME_UPDATE"

{-# COMPLETE
  AdministrativeActionType_FILE_SYSTEM_ALIAS_ASSOCIATION,
  AdministrativeActionType_FILE_SYSTEM_ALIAS_DISASSOCIATION,
  AdministrativeActionType_FILE_SYSTEM_UPDATE,
  AdministrativeActionType_RELEASE_NFS_V3_LOCKS,
  AdministrativeActionType_SNAPSHOT_UPDATE,
  AdministrativeActionType_STORAGE_OPTIMIZATION,
  AdministrativeActionType_VOLUME_RESTORE,
  AdministrativeActionType_VOLUME_UPDATE,
  AdministrativeActionType'
  #-}