/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
#pragma once
#include  The configuration of an Amazon FSx for OpenZFS root volume.See
   * Also:
   AWS
   * API Reference
Specifies the record size of an OpenZFS root volume, in kibibytes (KiB). * Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is * 128 KiB. Most workloads should use the default record size. Database workflows * can benefit from a smaller record size, while streaming workflows can benefit * from a larger record size. For additional guidance on setting a custom record * size, see * Tips for maximizing performance in the Amazon FSx for OpenZFS User * Guide.
*/ inline int GetRecordSizeKiB() const{ return m_recordSizeKiB; } /** *Specifies the record size of an OpenZFS root volume, in kibibytes (KiB). * Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is * 128 KiB. Most workloads should use the default record size. Database workflows * can benefit from a smaller record size, while streaming workflows can benefit * from a larger record size. For additional guidance on setting a custom record * size, see * Tips for maximizing performance in the Amazon FSx for OpenZFS User * Guide.
*/ inline bool RecordSizeKiBHasBeenSet() const { return m_recordSizeKiBHasBeenSet; } /** *Specifies the record size of an OpenZFS root volume, in kibibytes (KiB). * Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is * 128 KiB. Most workloads should use the default record size. Database workflows * can benefit from a smaller record size, while streaming workflows can benefit * from a larger record size. For additional guidance on setting a custom record * size, see * Tips for maximizing performance in the Amazon FSx for OpenZFS User * Guide.
*/ inline void SetRecordSizeKiB(int value) { m_recordSizeKiBHasBeenSet = true; m_recordSizeKiB = value; } /** *Specifies the record size of an OpenZFS root volume, in kibibytes (KiB). * Valid values are 4, 8, 16, 32, 64, 128, 256, 512, or 1024 KiB. The default is * 128 KiB. Most workloads should use the default record size. Database workflows * can benefit from a smaller record size, while streaming workflows can benefit * from a larger record size. For additional guidance on setting a custom record * size, see * Tips for maximizing performance in the Amazon FSx for OpenZFS User * Guide.
*/ inline OpenZFSCreateRootVolumeConfiguration& 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. Compared to LZ4, Z-Standard provides a
     * better compression ratio to minimize on-disk storage utilization.
 LZ4 - Compresses the data in the volume using the LZ4
     * compression algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
     * delivers higher write throughput speeds.
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. Compared to LZ4, Z-Standard provides a
     * better compression ratio to minimize on-disk storage utilization.
 LZ4 - Compresses the data in the volume using the LZ4
     * compression algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
     * delivers higher write throughput speeds.
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. Compared to LZ4, Z-Standard provides a
     * better compression ratio to minimize on-disk storage utilization.
 LZ4 - Compresses the data in the volume using the LZ4
     * compression algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
     * delivers higher write throughput speeds.
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. Compared to LZ4, Z-Standard provides a
     * better compression ratio to minimize on-disk storage utilization.
 LZ4 - Compresses the data in the volume using the LZ4
     * compression algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
     * delivers higher write throughput speeds.
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. Compared to LZ4, Z-Standard provides a
     * better compression ratio to minimize on-disk storage utilization.
 LZ4 - Compresses the data in the volume using the LZ4
     * compression algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
     * delivers higher write throughput speeds.
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. Compared to LZ4, Z-Standard provides a
     * better compression ratio to minimize on-disk storage utilization.
 LZ4 - Compresses the data in the volume using the LZ4
     * compression algorithm. Compared to Z-Standard, LZ4 is less compute-intensive and
     * delivers higher write throughput speeds.
The configuration object for mounting a file system.
*/ inline const Aws::VectorThe configuration object for mounting a file system.
*/ inline bool NfsExportsHasBeenSet() const { return m_nfsExportsHasBeenSet; } /** *The configuration object for mounting a file system.
*/ inline void SetNfsExports(const Aws::VectorThe configuration object for mounting a file system.
*/ inline void SetNfsExports(Aws::VectorThe configuration object for mounting a file system.
*/ inline OpenZFSCreateRootVolumeConfiguration& WithNfsExports(const Aws::VectorThe configuration object for mounting a file system.
*/ inline OpenZFSCreateRootVolumeConfiguration& WithNfsExports(Aws::VectorThe configuration object for mounting a file system.
*/ inline OpenZFSCreateRootVolumeConfiguration& AddNfsExports(const OpenZFSNfsExport& value) { m_nfsExportsHasBeenSet = true; m_nfsExports.push_back(value); return *this; } /** *The configuration object for mounting a file system.
*/ inline OpenZFSCreateRootVolumeConfiguration& 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 OpenZFSCreateRootVolumeConfiguration& WithUserAndGroupQuotas(const Aws::VectorAn object specifying how much storage users or groups can use on the * volume.
*/ inline OpenZFSCreateRootVolumeConfiguration& WithUserAndGroupQuotas(Aws::VectorAn object specifying how much storage users or groups can use on the * volume.
*/ inline OpenZFSCreateRootVolumeConfiguration& 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 OpenZFSCreateRootVolumeConfiguration& AddUserAndGroupQuotas(OpenZFSUserOrGroupQuota&& value) { m_userAndGroupQuotasHasBeenSet = true; m_userAndGroupQuotas.push_back(std::move(value)); return *this; } /** *A Boolean value indicating whether tags for the volume should be copied to
     * snapshots of the volume. 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 of the volume. 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 of the volume. 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 of the volume. 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 the volume is read-only. Setting this
     * value to true can be useful after you have completed changes to a
     * volume and no longer want changes to occur. 
A Boolean value indicating whether the volume is read-only. Setting this
     * value to true can be useful after you have completed changes to a
     * volume and no longer want changes to occur. 
A Boolean value indicating whether the volume is read-only. Setting this
     * value to true can be useful after you have completed changes to a
     * volume and no longer want changes to occur. 
A Boolean value indicating whether the volume is read-only. Setting this
     * value to true can be useful after you have completed changes to a
     * volume and no longer want changes to occur.