
software.amazon.awssdk.services.securityhub.model.AwsDmsReplicationInstanceDetails Maven / Gradle / Ivy
/*
* 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.securityhub.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
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 java.util.stream.Collectors;
import java.util.stream.Stream;
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.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.core.util.SdkAutoConstructList;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
*
* Provides details about an Database Migration Service (DMS) replication instance. DMS uses a replication instance to
* connect to your source data store, read the source data, and format the data for consumption by the target data
* store.
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class AwsDmsReplicationInstanceDetails implements SdkPojo, Serializable,
ToCopyableBuilder {
private static final SdkField ALLOCATED_STORAGE_FIELD = SdkField. builder(MarshallingType.INTEGER)
.memberName("AllocatedStorage").getter(getter(AwsDmsReplicationInstanceDetails::allocatedStorage))
.setter(setter(Builder::allocatedStorage))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AllocatedStorage").build()).build();
private static final SdkField AUTO_MINOR_VERSION_UPGRADE_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
.memberName("AutoMinorVersionUpgrade").getter(getter(AwsDmsReplicationInstanceDetails::autoMinorVersionUpgrade))
.setter(setter(Builder::autoMinorVersionUpgrade))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AutoMinorVersionUpgrade").build())
.build();
private static final SdkField AVAILABILITY_ZONE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("AvailabilityZone").getter(getter(AwsDmsReplicationInstanceDetails::availabilityZone))
.setter(setter(Builder::availabilityZone))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AvailabilityZone").build()).build();
private static final SdkField ENGINE_VERSION_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("EngineVersion").getter(getter(AwsDmsReplicationInstanceDetails::engineVersion))
.setter(setter(Builder::engineVersion))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("EngineVersion").build()).build();
private static final SdkField KMS_KEY_ID_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("KmsKeyId").getter(getter(AwsDmsReplicationInstanceDetails::kmsKeyId)).setter(setter(Builder::kmsKeyId))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("KmsKeyId").build()).build();
private static final SdkField MULTI_AZ_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
.memberName("MultiAZ").getter(getter(AwsDmsReplicationInstanceDetails::multiAZ)).setter(setter(Builder::multiAZ))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("MultiAZ").build()).build();
private static final SdkField PREFERRED_MAINTENANCE_WINDOW_FIELD = SdkField
. builder(MarshallingType.STRING)
.memberName("PreferredMaintenanceWindow")
.getter(getter(AwsDmsReplicationInstanceDetails::preferredMaintenanceWindow))
.setter(setter(Builder::preferredMaintenanceWindow))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("PreferredMaintenanceWindow").build())
.build();
private static final SdkField PUBLICLY_ACCESSIBLE_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
.memberName("PubliclyAccessible").getter(getter(AwsDmsReplicationInstanceDetails::publiclyAccessible))
.setter(setter(Builder::publiclyAccessible))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("PubliclyAccessible").build())
.build();
private static final SdkField REPLICATION_INSTANCE_CLASS_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("ReplicationInstanceClass").getter(getter(AwsDmsReplicationInstanceDetails::replicationInstanceClass))
.setter(setter(Builder::replicationInstanceClass))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ReplicationInstanceClass").build())
.build();
private static final SdkField REPLICATION_INSTANCE_IDENTIFIER_FIELD = SdkField
. builder(MarshallingType.STRING)
.memberName("ReplicationInstanceIdentifier")
.getter(getter(AwsDmsReplicationInstanceDetails::replicationInstanceIdentifier))
.setter(setter(Builder::replicationInstanceIdentifier))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ReplicationInstanceIdentifier")
.build()).build();
private static final SdkField REPLICATION_SUBNET_GROUP_FIELD = SdkField
. builder(MarshallingType.SDK_POJO)
.memberName("ReplicationSubnetGroup").getter(getter(AwsDmsReplicationInstanceDetails::replicationSubnetGroup))
.setter(setter(Builder::replicationSubnetGroup))
.constructor(AwsDmsReplicationInstanceReplicationSubnetGroupDetails::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ReplicationSubnetGroup").build())
.build();
private static final SdkField> VPC_SECURITY_GROUPS_FIELD = SdkField
.> builder(MarshallingType.LIST)
.memberName("VpcSecurityGroups")
.getter(getter(AwsDmsReplicationInstanceDetails::vpcSecurityGroups))
.setter(setter(Builder::vpcSecurityGroups))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("VpcSecurityGroups").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.SDK_POJO)
.constructor(AwsDmsReplicationInstanceVpcSecurityGroupsDetails::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(ALLOCATED_STORAGE_FIELD,
AUTO_MINOR_VERSION_UPGRADE_FIELD, AVAILABILITY_ZONE_FIELD, ENGINE_VERSION_FIELD, KMS_KEY_ID_FIELD, MULTI_AZ_FIELD,
PREFERRED_MAINTENANCE_WINDOW_FIELD, PUBLICLY_ACCESSIBLE_FIELD, REPLICATION_INSTANCE_CLASS_FIELD,
REPLICATION_INSTANCE_IDENTIFIER_FIELD, REPLICATION_SUBNET_GROUP_FIELD, VPC_SECURITY_GROUPS_FIELD));
private static final long serialVersionUID = 1L;
private final Integer allocatedStorage;
private final Boolean autoMinorVersionUpgrade;
private final String availabilityZone;
private final String engineVersion;
private final String kmsKeyId;
private final Boolean multiAZ;
private final String preferredMaintenanceWindow;
private final Boolean publiclyAccessible;
private final String replicationInstanceClass;
private final String replicationInstanceIdentifier;
private final AwsDmsReplicationInstanceReplicationSubnetGroupDetails replicationSubnetGroup;
private final List vpcSecurityGroups;
private AwsDmsReplicationInstanceDetails(BuilderImpl builder) {
this.allocatedStorage = builder.allocatedStorage;
this.autoMinorVersionUpgrade = builder.autoMinorVersionUpgrade;
this.availabilityZone = builder.availabilityZone;
this.engineVersion = builder.engineVersion;
this.kmsKeyId = builder.kmsKeyId;
this.multiAZ = builder.multiAZ;
this.preferredMaintenanceWindow = builder.preferredMaintenanceWindow;
this.publiclyAccessible = builder.publiclyAccessible;
this.replicationInstanceClass = builder.replicationInstanceClass;
this.replicationInstanceIdentifier = builder.replicationInstanceIdentifier;
this.replicationSubnetGroup = builder.replicationSubnetGroup;
this.vpcSecurityGroups = builder.vpcSecurityGroups;
}
/**
*
* The amount of storage (in gigabytes) that is allocated for the replication instance.
*
*
* @return The amount of storage (in gigabytes) that is allocated for the replication instance.
*/
public final Integer allocatedStorage() {
return allocatedStorage;
}
/**
*
* Indicates whether minor engine upgrades are applied automatically to the replication instance during the
* maintenance window.
*
*
* @return Indicates whether minor engine upgrades are applied automatically to the replication instance during the
* maintenance window.
*/
public final Boolean autoMinorVersionUpgrade() {
return autoMinorVersionUpgrade;
}
/**
*
* The Availability Zone that the replication instance is created in. The default value is a random, system-chosen
* Availability Zone in the endpoint's Amazon Web Services Region, such as us-east-1d
.
*
*
* @return The Availability Zone that the replication instance is created in. The default value is a random,
* system-chosen Availability Zone in the endpoint's Amazon Web Services Region, such as
* us-east-1d
.
*/
public final String availabilityZone() {
return availabilityZone;
}
/**
*
* The engine version number of the replication instance. If an engine version number is not specified when a
* replication instance is created, the default is the latest engine version available.
*
*
* @return The engine version number of the replication instance. If an engine version number is not specified when
* a replication instance is created, the default is the latest engine version available.
*/
public final String engineVersion() {
return engineVersion;
}
/**
*
* An KMS key identifier that is used to encrypt the data on the replication instance. If you don't specify a value
* for the KmsKeyId
parameter, DMS uses your default encryption key. KMS creates the default encryption
* key for your Amazon Web Services account. Your Amazon Web Services account has a different default encryption key
* for each Amazon Web Services Region.
*
*
* @return An KMS key identifier that is used to encrypt the data on the replication instance. If you don't specify
* a value for the KmsKeyId
parameter, DMS uses your default encryption key. KMS creates the
* default encryption key for your Amazon Web Services account. Your Amazon Web Services account has a
* different default encryption key for each Amazon Web Services Region.
*/
public final String kmsKeyId() {
return kmsKeyId;
}
/**
*
* Specifies whether the replication instance is deployed across multiple Availability Zones (AZs). You can't set
* the AvailabilityZone
parameter if the MultiAZ
parameter is set to true
.
*
*
* @return Specifies whether the replication instance is deployed across multiple Availability Zones (AZs). You
* can't set the AvailabilityZone
parameter if the MultiAZ
parameter is set to
* true
.
*/
public final Boolean multiAZ() {
return multiAZ;
}
/**
*
* The maintenance window times for the replication instance. Upgrades to the replication instance are performed
* during this time.
*
*
* @return The maintenance window times for the replication instance. Upgrades to the replication instance are
* performed during this time.
*/
public final String preferredMaintenanceWindow() {
return preferredMaintenanceWindow;
}
/**
*
* Specifies the accessibility options for the replication instance. A value of true
represents an
* instance with a public IP address. A value of false
represents an instance with a private IP
* address. The default value is true
.
*
*
* @return Specifies the accessibility options for the replication instance. A value of true
represents
* an instance with a public IP address. A value of false
represents an instance with a private
* IP address. The default value is true
.
*/
public final Boolean publiclyAccessible() {
return publiclyAccessible;
}
/**
*
* The compute and memory capacity of the replication instance as defined for the specified replication instance
* class.
*
*
* @return The compute and memory capacity of the replication instance as defined for the specified replication
* instance class.
*/
public final String replicationInstanceClass() {
return replicationInstanceClass;
}
/**
*
* The replication instance identifier.
*
*
* @return The replication instance identifier.
*/
public final String replicationInstanceIdentifier() {
return replicationInstanceIdentifier;
}
/**
*
* The subnet group for the replication instance.
*
*
* @return The subnet group for the replication instance.
*/
public final AwsDmsReplicationInstanceReplicationSubnetGroupDetails replicationSubnetGroup() {
return replicationSubnetGroup;
}
/**
* For responses, this returns true if the service returned a value for the VpcSecurityGroups property. This DOES
* NOT check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property).
* This is useful because the SDK will never return a null collection or map, but you may need to differentiate
* between the service returning nothing (or null) and the service returning an empty collection or map. For
* requests, this returns true if a value for the property was specified in the request builder, and false if a
* value was not specified.
*/
public final boolean hasVpcSecurityGroups() {
return vpcSecurityGroups != null && !(vpcSecurityGroups instanceof SdkAutoConstructList);
}
/**
*
* The virtual private cloud (VPC) security group for the replication instance.
*
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasVpcSecurityGroups} method.
*
*
* @return The virtual private cloud (VPC) security group for the replication instance.
*/
public final List vpcSecurityGroups() {
return vpcSecurityGroups;
}
@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(allocatedStorage());
hashCode = 31 * hashCode + Objects.hashCode(autoMinorVersionUpgrade());
hashCode = 31 * hashCode + Objects.hashCode(availabilityZone());
hashCode = 31 * hashCode + Objects.hashCode(engineVersion());
hashCode = 31 * hashCode + Objects.hashCode(kmsKeyId());
hashCode = 31 * hashCode + Objects.hashCode(multiAZ());
hashCode = 31 * hashCode + Objects.hashCode(preferredMaintenanceWindow());
hashCode = 31 * hashCode + Objects.hashCode(publiclyAccessible());
hashCode = 31 * hashCode + Objects.hashCode(replicationInstanceClass());
hashCode = 31 * hashCode + Objects.hashCode(replicationInstanceIdentifier());
hashCode = 31 * hashCode + Objects.hashCode(replicationSubnetGroup());
hashCode = 31 * hashCode + Objects.hashCode(hasVpcSecurityGroups() ? vpcSecurityGroups() : null);
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 AwsDmsReplicationInstanceDetails)) {
return false;
}
AwsDmsReplicationInstanceDetails other = (AwsDmsReplicationInstanceDetails) obj;
return Objects.equals(allocatedStorage(), other.allocatedStorage())
&& Objects.equals(autoMinorVersionUpgrade(), other.autoMinorVersionUpgrade())
&& Objects.equals(availabilityZone(), other.availabilityZone())
&& Objects.equals(engineVersion(), other.engineVersion()) && Objects.equals(kmsKeyId(), other.kmsKeyId())
&& Objects.equals(multiAZ(), other.multiAZ())
&& Objects.equals(preferredMaintenanceWindow(), other.preferredMaintenanceWindow())
&& Objects.equals(publiclyAccessible(), other.publiclyAccessible())
&& Objects.equals(replicationInstanceClass(), other.replicationInstanceClass())
&& Objects.equals(replicationInstanceIdentifier(), other.replicationInstanceIdentifier())
&& Objects.equals(replicationSubnetGroup(), other.replicationSubnetGroup())
&& hasVpcSecurityGroups() == other.hasVpcSecurityGroups()
&& Objects.equals(vpcSecurityGroups(), other.vpcSecurityGroups());
}
/**
* 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("AwsDmsReplicationInstanceDetails").add("AllocatedStorage", allocatedStorage())
.add("AutoMinorVersionUpgrade", autoMinorVersionUpgrade()).add("AvailabilityZone", availabilityZone())
.add("EngineVersion", engineVersion()).add("KmsKeyId", kmsKeyId()).add("MultiAZ", multiAZ())
.add("PreferredMaintenanceWindow", preferredMaintenanceWindow()).add("PubliclyAccessible", publiclyAccessible())
.add("ReplicationInstanceClass", replicationInstanceClass())
.add("ReplicationInstanceIdentifier", replicationInstanceIdentifier())
.add("ReplicationSubnetGroup", replicationSubnetGroup())
.add("VpcSecurityGroups", hasVpcSecurityGroups() ? vpcSecurityGroups() : null).build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "AllocatedStorage":
return Optional.ofNullable(clazz.cast(allocatedStorage()));
case "AutoMinorVersionUpgrade":
return Optional.ofNullable(clazz.cast(autoMinorVersionUpgrade()));
case "AvailabilityZone":
return Optional.ofNullable(clazz.cast(availabilityZone()));
case "EngineVersion":
return Optional.ofNullable(clazz.cast(engineVersion()));
case "KmsKeyId":
return Optional.ofNullable(clazz.cast(kmsKeyId()));
case "MultiAZ":
return Optional.ofNullable(clazz.cast(multiAZ()));
case "PreferredMaintenanceWindow":
return Optional.ofNullable(clazz.cast(preferredMaintenanceWindow()));
case "PubliclyAccessible":
return Optional.ofNullable(clazz.cast(publiclyAccessible()));
case "ReplicationInstanceClass":
return Optional.ofNullable(clazz.cast(replicationInstanceClass()));
case "ReplicationInstanceIdentifier":
return Optional.ofNullable(clazz.cast(replicationInstanceIdentifier()));
case "ReplicationSubnetGroup":
return Optional.ofNullable(clazz.cast(replicationSubnetGroup()));
case "VpcSecurityGroups":
return Optional.ofNullable(clazz.cast(vpcSecurityGroups()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
private static Function