packages feed

amazonka-fsx-2.0: gen/Amazonka/FSx/Types/CreateFileSystemOntapConfiguration.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.CreateFileSystemOntapConfiguration
-- 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.CreateFileSystemOntapConfiguration 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.OntapDeploymentType
import qualified Amazonka.Prelude as Prelude

-- | The ONTAP configuration properties of the FSx for ONTAP file system that
-- you are creating.
--
-- /See:/ 'newCreateFileSystemOntapConfiguration' smart constructor.
data CreateFileSystemOntapConfiguration = CreateFileSystemOntapConfiguration'
  { automaticBackupRetentionDays :: Prelude.Maybe Prelude.Natural,
    dailyAutomaticBackupStartTime :: Prelude.Maybe Prelude.Text,
    -- | The SSD IOPS configuration for the FSx for ONTAP file system.
    diskIopsConfiguration :: Prelude.Maybe DiskIopsConfiguration,
    -- | (Multi-AZ only) Specifies the IP address range in which the endpoints to
    -- access your file system will be created. By default in the Amazon FSx
    -- API, Amazon FSx selects an unused IP address range for you from the
    -- 198.19.* range. By default in the Amazon FSx console, Amazon FSx chooses
    -- the last 64 IP addresses from the VPC’s primary CIDR range to use as the
    -- endpoint IP address range for the file system. You can have overlapping
    -- endpoint IP addresses for file systems deployed in the same VPC\/route
    -- tables.
    endpointIpAddressRange :: Prelude.Maybe Prelude.Text,
    -- | The ONTAP administrative password for the @fsxadmin@ user with which you
    -- administer your file system using the NetApp ONTAP CLI and REST API.
    fsxAdminPassword :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
    -- the subnet in which you want the preferred file server to be located.
    preferredSubnetId :: Prelude.Maybe Prelude.Text,
    -- | (Multi-AZ only) Specifies the virtual private cloud (VPC) route tables
    -- in which your file system\'s endpoints will be created. You should
    -- specify all VPC route tables associated with the subnets in which your
    -- clients are located. By default, Amazon FSx selects your VPC\'s default
    -- route table.
    routeTableIds :: Prelude.Maybe [Prelude.Text],
    weeklyMaintenanceStartTime :: Prelude.Maybe Prelude.Text,
    -- | Specifies the FSx for ONTAP file system deployment type to use in
    -- creating the file system.
    --
    -- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
    --     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
    --     unavailability.
    --
    -- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
    --
    -- For information about the use cases for Multi-AZ and Single-AZ
    -- deployments, refer to
    -- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-AZ.html Choosing a file system deployment type>.
    deploymentType :: OntapDeploymentType,
    -- | Sets the throughput capacity for the file system that you\'re creating.
    -- Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps.
    throughputCapacity :: Prelude.Natural
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CreateFileSystemOntapConfiguration' 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', 'createFileSystemOntapConfiguration_automaticBackupRetentionDays' - Undocumented member.
--
-- 'dailyAutomaticBackupStartTime', 'createFileSystemOntapConfiguration_dailyAutomaticBackupStartTime' - Undocumented member.
--
-- 'diskIopsConfiguration', 'createFileSystemOntapConfiguration_diskIopsConfiguration' - The SSD IOPS configuration for the FSx for ONTAP file system.
--
-- 'endpointIpAddressRange', 'createFileSystemOntapConfiguration_endpointIpAddressRange' - (Multi-AZ only) Specifies the IP address range in which the endpoints to
-- access your file system will be created. By default in the Amazon FSx
-- API, Amazon FSx selects an unused IP address range for you from the
-- 198.19.* range. By default in the Amazon FSx console, Amazon FSx chooses
-- the last 64 IP addresses from the VPC’s primary CIDR range to use as the
-- endpoint IP address range for the file system. You can have overlapping
-- endpoint IP addresses for file systems deployed in the same VPC\/route
-- tables.
--
-- 'fsxAdminPassword', 'createFileSystemOntapConfiguration_fsxAdminPassword' - The ONTAP administrative password for the @fsxadmin@ user with which you
-- administer your file system using the NetApp ONTAP CLI and REST API.
--
-- 'preferredSubnetId', 'createFileSystemOntapConfiguration_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.
--
-- 'routeTableIds', 'createFileSystemOntapConfiguration_routeTableIds' - (Multi-AZ only) Specifies the virtual private cloud (VPC) route tables
-- in which your file system\'s endpoints will be created. You should
-- specify all VPC route tables associated with the subnets in which your
-- clients are located. By default, Amazon FSx selects your VPC\'s default
-- route table.
--
-- 'weeklyMaintenanceStartTime', 'createFileSystemOntapConfiguration_weeklyMaintenanceStartTime' - Undocumented member.
--
-- 'deploymentType', 'createFileSystemOntapConfiguration_deploymentType' - Specifies the FSx for ONTAP file system deployment type to use in
-- creating the file system.
--
-- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
--     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
--     unavailability.
--
-- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
--
-- For information about the use cases for Multi-AZ and Single-AZ
-- deployments, refer to
-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-AZ.html Choosing a file system deployment type>.
--
-- 'throughputCapacity', 'createFileSystemOntapConfiguration_throughputCapacity' - Sets the throughput capacity for the file system that you\'re creating.
-- Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps.
newCreateFileSystemOntapConfiguration ::
  -- | 'deploymentType'
  OntapDeploymentType ->
  -- | 'throughputCapacity'
  Prelude.Natural ->
  CreateFileSystemOntapConfiguration
newCreateFileSystemOntapConfiguration
  pDeploymentType_
  pThroughputCapacity_ =
    CreateFileSystemOntapConfiguration'
      { automaticBackupRetentionDays =
          Prelude.Nothing,
        dailyAutomaticBackupStartTime =
          Prelude.Nothing,
        diskIopsConfiguration = Prelude.Nothing,
        endpointIpAddressRange =
          Prelude.Nothing,
        fsxAdminPassword = Prelude.Nothing,
        preferredSubnetId = Prelude.Nothing,
        routeTableIds = Prelude.Nothing,
        weeklyMaintenanceStartTime =
          Prelude.Nothing,
        deploymentType = pDeploymentType_,
        throughputCapacity =
          pThroughputCapacity_
      }

-- | Undocumented member.
createFileSystemOntapConfiguration_automaticBackupRetentionDays :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Natural)
createFileSystemOntapConfiguration_automaticBackupRetentionDays = Lens.lens (\CreateFileSystemOntapConfiguration' {automaticBackupRetentionDays} -> automaticBackupRetentionDays) (\s@CreateFileSystemOntapConfiguration' {} a -> s {automaticBackupRetentionDays = a} :: CreateFileSystemOntapConfiguration)

-- | Undocumented member.
createFileSystemOntapConfiguration_dailyAutomaticBackupStartTime :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemOntapConfiguration_dailyAutomaticBackupStartTime = Lens.lens (\CreateFileSystemOntapConfiguration' {dailyAutomaticBackupStartTime} -> dailyAutomaticBackupStartTime) (\s@CreateFileSystemOntapConfiguration' {} a -> s {dailyAutomaticBackupStartTime = a} :: CreateFileSystemOntapConfiguration)

-- | The SSD IOPS configuration for the FSx for ONTAP file system.
createFileSystemOntapConfiguration_diskIopsConfiguration :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe DiskIopsConfiguration)
createFileSystemOntapConfiguration_diskIopsConfiguration = Lens.lens (\CreateFileSystemOntapConfiguration' {diskIopsConfiguration} -> diskIopsConfiguration) (\s@CreateFileSystemOntapConfiguration' {} a -> s {diskIopsConfiguration = a} :: CreateFileSystemOntapConfiguration)

-- | (Multi-AZ only) Specifies the IP address range in which the endpoints to
-- access your file system will be created. By default in the Amazon FSx
-- API, Amazon FSx selects an unused IP address range for you from the
-- 198.19.* range. By default in the Amazon FSx console, Amazon FSx chooses
-- the last 64 IP addresses from the VPC’s primary CIDR range to use as the
-- endpoint IP address range for the file system. You can have overlapping
-- endpoint IP addresses for file systems deployed in the same VPC\/route
-- tables.
createFileSystemOntapConfiguration_endpointIpAddressRange :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemOntapConfiguration_endpointIpAddressRange = Lens.lens (\CreateFileSystemOntapConfiguration' {endpointIpAddressRange} -> endpointIpAddressRange) (\s@CreateFileSystemOntapConfiguration' {} a -> s {endpointIpAddressRange = a} :: CreateFileSystemOntapConfiguration)

-- | The ONTAP administrative password for the @fsxadmin@ user with which you
-- administer your file system using the NetApp ONTAP CLI and REST API.
createFileSystemOntapConfiguration_fsxAdminPassword :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemOntapConfiguration_fsxAdminPassword = Lens.lens (\CreateFileSystemOntapConfiguration' {fsxAdminPassword} -> fsxAdminPassword) (\s@CreateFileSystemOntapConfiguration' {} a -> s {fsxAdminPassword = a} :: CreateFileSystemOntapConfiguration) Prelude.. Lens.mapping Data._Sensitive

-- | Required when @DeploymentType@ is set to @MULTI_AZ_1@. This specifies
-- the subnet in which you want the preferred file server to be located.
createFileSystemOntapConfiguration_preferredSubnetId :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemOntapConfiguration_preferredSubnetId = Lens.lens (\CreateFileSystemOntapConfiguration' {preferredSubnetId} -> preferredSubnetId) (\s@CreateFileSystemOntapConfiguration' {} a -> s {preferredSubnetId = a} :: CreateFileSystemOntapConfiguration)

-- | (Multi-AZ only) Specifies the virtual private cloud (VPC) route tables
-- in which your file system\'s endpoints will be created. You should
-- specify all VPC route tables associated with the subnets in which your
-- clients are located. By default, Amazon FSx selects your VPC\'s default
-- route table.
createFileSystemOntapConfiguration_routeTableIds :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe [Prelude.Text])
createFileSystemOntapConfiguration_routeTableIds = Lens.lens (\CreateFileSystemOntapConfiguration' {routeTableIds} -> routeTableIds) (\s@CreateFileSystemOntapConfiguration' {} a -> s {routeTableIds = a} :: CreateFileSystemOntapConfiguration) Prelude.. Lens.mapping Lens.coerced

-- | Undocumented member.
createFileSystemOntapConfiguration_weeklyMaintenanceStartTime :: Lens.Lens' CreateFileSystemOntapConfiguration (Prelude.Maybe Prelude.Text)
createFileSystemOntapConfiguration_weeklyMaintenanceStartTime = Lens.lens (\CreateFileSystemOntapConfiguration' {weeklyMaintenanceStartTime} -> weeklyMaintenanceStartTime) (\s@CreateFileSystemOntapConfiguration' {} a -> s {weeklyMaintenanceStartTime = a} :: CreateFileSystemOntapConfiguration)

-- | Specifies the FSx for ONTAP file system deployment type to use in
-- creating the file system.
--
-- -   @MULTI_AZ_1@ - (Default) A high availability file system configured
--     for Multi-AZ redundancy to tolerate temporary Availability Zone (AZ)
--     unavailability.
--
-- -   @SINGLE_AZ_1@ - A file system configured for Single-AZ redundancy.
--
-- For information about the use cases for Multi-AZ and Single-AZ
-- deployments, refer to
-- <https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-AZ.html Choosing a file system deployment type>.
createFileSystemOntapConfiguration_deploymentType :: Lens.Lens' CreateFileSystemOntapConfiguration OntapDeploymentType
createFileSystemOntapConfiguration_deploymentType = Lens.lens (\CreateFileSystemOntapConfiguration' {deploymentType} -> deploymentType) (\s@CreateFileSystemOntapConfiguration' {} a -> s {deploymentType = a} :: CreateFileSystemOntapConfiguration)

-- | Sets the throughput capacity for the file system that you\'re creating.
-- Valid values are 128, 256, 512, 1024, 2048, and 4096 MBps.
createFileSystemOntapConfiguration_throughputCapacity :: Lens.Lens' CreateFileSystemOntapConfiguration Prelude.Natural
createFileSystemOntapConfiguration_throughputCapacity = Lens.lens (\CreateFileSystemOntapConfiguration' {throughputCapacity} -> throughputCapacity) (\s@CreateFileSystemOntapConfiguration' {} a -> s {throughputCapacity = a} :: CreateFileSystemOntapConfiguration)

instance
  Prelude.Hashable
    CreateFileSystemOntapConfiguration
  where
  hashWithSalt
    _salt
    CreateFileSystemOntapConfiguration' {..} =
      _salt
        `Prelude.hashWithSalt` automaticBackupRetentionDays
        `Prelude.hashWithSalt` dailyAutomaticBackupStartTime
        `Prelude.hashWithSalt` diskIopsConfiguration
        `Prelude.hashWithSalt` endpointIpAddressRange
        `Prelude.hashWithSalt` fsxAdminPassword
        `Prelude.hashWithSalt` preferredSubnetId
        `Prelude.hashWithSalt` routeTableIds
        `Prelude.hashWithSalt` weeklyMaintenanceStartTime
        `Prelude.hashWithSalt` deploymentType
        `Prelude.hashWithSalt` throughputCapacity

instance
  Prelude.NFData
    CreateFileSystemOntapConfiguration
  where
  rnf CreateFileSystemOntapConfiguration' {..} =
    Prelude.rnf automaticBackupRetentionDays
      `Prelude.seq` Prelude.rnf dailyAutomaticBackupStartTime
      `Prelude.seq` Prelude.rnf diskIopsConfiguration
      `Prelude.seq` Prelude.rnf endpointIpAddressRange
      `Prelude.seq` Prelude.rnf fsxAdminPassword
      `Prelude.seq` Prelude.rnf preferredSubnetId
      `Prelude.seq` Prelude.rnf routeTableIds
      `Prelude.seq` Prelude.rnf weeklyMaintenanceStartTime
      `Prelude.seq` Prelude.rnf deploymentType
      `Prelude.seq` Prelude.rnf throughputCapacity

instance
  Data.ToJSON
    CreateFileSystemOntapConfiguration
  where
  toJSON CreateFileSystemOntapConfiguration' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("AutomaticBackupRetentionDays" Data..=)
              Prelude.<$> automaticBackupRetentionDays,
            ("DailyAutomaticBackupStartTime" Data..=)
              Prelude.<$> dailyAutomaticBackupStartTime,
            ("DiskIopsConfiguration" Data..=)
              Prelude.<$> diskIopsConfiguration,
            ("EndpointIpAddressRange" Data..=)
              Prelude.<$> endpointIpAddressRange,
            ("FsxAdminPassword" Data..=)
              Prelude.<$> fsxAdminPassword,
            ("PreferredSubnetId" Data..=)
              Prelude.<$> preferredSubnetId,
            ("RouteTableIds" Data..=) Prelude.<$> routeTableIds,
            ("WeeklyMaintenanceStartTime" Data..=)
              Prelude.<$> weeklyMaintenanceStartTime,
            Prelude.Just
              ("DeploymentType" Data..= deploymentType),
            Prelude.Just
              ("ThroughputCapacity" Data..= throughputCapacity)
          ]
      )