/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include Specifies the configuration of the Amazon FSx for OpenZFS volume that you are
* creating.See Also:
AWS
* API Reference
The ID of the volume to use as the parent volume of the volume that you are * creating.
*/ inline const Aws::String& GetParentVolumeId() const{ return m_parentVolumeId; } /** *The ID of the volume to use as the parent volume of the volume that you are * creating.
*/ inline bool ParentVolumeIdHasBeenSet() const { return m_parentVolumeIdHasBeenSet; } /** *The ID of the volume to use as the parent volume of the volume that you are * creating.
*/ inline void SetParentVolumeId(const Aws::String& value) { m_parentVolumeIdHasBeenSet = true; m_parentVolumeId = value; } /** *The ID of the volume to use as the parent volume of the volume that you are * creating.
*/ inline void SetParentVolumeId(Aws::String&& value) { m_parentVolumeIdHasBeenSet = true; m_parentVolumeId = std::move(value); } /** *The ID of the volume to use as the parent volume of the volume that you are * creating.
*/ inline void SetParentVolumeId(const char* value) { m_parentVolumeIdHasBeenSet = true; m_parentVolumeId.assign(value); } /** *The ID of the volume to use as the parent volume of the volume that you are * creating.
*/ inline CreateOpenZFSVolumeConfiguration& WithParentVolumeId(const Aws::String& value) { SetParentVolumeId(value); return *this;} /** *The ID of the volume to use as the parent volume of the volume that you are * creating.
*/ inline CreateOpenZFSVolumeConfiguration& WithParentVolumeId(Aws::String&& value) { SetParentVolumeId(std::move(value)); return *this;} /** *The ID of the volume to use as the parent volume of the volume that you are * creating.
*/ inline CreateOpenZFSVolumeConfiguration& WithParentVolumeId(const char* value) { SetParentVolumeId(value); return *this;} /** *Specifies the amount of storage in gibibytes (GiB) to reserve from the parent
* volume. Setting StorageCapacityReservationGiB
guarantees that the
* specified amount of storage space on the parent volume will always be available
* for the volume. You can't reserve more storage than the parent volume has. To
* not specify a storage capacity reservation, set this to 0
or
* -1
. For more information, see Volume
* properties in the Amazon FSx for OpenZFS User Guide.
Specifies the amount of storage in gibibytes (GiB) to reserve from the parent
* volume. Setting StorageCapacityReservationGiB
guarantees that the
* specified amount of storage space on the parent volume will always be available
* for the volume. You can't reserve more storage than the parent volume has. To
* not specify a storage capacity reservation, set this to 0
or
* -1
. For more information, see Volume
* properties in the Amazon FSx for OpenZFS User Guide.
Specifies the amount of storage in gibibytes (GiB) to reserve from the parent
* volume. Setting StorageCapacityReservationGiB
guarantees that the
* specified amount of storage space on the parent volume will always be available
* for the volume. You can't reserve more storage than the parent volume has. To
* not specify a storage capacity reservation, set this to 0
or
* -1
. For more information, see Volume
* properties in the Amazon FSx for OpenZFS User Guide.
Specifies the amount of storage in gibibytes (GiB) to reserve from the parent
* volume. Setting StorageCapacityReservationGiB
guarantees that the
* specified amount of storage space on the parent volume will always be available
* for the volume. You can't reserve more storage than the parent volume has. To
* not specify a storage capacity reservation, set this to 0
or
* -1
. For more information, see Volume
* properties in the Amazon FSx for OpenZFS User Guide.
Sets the maximum storage size in gibibytes (GiB) for the volume. You can
* specify a quota that is larger than the storage on the parent volume. A volume
* quota limits the amount of storage that the volume can consume to the configured
* amount, but does not guarantee the space will be available on the parent volume.
* To guarantee quota space, you must also set
* StorageCapacityReservationGiB
. To not specify a storage
* capacity quota, set this to -1
.
For more information, see * Volume * properties in the Amazon FSx for OpenZFS User Guide.
*/ inline int GetStorageCapacityQuotaGiB() const{ return m_storageCapacityQuotaGiB; } /** *Sets the maximum storage size in gibibytes (GiB) for the volume. You can
* specify a quota that is larger than the storage on the parent volume. A volume
* quota limits the amount of storage that the volume can consume to the configured
* amount, but does not guarantee the space will be available on the parent volume.
* To guarantee quota space, you must also set
* StorageCapacityReservationGiB
. To not specify a storage
* capacity quota, set this to -1
.
For more information, see * Volume * properties in the Amazon FSx for OpenZFS User Guide.
*/ inline bool StorageCapacityQuotaGiBHasBeenSet() const { return m_storageCapacityQuotaGiBHasBeenSet; } /** *Sets the maximum storage size in gibibytes (GiB) for the volume. You can
* specify a quota that is larger than the storage on the parent volume. A volume
* quota limits the amount of storage that the volume can consume to the configured
* amount, but does not guarantee the space will be available on the parent volume.
* To guarantee quota space, you must also set
* StorageCapacityReservationGiB
. To not specify a storage
* capacity quota, set this to -1
.
For more information, see * Volume * properties in the Amazon FSx for OpenZFS User Guide.
*/ inline void SetStorageCapacityQuotaGiB(int value) { m_storageCapacityQuotaGiBHasBeenSet = true; m_storageCapacityQuotaGiB = value; } /** *Sets the maximum storage size in gibibytes (GiB) for the volume. You can
* specify a quota that is larger than the storage on the parent volume. A volume
* quota limits the amount of storage that the volume can consume to the configured
* amount, but does not guarantee the space will be available on the parent volume.
* To guarantee quota space, you must also set
* StorageCapacityReservationGiB
. To not specify a storage
* capacity quota, set this to -1
.
For more information, see * Volume * properties in the Amazon FSx for OpenZFS User Guide.
*/ inline CreateOpenZFSVolumeConfiguration& WithStorageCapacityQuotaGiB(int value) { SetStorageCapacityQuotaGiB(value); return *this;} /** *Specifies the suggested block size for a volume in a ZFS dataset, in * kibibytes (KiB). Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. * The default is 128 KiB. We recommend using the default setting for the majority * of use cases. Generally, workloads that write in fixed small or large record * sizes may benefit from setting a custom record size, like database workloads * (small record size) or media streaming workloads (large record size). For * additional guidance on when to set a custom record size, see * ZFS Record size in the Amazon FSx for OpenZFS User Guide.
*/ inline int GetRecordSizeKiB() const{ return m_recordSizeKiB; } /** *Specifies the suggested block size for a volume in a ZFS dataset, in * kibibytes (KiB). Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. * The default is 128 KiB. We recommend using the default setting for the majority * of use cases. Generally, workloads that write in fixed small or large record * sizes may benefit from setting a custom record size, like database workloads * (small record size) or media streaming workloads (large record size). For * additional guidance on when to set a custom record size, see * ZFS Record size in the Amazon FSx for OpenZFS User Guide.
*/ inline bool RecordSizeKiBHasBeenSet() const { return m_recordSizeKiBHasBeenSet; } /** *Specifies the suggested block size for a volume in a ZFS dataset, in * kibibytes (KiB). Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. * The default is 128 KiB. We recommend using the default setting for the majority * of use cases. Generally, workloads that write in fixed small or large record * sizes may benefit from setting a custom record size, like database workloads * (small record size) or media streaming workloads (large record size). For * additional guidance on when to set a custom record size, see * ZFS Record size in the Amazon FSx for OpenZFS User Guide.
*/ inline void SetRecordSizeKiB(int value) { m_recordSizeKiBHasBeenSet = true; m_recordSizeKiB = value; } /** *Specifies the suggested block size for a volume in a ZFS dataset, in * kibibytes (KiB). Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. * The default is 128 KiB. We recommend using the default setting for the majority * of use cases. Generally, workloads that write in fixed small or large record * sizes may benefit from setting a custom record size, like database workloads * (small record size) or media streaming workloads (large record size). For * additional guidance on when to set a custom record size, see * ZFS Record size in the Amazon FSx for OpenZFS User Guide.
*/ inline CreateOpenZFSVolumeConfiguration& WithRecordSizeKiB(int value) { SetRecordSizeKiB(value); return *this;} /** *Specifies the method used to compress the data on the volume. The compression
* type is NONE
by default.
NONE
-
* Doesn't compress the data on the volume. NONE
is the default.
ZSTD
- Compresses the data in the volume using the
* Zstandard (ZSTD) compression algorithm. ZSTD compression provides a higher level
* of data compression and higher read throughput performance than LZ4
* compression.
LZ4
- Compresses the data in the
* volume using the LZ4 compression algorithm. LZ4 compression provides a lower
* level of compression and higher write throughput performance than ZSTD
* compression.
For more information about volume compression * types and the performance of your Amazon FSx for OpenZFS file system, see * Tips for maximizing performance File system and volume settings in the * Amazon FSx for OpenZFS User Guide.
*/ inline const OpenZFSDataCompressionType& GetDataCompressionType() const{ return m_dataCompressionType; } /** *Specifies the method used to compress the data on the volume. The compression
* type is NONE
by default.
NONE
-
* Doesn't compress the data on the volume. NONE
is the default.
ZSTD
- Compresses the data in the volume using the
* Zstandard (ZSTD) compression algorithm. ZSTD compression provides a higher level
* of data compression and higher read throughput performance than LZ4
* compression.
LZ4
- Compresses the data in the
* volume using the LZ4 compression algorithm. LZ4 compression provides a lower
* level of compression and higher write throughput performance than ZSTD
* compression.
For more information about volume compression * types and the performance of your Amazon FSx for OpenZFS file system, see * Tips for maximizing performance File system and volume settings in the * Amazon FSx for OpenZFS User Guide.
*/ inline bool DataCompressionTypeHasBeenSet() const { return m_dataCompressionTypeHasBeenSet; } /** *Specifies the method used to compress the data on the volume. The compression
* type is NONE
by default.
NONE
-
* Doesn't compress the data on the volume. NONE
is the default.
ZSTD
- Compresses the data in the volume using the
* Zstandard (ZSTD) compression algorithm. ZSTD compression provides a higher level
* of data compression and higher read throughput performance than LZ4
* compression.
LZ4
- Compresses the data in the
* volume using the LZ4 compression algorithm. LZ4 compression provides a lower
* level of compression and higher write throughput performance than ZSTD
* compression.
For more information about volume compression * types and the performance of your Amazon FSx for OpenZFS file system, see * Tips for maximizing performance File system and volume settings in the * Amazon FSx for OpenZFS User Guide.
*/ inline void SetDataCompressionType(const OpenZFSDataCompressionType& value) { m_dataCompressionTypeHasBeenSet = true; m_dataCompressionType = value; } /** *Specifies the method used to compress the data on the volume. The compression
* type is NONE
by default.
NONE
-
* Doesn't compress the data on the volume. NONE
is the default.
ZSTD
- Compresses the data in the volume using the
* Zstandard (ZSTD) compression algorithm. ZSTD compression provides a higher level
* of data compression and higher read throughput performance than LZ4
* compression.
LZ4
- Compresses the data in the
* volume using the LZ4 compression algorithm. LZ4 compression provides a lower
* level of compression and higher write throughput performance than ZSTD
* compression.
For more information about volume compression * types and the performance of your Amazon FSx for OpenZFS file system, see * Tips for maximizing performance File system and volume settings in the * Amazon FSx for OpenZFS User Guide.
*/ inline void SetDataCompressionType(OpenZFSDataCompressionType&& value) { m_dataCompressionTypeHasBeenSet = true; m_dataCompressionType = std::move(value); } /** *Specifies the method used to compress the data on the volume. The compression
* type is NONE
by default.
NONE
-
* Doesn't compress the data on the volume. NONE
is the default.
ZSTD
- Compresses the data in the volume using the
* Zstandard (ZSTD) compression algorithm. ZSTD compression provides a higher level
* of data compression and higher read throughput performance than LZ4
* compression.
LZ4
- Compresses the data in the
* volume using the LZ4 compression algorithm. LZ4 compression provides a lower
* level of compression and higher write throughput performance than ZSTD
* compression.
For more information about volume compression * types and the performance of your Amazon FSx for OpenZFS file system, see * Tips for maximizing performance File system and volume settings in the * Amazon FSx for OpenZFS User Guide.
*/ inline CreateOpenZFSVolumeConfiguration& WithDataCompressionType(const OpenZFSDataCompressionType& value) { SetDataCompressionType(value); return *this;} /** *Specifies the method used to compress the data on the volume. The compression
* type is NONE
by default.
NONE
-
* Doesn't compress the data on the volume. NONE
is the default.
ZSTD
- Compresses the data in the volume using the
* Zstandard (ZSTD) compression algorithm. ZSTD compression provides a higher level
* of data compression and higher read throughput performance than LZ4
* compression.
LZ4
- Compresses the data in the
* volume using the LZ4 compression algorithm. LZ4 compression provides a lower
* level of compression and higher write throughput performance than ZSTD
* compression.
For more information about volume compression * types and the performance of your Amazon FSx for OpenZFS file system, see * Tips for maximizing performance File system and volume settings in the * Amazon FSx for OpenZFS User Guide.
*/ inline CreateOpenZFSVolumeConfiguration& WithDataCompressionType(OpenZFSDataCompressionType&& value) { SetDataCompressionType(std::move(value)); return *this;} /** *A Boolean value indicating whether tags for the volume should be copied to
* snapshots. This value defaults to false
. If it's set to
* true
, all tags for the volume are copied to snapshots 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 snapshots. If you
* specify one or more tags when creating the snapshot, no tags are copied from the
* volume, regardless of this value.
A Boolean value indicating whether tags for the volume should be copied to
* snapshots. This value defaults to false
. If it's set to
* true
, all tags for the volume are copied to snapshots 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 snapshots. If you
* specify one or more tags when creating the snapshot, no tags are copied from the
* volume, regardless of this value.
A Boolean value indicating whether tags for the volume should be copied to
* snapshots. This value defaults to false
. If it's set to
* true
, all tags for the volume are copied to snapshots 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 snapshots. If you
* specify one or more tags when creating the snapshot, no tags are copied from the
* volume, regardless of this value.
A Boolean value indicating whether tags for the volume should be copied to
* snapshots. This value defaults to false
. If it's set to
* true
, all tags for the volume are copied to snapshots 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 snapshots. If you
* specify one or more tags when creating the snapshot, no tags are copied from the
* volume, regardless of this value.
The configuration object that specifies the snapshot to use as the origin of * the data for the volume.
*/ inline const CreateOpenZFSOriginSnapshotConfiguration& GetOriginSnapshot() const{ return m_originSnapshot; } /** *The configuration object that specifies the snapshot to use as the origin of * the data for the volume.
*/ inline bool OriginSnapshotHasBeenSet() const { return m_originSnapshotHasBeenSet; } /** *The configuration object that specifies the snapshot to use as the origin of * the data for the volume.
*/ inline void SetOriginSnapshot(const CreateOpenZFSOriginSnapshotConfiguration& value) { m_originSnapshotHasBeenSet = true; m_originSnapshot = value; } /** *The configuration object that specifies the snapshot to use as the origin of * the data for the volume.
*/ inline void SetOriginSnapshot(CreateOpenZFSOriginSnapshotConfiguration&& value) { m_originSnapshotHasBeenSet = true; m_originSnapshot = std::move(value); } /** *The configuration object that specifies the snapshot to use as the origin of * the data for the volume.
*/ inline CreateOpenZFSVolumeConfiguration& WithOriginSnapshot(const CreateOpenZFSOriginSnapshotConfiguration& value) { SetOriginSnapshot(value); return *this;} /** *The configuration object that specifies the snapshot to use as the origin of * the data for the volume.
*/ inline CreateOpenZFSVolumeConfiguration& WithOriginSnapshot(CreateOpenZFSOriginSnapshotConfiguration&& value) { SetOriginSnapshot(std::move(value)); return *this;} /** *A Boolean value indicating whether the volume is read-only.
*/ inline bool GetReadOnly() const{ return m_readOnly; } /** *A Boolean value indicating whether the volume is read-only.
*/ inline bool ReadOnlyHasBeenSet() const { return m_readOnlyHasBeenSet; } /** *A Boolean value indicating whether the volume is read-only.
*/ inline void SetReadOnly(bool value) { m_readOnlyHasBeenSet = true; m_readOnly = value; } /** *A Boolean value indicating whether the volume is read-only.
*/ inline CreateOpenZFSVolumeConfiguration& WithReadOnly(bool value) { SetReadOnly(value); return *this;} /** *The configuration object for mounting a Network File System (NFS) file * system.
*/ inline const Aws::VectorThe configuration object for mounting a Network File System (NFS) file * system.
*/ inline bool NfsExportsHasBeenSet() const { return m_nfsExportsHasBeenSet; } /** *The configuration object for mounting a Network File System (NFS) file * system.
*/ inline void SetNfsExports(const Aws::VectorThe configuration object for mounting a Network File System (NFS) file * system.
*/ inline void SetNfsExports(Aws::VectorThe configuration object for mounting a Network File System (NFS) file * system.
*/ inline CreateOpenZFSVolumeConfiguration& WithNfsExports(const Aws::VectorThe configuration object for mounting a Network File System (NFS) file * system.
*/ inline CreateOpenZFSVolumeConfiguration& WithNfsExports(Aws::VectorThe configuration object for mounting a Network File System (NFS) file * system.
*/ inline CreateOpenZFSVolumeConfiguration& AddNfsExports(const OpenZFSNfsExport& value) { m_nfsExportsHasBeenSet = true; m_nfsExports.push_back(value); return *this; } /** *The configuration object for mounting a Network File System (NFS) file * system.
*/ inline CreateOpenZFSVolumeConfiguration& AddNfsExports(OpenZFSNfsExport&& value) { m_nfsExportsHasBeenSet = true; m_nfsExports.push_back(std::move(value)); return *this; } /** *An object specifying how much storage users or groups can use on the * volume.
*/ inline const Aws::VectorAn object specifying how much storage users or groups can use on the * volume.
*/ inline bool UserAndGroupQuotasHasBeenSet() const { return m_userAndGroupQuotasHasBeenSet; } /** *An object specifying how much storage users or groups can use on the * volume.
*/ inline void SetUserAndGroupQuotas(const Aws::VectorAn object specifying how much storage users or groups can use on the * volume.
*/ inline void SetUserAndGroupQuotas(Aws::VectorAn object specifying how much storage users or groups can use on the * volume.
*/ inline CreateOpenZFSVolumeConfiguration& WithUserAndGroupQuotas(const Aws::VectorAn object specifying how much storage users or groups can use on the * volume.
*/ inline CreateOpenZFSVolumeConfiguration& WithUserAndGroupQuotas(Aws::VectorAn object specifying how much storage users or groups can use on the * volume.
*/ inline CreateOpenZFSVolumeConfiguration& AddUserAndGroupQuotas(const OpenZFSUserOrGroupQuota& value) { m_userAndGroupQuotasHasBeenSet = true; m_userAndGroupQuotas.push_back(value); return *this; } /** *An object specifying how much storage users or groups can use on the * volume.
*/ inline CreateOpenZFSVolumeConfiguration& AddUserAndGroupQuotas(OpenZFSUserOrGroupQuota&& value) { m_userAndGroupQuotasHasBeenSet = true; m_userAndGroupQuotas.push_back(std::move(value)); return *this; } private: Aws::String m_parentVolumeId; bool m_parentVolumeIdHasBeenSet = false; int m_storageCapacityReservationGiB; bool m_storageCapacityReservationGiBHasBeenSet = false; int m_storageCapacityQuotaGiB; bool m_storageCapacityQuotaGiBHasBeenSet = false; int m_recordSizeKiB; bool m_recordSizeKiBHasBeenSet = false; OpenZFSDataCompressionType m_dataCompressionType; bool m_dataCompressionTypeHasBeenSet = false; bool m_copyTagsToSnapshots; bool m_copyTagsToSnapshotsHasBeenSet = false; CreateOpenZFSOriginSnapshotConfiguration m_originSnapshot; bool m_originSnapshotHasBeenSet = false; bool m_readOnly; bool m_readOnlyHasBeenSet = false; Aws::Vector