{-# 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.CreateFileSystemWindowsConfiguration
-- 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.CreateFileSystemWindowsConfiguration 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.SelfManagedActiveDirectoryConfiguration
import Amazonka.FSx.Types.WindowsAuditLogCreateConfiguration
import Amazonka.FSx.Types.WindowsDeploymentType
import qualified Amazonka.Prelude as Prelude

-- | The configuration object for the Microsoft Windows file system used in
-- @CreateFileSystem@ and @CreateFileSystemFromBackup@ operations.
--
-- /See:/ 'newCreateFileSystemWindowsConfiguration' smart constructor.
data CreateFileSystemWindowsConfiguration = CreateFileSystemWindowsConfiguration'
  { -- | The ID for an existing Amazon Web Services Managed Microsoft Active
    -- Directory (AD) instance that the file system should join when it\'s
    -- created.
    CreateFileSystemWindowsConfiguration -> Maybe Text
activeDirectoryId :: Prelude.Maybe Prelude.Text,
    -- | An array of one or more DNS alias names that you want to associate with
    -- the Amazon FSx file system. Aliases allow you to use existing DNS names
    -- to access the data in your Amazon FSx file system. You can associate up
    -- to 50 aliases with a file system at any time. You can associate
    -- additional DNS aliases after you create the file system using the
    -- AssociateFileSystemAliases operation. You can remove DNS aliases from
    -- the file system after it is created using the
    -- DisassociateFileSystemAliases operation. You only need to specify the
    -- alias name in the request payload.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>
    -- and
    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/walkthrough05-file-system-custom-CNAME.html Walkthrough 5: Using DNS aliases to access your file system>,
    -- including additional steps you must take to be able to access your file
    -- system using a DNS alias.
    --
    -- An alias name has to meet the following requirements:
    --
    -- -   Formatted as a fully-qualified domain name (FQDN),
    --     @hostname.domain@, for example, @accounting.example.com@.
    --
    -- -   Can contain alphanumeric characters, the underscore (_), and the
    --     hyphen (-).
    --
    -- -   Cannot start or end with a hyphen.
    --
    -- -   Can start with a numeric.
    --
    -- For DNS alias names, Amazon FSx stores alphabetic characters as
    -- lowercase letters (a-z), regardless of how you specify them: as
    -- uppercase letters, lowercase letters, or the corresponding letters in
    -- escape codes.
    CreateFileSystemWindowsConfiguration -> Maybe [Text]
aliases :: Prelude.Maybe [Prelude.Text],
    -- | The configuration that Amazon FSx for Windows File Server uses to audit
    -- and log user accesses of files, folders, and file shares on the Amazon
    -- FSx for Windows File Server file system.
    CreateFileSystemWindowsConfiguration
-> Maybe WindowsAuditLogCreateConfiguration
auditLogConfiguration :: Prelude.Maybe WindowsAuditLogCreateConfiguration,
    -- | The number of days to retain automatic backups. The default is to retain
    -- backups for 7 days. Setting this value to 0 disables the creation of
    -- automatic backups. The maximum retention period for backups is 90 days.
    CreateFileSystemWindowsConfiguration -> Maybe Natural
automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
    -- | A boolean flag indicating whether tags for the file system should be
    -- copied to backups. This value defaults to false. If it\'s set to true,
    -- all tags for the file system are copied to all automatic and
    -- user-initiated backups 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 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.
    CreateFileSystemWindowsConfiguration -> Maybe Bool
copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
    -- | The preferred time to take daily automatic backups, formatted HH:MM in
    -- the UTC time zone.
    CreateFileSystemWindowsConfiguration -> Maybe Text
dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
    -- | Specifies the file system deployment type, valid values are the
    -- following:
    --
    -- -   @MULTI_AZ_1@ - Deploys a high availability file system that is
    --     configured for Multi-AZ redundancy to tolerate temporary
    --     Availability Zone (AZ) unavailability. You can only deploy a
    --     Multi-AZ file system in Amazon Web Services Regions that have a
    --     minimum of three Availability Zones. Also supports HDD storage type
    --
    -- -   @SINGLE_AZ_1@ - (Default) Choose to deploy a file system that is
    --     configured for single AZ redundancy.
    --
    -- -   @SINGLE_AZ_2@ - The latest generation Single AZ file system.
    --     Specifies a file system that is configured for single AZ redundancy
    --     and supports HDD storage type.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and Durability: Single-AZ and Multi-AZ File Systems>.
    CreateFileSystemWindowsConfiguration -> Maybe WindowsDeploymentType
deploymentType :: Prelude.Maybe WindowsDeploymentType,
    -- | Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
    -- the subnet in which you want the preferred file server to be located.
    -- For in-Amazon Web Services applications, we recommend that you launch
    -- your clients in the same Availability Zone (AZ) as your preferred file
    -- server to reduce cross-AZ data transfer costs and minimize latency.
    CreateFileSystemWindowsConfiguration -> Maybe Text
preferredSubnetId :: Prelude.Maybe Prelude.Text,
    CreateFileSystemWindowsConfiguration
-> Maybe SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration :: Prelude.Maybe SelfManagedActiveDirectoryConfiguration,
    -- | The preferred start time to perform weekly maintenance, formatted
    -- d:HH:MM in the UTC time zone, where d is the weekday number, from 1
    -- through 7, beginning with Monday and ending with Sunday.
    CreateFileSystemWindowsConfiguration -> Maybe Text
weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text,
    -- | Sets the throughput capacity of an Amazon FSx file system, measured in
    -- megabytes per second (MB\/s), in 2 to the /n/th increments, between 2^3
    -- (8) and 2^11 (2048).
    CreateFileSystemWindowsConfiguration -> Natural
throughputCapacity :: Prelude.Natural
  }
  deriving (CreateFileSystemWindowsConfiguration
-> CreateFileSystemWindowsConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateFileSystemWindowsConfiguration
-> CreateFileSystemWindowsConfiguration -> Bool
$c/= :: CreateFileSystemWindowsConfiguration
-> CreateFileSystemWindowsConfiguration -> Bool
== :: CreateFileSystemWindowsConfiguration
-> CreateFileSystemWindowsConfiguration -> Bool
$c== :: CreateFileSystemWindowsConfiguration
-> CreateFileSystemWindowsConfiguration -> Bool
Prelude.Eq, Int -> CreateFileSystemWindowsConfiguration -> ShowS
[CreateFileSystemWindowsConfiguration] -> ShowS
CreateFileSystemWindowsConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateFileSystemWindowsConfiguration] -> ShowS
$cshowList :: [CreateFileSystemWindowsConfiguration] -> ShowS
show :: CreateFileSystemWindowsConfiguration -> String
$cshow :: CreateFileSystemWindowsConfiguration -> String
showsPrec :: Int -> CreateFileSystemWindowsConfiguration -> ShowS
$cshowsPrec :: Int -> CreateFileSystemWindowsConfiguration -> ShowS
Prelude.Show, forall x.
Rep CreateFileSystemWindowsConfiguration x
-> CreateFileSystemWindowsConfiguration
forall x.
CreateFileSystemWindowsConfiguration
-> Rep CreateFileSystemWindowsConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateFileSystemWindowsConfiguration x
-> CreateFileSystemWindowsConfiguration
$cfrom :: forall x.
CreateFileSystemWindowsConfiguration
-> Rep CreateFileSystemWindowsConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'CreateFileSystemWindowsConfiguration' 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:
--
-- 'activeDirectoryId', 'createFileSystemWindowsConfiguration_activeDirectoryId' - The ID for an existing Amazon Web Services Managed Microsoft Active
-- Directory (AD) instance that the file system should join when it\'s
-- created.
--
-- 'aliases', 'createFileSystemWindowsConfiguration_aliases' - An array of one or more DNS alias names that you want to associate with
-- the Amazon FSx file system. Aliases allow you to use existing DNS names
-- to access the data in your Amazon FSx file system. You can associate up
-- to 50 aliases with a file system at any time. You can associate
-- additional DNS aliases after you create the file system using the
-- AssociateFileSystemAliases operation. You can remove DNS aliases from
-- the file system after it is created using the
-- DisassociateFileSystemAliases operation. You only need to specify the
-- alias name in the request payload.
--
-- For more information, see
-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>
-- and
-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/walkthrough05-file-system-custom-CNAME.html Walkthrough 5: Using DNS aliases to access your file system>,
-- including additional steps you must take to be able to access your file
-- system using a DNS alias.
--
-- An alias name has to meet the following requirements:
--
-- -   Formatted as a fully-qualified domain name (FQDN),
--     @hostname.domain@, for example, @accounting.example.com@.
--
-- -   Can contain alphanumeric characters, the underscore (_), and the
--     hyphen (-).
--
-- -   Cannot start or end with a hyphen.
--
-- -   Can start with a numeric.
--
-- For DNS alias names, Amazon FSx stores alphabetic characters as
-- lowercase letters (a-z), regardless of how you specify them: as
-- uppercase letters, lowercase letters, or the corresponding letters in
-- escape codes.
--
-- 'auditLogConfiguration', 'createFileSystemWindowsConfiguration_auditLogConfiguration' - The configuration that Amazon FSx for Windows File Server uses to audit
-- and log user accesses of files, folders, and file shares on the Amazon
-- FSx for Windows File Server file system.
--
-- 'automaticBackupRetentionDays', 'createFileSystemWindowsConfiguration_automaticBackupRetentionDays' - The number of days to retain automatic backups. The default is to retain
-- backups for 7 days. Setting this value to 0 disables the creation of
-- automatic backups. The maximum retention period for backups is 90 days.
--
-- 'copyTagsToBackups', 'createFileSystemWindowsConfiguration_copyTagsToBackups' - A boolean flag indicating whether tags for the file system should be
-- copied to backups. This value defaults to false. If it\'s set to true,
-- all tags for the file system are copied to all automatic and
-- user-initiated backups 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 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.
--
-- 'dailyAutomaticBackupStartTime', 'createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime' - The preferred time to take daily automatic backups, formatted HH:MM in
-- the UTC time zone.
--
-- 'deploymentType', 'createFileSystemWindowsConfiguration_deploymentType' - Specifies the file system deployment type, valid values are the
-- following:
--
-- -   @MULTI_AZ_1@ - Deploys a high availability file system that is
--     configured for Multi-AZ redundancy to tolerate temporary
--     Availability Zone (AZ) unavailability. You can only deploy a
--     Multi-AZ file system in Amazon Web Services Regions that have a
--     minimum of three Availability Zones. Also supports HDD storage type
--
-- -   @SINGLE_AZ_1@ - (Default) Choose to deploy a file system that is
--     configured for single AZ redundancy.
--
-- -   @SINGLE_AZ_2@ - The latest generation Single AZ file system.
--     Specifies a file system that is configured for single AZ redundancy
--     and supports HDD storage type.
--
-- For more information, see
-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and Durability: Single-AZ and Multi-AZ File Systems>.
--
-- 'preferredSubnetId', 'createFileSystemWindowsConfiguration_preferredSubnetId' - Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
-- the subnet in which you want the preferred file server to be located.
-- For in-Amazon Web Services applications, we recommend that you launch
-- your clients in the same Availability Zone (AZ) as your preferred file
-- server to reduce cross-AZ data transfer costs and minimize latency.
--
-- 'selfManagedActiveDirectoryConfiguration', 'createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration' - Undocumented member.
--
-- 'weeklyMaintenanceStartTime', 'createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime' - The preferred start time to perform weekly maintenance, formatted
-- d:HH:MM in the UTC time zone, where d is the weekday number, from 1
-- through 7, beginning with Monday and ending with Sunday.
--
-- 'throughputCapacity', 'createFileSystemWindowsConfiguration_throughputCapacity' - Sets the throughput capacity of an Amazon FSx file system, measured in
-- megabytes per second (MB\/s), in 2 to the /n/th increments, between 2^3
-- (8) and 2^11 (2048).
newCreateFileSystemWindowsConfiguration ::
  -- | 'throughputCapacity'
  Prelude.Natural ->
  CreateFileSystemWindowsConfiguration
newCreateFileSystemWindowsConfiguration :: Natural -> CreateFileSystemWindowsConfiguration
newCreateFileSystemWindowsConfiguration
  Natural
pThroughputCapacity_ =
    CreateFileSystemWindowsConfiguration'
      { $sel:activeDirectoryId:CreateFileSystemWindowsConfiguration' :: Maybe Text
activeDirectoryId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:aliases:CreateFileSystemWindowsConfiguration' :: Maybe [Text]
aliases = forall a. Maybe a
Prelude.Nothing,
        $sel:auditLogConfiguration:CreateFileSystemWindowsConfiguration' :: Maybe WindowsAuditLogCreateConfiguration
auditLogConfiguration =
          forall a. Maybe a
Prelude.Nothing,
        $sel:automaticBackupRetentionDays:CreateFileSystemWindowsConfiguration' :: Maybe Natural
automaticBackupRetentionDays =
          forall a. Maybe a
Prelude.Nothing,
        $sel:copyTagsToBackups:CreateFileSystemWindowsConfiguration' :: Maybe Bool
copyTagsToBackups = forall a. Maybe a
Prelude.Nothing,
        $sel:dailyAutomaticBackupStartTime:CreateFileSystemWindowsConfiguration' :: Maybe Text
dailyAutomaticBackupStartTime =
          forall a. Maybe a
Prelude.Nothing,
        $sel:deploymentType:CreateFileSystemWindowsConfiguration' :: Maybe WindowsDeploymentType
deploymentType = forall a. Maybe a
Prelude.Nothing,
        $sel:preferredSubnetId:CreateFileSystemWindowsConfiguration' :: Maybe Text
preferredSubnetId = forall a. Maybe a
Prelude.Nothing,
        $sel:selfManagedActiveDirectoryConfiguration:CreateFileSystemWindowsConfiguration' :: Maybe SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration =
          forall a. Maybe a
Prelude.Nothing,
        $sel:weeklyMaintenanceStartTime:CreateFileSystemWindowsConfiguration' :: Maybe Text
weeklyMaintenanceStartTime =
          forall a. Maybe a
Prelude.Nothing,
        $sel:throughputCapacity:CreateFileSystemWindowsConfiguration' :: Natural
throughputCapacity =
          Natural
pThroughputCapacity_
      }

-- | The ID for an existing Amazon Web Services Managed Microsoft Active
-- Directory (AD) instance that the file system should join when it\'s
-- created.
createFileSystemWindowsConfiguration_activeDirectoryId :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemWindowsConfiguration_activeDirectoryId :: Lens' CreateFileSystemWindowsConfiguration (Maybe Text)
createFileSystemWindowsConfiguration_activeDirectoryId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe Text
activeDirectoryId :: Maybe Text
$sel:activeDirectoryId:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
activeDirectoryId} -> Maybe Text
activeDirectoryId) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe Text
a -> CreateFileSystemWindowsConfiguration
s {$sel:activeDirectoryId:CreateFileSystemWindowsConfiguration' :: Maybe Text
activeDirectoryId = Maybe Text
a} :: CreateFileSystemWindowsConfiguration)

-- | An array of one or more DNS alias names that you want to associate with
-- the Amazon FSx file system. Aliases allow you to use existing DNS names
-- to access the data in your Amazon FSx file system. You can associate up
-- to 50 aliases with a file system at any time. You can associate
-- additional DNS aliases after you create the file system using the
-- AssociateFileSystemAliases operation. You can remove DNS aliases from
-- the file system after it is created using the
-- DisassociateFileSystemAliases operation. You only need to specify the
-- alias name in the request payload.
--
-- For more information, see
-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/managing-dns-aliases.html Working with DNS Aliases>
-- and
-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/walkthrough05-file-system-custom-CNAME.html Walkthrough 5: Using DNS aliases to access your file system>,
-- including additional steps you must take to be able to access your file
-- system using a DNS alias.
--
-- An alias name has to meet the following requirements:
--
-- -   Formatted as a fully-qualified domain name (FQDN),
--     @hostname.domain@, for example, @accounting.example.com@.
--
-- -   Can contain alphanumeric characters, the underscore (_), and the
--     hyphen (-).
--
-- -   Cannot start or end with a hyphen.
--
-- -   Can start with a numeric.
--
-- For DNS alias names, Amazon FSx stores alphabetic characters as
-- lowercase letters (a-z), regardless of how you specify them: as
-- uppercase letters, lowercase letters, or the corresponding letters in
-- escape codes.
createFileSystemWindowsConfiguration_aliases :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe [Prelude.Text])
createFileSystemWindowsConfiguration_aliases :: Lens' CreateFileSystemWindowsConfiguration (Maybe [Text])
createFileSystemWindowsConfiguration_aliases = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe [Text]
aliases :: Maybe [Text]
$sel:aliases:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe [Text]
aliases} -> Maybe [Text]
aliases) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe [Text]
a -> CreateFileSystemWindowsConfiguration
s {$sel:aliases:CreateFileSystemWindowsConfiguration' :: Maybe [Text]
aliases = Maybe [Text]
a} :: CreateFileSystemWindowsConfiguration) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The configuration that Amazon FSx for Windows File Server uses to audit
-- and log user accesses of files, folders, and file shares on the Amazon
-- FSx for Windows File Server file system.
createFileSystemWindowsConfiguration_auditLogConfiguration :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe WindowsAuditLogCreateConfiguration)
createFileSystemWindowsConfiguration_auditLogConfiguration :: Lens'
  CreateFileSystemWindowsConfiguration
  (Maybe WindowsAuditLogCreateConfiguration)
createFileSystemWindowsConfiguration_auditLogConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe WindowsAuditLogCreateConfiguration
auditLogConfiguration :: Maybe WindowsAuditLogCreateConfiguration
$sel:auditLogConfiguration:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration
-> Maybe WindowsAuditLogCreateConfiguration
auditLogConfiguration} -> Maybe WindowsAuditLogCreateConfiguration
auditLogConfiguration) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe WindowsAuditLogCreateConfiguration
a -> CreateFileSystemWindowsConfiguration
s {$sel:auditLogConfiguration:CreateFileSystemWindowsConfiguration' :: Maybe WindowsAuditLogCreateConfiguration
auditLogConfiguration = Maybe WindowsAuditLogCreateConfiguration
a} :: CreateFileSystemWindowsConfiguration)

-- | The number of days to retain automatic backups. The default is to retain
-- backups for 7 days. Setting this value to 0 disables the creation of
-- automatic backups. The maximum retention period for backups is 90 days.
createFileSystemWindowsConfiguration_automaticBackupRetentionDays :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Natural)
createFileSystemWindowsConfiguration_automaticBackupRetentionDays :: Lens' CreateFileSystemWindowsConfiguration (Maybe Natural)
createFileSystemWindowsConfiguration_automaticBackupRetentionDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe Natural
automaticBackupRetentionDays :: Maybe Natural
$sel:automaticBackupRetentionDays:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Natural
automaticBackupRetentionDays} -> Maybe Natural
automaticBackupRetentionDays) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe Natural
a -> CreateFileSystemWindowsConfiguration
s {$sel:automaticBackupRetentionDays:CreateFileSystemWindowsConfiguration' :: Maybe Natural
automaticBackupRetentionDays = Maybe Natural
a} :: CreateFileSystemWindowsConfiguration)

-- | A boolean flag indicating whether tags for the file system should be
-- copied to backups. This value defaults to false. If it\'s set to true,
-- all tags for the file system are copied to all automatic and
-- user-initiated backups 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 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.
createFileSystemWindowsConfiguration_copyTagsToBackups :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Bool)
createFileSystemWindowsConfiguration_copyTagsToBackups :: Lens' CreateFileSystemWindowsConfiguration (Maybe Bool)
createFileSystemWindowsConfiguration_copyTagsToBackups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe Bool
copyTagsToBackups :: Maybe Bool
$sel:copyTagsToBackups:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Bool
copyTagsToBackups} -> Maybe Bool
copyTagsToBackups) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe Bool
a -> CreateFileSystemWindowsConfiguration
s {$sel:copyTagsToBackups:CreateFileSystemWindowsConfiguration' :: Maybe Bool
copyTagsToBackups = Maybe Bool
a} :: CreateFileSystemWindowsConfiguration)

-- | The preferred time to take daily automatic backups, formatted HH:MM in
-- the UTC time zone.
createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime :: Lens' CreateFileSystemWindowsConfiguration (Maybe Text)
createFileSystemWindowsConfiguration_dailyAutomaticBackupStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe Text
dailyAutomaticBackupStartTime :: Maybe Text
$sel:dailyAutomaticBackupStartTime:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
dailyAutomaticBackupStartTime} -> Maybe Text
dailyAutomaticBackupStartTime) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe Text
a -> CreateFileSystemWindowsConfiguration
s {$sel:dailyAutomaticBackupStartTime:CreateFileSystemWindowsConfiguration' :: Maybe Text
dailyAutomaticBackupStartTime = Maybe Text
a} :: CreateFileSystemWindowsConfiguration)

-- | Specifies the file system deployment type, valid values are the
-- following:
--
-- -   @MULTI_AZ_1@ - Deploys a high availability file system that is
--     configured for Multi-AZ redundancy to tolerate temporary
--     Availability Zone (AZ) unavailability. You can only deploy a
--     Multi-AZ file system in Amazon Web Services Regions that have a
--     minimum of three Availability Zones. Also supports HDD storage type
--
-- -   @SINGLE_AZ_1@ - (Default) Choose to deploy a file system that is
--     configured for single AZ redundancy.
--
-- -   @SINGLE_AZ_2@ - The latest generation Single AZ file system.
--     Specifies a file system that is configured for single AZ redundancy
--     and supports HDD storage type.
--
-- For more information, see
-- <https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html Availability and Durability: Single-AZ and Multi-AZ File Systems>.
createFileSystemWindowsConfiguration_deploymentType :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe WindowsDeploymentType)
createFileSystemWindowsConfiguration_deploymentType :: Lens'
  CreateFileSystemWindowsConfiguration (Maybe WindowsDeploymentType)
createFileSystemWindowsConfiguration_deploymentType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe WindowsDeploymentType
deploymentType :: Maybe WindowsDeploymentType
$sel:deploymentType:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe WindowsDeploymentType
deploymentType} -> Maybe WindowsDeploymentType
deploymentType) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe WindowsDeploymentType
a -> CreateFileSystemWindowsConfiguration
s {$sel:deploymentType:CreateFileSystemWindowsConfiguration' :: Maybe WindowsDeploymentType
deploymentType = Maybe WindowsDeploymentType
a} :: CreateFileSystemWindowsConfiguration)

-- | Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
-- the subnet in which you want the preferred file server to be located.
-- For in-Amazon Web Services applications, we recommend that you launch
-- your clients in the same Availability Zone (AZ) as your preferred file
-- server to reduce cross-AZ data transfer costs and minimize latency.
createFileSystemWindowsConfiguration_preferredSubnetId :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemWindowsConfiguration_preferredSubnetId :: Lens' CreateFileSystemWindowsConfiguration (Maybe Text)
createFileSystemWindowsConfiguration_preferredSubnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe Text
preferredSubnetId :: Maybe Text
$sel:preferredSubnetId:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
preferredSubnetId} -> Maybe Text
preferredSubnetId) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe Text
a -> CreateFileSystemWindowsConfiguration
s {$sel:preferredSubnetId:CreateFileSystemWindowsConfiguration' :: Maybe Text
preferredSubnetId = Maybe Text
a} :: CreateFileSystemWindowsConfiguration)

-- | Undocumented member.
createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe SelfManagedActiveDirectoryConfiguration)
createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration :: Lens'
  CreateFileSystemWindowsConfiguration
  (Maybe SelfManagedActiveDirectoryConfiguration)
createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration :: Maybe SelfManagedActiveDirectoryConfiguration
$sel:selfManagedActiveDirectoryConfiguration:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration
-> Maybe SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration} -> Maybe SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe SelfManagedActiveDirectoryConfiguration
a -> CreateFileSystemWindowsConfiguration
s {$sel:selfManagedActiveDirectoryConfiguration:CreateFileSystemWindowsConfiguration' :: Maybe SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration = Maybe SelfManagedActiveDirectoryConfiguration
a} :: CreateFileSystemWindowsConfiguration)

-- | The preferred start time to perform weekly maintenance, formatted
-- d:HH:MM in the UTC time zone, where d is the weekday number, from 1
-- through 7, beginning with Monday and ending with Sunday.
createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime :: Lens' CreateFileSystemWindowsConfiguration (Maybe Text)
createFileSystemWindowsConfiguration_weeklyMaintenanceStartTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Maybe Text
weeklyMaintenanceStartTime :: Maybe Text
$sel:weeklyMaintenanceStartTime:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
weeklyMaintenanceStartTime} -> Maybe Text
weeklyMaintenanceStartTime) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Maybe Text
a -> CreateFileSystemWindowsConfiguration
s {$sel:weeklyMaintenanceStartTime:CreateFileSystemWindowsConfiguration' :: Maybe Text
weeklyMaintenanceStartTime = Maybe Text
a} :: CreateFileSystemWindowsConfiguration)

-- | Sets the throughput capacity of an Amazon FSx file system, measured in
-- megabytes per second (MB\/s), in 2 to the /n/th increments, between 2^3
-- (8) and 2^11 (2048).
createFileSystemWindowsConfiguration_throughputCapacity :: Lens.Lens' CreateFileSystemWindowsConfiguration Prelude.Natural
createFileSystemWindowsConfiguration_throughputCapacity :: Lens' CreateFileSystemWindowsConfiguration Natural
createFileSystemWindowsConfiguration_throughputCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateFileSystemWindowsConfiguration' {Natural
throughputCapacity :: Natural
$sel:throughputCapacity:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Natural
throughputCapacity} -> Natural
throughputCapacity) (\s :: CreateFileSystemWindowsConfiguration
s@CreateFileSystemWindowsConfiguration' {} Natural
a -> CreateFileSystemWindowsConfiguration
s {$sel:throughputCapacity:CreateFileSystemWindowsConfiguration' :: Natural
throughputCapacity = Natural
a} :: CreateFileSystemWindowsConfiguration)

instance
  Prelude.Hashable
    CreateFileSystemWindowsConfiguration
  where
  hashWithSalt :: Int -> CreateFileSystemWindowsConfiguration -> Int
hashWithSalt
    Int
_salt
    CreateFileSystemWindowsConfiguration' {Natural
Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe SelfManagedActiveDirectoryConfiguration
Maybe WindowsAuditLogCreateConfiguration
Maybe WindowsDeploymentType
throughputCapacity :: Natural
weeklyMaintenanceStartTime :: Maybe Text
selfManagedActiveDirectoryConfiguration :: Maybe SelfManagedActiveDirectoryConfiguration
preferredSubnetId :: Maybe Text
deploymentType :: Maybe WindowsDeploymentType
dailyAutomaticBackupStartTime :: Maybe Text
copyTagsToBackups :: Maybe Bool
automaticBackupRetentionDays :: Maybe Natural
auditLogConfiguration :: Maybe WindowsAuditLogCreateConfiguration
aliases :: Maybe [Text]
activeDirectoryId :: Maybe Text
$sel:throughputCapacity:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Natural
$sel:weeklyMaintenanceStartTime:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:selfManagedActiveDirectoryConfiguration:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration
-> Maybe SelfManagedActiveDirectoryConfiguration
$sel:preferredSubnetId:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:deploymentType:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe WindowsDeploymentType
$sel:dailyAutomaticBackupStartTime:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:copyTagsToBackups:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Bool
$sel:automaticBackupRetentionDays:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Natural
$sel:auditLogConfiguration:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration
-> Maybe WindowsAuditLogCreateConfiguration
$sel:aliases:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe [Text]
$sel:activeDirectoryId:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
activeDirectoryId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
aliases
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe WindowsAuditLogCreateConfiguration
auditLogConfiguration
        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 Text
dailyAutomaticBackupStartTime
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe WindowsDeploymentType
deploymentType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
preferredSubnetId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
weeklyMaintenanceStartTime
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
throughputCapacity

instance
  Prelude.NFData
    CreateFileSystemWindowsConfiguration
  where
  rnf :: CreateFileSystemWindowsConfiguration -> ()
rnf CreateFileSystemWindowsConfiguration' {Natural
Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe SelfManagedActiveDirectoryConfiguration
Maybe WindowsAuditLogCreateConfiguration
Maybe WindowsDeploymentType
throughputCapacity :: Natural
weeklyMaintenanceStartTime :: Maybe Text
selfManagedActiveDirectoryConfiguration :: Maybe SelfManagedActiveDirectoryConfiguration
preferredSubnetId :: Maybe Text
deploymentType :: Maybe WindowsDeploymentType
dailyAutomaticBackupStartTime :: Maybe Text
copyTagsToBackups :: Maybe Bool
automaticBackupRetentionDays :: Maybe Natural
auditLogConfiguration :: Maybe WindowsAuditLogCreateConfiguration
aliases :: Maybe [Text]
activeDirectoryId :: Maybe Text
$sel:throughputCapacity:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Natural
$sel:weeklyMaintenanceStartTime:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:selfManagedActiveDirectoryConfiguration:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration
-> Maybe SelfManagedActiveDirectoryConfiguration
$sel:preferredSubnetId:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:deploymentType:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe WindowsDeploymentType
$sel:dailyAutomaticBackupStartTime:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:copyTagsToBackups:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Bool
$sel:automaticBackupRetentionDays:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Natural
$sel:auditLogConfiguration:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration
-> Maybe WindowsAuditLogCreateConfiguration
$sel:aliases:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe [Text]
$sel:activeDirectoryId:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
activeDirectoryId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
aliases
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe WindowsAuditLogCreateConfiguration
auditLogConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` 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 Text
dailyAutomaticBackupStartTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe WindowsDeploymentType
deploymentType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
preferredSubnetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
weeklyMaintenanceStartTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
throughputCapacity

instance
  Data.ToJSON
    CreateFileSystemWindowsConfiguration
  where
  toJSON :: CreateFileSystemWindowsConfiguration -> Value
toJSON CreateFileSystemWindowsConfiguration' {Natural
Maybe Bool
Maybe Natural
Maybe [Text]
Maybe Text
Maybe SelfManagedActiveDirectoryConfiguration
Maybe WindowsAuditLogCreateConfiguration
Maybe WindowsDeploymentType
throughputCapacity :: Natural
weeklyMaintenanceStartTime :: Maybe Text
selfManagedActiveDirectoryConfiguration :: Maybe SelfManagedActiveDirectoryConfiguration
preferredSubnetId :: Maybe Text
deploymentType :: Maybe WindowsDeploymentType
dailyAutomaticBackupStartTime :: Maybe Text
copyTagsToBackups :: Maybe Bool
automaticBackupRetentionDays :: Maybe Natural
auditLogConfiguration :: Maybe WindowsAuditLogCreateConfiguration
aliases :: Maybe [Text]
activeDirectoryId :: Maybe Text
$sel:throughputCapacity:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Natural
$sel:weeklyMaintenanceStartTime:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:selfManagedActiveDirectoryConfiguration:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration
-> Maybe SelfManagedActiveDirectoryConfiguration
$sel:preferredSubnetId:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:deploymentType:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe WindowsDeploymentType
$sel:dailyAutomaticBackupStartTime:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
$sel:copyTagsToBackups:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Bool
$sel:automaticBackupRetentionDays:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Natural
$sel:auditLogConfiguration:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration
-> Maybe WindowsAuditLogCreateConfiguration
$sel:aliases:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe [Text]
$sel:activeDirectoryId:CreateFileSystemWindowsConfiguration' :: CreateFileSystemWindowsConfiguration -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ActiveDirectoryId" 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
activeDirectoryId,
            (Key
"Aliases" 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]
aliases,
            (Key
"AuditLogConfiguration" 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 WindowsAuditLogCreateConfiguration
auditLogConfiguration,
            (Key
"AutomaticBackupRetentionDays" 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 Natural
automaticBackupRetentionDays,
            (Key
"CopyTagsToBackups" 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 Bool
copyTagsToBackups,
            (Key
"DailyAutomaticBackupStartTime" 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
dailyAutomaticBackupStartTime,
            (Key
"DeploymentType" 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 WindowsDeploymentType
deploymentType,
            (Key
"PreferredSubnetId" 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
preferredSubnetId,
            (Key
"SelfManagedActiveDirectoryConfiguration" 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 SelfManagedActiveDirectoryConfiguration
selfManagedActiveDirectoryConfiguration,
            (Key
"WeeklyMaintenanceStartTime" 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
weeklyMaintenanceStartTime,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"ThroughputCapacity" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Natural
throughputCapacity)
          ]
      )