/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace FSx { namespace Model { /** *

The configuration of an Amazon FSx for OpenZFS volume.

See * Also:

AWS * API Reference

*/ class OpenZFSVolumeConfiguration { public: AWS_FSX_API OpenZFSVolumeConfiguration(); AWS_FSX_API OpenZFSVolumeConfiguration(Aws::Utils::Json::JsonView jsonValue); AWS_FSX_API OpenZFSVolumeConfiguration& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_FSX_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The ID of the parent volume.

*/ inline const Aws::String& GetParentVolumeId() const{ return m_parentVolumeId; } /** *

The ID of the parent volume.

*/ inline bool ParentVolumeIdHasBeenSet() const { return m_parentVolumeIdHasBeenSet; } /** *

The ID of the parent volume.

*/ inline void SetParentVolumeId(const Aws::String& value) { m_parentVolumeIdHasBeenSet = true; m_parentVolumeId = value; } /** *

The ID of the parent volume.

*/ inline void SetParentVolumeId(Aws::String&& value) { m_parentVolumeIdHasBeenSet = true; m_parentVolumeId = std::move(value); } /** *

The ID of the parent volume.

*/ inline void SetParentVolumeId(const char* value) { m_parentVolumeIdHasBeenSet = true; m_parentVolumeId.assign(value); } /** *

The ID of the parent volume.

*/ inline OpenZFSVolumeConfiguration& WithParentVolumeId(const Aws::String& value) { SetParentVolumeId(value); return *this;} /** *

The ID of the parent volume.

*/ inline OpenZFSVolumeConfiguration& WithParentVolumeId(Aws::String&& value) { SetParentVolumeId(std::move(value)); return *this;} /** *

The ID of the parent volume.

*/ inline OpenZFSVolumeConfiguration& WithParentVolumeId(const char* value) { SetParentVolumeId(value); return *this;} /** *

The path to the volume from the root volume. For example, * fsx/parentVolume/volume1.

*/ inline const Aws::String& GetVolumePath() const{ return m_volumePath; } /** *

The path to the volume from the root volume. For example, * fsx/parentVolume/volume1.

*/ inline bool VolumePathHasBeenSet() const { return m_volumePathHasBeenSet; } /** *

The path to the volume from the root volume. For example, * fsx/parentVolume/volume1.

*/ inline void SetVolumePath(const Aws::String& value) { m_volumePathHasBeenSet = true; m_volumePath = value; } /** *

The path to the volume from the root volume. For example, * fsx/parentVolume/volume1.

*/ inline void SetVolumePath(Aws::String&& value) { m_volumePathHasBeenSet = true; m_volumePath = std::move(value); } /** *

The path to the volume from the root volume. For example, * fsx/parentVolume/volume1.

*/ inline void SetVolumePath(const char* value) { m_volumePathHasBeenSet = true; m_volumePath.assign(value); } /** *

The path to the volume from the root volume. For example, * fsx/parentVolume/volume1.

*/ inline OpenZFSVolumeConfiguration& WithVolumePath(const Aws::String& value) { SetVolumePath(value); return *this;} /** *

The path to the volume from the root volume. For example, * fsx/parentVolume/volume1.

*/ inline OpenZFSVolumeConfiguration& WithVolumePath(Aws::String&& value) { SetVolumePath(std::move(value)); return *this;} /** *

The path to the volume from the root volume. For example, * fsx/parentVolume/volume1.

*/ inline OpenZFSVolumeConfiguration& WithVolumePath(const char* value) { SetVolumePath(value); return *this;} /** *

The amount of storage in gibibytes (GiB) to reserve from the parent volume. * You can't reserve more storage than the parent volume has reserved.

*/ inline int GetStorageCapacityReservationGiB() const{ return m_storageCapacityReservationGiB; } /** *

The amount of storage in gibibytes (GiB) to reserve from the parent volume. * You can't reserve more storage than the parent volume has reserved.

*/ inline bool StorageCapacityReservationGiBHasBeenSet() const { return m_storageCapacityReservationGiBHasBeenSet; } /** *

The amount of storage in gibibytes (GiB) to reserve from the parent volume. * You can't reserve more storage than the parent volume has reserved.

*/ inline void SetStorageCapacityReservationGiB(int value) { m_storageCapacityReservationGiBHasBeenSet = true; m_storageCapacityReservationGiB = value; } /** *

The amount of storage in gibibytes (GiB) to reserve from the parent volume. * You can't reserve more storage than the parent volume has reserved.

*/ inline OpenZFSVolumeConfiguration& WithStorageCapacityReservationGiB(int value) { SetStorageCapacityReservationGiB(value); return *this;} /** *

The maximum amount of storage in gibibtyes (GiB) that the volume can use from * its parent. You can specify a quota larger than the storage on the parent * volume.

*/ inline int GetStorageCapacityQuotaGiB() const{ return m_storageCapacityQuotaGiB; } /** *

The maximum amount of storage in gibibtyes (GiB) that the volume can use from * its parent. You can specify a quota larger than the storage on the parent * volume.

*/ inline bool StorageCapacityQuotaGiBHasBeenSet() const { return m_storageCapacityQuotaGiBHasBeenSet; } /** *

The maximum amount of storage in gibibtyes (GiB) that the volume can use from * its parent. You can specify a quota larger than the storage on the parent * volume.

*/ inline void SetStorageCapacityQuotaGiB(int value) { m_storageCapacityQuotaGiBHasBeenSet = true; m_storageCapacityQuotaGiB = value; } /** *

The maximum amount of storage in gibibtyes (GiB) that the volume can use from * its parent. You can specify a quota larger than the storage on the parent * volume.

*/ inline OpenZFSVolumeConfiguration& WithStorageCapacityQuotaGiB(int value) { SetStorageCapacityQuotaGiB(value); return *this;} /** *

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. Most * workloads should use the default record size. For guidance on when to set a * custom record size, see the Amazon FSx for OpenZFS User Guide.

*/ inline int GetRecordSizeKiB() const{ return m_recordSizeKiB; } /** *

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. Most * workloads should use the default record size. For guidance on when to set a * custom record size, see the Amazon FSx for OpenZFS User Guide.

*/ inline bool RecordSizeKiBHasBeenSet() const { return m_recordSizeKiBHasBeenSet; } /** *

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. Most * workloads should use the default record size. For guidance on when to set a * custom record size, see the Amazon FSx for OpenZFS User Guide.

*/ inline void SetRecordSizeKiB(int value) { m_recordSizeKiBHasBeenSet = true; m_recordSizeKiB = value; } /** *

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. Most * workloads should use the default record size. For guidance on when to set a * custom record size, see the Amazon FSx for OpenZFS User Guide.

*/ inline OpenZFSVolumeConfiguration& 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.

*/ 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. 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.

*/ 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. 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.

*/ 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. 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.

*/ 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. 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.

*/ inline OpenZFSVolumeConfiguration& 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. 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.

*/ inline OpenZFSVolumeConfiguration& 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.

*/ inline bool GetCopyTagsToSnapshots() const{ return m_copyTagsToSnapshots; } /** *

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.

*/ inline bool CopyTagsToSnapshotsHasBeenSet() const { return m_copyTagsToSnapshotsHasBeenSet; } /** *

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.

*/ inline void SetCopyTagsToSnapshots(bool value) { m_copyTagsToSnapshotsHasBeenSet = true; m_copyTagsToSnapshots = 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.

*/ inline OpenZFSVolumeConfiguration& WithCopyTagsToSnapshots(bool value) { SetCopyTagsToSnapshots(value); return *this;} /** *

The configuration object that specifies the snapshot to use as the origin of * the data for the volume.

*/ inline const OpenZFSOriginSnapshotConfiguration& 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 OpenZFSOriginSnapshotConfiguration& 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(OpenZFSOriginSnapshotConfiguration&& 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 OpenZFSVolumeConfiguration& WithOriginSnapshot(const OpenZFSOriginSnapshotConfiguration& value) { SetOriginSnapshot(value); return *this;} /** *

The configuration object that specifies the snapshot to use as the origin of * the data for the volume.

*/ inline OpenZFSVolumeConfiguration& WithOriginSnapshot(OpenZFSOriginSnapshotConfiguration&& 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 OpenZFSVolumeConfiguration& WithReadOnly(bool value) { SetReadOnly(value); return *this;} /** *

The configuration object for mounting a Network File System (NFS) file * system.

*/ inline const Aws::Vector& GetNfsExports() const{ return m_nfsExports; } /** *

The 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::Vector& value) { m_nfsExportsHasBeenSet = true; m_nfsExports = value; } /** *

The configuration object for mounting a Network File System (NFS) file * system.

*/ inline void SetNfsExports(Aws::Vector&& value) { m_nfsExportsHasBeenSet = true; m_nfsExports = std::move(value); } /** *

The configuration object for mounting a Network File System (NFS) file * system.

*/ inline OpenZFSVolumeConfiguration& WithNfsExports(const Aws::Vector& value) { SetNfsExports(value); return *this;} /** *

The configuration object for mounting a Network File System (NFS) file * system.

*/ inline OpenZFSVolumeConfiguration& WithNfsExports(Aws::Vector&& value) { SetNfsExports(std::move(value)); return *this;} /** *

The configuration object for mounting a Network File System (NFS) file * system.

*/ inline OpenZFSVolumeConfiguration& 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 OpenZFSVolumeConfiguration& 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::Vector& GetUserAndGroupQuotas() const{ return m_userAndGroupQuotas; } /** *

An 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::Vector& value) { m_userAndGroupQuotasHasBeenSet = true; m_userAndGroupQuotas = value; } /** *

An object specifying how much storage users or groups can use on the * volume.

*/ inline void SetUserAndGroupQuotas(Aws::Vector&& value) { m_userAndGroupQuotasHasBeenSet = true; m_userAndGroupQuotas = std::move(value); } /** *

An object specifying how much storage users or groups can use on the * volume.

*/ inline OpenZFSVolumeConfiguration& WithUserAndGroupQuotas(const Aws::Vector& value) { SetUserAndGroupQuotas(value); return *this;} /** *

An object specifying how much storage users or groups can use on the * volume.

*/ inline OpenZFSVolumeConfiguration& WithUserAndGroupQuotas(Aws::Vector&& value) { SetUserAndGroupQuotas(std::move(value)); return *this;} /** *

An object specifying how much storage users or groups can use on the * volume.

*/ inline OpenZFSVolumeConfiguration& 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 OpenZFSVolumeConfiguration& AddUserAndGroupQuotas(OpenZFSUserOrGroupQuota&& value) { m_userAndGroupQuotasHasBeenSet = true; m_userAndGroupQuotas.push_back(std::move(value)); return *this; } /** *

Specifies the ID of the snapshot to which the volume was restored.

*/ inline const Aws::String& GetRestoreToSnapshot() const{ return m_restoreToSnapshot; } /** *

Specifies the ID of the snapshot to which the volume was restored.

*/ inline bool RestoreToSnapshotHasBeenSet() const { return m_restoreToSnapshotHasBeenSet; } /** *

Specifies the ID of the snapshot to which the volume was restored.

*/ inline void SetRestoreToSnapshot(const Aws::String& value) { m_restoreToSnapshotHasBeenSet = true; m_restoreToSnapshot = value; } /** *

Specifies the ID of the snapshot to which the volume was restored.

*/ inline void SetRestoreToSnapshot(Aws::String&& value) { m_restoreToSnapshotHasBeenSet = true; m_restoreToSnapshot = std::move(value); } /** *

Specifies the ID of the snapshot to which the volume was restored.

*/ inline void SetRestoreToSnapshot(const char* value) { m_restoreToSnapshotHasBeenSet = true; m_restoreToSnapshot.assign(value); } /** *

Specifies the ID of the snapshot to which the volume was restored.

*/ inline OpenZFSVolumeConfiguration& WithRestoreToSnapshot(const Aws::String& value) { SetRestoreToSnapshot(value); return *this;} /** *

Specifies the ID of the snapshot to which the volume was restored.

*/ inline OpenZFSVolumeConfiguration& WithRestoreToSnapshot(Aws::String&& value) { SetRestoreToSnapshot(std::move(value)); return *this;} /** *

Specifies the ID of the snapshot to which the volume was restored.

*/ inline OpenZFSVolumeConfiguration& WithRestoreToSnapshot(const char* value) { SetRestoreToSnapshot(value); return *this;} /** *

A Boolean value indicating whether snapshots between the current state and * the specified snapshot should be deleted when a volume is restored from * snapshot.

*/ inline bool GetDeleteIntermediateSnaphots() const{ return m_deleteIntermediateSnaphots; } /** *

A Boolean value indicating whether snapshots between the current state and * the specified snapshot should be deleted when a volume is restored from * snapshot.

*/ inline bool DeleteIntermediateSnaphotsHasBeenSet() const { return m_deleteIntermediateSnaphotsHasBeenSet; } /** *

A Boolean value indicating whether snapshots between the current state and * the specified snapshot should be deleted when a volume is restored from * snapshot.

*/ inline void SetDeleteIntermediateSnaphots(bool value) { m_deleteIntermediateSnaphotsHasBeenSet = true; m_deleteIntermediateSnaphots = value; } /** *

A Boolean value indicating whether snapshots between the current state and * the specified snapshot should be deleted when a volume is restored from * snapshot.

*/ inline OpenZFSVolumeConfiguration& WithDeleteIntermediateSnaphots(bool value) { SetDeleteIntermediateSnaphots(value); return *this;} /** *

A Boolean value indicating whether dependent clone volumes created from * intermediate snapshots should be deleted when a volume is restored from * snapshot.

*/ inline bool GetDeleteClonedVolumes() const{ return m_deleteClonedVolumes; } /** *

A Boolean value indicating whether dependent clone volumes created from * intermediate snapshots should be deleted when a volume is restored from * snapshot.

*/ inline bool DeleteClonedVolumesHasBeenSet() const { return m_deleteClonedVolumesHasBeenSet; } /** *

A Boolean value indicating whether dependent clone volumes created from * intermediate snapshots should be deleted when a volume is restored from * snapshot.

*/ inline void SetDeleteClonedVolumes(bool value) { m_deleteClonedVolumesHasBeenSet = true; m_deleteClonedVolumes = value; } /** *

A Boolean value indicating whether dependent clone volumes created from * intermediate snapshots should be deleted when a volume is restored from * snapshot.

*/ inline OpenZFSVolumeConfiguration& WithDeleteClonedVolumes(bool value) { SetDeleteClonedVolumes(value); return *this;} private: Aws::String m_parentVolumeId; bool m_parentVolumeIdHasBeenSet = false; Aws::String m_volumePath; bool m_volumePathHasBeenSet = 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; OpenZFSOriginSnapshotConfiguration m_originSnapshot; bool m_originSnapshotHasBeenSet = false; bool m_readOnly; bool m_readOnlyHasBeenSet = false; Aws::Vector m_nfsExports; bool m_nfsExportsHasBeenSet = false; Aws::Vector m_userAndGroupQuotas; bool m_userAndGroupQuotasHasBeenSet = false; Aws::String m_restoreToSnapshot; bool m_restoreToSnapshotHasBeenSet = false; bool m_deleteIntermediateSnaphots; bool m_deleteIntermediateSnaphotsHasBeenSet = false; bool m_deleteClonedVolumes; bool m_deleteClonedVolumesHasBeenSet = false; }; } // namespace Model } // namespace FSx } // namespace Aws