import * as core from "@terrascript/core"; export interface DiskIopsConfigurationArgs extends core.SchemaArgs { iops?: number | core.NumberOut; mode?: string | core.StringOut; } export class DiskIopsConfiguration extends core.Schema { @core.attr(Number, { computed: true }) public iops?: number | core.NumberOut; @core.attr(String) public mode?: string | core.StringOut; } export interface ClientConfigurationsArgs extends core.SchemaArgs { clients: string | core.StringOut; options: core.Array | core.ArrayOut; } export class ClientConfigurations extends core.Schema { @core.attr(String) public clients!: string | core.StringOut; @core.attr(String, { kind: "array" }) public options!: core.Array | core.ArrayOut; } export interface NfsExportsArgs extends core.SchemaArgs { clientConfigurations: | core.Array | core.ArrayOut; } export class NfsExports extends core.Schema { @core.attr(ClientConfigurations, { kind: "array" }) public clientConfigurations!: | core.Array | core.ArrayOut; } export interface UserAndGroupQuotasArgs extends core.SchemaArgs { id: number | core.NumberOut; storageCapacityQuotaGib: number | core.NumberOut; type: string | core.StringOut; } export class UserAndGroupQuotas extends core.Schema { @core.attr(Number) public id!: number | core.NumberOut; @core.attr(Number) public storageCapacityQuotaGib!: number | core.NumberOut; @core.attr(String) public type!: string | core.StringOut; } export interface RootVolumeConfigurationArgs extends core.SchemaArgs { copyTagsToSnapshots?: boolean | core.BooleanOut; dataCompressionType?: string | core.StringOut; nfsExports?: NfsExports; readOnly?: boolean | core.BooleanOut; recordSizeKib?: number | core.NumberOut; userAndGroupQuotas?: | core.Array | core.ArrayOut; } export class RootVolumeConfiguration extends core.Schema { @core.attr(Boolean) public copyTagsToSnapshots?: boolean | core.BooleanOut; @core.attr(String) public dataCompressionType?: string | core.StringOut; @core.attr(NfsExports) public nfsExports?: NfsExports; @core.attr(Boolean, { computed: true }) public readOnly?: boolean | core.BooleanOut; @core.attr(Number) public recordSizeKib?: number | core.NumberOut; @core.attr(UserAndGroupQuotas, { computed: true, kind: "array" }) public userAndGroupQuotas?: | core.Array | core.ArrayOut; } export interface OpenzfsFileSystemArgs extends core.ResourceArgs { /** * (Optional) The number of days to retain automatic backups. Setting this to 0 disables automatic back * ups. You can retain automatic backups for a maximum of 90 days. */ automaticBackupRetentionDays?: number | core.NumberOut; /** * (Optional) The ID of the source backup to create the filesystem from. */ backupId?: string | core.StringOut; /** * (Optional) A boolean flag indicating whether tags for the file system should be copied to backups. T * he default value is false. */ copyTagsToBackups?: boolean | core.BooleanOut; /** * (Optional) A boolean flag indicating whether tags for the file system should be copied to snapshots. * The default value is false. */ copyTagsToVolumes?: boolean | core.BooleanOut; /** * (Optional) A recurring daily time, in the format HH:MM. HH is the zero-padded hour of the day (0-23) * , and MM is the zero-padded minute of the hour. For example, 05:00 specifies 5 AM daily. Requires `a * utomatic_backup_retention_days` to be set. */ dailyAutomaticBackupStartTime?: string | core.StringOut; /** * (Required) - The filesystem deployment type. Only `SINGLE_AZ_1` is supported. */ deploymentType: string | core.StringOut; /** * (Optional) The SSD IOPS configuration for the Amazon FSx for OpenZFS file system. See [Disk Iops Con * figuration](#disk-iops-configuration) Below. */ diskIopsConfiguration?: DiskIopsConfiguration; /** * (Optional) ARN for the KMS Key to encrypt the file system at rest, Defaults to an AWS managed KMS Ke * y. */ kmsKeyId?: string | core.StringOut; /** * (Optional) The configuration for the root volume of the file system. All other volumes are children * or the root volume. See [Root Volume Configuration](#root-volume-configuration) Below. */ rootVolumeConfiguration?: RootVolumeConfiguration; /** * (Optional) A list of IDs for the security groups that apply to the specified network interfaces crea * ted for file system access. These security groups will apply to all network interfaces. */ securityGroupIds?: core.Array | core.ArrayOut; /** * (Required) The storage capacity (GiB) of the file system. Valid values between `64` and `524288`. */ storageCapacity?: number | core.NumberOut; /** * (Optional) The filesystem storage type. Only `SSD` is supported. */ storageType?: string | core.StringOut; /** * (Required) A list of IDs for the subnets that the file system will be accessible from. Exactly 1 sub * net need to be provided. */ subnetIds: core.Array | core.ArrayOut; /** * (Optional) A map of tags to assign to the file system. If configured with a provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags * configuration-block) present, tags with matching keys will overwrite those defined at the provider- * level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Required) Throughput (megabytes per second) of the file system in power of 2 increments. Minimum of * 64` and maximum of `4096`. */ throughputCapacity: number | core.NumberOut; /** * (Optional) The preferred start time (in `d:HH:MM` format) to perform weekly maintenance, in the UTC * time zone. */ weeklyMaintenanceStartTime?: string | core.StringOut; } export class OpenzfsFileSystem extends core.Resource { /** * Amazon Resource Name of the file system. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) The number of days to retain automatic backups. Setting this to 0 disables automatic back * ups. You can retain automatic backups for a maximum of 90 days. */ @core.attr(Number) public automaticBackupRetentionDays?: number | core.NumberOut; /** * (Optional) The ID of the source backup to create the filesystem from. */ @core.attr(String) public backupId?: string | core.StringOut; /** * (Optional) A boolean flag indicating whether tags for the file system should be copied to backups. T * he default value is false. */ @core.attr(Boolean) public copyTagsToBackups?: boolean | core.BooleanOut; /** * (Optional) A boolean flag indicating whether tags for the file system should be copied to snapshots. * The default value is false. */ @core.attr(Boolean) public copyTagsToVolumes?: boolean | core.BooleanOut; /** * (Optional) A recurring daily time, in the format HH:MM. HH is the zero-padded hour of the day (0-23) * , and MM is the zero-padded minute of the hour. For example, 05:00 specifies 5 AM daily. Requires `a * utomatic_backup_retention_days` to be set. */ @core.attr(String, { computed: true }) public dailyAutomaticBackupStartTime?: string | core.StringOut; /** * (Required) - The filesystem deployment type. Only `SINGLE_AZ_1` is supported. */ @core.attr(String) public deploymentType!: string | core.StringOut; /** * (Optional) The SSD IOPS configuration for the Amazon FSx for OpenZFS file system. See [Disk Iops Con * figuration](#disk-iops-configuration) Below. */ @core.attr(DiskIopsConfiguration, { computed: true }) public diskIopsConfiguration?: DiskIopsConfiguration; /** * DNS name for the file system, e.g., `fs-12345678.fsx.us-west-2.amazonaws.com` */ @core.attr(String, { computed: true }) public dnsName!: string | core.StringOut; /** * (Required) - The ID of the user or group. Valid values between `0` and `2147483647` */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) ARN for the KMS Key to encrypt the file system at rest, Defaults to an AWS managed KMS Ke * y. */ @core.attr(String, { computed: true }) public kmsKeyId?: string | core.StringOut; /** * Set of Elastic Network Interface identifiers from which the file system is accessible The first netw * ork interface returned is the primary network interface. */ @core.attr(String, { computed: true, kind: "array" }) public networkInterfaceIds!: | core.Array | core.ArrayOut; /** * AWS account identifier that created the file system. */ @core.attr(String, { computed: true }) public ownerId!: string | core.StringOut; /** * (Optional) The configuration for the root volume of the file system. All other volumes are children * or the root volume. See [Root Volume Configuration](#root-volume-configuration) Below. */ @core.attr(RootVolumeConfiguration, { computed: true }) public rootVolumeConfiguration?: RootVolumeConfiguration; /** * Identifier of the root volume, e.g., `fsvol-12345678` */ @core.attr(String, { computed: true }) public rootVolumeId!: string | core.StringOut; /** * (Optional) A list of IDs for the security groups that apply to the specified network interfaces crea * ted for file system access. These security groups will apply to all network interfaces. */ @core.attr(String, { kind: "array" }) public securityGroupIds?: core.Array | core.ArrayOut; /** * (Required) The storage capacity (GiB) of the file system. Valid values between `64` and `524288`. */ @core.attr(Number) public storageCapacity?: number | core.NumberOut; /** * (Optional) The filesystem storage type. Only `SSD` is supported. */ @core.attr(String) public storageType?: string | core.StringOut; /** * (Required) A list of IDs for the subnets that the file system will be accessible from. Exactly 1 sub * net need to be provided. */ @core.attr(String, { kind: "array" }) public subnetIds!: core.Array | core.ArrayOut; /** * (Optional) A map of tags to assign to the file system. If configured with a provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags * configuration-block) present, tags with matching keys will overwrite those defined at the provider- * level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Required) Throughput (megabytes per second) of the file system in power of 2 increments. Minimum of * 64` and maximum of `4096`. */ @core.attr(Number) public throughputCapacity!: number | core.NumberOut; /** * Identifier of the Virtual Private Cloud for the file system. */ @core.attr(String, { computed: true }) public vpcId!: string | core.StringOut; /** * (Optional) The preferred start time (in `d:HH:MM` format) to perform weekly maintenance, in the UTC * time zone. */ @core.attr(String, { computed: true }) public weeklyMaintenanceStartTime?: string | core.StringOut; constructor(name: string, args?: OpenzfsFileSystemArgs) { super(name, "aws_fsx_openzfs_file_system", args); } public override getNamespace(): string { return "aws_fsx"; } }