All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.cloudshiftdev.awscdk.services.fsx.CfnFileSystemProps.kt Maven / Gradle / Ivy

The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")

package io.cloudshiftdev.awscdk.services.fsx

import io.cloudshiftdev.awscdk.CfnTag
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.Number
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Properties for defining a `CfnFileSystem`.
 *
 * Example:
 *
 * ```
 * // The code below shows an example of how to instantiate this type.
 * // The values are placeholders you should change.
 * import io.cloudshiftdev.awscdk.services.fsx.*;
 * CfnFileSystemProps cfnFileSystemProps = CfnFileSystemProps.builder()
 * .fileSystemType("fileSystemType")
 * .subnetIds(List.of("subnetIds"))
 * // the properties below are optional
 * .backupId("backupId")
 * .fileSystemTypeVersion("fileSystemTypeVersion")
 * .kmsKeyId("kmsKeyId")
 * .lustreConfiguration(LustreConfigurationProperty.builder()
 * .autoImportPolicy("autoImportPolicy")
 * .automaticBackupRetentionDays(123)
 * .copyTagsToBackups(false)
 * .dailyAutomaticBackupStartTime("dailyAutomaticBackupStartTime")
 * .dataCompressionType("dataCompressionType")
 * .deploymentType("deploymentType")
 * .driveCacheType("driveCacheType")
 * .exportPath("exportPath")
 * .importedFileChunkSize(123)
 * .importPath("importPath")
 * .metadataConfiguration(MetadataConfigurationProperty.builder()
 * .iops(123)
 * .mode("mode")
 * .build())
 * .perUnitStorageThroughput(123)
 * .weeklyMaintenanceStartTime("weeklyMaintenanceStartTime")
 * .build())
 * .ontapConfiguration(OntapConfigurationProperty.builder()
 * .deploymentType("deploymentType")
 * // the properties below are optional
 * .automaticBackupRetentionDays(123)
 * .dailyAutomaticBackupStartTime("dailyAutomaticBackupStartTime")
 * .diskIopsConfiguration(DiskIopsConfigurationProperty.builder()
 * .iops(123)
 * .mode("mode")
 * .build())
 * .endpointIpAddressRange("endpointIpAddressRange")
 * .fsxAdminPassword("fsxAdminPassword")
 * .haPairs(123)
 * .preferredSubnetId("preferredSubnetId")
 * .routeTableIds(List.of("routeTableIds"))
 * .throughputCapacity(123)
 * .throughputCapacityPerHaPair(123)
 * .weeklyMaintenanceStartTime("weeklyMaintenanceStartTime")
 * .build())
 * .openZfsConfiguration(OpenZFSConfigurationProperty.builder()
 * .deploymentType("deploymentType")
 * // the properties below are optional
 * .automaticBackupRetentionDays(123)
 * .copyTagsToBackups(false)
 * .copyTagsToVolumes(false)
 * .dailyAutomaticBackupStartTime("dailyAutomaticBackupStartTime")
 * .diskIopsConfiguration(DiskIopsConfigurationProperty.builder()
 * .iops(123)
 * .mode("mode")
 * .build())
 * .endpointIpAddressRange("endpointIpAddressRange")
 * .options(List.of("options"))
 * .preferredSubnetId("preferredSubnetId")
 * .rootVolumeConfiguration(RootVolumeConfigurationProperty.builder()
 * .copyTagsToSnapshots(false)
 * .dataCompressionType("dataCompressionType")
 * .nfsExports(List.of(NfsExportsProperty.builder()
 * .clientConfigurations(List.of(ClientConfigurationsProperty.builder()
 * .clients("clients")
 * .options(List.of("options"))
 * .build()))
 * .build()))
 * .readOnly(false)
 * .recordSizeKiB(123)
 * .userAndGroupQuotas(List.of(UserAndGroupQuotasProperty.builder()
 * .id(123)
 * .storageCapacityQuotaGiB(123)
 * .type("type")
 * .build()))
 * .build())
 * .routeTableIds(List.of("routeTableIds"))
 * .throughputCapacity(123)
 * .weeklyMaintenanceStartTime("weeklyMaintenanceStartTime")
 * .build())
 * .securityGroupIds(List.of("securityGroupIds"))
 * .storageCapacity(123)
 * .storageType("storageType")
 * .tags(List.of(CfnTag.builder()
 * .key("key")
 * .value("value")
 * .build()))
 * .windowsConfiguration(WindowsConfigurationProperty.builder()
 * .throughputCapacity(123)
 * // the properties below are optional
 * .activeDirectoryId("activeDirectoryId")
 * .aliases(List.of("aliases"))
 * .auditLogConfiguration(AuditLogConfigurationProperty.builder()
 * .fileAccessAuditLogLevel("fileAccessAuditLogLevel")
 * .fileShareAccessAuditLogLevel("fileShareAccessAuditLogLevel")
 * // the properties below are optional
 * .auditLogDestination("auditLogDestination")
 * .build())
 * .automaticBackupRetentionDays(123)
 * .copyTagsToBackups(false)
 * .dailyAutomaticBackupStartTime("dailyAutomaticBackupStartTime")
 * .deploymentType("deploymentType")
 * .diskIopsConfiguration(DiskIopsConfigurationProperty.builder()
 * .iops(123)
 * .mode("mode")
 * .build())
 * .preferredSubnetId("preferredSubnetId")
 * .selfManagedActiveDirectoryConfiguration(SelfManagedActiveDirectoryConfigurationProperty.builder()
 * .dnsIps(List.of("dnsIps"))
 * .domainName("domainName")
 * .fileSystemAdministratorsGroup("fileSystemAdministratorsGroup")
 * .organizationalUnitDistinguishedName("organizationalUnitDistinguishedName")
 * .password("password")
 * .userName("userName")
 * .build())
 * .weeklyMaintenanceStartTime("weeklyMaintenanceStartTime")
 * .build())
 * .build();
 * ```
 *
 * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html)
 */
public interface CfnFileSystemProps {
  /**
   * The ID of the file system backup that you are using to create a file system.
   *
   * For more information, see
   * [CreateFileSystemFromBackup](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemFromBackup.html)
   * .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-backupid)
   */
  public fun backupId(): String? = unwrap(this).getBackupId()

  /**
   * The type of Amazon FSx file system, which can be `LUSTRE` , `WINDOWS` , `ONTAP` , or `OPENZFS`
   * .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-filesystemtype)
   */
  public fun fileSystemType(): String

  /**
   * For FSx for Lustre file systems, sets the Lustre version for the file system that you're
   * creating.
   *
   * Valid values are `2.10` , `2.12` , and `2.15` :
   *
   * * `2.10` is supported by the Scratch and Persistent_1 Lustre deployment types.
   * * `2.12` is supported by all Lustre deployment types, except for `PERSISTENT_2` with a metadata
   * configuration mode.
   * * `2.15` is supported by all Lustre deployment types and is recommended for all new file
   * systems.
   *
   * Default value is `2.10` , except for the following deployments:
   *
   * * Default value is `2.12` when `DeploymentType` is set to `PERSISTENT_2` without a metadata
   * configuration mode.
   * * Default value is `2.15` when `DeploymentType` is set to `PERSISTENT_2` with a metadata
   * configuration mode.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-filesystemtypeversion)
   */
  public fun fileSystemTypeVersion(): String? = unwrap(this).getFileSystemTypeVersion()

  /**
   * The ID of the AWS Key Management Service ( AWS KMS ) key used to encrypt Amazon FSx file system
   * data.
   *
   * Used as follows with Amazon FSx file system types:
   *
   * * Amazon FSx for Lustre `PERSISTENT_1` and `PERSISTENT_2` deployment types only.
   *
   * `SCRATCH_1` and `SCRATCH_2` types are encrypted using the Amazon FSx service AWS KMS key for
   * your account.
   *
   * * Amazon FSx for NetApp ONTAP
   * * Amazon FSx for OpenZFS
   * * Amazon FSx for Windows File Server
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-kmskeyid)
   */
  public fun kmsKeyId(): String? = unwrap(this).getKmsKeyId()

  /**
   * The Lustre configuration for the file system being created.
   *
   *
   * The following parameters are not supported when creating Lustre file systems with a data
   * repository association.
   *
   * * `AutoImportPolicy`
   * * `ExportPath`
   * * `ImportedChunkSize`
   * * `ImportPath`
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-lustreconfiguration)
   */
  public fun lustreConfiguration(): Any? = unwrap(this).getLustreConfiguration()

  /**
   * The ONTAP configuration properties of the FSx for ONTAP file system that you are creating.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-ontapconfiguration)
   */
  public fun ontapConfiguration(): Any? = unwrap(this).getOntapConfiguration()

  /**
   * The Amazon FSx for OpenZFS configuration properties for the file system that you are creating.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-openzfsconfiguration)
   */
  public fun openZfsConfiguration(): Any? = unwrap(this).getOpenZfsConfiguration()

  /**
   * A list of IDs specifying the security groups to apply to all network interfaces created for
   * file system access.
   *
   * This list isn't returned in later requests to describe the file system.
   *
   *
   * You must specify a security group if you are creating a Multi-AZ FSx for ONTAP file system in a
   * VPC subnet that has been shared with you.
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-securitygroupids)
   */
  public fun securityGroupIds(): List = unwrap(this).getSecurityGroupIds() ?: emptyList()

  /**
   * Sets the storage capacity of the file system that you're creating.
   *
   * `StorageCapacity` is required if you are creating a new file system. It is not required if you
   * are creating a file system by restoring a backup.
   *
   * *FSx for Lustre file systems* - The amount of storage capacity that you can configure depends
   * on the value that you set for `StorageType` and the Lustre `DeploymentType` , as follows:
   *
   * * For `SCRATCH_2` , `PERSISTENT_2` and `PERSISTENT_1` deployment types using SSD storage type,
   * the valid values are 1200 GiB, 2400 GiB, and increments of 2400 GiB.
   * * For `PERSISTENT_1` HDD file systems, valid values are increments of 6000 GiB for 12 MB/s/TiB
   * file systems and increments of 1800 GiB for 40 MB/s/TiB file systems.
   * * For `SCRATCH_1` deployment type, valid values are 1200 GiB, 2400 GiB, and increments of 3600
   * GiB.
   *
   * *FSx for ONTAP file systems* - The amount of SSD storage capacity that you can configure
   * depends on the value of the `HAPairs` property. The minimum value is calculated as 1,024 GiB *
   * HAPairs and the maximum is calculated as 524,288 GiB * HAPairs, up to a maximum amount of SSD
   * storage capacity of 1,048,576 GiB (1 pebibyte).
   *
   * *FSx for OpenZFS file systems* - The amount of storage capacity that you can configure is from
   * 64 GiB up to 524,288 GiB (512 TiB). If you are creating a file system from a backup, you can
   * specify a storage capacity equal to or greater than the original file system's storage capacity.
   *
   * *FSx for Windows File Server file systems* - The amount of storage capacity that you can
   * configure depends on the value that you set for `StorageType` as follows:
   *
   * * For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
   * * For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-storagecapacity)
   */
  public fun storageCapacity(): Number? = unwrap(this).getStorageCapacity()

  /**
   * Sets the storage type for the file system that you're creating. Valid values are `SSD` and
   * `HDD` .
   *
   * * Set to `SSD` to use solid state drive storage. SSD is supported on all Windows, Lustre,
   * ONTAP, and OpenZFS deployment types.
   * * Set to `HDD` to use hard disk drive storage. HDD is supported on `SINGLE_AZ_2` and
   * `MULTI_AZ_1` Windows file system deployment types, and on `PERSISTENT_1` Lustre file system
   * deployment types.
   *
   * Default value is `SSD` . For more information, see [Storage type
   * options](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options)
   * in the *FSx for Windows File Server User Guide* and [Multiple storage
   * options](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options) in the
   * *FSx for Lustre User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-storagetype)
   */
  public fun storageType(): String? = unwrap(this).getStorageType()

  /**
   * Specifies the IDs of the subnets that the file system will be accessible from.
   *
   * For Windows and ONTAP `MULTI_AZ_1` deployment types,provide exactly two subnet IDs, one for the
   * preferred file server and one for the standby file server. You specify one of these subnets as the
   * preferred subnet using the `WindowsConfiguration > PreferredSubnetID` or `OntapConfiguration
   * > PreferredSubnetID` properties. For more information about Multi-AZ file system configuration,
   * see [Availability and durability: Single-AZ and Multi-AZ file
   * systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) in
   * the *Amazon FSx for Windows User Guide* and [Availability and
   * durability](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html) in
   * the *Amazon FSx for ONTAP User Guide* .
   *
   * For Windows `SINGLE_AZ_1` and `SINGLE_AZ_2` and all Lustre deployment types, provide exactly
   * one subnet ID. The file server is launched in that subnet's Availability Zone.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-subnetids)
   */
  public fun subnetIds(): List

  /**
   * The tags to associate with the file system.
   *
   * For more information, see [Tagging your Amazon FSx
   * resources](https://docs.aws.amazon.com/fsx/latest/LustreGuide/tag-resources.html) in the *Amazon
   * FSx for Lustre User Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-tags)
   */
  public fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

  /**
   * The configuration object for the Microsoft Windows file system you are creating.
   *
   * This value is required if `FileSystemType` is set to `WINDOWS` .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-windowsconfiguration)
   */
  public fun windowsConfiguration(): Any? = unwrap(this).getWindowsConfiguration()

  /**
   * A builder for [CfnFileSystemProps]
   */
  @CdkDslMarker
  public interface Builder {
    /**
     * @param backupId The ID of the file system backup that you are using to create a file system.
     * For more information, see
     * [CreateFileSystemFromBackup](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemFromBackup.html)
     * .
     */
    public fun backupId(backupId: String)

    /**
     * @param fileSystemType The type of Amazon FSx file system, which can be `LUSTRE` , `WINDOWS` ,
     * `ONTAP` , or `OPENZFS` . 
     */
    public fun fileSystemType(fileSystemType: String)

    /**
     * @param fileSystemTypeVersion For FSx for Lustre file systems, sets the Lustre version for the
     * file system that you're creating.
     * Valid values are `2.10` , `2.12` , and `2.15` :
     *
     * * `2.10` is supported by the Scratch and Persistent_1 Lustre deployment types.
     * * `2.12` is supported by all Lustre deployment types, except for `PERSISTENT_2` with a
     * metadata configuration mode.
     * * `2.15` is supported by all Lustre deployment types and is recommended for all new file
     * systems.
     *
     * Default value is `2.10` , except for the following deployments:
     *
     * * Default value is `2.12` when `DeploymentType` is set to `PERSISTENT_2` without a metadata
     * configuration mode.
     * * Default value is `2.15` when `DeploymentType` is set to `PERSISTENT_2` with a metadata
     * configuration mode.
     */
    public fun fileSystemTypeVersion(fileSystemTypeVersion: String)

    /**
     * @param kmsKeyId The ID of the AWS Key Management Service ( AWS KMS ) key used to encrypt
     * Amazon FSx file system data.
     * Used as follows with Amazon FSx file system types:
     *
     * * Amazon FSx for Lustre `PERSISTENT_1` and `PERSISTENT_2` deployment types only.
     *
     * `SCRATCH_1` and `SCRATCH_2` types are encrypted using the Amazon FSx service AWS KMS key for
     * your account.
     *
     * * Amazon FSx for NetApp ONTAP
     * * Amazon FSx for OpenZFS
     * * Amazon FSx for Windows File Server
     */
    public fun kmsKeyId(kmsKeyId: String)

    /**
     * @param lustreConfiguration The Lustre configuration for the file system being created.
     *
     * The following parameters are not supported when creating Lustre file systems with a data
     * repository association.
     *
     * * `AutoImportPolicy`
     * * `ExportPath`
     * * `ImportedChunkSize`
     * * `ImportPath`
     */
    public fun lustreConfiguration(lustreConfiguration: IResolvable)

    /**
     * @param lustreConfiguration The Lustre configuration for the file system being created.
     *
     * The following parameters are not supported when creating Lustre file systems with a data
     * repository association.
     *
     * * `AutoImportPolicy`
     * * `ExportPath`
     * * `ImportedChunkSize`
     * * `ImportPath`
     */
    public fun lustreConfiguration(lustreConfiguration: CfnFileSystem.LustreConfigurationProperty)

    /**
     * @param lustreConfiguration The Lustre configuration for the file system being created.
     *
     * The following parameters are not supported when creating Lustre file systems with a data
     * repository association.
     *
     * * `AutoImportPolicy`
     * * `ExportPath`
     * * `ImportedChunkSize`
     * * `ImportPath`
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("6008d372e61bee9305b367f8a8b889a4444c339fcfd06d44101c4f26afb70217")
    public
        fun lustreConfiguration(lustreConfiguration: CfnFileSystem.LustreConfigurationProperty.Builder.() -> Unit)

    /**
     * @param ontapConfiguration The ONTAP configuration properties of the FSx for ONTAP file system
     * that you are creating.
     */
    public fun ontapConfiguration(ontapConfiguration: IResolvable)

    /**
     * @param ontapConfiguration The ONTAP configuration properties of the FSx for ONTAP file system
     * that you are creating.
     */
    public fun ontapConfiguration(ontapConfiguration: CfnFileSystem.OntapConfigurationProperty)

    /**
     * @param ontapConfiguration The ONTAP configuration properties of the FSx for ONTAP file system
     * that you are creating.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("969662ef7196eeedb20d8965ca0b9c9017c9c1850c7292c9c8c3768e47b730ee")
    public
        fun ontapConfiguration(ontapConfiguration: CfnFileSystem.OntapConfigurationProperty.Builder.() -> Unit)

    /**
     * @param openZfsConfiguration The Amazon FSx for OpenZFS configuration properties for the file
     * system that you are creating.
     */
    public fun openZfsConfiguration(openZfsConfiguration: IResolvable)

    /**
     * @param openZfsConfiguration The Amazon FSx for OpenZFS configuration properties for the file
     * system that you are creating.
     */
    public
        fun openZfsConfiguration(openZfsConfiguration: CfnFileSystem.OpenZFSConfigurationProperty)

    /**
     * @param openZfsConfiguration The Amazon FSx for OpenZFS configuration properties for the file
     * system that you are creating.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("b2cfc7b987460a27f9cd662be0c3ed29f7de877ab35232f42a0449bb34c8e627")
    public
        fun openZfsConfiguration(openZfsConfiguration: CfnFileSystem.OpenZFSConfigurationProperty.Builder.() -> Unit)

    /**
     * @param securityGroupIds A list of IDs specifying the security groups to apply to all network
     * interfaces created for file system access.
     * This list isn't returned in later requests to describe the file system.
     *
     *
     * You must specify a security group if you are creating a Multi-AZ FSx for ONTAP file system in
     * a VPC subnet that has been shared with you.
     */
    public fun securityGroupIds(securityGroupIds: List)

    /**
     * @param securityGroupIds A list of IDs specifying the security groups to apply to all network
     * interfaces created for file system access.
     * This list isn't returned in later requests to describe the file system.
     *
     *
     * You must specify a security group if you are creating a Multi-AZ FSx for ONTAP file system in
     * a VPC subnet that has been shared with you.
     */
    public fun securityGroupIds(vararg securityGroupIds: String)

    /**
     * @param storageCapacity Sets the storage capacity of the file system that you're creating.
     * `StorageCapacity` is required if you are creating a new file system. It is not required if
     * you are creating a file system by restoring a backup.
     *
     * *FSx for Lustre file systems* - The amount of storage capacity that you can configure depends
     * on the value that you set for `StorageType` and the Lustre `DeploymentType` , as follows:
     *
     * * For `SCRATCH_2` , `PERSISTENT_2` and `PERSISTENT_1` deployment types using SSD storage
     * type, the valid values are 1200 GiB, 2400 GiB, and increments of 2400 GiB.
     * * For `PERSISTENT_1` HDD file systems, valid values are increments of 6000 GiB for 12
     * MB/s/TiB file systems and increments of 1800 GiB for 40 MB/s/TiB file systems.
     * * For `SCRATCH_1` deployment type, valid values are 1200 GiB, 2400 GiB, and increments of
     * 3600 GiB.
     *
     * *FSx for ONTAP file systems* - The amount of SSD storage capacity that you can configure
     * depends on the value of the `HAPairs` property. The minimum value is calculated as 1,024 GiB *
     * HAPairs and the maximum is calculated as 524,288 GiB * HAPairs, up to a maximum amount of SSD
     * storage capacity of 1,048,576 GiB (1 pebibyte).
     *
     * *FSx for OpenZFS file systems* - The amount of storage capacity that you can configure is
     * from 64 GiB up to 524,288 GiB (512 TiB). If you are creating a file system from a backup, you
     * can specify a storage capacity equal to or greater than the original file system's storage
     * capacity.
     *
     * *FSx for Windows File Server file systems* - The amount of storage capacity that you can
     * configure depends on the value that you set for `StorageType` as follows:
     *
     * * For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
     * * For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
     */
    public fun storageCapacity(storageCapacity: Number)

    /**
     * @param storageType Sets the storage type for the file system that you're creating. Valid
     * values are `SSD` and `HDD` .
     * * Set to `SSD` to use solid state drive storage. SSD is supported on all Windows, Lustre,
     * ONTAP, and OpenZFS deployment types.
     * * Set to `HDD` to use hard disk drive storage. HDD is supported on `SINGLE_AZ_2` and
     * `MULTI_AZ_1` Windows file system deployment types, and on `PERSISTENT_1` Lustre file system
     * deployment types.
     *
     * Default value is `SSD` . For more information, see [Storage type
     * options](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options)
     * in the *FSx for Windows File Server User Guide* and [Multiple storage
     * options](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options) in the
     * *FSx for Lustre User Guide* .
     */
    public fun storageType(storageType: String)

    /**
     * @param subnetIds Specifies the IDs of the subnets that the file system will be accessible
     * from. 
     * For Windows and ONTAP `MULTI_AZ_1` deployment types,provide exactly two subnet IDs, one for
     * the preferred file server and one for the standby file server. You specify one of these subnets
     * as the preferred subnet using the `WindowsConfiguration > PreferredSubnetID` or
     * `OntapConfiguration > PreferredSubnetID` properties. For more information about Multi-AZ file
     * system configuration, see [Availability and durability: Single-AZ and Multi-AZ file
     * systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for Windows User Guide* and [Availability and
     * durability](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for ONTAP User Guide* .
     *
     * For Windows `SINGLE_AZ_1` and `SINGLE_AZ_2` and all Lustre deployment types, provide exactly
     * one subnet ID. The file server is launched in that subnet's Availability Zone.
     */
    public fun subnetIds(subnetIds: List)

    /**
     * @param subnetIds Specifies the IDs of the subnets that the file system will be accessible
     * from. 
     * For Windows and ONTAP `MULTI_AZ_1` deployment types,provide exactly two subnet IDs, one for
     * the preferred file server and one for the standby file server. You specify one of these subnets
     * as the preferred subnet using the `WindowsConfiguration > PreferredSubnetID` or
     * `OntapConfiguration > PreferredSubnetID` properties. For more information about Multi-AZ file
     * system configuration, see [Availability and durability: Single-AZ and Multi-AZ file
     * systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for Windows User Guide* and [Availability and
     * durability](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for ONTAP User Guide* .
     *
     * For Windows `SINGLE_AZ_1` and `SINGLE_AZ_2` and all Lustre deployment types, provide exactly
     * one subnet ID. The file server is launched in that subnet's Availability Zone.
     */
    public fun subnetIds(vararg subnetIds: String)

    /**
     * @param tags The tags to associate with the file system.
     * For more information, see [Tagging your Amazon FSx
     * resources](https://docs.aws.amazon.com/fsx/latest/LustreGuide/tag-resources.html) in the *Amazon
     * FSx for Lustre User Guide* .
     */
    public fun tags(tags: List)

    /**
     * @param tags The tags to associate with the file system.
     * For more information, see [Tagging your Amazon FSx
     * resources](https://docs.aws.amazon.com/fsx/latest/LustreGuide/tag-resources.html) in the *Amazon
     * FSx for Lustre User Guide* .
     */
    public fun tags(vararg tags: CfnTag)

    /**
     * @param windowsConfiguration The configuration object for the Microsoft Windows file system
     * you are creating.
     * This value is required if `FileSystemType` is set to `WINDOWS` .
     */
    public fun windowsConfiguration(windowsConfiguration: IResolvable)

    /**
     * @param windowsConfiguration The configuration object for the Microsoft Windows file system
     * you are creating.
     * This value is required if `FileSystemType` is set to `WINDOWS` .
     */
    public
        fun windowsConfiguration(windowsConfiguration: CfnFileSystem.WindowsConfigurationProperty)

    /**
     * @param windowsConfiguration The configuration object for the Microsoft Windows file system
     * you are creating.
     * This value is required if `FileSystemType` is set to `WINDOWS` .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("e8c519948299082c85c0be491844cb6b0e13d5b8b453446a7c4f85863f7a63b3")
    public
        fun windowsConfiguration(windowsConfiguration: CfnFileSystem.WindowsConfigurationProperty.Builder.() -> Unit)
  }

  private class BuilderImpl : Builder {
    private val cdkBuilder: software.amazon.awscdk.services.fsx.CfnFileSystemProps.Builder =
        software.amazon.awscdk.services.fsx.CfnFileSystemProps.builder()

    /**
     * @param backupId The ID of the file system backup that you are using to create a file system.
     * For more information, see
     * [CreateFileSystemFromBackup](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemFromBackup.html)
     * .
     */
    override fun backupId(backupId: String) {
      cdkBuilder.backupId(backupId)
    }

    /**
     * @param fileSystemType The type of Amazon FSx file system, which can be `LUSTRE` , `WINDOWS` ,
     * `ONTAP` , or `OPENZFS` . 
     */
    override fun fileSystemType(fileSystemType: String) {
      cdkBuilder.fileSystemType(fileSystemType)
    }

    /**
     * @param fileSystemTypeVersion For FSx for Lustre file systems, sets the Lustre version for the
     * file system that you're creating.
     * Valid values are `2.10` , `2.12` , and `2.15` :
     *
     * * `2.10` is supported by the Scratch and Persistent_1 Lustre deployment types.
     * * `2.12` is supported by all Lustre deployment types, except for `PERSISTENT_2` with a
     * metadata configuration mode.
     * * `2.15` is supported by all Lustre deployment types and is recommended for all new file
     * systems.
     *
     * Default value is `2.10` , except for the following deployments:
     *
     * * Default value is `2.12` when `DeploymentType` is set to `PERSISTENT_2` without a metadata
     * configuration mode.
     * * Default value is `2.15` when `DeploymentType` is set to `PERSISTENT_2` with a metadata
     * configuration mode.
     */
    override fun fileSystemTypeVersion(fileSystemTypeVersion: String) {
      cdkBuilder.fileSystemTypeVersion(fileSystemTypeVersion)
    }

    /**
     * @param kmsKeyId The ID of the AWS Key Management Service ( AWS KMS ) key used to encrypt
     * Amazon FSx file system data.
     * Used as follows with Amazon FSx file system types:
     *
     * * Amazon FSx for Lustre `PERSISTENT_1` and `PERSISTENT_2` deployment types only.
     *
     * `SCRATCH_1` and `SCRATCH_2` types are encrypted using the Amazon FSx service AWS KMS key for
     * your account.
     *
     * * Amazon FSx for NetApp ONTAP
     * * Amazon FSx for OpenZFS
     * * Amazon FSx for Windows File Server
     */
    override fun kmsKeyId(kmsKeyId: String) {
      cdkBuilder.kmsKeyId(kmsKeyId)
    }

    /**
     * @param lustreConfiguration The Lustre configuration for the file system being created.
     *
     * The following parameters are not supported when creating Lustre file systems with a data
     * repository association.
     *
     * * `AutoImportPolicy`
     * * `ExportPath`
     * * `ImportedChunkSize`
     * * `ImportPath`
     */
    override fun lustreConfiguration(lustreConfiguration: IResolvable) {
      cdkBuilder.lustreConfiguration(lustreConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param lustreConfiguration The Lustre configuration for the file system being created.
     *
     * The following parameters are not supported when creating Lustre file systems with a data
     * repository association.
     *
     * * `AutoImportPolicy`
     * * `ExportPath`
     * * `ImportedChunkSize`
     * * `ImportPath`
     */
    override
        fun lustreConfiguration(lustreConfiguration: CfnFileSystem.LustreConfigurationProperty) {
      cdkBuilder.lustreConfiguration(lustreConfiguration.let(CfnFileSystem.LustreConfigurationProperty.Companion::unwrap))
    }

    /**
     * @param lustreConfiguration The Lustre configuration for the file system being created.
     *
     * The following parameters are not supported when creating Lustre file systems with a data
     * repository association.
     *
     * * `AutoImportPolicy`
     * * `ExportPath`
     * * `ImportedChunkSize`
     * * `ImportPath`
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("6008d372e61bee9305b367f8a8b889a4444c339fcfd06d44101c4f26afb70217")
    override
        fun lustreConfiguration(lustreConfiguration: CfnFileSystem.LustreConfigurationProperty.Builder.() -> Unit):
        Unit = lustreConfiguration(CfnFileSystem.LustreConfigurationProperty(lustreConfiguration))

    /**
     * @param ontapConfiguration The ONTAP configuration properties of the FSx for ONTAP file system
     * that you are creating.
     */
    override fun ontapConfiguration(ontapConfiguration: IResolvable) {
      cdkBuilder.ontapConfiguration(ontapConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param ontapConfiguration The ONTAP configuration properties of the FSx for ONTAP file system
     * that you are creating.
     */
    override fun ontapConfiguration(ontapConfiguration: CfnFileSystem.OntapConfigurationProperty) {
      cdkBuilder.ontapConfiguration(ontapConfiguration.let(CfnFileSystem.OntapConfigurationProperty.Companion::unwrap))
    }

    /**
     * @param ontapConfiguration The ONTAP configuration properties of the FSx for ONTAP file system
     * that you are creating.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("969662ef7196eeedb20d8965ca0b9c9017c9c1850c7292c9c8c3768e47b730ee")
    override
        fun ontapConfiguration(ontapConfiguration: CfnFileSystem.OntapConfigurationProperty.Builder.() -> Unit):
        Unit = ontapConfiguration(CfnFileSystem.OntapConfigurationProperty(ontapConfiguration))

    /**
     * @param openZfsConfiguration The Amazon FSx for OpenZFS configuration properties for the file
     * system that you are creating.
     */
    override fun openZfsConfiguration(openZfsConfiguration: IResolvable) {
      cdkBuilder.openZfsConfiguration(openZfsConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param openZfsConfiguration The Amazon FSx for OpenZFS configuration properties for the file
     * system that you are creating.
     */
    override
        fun openZfsConfiguration(openZfsConfiguration: CfnFileSystem.OpenZFSConfigurationProperty) {
      cdkBuilder.openZfsConfiguration(openZfsConfiguration.let(CfnFileSystem.OpenZFSConfigurationProperty.Companion::unwrap))
    }

    /**
     * @param openZfsConfiguration The Amazon FSx for OpenZFS configuration properties for the file
     * system that you are creating.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("b2cfc7b987460a27f9cd662be0c3ed29f7de877ab35232f42a0449bb34c8e627")
    override
        fun openZfsConfiguration(openZfsConfiguration: CfnFileSystem.OpenZFSConfigurationProperty.Builder.() -> Unit):
        Unit =
        openZfsConfiguration(CfnFileSystem.OpenZFSConfigurationProperty(openZfsConfiguration))

    /**
     * @param securityGroupIds A list of IDs specifying the security groups to apply to all network
     * interfaces created for file system access.
     * This list isn't returned in later requests to describe the file system.
     *
     *
     * You must specify a security group if you are creating a Multi-AZ FSx for ONTAP file system in
     * a VPC subnet that has been shared with you.
     */
    override fun securityGroupIds(securityGroupIds: List) {
      cdkBuilder.securityGroupIds(securityGroupIds)
    }

    /**
     * @param securityGroupIds A list of IDs specifying the security groups to apply to all network
     * interfaces created for file system access.
     * This list isn't returned in later requests to describe the file system.
     *
     *
     * You must specify a security group if you are creating a Multi-AZ FSx for ONTAP file system in
     * a VPC subnet that has been shared with you.
     */
    override fun securityGroupIds(vararg securityGroupIds: String): Unit =
        securityGroupIds(securityGroupIds.toList())

    /**
     * @param storageCapacity Sets the storage capacity of the file system that you're creating.
     * `StorageCapacity` is required if you are creating a new file system. It is not required if
     * you are creating a file system by restoring a backup.
     *
     * *FSx for Lustre file systems* - The amount of storage capacity that you can configure depends
     * on the value that you set for `StorageType` and the Lustre `DeploymentType` , as follows:
     *
     * * For `SCRATCH_2` , `PERSISTENT_2` and `PERSISTENT_1` deployment types using SSD storage
     * type, the valid values are 1200 GiB, 2400 GiB, and increments of 2400 GiB.
     * * For `PERSISTENT_1` HDD file systems, valid values are increments of 6000 GiB for 12
     * MB/s/TiB file systems and increments of 1800 GiB for 40 MB/s/TiB file systems.
     * * For `SCRATCH_1` deployment type, valid values are 1200 GiB, 2400 GiB, and increments of
     * 3600 GiB.
     *
     * *FSx for ONTAP file systems* - The amount of SSD storage capacity that you can configure
     * depends on the value of the `HAPairs` property. The minimum value is calculated as 1,024 GiB *
     * HAPairs and the maximum is calculated as 524,288 GiB * HAPairs, up to a maximum amount of SSD
     * storage capacity of 1,048,576 GiB (1 pebibyte).
     *
     * *FSx for OpenZFS file systems* - The amount of storage capacity that you can configure is
     * from 64 GiB up to 524,288 GiB (512 TiB). If you are creating a file system from a backup, you
     * can specify a storage capacity equal to or greater than the original file system's storage
     * capacity.
     *
     * *FSx for Windows File Server file systems* - The amount of storage capacity that you can
     * configure depends on the value that you set for `StorageType` as follows:
     *
     * * For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
     * * For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
     */
    override fun storageCapacity(storageCapacity: Number) {
      cdkBuilder.storageCapacity(storageCapacity)
    }

    /**
     * @param storageType Sets the storage type for the file system that you're creating. Valid
     * values are `SSD` and `HDD` .
     * * Set to `SSD` to use solid state drive storage. SSD is supported on all Windows, Lustre,
     * ONTAP, and OpenZFS deployment types.
     * * Set to `HDD` to use hard disk drive storage. HDD is supported on `SINGLE_AZ_2` and
     * `MULTI_AZ_1` Windows file system deployment types, and on `PERSISTENT_1` Lustre file system
     * deployment types.
     *
     * Default value is `SSD` . For more information, see [Storage type
     * options](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options)
     * in the *FSx for Windows File Server User Guide* and [Multiple storage
     * options](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options) in the
     * *FSx for Lustre User Guide* .
     */
    override fun storageType(storageType: String) {
      cdkBuilder.storageType(storageType)
    }

    /**
     * @param subnetIds Specifies the IDs of the subnets that the file system will be accessible
     * from. 
     * For Windows and ONTAP `MULTI_AZ_1` deployment types,provide exactly two subnet IDs, one for
     * the preferred file server and one for the standby file server. You specify one of these subnets
     * as the preferred subnet using the `WindowsConfiguration > PreferredSubnetID` or
     * `OntapConfiguration > PreferredSubnetID` properties. For more information about Multi-AZ file
     * system configuration, see [Availability and durability: Single-AZ and Multi-AZ file
     * systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for Windows User Guide* and [Availability and
     * durability](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for ONTAP User Guide* .
     *
     * For Windows `SINGLE_AZ_1` and `SINGLE_AZ_2` and all Lustre deployment types, provide exactly
     * one subnet ID. The file server is launched in that subnet's Availability Zone.
     */
    override fun subnetIds(subnetIds: List) {
      cdkBuilder.subnetIds(subnetIds)
    }

    /**
     * @param subnetIds Specifies the IDs of the subnets that the file system will be accessible
     * from. 
     * For Windows and ONTAP `MULTI_AZ_1` deployment types,provide exactly two subnet IDs, one for
     * the preferred file server and one for the standby file server. You specify one of these subnets
     * as the preferred subnet using the `WindowsConfiguration > PreferredSubnetID` or
     * `OntapConfiguration > PreferredSubnetID` properties. For more information about Multi-AZ file
     * system configuration, see [Availability and durability: Single-AZ and Multi-AZ file
     * systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for Windows User Guide* and [Availability and
     * durability](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for ONTAP User Guide* .
     *
     * For Windows `SINGLE_AZ_1` and `SINGLE_AZ_2` and all Lustre deployment types, provide exactly
     * one subnet ID. The file server is launched in that subnet's Availability Zone.
     */
    override fun subnetIds(vararg subnetIds: String): Unit = subnetIds(subnetIds.toList())

    /**
     * @param tags The tags to associate with the file system.
     * For more information, see [Tagging your Amazon FSx
     * resources](https://docs.aws.amazon.com/fsx/latest/LustreGuide/tag-resources.html) in the *Amazon
     * FSx for Lustre User Guide* .
     */
    override fun tags(tags: List) {
      cdkBuilder.tags(tags.map(CfnTag.Companion::unwrap))
    }

    /**
     * @param tags The tags to associate with the file system.
     * For more information, see [Tagging your Amazon FSx
     * resources](https://docs.aws.amazon.com/fsx/latest/LustreGuide/tag-resources.html) in the *Amazon
     * FSx for Lustre User Guide* .
     */
    override fun tags(vararg tags: CfnTag): Unit = tags(tags.toList())

    /**
     * @param windowsConfiguration The configuration object for the Microsoft Windows file system
     * you are creating.
     * This value is required if `FileSystemType` is set to `WINDOWS` .
     */
    override fun windowsConfiguration(windowsConfiguration: IResolvable) {
      cdkBuilder.windowsConfiguration(windowsConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param windowsConfiguration The configuration object for the Microsoft Windows file system
     * you are creating.
     * This value is required if `FileSystemType` is set to `WINDOWS` .
     */
    override
        fun windowsConfiguration(windowsConfiguration: CfnFileSystem.WindowsConfigurationProperty) {
      cdkBuilder.windowsConfiguration(windowsConfiguration.let(CfnFileSystem.WindowsConfigurationProperty.Companion::unwrap))
    }

    /**
     * @param windowsConfiguration The configuration object for the Microsoft Windows file system
     * you are creating.
     * This value is required if `FileSystemType` is set to `WINDOWS` .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("e8c519948299082c85c0be491844cb6b0e13d5b8b453446a7c4f85863f7a63b3")
    override
        fun windowsConfiguration(windowsConfiguration: CfnFileSystem.WindowsConfigurationProperty.Builder.() -> Unit):
        Unit =
        windowsConfiguration(CfnFileSystem.WindowsConfigurationProperty(windowsConfiguration))

    public fun build(): software.amazon.awscdk.services.fsx.CfnFileSystemProps = cdkBuilder.build()
  }

  private class Wrapper(
    cdkObject: software.amazon.awscdk.services.fsx.CfnFileSystemProps,
  ) : CdkObject(cdkObject),
      CfnFileSystemProps {
    /**
     * The ID of the file system backup that you are using to create a file system.
     *
     * For more information, see
     * [CreateFileSystemFromBackup](https://docs.aws.amazon.com/fsx/latest/APIReference/API_CreateFileSystemFromBackup.html)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-backupid)
     */
    override fun backupId(): String? = unwrap(this).getBackupId()

    /**
     * The type of Amazon FSx file system, which can be `LUSTRE` , `WINDOWS` , `ONTAP` , or
     * `OPENZFS` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-filesystemtype)
     */
    override fun fileSystemType(): String = unwrap(this).getFileSystemType()

    /**
     * For FSx for Lustre file systems, sets the Lustre version for the file system that you're
     * creating.
     *
     * Valid values are `2.10` , `2.12` , and `2.15` :
     *
     * * `2.10` is supported by the Scratch and Persistent_1 Lustre deployment types.
     * * `2.12` is supported by all Lustre deployment types, except for `PERSISTENT_2` with a
     * metadata configuration mode.
     * * `2.15` is supported by all Lustre deployment types and is recommended for all new file
     * systems.
     *
     * Default value is `2.10` , except for the following deployments:
     *
     * * Default value is `2.12` when `DeploymentType` is set to `PERSISTENT_2` without a metadata
     * configuration mode.
     * * Default value is `2.15` when `DeploymentType` is set to `PERSISTENT_2` with a metadata
     * configuration mode.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-filesystemtypeversion)
     */
    override fun fileSystemTypeVersion(): String? = unwrap(this).getFileSystemTypeVersion()

    /**
     * The ID of the AWS Key Management Service ( AWS KMS ) key used to encrypt Amazon FSx file
     * system data.
     *
     * Used as follows with Amazon FSx file system types:
     *
     * * Amazon FSx for Lustre `PERSISTENT_1` and `PERSISTENT_2` deployment types only.
     *
     * `SCRATCH_1` and `SCRATCH_2` types are encrypted using the Amazon FSx service AWS KMS key for
     * your account.
     *
     * * Amazon FSx for NetApp ONTAP
     * * Amazon FSx for OpenZFS
     * * Amazon FSx for Windows File Server
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-kmskeyid)
     */
    override fun kmsKeyId(): String? = unwrap(this).getKmsKeyId()

    /**
     * The Lustre configuration for the file system being created.
     *
     *
     * The following parameters are not supported when creating Lustre file systems with a data
     * repository association.
     *
     * * `AutoImportPolicy`
     * * `ExportPath`
     * * `ImportedChunkSize`
     * * `ImportPath`
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-lustreconfiguration)
     */
    override fun lustreConfiguration(): Any? = unwrap(this).getLustreConfiguration()

    /**
     * The ONTAP configuration properties of the FSx for ONTAP file system that you are creating.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-ontapconfiguration)
     */
    override fun ontapConfiguration(): Any? = unwrap(this).getOntapConfiguration()

    /**
     * The Amazon FSx for OpenZFS configuration properties for the file system that you are
     * creating.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-openzfsconfiguration)
     */
    override fun openZfsConfiguration(): Any? = unwrap(this).getOpenZfsConfiguration()

    /**
     * A list of IDs specifying the security groups to apply to all network interfaces created for
     * file system access.
     *
     * This list isn't returned in later requests to describe the file system.
     *
     *
     * You must specify a security group if you are creating a Multi-AZ FSx for ONTAP file system in
     * a VPC subnet that has been shared with you.
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-securitygroupids)
     */
    override fun securityGroupIds(): List = unwrap(this).getSecurityGroupIds() ?:
        emptyList()

    /**
     * Sets the storage capacity of the file system that you're creating.
     *
     * `StorageCapacity` is required if you are creating a new file system. It is not required if
     * you are creating a file system by restoring a backup.
     *
     * *FSx for Lustre file systems* - The amount of storage capacity that you can configure depends
     * on the value that you set for `StorageType` and the Lustre `DeploymentType` , as follows:
     *
     * * For `SCRATCH_2` , `PERSISTENT_2` and `PERSISTENT_1` deployment types using SSD storage
     * type, the valid values are 1200 GiB, 2400 GiB, and increments of 2400 GiB.
     * * For `PERSISTENT_1` HDD file systems, valid values are increments of 6000 GiB for 12
     * MB/s/TiB file systems and increments of 1800 GiB for 40 MB/s/TiB file systems.
     * * For `SCRATCH_1` deployment type, valid values are 1200 GiB, 2400 GiB, and increments of
     * 3600 GiB.
     *
     * *FSx for ONTAP file systems* - The amount of SSD storage capacity that you can configure
     * depends on the value of the `HAPairs` property. The minimum value is calculated as 1,024 GiB *
     * HAPairs and the maximum is calculated as 524,288 GiB * HAPairs, up to a maximum amount of SSD
     * storage capacity of 1,048,576 GiB (1 pebibyte).
     *
     * *FSx for OpenZFS file systems* - The amount of storage capacity that you can configure is
     * from 64 GiB up to 524,288 GiB (512 TiB). If you are creating a file system from a backup, you
     * can specify a storage capacity equal to or greater than the original file system's storage
     * capacity.
     *
     * *FSx for Windows File Server file systems* - The amount of storage capacity that you can
     * configure depends on the value that you set for `StorageType` as follows:
     *
     * * For SSD storage, valid values are 32 GiB-65,536 GiB (64 TiB).
     * * For HDD storage, valid values are 2000 GiB-65,536 GiB (64 TiB).
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-storagecapacity)
     */
    override fun storageCapacity(): Number? = unwrap(this).getStorageCapacity()

    /**
     * Sets the storage type for the file system that you're creating. Valid values are `SSD` and
     * `HDD` .
     *
     * * Set to `SSD` to use solid state drive storage. SSD is supported on all Windows, Lustre,
     * ONTAP, and OpenZFS deployment types.
     * * Set to `HDD` to use hard disk drive storage. HDD is supported on `SINGLE_AZ_2` and
     * `MULTI_AZ_1` Windows file system deployment types, and on `PERSISTENT_1` Lustre file system
     * deployment types.
     *
     * Default value is `SSD` . For more information, see [Storage type
     * options](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/optimize-fsx-costs.html#storage-type-options)
     * in the *FSx for Windows File Server User Guide* and [Multiple storage
     * options](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html#storage-options) in the
     * *FSx for Lustre User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-storagetype)
     */
    override fun storageType(): String? = unwrap(this).getStorageType()

    /**
     * Specifies the IDs of the subnets that the file system will be accessible from.
     *
     * For Windows and ONTAP `MULTI_AZ_1` deployment types,provide exactly two subnet IDs, one for
     * the preferred file server and one for the standby file server. You specify one of these subnets
     * as the preferred subnet using the `WindowsConfiguration > PreferredSubnetID` or
     * `OntapConfiguration > PreferredSubnetID` properties. For more information about Multi-AZ file
     * system configuration, see [Availability and durability: Single-AZ and Multi-AZ file
     * systems](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for Windows User Guide* and [Availability and
     * durability](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/high-availability-multiAZ.html) in
     * the *Amazon FSx for ONTAP User Guide* .
     *
     * For Windows `SINGLE_AZ_1` and `SINGLE_AZ_2` and all Lustre deployment types, provide exactly
     * one subnet ID. The file server is launched in that subnet's Availability Zone.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-subnetids)
     */
    override fun subnetIds(): List = unwrap(this).getSubnetIds()

    /**
     * The tags to associate with the file system.
     *
     * For more information, see [Tagging your Amazon FSx
     * resources](https://docs.aws.amazon.com/fsx/latest/LustreGuide/tag-resources.html) in the *Amazon
     * FSx for Lustre User Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-tags)
     */
    override fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

    /**
     * The configuration object for the Microsoft Windows file system you are creating.
     *
     * This value is required if `FileSystemType` is set to `WINDOWS` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-windowsconfiguration)
     */
    override fun windowsConfiguration(): Any? = unwrap(this).getWindowsConfiguration()
  }

  public companion object {
    public operator fun invoke(block: Builder.() -> Unit = {}): CfnFileSystemProps {
      val builderImpl = BuilderImpl()
      return Wrapper(builderImpl.apply(block).build())
    }

    internal fun wrap(cdkObject: software.amazon.awscdk.services.fsx.CfnFileSystemProps):
        CfnFileSystemProps = CdkObjectWrappers.wrap(cdkObject) as? CfnFileSystemProps ?:
        Wrapper(cdkObject)

    internal fun unwrap(wrapped: CfnFileSystemProps):
        software.amazon.awscdk.services.fsx.CfnFileSystemProps = (wrapped as CdkObject).cdkObject as
        software.amazon.awscdk.services.fsx.CfnFileSystemProps
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy