software.amazon.awssdk.services.fsx.model.LustreFileSystemConfiguration Maven / Gradle / Ivy
Show all versions of fsx Show documentation
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package software.amazon.awssdk.services.fsx.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
*
* The configuration for the Amazon FSx for Lustre file system.
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class LustreFileSystemConfiguration implements SdkPojo, Serializable,
ToCopyableBuilder {
private static final SdkField WEEKLY_MAINTENANCE_START_TIME_FIELD = SdkField
. builder(MarshallingType.STRING)
.memberName("WeeklyMaintenanceStartTime")
.getter(getter(LustreFileSystemConfiguration::weeklyMaintenanceStartTime))
.setter(setter(Builder::weeklyMaintenanceStartTime))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("WeeklyMaintenanceStartTime").build())
.build();
private static final SdkField DATA_REPOSITORY_CONFIGURATION_FIELD = SdkField
. builder(MarshallingType.SDK_POJO)
.memberName("DataRepositoryConfiguration")
.getter(getter(LustreFileSystemConfiguration::dataRepositoryConfiguration))
.setter(setter(Builder::dataRepositoryConfiguration))
.constructor(DataRepositoryConfiguration::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DataRepositoryConfiguration")
.build()).build();
private static final SdkField DEPLOYMENT_TYPE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("DeploymentType").getter(getter(LustreFileSystemConfiguration::deploymentTypeAsString))
.setter(setter(Builder::deploymentType))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DeploymentType").build()).build();
private static final SdkField PER_UNIT_STORAGE_THROUGHPUT_FIELD = SdkField
. builder(MarshallingType.INTEGER).memberName("PerUnitStorageThroughput")
.getter(getter(LustreFileSystemConfiguration::perUnitStorageThroughput))
.setter(setter(Builder::perUnitStorageThroughput))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("PerUnitStorageThroughput").build())
.build();
private static final SdkField MOUNT_NAME_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("MountName").getter(getter(LustreFileSystemConfiguration::mountName)).setter(setter(Builder::mountName))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("MountName").build()).build();
private static final SdkField DAILY_AUTOMATIC_BACKUP_START_TIME_FIELD = SdkField
. builder(MarshallingType.STRING)
.memberName("DailyAutomaticBackupStartTime")
.getter(getter(LustreFileSystemConfiguration::dailyAutomaticBackupStartTime))
.setter(setter(Builder::dailyAutomaticBackupStartTime))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DailyAutomaticBackupStartTime")
.build()).build();
private static final SdkField AUTOMATIC_BACKUP_RETENTION_DAYS_FIELD = SdkField
. builder(MarshallingType.INTEGER)
.memberName("AutomaticBackupRetentionDays")
.getter(getter(LustreFileSystemConfiguration::automaticBackupRetentionDays))
.setter(setter(Builder::automaticBackupRetentionDays))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AutomaticBackupRetentionDays")
.build()).build();
private static final SdkField COPY_TAGS_TO_BACKUPS_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
.memberName("CopyTagsToBackups").getter(getter(LustreFileSystemConfiguration::copyTagsToBackups))
.setter(setter(Builder::copyTagsToBackups))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("CopyTagsToBackups").build()).build();
private static final SdkField DRIVE_CACHE_TYPE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("DriveCacheType").getter(getter(LustreFileSystemConfiguration::driveCacheTypeAsString))
.setter(setter(Builder::driveCacheType))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DriveCacheType").build()).build();
private static final SdkField DATA_COMPRESSION_TYPE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("DataCompressionType").getter(getter(LustreFileSystemConfiguration::dataCompressionTypeAsString))
.setter(setter(Builder::dataCompressionType))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("DataCompressionType").build())
.build();
private static final SdkField LOG_CONFIGURATION_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("LogConfiguration")
.getter(getter(LustreFileSystemConfiguration::logConfiguration)).setter(setter(Builder::logConfiguration))
.constructor(LustreLogConfiguration::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("LogConfiguration").build()).build();
private static final SdkField ROOT_SQUASH_CONFIGURATION_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("RootSquashConfiguration")
.getter(getter(LustreFileSystemConfiguration::rootSquashConfiguration))
.setter(setter(Builder::rootSquashConfiguration)).constructor(LustreRootSquashConfiguration::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("RootSquashConfiguration").build())
.build();
private static final SdkField METADATA_CONFIGURATION_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("MetadataConfiguration")
.getter(getter(LustreFileSystemConfiguration::metadataConfiguration)).setter(setter(Builder::metadataConfiguration))
.constructor(FileSystemLustreMetadataConfiguration::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("MetadataConfiguration").build())
.build();
private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(
WEEKLY_MAINTENANCE_START_TIME_FIELD, DATA_REPOSITORY_CONFIGURATION_FIELD, DEPLOYMENT_TYPE_FIELD,
PER_UNIT_STORAGE_THROUGHPUT_FIELD, MOUNT_NAME_FIELD, DAILY_AUTOMATIC_BACKUP_START_TIME_FIELD,
AUTOMATIC_BACKUP_RETENTION_DAYS_FIELD, COPY_TAGS_TO_BACKUPS_FIELD, DRIVE_CACHE_TYPE_FIELD,
DATA_COMPRESSION_TYPE_FIELD, LOG_CONFIGURATION_FIELD, ROOT_SQUASH_CONFIGURATION_FIELD, METADATA_CONFIGURATION_FIELD));
private static final long serialVersionUID = 1L;
private final String weeklyMaintenanceStartTime;
private final DataRepositoryConfiguration dataRepositoryConfiguration;
private final String deploymentType;
private final Integer perUnitStorageThroughput;
private final String mountName;
private final String dailyAutomaticBackupStartTime;
private final Integer automaticBackupRetentionDays;
private final Boolean copyTagsToBackups;
private final String driveCacheType;
private final String dataCompressionType;
private final LustreLogConfiguration logConfiguration;
private final LustreRootSquashConfiguration rootSquashConfiguration;
private final FileSystemLustreMetadataConfiguration metadataConfiguration;
private LustreFileSystemConfiguration(BuilderImpl builder) {
this.weeklyMaintenanceStartTime = builder.weeklyMaintenanceStartTime;
this.dataRepositoryConfiguration = builder.dataRepositoryConfiguration;
this.deploymentType = builder.deploymentType;
this.perUnitStorageThroughput = builder.perUnitStorageThroughput;
this.mountName = builder.mountName;
this.dailyAutomaticBackupStartTime = builder.dailyAutomaticBackupStartTime;
this.automaticBackupRetentionDays = builder.automaticBackupRetentionDays;
this.copyTagsToBackups = builder.copyTagsToBackups;
this.driveCacheType = builder.driveCacheType;
this.dataCompressionType = builder.dataCompressionType;
this.logConfiguration = builder.logConfiguration;
this.rootSquashConfiguration = builder.rootSquashConfiguration;
this.metadataConfiguration = builder.metadataConfiguration;
}
/**
*
* The preferred start time to perform weekly maintenance, formatted d:HH:MM in the UTC time zone. Here,
* d
is the weekday number, from 1 through 7, beginning with Monday and ending with Sunday.
*
*
* @return The preferred start time to perform weekly maintenance, formatted d:HH:MM in the UTC time zone. Here,
* d
is the weekday number, from 1 through 7, beginning with Monday and ending with Sunday.
*/
public final String weeklyMaintenanceStartTime() {
return weeklyMaintenanceStartTime;
}
/**
* Returns the value of the DataRepositoryConfiguration property for this object.
*
* @return The value of the DataRepositoryConfiguration property for this object.
*/
public final DataRepositoryConfiguration dataRepositoryConfiguration() {
return dataRepositoryConfiguration;
}
/**
*
* The deployment type of the FSx for Lustre file system. Scratch deployment type is designed for temporary
* storage and shorter-term processing of data.
*
*
* SCRATCH_1
and SCRATCH_2
deployment types are best suited for when you need temporary
* storage and shorter-term processing of data. The SCRATCH_2
deployment type provides in-transit
* encryption of data and higher burst throughput capacity than SCRATCH_1
.
*
*
* The PERSISTENT_1
and PERSISTENT_2
deployment type is used for longer-term storage and
* workloads and encryption of data in transit. PERSISTENT_2
offers higher
* PerUnitStorageThroughput
(up to 1000 MB/s/TiB) along with a lower minimum storage capacity
* requirement (600 GiB). To learn more about FSx for Lustre deployment types, see FSx for Lustre deployment
* options.
*
*
* The default is SCRATCH_1
.
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #deploymentType}
* will return {@link LustreDeploymentType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is
* available from {@link #deploymentTypeAsString}.
*
*
* @return The deployment type of the FSx for Lustre file system. Scratch deployment type is designed for
* temporary storage and shorter-term processing of data.
*
* SCRATCH_1
and SCRATCH_2
deployment types are best suited for when you need
* temporary storage and shorter-term processing of data. The SCRATCH_2
deployment type
* provides in-transit encryption of data and higher burst throughput capacity than SCRATCH_1
.
*
*
* The PERSISTENT_1
and PERSISTENT_2
deployment type is used for longer-term
* storage and workloads and encryption of data in transit. PERSISTENT_2
offers higher
* PerUnitStorageThroughput
(up to 1000 MB/s/TiB) along with a lower minimum storage capacity
* requirement (600 GiB). To learn more about FSx for Lustre deployment types, see FSx for Lustre
* deployment options.
*
*
* The default is SCRATCH_1
.
* @see LustreDeploymentType
*/
public final LustreDeploymentType deploymentType() {
return LustreDeploymentType.fromValue(deploymentType);
}
/**
*
* The deployment type of the FSx for Lustre file system. Scratch deployment type is designed for temporary
* storage and shorter-term processing of data.
*
*
* SCRATCH_1
and SCRATCH_2
deployment types are best suited for when you need temporary
* storage and shorter-term processing of data. The SCRATCH_2
deployment type provides in-transit
* encryption of data and higher burst throughput capacity than SCRATCH_1
.
*
*
* The PERSISTENT_1
and PERSISTENT_2
deployment type is used for longer-term storage and
* workloads and encryption of data in transit. PERSISTENT_2
offers higher
* PerUnitStorageThroughput
(up to 1000 MB/s/TiB) along with a lower minimum storage capacity
* requirement (600 GiB). To learn more about FSx for Lustre deployment types, see FSx for Lustre deployment
* options.
*
*
* The default is SCRATCH_1
.
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #deploymentType}
* will return {@link LustreDeploymentType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is
* available from {@link #deploymentTypeAsString}.
*
*
* @return The deployment type of the FSx for Lustre file system. Scratch deployment type is designed for
* temporary storage and shorter-term processing of data.
*
* SCRATCH_1
and SCRATCH_2
deployment types are best suited for when you need
* temporary storage and shorter-term processing of data. The SCRATCH_2
deployment type
* provides in-transit encryption of data and higher burst throughput capacity than SCRATCH_1
.
*
*
* The PERSISTENT_1
and PERSISTENT_2
deployment type is used for longer-term
* storage and workloads and encryption of data in transit. PERSISTENT_2
offers higher
* PerUnitStorageThroughput
(up to 1000 MB/s/TiB) along with a lower minimum storage capacity
* requirement (600 GiB). To learn more about FSx for Lustre deployment types, see FSx for Lustre
* deployment options.
*
*
* The default is SCRATCH_1
.
* @see LustreDeploymentType
*/
public final String deploymentTypeAsString() {
return deploymentType;
}
/**
*
* Per unit storage throughput represents the megabytes per second of read or write throughput per 1 tebibyte of
* storage provisioned. File system throughput capacity is equal to Storage capacity (TiB) *
* PerUnitStorageThroughput (MB/s/TiB). This option is only valid for PERSISTENT_1
and
* PERSISTENT_2
deployment types.
*
*
* Valid values:
*
*
* -
*
* For PERSISTENT_1
SSD storage: 50, 100, 200.
*
*
* -
*
* For PERSISTENT_1
HDD storage: 12, 40.
*
*
* -
*
* For PERSISTENT_2
SSD storage: 125, 250, 500, 1000.
*
*
*
*
* @return Per unit storage throughput represents the megabytes per second of read or write throughput per 1
* tebibyte of storage provisioned. File system throughput capacity is equal to Storage capacity (TiB) *
* PerUnitStorageThroughput (MB/s/TiB). This option is only valid for PERSISTENT_1
and
* PERSISTENT_2
deployment types.
*
* Valid values:
*
*
* -
*
* For PERSISTENT_1
SSD storage: 50, 100, 200.
*
*
* -
*
* For PERSISTENT_1
HDD storage: 12, 40.
*
*
* -
*
* For PERSISTENT_2
SSD storage: 125, 250, 500, 1000.
*
*
*/
public final Integer perUnitStorageThroughput() {
return perUnitStorageThroughput;
}
/**
*
* You use the MountName
value when mounting the file system.
*
*
* For the SCRATCH_1
deployment type, this value is always "fsx
". For
* SCRATCH_2
, PERSISTENT_1
, and PERSISTENT_2
deployment types, this value is
* a string that is unique within an Amazon Web Services Region.
*
*
* @return You use the MountName
value when mounting the file system.
*
* For the SCRATCH_1
deployment type, this value is always "fsx
". For
* SCRATCH_2
, PERSISTENT_1
, and PERSISTENT_2
deployment types, this
* value is a string that is unique within an Amazon Web Services Region.
*/
public final String mountName() {
return mountName;
}
/**
* Returns the value of the DailyAutomaticBackupStartTime property for this object.
*
* @return The value of the DailyAutomaticBackupStartTime property for this object.
*/
public final String dailyAutomaticBackupStartTime() {
return dailyAutomaticBackupStartTime;
}
/**
* Returns the value of the AutomaticBackupRetentionDays property for this object.
*
* @return The value of the AutomaticBackupRetentionDays property for this object.
*/
public final Integer automaticBackupRetentionDays() {
return automaticBackupRetentionDays;
}
/**
*
* A boolean flag indicating whether tags on the file system are copied to backups. If it's set to true, all tags on
* the file system are copied to all automatic backups and any user-initiated backups where the user doesn't specify
* any tags. If this value is true, and you specify one or more tags, only the specified tags are copied to backups.
* If you specify one or more tags when creating a user-initiated backup, no tags are copied from the file system,
* regardless of this value. (Default = false)
*
*
* @return A boolean flag indicating whether tags on the file system are copied to backups. If it's set to true, all
* tags on the file system are copied to all automatic backups and any user-initiated backups where the user
* doesn't specify any tags. If this value is true, and you specify one or more tags, only the specified
* tags are copied to backups. If you specify one or more tags when creating a user-initiated backup, no
* tags are copied from the file system, regardless of this value. (Default = false)
*/
public final Boolean copyTagsToBackups() {
return copyTagsToBackups;
}
/**
*
* The type of drive cache used by PERSISTENT_1
file systems that are provisioned with HDD storage
* devices. This parameter is required when StorageType
is HDD. When set to READ
the file
* system has an SSD storage cache that is sized to 20% of the file system's storage capacity. This improves the
* performance for frequently accessed files by caching up to 20% of the total storage capacity.
*
*
* This parameter is required when StorageType
is set to HDD.
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #driveCacheType}
* will return {@link DriveCacheType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #driveCacheTypeAsString}.
*
*
* @return The type of drive cache used by PERSISTENT_1
file systems that are provisioned with HDD
* storage devices. This parameter is required when StorageType
is HDD. When set to
* READ
the file system has an SSD storage cache that is sized to 20% of the file system's
* storage capacity. This improves the performance for frequently accessed files by caching up to 20% of the
* total storage capacity.
*
* This parameter is required when StorageType
is set to HDD.
* @see DriveCacheType
*/
public final DriveCacheType driveCacheType() {
return DriveCacheType.fromValue(driveCacheType);
}
/**
*
* The type of drive cache used by PERSISTENT_1
file systems that are provisioned with HDD storage
* devices. This parameter is required when StorageType
is HDD. When set to READ
the file
* system has an SSD storage cache that is sized to 20% of the file system's storage capacity. This improves the
* performance for frequently accessed files by caching up to 20% of the total storage capacity.
*
*
* This parameter is required when StorageType
is set to HDD.
*
*
* If the service returns an enum value that is not available in the current SDK version, {@link #driveCacheType}
* will return {@link DriveCacheType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #driveCacheTypeAsString}.
*
*
* @return The type of drive cache used by PERSISTENT_1
file systems that are provisioned with HDD
* storage devices. This parameter is required when StorageType
is HDD. When set to
* READ
the file system has an SSD storage cache that is sized to 20% of the file system's
* storage capacity. This improves the performance for frequently accessed files by caching up to 20% of the
* total storage capacity.
*
* This parameter is required when StorageType
is set to HDD.
* @see DriveCacheType
*/
public final String driveCacheTypeAsString() {
return driveCacheType;
}
/**
*
* The data compression configuration for the file system. DataCompressionType
can have the following
* values:
*
*
* -
*
* NONE
- Data compression is turned off for the file system.
*
*
* -
*
* LZ4
- Data compression is turned on with the LZ4 algorithm.
*
*
*
*
* For more information, see Lustre data compression.
*
*
* If the service returns an enum value that is not available in the current SDK version,
* {@link #dataCompressionType} will return {@link DataCompressionType#UNKNOWN_TO_SDK_VERSION}. The raw value
* returned by the service is available from {@link #dataCompressionTypeAsString}.
*
*
* @return The data compression configuration for the file system. DataCompressionType
can have the
* following values:
*
* -
*
* NONE
- Data compression is turned off for the file system.
*
*
* -
*
* LZ4
- Data compression is turned on with the LZ4 algorithm.
*
*
*
*
* For more information, see Lustre data
* compression.
* @see DataCompressionType
*/
public final DataCompressionType dataCompressionType() {
return DataCompressionType.fromValue(dataCompressionType);
}
/**
*
* The data compression configuration for the file system. DataCompressionType
can have the following
* values:
*
*
* -
*
* NONE
- Data compression is turned off for the file system.
*
*
* -
*
* LZ4
- Data compression is turned on with the LZ4 algorithm.
*
*
*
*
* For more information, see Lustre data compression.
*
*
* If the service returns an enum value that is not available in the current SDK version,
* {@link #dataCompressionType} will return {@link DataCompressionType#UNKNOWN_TO_SDK_VERSION}. The raw value
* returned by the service is available from {@link #dataCompressionTypeAsString}.
*
*
* @return The data compression configuration for the file system. DataCompressionType
can have the
* following values:
*
* -
*
* NONE
- Data compression is turned off for the file system.
*
*
* -
*
* LZ4
- Data compression is turned on with the LZ4 algorithm.
*
*
*
*
* For more information, see Lustre data
* compression.
* @see DataCompressionType
*/
public final String dataCompressionTypeAsString() {
return dataCompressionType;
}
/**
*
* The Lustre logging configuration. Lustre logging writes the enabled log events for your file system to Amazon
* CloudWatch Logs.
*
*
* @return The Lustre logging configuration. Lustre logging writes the enabled log events for your file system to
* Amazon CloudWatch Logs.
*/
public final LustreLogConfiguration logConfiguration() {
return logConfiguration;
}
/**
*
* The Lustre root squash configuration for an Amazon FSx for Lustre file system. When enabled, root squash
* restricts root-level access from clients that try to access your file system as a root user.
*
*
* @return The Lustre root squash configuration for an Amazon FSx for Lustre file system. When enabled, root squash
* restricts root-level access from clients that try to access your file system as a root user.
*/
public final LustreRootSquashConfiguration rootSquashConfiguration() {
return rootSquashConfiguration;
}
/**
*
* The Lustre metadata performance configuration for an Amazon FSx for Lustre file system using a
* PERSISTENT_2
deployment type.
*
*
* @return The Lustre metadata performance configuration for an Amazon FSx for Lustre file system using a
* PERSISTENT_2
deployment type.
*/
public final FileSystemLustreMetadataConfiguration metadataConfiguration() {
return metadataConfiguration;
}
@Override
public Builder toBuilder() {
return new BuilderImpl(this);
}
public static Builder builder() {
return new BuilderImpl();
}
public static Class extends Builder> serializableBuilderClass() {
return BuilderImpl.class;
}
@Override
public final int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + Objects.hashCode(weeklyMaintenanceStartTime());
hashCode = 31 * hashCode + Objects.hashCode(dataRepositoryConfiguration());
hashCode = 31 * hashCode + Objects.hashCode(deploymentTypeAsString());
hashCode = 31 * hashCode + Objects.hashCode(perUnitStorageThroughput());
hashCode = 31 * hashCode + Objects.hashCode(mountName());
hashCode = 31 * hashCode + Objects.hashCode(dailyAutomaticBackupStartTime());
hashCode = 31 * hashCode + Objects.hashCode(automaticBackupRetentionDays());
hashCode = 31 * hashCode + Objects.hashCode(copyTagsToBackups());
hashCode = 31 * hashCode + Objects.hashCode(driveCacheTypeAsString());
hashCode = 31 * hashCode + Objects.hashCode(dataCompressionTypeAsString());
hashCode = 31 * hashCode + Objects.hashCode(logConfiguration());
hashCode = 31 * hashCode + Objects.hashCode(rootSquashConfiguration());
hashCode = 31 * hashCode + Objects.hashCode(metadataConfiguration());
return hashCode;
}
@Override
public final boolean equals(Object obj) {
return equalsBySdkFields(obj);
}
@Override
public final boolean equalsBySdkFields(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof LustreFileSystemConfiguration)) {
return false;
}
LustreFileSystemConfiguration other = (LustreFileSystemConfiguration) obj;
return Objects.equals(weeklyMaintenanceStartTime(), other.weeklyMaintenanceStartTime())
&& Objects.equals(dataRepositoryConfiguration(), other.dataRepositoryConfiguration())
&& Objects.equals(deploymentTypeAsString(), other.deploymentTypeAsString())
&& Objects.equals(perUnitStorageThroughput(), other.perUnitStorageThroughput())
&& Objects.equals(mountName(), other.mountName())
&& Objects.equals(dailyAutomaticBackupStartTime(), other.dailyAutomaticBackupStartTime())
&& Objects.equals(automaticBackupRetentionDays(), other.automaticBackupRetentionDays())
&& Objects.equals(copyTagsToBackups(), other.copyTagsToBackups())
&& Objects.equals(driveCacheTypeAsString(), other.driveCacheTypeAsString())
&& Objects.equals(dataCompressionTypeAsString(), other.dataCompressionTypeAsString())
&& Objects.equals(logConfiguration(), other.logConfiguration())
&& Objects.equals(rootSquashConfiguration(), other.rootSquashConfiguration())
&& Objects.equals(metadataConfiguration(), other.metadataConfiguration());
}
/**
* Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
* redacted from this string using a placeholder value.
*/
@Override
public final String toString() {
return ToString.builder("LustreFileSystemConfiguration").add("WeeklyMaintenanceStartTime", weeklyMaintenanceStartTime())
.add("DataRepositoryConfiguration", dataRepositoryConfiguration())
.add("DeploymentType", deploymentTypeAsString()).add("PerUnitStorageThroughput", perUnitStorageThroughput())
.add("MountName", mountName()).add("DailyAutomaticBackupStartTime", dailyAutomaticBackupStartTime())
.add("AutomaticBackupRetentionDays", automaticBackupRetentionDays())
.add("CopyTagsToBackups", copyTagsToBackups()).add("DriveCacheType", driveCacheTypeAsString())
.add("DataCompressionType", dataCompressionTypeAsString()).add("LogConfiguration", logConfiguration())
.add("RootSquashConfiguration", rootSquashConfiguration()).add("MetadataConfiguration", metadataConfiguration())
.build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "WeeklyMaintenanceStartTime":
return Optional.ofNullable(clazz.cast(weeklyMaintenanceStartTime()));
case "DataRepositoryConfiguration":
return Optional.ofNullable(clazz.cast(dataRepositoryConfiguration()));
case "DeploymentType":
return Optional.ofNullable(clazz.cast(deploymentTypeAsString()));
case "PerUnitStorageThroughput":
return Optional.ofNullable(clazz.cast(perUnitStorageThroughput()));
case "MountName":
return Optional.ofNullable(clazz.cast(mountName()));
case "DailyAutomaticBackupStartTime":
return Optional.ofNullable(clazz.cast(dailyAutomaticBackupStartTime()));
case "AutomaticBackupRetentionDays":
return Optional.ofNullable(clazz.cast(automaticBackupRetentionDays()));
case "CopyTagsToBackups":
return Optional.ofNullable(clazz.cast(copyTagsToBackups()));
case "DriveCacheType":
return Optional.ofNullable(clazz.cast(driveCacheTypeAsString()));
case "DataCompressionType":
return Optional.ofNullable(clazz.cast(dataCompressionTypeAsString()));
case "LogConfiguration":
return Optional.ofNullable(clazz.cast(logConfiguration()));
case "RootSquashConfiguration":
return Optional.ofNullable(clazz.cast(rootSquashConfiguration()));
case "MetadataConfiguration":
return Optional.ofNullable(clazz.cast(metadataConfiguration()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
private static Function