/*
* 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 redshift-2012-12-01.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.Redshift.Model
{
///
/// Container for the parameters to the ModifyCluster operation.
/// Modifies the settings for a cluster.
///
///
///
/// You can also change node type and the number of nodes to scale up or down the cluster.
/// When resizing a cluster, you must specify both the number of nodes and the node type
/// even if one of the parameters does not change.
///
///
///
/// You can add another security or parameter group, or change the admin user password.
/// Resetting a cluster password or modifying the security groups associated with a cluster
/// do not need a reboot. However, modifying a parameter group requires a reboot for parameters
/// to take effect. For more information about managing clusters, go to Amazon
/// Redshift Clusters in the Amazon Redshift Cluster Management Guide.
///
///
public partial class ModifyClusterRequest : AmazonRedshiftRequest
{
private bool? _allowVersionUpgrade;
private int? _automatedSnapshotRetentionPeriod;
private string _availabilityZone;
private bool? _availabilityZoneRelocation;
private string _clusterIdentifier;
private string _clusterParameterGroupName;
private List _clusterSecurityGroups = new List();
private string _clusterType;
private string _clusterVersion;
private string _elasticIp;
private bool? _encrypted;
private bool? _enhancedVpcRouting;
private string _hsmClientCertificateIdentifier;
private string _hsmConfigurationIdentifier;
private string _kmsKeyId;
private string _maintenanceTrackName;
private int? _manualSnapshotRetentionPeriod;
private string _masterUserPassword;
private string _newClusterIdentifier;
private string _nodeType;
private int? _numberOfNodes;
private int? _port;
private string _preferredMaintenanceWindow;
private bool? _publiclyAccessible;
private List _vpcSecurityGroupIds = new List();
///
/// Gets and sets the property AllowVersionUpgrade.
///
/// If true
, major version upgrades will be applied automatically to the
/// cluster during the maintenance window.
///
///
///
/// Default: false
///
///
public bool AllowVersionUpgrade
{
get { return this._allowVersionUpgrade.GetValueOrDefault(); }
set { this._allowVersionUpgrade = value; }
}
// Check to see if AllowVersionUpgrade property is set
internal bool IsSetAllowVersionUpgrade()
{
return this._allowVersionUpgrade.HasValue;
}
///
/// Gets and sets the property AutomatedSnapshotRetentionPeriod.
///
/// The number of days that automated snapshots are retained. If the value is 0, automated
/// snapshots are disabled. Even if automated snapshots are disabled, you can still create
/// manual snapshots when you want with CreateClusterSnapshot.
///
///
///
/// If you decrease the automated snapshot retention period from its current value, existing
/// automated snapshots that fall outside of the new retention period will be immediately
/// deleted.
///
///
///
/// You can't disable automated snapshots for RA3 node types. Set the automated retention
/// period from 1-35 days.
///
///
///
/// Default: Uses existing setting.
///
///
///
/// Constraints: Must be a value from 0 to 35.
///
///
public int AutomatedSnapshotRetentionPeriod
{
get { return this._automatedSnapshotRetentionPeriod.GetValueOrDefault(); }
set { this._automatedSnapshotRetentionPeriod = value; }
}
// Check to see if AutomatedSnapshotRetentionPeriod property is set
internal bool IsSetAutomatedSnapshotRetentionPeriod()
{
return this._automatedSnapshotRetentionPeriod.HasValue;
}
///
/// Gets and sets the property AvailabilityZone.
///
/// The option to initiate relocation for an Amazon Redshift cluster to the target Availability
/// Zone.
///
///
[AWSProperty(Max=2147483647)]
public string AvailabilityZone
{
get { return this._availabilityZone; }
set { this._availabilityZone = value; }
}
// Check to see if AvailabilityZone property is set
internal bool IsSetAvailabilityZone()
{
return this._availabilityZone != null;
}
///
/// Gets and sets the property AvailabilityZoneRelocation.
///
/// The option to enable relocation for an Amazon Redshift cluster between Availability
/// Zones after the cluster modification is complete.
///
///
public bool AvailabilityZoneRelocation
{
get { return this._availabilityZoneRelocation.GetValueOrDefault(); }
set { this._availabilityZoneRelocation = value; }
}
// Check to see if AvailabilityZoneRelocation property is set
internal bool IsSetAvailabilityZoneRelocation()
{
return this._availabilityZoneRelocation.HasValue;
}
///
/// Gets and sets the property ClusterIdentifier.
///
/// The unique identifier of the cluster to be modified.
///
///
///
/// Example: examplecluster
///
///
[AWSProperty(Required=true, Max=2147483647)]
public string ClusterIdentifier
{
get { return this._clusterIdentifier; }
set { this._clusterIdentifier = value; }
}
// Check to see if ClusterIdentifier property is set
internal bool IsSetClusterIdentifier()
{
return this._clusterIdentifier != null;
}
///
/// Gets and sets the property ClusterParameterGroupName.
///
/// The name of the cluster parameter group to apply to this cluster. This change is applied
/// only after the cluster is rebooted. To reboot a cluster use RebootCluster.
///
///
///
///
/// Default: Uses existing setting.
///
///
///
/// Constraints: The cluster parameter group must be in the same parameter group family
/// that matches the cluster version.
///
///
[AWSProperty(Max=2147483647)]
public string ClusterParameterGroupName
{
get { return this._clusterParameterGroupName; }
set { this._clusterParameterGroupName = value; }
}
// Check to see if ClusterParameterGroupName property is set
internal bool IsSetClusterParameterGroupName()
{
return this._clusterParameterGroupName != null;
}
///
/// Gets and sets the property ClusterSecurityGroups.
///
/// A list of cluster security groups to be authorized on this cluster. This change is
/// asynchronously applied as soon as possible.
///
///
///
/// Security groups currently associated with the cluster, and not in the list of groups
/// to apply, will be revoked from the cluster.
///
///
///
/// Constraints:
///
/// -
///
/// Must be 1 to 255 alphanumeric characters or hyphens
///
///
-
///
/// First character must be a letter
///
///
-
///
/// Cannot end with a hyphen or contain two consecutive hyphens
///
///
///
public List ClusterSecurityGroups
{
get { return this._clusterSecurityGroups; }
set { this._clusterSecurityGroups = value; }
}
// Check to see if ClusterSecurityGroups property is set
internal bool IsSetClusterSecurityGroups()
{
return this._clusterSecurityGroups != null && this._clusterSecurityGroups.Count > 0;
}
///
/// Gets and sets the property ClusterType.
///
/// The new cluster type.
///
///
///
/// When you submit your cluster resize request, your existing cluster goes into a read-only
/// mode. After Amazon Redshift provisions a new cluster based on your resize requirements,
/// there will be outage for a period while the old cluster is deleted and your connection
/// is switched to the new cluster. You can use DescribeResize to track the progress
/// of the resize request.
///
///
///
/// Valid Values: multi-node | single-node
///
///
[AWSProperty(Max=2147483647)]
public string ClusterType
{
get { return this._clusterType; }
set { this._clusterType = value; }
}
// Check to see if ClusterType property is set
internal bool IsSetClusterType()
{
return this._clusterType != null;
}
///
/// Gets and sets the property ClusterVersion.
///
/// The new version number of the Amazon Redshift engine to upgrade to.
///
///
///
/// For major version upgrades, if a non-default cluster parameter group is currently
/// in use, a new cluster parameter group in the cluster parameter group family for the
/// new version must be specified. The new cluster parameter group can be the default
/// for that cluster parameter group family. For more information about parameters and
/// parameter groups, go to Amazon
/// Redshift Parameter Groups in the Amazon Redshift Cluster Management Guide.
///
///
///
/// Example: 1.0
///
///
[AWSProperty(Max=2147483647)]
public string ClusterVersion
{
get { return this._clusterVersion; }
set { this._clusterVersion = value; }
}
// Check to see if ClusterVersion property is set
internal bool IsSetClusterVersion()
{
return this._clusterVersion != null;
}
///
/// Gets and sets the property ElasticIp.
///
/// The Elastic IP (EIP) address for the cluster.
///
///
///
/// Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through
/// an Internet gateway. For more information about provisioning clusters in EC2-VPC,
/// go to Supported
/// Platforms to Launch Your Cluster in the Amazon Redshift Cluster Management Guide.
///
///
[AWSProperty(Max=2147483647)]
public string ElasticIp
{
get { return this._elasticIp; }
set { this._elasticIp = value; }
}
// Check to see if ElasticIp property is set
internal bool IsSetElasticIp()
{
return this._elasticIp != null;
}
///
/// Gets and sets the property Encrypted.
///
/// Indicates whether the cluster is encrypted. If the value is encrypted (true) and you
/// provide a value for the KmsKeyId
parameter, we encrypt the cluster with
/// the provided KmsKeyId
. If you don't provide a KmsKeyId
,
/// we encrypt with the default key.
///
///
///
/// If the value is not encrypted (false), then the cluster is decrypted.
///
///
public bool Encrypted
{
get { return this._encrypted.GetValueOrDefault(); }
set { this._encrypted = value; }
}
// Check to see if Encrypted property is set
internal bool IsSetEncrypted()
{
return this._encrypted.HasValue;
}
///
/// Gets and sets the property EnhancedVpcRouting.
///
/// An option that specifies whether to create the cluster with enhanced VPC routing enabled.
/// To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC.
/// For more information, see Enhanced
/// VPC Routing in the Amazon Redshift Cluster Management Guide.
///
///
///
/// If this option is true
, enhanced VPC routing is enabled.
///
///
///
/// Default: false
///
///
public bool EnhancedVpcRouting
{
get { return this._enhancedVpcRouting.GetValueOrDefault(); }
set { this._enhancedVpcRouting = value; }
}
// Check to see if EnhancedVpcRouting property is set
internal bool IsSetEnhancedVpcRouting()
{
return this._enhancedVpcRouting.HasValue;
}
///
/// Gets and sets the property HsmClientCertificateIdentifier.
///
/// Specifies the name of the HSM client certificate the Amazon Redshift cluster uses
/// to retrieve the data encryption keys stored in an HSM.
///
///
[AWSProperty(Max=2147483647)]
public string HsmClientCertificateIdentifier
{
get { return this._hsmClientCertificateIdentifier; }
set { this._hsmClientCertificateIdentifier = value; }
}
// Check to see if HsmClientCertificateIdentifier property is set
internal bool IsSetHsmClientCertificateIdentifier()
{
return this._hsmClientCertificateIdentifier != null;
}
///
/// Gets and sets the property HsmConfigurationIdentifier.
///
/// Specifies the name of the HSM configuration that contains the information the Amazon
/// Redshift cluster can use to retrieve and store keys in an HSM.
///
///
[AWSProperty(Max=2147483647)]
public string HsmConfigurationIdentifier
{
get { return this._hsmConfigurationIdentifier; }
set { this._hsmConfigurationIdentifier = value; }
}
// Check to see if HsmConfigurationIdentifier property is set
internal bool IsSetHsmConfigurationIdentifier()
{
return this._hsmConfigurationIdentifier != null;
}
///
/// Gets and sets the property KmsKeyId.
///
/// The Key Management Service (KMS) key ID of the encryption key that you want to use
/// to encrypt data in the cluster.
///
///
[AWSProperty(Max=2147483647)]
public string KmsKeyId
{
get { return this._kmsKeyId; }
set { this._kmsKeyId = value; }
}
// Check to see if KmsKeyId property is set
internal bool IsSetKmsKeyId()
{
return this._kmsKeyId != null;
}
///
/// Gets and sets the property MaintenanceTrackName.
///
/// The name for the maintenance track that you want to assign for the cluster. This name
/// change is asynchronous. The new track name stays in the PendingModifiedValues
/// for the cluster until the next maintenance window. When the maintenance track changes,
/// the cluster is switched to the latest cluster release available for the maintenance
/// track. At this point, the maintenance track name is applied.
///
///
[AWSProperty(Max=2147483647)]
public string MaintenanceTrackName
{
get { return this._maintenanceTrackName; }
set { this._maintenanceTrackName = value; }
}
// Check to see if MaintenanceTrackName property is set
internal bool IsSetMaintenanceTrackName()
{
return this._maintenanceTrackName != null;
}
///
/// Gets and sets the property ManualSnapshotRetentionPeriod.
///
/// The default for number of days that a newly created manual snapshot is retained. If
/// the value is -1, the manual snapshot is retained indefinitely. This value doesn't
/// retroactively change the retention periods of existing manual snapshots.
///
///
///
/// The value must be either -1 or an integer between 1 and 3,653.
///
///
///
/// The default value is -1.
///
///
public int ManualSnapshotRetentionPeriod
{
get { return this._manualSnapshotRetentionPeriod.GetValueOrDefault(); }
set { this._manualSnapshotRetentionPeriod = value; }
}
// Check to see if ManualSnapshotRetentionPeriod property is set
internal bool IsSetManualSnapshotRetentionPeriod()
{
return this._manualSnapshotRetentionPeriod.HasValue;
}
///
/// Gets and sets the property MasterUserPassword.
///
/// The new password for the cluster admin user. This change is asynchronously applied
/// as soon as possible. Between the time of the request and the completion of the request,
/// the MasterUserPassword
element exists in the PendingModifiedValues
/// element of the operation response.
///
///
///
/// Operations never return the password, so this operation provides a way to regain access
/// to the admin user account for a cluster if the password is lost.
///
///
///
/// Default: Uses existing setting.
///
///
///
/// Constraints:
///
/// -
///
/// Must be between 8 and 64 characters in length.
///
///
-
///
/// Must contain at least one uppercase letter.
///
///
-
///
/// Must contain at least one lowercase letter.
///
///
-
///
/// Must contain one number.
///
///
-
///
/// Can be any printable ASCII character (ASCII code 33-126) except
'
(single
/// quote), "
(double quote), \
, /
, or @
.
///
///
///
[AWSProperty(Max=2147483647)]
public string MasterUserPassword
{
get { return this._masterUserPassword; }
set { this._masterUserPassword = value; }
}
// Check to see if MasterUserPassword property is set
internal bool IsSetMasterUserPassword()
{
return this._masterUserPassword != null;
}
///
/// Gets and sets the property NewClusterIdentifier.
///
/// The new identifier for the cluster.
///
///
///
/// Constraints:
///
/// -
///
/// Must contain from 1 to 63 alphanumeric characters or hyphens.
///
///
-
///
/// Alphabetic characters must be lowercase.
///
///
-
///
/// First character must be a letter.
///
///
-
///
/// Cannot end with a hyphen or contain two consecutive hyphens.
///
///
-
///
/// Must be unique for all clusters within an Amazon Web Services account.
///
///
///
/// Example: examplecluster
///
///
[AWSProperty(Max=2147483647)]
public string NewClusterIdentifier
{
get { return this._newClusterIdentifier; }
set { this._newClusterIdentifier = value; }
}
// Check to see if NewClusterIdentifier property is set
internal bool IsSetNewClusterIdentifier()
{
return this._newClusterIdentifier != null;
}
///
/// Gets and sets the property NodeType.
///
/// The new node type of the cluster. If you specify a new node type, you must also specify
/// the number of nodes parameter.
///
///
///
/// For more information about resizing clusters, go to Resizing
/// Clusters in Amazon Redshift in the Amazon Redshift Cluster Management Guide.
///
///
///
/// Valid Values: ds2.xlarge
| ds2.8xlarge
| dc1.large
/// | dc1.8xlarge
| dc2.large
| dc2.8xlarge
| ra3.xlplus
/// | ra3.4xlarge
| ra3.16xlarge
///
///
[AWSProperty(Max=2147483647)]
public string NodeType
{
get { return this._nodeType; }
set { this._nodeType = value; }
}
// Check to see if NodeType property is set
internal bool IsSetNodeType()
{
return this._nodeType != null;
}
///
/// Gets and sets the property NumberOfNodes.
///
/// The new number of nodes of the cluster. If you specify a new number of nodes, you
/// must also specify the node type parameter.
///
///
///
/// For more information about resizing clusters, go to Resizing
/// Clusters in Amazon Redshift in the Amazon Redshift Cluster Management Guide.
///
///
///
/// Valid Values: Integer greater than 0
.
///
///
public int NumberOfNodes
{
get { return this._numberOfNodes.GetValueOrDefault(); }
set { this._numberOfNodes = value; }
}
// Check to see if NumberOfNodes property is set
internal bool IsSetNumberOfNodes()
{
return this._numberOfNodes.HasValue;
}
///
/// Gets and sets the property Port.
///
/// The option to change the port of an Amazon Redshift cluster.
///
///
public int Port
{
get { return this._port.GetValueOrDefault(); }
set { this._port = value; }
}
// Check to see if Port property is set
internal bool IsSetPort()
{
return this._port.HasValue;
}
///
/// Gets and sets the property PreferredMaintenanceWindow.
///
/// The weekly time range (in UTC) during which system maintenance can occur, if necessary.
/// If system maintenance is necessary during the window, it may result in an outage.
///
///
///
/// This maintenance window change is made immediately. If the new maintenance window
/// indicates the current time, there must be at least 120 minutes between the current
/// time and end of the window in order to ensure that pending changes are applied.
///
///
///
/// Default: Uses existing setting.
///
///
///
/// Format: ddd:hh24:mi-ddd:hh24:mi, for example wed:07:30-wed:08:00
.
///
///
///
/// Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
///
///
///
/// Constraints: Must be at least 30 minutes.
///
///
[AWSProperty(Max=2147483647)]
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 PubliclyAccessible.
///
/// If true
, the cluster can be accessed from a public network. Only clusters
/// in VPCs can be set to be publicly available.
///
///
public bool PubliclyAccessible
{
get { return this._publiclyAccessible.GetValueOrDefault(); }
set { this._publiclyAccessible = value; }
}
// Check to see if PubliclyAccessible property is set
internal bool IsSetPubliclyAccessible()
{
return this._publiclyAccessible.HasValue;
}
///
/// Gets and sets the property VpcSecurityGroupIds.
///
/// A list of virtual private cloud (VPC) security groups to be associated with the cluster.
/// This change is asynchronously applied as soon as possible.
///
///
public List VpcSecurityGroupIds
{
get { return this._vpcSecurityGroupIds; }
set { this._vpcSecurityGroupIds = value; }
}
// Check to see if VpcSecurityGroupIds property is set
internal bool IsSetVpcSecurityGroupIds()
{
return this._vpcSecurityGroupIds != null && this._vpcSecurityGroupIds.Count > 0;
}
}
}