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

software.amazon.awssdk.services.elasticache.model.CacheNode 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

The 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.io.Serializable;
import java.time.Instant;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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;

/**
 * 

* Represents an individual cache node within a cluster. Each cache node runs its own instance of the cluster's * protocol-compliant caching software - either Memcached, Valkey or Redis OSS. *

*

* The following node types are supported by ElastiCache. Generally speaking, the current generation types provide more * memory and computational power at lower cost when compared to their equivalent previous generation counterparts. *

*
    *
  • *

    * General purpose: *

    *
      *
    • *

      * Current generation: *

      *

      * M7g node types: cache.m7g.large, cache.m7g.xlarge, cache.m7g.2xlarge, * cache.m7g.4xlarge, cache.m7g.8xlarge, cache.m7g.12xlarge, * cache.m7g.16xlarge *

      * *

      * For region availability, see Supported Node Types *

      *
      *

      * M6g node types (available only for Redis OSS engine version 5.0.6 onward and for Memcached engine version * 1.5.16 onward): cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge, * cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, * cache.m6g.16xlarge *

      *

      * M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, * cache.m5.4xlarge, cache.m5.12xlarge, cache.m5.24xlarge *

      *

      * M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, * cache.m4.4xlarge, cache.m4.10xlarge *

      *

      * T4g node types (available only for Redis OSS engine version 5.0.6 onward and Memcached engine version 1.5.16 * onward): cache.t4g.micro, cache.t4g.small, cache.t4g.medium *

      *

      * T3 node types: cache.t3.micro, cache.t3.small, cache.t3.medium *

      *

      * T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium *

      *
    • *
    • *

      * Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not * supported for these types.) *

      *

      * T1 node types: cache.t1.micro *

      *

      * M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large, * cache.m1.xlarge *

      *

      * M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, * cache.m3.2xlarge *

      *
    • *
    *
  • *
  • *

    * Compute optimized: *

    *
      *
    • *

      * Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not * supported for these types.) *

      *

      * C1 node types: cache.c1.xlarge *

      *
    • *
    *
  • *
  • *

    * Memory optimized: *

    *
      *
    • *

      * Current generation: *

      *

      * R7g node types: cache.r7g.large, cache.r7g.xlarge, cache.r7g.2xlarge, * cache.r7g.4xlarge, cache.r7g.8xlarge, cache.r7g.12xlarge, * cache.r7g.16xlarge *

      * *

      * For region availability, see Supported Node Types *

      *
      *

      * R6g node types (available only for Redis OSS engine version 5.0.6 onward and for Memcached engine version * 1.5.16 onward): cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge, * cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, * cache.r6g.16xlarge *

      *

      * R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, * cache.r5.4xlarge, cache.r5.12xlarge, cache.r5.24xlarge *

      *

      * R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge, * cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge *

      *
    • *
    • *

      * Previous generation: (not recommended. Existing clusters are still supported but creation of new clusters is not * supported for these types.) *

      *

      * M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge *

      *

      * R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, * cache.r3.4xlarge, cache.r3.8xlarge *

      *
    • *
    *
  • *
*

* Additional node type info *

*
    *
  • *

    * All current generation instance types are created in Amazon VPC by default. *

    *
  • *
  • *

    * Valkey or Redis OSS append-only files (AOF) are not supported for T1 or T2 instances. *

    *
  • *
  • *

    * Valkey or Redis OSS Multi-AZ with automatic failover is not supported on T1 instances. *

    *
  • *
  • *

    * The configuration variables appendonly and appendfsync are not supported on Valkey, or on * Redis OSS version 2.8.22 and later. *

    *
  • *
*/ @Generated("software.amazon.awssdk:codegen") public final class CacheNode implements SdkPojo, Serializable, ToCopyableBuilder { private static final SdkField CACHE_NODE_ID_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("CacheNodeId").getter(getter(CacheNode::cacheNodeId)).setter(setter(Builder::cacheNodeId)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("CacheNodeId").build()).build(); private static final SdkField CACHE_NODE_STATUS_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("CacheNodeStatus").getter(getter(CacheNode::cacheNodeStatus)).setter(setter(Builder::cacheNodeStatus)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("CacheNodeStatus").build()).build(); private static final SdkField CACHE_NODE_CREATE_TIME_FIELD = SdkField. builder(MarshallingType.INSTANT) .memberName("CacheNodeCreateTime").getter(getter(CacheNode::cacheNodeCreateTime)) .setter(setter(Builder::cacheNodeCreateTime)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("CacheNodeCreateTime").build()) .build(); private static final SdkField ENDPOINT_FIELD = SdkField. builder(MarshallingType.SDK_POJO) .memberName("Endpoint").getter(getter(CacheNode::endpoint)).setter(setter(Builder::endpoint)) .constructor(Endpoint::builder) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Endpoint").build()).build(); private static final SdkField PARAMETER_GROUP_STATUS_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("ParameterGroupStatus").getter(getter(CacheNode::parameterGroupStatus)) .setter(setter(Builder::parameterGroupStatus)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("ParameterGroupStatus").build()) .build(); private static final SdkField SOURCE_CACHE_NODE_ID_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("SourceCacheNodeId").getter(getter(CacheNode::sourceCacheNodeId)) .setter(setter(Builder::sourceCacheNodeId)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("SourceCacheNodeId").build()).build(); private static final SdkField CUSTOMER_AVAILABILITY_ZONE_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("CustomerAvailabilityZone").getter(getter(CacheNode::customerAvailabilityZone)) .setter(setter(Builder::customerAvailabilityZone)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("CustomerAvailabilityZone").build()) .build(); private static final SdkField CUSTOMER_OUTPOST_ARN_FIELD = SdkField. builder(MarshallingType.STRING) .memberName("CustomerOutpostArn").getter(getter(CacheNode::customerOutpostArn)) .setter(setter(Builder::customerOutpostArn)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("CustomerOutpostArn").build()) .build(); private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(CACHE_NODE_ID_FIELD, CACHE_NODE_STATUS_FIELD, CACHE_NODE_CREATE_TIME_FIELD, ENDPOINT_FIELD, PARAMETER_GROUP_STATUS_FIELD, SOURCE_CACHE_NODE_ID_FIELD, CUSTOMER_AVAILABILITY_ZONE_FIELD, CUSTOMER_OUTPOST_ARN_FIELD)); private static final Map> SDK_NAME_TO_FIELD = memberNameToFieldInitializer(); private static final long serialVersionUID = 1L; private final String cacheNodeId; private final String cacheNodeStatus; private final Instant cacheNodeCreateTime; private final Endpoint endpoint; private final String parameterGroupStatus; private final String sourceCacheNodeId; private final String customerAvailabilityZone; private final String customerOutpostArn; private CacheNode(BuilderImpl builder) { this.cacheNodeId = builder.cacheNodeId; this.cacheNodeStatus = builder.cacheNodeStatus; this.cacheNodeCreateTime = builder.cacheNodeCreateTime; this.endpoint = builder.endpoint; this.parameterGroupStatus = builder.parameterGroupStatus; this.sourceCacheNodeId = builder.sourceCacheNodeId; this.customerAvailabilityZone = builder.customerAvailabilityZone; this.customerOutpostArn = builder.customerOutpostArn; } /** *

* The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of cluster ID * and node ID uniquely identifies every cache node used in a customer's Amazon account. *

* * @return The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of * cluster ID and node ID uniquely identifies every cache node used in a customer's Amazon account. */ public final String cacheNodeId() { return cacheNodeId; } /** *

* The current state of this cache node, one of the following values: available, creating, * rebooting, or deleting. *

* * @return The current state of this cache node, one of the following values: available, * creating, rebooting, or deleting. */ public final String cacheNodeStatus() { return cacheNodeStatus; } /** *

* The date and time when the cache node was created. *

* * @return The date and time when the cache node was created. */ public final Instant cacheNodeCreateTime() { return cacheNodeCreateTime; } /** *

* The hostname for connecting to this cache node. *

* * @return The hostname for connecting to this cache node. */ public final Endpoint endpoint() { return endpoint; } /** *

* The status of the parameter group applied to this cache node. *

* * @return The status of the parameter group applied to this cache node. */ public final String parameterGroupStatus() { return parameterGroupStatus; } /** *

* The ID of the primary node to which this read replica node is synchronized. If this field is empty, this node is * not associated with a primary cluster. *

* * @return The ID of the primary node to which this read replica node is synchronized. If this field is empty, this * node is not associated with a primary cluster. */ public final String sourceCacheNodeId() { return sourceCacheNodeId; } /** *

* The Availability Zone where this node was created and now resides. *

* * @return The Availability Zone where this node was created and now resides. */ public final String customerAvailabilityZone() { return customerAvailabilityZone; } /** *

* The customer outpost ARN of the cache node. *

* * @return The customer outpost ARN of the cache node. */ public final String customerOutpostArn() { return customerOutpostArn; } @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 + Objects.hashCode(cacheNodeId()); hashCode = 31 * hashCode + Objects.hashCode(cacheNodeStatus()); hashCode = 31 * hashCode + Objects.hashCode(cacheNodeCreateTime()); hashCode = 31 * hashCode + Objects.hashCode(endpoint()); hashCode = 31 * hashCode + Objects.hashCode(parameterGroupStatus()); hashCode = 31 * hashCode + Objects.hashCode(sourceCacheNodeId()); hashCode = 31 * hashCode + Objects.hashCode(customerAvailabilityZone()); hashCode = 31 * hashCode + Objects.hashCode(customerOutpostArn()); 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 CacheNode)) { return false; } CacheNode other = (CacheNode) obj; return Objects.equals(cacheNodeId(), other.cacheNodeId()) && Objects.equals(cacheNodeStatus(), other.cacheNodeStatus()) && Objects.equals(cacheNodeCreateTime(), other.cacheNodeCreateTime()) && Objects.equals(endpoint(), other.endpoint()) && Objects.equals(parameterGroupStatus(), other.parameterGroupStatus()) && Objects.equals(sourceCacheNodeId(), other.sourceCacheNodeId()) && Objects.equals(customerAvailabilityZone(), other.customerAvailabilityZone()) && Objects.equals(customerOutpostArn(), other.customerOutpostArn()); } /** * 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("CacheNode").add("CacheNodeId", cacheNodeId()).add("CacheNodeStatus", cacheNodeStatus()) .add("CacheNodeCreateTime", cacheNodeCreateTime()).add("Endpoint", endpoint()) .add("ParameterGroupStatus", parameterGroupStatus()).add("SourceCacheNodeId", sourceCacheNodeId()) .add("CustomerAvailabilityZone", customerAvailabilityZone()).add("CustomerOutpostArn", customerOutpostArn()) .build(); } public final Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "CacheNodeId": return Optional.ofNullable(clazz.cast(cacheNodeId())); case "CacheNodeStatus": return Optional.ofNullable(clazz.cast(cacheNodeStatus())); case "CacheNodeCreateTime": return Optional.ofNullable(clazz.cast(cacheNodeCreateTime())); case "Endpoint": return Optional.ofNullable(clazz.cast(endpoint())); case "ParameterGroupStatus": return Optional.ofNullable(clazz.cast(parameterGroupStatus())); case "SourceCacheNodeId": return Optional.ofNullable(clazz.cast(sourceCacheNodeId())); case "CustomerAvailabilityZone": return Optional.ofNullable(clazz.cast(customerAvailabilityZone())); case "CustomerOutpostArn": return Optional.ofNullable(clazz.cast(customerOutpostArn())); default: return Optional.empty(); } } @Override public final List> sdkFields() { return SDK_FIELDS; } @Override public final Map> sdkFieldNameToField() { return SDK_NAME_TO_FIELD; } private static Map> memberNameToFieldInitializer() { Map> map = new HashMap<>(); map.put("CacheNodeId", CACHE_NODE_ID_FIELD); map.put("CacheNodeStatus", CACHE_NODE_STATUS_FIELD); map.put("CacheNodeCreateTime", CACHE_NODE_CREATE_TIME_FIELD); map.put("Endpoint", ENDPOINT_FIELD); map.put("ParameterGroupStatus", PARAMETER_GROUP_STATUS_FIELD); map.put("SourceCacheNodeId", SOURCE_CACHE_NODE_ID_FIELD); map.put("CustomerAvailabilityZone", CUSTOMER_AVAILABILITY_ZONE_FIELD); map.put("CustomerOutpostArn", CUSTOMER_OUTPOST_ARN_FIELD); return Collections.unmodifiableMap(map); } private static Function getter(Function g) { return obj -> g.apply((CacheNode) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends SdkPojo, CopyableBuilder { /** *

* The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of cluster * ID and node ID uniquely identifies every cache node used in a customer's Amazon account. *

* * @param cacheNodeId * The cache node identifier. A node ID is a numeric identifier (0001, 0002, etc.). The combination of * cluster ID and node ID uniquely identifies every cache node used in a customer's Amazon account. * @return Returns a reference to this object so that method calls can be chained together. */ Builder cacheNodeId(String cacheNodeId); /** *

* The current state of this cache node, one of the following values: available, * creating, rebooting, or deleting. *

* * @param cacheNodeStatus * The current state of this cache node, one of the following values: available, * creating, rebooting, or deleting. * @return Returns a reference to this object so that method calls can be chained together. */ Builder cacheNodeStatus(String cacheNodeStatus); /** *

* The date and time when the cache node was created. *

* * @param cacheNodeCreateTime * The date and time when the cache node was created. * @return Returns a reference to this object so that method calls can be chained together. */ Builder cacheNodeCreateTime(Instant cacheNodeCreateTime); /** *

* The hostname for connecting to this cache node. *

* * @param endpoint * The hostname for connecting to this cache node. * @return Returns a reference to this object so that method calls can be chained together. */ Builder endpoint(Endpoint endpoint); /** *

* The hostname for connecting to this cache node. *

* This is a convenience method that creates an instance of the {@link Endpoint.Builder} avoiding the need to * create one manually via {@link Endpoint#builder()}. * *

* When the {@link Consumer} completes, {@link Endpoint.Builder#build()} is called immediately and its result is * passed to {@link #endpoint(Endpoint)}. * * @param endpoint * a consumer that will call methods on {@link Endpoint.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #endpoint(Endpoint) */ default Builder endpoint(Consumer endpoint) { return endpoint(Endpoint.builder().applyMutation(endpoint).build()); } /** *

* The status of the parameter group applied to this cache node. *

* * @param parameterGroupStatus * The status of the parameter group applied to this cache node. * @return Returns a reference to this object so that method calls can be chained together. */ Builder parameterGroupStatus(String parameterGroupStatus); /** *

* The ID of the primary node to which this read replica node is synchronized. If this field is empty, this node * is not associated with a primary cluster. *

* * @param sourceCacheNodeId * The ID of the primary node to which this read replica node is synchronized. If this field is empty, * this node is not associated with a primary cluster. * @return Returns a reference to this object so that method calls can be chained together. */ Builder sourceCacheNodeId(String sourceCacheNodeId); /** *

* The Availability Zone where this node was created and now resides. *

* * @param customerAvailabilityZone * The Availability Zone where this node was created and now resides. * @return Returns a reference to this object so that method calls can be chained together. */ Builder customerAvailabilityZone(String customerAvailabilityZone); /** *

* The customer outpost ARN of the cache node. *

* * @param customerOutpostArn * The customer outpost ARN of the cache node. * @return Returns a reference to this object so that method calls can be chained together. */ Builder customerOutpostArn(String customerOutpostArn); } static final class BuilderImpl implements Builder { private String cacheNodeId; private String cacheNodeStatus; private Instant cacheNodeCreateTime; private Endpoint endpoint; private String parameterGroupStatus; private String sourceCacheNodeId; private String customerAvailabilityZone; private String customerOutpostArn; private BuilderImpl() { } private BuilderImpl(CacheNode model) { cacheNodeId(model.cacheNodeId); cacheNodeStatus(model.cacheNodeStatus); cacheNodeCreateTime(model.cacheNodeCreateTime); endpoint(model.endpoint); parameterGroupStatus(model.parameterGroupStatus); sourceCacheNodeId(model.sourceCacheNodeId); customerAvailabilityZone(model.customerAvailabilityZone); customerOutpostArn(model.customerOutpostArn); } public final String getCacheNodeId() { return cacheNodeId; } public final void setCacheNodeId(String cacheNodeId) { this.cacheNodeId = cacheNodeId; } @Override public final Builder cacheNodeId(String cacheNodeId) { this.cacheNodeId = cacheNodeId; return this; } public final String getCacheNodeStatus() { return cacheNodeStatus; } public final void setCacheNodeStatus(String cacheNodeStatus) { this.cacheNodeStatus = cacheNodeStatus; } @Override public final Builder cacheNodeStatus(String cacheNodeStatus) { this.cacheNodeStatus = cacheNodeStatus; return this; } public final Instant getCacheNodeCreateTime() { return cacheNodeCreateTime; } public final void setCacheNodeCreateTime(Instant cacheNodeCreateTime) { this.cacheNodeCreateTime = cacheNodeCreateTime; } @Override public final Builder cacheNodeCreateTime(Instant cacheNodeCreateTime) { this.cacheNodeCreateTime = cacheNodeCreateTime; return this; } public final Endpoint.Builder getEndpoint() { return endpoint != null ? endpoint.toBuilder() : null; } public final void setEndpoint(Endpoint.BuilderImpl endpoint) { this.endpoint = endpoint != null ? endpoint.build() : null; } @Override public final Builder endpoint(Endpoint endpoint) { this.endpoint = endpoint; return this; } public final String getParameterGroupStatus() { return parameterGroupStatus; } public final void setParameterGroupStatus(String parameterGroupStatus) { this.parameterGroupStatus = parameterGroupStatus; } @Override public final Builder parameterGroupStatus(String parameterGroupStatus) { this.parameterGroupStatus = parameterGroupStatus; return this; } public final String getSourceCacheNodeId() { return sourceCacheNodeId; } public final void setSourceCacheNodeId(String sourceCacheNodeId) { this.sourceCacheNodeId = sourceCacheNodeId; } @Override public final Builder sourceCacheNodeId(String sourceCacheNodeId) { this.sourceCacheNodeId = sourceCacheNodeId; return this; } public final String getCustomerAvailabilityZone() { return customerAvailabilityZone; } public final void setCustomerAvailabilityZone(String customerAvailabilityZone) { this.customerAvailabilityZone = customerAvailabilityZone; } @Override public final Builder customerAvailabilityZone(String customerAvailabilityZone) { this.customerAvailabilityZone = customerAvailabilityZone; return this; } public final String getCustomerOutpostArn() { return customerOutpostArn; } public final void setCustomerOutpostArn(String customerOutpostArn) { this.customerOutpostArn = customerOutpostArn; } @Override public final Builder customerOutpostArn(String customerOutpostArn) { this.customerOutpostArn = customerOutpostArn; return this; } @Override public CacheNode build() { return new CacheNode(this); } @Override public List> sdkFields() { return SDK_FIELDS; } @Override public Map> sdkFieldNameToField() { return SDK_NAME_TO_FIELD; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy