import * as core from "@terrascript/core"; 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 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 OriginSnapshotArgs extends core.SchemaArgs { copyStrategy: string | core.StringOut; snapshotArn: string | core.StringOut; } export class OriginSnapshot extends core.Schema { @core.attr(String) public copyStrategy!: string | core.StringOut; @core.attr(String) public snapshotArn!: string | core.StringOut; } export interface OpenzfsVolumeArgs extends core.ResourceArgs { /** * (Optional) A boolean flag indicating whether tags for the file system should be copied to snapshots. * The default value is false. */ copyTagsToSnapshots?: boolean | core.BooleanOut; /** * (Optional) Method used to compress the data on the volume. Valid values are `NONE` or `ZSTD`. Child * volumes that don't specify compression option will inherit from parent volume. This option on file s * ystem applies to the root volume. */ dataCompressionType?: string | core.StringOut; /** * (Required) The name of the Volume. You can use a maximum of 203 alphanumeric characters, plus the un * derscore (_) special character. */ name: string | core.StringOut; /** * (Optional) NFS export configuration for the root volume. Exactly 1 item. See [NFS Exports](#nfs-expo * rts) Below. */ nfsExports?: NfsExports; /** * (Optional) The ARN of the source snapshot to create the volume from. */ originSnapshot?: OriginSnapshot; /** * (Required) The volume id of volume that will be the parent volume for the volume being created, this * could be the root volume created from the `aws_fsx_openzfs_file_system` resource with the `root_vol * ume_id` or the `id` property of another `aws_fsx_openzfs_volume`. */ parentVolumeId: string | core.StringOut; /** * (Optional) specifies whether the volume is read-only. Default is false. */ readOnly?: boolean | core.BooleanOut; /** * (Optional) The record size of an OpenZFS volume, in kibibytes (KiB). Valid values are `4`, `8`, `16` * , `32`, `64`, `128`, `256`, `512`, or `1024` KiB. The default is `128` KiB. */ recordSizeKib?: number | core.NumberOut; /** * (Required) - The amount of storage that the user or group can use in gibibytes (GiB). Valid values b * etween `0` and `2147483647` */ storageCapacityQuotaGib?: number | core.NumberOut; storageCapacityReservationGib?: number | core.NumberOut; /** * (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; /** * (Optional) - Specify how much storage users or groups can use on the volume. Maximum of 100 items. S * ee [User and Group Quotas](#user-and-group-quotas) Below. */ userAndGroupQuotas?: | core.Array | core.ArrayOut; volumeType?: string | core.StringOut; } export class OpenzfsVolume extends core.Resource { /** * Amazon Resource Name of the file system. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (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 copyTagsToSnapshots?: boolean | core.BooleanOut; /** * (Optional) Method used to compress the data on the volume. Valid values are `NONE` or `ZSTD`. Child * volumes that don't specify compression option will inherit from parent volume. This option on file s * ystem applies to the root volume. */ @core.attr(String) public dataCompressionType?: 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; /** * (Required) The name of the Volume. You can use a maximum of 203 alphanumeric characters, plus the un * derscore (_) special character. */ @core.attr(String) public name!: string | core.StringOut; /** * (Optional) NFS export configuration for the root volume. Exactly 1 item. See [NFS Exports](#nfs-expo * rts) Below. */ @core.attr(NfsExports) public nfsExports?: NfsExports; /** * (Optional) The ARN of the source snapshot to create the volume from. */ @core.attr(OriginSnapshot) public originSnapshot?: OriginSnapshot; /** * (Required) The volume id of volume that will be the parent volume for the volume being created, this * could be the root volume created from the `aws_fsx_openzfs_file_system` resource with the `root_vol * ume_id` or the `id` property of another `aws_fsx_openzfs_volume`. */ @core.attr(String) public parentVolumeId!: string | core.StringOut; /** * (Optional) specifies whether the volume is read-only. Default is false. */ @core.attr(Boolean, { computed: true }) public readOnly?: boolean | core.BooleanOut; /** * (Optional) The record size of an OpenZFS volume, in kibibytes (KiB). Valid values are `4`, `8`, `16` * , `32`, `64`, `128`, `256`, `512`, or `1024` KiB. The default is `128` KiB. */ @core.attr(Number) public recordSizeKib?: number | core.NumberOut; /** * (Required) - The amount of storage that the user or group can use in gibibytes (GiB). Valid values b * etween `0` and `2147483647` */ @core.attr(Number, { computed: true }) public storageCapacityQuotaGib?: number | core.NumberOut; @core.attr(Number, { computed: true }) public storageCapacityReservationGib?: number | core.NumberOut; /** * (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; /** * (Optional) - Specify how much storage users or groups can use on the volume. Maximum of 100 items. S * ee [User and Group Quotas](#user-and-group-quotas) Below. */ @core.attr(UserAndGroupQuotas, { computed: true, kind: "array" }) public userAndGroupQuotas?: | core.Array | core.ArrayOut; @core.attr(String) public volumeType?: string | core.StringOut; constructor(name: string, args?: OpenzfsVolumeArgs) { super(name, "aws_fsx_openzfs_volume", args); } public override getNamespace(): string { return "aws_fsx"; } }