{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.OpenZFSFileSystemConfiguration
-- 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.OpenZFSFileSystemConfiguration 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.DiskIopsConfiguration
import Amazonka.FSx.Types.OpenZFSDeploymentType
import qualified Amazonka.Prelude as Prelude

-- | The configuration for the Amazon FSx for OpenZFS file system.
--
-- /See:/ 'newOpenZFSFileSystemConfiguration' smart constructor.
data OpenZFSFileSystemConfiguration = OpenZFSFileSystemConfiguration'
  { OpenZFSFileSystemConfiguration -> Maybe Natural
automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
    -- | A Boolean value indicating whether tags on the file system should be
    -- copied to backups. If it\'s set to @true@, all tags on the file system
    -- are copied to all automatic backups and any user-initiated backups where
    -- the user doesn\'t specify any tags. If this value is @true@ and you
    -- specify one or more tags, only the specified tags are copied to backups.
    -- If you specify one or more tags when creating a user-initiated backup,
    -- no tags are copied from the file system, regardless of this value.
    OpenZFSFileSystemConfiguration -> Maybe Bool
copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
    -- | A Boolean value indicating whether tags for the volume should be copied
    -- to snapshots. This value defaults to @false@. If it\'s set to @true@,
    -- all tags for the volume are copied to snapshots where the user doesn\'t
    -- specify tags. If this value is @true@ and you specify one or more tags,
    -- only the specified tags are copied to snapshots. If you specify one or
    -- more tags when creating the snapshot, no tags are copied from the
    -- volume, regardless of this value.
    OpenZFSFileSystemConfiguration -> Maybe Bool
copyTagsToVolumes :: Prelude.Maybe Prelude.Bool,
    OpenZFSFileSystemConfiguration -> Maybe Text
dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
    -- | Specifies the file-system deployment type. Amazon FSx for OpenZFS
    -- supports
 @SINGLE_AZ_1@ and @SINGLE_AZ_2@.
    OpenZFSFileSystemConfiguration -> Maybe OpenZFSDeploymentType
deploymentType :: Prelude.Maybe OpenZFSDeploymentType,
    OpenZFSFileSystemConfiguration -> Maybe DiskIopsConfiguration
diskIopsConfiguration :: Prelude.Maybe DiskIopsConfiguration,
    -- | The ID of the root volume of the OpenZFS file system.
    OpenZFSFileSystemConfiguration -> Maybe Text
rootVolumeId :: Prelude.Maybe Prelude.Text,
    -- | The throughput of an Amazon FSx file system, measured in megabytes per
    -- second (MBps).
    OpenZFSFileSystemConfiguration -> Maybe Natural
throughputCapacity :: Prelude.Maybe Prelude.Natural,
    OpenZFSFileSystemConfiguration -> Maybe Text
weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text
  }
  deriving (OpenZFSFileSystemConfiguration
-> OpenZFSFileSystemConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OpenZFSFileSystemConfiguration
-> OpenZFSFileSystemConfiguration -> Bool
$c/= :: OpenZFSFileSystemConfiguration
-> OpenZFSFileSystemConfiguration -> Bool
== :: OpenZFSFileSystemConfiguration
-> OpenZFSFileSystemConfiguration -> Bool
$c== :: OpenZFSFileSystemConfiguration
-> OpenZFSFileSystemConfiguration -> Bool
Prelude.Eq, ReadPrec [OpenZFSFileSystemConfiguration]
ReadPrec OpenZFSFileSystemConfiguration
Int -> ReadS OpenZFSFileSystemConfiguration
ReadS [OpenZFSFileSystemConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [OpenZFSFileSystemConfiguration]
$creadListPrec :: ReadPrec [OpenZFSFileSystemConfiguration]
readPrec :: ReadPrec OpenZFSFileSystemConfiguration
$creadPrec :: ReadPrec OpenZFSFileSystemConfiguration
readList :: ReadS [OpenZFSFileSystemConfiguration]
$creadList :: ReadS [OpenZFSFileSystemConfiguration]
readsPrec :: Int -> ReadS OpenZFSFileSystemConfiguration
$creadsPrec :: Int -> ReadS OpenZFSFileSystemConfiguration
Prelude.Read, Int -> OpenZFSFileSystemConfiguration -> ShowS
[OpenZFSFileSystemConfiguration] -> ShowS
OpenZFSFileSystemConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OpenZFSFileSystemConfiguration] -> ShowS
$cshowList :: [OpenZFSFileSystemConfiguration] -> ShowS
show :: OpenZFSFileSystemConfiguration -> String
$cshow :: OpenZFSFileSystemConfiguration -> String
showsPrec :: Int -> OpenZFSFileSystemConfiguration -> ShowS
$cshowsPrec :: Int -> OpenZFSFileSystemConfiguration -> ShowS
Prelude.Show, forall x.
Rep OpenZFSFileSystemConfiguration x
-> OpenZFSFileSystemConfiguration
forall x.
OpenZFSFileSystemConfiguration
-> Rep OpenZFSFileSystemConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep OpenZFSFileSystemConfiguration x
-> OpenZFSFileSystemConfiguration
$cfrom :: forall x.
OpenZFSFileSystemConfiguration
-> Rep OpenZFSFileSystemConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'OpenZFSFileSystemConfiguration' 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:
--
-- 'automaticBackupRetentionDays', 'openZFSFileSystemConfiguration_automaticBackupRetentionDays' - Undocumented member.
--
-- 'copyTagsToBackups', 'openZFSFileSystemConfiguration_copyTagsToBackups' - A Boolean value indicating whether tags on the file system should be
-- copied to backups. If it\'s set to @true@, all tags on the file system
-- are copied to all automatic backups and any user-initiated backups where
-- the user doesn\'t specify any tags. If this value is @true@ and you
-- specify one or more tags, only the specified tags are copied to backups.
-- If you specify one or more tags when creating a user-initiated backup,
-- no tags are copied from the file system, regardless of this value.
--
-- 'copyTagsToVolumes', 'openZFSFileSystemConfiguration_copyTagsToVolumes' - A Boolean value indicating whether tags for the volume should be copied
-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
-- all tags for the volume are copied to snapshots where the user doesn\'t
-- specify tags. If this value is @true@ and you specify one or more tags,
-- only the specified tags are copied to snapshots. If you specify one or
-- more tags when creating the snapshot, no tags are copied from the
-- volume, regardless of this value.
--
-- 'dailyAutomaticBackupStartTime', 'openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
--
-- 'deploymentType', 'openZFSFileSystemConfiguration_deploymentType' - Specifies the file-system deployment type. Amazon FSx for OpenZFS
-- supports
 @SINGLE_AZ_1@ and @SINGLE_AZ_2@.
--
-- 'diskIopsConfiguration', 'openZFSFileSystemConfiguration_diskIopsConfiguration' - Undocumented member.
--
-- 'rootVolumeId', 'openZFSFileSystemConfiguration_rootVolumeId' - The ID of the root volume of the OpenZFS file system.
--
-- 'throughputCapacity', 'openZFSFileSystemConfiguration_throughputCapacity' - The throughput of an Amazon FSx file system, measured in megabytes per
-- second (MBps).
--
-- 'weeklyMaintenanceStartTime', 'openZFSFileSystemConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
newOpenZFSFileSystemConfiguration ::
  OpenZFSFileSystemConfiguration
newOpenZFSFileSystemConfiguration :: OpenZFSFileSystemConfiguration
newOpenZFSFileSystemConfiguration =
  OpenZFSFileSystemConfiguration'
    { $sel:automaticBackupRetentionDays:OpenZFSFileSystemConfiguration' :: Maybe Natural
automaticBackupRetentionDays =
        forall a. Maybe a
Prelude.Nothing,
      $sel:copyTagsToBackups:OpenZFSFileSystemConfiguration' :: Maybe Bool
copyTagsToBackups = forall a. Maybe a
Prelude.Nothing,
      $sel:copyTagsToVolumes:OpenZFSFileSystemConfiguration' :: Maybe Bool
copyTagsToVolumes = forall a. Maybe a
Prelude.Nothing,
      $sel:dailyAutomaticBackupStartTime:OpenZFSFileSystemConfiguration' :: Maybe Text
dailyAutomaticBackupStartTime =
        forall a. Maybe a
Prelude.Nothing,
      $sel:deploymentType:OpenZFSFileSystemConfiguration' :: Maybe OpenZFSDeploymentType
deploymentType = forall a. Maybe a
Prelude.Nothing,
      $sel:diskIopsConfiguration:OpenZFSFileSystemConfiguration' :: Maybe DiskIopsConfiguration
diskIopsConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:rootVolumeId:OpenZFSFileSystemConfiguration' :: Maybe Text
rootVolumeId = forall a. Maybe a
Prelude.Nothing,
      $sel:throughputCapacity:OpenZFSFileSystemConfiguration' :: Maybe Natural
throughputCapacity = forall a. Maybe a
Prelude.Nothing,
      $sel:weeklyMaintenanceStartTime:OpenZFSFileSystemConfiguration' :: Maybe Text
weeklyMaintenanceStartTime =
        forall a. Maybe a
Prelude.Nothing
    }

-- | Undocumented member.
openZFSFileSystemConfiguration_automaticBackupRetentionDays :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
openZFSFileSystemConfiguration_automaticBackupRetentionDays :: Lens' OpenZFSFileSystemConfiguration (Maybe Natural)
openZFSFileSystemConfiguration_automaticBackupRetentionDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe Natural
automaticBackupRetentionDays :: Maybe Natural
$sel:automaticBackupRetentionDays:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Natural
automaticBackupRetentionDays} -> Maybe Natural
automaticBackupRetentionDays) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe Natural
a -> OpenZFSFileSystemConfiguration
s {$sel:automaticBackupRetentionDays:OpenZFSFileSystemConfiguration' :: Maybe Natural
automaticBackupRetentionDays = Maybe Natural
a} :: OpenZFSFileSystemConfiguration)

-- | A Boolean value indicating whether tags on the file system should be
-- copied to backups. If it\'s set to @true@, all tags on the file system
-- are copied to all automatic backups and any user-initiated backups where
-- the user doesn\'t specify any tags. If this value is @true@ and you
-- specify one or more tags, only the specified tags are copied to backups.
-- If you specify one or more tags when creating a user-initiated backup,
-- no tags are copied from the file system, regardless of this value.
openZFSFileSystemConfiguration_copyTagsToBackups :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Bool)
openZFSFileSystemConfiguration_copyTagsToBackups :: Lens' OpenZFSFileSystemConfiguration (Maybe Bool)
openZFSFileSystemConfiguration_copyTagsToBackups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe Bool
copyTagsToBackups :: Maybe Bool
$sel:copyTagsToBackups:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Bool
copyTagsToBackups} -> Maybe Bool
copyTagsToBackups) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe Bool
a -> OpenZFSFileSystemConfiguration
s {$sel:copyTagsToBackups:OpenZFSFileSystemConfiguration' :: Maybe Bool
copyTagsToBackups = Maybe Bool
a} :: OpenZFSFileSystemConfiguration)

-- | A Boolean value indicating whether tags for the volume should be copied
-- to snapshots. This value defaults to @false@. If it\'s set to @true@,
-- all tags for the volume are copied to snapshots where the user doesn\'t
-- specify tags. If this value is @true@ and you specify one or more tags,
-- only the specified tags are copied to snapshots. If you specify one or
-- more tags when creating the snapshot, no tags are copied from the
-- volume, regardless of this value.
openZFSFileSystemConfiguration_copyTagsToVolumes :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Bool)
openZFSFileSystemConfiguration_copyTagsToVolumes :: Lens' OpenZFSFileSystemConfiguration (Maybe Bool)
openZFSFileSystemConfiguration_copyTagsToVolumes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe Bool
copyTagsToVolumes :: Maybe Bool
$sel:copyTagsToVolumes:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Bool
copyTagsToVolumes} -> Maybe Bool
copyTagsToVolumes) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe Bool
a -> OpenZFSFileSystemConfiguration
s {$sel:copyTagsToVolumes:OpenZFSFileSystemConfiguration' :: Maybe Bool
copyTagsToVolumes = Maybe Bool
a} :: OpenZFSFileSystemConfiguration)

-- | Undocumented member.
openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Text)
openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime :: Lens' OpenZFSFileSystemConfiguration (Maybe Text)
openZFSFileSystemConfiguration_dailyAutomaticBackupStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe Text
dailyAutomaticBackupStartTime :: Maybe Text
$sel:dailyAutomaticBackupStartTime:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
dailyAutomaticBackupStartTime} -> Maybe Text
dailyAutomaticBackupStartTime) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe Text
a -> OpenZFSFileSystemConfiguration
s {$sel:dailyAutomaticBackupStartTime:OpenZFSFileSystemConfiguration' :: Maybe Text
dailyAutomaticBackupStartTime = Maybe Text
a} :: OpenZFSFileSystemConfiguration)

-- | Specifies the file-system deployment type. Amazon FSx for OpenZFS
-- supports
 @SINGLE_AZ_1@ and @SINGLE_AZ_2@.
openZFSFileSystemConfiguration_deploymentType :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe OpenZFSDeploymentType)
openZFSFileSystemConfiguration_deploymentType :: Lens' OpenZFSFileSystemConfiguration (Maybe OpenZFSDeploymentType)
openZFSFileSystemConfiguration_deploymentType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe OpenZFSDeploymentType
deploymentType :: Maybe OpenZFSDeploymentType
$sel:deploymentType:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe OpenZFSDeploymentType
deploymentType} -> Maybe OpenZFSDeploymentType
deploymentType) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe OpenZFSDeploymentType
a -> OpenZFSFileSystemConfiguration
s {$sel:deploymentType:OpenZFSFileSystemConfiguration' :: Maybe OpenZFSDeploymentType
deploymentType = Maybe OpenZFSDeploymentType
a} :: OpenZFSFileSystemConfiguration)

-- | Undocumented member.
openZFSFileSystemConfiguration_diskIopsConfiguration :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe DiskIopsConfiguration)
openZFSFileSystemConfiguration_diskIopsConfiguration :: Lens' OpenZFSFileSystemConfiguration (Maybe DiskIopsConfiguration)
openZFSFileSystemConfiguration_diskIopsConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe DiskIopsConfiguration
diskIopsConfiguration :: Maybe DiskIopsConfiguration
$sel:diskIopsConfiguration:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe DiskIopsConfiguration
diskIopsConfiguration} -> Maybe DiskIopsConfiguration
diskIopsConfiguration) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe DiskIopsConfiguration
a -> OpenZFSFileSystemConfiguration
s {$sel:diskIopsConfiguration:OpenZFSFileSystemConfiguration' :: Maybe DiskIopsConfiguration
diskIopsConfiguration = Maybe DiskIopsConfiguration
a} :: OpenZFSFileSystemConfiguration)

-- | The ID of the root volume of the OpenZFS file system.
openZFSFileSystemConfiguration_rootVolumeId :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Text)
openZFSFileSystemConfiguration_rootVolumeId :: Lens' OpenZFSFileSystemConfiguration (Maybe Text)
openZFSFileSystemConfiguration_rootVolumeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe Text
rootVolumeId :: Maybe Text
$sel:rootVolumeId:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
rootVolumeId} -> Maybe Text
rootVolumeId) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe Text
a -> OpenZFSFileSystemConfiguration
s {$sel:rootVolumeId:OpenZFSFileSystemConfiguration' :: Maybe Text
rootVolumeId = Maybe Text
a} :: OpenZFSFileSystemConfiguration)

-- | The throughput of an Amazon FSx file system, measured in megabytes per
-- second (MBps).
openZFSFileSystemConfiguration_throughputCapacity :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Natural)
openZFSFileSystemConfiguration_throughputCapacity :: Lens' OpenZFSFileSystemConfiguration (Maybe Natural)
openZFSFileSystemConfiguration_throughputCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe Natural
throughputCapacity :: Maybe Natural
$sel:throughputCapacity:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Natural
throughputCapacity} -> Maybe Natural
throughputCapacity) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe Natural
a -> OpenZFSFileSystemConfiguration
s {$sel:throughputCapacity:OpenZFSFileSystemConfiguration' :: Maybe Natural
throughputCapacity = Maybe Natural
a} :: OpenZFSFileSystemConfiguration)

-- | Undocumented member.
openZFSFileSystemConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' OpenZFSFileSystemConfiguration (Prelude.Maybe Prelude.Text)
openZFSFileSystemConfiguration_weeklyMaintenanceStartTime :: Lens' OpenZFSFileSystemConfiguration (Maybe Text)
openZFSFileSystemConfiguration_weeklyMaintenanceStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\OpenZFSFileSystemConfiguration' {Maybe Text
weeklyMaintenanceStartTime :: Maybe Text
$sel:weeklyMaintenanceStartTime:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
weeklyMaintenanceStartTime} -> Maybe Text
weeklyMaintenanceStartTime) (\s :: OpenZFSFileSystemConfiguration
s@OpenZFSFileSystemConfiguration' {} Maybe Text
a -> OpenZFSFileSystemConfiguration
s {$sel:weeklyMaintenanceStartTime:OpenZFSFileSystemConfiguration' :: Maybe Text
weeklyMaintenanceStartTime = Maybe Text
a} :: OpenZFSFileSystemConfiguration)

instance Data.FromJSON OpenZFSFileSystemConfiguration where
  parseJSON :: Value -> Parser OpenZFSFileSystemConfiguration
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"OpenZFSFileSystemConfiguration"
      ( \Object
x ->
          Maybe Natural
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe OpenZFSDeploymentType
-> Maybe DiskIopsConfiguration
-> Maybe Text
-> Maybe Natural
-> Maybe Text
-> OpenZFSFileSystemConfiguration
OpenZFSFileSystemConfiguration'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AutomaticBackupRetentionDays")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CopyTagsToBackups")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CopyTagsToVolumes")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DailyAutomaticBackupStartTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DeploymentType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DiskIopsConfiguration")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RootVolumeId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ThroughputCapacity")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"WeeklyMaintenanceStartTime")
      )

instance
  Prelude.Hashable
    OpenZFSFileSystemConfiguration
  where
  hashWithSalt :: Int -> OpenZFSFileSystemConfiguration -> Int
hashWithSalt
    Int
_salt
    OpenZFSFileSystemConfiguration' {Maybe Bool
Maybe Natural
Maybe Text
Maybe DiskIopsConfiguration
Maybe OpenZFSDeploymentType
weeklyMaintenanceStartTime :: Maybe Text
throughputCapacity :: Maybe Natural
rootVolumeId :: Maybe Text
diskIopsConfiguration :: Maybe DiskIopsConfiguration
deploymentType :: Maybe OpenZFSDeploymentType
dailyAutomaticBackupStartTime :: Maybe Text
copyTagsToVolumes :: Maybe Bool
copyTagsToBackups :: Maybe Bool
automaticBackupRetentionDays :: Maybe Natural
$sel:weeklyMaintenanceStartTime:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
$sel:throughputCapacity:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Natural
$sel:rootVolumeId:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
$sel:diskIopsConfiguration:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe DiskIopsConfiguration
$sel:deploymentType:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe OpenZFSDeploymentType
$sel:dailyAutomaticBackupStartTime:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
$sel:copyTagsToVolumes:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Bool
$sel:copyTagsToBackups:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Bool
$sel:automaticBackupRetentionDays:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Natural
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
automaticBackupRetentionDays
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
copyTagsToBackups
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
copyTagsToVolumes
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dailyAutomaticBackupStartTime
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OpenZFSDeploymentType
deploymentType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DiskIopsConfiguration
diskIopsConfiguration
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
rootVolumeId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
throughputCapacity
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
weeklyMaintenanceStartTime

instance
  Prelude.NFData
    OpenZFSFileSystemConfiguration
  where
  rnf :: OpenZFSFileSystemConfiguration -> ()
rnf OpenZFSFileSystemConfiguration' {Maybe Bool
Maybe Natural
Maybe Text
Maybe DiskIopsConfiguration
Maybe OpenZFSDeploymentType
weeklyMaintenanceStartTime :: Maybe Text
throughputCapacity :: Maybe Natural
rootVolumeId :: Maybe Text
diskIopsConfiguration :: Maybe DiskIopsConfiguration
deploymentType :: Maybe OpenZFSDeploymentType
dailyAutomaticBackupStartTime :: Maybe Text
copyTagsToVolumes :: Maybe Bool
copyTagsToBackups :: Maybe Bool
automaticBackupRetentionDays :: Maybe Natural
$sel:weeklyMaintenanceStartTime:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
$sel:throughputCapacity:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Natural
$sel:rootVolumeId:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
$sel:diskIopsConfiguration:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe DiskIopsConfiguration
$sel:deploymentType:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe OpenZFSDeploymentType
$sel:dailyAutomaticBackupStartTime:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Text
$sel:copyTagsToVolumes:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Bool
$sel:copyTagsToBackups:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Bool
$sel:automaticBackupRetentionDays:OpenZFSFileSystemConfiguration' :: OpenZFSFileSystemConfiguration -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
automaticBackupRetentionDays
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
copyTagsToBackups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
copyTagsToVolumes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dailyAutomaticBackupStartTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OpenZFSDeploymentType
deploymentType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DiskIopsConfiguration
diskIopsConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
rootVolumeId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
throughputCapacity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
weeklyMaintenanceStartTime