/*
* 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 CreateCluster operation.
/// Creates a new cluster with the specified parameters.
///
///
///
/// To create a cluster in Virtual Private Cloud (VPC), you must provide a cluster subnet
/// group name. The cluster subnet group identifies the subnets of your VPC that Amazon
/// Redshift uses when creating the cluster. For more information about managing clusters,
/// go to Amazon
/// Redshift Clusters in the Amazon Redshift Cluster Management Guide.
///
///
public partial class CreateClusterRequest : AmazonRedshiftRequest
{
private string _additionalInfo;
private bool? _allowVersionUpgrade;
private AquaConfigurationStatus _aquaConfigurationStatus;
private int? _automatedSnapshotRetentionPeriod;
private string _availabilityZone;
private bool? _availabilityZoneRelocation;
private string _clusterIdentifier;
private string _clusterParameterGroupName;
private List _clusterSecurityGroups = new List();
private string _clusterSubnetGroupName;
private string _clusterType;
private string _clusterVersion;
private string _dbName;
private string _defaultIamRoleArn;
private string _elasticIp;
private bool? _encrypted;
private bool? _enhancedVpcRouting;
private string _hsmClientCertificateIdentifier;
private string _hsmConfigurationIdentifier;
private List _iamRoles = new List();
private string _kmsKeyId;
private string _loadSampleData;
private string _maintenanceTrackName;
private int? _manualSnapshotRetentionPeriod;
private string _masterUsername;
private string _masterUserPassword;
private string _nodeType;
private int? _numberOfNodes;
private int? _port;
private string _preferredMaintenanceWindow;
private bool? _publiclyAccessible;
private string _snapshotScheduleIdentifier;
private List _tags = new List();
private List _vpcSecurityGroupIds = new List();
///
/// Gets and sets the property AdditionalInfo.
///
/// Reserved.
///
///
[AWSProperty(Max=2147483647)]
public string AdditionalInfo
{
get { return this._additionalInfo; }
set { this._additionalInfo = value; }
}
// Check to see if AdditionalInfo property is set
internal bool IsSetAdditionalInfo()
{
return this._additionalInfo != null;
}
///
/// Gets and sets the property AllowVersionUpgrade.
///
/// If true
, major version upgrades can be applied during the maintenance
/// window to the Amazon Redshift engine that is running on the cluster.
///
///
///
/// When a new major version of the Amazon Redshift engine is released, you can request
/// that the service automatically apply upgrades during the maintenance window to the
/// Amazon Redshift engine that is running on your cluster.
///
///
///
/// Default: true
///
///
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 AquaConfigurationStatus.
///
/// This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift
/// automatically determines whether to use AQUA (Advanced Query Accelerator).
///
///
public AquaConfigurationStatus AquaConfigurationStatus
{
get { return this._aquaConfigurationStatus; }
set { this._aquaConfigurationStatus = value; }
}
// Check to see if AquaConfigurationStatus property is set
internal bool IsSetAquaConfigurationStatus()
{
return this._aquaConfigurationStatus != null;
}
///
/// 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.
///
///
///
/// You can't disable automated snapshots for RA3 node types. Set the automated retention
/// period from 1-35 days.
///
///
///
/// Default: 1
///
///
///
/// 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 EC2 Availability Zone (AZ) in which you want Amazon Redshift to provision the
/// cluster. For example, if you have several EC2 instances running in a specific Availability
/// Zone, then you might want the cluster to be provisioned in the same zone in order
/// to decrease network latency.
///
///
///
/// Default: A random, system-chosen Availability Zone in the region that is specified
/// by the endpoint.
///
///
///
/// Example: us-east-2d
///
///
///
/// Constraint: The specified Availability Zone must be in the same region as the current
/// endpoint.
///
///
[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 is created.
///
///
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.
///
/// A unique identifier for the cluster. You use this identifier to refer to the cluster
/// for any subsequent cluster operations such as deleting or modifying. The identifier
/// also appears in the Amazon Redshift console.
///
///
///
/// 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: myexamplecluster
///
///
[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 parameter group to be associated with this cluster.
///
///
///
/// Default: The default Amazon Redshift cluster parameter group. For information about
/// the default parameter group, go to Working
/// with Amazon Redshift Parameter Groups
///
///
///
/// 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.
///
///
///
[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 security groups to be associated with this cluster.
///
///
///
/// Default: The default cluster security group for Amazon Redshift.
///
///
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 ClusterSubnetGroupName.
///
/// The name of a cluster subnet group to be associated with this cluster.
///
///
///
/// If this parameter is not provided the resulting cluster will be deployed outside virtual
/// private cloud (VPC).
///
///
[AWSProperty(Max=2147483647)]
public string ClusterSubnetGroupName
{
get { return this._clusterSubnetGroupName; }
set { this._clusterSubnetGroupName = value; }
}
// Check to see if ClusterSubnetGroupName property is set
internal bool IsSetClusterSubnetGroupName()
{
return this._clusterSubnetGroupName != null;
}
///
/// Gets and sets the property ClusterType.
///
/// The type of the cluster. When cluster type is specified as
///
/// -
///
///
single-node
, the NumberOfNodes parameter is not required.
///
/// -
///
///
multi-node
, the NumberOfNodes parameter is required.
///
///
///
/// Valid Values: multi-node
| single-node
///
///
///
/// Default: multi-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 version of the Amazon Redshift engine software that you want to deploy on the
/// cluster.
///
///
///
/// The version selected runs on all the nodes in the cluster.
///
///
///
/// Constraints: Only version 1.0 is currently available.
///
///
///
/// 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 DBName.
///
/// The name of the first database to be created when the cluster is created.
///
///
///
/// To create additional databases after the cluster is created, connect to the cluster
/// with a SQL client and use SQL commands to create a database. For more information,
/// go to Create
/// a Database in the Amazon Redshift Database Developer Guide.
///
///
///
/// Default: dev
///
///
///
/// Constraints:
///
/// -
///
/// Must contain 1 to 64 alphanumeric characters.
///
///
-
///
/// Must contain only lowercase letters.
///
///
-
///
/// Cannot be a word that is reserved by the service. A list of reserved words can be
/// found in Reserved
/// Words in the Amazon Redshift Database Developer Guide.
///
///
///
[AWSProperty(Max=2147483647)]
public string DBName
{
get { return this._dbName; }
set { this._dbName = value; }
}
// Check to see if DBName property is set
internal bool IsSetDBName()
{
return this._dbName != null;
}
///
/// Gets and sets the property DefaultIamRoleArn.
///
/// The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster
/// when the cluster was created.
///
///
[AWSProperty(Max=2147483647)]
public string DefaultIamRoleArn
{
get { return this._defaultIamRoleArn; }
set { this._defaultIamRoleArn = value; }
}
// Check to see if DefaultIamRoleArn property is set
internal bool IsSetDefaultIamRoleArn()
{
return this._defaultIamRoleArn != 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. Don't specify the Elastic IP address for a publicly accessible
/// cluster with availability zone relocation turned on. 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.
///
/// If true
, the data in the cluster is encrypted at rest.
///
///
///
/// Default: false
///
///
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 IamRoles.
///
/// A list of Identity and Access Management (IAM) roles that can be used by the cluster
/// to access other Amazon Web Services services. You must supply the IAM roles in their
/// Amazon Resource Name (ARN) format.
///
///
///
/// The maximum number of IAM roles that you can associate is subject to a quota. For
/// more information, go to Quotas
/// and limits in the Amazon Redshift Cluster Management Guide.
///
///
public List IamRoles
{
get { return this._iamRoles; }
set { this._iamRoles = value; }
}
// Check to see if IamRoles property is set
internal bool IsSetIamRoles()
{
return this._iamRoles != null && this._iamRoles.Count > 0;
}
///
/// 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 LoadSampleData.
///
/// A flag that specifies whether to load sample data once the cluster is created.
///
///
[AWSProperty(Max=2147483647)]
public string LoadSampleData
{
get { return this._loadSampleData; }
set { this._loadSampleData = value; }
}
// Check to see if LoadSampleData property is set
internal bool IsSetLoadSampleData()
{
return this._loadSampleData != null;
}
///
/// Gets and sets the property MaintenanceTrackName.
///
/// An optional parameter for the name of the maintenance track for the cluster. If you
/// don't provide a maintenance track name, the cluster is assigned to the current
/// track.
///
///
[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 number of days to retain a manual snapshot. If the value is -1, the snapshot
/// is retained indefinitely. This setting doesn't change the retention period of existing
/// snapshots.
///
///
///
/// The value must be either -1 or an integer between 1 and 3,653.
///
///
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 MasterUsername.
///
/// The user name associated with the admin user account for the cluster that is being
/// created.
///
///
///
/// Constraints:
///
/// -
///
/// Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be
PUBLIC
.
///
/// -
///
/// Must contain only lowercase letters, numbers, underscore, plus sign, period (dot),
/// at symbol (@), or hyphen.
///
///
-
///
/// The first character must be a letter.
///
///
-
///
/// Must not contain a colon (:) or a slash (/).
///
///
-
///
/// Cannot be a reserved word. A list of reserved words can be found in Reserved
/// Words in the Amazon Redshift Database Developer Guide.
///
///
///
[AWSProperty(Required=true, Max=2147483647)]
public string MasterUsername
{
get { return this._masterUsername; }
set { this._masterUsername = value; }
}
// Check to see if MasterUsername property is set
internal bool IsSetMasterUsername()
{
return this._masterUsername != null;
}
///
/// Gets and sets the property MasterUserPassword.
///
/// The password associated with the admin user account for the cluster that is being
/// created.
///
///
///
/// 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(Required=true, 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 NodeType.
///
/// The node type to be provisioned for the cluster. For information about node types,
/// go to
/// Working with Clusters 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(Required=true, 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 number of compute nodes in the cluster. This parameter is required when the ClusterType
/// parameter is specified as multi-node
.
///
///
///
/// For information about determining how many nodes you need, go to
/// Working with Clusters in the Amazon Redshift Cluster Management Guide.
///
///
///
///
/// If you don't specify this parameter, you get a single-node cluster. When requesting
/// a multi-node cluster, you must specify the number of nodes that you want in the cluster.
///
///
///
/// Default: 1
///
///
///
/// Constraints: Value must be at least 1 and no more than 100.
///
///
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 port number on which the cluster accepts incoming connections.
///
///
///
/// The cluster is accessible only via the JDBC and ODBC connection strings. Part of the
/// connection string requires the port on which the cluster will listen for incoming
/// connections.
///
///
///
/// Default: 5439
///
///
///
/// Valid Values: 1150-65535
///
///
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 automated cluster maintenance can occur.
///
///
///
/// Format: ddd:hh24:mi-ddd:hh24:mi
///
///
///
/// Default: A 30-minute window selected at random from an 8-hour block of time per region,
/// occurring on a random day of the week. For more information about the time blocks
/// for each region, see Maintenance
/// Windows in Amazon Redshift Cluster Management Guide.
///
///
///
/// Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
///
///
///
/// Constraints: Minimum 30-minute window.
///
///
[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.
///
///
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 SnapshotScheduleIdentifier.
///
/// A unique identifier for the snapshot schedule.
///
///
[AWSProperty(Max=2147483647)]
public string SnapshotScheduleIdentifier
{
get { return this._snapshotScheduleIdentifier; }
set { this._snapshotScheduleIdentifier = value; }
}
// Check to see if SnapshotScheduleIdentifier property is set
internal bool IsSetSnapshotScheduleIdentifier()
{
return this._snapshotScheduleIdentifier != null;
}
///
/// Gets and sets the property Tags.
///
/// A list of tag instances.
///
///
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property VpcSecurityGroupIds.
///
/// A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.
///
///
///
/// Default: The default VPC security group is associated with the cluster.
///
///
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;
}
}
}