/*
* 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.
*/
/*
* Do not modify this file. This file is generated from the elasticache-2015-02-02.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.ElastiCache.Model
{
///
/// Contains all of the attributes of a specific cluster.
///
public partial class CacheCluster
{
private string _arn;
private bool? _atRestEncryptionEnabled;
private bool? _authTokenEnabled;
private DateTime? _authTokenLastModifiedDate;
private bool? _autoMinorVersionUpgrade;
private DateTime? _cacheClusterCreateTime;
private string _cacheClusterId;
private string _cacheClusterStatus;
private List _cacheNodes = new List();
private string _cacheNodeType;
private CacheParameterGroupStatus _cacheParameterGroup;
private List _cacheSecurityGroups = new List();
private string _cacheSubnetGroupName;
private string _clientDownloadLandingPage;
private Endpoint _configurationEndpoint;
private string _engine;
private string _engineVersion;
private IpDiscovery _ipDiscovery;
private List _logDeliveryConfigurations = new List();
private NetworkType _networkType;
private NotificationConfiguration _notificationConfiguration;
private int? _numCacheNodes;
private PendingModifiedValues _pendingModifiedValues;
private string _preferredAvailabilityZone;
private string _preferredMaintenanceWindow;
private string _preferredOutpostArn;
private string _replicationGroupId;
private bool? _replicationGroupLogDeliveryEnabled;
private List _securityGroups = new List();
private int? _snapshotRetentionLimit;
private string _snapshotWindow;
private bool? _transitEncryptionEnabled;
private TransitEncryptionMode _transitEncryptionMode;
///
/// Gets and sets the property ARN.
///
/// The ARN (Amazon Resource Name) of the cache cluster.
///
///
public string ARN
{
get { return this._arn; }
set { this._arn = value; }
}
// Check to see if ARN property is set
internal bool IsSetARN()
{
return this._arn != null;
}
///
/// Gets and sets the property AtRestEncryptionEnabled.
///
/// A flag that enables encryption at-rest when set to true
.
///
///
///
/// You cannot modify the value of AtRestEncryptionEnabled
after the cluster
/// is created. To enable at-rest encryption on a cluster you must set AtRestEncryptionEnabled
/// to true
when you create a cluster.
///
///
///
/// Required: Only available when creating a replication group in an Amazon VPC
/// using redis version 3.2.6
, 4.x
or later.
///
///
///
/// Default: false
///
///
public bool AtRestEncryptionEnabled
{
get { return this._atRestEncryptionEnabled.GetValueOrDefault(); }
set { this._atRestEncryptionEnabled = value; }
}
// Check to see if AtRestEncryptionEnabled property is set
internal bool IsSetAtRestEncryptionEnabled()
{
return this._atRestEncryptionEnabled.HasValue;
}
///
/// Gets and sets the property AuthTokenEnabled.
///
/// A flag that enables using an AuthToken
(password) when issuing Redis
/// commands.
///
///
///
/// Default: false
///
///
public bool AuthTokenEnabled
{
get { return this._authTokenEnabled.GetValueOrDefault(); }
set { this._authTokenEnabled = value; }
}
// Check to see if AuthTokenEnabled property is set
internal bool IsSetAuthTokenEnabled()
{
return this._authTokenEnabled.HasValue;
}
///
/// Gets and sets the property AuthTokenLastModifiedDate.
///
/// The date the auth token was last modified
///
///
public DateTime AuthTokenLastModifiedDate
{
get { return this._authTokenLastModifiedDate.GetValueOrDefault(); }
set { this._authTokenLastModifiedDate = value; }
}
// Check to see if AuthTokenLastModifiedDate property is set
internal bool IsSetAuthTokenLastModifiedDate()
{
return this._authTokenLastModifiedDate.HasValue;
}
///
/// Gets and sets the property AutoMinorVersionUpgrade.
///
/// If you are running Redis engine version 6.0 or later, set this parameter to yes if
/// you want to opt-in to the next auto minor version upgrade campaign. This parameter
/// is disabled for previous versions.
///
///
public bool AutoMinorVersionUpgrade
{
get { return this._autoMinorVersionUpgrade.GetValueOrDefault(); }
set { this._autoMinorVersionUpgrade = value; }
}
// Check to see if AutoMinorVersionUpgrade property is set
internal bool IsSetAutoMinorVersionUpgrade()
{
return this._autoMinorVersionUpgrade.HasValue;
}
///
/// Gets and sets the property CacheClusterCreateTime.
///
/// The date and time when the cluster was created.
///
///
public DateTime CacheClusterCreateTime
{
get { return this._cacheClusterCreateTime.GetValueOrDefault(); }
set { this._cacheClusterCreateTime = value; }
}
// Check to see if CacheClusterCreateTime property is set
internal bool IsSetCacheClusterCreateTime()
{
return this._cacheClusterCreateTime.HasValue;
}
///
/// Gets and sets the property CacheClusterId.
///
/// The user-supplied identifier of the cluster. This identifier is a unique key that
/// identifies a cluster.
///
///
public string CacheClusterId
{
get { return this._cacheClusterId; }
set { this._cacheClusterId = value; }
}
// Check to see if CacheClusterId property is set
internal bool IsSetCacheClusterId()
{
return this._cacheClusterId != null;
}
///
/// Gets and sets the property CacheClusterStatus.
///
/// The current state of this cluster, one of the following values: available
,
/// creating
, deleted
, deleting
, incompatible-network
,
/// modifying
, rebooting cluster nodes
, restore-failed
,
/// or snapshotting
.
///
///
public string CacheClusterStatus
{
get { return this._cacheClusterStatus; }
set { this._cacheClusterStatus = value; }
}
// Check to see if CacheClusterStatus property is set
internal bool IsSetCacheClusterStatus()
{
return this._cacheClusterStatus != null;
}
///
/// Gets and sets the property CacheNodes.
///
/// A list of cache nodes that are members of the cluster.
///
///
public List CacheNodes
{
get { return this._cacheNodes; }
set { this._cacheNodes = value; }
}
// Check to see if CacheNodes property is set
internal bool IsSetCacheNodes()
{
return this._cacheNodes != null && this._cacheNodes.Count > 0;
}
///
/// Gets and sets the property CacheNodeType.
///
/// The name of the compute and memory capacity node type for the cluster.
///
///
///
/// 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:
///
///
///
/// M6g node types (available only for Redis 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
///
///
///
/// For region availability, see Supported
/// Node Types
///
///
///
/// 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 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:
///
///
///
/// R6g node types (available only for Redis 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
///
///
///
/// For region availability, see Supported
/// Node Types
///
///
///
/// 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.
///
///
-
///
/// Redis append-only files (AOF) are not supported for T1 or T2 instances.
///
///
-
///
/// Redis Multi-AZ with automatic failover is not supported on T1 instances.
///
///
-
///
/// Redis configuration variables
appendonly
and appendfsync
/// are not supported on Redis version 2.8.22 and later.
///
///
///
public string CacheNodeType
{
get { return this._cacheNodeType; }
set { this._cacheNodeType = value; }
}
// Check to see if CacheNodeType property is set
internal bool IsSetCacheNodeType()
{
return this._cacheNodeType != null;
}
///
/// Gets and sets the property CacheParameterGroup.
///
/// Status of the cache parameter group.
///
///
public CacheParameterGroupStatus CacheParameterGroup
{
get { return this._cacheParameterGroup; }
set { this._cacheParameterGroup = value; }
}
// Check to see if CacheParameterGroup property is set
internal bool IsSetCacheParameterGroup()
{
return this._cacheParameterGroup != null;
}
///
/// Gets and sets the property CacheSecurityGroups.
///
/// A list of cache security group elements, composed of name and status sub-elements.
///
///
public List CacheSecurityGroups
{
get { return this._cacheSecurityGroups; }
set { this._cacheSecurityGroups = value; }
}
// Check to see if CacheSecurityGroups property is set
internal bool IsSetCacheSecurityGroups()
{
return this._cacheSecurityGroups != null && this._cacheSecurityGroups.Count > 0;
}
///
/// Gets and sets the property CacheSubnetGroupName.
///
/// The name of the cache subnet group associated with the cluster.
///
///
public string CacheSubnetGroupName
{
get { return this._cacheSubnetGroupName; }
set { this._cacheSubnetGroupName = value; }
}
// Check to see if CacheSubnetGroupName property is set
internal bool IsSetCacheSubnetGroupName()
{
return this._cacheSubnetGroupName != null;
}
///
/// Gets and sets the property ClientDownloadLandingPage.
///
/// The URL of the web page where you can download the latest ElastiCache client library.
///
///
public string ClientDownloadLandingPage
{
get { return this._clientDownloadLandingPage; }
set { this._clientDownloadLandingPage = value; }
}
// Check to see if ClientDownloadLandingPage property is set
internal bool IsSetClientDownloadLandingPage()
{
return this._clientDownloadLandingPage != null;
}
///
/// Gets and sets the property ConfigurationEndpoint.
///
/// Represents a Memcached cluster endpoint which can be used by an application to connect
/// to any node in the cluster. The configuration endpoint will always have .cfg
/// in it.
///
///
///
/// Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211
///
///
public Endpoint ConfigurationEndpoint
{
get { return this._configurationEndpoint; }
set { this._configurationEndpoint = value; }
}
// Check to see if ConfigurationEndpoint property is set
internal bool IsSetConfigurationEndpoint()
{
return this._configurationEndpoint != null;
}
///
/// Gets and sets the property Engine.
///
/// The name of the cache engine (memcached
or redis
) to be
/// used for this cluster.
///
///
public string Engine
{
get { return this._engine; }
set { this._engine = value; }
}
// Check to see if Engine property is set
internal bool IsSetEngine()
{
return this._engine != null;
}
///
/// Gets and sets the property EngineVersion.
///
/// The version of the cache engine that is used in this cluster.
///
///
public string EngineVersion
{
get { return this._engineVersion; }
set { this._engineVersion = value; }
}
// Check to see if EngineVersion property is set
internal bool IsSetEngineVersion()
{
return this._engineVersion != null;
}
///
/// Gets and sets the property IpDiscovery.
///
/// The network type associated with the cluster, either ipv4
| ipv6
.
/// IPv6 is supported for workloads using Redis engine version 6.2 onward or Memcached
/// engine version 1.6.6 on all instances built on the Nitro
/// system.
///
///
public IpDiscovery IpDiscovery
{
get { return this._ipDiscovery; }
set { this._ipDiscovery = value; }
}
// Check to see if IpDiscovery property is set
internal bool IsSetIpDiscovery()
{
return this._ipDiscovery != null;
}
///
/// Gets and sets the property LogDeliveryConfigurations.
///
/// Returns the destination, format and type of the logs.
///
///
public List LogDeliveryConfigurations
{
get { return this._logDeliveryConfigurations; }
set { this._logDeliveryConfigurations = value; }
}
// Check to see if LogDeliveryConfigurations property is set
internal bool IsSetLogDeliveryConfigurations()
{
return this._logDeliveryConfigurations != null && this._logDeliveryConfigurations.Count > 0;
}
///
/// Gets and sets the property NetworkType.
///
/// Must be either ipv4
| ipv6
| dual_stack
. IPv6
/// is supported for workloads using Redis engine version 6.2 onward or Memcached engine
/// version 1.6.6 on all instances built on the Nitro
/// system.
///
///
public NetworkType NetworkType
{
get { return this._networkType; }
set { this._networkType = value; }
}
// Check to see if NetworkType property is set
internal bool IsSetNetworkType()
{
return this._networkType != null;
}
///
/// Gets and sets the property NotificationConfiguration.
///
/// Describes a notification topic and its status. Notification topics are used for publishing
/// ElastiCache events to subscribers using Amazon Simple Notification Service (SNS).
///
///
///
public NotificationConfiguration NotificationConfiguration
{
get { return this._notificationConfiguration; }
set { this._notificationConfiguration = value; }
}
// Check to see if NotificationConfiguration property is set
internal bool IsSetNotificationConfiguration()
{
return this._notificationConfiguration != null;
}
///
/// Gets and sets the property NumCacheNodes.
///
/// The number of cache nodes in the cluster.
///
///
///
/// For clusters running Redis, this value must be 1. For clusters running Memcached,
/// this value must be between 1 and 40.
///
///
public int NumCacheNodes
{
get { return this._numCacheNodes.GetValueOrDefault(); }
set { this._numCacheNodes = value; }
}
// Check to see if NumCacheNodes property is set
internal bool IsSetNumCacheNodes()
{
return this._numCacheNodes.HasValue;
}
///
/// Gets and sets the property PendingModifiedValues.
///
public PendingModifiedValues PendingModifiedValues
{
get { return this._pendingModifiedValues; }
set { this._pendingModifiedValues = value; }
}
// Check to see if PendingModifiedValues property is set
internal bool IsSetPendingModifiedValues()
{
return this._pendingModifiedValues != null;
}
///
/// Gets and sets the property PreferredAvailabilityZone.
///
/// The name of the Availability Zone in which the cluster is located or "Multiple" if
/// the cache nodes are located in different Availability Zones.
///
///
public string PreferredAvailabilityZone
{
get { return this._preferredAvailabilityZone; }
set { this._preferredAvailabilityZone = value; }
}
// Check to see if PreferredAvailabilityZone property is set
internal bool IsSetPreferredAvailabilityZone()
{
return this._preferredAvailabilityZone != null;
}
///
/// Gets and sets the property PreferredMaintenanceWindow.
///
/// Specifies the weekly time range during which maintenance on the cluster is performed.
/// It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC).
/// The minimum maintenance window is a 60 minute period.
///
///
///
/// Valid values for ddd
are:
///
/// -
///
///
sun
///
/// -
///
///
mon
///
/// -
///
///
tue
///
/// -
///
///
wed
///
/// -
///
///
thu
///
/// -
///
///
fri
///
/// -
///
///
sat
///
///
///
/// Example: sun:23:00-mon:01:30
///
///
public string PreferredMaintenanceWindow
{
get { return this._preferredMaintenanceWindow; }
set { this._preferredMaintenanceWindow = value; }
}
// Check to see if PreferredMaintenanceWindow property is set
internal bool IsSetPreferredMaintenanceWindow()
{
return this._preferredMaintenanceWindow != null;
}
///
/// Gets and sets the property PreferredOutpostArn.
///
/// The outpost ARN in which the cache cluster is created.
///
///
public string PreferredOutpostArn
{
get { return this._preferredOutpostArn; }
set { this._preferredOutpostArn = value; }
}
// Check to see if PreferredOutpostArn property is set
internal bool IsSetPreferredOutpostArn()
{
return this._preferredOutpostArn != null;
}
///
/// Gets and sets the property ReplicationGroupId.
///
/// The replication group to which this cluster belongs. If this field is empty, the cluster
/// is not associated with any replication group.
///
///
public string ReplicationGroupId
{
get { return this._replicationGroupId; }
set { this._replicationGroupId = value; }
}
// Check to see if ReplicationGroupId property is set
internal bool IsSetReplicationGroupId()
{
return this._replicationGroupId != null;
}
///
/// Gets and sets the property ReplicationGroupLogDeliveryEnabled.
///
/// A boolean value indicating whether log delivery is enabled for the replication group.
///
///
public bool ReplicationGroupLogDeliveryEnabled
{
get { return this._replicationGroupLogDeliveryEnabled.GetValueOrDefault(); }
set { this._replicationGroupLogDeliveryEnabled = value; }
}
// Check to see if ReplicationGroupLogDeliveryEnabled property is set
internal bool IsSetReplicationGroupLogDeliveryEnabled()
{
return this._replicationGroupLogDeliveryEnabled.HasValue;
}
///
/// Gets and sets the property SecurityGroups.
///
/// A list of VPC Security Groups associated with the cluster.
///
///
public List SecurityGroups
{
get { return this._securityGroups; }
set { this._securityGroups = value; }
}
// Check to see if SecurityGroups property is set
internal bool IsSetSecurityGroups()
{
return this._securityGroups != null && this._securityGroups.Count > 0;
}
///
/// Gets and sets the property SnapshotRetentionLimit.
///
/// The number of days for which ElastiCache retains automatic cluster snapshots before
/// deleting them. For example, if you set SnapshotRetentionLimit
to 5, a
/// snapshot that was taken today is retained for 5 days before being deleted.
///
///
///
/// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned off.
///
///
///
public int SnapshotRetentionLimit
{
get { return this._snapshotRetentionLimit.GetValueOrDefault(); }
set { this._snapshotRetentionLimit = value; }
}
// Check to see if SnapshotRetentionLimit property is set
internal bool IsSetSnapshotRetentionLimit()
{
return this._snapshotRetentionLimit.HasValue;
}
///
/// Gets and sets the property SnapshotWindow.
///
/// The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot
/// of your cluster.
///
///
///
/// Example: 05:00-09:00
///
///
public string SnapshotWindow
{
get { return this._snapshotWindow; }
set { this._snapshotWindow = value; }
}
// Check to see if SnapshotWindow property is set
internal bool IsSetSnapshotWindow()
{
return this._snapshotWindow != null;
}
///
/// Gets and sets the property TransitEncryptionEnabled.
///
/// A flag that enables in-transit encryption when set to true
.
///
///
///
/// Required: Only available when creating a replication group in an Amazon VPC
/// using redis version 3.2.6
, 4.x
or later.
///
///
///
/// Default: false
///
///
public bool TransitEncryptionEnabled
{
get { return this._transitEncryptionEnabled.GetValueOrDefault(); }
set { this._transitEncryptionEnabled = value; }
}
// Check to see if TransitEncryptionEnabled property is set
internal bool IsSetTransitEncryptionEnabled()
{
return this._transitEncryptionEnabled.HasValue;
}
///
/// Gets and sets the property TransitEncryptionMode.
///
/// A setting that allows you to migrate your clients to use in-transit encryption, with
/// no downtime.
///
///
public TransitEncryptionMode TransitEncryptionMode
{
get { return this._transitEncryptionMode; }
set { this._transitEncryptionMode = value; }
}
// Check to see if TransitEncryptionMode property is set
internal bool IsSetTransitEncryptionMode()
{
return this._transitEncryptionMode != null;
}
}
}