/*
* 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 ModifyReplicationGroup operation.
/// Modifies the settings for a replication group.
///
///
///
/// This operation is valid for Redis only.
///
///
///
public partial class ModifyReplicationGroupRequest : AmazonElastiCacheRequest
{
private bool? _applyImmediately;
private string _authToken;
private AuthTokenUpdateStrategyType _authTokenUpdateStrategy;
private bool? _automaticFailoverEnabled;
private bool? _autoMinorVersionUpgrade;
private string _cacheNodeType;
private string _cacheParameterGroupName;
private List _cacheSecurityGroupNames = new List();
private ClusterMode _clusterMode;
private string _engineVersion;
private IpDiscovery _ipDiscovery;
private List _logDeliveryConfigurations = new List();
private bool? _multiAZEnabled;
private string _nodeGroupId;
private string _notificationTopicArn;
private string _notificationTopicStatus;
private string _preferredMaintenanceWindow;
private string _primaryClusterId;
private bool? _removeUserGroups;
private string _replicationGroupDescription;
private string _replicationGroupId;
private List _securityGroupIds = new List();
private int? _snapshotRetentionLimit;
private string _snapshottingClusterId;
private string _snapshotWindow;
private bool? _transitEncryptionEnabled;
private TransitEncryptionMode _transitEncryptionMode;
private List _userGroupIdsToAdd = new List();
private List _userGroupIdsToRemove = new List();
///
/// 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 replication group.
///
///
///
/// If false
, changes to the nodes in the replication group are applied on
/// the next maintenance reboot, or the next failure reboot, whichever occurs first.
///
///
///
/// 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-strategy
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 AutomaticFailoverEnabled.
///
/// Determines whether a read replica is automatically promoted to read/write primary
/// if the existing primary encounters a failure.
///
///
///
/// Valid values: true
| false
///
///
public bool AutomaticFailoverEnabled
{
get { return this._automaticFailoverEnabled.GetValueOrDefault(); }
set { this._automaticFailoverEnabled = value; }
}
// Check to see if AutomaticFailoverEnabled property is set
internal bool IsSetAutomaticFailoverEnabled()
{
return this._automaticFailoverEnabled.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 CacheNodeType.
///
/// A valid cache node type that you want to scale this replication group 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 all of the clusters in this replication
/// group. 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 for the clusters in this replication
/// group. This change is asynchronously applied as soon as possible.
///
///
///
/// This parameter can be used only with replication group containing clusters running
/// 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 ClusterMode.
///
/// Enabled or Disabled. To modify cluster mode from Disabled to Enabled, you must first
/// set the cluster mode to Compatible. Compatible mode allows your Redis clients to connect
/// using both cluster mode enabled and cluster mode disabled. After you migrate all Redis
/// clients to use cluster mode enabled, you can then complete cluster mode configuration
/// and set the cluster mode to Enabled.
///
///
public ClusterMode ClusterMode
{
get { return this._clusterMode; }
set { this._clusterMode = value; }
}
// Check to see if ClusterMode property is set
internal bool IsSetClusterMode()
{
return this._clusterMode != null;
}
///
/// Gets and sets the property EngineVersion.
///
/// The upgraded version of the cache engine to be run on the clusters in the replication
/// group.
///
///
///
/// 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 replication
/// group 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 MultiAZEnabled.
///
/// A flag to indicate MultiAZ is enabled.
///
///
public bool MultiAZEnabled
{
get { return this._multiAZEnabled.GetValueOrDefault(); }
set { this._multiAZEnabled = value; }
}
// Check to see if MultiAZEnabled property is set
internal bool IsSetMultiAZEnabled()
{
return this._multiAZEnabled.HasValue;
}
///
/// Gets and sets the property NodeGroupId.
///
/// Deprecated. This parameter is not used.
///
///
[Obsolete("This field is deprecated and is no longer used.")]
public string NodeGroupId
{
get { return this._nodeGroupId; }
set { this._nodeGroupId = value; }
}
// Check to see if NodeGroupId property is set
internal bool IsSetNodeGroupId()
{
return this._nodeGroupId != null;
}
///
/// 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 replication group 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 for the replication group. 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 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 PrimaryClusterId.
///
/// For replication groups with a single primary, if this parameter is specified, ElastiCache
/// promotes the specified cluster in the specified replication group to the primary role.
/// The nodes of all other clusters in the replication group are read replicas.
///
///
public string PrimaryClusterId
{
get { return this._primaryClusterId; }
set { this._primaryClusterId = value; }
}
// Check to see if PrimaryClusterId property is set
internal bool IsSetPrimaryClusterId()
{
return this._primaryClusterId != null;
}
///
/// Gets and sets the property RemoveUserGroups.
///
/// Removes the user group associated with this replication group.
///
///
public bool RemoveUserGroups
{
get { return this._removeUserGroups.GetValueOrDefault(); }
set { this._removeUserGroups = value; }
}
// Check to see if RemoveUserGroups property is set
internal bool IsSetRemoveUserGroups()
{
return this._removeUserGroups.HasValue;
}
///
/// Gets and sets the property ReplicationGroupDescription.
///
/// A description for the replication group. Maximum length is 255 characters.
///
///
public string ReplicationGroupDescription
{
get { return this._replicationGroupDescription; }
set { this._replicationGroupDescription = value; }
}
// Check to see if ReplicationGroupDescription property is set
internal bool IsSetReplicationGroupDescription()
{
return this._replicationGroupDescription != null;
}
///
/// Gets and sets the property ReplicationGroupId.
///
/// The identifier of the replication group to modify.
///
///
[AWSProperty(Required=true)]
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 SecurityGroupIds.
///
/// Specifies the VPC Security Groups associated with the clusters in the replication
/// group.
///
///
///
/// This parameter can be used only with replication group containing clusters running
/// 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 node group (shard) 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.
///
///
///
/// Important 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 SnapshottingClusterId.
///
/// The cluster ID that is used as the daily snapshot source for the replication group.
/// This parameter cannot be set for Redis (cluster mode enabled) replication groups.
///
///
public string SnapshottingClusterId
{
get { return this._snapshottingClusterId; }
set { this._snapshottingClusterId = value; }
}
// Check to see if SnapshottingClusterId property is set
internal bool IsSetSnapshottingClusterId()
{
return this._snapshottingClusterId != null;
}
///
/// Gets and sets the property SnapshotWindow.
///
/// The daily time range (in UTC) during which ElastiCache begins taking a daily snapshot
/// of the node group (shard) specified by SnapshottingClusterId
.
///
///
///
/// Example: 05:00-09:00
///
///
///
/// If you do not specify this parameter, ElastiCache automatically chooses an appropriate
/// time range.
///
///
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. If you are enabling in-transit
/// encryption for an existing cluster, you must also set TransitEncryptionMode
/// to preferred
.
///
///
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.
///
///
///
/// You must set TransitEncryptionEnabled
to true
, for your
/// existing cluster, and set TransitEncryptionMode
to preferred
/// in the same request to allow both encrypted and unencrypted connections at the same
/// time. Once you migrate all your Redis clients to use encrypted connections you can
/// set the value to required
to allow encrypted connections only.
///
///
///
/// Setting TransitEncryptionMode
to required
is a two-step
/// process that requires you to first set the TransitEncryptionMode
to preferred
,
/// after that you can set TransitEncryptionMode
to required
.
///
///
///
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;
}
///
/// Gets and sets the property UserGroupIdsToAdd.
///
/// The ID of the user group you are associating with the replication group.
///
///
public List UserGroupIdsToAdd
{
get { return this._userGroupIdsToAdd; }
set { this._userGroupIdsToAdd = value; }
}
// Check to see if UserGroupIdsToAdd property is set
internal bool IsSetUserGroupIdsToAdd()
{
return this._userGroupIdsToAdd != null && this._userGroupIdsToAdd.Count > 0;
}
///
/// Gets and sets the property UserGroupIdsToRemove.
///
/// The ID of the user group to disassociate from the replication group, meaning the users
/// in the group no longer can access the replication group.
///
///
public List UserGroupIdsToRemove
{
get { return this._userGroupIdsToRemove; }
set { this._userGroupIdsToRemove = value; }
}
// Check to see if UserGroupIdsToRemove property is set
internal bool IsSetUserGroupIdsToRemove()
{
return this._userGroupIdsToRemove != null && this._userGroupIdsToRemove.Count > 0;
}
}
}