All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.elasticache.model.DecreaseNodeGroupsInGlobalReplicationGroupRequest Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon ElastiCache module holds the client classes that are used for communicating with Amazon ElastiCache Service

There is a newer version: 2.29.39
Show newest version
/*
 * 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.elasticache.model;

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 software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
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;

/**
 */
@Generated("software.amazon.awssdk:codegen")
public final class DecreaseNodeGroupsInGlobalReplicationGroupRequest extends ElastiCacheRequest
        implements
        ToCopyableBuilder {
    private static final SdkField GLOBAL_REPLICATION_GROUP_ID_FIELD = SdkField. builder(MarshallingType.STRING)
            .memberName("GlobalReplicationGroupId")
            .getter(getter(DecreaseNodeGroupsInGlobalReplicationGroupRequest::globalReplicationGroupId))
            .setter(setter(Builder::globalReplicationGroupId))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("GlobalReplicationGroupId").build())
            .build();

    private static final SdkField NODE_GROUP_COUNT_FIELD = SdkField. builder(MarshallingType.INTEGER)
            .memberName("NodeGroupCount").getter(getter(DecreaseNodeGroupsInGlobalReplicationGroupRequest::nodeGroupCount))
            .setter(setter(Builder::nodeGroupCount))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("NodeGroupCount").build()).build();

    private static final SdkField> GLOBAL_NODE_GROUPS_TO_REMOVE_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .memberName("GlobalNodeGroupsToRemove")
            .getter(getter(DecreaseNodeGroupsInGlobalReplicationGroupRequest::globalNodeGroupsToRemove))
            .setter(setter(Builder::globalNodeGroupsToRemove))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("GlobalNodeGroupsToRemove").build(),
                    ListTrait
                            .builder()
                            .memberLocationName("GlobalNodeGroupId")
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.STRING)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("GlobalNodeGroupId").build()).build()).build()).build();

    private static final SdkField> GLOBAL_NODE_GROUPS_TO_RETAIN_FIELD = SdkField
            .> builder(MarshallingType.LIST)
            .memberName("GlobalNodeGroupsToRetain")
            .getter(getter(DecreaseNodeGroupsInGlobalReplicationGroupRequest::globalNodeGroupsToRetain))
            .setter(setter(Builder::globalNodeGroupsToRetain))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("GlobalNodeGroupsToRetain").build(),
                    ListTrait
                            .builder()
                            .memberLocationName("GlobalNodeGroupId")
                            .memberFieldInfo(
                                    SdkField. builder(MarshallingType.STRING)
                                            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
                                                    .locationName("GlobalNodeGroupId").build()).build()).build()).build();

    private static final SdkField APPLY_IMMEDIATELY_FIELD = SdkField. builder(MarshallingType.BOOLEAN)
            .memberName("ApplyImmediately").getter(getter(DecreaseNodeGroupsInGlobalReplicationGroupRequest::applyImmediately))
            .setter(setter(Builder::applyImmediately))
            .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ApplyImmediately").build()).build();

    private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(
            GLOBAL_REPLICATION_GROUP_ID_FIELD, NODE_GROUP_COUNT_FIELD, GLOBAL_NODE_GROUPS_TO_REMOVE_FIELD,
            GLOBAL_NODE_GROUPS_TO_RETAIN_FIELD, APPLY_IMMEDIATELY_FIELD));

    private final String globalReplicationGroupId;

    private final Integer nodeGroupCount;

    private final List globalNodeGroupsToRemove;

    private final List globalNodeGroupsToRetain;

    private final Boolean applyImmediately;

    private DecreaseNodeGroupsInGlobalReplicationGroupRequest(BuilderImpl builder) {
        super(builder);
        this.globalReplicationGroupId = builder.globalReplicationGroupId;
        this.nodeGroupCount = builder.nodeGroupCount;
        this.globalNodeGroupsToRemove = builder.globalNodeGroupsToRemove;
        this.globalNodeGroupsToRetain = builder.globalNodeGroupsToRetain;
        this.applyImmediately = builder.applyImmediately;
    }

    /**
     * 

* The name of the Global datastore *

* * @return The name of the Global datastore */ public final String globalReplicationGroupId() { return globalReplicationGroupId; } /** *

* The number of node groups (shards) that results from the modification of the shard configuration *

* * @return The number of node groups (shards) that results from the modification of the shard configuration */ public final Integer nodeGroupCount() { return nodeGroupCount; } /** * For responses, this returns true if the service returned a value for the GlobalNodeGroupsToRemove 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 hasGlobalNodeGroupsToRemove() { return globalNodeGroupsToRemove != null && !(globalNodeGroupsToRemove instanceof SdkAutoConstructList); } /** *

* If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRemove is a list of NodeGroupIds to * remove from the cluster. ElastiCache (Redis OSS) will attempt to remove all node groups listed by * GlobalNodeGroupsToRemove from the cluster. *

*

* 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 #hasGlobalNodeGroupsToRemove} method. *

* * @return If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRemove is a list of NodeGroupIds * to remove from the cluster. ElastiCache (Redis OSS) will attempt to remove all node groups listed by * GlobalNodeGroupsToRemove from the cluster. */ public final List globalNodeGroupsToRemove() { return globalNodeGroupsToRemove; } /** * For responses, this returns true if the service returned a value for the GlobalNodeGroupsToRetain 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 hasGlobalNodeGroupsToRetain() { return globalNodeGroupsToRetain != null && !(globalNodeGroupsToRetain instanceof SdkAutoConstructList); } /** *

* If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRetain is a list of NodeGroupIds to * retain from the cluster. ElastiCache (Redis OSS) will attempt to retain all node groups listed by * GlobalNodeGroupsToRetain from the cluster. *

*

* 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 #hasGlobalNodeGroupsToRetain} method. *

* * @return If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRetain is a list of NodeGroupIds * to retain from the cluster. ElastiCache (Redis OSS) will attempt to retain all node groups listed by * GlobalNodeGroupsToRetain from the cluster. */ public final List globalNodeGroupsToRetain() { return globalNodeGroupsToRetain; } /** *

* Indicates that the shard reconfiguration process begins immediately. At present, the only permitted value for * this parameter is true. *

* * @return Indicates that the shard reconfiguration process begins immediately. At present, the only permitted value * for this parameter is true. */ public final Boolean applyImmediately() { return applyImmediately; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public final int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + super.hashCode(); hashCode = 31 * hashCode + Objects.hashCode(globalReplicationGroupId()); hashCode = 31 * hashCode + Objects.hashCode(nodeGroupCount()); hashCode = 31 * hashCode + Objects.hashCode(hasGlobalNodeGroupsToRemove() ? globalNodeGroupsToRemove() : null); hashCode = 31 * hashCode + Objects.hashCode(hasGlobalNodeGroupsToRetain() ? globalNodeGroupsToRetain() : null); hashCode = 31 * hashCode + Objects.hashCode(applyImmediately()); return hashCode; } @Override public final boolean equals(Object obj) { return super.equals(obj) && equalsBySdkFields(obj); } @Override public final boolean equalsBySdkFields(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof DecreaseNodeGroupsInGlobalReplicationGroupRequest)) { return false; } DecreaseNodeGroupsInGlobalReplicationGroupRequest other = (DecreaseNodeGroupsInGlobalReplicationGroupRequest) obj; return Objects.equals(globalReplicationGroupId(), other.globalReplicationGroupId()) && Objects.equals(nodeGroupCount(), other.nodeGroupCount()) && hasGlobalNodeGroupsToRemove() == other.hasGlobalNodeGroupsToRemove() && Objects.equals(globalNodeGroupsToRemove(), other.globalNodeGroupsToRemove()) && hasGlobalNodeGroupsToRetain() == other.hasGlobalNodeGroupsToRetain() && Objects.equals(globalNodeGroupsToRetain(), other.globalNodeGroupsToRetain()) && Objects.equals(applyImmediately(), other.applyImmediately()); } /** * 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("DecreaseNodeGroupsInGlobalReplicationGroupRequest") .add("GlobalReplicationGroupId", globalReplicationGroupId()).add("NodeGroupCount", nodeGroupCount()) .add("GlobalNodeGroupsToRemove", hasGlobalNodeGroupsToRemove() ? globalNodeGroupsToRemove() : null) .add("GlobalNodeGroupsToRetain", hasGlobalNodeGroupsToRetain() ? globalNodeGroupsToRetain() : null) .add("ApplyImmediately", applyImmediately()).build(); } public final Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "GlobalReplicationGroupId": return Optional.ofNullable(clazz.cast(globalReplicationGroupId())); case "NodeGroupCount": return Optional.ofNullable(clazz.cast(nodeGroupCount())); case "GlobalNodeGroupsToRemove": return Optional.ofNullable(clazz.cast(globalNodeGroupsToRemove())); case "GlobalNodeGroupsToRetain": return Optional.ofNullable(clazz.cast(globalNodeGroupsToRetain())); case "ApplyImmediately": return Optional.ofNullable(clazz.cast(applyImmediately())); default: return Optional.empty(); } } @Override public final List> sdkFields() { return SDK_FIELDS; } private static Function getter(Function g) { return obj -> g.apply((DecreaseNodeGroupsInGlobalReplicationGroupRequest) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends ElastiCacheRequest.Builder, SdkPojo, CopyableBuilder { /** *

* The name of the Global datastore *

* * @param globalReplicationGroupId * The name of the Global datastore * @return Returns a reference to this object so that method calls can be chained together. */ Builder globalReplicationGroupId(String globalReplicationGroupId); /** *

* The number of node groups (shards) that results from the modification of the shard configuration *

* * @param nodeGroupCount * The number of node groups (shards) that results from the modification of the shard configuration * @return Returns a reference to this object so that method calls can be chained together. */ Builder nodeGroupCount(Integer nodeGroupCount); /** *

* If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRemove is a list of NodeGroupIds to * remove from the cluster. ElastiCache (Redis OSS) will attempt to remove all node groups listed by * GlobalNodeGroupsToRemove from the cluster. *

* * @param globalNodeGroupsToRemove * If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRemove is a list of * NodeGroupIds to remove from the cluster. ElastiCache (Redis OSS) will attempt to remove all node * groups listed by GlobalNodeGroupsToRemove from the cluster. * @return Returns a reference to this object so that method calls can be chained together. */ Builder globalNodeGroupsToRemove(Collection globalNodeGroupsToRemove); /** *

* If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRemove is a list of NodeGroupIds to * remove from the cluster. ElastiCache (Redis OSS) will attempt to remove all node groups listed by * GlobalNodeGroupsToRemove from the cluster. *

* * @param globalNodeGroupsToRemove * If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRemove is a list of * NodeGroupIds to remove from the cluster. ElastiCache (Redis OSS) will attempt to remove all node * groups listed by GlobalNodeGroupsToRemove from the cluster. * @return Returns a reference to this object so that method calls can be chained together. */ Builder globalNodeGroupsToRemove(String... globalNodeGroupsToRemove); /** *

* If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRetain is a list of NodeGroupIds to * retain from the cluster. ElastiCache (Redis OSS) will attempt to retain all node groups listed by * GlobalNodeGroupsToRetain from the cluster. *

* * @param globalNodeGroupsToRetain * If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRetain is a list of * NodeGroupIds to retain from the cluster. ElastiCache (Redis OSS) will attempt to retain all node * groups listed by GlobalNodeGroupsToRetain from the cluster. * @return Returns a reference to this object so that method calls can be chained together. */ Builder globalNodeGroupsToRetain(Collection globalNodeGroupsToRetain); /** *

* If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRetain is a list of NodeGroupIds to * retain from the cluster. ElastiCache (Redis OSS) will attempt to retain all node groups listed by * GlobalNodeGroupsToRetain from the cluster. *

* * @param globalNodeGroupsToRetain * If the value of NodeGroupCount is less than the current number of node groups (shards), then either * NodeGroupsToRemove or NodeGroupsToRetain is required. GlobalNodeGroupsToRetain is a list of * NodeGroupIds to retain from the cluster. ElastiCache (Redis OSS) will attempt to retain all node * groups listed by GlobalNodeGroupsToRetain from the cluster. * @return Returns a reference to this object so that method calls can be chained together. */ Builder globalNodeGroupsToRetain(String... globalNodeGroupsToRetain); /** *

* Indicates that the shard reconfiguration process begins immediately. At present, the only permitted value for * this parameter is true. *

* * @param applyImmediately * Indicates that the shard reconfiguration process begins immediately. At present, the only permitted * value for this parameter is true. * @return Returns a reference to this object so that method calls can be chained together. */ Builder applyImmediately(Boolean applyImmediately); @Override Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration); @Override Builder overrideConfiguration(Consumer builderConsumer); } static final class BuilderImpl extends ElastiCacheRequest.BuilderImpl implements Builder { private String globalReplicationGroupId; private Integer nodeGroupCount; private List globalNodeGroupsToRemove = DefaultSdkAutoConstructList.getInstance(); private List globalNodeGroupsToRetain = DefaultSdkAutoConstructList.getInstance(); private Boolean applyImmediately; private BuilderImpl() { } private BuilderImpl(DecreaseNodeGroupsInGlobalReplicationGroupRequest model) { super(model); globalReplicationGroupId(model.globalReplicationGroupId); nodeGroupCount(model.nodeGroupCount); globalNodeGroupsToRemove(model.globalNodeGroupsToRemove); globalNodeGroupsToRetain(model.globalNodeGroupsToRetain); applyImmediately(model.applyImmediately); } public final String getGlobalReplicationGroupId() { return globalReplicationGroupId; } public final void setGlobalReplicationGroupId(String globalReplicationGroupId) { this.globalReplicationGroupId = globalReplicationGroupId; } @Override public final Builder globalReplicationGroupId(String globalReplicationGroupId) { this.globalReplicationGroupId = globalReplicationGroupId; return this; } public final Integer getNodeGroupCount() { return nodeGroupCount; } public final void setNodeGroupCount(Integer nodeGroupCount) { this.nodeGroupCount = nodeGroupCount; } @Override public final Builder nodeGroupCount(Integer nodeGroupCount) { this.nodeGroupCount = nodeGroupCount; return this; } public final Collection getGlobalNodeGroupsToRemove() { if (globalNodeGroupsToRemove instanceof SdkAutoConstructList) { return null; } return globalNodeGroupsToRemove; } public final void setGlobalNodeGroupsToRemove(Collection globalNodeGroupsToRemove) { this.globalNodeGroupsToRemove = GlobalNodeGroupIdListCopier.copy(globalNodeGroupsToRemove); } @Override public final Builder globalNodeGroupsToRemove(Collection globalNodeGroupsToRemove) { this.globalNodeGroupsToRemove = GlobalNodeGroupIdListCopier.copy(globalNodeGroupsToRemove); return this; } @Override @SafeVarargs public final Builder globalNodeGroupsToRemove(String... globalNodeGroupsToRemove) { globalNodeGroupsToRemove(Arrays.asList(globalNodeGroupsToRemove)); return this; } public final Collection getGlobalNodeGroupsToRetain() { if (globalNodeGroupsToRetain instanceof SdkAutoConstructList) { return null; } return globalNodeGroupsToRetain; } public final void setGlobalNodeGroupsToRetain(Collection globalNodeGroupsToRetain) { this.globalNodeGroupsToRetain = GlobalNodeGroupIdListCopier.copy(globalNodeGroupsToRetain); } @Override public final Builder globalNodeGroupsToRetain(Collection globalNodeGroupsToRetain) { this.globalNodeGroupsToRetain = GlobalNodeGroupIdListCopier.copy(globalNodeGroupsToRetain); return this; } @Override @SafeVarargs public final Builder globalNodeGroupsToRetain(String... globalNodeGroupsToRetain) { globalNodeGroupsToRetain(Arrays.asList(globalNodeGroupsToRetain)); return this; } public final Boolean getApplyImmediately() { return applyImmediately; } public final void setApplyImmediately(Boolean applyImmediately) { this.applyImmediately = applyImmediately; } @Override public final Builder applyImmediately(Boolean applyImmediately) { this.applyImmediately = applyImmediately; return this; } @Override public Builder overrideConfiguration(AwsRequestOverrideConfiguration overrideConfiguration) { super.overrideConfiguration(overrideConfiguration); return this; } @Override public Builder overrideConfiguration(Consumer builderConsumer) { super.overrideConfiguration(builderConsumer); return this; } @Override public DecreaseNodeGroupsInGlobalReplicationGroupRequest build() { return new DecreaseNodeGroupsInGlobalReplicationGroupRequest(this); } @Override public List> sdkFields() { return SDK_FIELDS; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy