/*
* 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
{
///
/// Container for the parameters to the ModifyCacheCluster operation.
/// Modifies the settings for a cluster. You can use this operation to change one or more
/// cluster configuration parameters by specifying the parameters and the new values.
///
public partial class ModifyCacheClusterRequest : AmazonElastiCacheRequest
{
private bool? _applyImmediately;
private string _authToken;
private AuthTokenUpdateStrategyType _authTokenUpdateStrategy;
private bool? _autoMinorVersionUpgrade;
private AZMode _azMode;
private string _cacheClusterId;
private List _cacheNodeIdsToRemove = new List();
private string _cacheNodeType;
private string _cacheParameterGroupName;
private List _cacheSecurityGroupNames = new List();
private string _engineVersion;
private IpDiscovery _ipDiscovery;
private List _logDeliveryConfigurations = new List();
private List _newAvailabilityZones = new List();
private string _notificationTopicArn;
private string _notificationTopicStatus;
private int? _numCacheNodes;
private string _preferredMaintenanceWindow;
private List _securityGroupIds = new List();
private int? _snapshotRetentionLimit;
private string _snapshotWindow;
///
/// Empty constructor used to set properties independently even when a simple constructor is available
///
public ModifyCacheClusterRequest() { }
///
/// Instantiates ModifyCacheClusterRequest with the parameterized properties
///
/// The cluster identifier. This value is stored as a lowercase string.
public ModifyCacheClusterRequest(string cacheClusterId)
{
_cacheClusterId = cacheClusterId;
}
///
/// Gets and sets the property ApplyImmediately.
///
/// If true
, this parameter causes the modifications in this request and
/// any pending modifications to be applied, asynchronously and as soon as possible, regardless
/// of the PreferredMaintenanceWindow
setting for the cluster.
///
///
///
/// If false
, changes to the cluster are applied on the next maintenance
/// reboot, or the next failure reboot, whichever occurs first.
///
///
///
/// If you perform a ModifyCacheCluster
before a pending modification is
/// applied, the pending modification is replaced by the newer modification.
///
///
///
/// Valid values: true
| false
///
///
///
/// Default: false
///
///
public bool ApplyImmediately
{
get { return this._applyImmediately.GetValueOrDefault(); }
set { this._applyImmediately = value; }
}
// Check to see if ApplyImmediately property is set
internal bool IsSetApplyImmediately()
{
return this._applyImmediately.HasValue;
}
///
/// Gets and sets the property AuthToken.
///
/// Reserved parameter. The password used to access a password protected server. This
/// parameter must be specified with the auth-token-update
parameter. Password
/// constraints:
///
/// -
///
/// Must be only printable ASCII characters
///
///
-
///
/// Must be at least 16 characters and no more than 128 characters in length
///
///
-
///
/// Cannot contain any of the following characters: '/', '"', or '@', '%'
///
///
///
/// For more information, see AUTH password at AUTH.
///
///
public string AuthToken
{
get { return this._authToken; }
set { this._authToken = value; }
}
// Check to see if AuthToken property is set
internal bool IsSetAuthToken()
{
return this._authToken != null;
}
///
/// Gets and sets the property AuthTokenUpdateStrategy.
///
/// Specifies the strategy to use to update the AUTH token. This parameter must be specified
/// with the auth-token
parameter. Possible values:
///
/// -
///
/// Rotate
///
///
-
///
/// Set
///
///
///
/// For more information, see Authenticating
/// Users with Redis AUTH
///
///
public AuthTokenUpdateStrategyType AuthTokenUpdateStrategy
{
get { return this._authTokenUpdateStrategy; }
set { this._authTokenUpdateStrategy = value; }
}
// Check to see if AuthTokenUpdateStrategy property is set
internal bool IsSetAuthTokenUpdateStrategy()
{
return this._authTokenUpdateStrategy != null;
}
///
/// 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 AZMode.
///
/// Specifies whether the new nodes in this Memcached cluster are all created in a single
/// Availability Zone or created across multiple Availability Zones.
///
///
///
/// Valid values: single-az
| cross-az
.
///
///
///
/// This option is only supported for Memcached clusters.
///
///
///
/// You cannot specify single-az
if the Memcached cluster already has cache
/// nodes in different Availability Zones. If cross-az
is specified, existing
/// Memcached nodes remain in their current Availability Zone.
///
///
///
/// Only newly created nodes are located in different Availability Zones.
///
///
///
public AZMode AZMode
{
get { return this._azMode; }
set { this._azMode = value; }
}
// Check to see if AZMode property is set
internal bool IsSetAZMode()
{
return this._azMode != null;
}
///
/// Gets and sets the property CacheClusterId.
///
/// The cluster identifier. This value is stored as a lowercase string.
///
///
[AWSProperty(Required=true)]
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 CacheNodeIdsToRemove.
///
/// A list of cache node IDs to be removed. A node ID is a numeric identifier (0001, 0002,
/// etc.). This parameter is only valid when NumCacheNodes
is less than the
/// existing number of cache nodes. The number of cache node IDs supplied in this parameter
/// must match the difference between the existing number of cache nodes in the cluster
/// or pending cache nodes, whichever is greater, and the value of NumCacheNodes
/// in the request.
///
///
///
/// For example: If you have 3 active cache nodes, 7 pending cache nodes, and the number
/// of cache nodes in this ModifyCacheCluster
call is 5, you must list 2
/// (7 - 5) cache node IDs to remove.
///
///
public List CacheNodeIdsToRemove
{
get { return this._cacheNodeIdsToRemove; }
set { this._cacheNodeIdsToRemove = value; }
}
// Check to see if CacheNodeIdsToRemove property is set
internal bool IsSetCacheNodeIdsToRemove()
{
return this._cacheNodeIdsToRemove != null && this._cacheNodeIdsToRemove.Count > 0;
}
///
/// Gets and sets the property CacheNodeType.
///
/// A valid cache node type that you want to scale this cluster up to.
///
///
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 CacheParameterGroupName.
///
/// The name of the cache parameter group to apply to this cluster. This change is asynchronously
/// applied as soon as possible for parameters when the ApplyImmediately
/// parameter is specified as true
for this request.
///
///
public string CacheParameterGroupName
{
get { return this._cacheParameterGroupName; }
set { this._cacheParameterGroupName = value; }
}
// Check to see if CacheParameterGroupName property is set
internal bool IsSetCacheParameterGroupName()
{
return this._cacheParameterGroupName != null;
}
///
/// Gets and sets the property CacheSecurityGroupNames.
///
/// A list of cache security group names to authorize on this cluster. This change is
/// asynchronously applied as soon as possible.
///
///
///
/// You can use this parameter only with clusters that are created outside of an Amazon
/// Virtual Private Cloud (Amazon VPC).
///
///
///
/// Constraints: Must contain no more than 255 alphanumeric characters. Must not be "Default".
///
///
public List CacheSecurityGroupNames
{
get { return this._cacheSecurityGroupNames; }
set { this._cacheSecurityGroupNames = value; }
}
// Check to see if CacheSecurityGroupNames property is set
internal bool IsSetCacheSecurityGroupNames()
{
return this._cacheSecurityGroupNames != null && this._cacheSecurityGroupNames.Count > 0;
}
///
/// Gets and sets the property EngineVersion.
///
/// The upgraded version of the cache engine to be run on the cache nodes.
///
///
///
/// Important: You can upgrade to a newer engine version (see Selecting
/// a Cache Engine and Version), but you cannot downgrade to an earlier engine version.
/// If you want to use an earlier engine version, you must delete the existing cluster
/// and create it anew with the earlier engine version.
///
///
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 you choose when modifying a 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.
///
/// Specifies 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 NewAvailabilityZones.
///
/// This option is only supported on Memcached clusters.
///
///
///
/// The list of Availability Zones where the new Memcached cache nodes are created.
///
///
///
/// This parameter is only valid when NumCacheNodes
in the request is greater
/// than the sum of the number of active cache nodes and the number of cache nodes pending
/// creation (which may be zero). The number of Availability Zones supplied in this list
/// must match the cache nodes being added in this request.
///
///
///
/// Scenarios:
///
/// -
///
/// Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify
NumCacheNodes=5
/// (3 + 2) and optionally specify two Availability Zones for the two new nodes.
///
/// -
///
/// Scenario 2: You have 3 active nodes and 2 nodes pending creation (from the
/// scenario 1 call) and want to add 1 more node. Specify
NumCacheNodes=6
/// ((3 + 2) + 1) and optionally specify an Availability Zone for the new node.
///
/// -
///
/// Scenario 3: You want to cancel all pending operations. Specify
NumCacheNodes=3
/// to cancel all pending operations.
///
///
///
/// The Availability Zone placement of nodes pending creation cannot be modified. If you
/// wish to cancel any nodes pending creation, add 0 nodes by setting NumCacheNodes
/// to the number of current nodes.
///
///
///
/// If cross-az
is specified, existing Memcached nodes remain in their current
/// Availability Zone. Only newly created nodes can be located in different Availability
/// Zones. For guidance on how to move existing Memcached nodes to different Availability
/// Zones, see the Availability Zone Considerations section of Cache
/// Node Considerations for Memcached.
///
///
///
/// Impact of new add/remove requests upon pending requests
///
/// -
///
/// Scenario-1
///
///
-
///
/// Pending Action: Delete
///
///
-
///
/// New Request: Delete
///
///
-
///
/// Result: The new delete, pending or immediate, replaces the pending delete.
///
///
-
///
/// Scenario-2
///
///
-
///
/// Pending Action: Delete
///
///
-
///
/// New Request: Create
///
///
-
///
/// Result: The new create, pending or immediate, replaces the pending delete.
///
///
-
///
/// Scenario-3
///
///
-
///
/// Pending Action: Create
///
///
-
///
/// New Request: Delete
///
///
-
///
/// Result: The new delete, pending or immediate, replaces the pending create.
///
///
-
///
/// Scenario-4
///
///
-
///
/// Pending Action: Create
///
///
-
///
/// New Request: Create
///
///
-
///
/// Result: The new create is added to the pending create.
///
///
///
/// Important: If the new create request is Apply Immediately - Yes, all
/// creates are performed immediately. If the new create request is Apply Immediately
/// - No, all creates are pending.
///
///
///
public List NewAvailabilityZones
{
get { return this._newAvailabilityZones; }
set { this._newAvailabilityZones = value; }
}
// Check to see if NewAvailabilityZones property is set
internal bool IsSetNewAvailabilityZones()
{
return this._newAvailabilityZones != null && this._newAvailabilityZones.Count > 0;
}
///
/// Gets and sets the property NotificationTopicArn.
///
/// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications are
/// sent.
///
///
///
/// The Amazon SNS topic owner must be same as the cluster owner.
///
///
///
public string NotificationTopicArn
{
get { return this._notificationTopicArn; }
set { this._notificationTopicArn = value; }
}
// Check to see if NotificationTopicArn property is set
internal bool IsSetNotificationTopicArn()
{
return this._notificationTopicArn != null;
}
///
/// Gets and sets the property NotificationTopicStatus.
///
/// The status of the Amazon SNS notification topic. Notifications are sent only if the
/// status is active
.
///
///
///
/// Valid values: active
| inactive
///
///
public string NotificationTopicStatus
{
get { return this._notificationTopicStatus; }
set { this._notificationTopicStatus = value; }
}
// Check to see if NotificationTopicStatus property is set
internal bool IsSetNotificationTopicStatus()
{
return this._notificationTopicStatus != null;
}
///
/// Gets and sets the property NumCacheNodes.
///
/// The number of cache nodes that the cluster should have. If the value for NumCacheNodes
/// is greater than the sum of the number of current cache nodes and the number of cache
/// nodes pending creation (which may be zero), more nodes are added. If the value is
/// less than the number of existing cache nodes, nodes are removed. If the value is equal
/// to the number of current cache nodes, any pending add or remove requests are canceled.
///
///
///
/// If you are removing cache nodes, you must use the CacheNodeIdsToRemove
/// parameter to provide the IDs of the specific cache nodes to remove.
///
///
///
/// For clusters running Redis, this value must be 1. For clusters running Memcached,
/// this value must be between 1 and 40.
///
///
///
/// Adding or removing Memcached cache nodes can be applied immediately or as a pending
/// operation (see ApplyImmediately
).
///
///
///
/// A pending operation to modify the number of cache nodes in a cluster during its maintenance
/// window, whether by adding or removing nodes in accordance with the scale out architecture,
/// is not queued. The customer's latest request to add or remove nodes to the cluster
/// overrides any previous pending operations to modify the number of cache nodes in the
/// cluster. For example, a request to remove 2 nodes would override a previous pending
/// operation to remove 3 nodes. Similarly, a request to add 2 nodes would override a
/// previous pending operation to remove 3 nodes and vice versa. As Memcached cache nodes
/// may now be provisioned in different Availability Zones with flexible cache node placement,
/// a request to add nodes does not automatically override a previous pending operation
/// to add nodes. The customer can modify the previous pending operation to add more nodes
/// or explicitly cancel the pending request and retry the new request. To cancel pending
/// operations to modify the number of cache nodes in a cluster, use the ModifyCacheCluster
/// request and set NumCacheNodes
equal to the number of cache nodes currently
/// in the cluster.
///
///
///
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 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 SecurityGroupIds.
///
/// Specifies the VPC Security Groups associated with the cluster.
///
///
///
/// This parameter can be used only with clusters that are created in an Amazon Virtual
/// Private Cloud (Amazon VPC).
///
///
public List SecurityGroupIds
{
get { return this._securityGroupIds; }
set { this._securityGroupIds = value; }
}
// Check to see if SecurityGroupIds property is set
internal bool IsSetSecurityGroupIds()
{
return this._securityGroupIds != null && this._securityGroupIds.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.
///
///
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;
}
}
}