packages feed

amazonka-fsx-2.0: gen/Amazonka/FSx/Types/CreateFileSystemWindowsConfiguration.hs

{-# 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.
    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.
    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.
    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.
    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.
    copyTagsToBackups :: Prelude.Maybe Prelude.Bool,
    -- | The preferred time to take daily automatic backups, formatted HH:MM in
    -- the UTC time zone.
    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>.
    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.
    preferredSubnetId :: Prelude.Maybe Prelude.Text,
    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.
    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).
    throughputCapacity :: Prelude.Natural
  }
  deriving (Prelude.Eq, Prelude.Show, 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
  pThroughputCapacity_ =
    CreateFileSystemWindowsConfiguration'
      { activeDirectoryId =
          Prelude.Nothing,
        aliases = Prelude.Nothing,
        auditLogConfiguration =
          Prelude.Nothing,
        automaticBackupRetentionDays =
          Prelude.Nothing,
        copyTagsToBackups = Prelude.Nothing,
        dailyAutomaticBackupStartTime =
          Prelude.Nothing,
        deploymentType = Prelude.Nothing,
        preferredSubnetId = Prelude.Nothing,
        selfManagedActiveDirectoryConfiguration =
          Prelude.Nothing,
        weeklyMaintenanceStartTime =
          Prelude.Nothing,
        throughputCapacity =
          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.lens (\CreateFileSystemWindowsConfiguration' {activeDirectoryId} -> activeDirectoryId) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {activeDirectoryId = 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.lens (\CreateFileSystemWindowsConfiguration' {aliases} -> aliases) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {aliases = a} :: CreateFileSystemWindowsConfiguration) Prelude.. Lens.mapping 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.lens (\CreateFileSystemWindowsConfiguration' {auditLogConfiguration} -> auditLogConfiguration) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {auditLogConfiguration = 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.lens (\CreateFileSystemWindowsConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {automaticBackupRetentionDays = 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.lens (\CreateFileSystemWindowsConfiguration' {copyTagsToBackups} -> copyTagsToBackups) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {copyTagsToBackups = 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.lens (\CreateFileSystemWindowsConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {dailyAutomaticBackupStartTime = 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.lens (\CreateFileSystemWindowsConfiguration' {deploymentType} -> deploymentType) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {deploymentType = 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.lens (\CreateFileSystemWindowsConfiguration' {preferredSubnetId} -> preferredSubnetId) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {preferredSubnetId = a} :: CreateFileSystemWindowsConfiguration)

-- | Undocumented member.
createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration :: Lens.Lens' CreateFileSystemWindowsConfiguration (Prelude.Maybe SelfManagedActiveDirectoryConfiguration)
createFileSystemWindowsConfiguration_selfManagedActiveDirectoryConfiguration = Lens.lens (\CreateFileSystemWindowsConfiguration' {selfManagedActiveDirectoryConfiguration} -> selfManagedActiveDirectoryConfiguration) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {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.lens (\CreateFileSystemWindowsConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {weeklyMaintenanceStartTime = 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.lens (\CreateFileSystemWindowsConfiguration' {throughputCapacity} -> throughputCapacity) (\s@CreateFileSystemWindowsConfiguration' {} a -> s {throughputCapacity = a} :: CreateFileSystemWindowsConfiguration)

instance
  Prelude.Hashable
    CreateFileSystemWindowsConfiguration
  where
  hashWithSalt
    _salt
    CreateFileSystemWindowsConfiguration' {..} =
      _salt
        `Prelude.hashWithSalt` activeDirectoryId
        `Prelude.hashWithSalt` aliases
        `Prelude.hashWithSalt` auditLogConfiguration
        `Prelude.hashWithSalt` automaticBackupRetentionDays
        `Prelude.hashWithSalt` copyTagsToBackups
        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
        `Prelude.hashWithSalt` deploymentType
        `Prelude.hashWithSalt` preferredSubnetId
        `Prelude.hashWithSalt` selfManagedActiveDirectoryConfiguration
        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
        `Prelude.hashWithSalt` throughputCapacity

instance
  Prelude.NFData
    CreateFileSystemWindowsConfiguration
  where
  rnf CreateFileSystemWindowsConfiguration' {..} =
    Prelude.rnf activeDirectoryId
      `Prelude.seq` Prelude.rnf aliases
      `Prelude.seq` Prelude.rnf auditLogConfiguration
      `Prelude.seq` Prelude.rnf automaticBackupRetentionDays
      `Prelude.seq` Prelude.rnf copyTagsToBackups
      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
      `Prelude.seq` Prelude.rnf deploymentType
      `Prelude.seq` Prelude.rnf preferredSubnetId
      `Prelude.seq` Prelude.rnf selfManagedActiveDirectoryConfiguration
      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
      `Prelude.seq` Prelude.rnf throughputCapacity

instance
  Data.ToJSON
    CreateFileSystemWindowsConfiguration
  where
  toJSON CreateFileSystemWindowsConfiguration' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("ActiveDirectoryId" Data..=)
              Prelude.<$> activeDirectoryId,
            ("Aliases" Data..=) Prelude.<$> aliases,
            ("AuditLogConfiguration" Data..=)
              Prelude.<$> auditLogConfiguration,
            ("AutomaticBackupRetentionDays" Data..=)
              Prelude.<$> automaticBackupRetentionDays,
            ("CopyTagsToBackups" Data..=)
              Prelude.<$> copyTagsToBackups,
            ("DailyAutomaticBackupStartTime" Data..=)
              Prelude.<$> dailyAutomaticBackupStartTime,
            ("DeploymentType" Data..=)
              Prelude.<$> deploymentType,
            ("PreferredSubnetId" Data..=)
              Prelude.<$> preferredSubnetId,
            ("SelfManagedActiveDirectoryConfiguration" Data..=)
              Prelude.<$> selfManagedActiveDirectoryConfiguration,
            ("WeeklyMaintenanceStartTime" Data..=)
              Prelude.<$> weeklyMaintenanceStartTime,
            Prelude.Just
              ("ThroughputCapacity" Data..= throughputCapacity)
          ]
      )