aws_sdk_redshift/operation/create_cluster/
_create_cluster_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p></p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq)]
6pub struct CreateClusterInput {
7    /// <p>The name of the first database to be created when the cluster is created.</p>
8    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
9    /// <p>Default: <code>dev</code></p>
10    /// <p>Constraints:</p>
11    /// <ul>
12    /// <li>
13    /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
14    /// <li>
15    /// <p>Must contain only lowercase letters.</p></li>
16    /// <li>
17    /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
18    /// </ul>
19    pub db_name: ::std::option::Option<::std::string::String>,
20    /// <p>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.</p>
21    /// <p>Constraints:</p>
22    /// <ul>
23    /// <li>
24    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
25    /// <li>
26    /// <p>Alphabetic characters must be lowercase.</p></li>
27    /// <li>
28    /// <p>First character must be a letter.</p></li>
29    /// <li>
30    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
31    /// <li>
32    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
33    /// </ul>
34    /// <p>Example: <code>myexamplecluster</code></p>
35    pub cluster_identifier: ::std::option::Option<::std::string::String>,
36    /// <p>The type of the cluster. When cluster type is specified as</p>
37    /// <ul>
38    /// <li>
39    /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
40    /// <li>
41    /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
42    /// </ul>
43    /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
44    /// <p>Default: <code>multi-node</code></p>
45    pub cluster_type: ::std::option::Option<::std::string::String>,
46    /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
47    /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
48    pub node_type: ::std::option::Option<::std::string::String>,
49    /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
50    /// <p>Constraints:</p>
51    /// <ul>
52    /// <li>
53    /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
54    /// <li>
55    /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
56    /// <li>
57    /// <p>The first character must be a letter.</p></li>
58    /// <li>
59    /// <p>Must not contain a colon (:) or a slash (/).</p></li>
60    /// <li>
61    /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
62    /// </ul>
63    pub master_username: ::std::option::Option<::std::string::String>,
64    /// <p>The password associated with the admin user account for the cluster that is being created.</p>
65    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
66    /// <p>Constraints:</p>
67    /// <ul>
68    /// <li>
69    /// <p>Must be between 8 and 64 characters in length.</p></li>
70    /// <li>
71    /// <p>Must contain at least one uppercase letter.</p></li>
72    /// <li>
73    /// <p>Must contain at least one lowercase letter.</p></li>
74    /// <li>
75    /// <p>Must contain one number.</p></li>
76    /// <li>
77    /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
78    /// </ul>
79    pub master_user_password: ::std::option::Option<::std::string::String>,
80    /// <p>A list of security groups to be associated with this cluster.</p>
81    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
82    pub cluster_security_groups: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
83    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
84    /// <p>Default: The default VPC security group is associated with the cluster.</p>
85    pub vpc_security_group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
86    /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
87    /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
88    pub cluster_subnet_group_name: ::std::option::Option<::std::string::String>,
89    /// <p>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.</p>
90    /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
91    /// <p>Example: <code>us-east-2d</code></p>
92    /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
93    pub availability_zone: ::std::option::Option<::std::string::String>,
94    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
95    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
96    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
97    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
98    /// <p>Constraints: Minimum 30-minute window.</p>
99    pub preferred_maintenance_window: ::std::option::Option<::std::string::String>,
100    /// <p>The name of the parameter group to be associated with this cluster.</p>
101    /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
102    /// <p>Constraints:</p>
103    /// <ul>
104    /// <li>
105    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
106    /// <li>
107    /// <p>First character must be a letter.</p></li>
108    /// <li>
109    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
110    /// </ul>
111    pub cluster_parameter_group_name: ::std::option::Option<::std::string::String>,
112    /// <p>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 <code>CreateClusterSnapshot</code>.</p>
113    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
114    /// <p>Default: <code>1</code></p>
115    /// <p>Constraints: Must be a value from 0 to 35.</p>
116    pub automated_snapshot_retention_period: ::std::option::Option<i32>,
117    /// <p>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.</p>
118    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
119    pub manual_snapshot_retention_period: ::std::option::Option<i32>,
120    /// <p>The port number on which the cluster accepts incoming connections.</p>
121    /// <p>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.</p>
122    /// <p>Default: <code>5439</code></p>
123    /// <p>Valid Values:</p>
124    /// <ul>
125    /// <li>
126    /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
127    /// <li>
128    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
129    /// </ul>
130    pub port: ::std::option::Option<i32>,
131    /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
132    /// <p>The version selected runs on all the nodes in the cluster.</p>
133    /// <p>Constraints: Only version 1.0 is currently available.</p>
134    /// <p>Example: <code>1.0</code></p>
135    pub cluster_version: ::std::option::Option<::std::string::String>,
136    /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
137    /// <p>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.</p>
138    /// <p>Default: <code>true</code></p>
139    pub allow_version_upgrade: ::std::option::Option<bool>,
140    /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
141    /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
142    /// <p>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.</p>
143    /// <p>Default: <code>1</code></p>
144    /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
145    pub number_of_nodes: ::std::option::Option<i32>,
146    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
147    /// <p>Default: false</p>
148    pub publicly_accessible: ::std::option::Option<bool>,
149    /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
150    /// <p>Default: true</p>
151    pub encrypted: ::std::option::Option<bool>,
152    /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
153    pub hsm_client_certificate_identifier: ::std::option::Option<::std::string::String>,
154    /// <p>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.</p>
155    pub hsm_configuration_identifier: ::std::option::Option<::std::string::String>,
156    /// <p>The Elastic IP (EIP) address for the cluster.</p>
157    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
158    pub elastic_ip: ::std::option::Option<::std::string::String>,
159    /// <p>A list of tag instances.</p>
160    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
161    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
162    pub kms_key_id: ::std::option::Option<::std::string::String>,
163    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
164    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
165    /// <p>Default: false</p>
166    pub enhanced_vpc_routing: ::std::option::Option<bool>,
167    /// <p>Reserved.</p>
168    pub additional_info: ::std::option::Option<::std::string::String>,
169    /// <p>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.</p>
170    /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
171    pub iam_roles: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
172    /// <p>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 <code>current</code> track.</p>
173    pub maintenance_track_name: ::std::option::Option<::std::string::String>,
174    /// <p>A unique identifier for the snapshot schedule.</p>
175    pub snapshot_schedule_identifier: ::std::option::Option<::std::string::String>,
176    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
177    pub availability_zone_relocation: ::std::option::Option<bool>,
178    /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
179    pub aqua_configuration_status: ::std::option::Option<crate::types::AquaConfigurationStatus>,
180    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
181    pub default_iam_role_arn: ::std::option::Option<::std::string::String>,
182    /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
183    pub load_sample_data: ::std::option::Option<::std::string::String>,
184    /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
185    pub manage_master_password: ::std::option::Option<bool>,
186    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
187    pub master_password_secret_kms_key_id: ::std::option::Option<::std::string::String>,
188    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
189    pub ip_address_type: ::std::option::Option<::std::string::String>,
190    /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
191    pub multi_az: ::std::option::Option<bool>,
192    /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
193    pub redshift_idc_application_arn: ::std::option::Option<::std::string::String>,
194}
195impl CreateClusterInput {
196    /// <p>The name of the first database to be created when the cluster is created.</p>
197    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
198    /// <p>Default: <code>dev</code></p>
199    /// <p>Constraints:</p>
200    /// <ul>
201    /// <li>
202    /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
203    /// <li>
204    /// <p>Must contain only lowercase letters.</p></li>
205    /// <li>
206    /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
207    /// </ul>
208    pub fn db_name(&self) -> ::std::option::Option<&str> {
209        self.db_name.as_deref()
210    }
211    /// <p>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.</p>
212    /// <p>Constraints:</p>
213    /// <ul>
214    /// <li>
215    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
216    /// <li>
217    /// <p>Alphabetic characters must be lowercase.</p></li>
218    /// <li>
219    /// <p>First character must be a letter.</p></li>
220    /// <li>
221    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
222    /// <li>
223    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
224    /// </ul>
225    /// <p>Example: <code>myexamplecluster</code></p>
226    pub fn cluster_identifier(&self) -> ::std::option::Option<&str> {
227        self.cluster_identifier.as_deref()
228    }
229    /// <p>The type of the cluster. When cluster type is specified as</p>
230    /// <ul>
231    /// <li>
232    /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
233    /// <li>
234    /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
235    /// </ul>
236    /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
237    /// <p>Default: <code>multi-node</code></p>
238    pub fn cluster_type(&self) -> ::std::option::Option<&str> {
239        self.cluster_type.as_deref()
240    }
241    /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
242    /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
243    pub fn node_type(&self) -> ::std::option::Option<&str> {
244        self.node_type.as_deref()
245    }
246    /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
247    /// <p>Constraints:</p>
248    /// <ul>
249    /// <li>
250    /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
251    /// <li>
252    /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
253    /// <li>
254    /// <p>The first character must be a letter.</p></li>
255    /// <li>
256    /// <p>Must not contain a colon (:) or a slash (/).</p></li>
257    /// <li>
258    /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
259    /// </ul>
260    pub fn master_username(&self) -> ::std::option::Option<&str> {
261        self.master_username.as_deref()
262    }
263    /// <p>The password associated with the admin user account for the cluster that is being created.</p>
264    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
265    /// <p>Constraints:</p>
266    /// <ul>
267    /// <li>
268    /// <p>Must be between 8 and 64 characters in length.</p></li>
269    /// <li>
270    /// <p>Must contain at least one uppercase letter.</p></li>
271    /// <li>
272    /// <p>Must contain at least one lowercase letter.</p></li>
273    /// <li>
274    /// <p>Must contain one number.</p></li>
275    /// <li>
276    /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
277    /// </ul>
278    pub fn master_user_password(&self) -> ::std::option::Option<&str> {
279        self.master_user_password.as_deref()
280    }
281    /// <p>A list of security groups to be associated with this cluster.</p>
282    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
283    ///
284    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.cluster_security_groups.is_none()`.
285    pub fn cluster_security_groups(&self) -> &[::std::string::String] {
286        self.cluster_security_groups.as_deref().unwrap_or_default()
287    }
288    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
289    /// <p>Default: The default VPC security group is associated with the cluster.</p>
290    ///
291    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.vpc_security_group_ids.is_none()`.
292    pub fn vpc_security_group_ids(&self) -> &[::std::string::String] {
293        self.vpc_security_group_ids.as_deref().unwrap_or_default()
294    }
295    /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
296    /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
297    pub fn cluster_subnet_group_name(&self) -> ::std::option::Option<&str> {
298        self.cluster_subnet_group_name.as_deref()
299    }
300    /// <p>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.</p>
301    /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
302    /// <p>Example: <code>us-east-2d</code></p>
303    /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
304    pub fn availability_zone(&self) -> ::std::option::Option<&str> {
305        self.availability_zone.as_deref()
306    }
307    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
308    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
309    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
310    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
311    /// <p>Constraints: Minimum 30-minute window.</p>
312    pub fn preferred_maintenance_window(&self) -> ::std::option::Option<&str> {
313        self.preferred_maintenance_window.as_deref()
314    }
315    /// <p>The name of the parameter group to be associated with this cluster.</p>
316    /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
317    /// <p>Constraints:</p>
318    /// <ul>
319    /// <li>
320    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
321    /// <li>
322    /// <p>First character must be a letter.</p></li>
323    /// <li>
324    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
325    /// </ul>
326    pub fn cluster_parameter_group_name(&self) -> ::std::option::Option<&str> {
327        self.cluster_parameter_group_name.as_deref()
328    }
329    /// <p>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 <code>CreateClusterSnapshot</code>.</p>
330    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
331    /// <p>Default: <code>1</code></p>
332    /// <p>Constraints: Must be a value from 0 to 35.</p>
333    pub fn automated_snapshot_retention_period(&self) -> ::std::option::Option<i32> {
334        self.automated_snapshot_retention_period
335    }
336    /// <p>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.</p>
337    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
338    pub fn manual_snapshot_retention_period(&self) -> ::std::option::Option<i32> {
339        self.manual_snapshot_retention_period
340    }
341    /// <p>The port number on which the cluster accepts incoming connections.</p>
342    /// <p>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.</p>
343    /// <p>Default: <code>5439</code></p>
344    /// <p>Valid Values:</p>
345    /// <ul>
346    /// <li>
347    /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
348    /// <li>
349    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
350    /// </ul>
351    pub fn port(&self) -> ::std::option::Option<i32> {
352        self.port
353    }
354    /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
355    /// <p>The version selected runs on all the nodes in the cluster.</p>
356    /// <p>Constraints: Only version 1.0 is currently available.</p>
357    /// <p>Example: <code>1.0</code></p>
358    pub fn cluster_version(&self) -> ::std::option::Option<&str> {
359        self.cluster_version.as_deref()
360    }
361    /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
362    /// <p>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.</p>
363    /// <p>Default: <code>true</code></p>
364    pub fn allow_version_upgrade(&self) -> ::std::option::Option<bool> {
365        self.allow_version_upgrade
366    }
367    /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
368    /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
369    /// <p>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.</p>
370    /// <p>Default: <code>1</code></p>
371    /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
372    pub fn number_of_nodes(&self) -> ::std::option::Option<i32> {
373        self.number_of_nodes
374    }
375    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
376    /// <p>Default: false</p>
377    pub fn publicly_accessible(&self) -> ::std::option::Option<bool> {
378        self.publicly_accessible
379    }
380    /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
381    /// <p>Default: true</p>
382    pub fn encrypted(&self) -> ::std::option::Option<bool> {
383        self.encrypted
384    }
385    /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
386    pub fn hsm_client_certificate_identifier(&self) -> ::std::option::Option<&str> {
387        self.hsm_client_certificate_identifier.as_deref()
388    }
389    /// <p>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.</p>
390    pub fn hsm_configuration_identifier(&self) -> ::std::option::Option<&str> {
391        self.hsm_configuration_identifier.as_deref()
392    }
393    /// <p>The Elastic IP (EIP) address for the cluster.</p>
394    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
395    pub fn elastic_ip(&self) -> ::std::option::Option<&str> {
396        self.elastic_ip.as_deref()
397    }
398    /// <p>A list of tag instances.</p>
399    ///
400    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
401    pub fn tags(&self) -> &[crate::types::Tag] {
402        self.tags.as_deref().unwrap_or_default()
403    }
404    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
405    pub fn kms_key_id(&self) -> ::std::option::Option<&str> {
406        self.kms_key_id.as_deref()
407    }
408    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
409    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
410    /// <p>Default: false</p>
411    pub fn enhanced_vpc_routing(&self) -> ::std::option::Option<bool> {
412        self.enhanced_vpc_routing
413    }
414    /// <p>Reserved.</p>
415    pub fn additional_info(&self) -> ::std::option::Option<&str> {
416        self.additional_info.as_deref()
417    }
418    /// <p>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.</p>
419    /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
420    ///
421    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.iam_roles.is_none()`.
422    pub fn iam_roles(&self) -> &[::std::string::String] {
423        self.iam_roles.as_deref().unwrap_or_default()
424    }
425    /// <p>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 <code>current</code> track.</p>
426    pub fn maintenance_track_name(&self) -> ::std::option::Option<&str> {
427        self.maintenance_track_name.as_deref()
428    }
429    /// <p>A unique identifier for the snapshot schedule.</p>
430    pub fn snapshot_schedule_identifier(&self) -> ::std::option::Option<&str> {
431        self.snapshot_schedule_identifier.as_deref()
432    }
433    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
434    pub fn availability_zone_relocation(&self) -> ::std::option::Option<bool> {
435        self.availability_zone_relocation
436    }
437    /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
438    pub fn aqua_configuration_status(&self) -> ::std::option::Option<&crate::types::AquaConfigurationStatus> {
439        self.aqua_configuration_status.as_ref()
440    }
441    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
442    pub fn default_iam_role_arn(&self) -> ::std::option::Option<&str> {
443        self.default_iam_role_arn.as_deref()
444    }
445    /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
446    pub fn load_sample_data(&self) -> ::std::option::Option<&str> {
447        self.load_sample_data.as_deref()
448    }
449    /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
450    pub fn manage_master_password(&self) -> ::std::option::Option<bool> {
451        self.manage_master_password
452    }
453    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
454    pub fn master_password_secret_kms_key_id(&self) -> ::std::option::Option<&str> {
455        self.master_password_secret_kms_key_id.as_deref()
456    }
457    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
458    pub fn ip_address_type(&self) -> ::std::option::Option<&str> {
459        self.ip_address_type.as_deref()
460    }
461    /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
462    pub fn multi_az(&self) -> ::std::option::Option<bool> {
463        self.multi_az
464    }
465    /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
466    pub fn redshift_idc_application_arn(&self) -> ::std::option::Option<&str> {
467        self.redshift_idc_application_arn.as_deref()
468    }
469}
470impl ::std::fmt::Debug for CreateClusterInput {
471    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
472        let mut formatter = f.debug_struct("CreateClusterInput");
473        formatter.field("db_name", &self.db_name);
474        formatter.field("cluster_identifier", &self.cluster_identifier);
475        formatter.field("cluster_type", &self.cluster_type);
476        formatter.field("node_type", &self.node_type);
477        formatter.field("master_username", &self.master_username);
478        formatter.field("master_user_password", &"*** Sensitive Data Redacted ***");
479        formatter.field("cluster_security_groups", &self.cluster_security_groups);
480        formatter.field("vpc_security_group_ids", &self.vpc_security_group_ids);
481        formatter.field("cluster_subnet_group_name", &self.cluster_subnet_group_name);
482        formatter.field("availability_zone", &self.availability_zone);
483        formatter.field("preferred_maintenance_window", &self.preferred_maintenance_window);
484        formatter.field("cluster_parameter_group_name", &self.cluster_parameter_group_name);
485        formatter.field("automated_snapshot_retention_period", &self.automated_snapshot_retention_period);
486        formatter.field("manual_snapshot_retention_period", &self.manual_snapshot_retention_period);
487        formatter.field("port", &self.port);
488        formatter.field("cluster_version", &self.cluster_version);
489        formatter.field("allow_version_upgrade", &self.allow_version_upgrade);
490        formatter.field("number_of_nodes", &self.number_of_nodes);
491        formatter.field("publicly_accessible", &self.publicly_accessible);
492        formatter.field("encrypted", &self.encrypted);
493        formatter.field("hsm_client_certificate_identifier", &self.hsm_client_certificate_identifier);
494        formatter.field("hsm_configuration_identifier", &self.hsm_configuration_identifier);
495        formatter.field("elastic_ip", &self.elastic_ip);
496        formatter.field("tags", &self.tags);
497        formatter.field("kms_key_id", &self.kms_key_id);
498        formatter.field("enhanced_vpc_routing", &self.enhanced_vpc_routing);
499        formatter.field("additional_info", &self.additional_info);
500        formatter.field("iam_roles", &self.iam_roles);
501        formatter.field("maintenance_track_name", &self.maintenance_track_name);
502        formatter.field("snapshot_schedule_identifier", &self.snapshot_schedule_identifier);
503        formatter.field("availability_zone_relocation", &self.availability_zone_relocation);
504        formatter.field("aqua_configuration_status", &self.aqua_configuration_status);
505        formatter.field("default_iam_role_arn", &self.default_iam_role_arn);
506        formatter.field("load_sample_data", &self.load_sample_data);
507        formatter.field("manage_master_password", &self.manage_master_password);
508        formatter.field("master_password_secret_kms_key_id", &self.master_password_secret_kms_key_id);
509        formatter.field("ip_address_type", &self.ip_address_type);
510        formatter.field("multi_az", &self.multi_az);
511        formatter.field("redshift_idc_application_arn", &self.redshift_idc_application_arn);
512        formatter.finish()
513    }
514}
515impl CreateClusterInput {
516    /// Creates a new builder-style object to manufacture [`CreateClusterInput`](crate::operation::create_cluster::CreateClusterInput).
517    pub fn builder() -> crate::operation::create_cluster::builders::CreateClusterInputBuilder {
518        crate::operation::create_cluster::builders::CreateClusterInputBuilder::default()
519    }
520}
521
522/// A builder for [`CreateClusterInput`](crate::operation::create_cluster::CreateClusterInput).
523#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default)]
524#[non_exhaustive]
525pub struct CreateClusterInputBuilder {
526    pub(crate) db_name: ::std::option::Option<::std::string::String>,
527    pub(crate) cluster_identifier: ::std::option::Option<::std::string::String>,
528    pub(crate) cluster_type: ::std::option::Option<::std::string::String>,
529    pub(crate) node_type: ::std::option::Option<::std::string::String>,
530    pub(crate) master_username: ::std::option::Option<::std::string::String>,
531    pub(crate) master_user_password: ::std::option::Option<::std::string::String>,
532    pub(crate) cluster_security_groups: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
533    pub(crate) vpc_security_group_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
534    pub(crate) cluster_subnet_group_name: ::std::option::Option<::std::string::String>,
535    pub(crate) availability_zone: ::std::option::Option<::std::string::String>,
536    pub(crate) preferred_maintenance_window: ::std::option::Option<::std::string::String>,
537    pub(crate) cluster_parameter_group_name: ::std::option::Option<::std::string::String>,
538    pub(crate) automated_snapshot_retention_period: ::std::option::Option<i32>,
539    pub(crate) manual_snapshot_retention_period: ::std::option::Option<i32>,
540    pub(crate) port: ::std::option::Option<i32>,
541    pub(crate) cluster_version: ::std::option::Option<::std::string::String>,
542    pub(crate) allow_version_upgrade: ::std::option::Option<bool>,
543    pub(crate) number_of_nodes: ::std::option::Option<i32>,
544    pub(crate) publicly_accessible: ::std::option::Option<bool>,
545    pub(crate) encrypted: ::std::option::Option<bool>,
546    pub(crate) hsm_client_certificate_identifier: ::std::option::Option<::std::string::String>,
547    pub(crate) hsm_configuration_identifier: ::std::option::Option<::std::string::String>,
548    pub(crate) elastic_ip: ::std::option::Option<::std::string::String>,
549    pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
550    pub(crate) kms_key_id: ::std::option::Option<::std::string::String>,
551    pub(crate) enhanced_vpc_routing: ::std::option::Option<bool>,
552    pub(crate) additional_info: ::std::option::Option<::std::string::String>,
553    pub(crate) iam_roles: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
554    pub(crate) maintenance_track_name: ::std::option::Option<::std::string::String>,
555    pub(crate) snapshot_schedule_identifier: ::std::option::Option<::std::string::String>,
556    pub(crate) availability_zone_relocation: ::std::option::Option<bool>,
557    pub(crate) aqua_configuration_status: ::std::option::Option<crate::types::AquaConfigurationStatus>,
558    pub(crate) default_iam_role_arn: ::std::option::Option<::std::string::String>,
559    pub(crate) load_sample_data: ::std::option::Option<::std::string::String>,
560    pub(crate) manage_master_password: ::std::option::Option<bool>,
561    pub(crate) master_password_secret_kms_key_id: ::std::option::Option<::std::string::String>,
562    pub(crate) ip_address_type: ::std::option::Option<::std::string::String>,
563    pub(crate) multi_az: ::std::option::Option<bool>,
564    pub(crate) redshift_idc_application_arn: ::std::option::Option<::std::string::String>,
565}
566impl CreateClusterInputBuilder {
567    /// <p>The name of the first database to be created when the cluster is created.</p>
568    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
569    /// <p>Default: <code>dev</code></p>
570    /// <p>Constraints:</p>
571    /// <ul>
572    /// <li>
573    /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
574    /// <li>
575    /// <p>Must contain only lowercase letters.</p></li>
576    /// <li>
577    /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
578    /// </ul>
579    pub fn db_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
580        self.db_name = ::std::option::Option::Some(input.into());
581        self
582    }
583    /// <p>The name of the first database to be created when the cluster is created.</p>
584    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
585    /// <p>Default: <code>dev</code></p>
586    /// <p>Constraints:</p>
587    /// <ul>
588    /// <li>
589    /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
590    /// <li>
591    /// <p>Must contain only lowercase letters.</p></li>
592    /// <li>
593    /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
594    /// </ul>
595    pub fn set_db_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
596        self.db_name = input;
597        self
598    }
599    /// <p>The name of the first database to be created when the cluster is created.</p>
600    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html">Create a Database</a> in the Amazon Redshift Database Developer Guide.</p>
601    /// <p>Default: <code>dev</code></p>
602    /// <p>Constraints:</p>
603    /// <ul>
604    /// <li>
605    /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
606    /// <li>
607    /// <p>Must contain only lowercase letters.</p></li>
608    /// <li>
609    /// <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
610    /// </ul>
611    pub fn get_db_name(&self) -> &::std::option::Option<::std::string::String> {
612        &self.db_name
613    }
614    /// <p>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.</p>
615    /// <p>Constraints:</p>
616    /// <ul>
617    /// <li>
618    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
619    /// <li>
620    /// <p>Alphabetic characters must be lowercase.</p></li>
621    /// <li>
622    /// <p>First character must be a letter.</p></li>
623    /// <li>
624    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
625    /// <li>
626    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
627    /// </ul>
628    /// <p>Example: <code>myexamplecluster</code></p>
629    /// This field is required.
630    pub fn cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
631        self.cluster_identifier = ::std::option::Option::Some(input.into());
632        self
633    }
634    /// <p>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.</p>
635    /// <p>Constraints:</p>
636    /// <ul>
637    /// <li>
638    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
639    /// <li>
640    /// <p>Alphabetic characters must be lowercase.</p></li>
641    /// <li>
642    /// <p>First character must be a letter.</p></li>
643    /// <li>
644    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
645    /// <li>
646    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
647    /// </ul>
648    /// <p>Example: <code>myexamplecluster</code></p>
649    pub fn set_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
650        self.cluster_identifier = input;
651        self
652    }
653    /// <p>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.</p>
654    /// <p>Constraints:</p>
655    /// <ul>
656    /// <li>
657    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
658    /// <li>
659    /// <p>Alphabetic characters must be lowercase.</p></li>
660    /// <li>
661    /// <p>First character must be a letter.</p></li>
662    /// <li>
663    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
664    /// <li>
665    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
666    /// </ul>
667    /// <p>Example: <code>myexamplecluster</code></p>
668    pub fn get_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
669        &self.cluster_identifier
670    }
671    /// <p>The type of the cluster. When cluster type is specified as</p>
672    /// <ul>
673    /// <li>
674    /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
675    /// <li>
676    /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
677    /// </ul>
678    /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
679    /// <p>Default: <code>multi-node</code></p>
680    pub fn cluster_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
681        self.cluster_type = ::std::option::Option::Some(input.into());
682        self
683    }
684    /// <p>The type of the cluster. When cluster type is specified as</p>
685    /// <ul>
686    /// <li>
687    /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
688    /// <li>
689    /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
690    /// </ul>
691    /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
692    /// <p>Default: <code>multi-node</code></p>
693    pub fn set_cluster_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
694        self.cluster_type = input;
695        self
696    }
697    /// <p>The type of the cluster. When cluster type is specified as</p>
698    /// <ul>
699    /// <li>
700    /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
701    /// <li>
702    /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
703    /// </ul>
704    /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
705    /// <p>Default: <code>multi-node</code></p>
706    pub fn get_cluster_type(&self) -> &::std::option::Option<::std::string::String> {
707        &self.cluster_type
708    }
709    /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
710    /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
711    /// This field is required.
712    pub fn node_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
713        self.node_type = ::std::option::Option::Some(input.into());
714        self
715    }
716    /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
717    /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
718    pub fn set_node_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
719        self.node_type = input;
720        self
721    }
722    /// <p>The node type to be provisioned for the cluster. For information about node types, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
723    /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
724    pub fn get_node_type(&self) -> &::std::option::Option<::std::string::String> {
725        &self.node_type
726    }
727    /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
728    /// <p>Constraints:</p>
729    /// <ul>
730    /// <li>
731    /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
732    /// <li>
733    /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
734    /// <li>
735    /// <p>The first character must be a letter.</p></li>
736    /// <li>
737    /// <p>Must not contain a colon (:) or a slash (/).</p></li>
738    /// <li>
739    /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
740    /// </ul>
741    /// This field is required.
742    pub fn master_username(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
743        self.master_username = ::std::option::Option::Some(input.into());
744        self
745    }
746    /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
747    /// <p>Constraints:</p>
748    /// <ul>
749    /// <li>
750    /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
751    /// <li>
752    /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
753    /// <li>
754    /// <p>The first character must be a letter.</p></li>
755    /// <li>
756    /// <p>Must not contain a colon (:) or a slash (/).</p></li>
757    /// <li>
758    /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
759    /// </ul>
760    pub fn set_master_username(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
761        self.master_username = input;
762        self
763    }
764    /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
765    /// <p>Constraints:</p>
766    /// <ul>
767    /// <li>
768    /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
769    /// <li>
770    /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
771    /// <li>
772    /// <p>The first character must be a letter.</p></li>
773    /// <li>
774    /// <p>Must not contain a colon (:) or a slash (/).</p></li>
775    /// <li>
776    /// <p>Cannot be a reserved word. A list of reserved words can be found in <a href="https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p></li>
777    /// </ul>
778    pub fn get_master_username(&self) -> &::std::option::Option<::std::string::String> {
779        &self.master_username
780    }
781    /// <p>The password associated with the admin user account for the cluster that is being created.</p>
782    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
783    /// <p>Constraints:</p>
784    /// <ul>
785    /// <li>
786    /// <p>Must be between 8 and 64 characters in length.</p></li>
787    /// <li>
788    /// <p>Must contain at least one uppercase letter.</p></li>
789    /// <li>
790    /// <p>Must contain at least one lowercase letter.</p></li>
791    /// <li>
792    /// <p>Must contain one number.</p></li>
793    /// <li>
794    /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
795    /// </ul>
796    pub fn master_user_password(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
797        self.master_user_password = ::std::option::Option::Some(input.into());
798        self
799    }
800    /// <p>The password associated with the admin user account for the cluster that is being created.</p>
801    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
802    /// <p>Constraints:</p>
803    /// <ul>
804    /// <li>
805    /// <p>Must be between 8 and 64 characters in length.</p></li>
806    /// <li>
807    /// <p>Must contain at least one uppercase letter.</p></li>
808    /// <li>
809    /// <p>Must contain at least one lowercase letter.</p></li>
810    /// <li>
811    /// <p>Must contain one number.</p></li>
812    /// <li>
813    /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
814    /// </ul>
815    pub fn set_master_user_password(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
816        self.master_user_password = input;
817        self
818    }
819    /// <p>The password associated with the admin user account for the cluster that is being created.</p>
820    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
821    /// <p>Constraints:</p>
822    /// <ul>
823    /// <li>
824    /// <p>Must be between 8 and 64 characters in length.</p></li>
825    /// <li>
826    /// <p>Must contain at least one uppercase letter.</p></li>
827    /// <li>
828    /// <p>Must contain at least one lowercase letter.</p></li>
829    /// <li>
830    /// <p>Must contain one number.</p></li>
831    /// <li>
832    /// <p>Can be any printable ASCII character (ASCII code 33-126) except <code>'</code> (single quote), <code>"</code> (double quote), <code>\</code>, <code>/</code>, or <code>@</code>.</p></li>
833    /// </ul>
834    pub fn get_master_user_password(&self) -> &::std::option::Option<::std::string::String> {
835        &self.master_user_password
836    }
837    /// Appends an item to `cluster_security_groups`.
838    ///
839    /// To override the contents of this collection use [`set_cluster_security_groups`](Self::set_cluster_security_groups).
840    ///
841    /// <p>A list of security groups to be associated with this cluster.</p>
842    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
843    pub fn cluster_security_groups(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
844        let mut v = self.cluster_security_groups.unwrap_or_default();
845        v.push(input.into());
846        self.cluster_security_groups = ::std::option::Option::Some(v);
847        self
848    }
849    /// <p>A list of security groups to be associated with this cluster.</p>
850    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
851    pub fn set_cluster_security_groups(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
852        self.cluster_security_groups = input;
853        self
854    }
855    /// <p>A list of security groups to be associated with this cluster.</p>
856    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
857    pub fn get_cluster_security_groups(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
858        &self.cluster_security_groups
859    }
860    /// Appends an item to `vpc_security_group_ids`.
861    ///
862    /// To override the contents of this collection use [`set_vpc_security_group_ids`](Self::set_vpc_security_group_ids).
863    ///
864    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
865    /// <p>Default: The default VPC security group is associated with the cluster.</p>
866    pub fn vpc_security_group_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
867        let mut v = self.vpc_security_group_ids.unwrap_or_default();
868        v.push(input.into());
869        self.vpc_security_group_ids = ::std::option::Option::Some(v);
870        self
871    }
872    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
873    /// <p>Default: The default VPC security group is associated with the cluster.</p>
874    pub fn set_vpc_security_group_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
875        self.vpc_security_group_ids = input;
876        self
877    }
878    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
879    /// <p>Default: The default VPC security group is associated with the cluster.</p>
880    pub fn get_vpc_security_group_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
881        &self.vpc_security_group_ids
882    }
883    /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
884    /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
885    pub fn cluster_subnet_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
886        self.cluster_subnet_group_name = ::std::option::Option::Some(input.into());
887        self
888    }
889    /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
890    /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
891    pub fn set_cluster_subnet_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
892        self.cluster_subnet_group_name = input;
893        self
894    }
895    /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
896    /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
897    pub fn get_cluster_subnet_group_name(&self) -> &::std::option::Option<::std::string::String> {
898        &self.cluster_subnet_group_name
899    }
900    /// <p>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.</p>
901    /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
902    /// <p>Example: <code>us-east-2d</code></p>
903    /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
904    pub fn availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
905        self.availability_zone = ::std::option::Option::Some(input.into());
906        self
907    }
908    /// <p>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.</p>
909    /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
910    /// <p>Example: <code>us-east-2d</code></p>
911    /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
912    pub fn set_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
913        self.availability_zone = input;
914        self
915    }
916    /// <p>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.</p>
917    /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
918    /// <p>Example: <code>us-east-2d</code></p>
919    /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
920    pub fn get_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
921        &self.availability_zone
922    }
923    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
924    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
925    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
926    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
927    /// <p>Constraints: Minimum 30-minute window.</p>
928    pub fn preferred_maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
929        self.preferred_maintenance_window = ::std::option::Option::Some(input.into());
930        self
931    }
932    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
933    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
934    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
935    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
936    /// <p>Constraints: Minimum 30-minute window.</p>
937    pub fn set_preferred_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
938        self.preferred_maintenance_window = input;
939        self
940    }
941    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
942    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
943    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
944    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
945    /// <p>Constraints: Minimum 30-minute window.</p>
946    pub fn get_preferred_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
947        &self.preferred_maintenance_window
948    }
949    /// <p>The name of the parameter group to be associated with this cluster.</p>
950    /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
951    /// <p>Constraints:</p>
952    /// <ul>
953    /// <li>
954    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
955    /// <li>
956    /// <p>First character must be a letter.</p></li>
957    /// <li>
958    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
959    /// </ul>
960    pub fn cluster_parameter_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
961        self.cluster_parameter_group_name = ::std::option::Option::Some(input.into());
962        self
963    }
964    /// <p>The name of the parameter group to be associated with this cluster.</p>
965    /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
966    /// <p>Constraints:</p>
967    /// <ul>
968    /// <li>
969    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
970    /// <li>
971    /// <p>First character must be a letter.</p></li>
972    /// <li>
973    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
974    /// </ul>
975    pub fn set_cluster_parameter_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
976        self.cluster_parameter_group_name = input;
977        self
978    }
979    /// <p>The name of the parameter group to be associated with this cluster.</p>
980    /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a></p>
981    /// <p>Constraints:</p>
982    /// <ul>
983    /// <li>
984    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
985    /// <li>
986    /// <p>First character must be a letter.</p></li>
987    /// <li>
988    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
989    /// </ul>
990    pub fn get_cluster_parameter_group_name(&self) -> &::std::option::Option<::std::string::String> {
991        &self.cluster_parameter_group_name
992    }
993    /// <p>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 <code>CreateClusterSnapshot</code>.</p>
994    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
995    /// <p>Default: <code>1</code></p>
996    /// <p>Constraints: Must be a value from 0 to 35.</p>
997    pub fn automated_snapshot_retention_period(mut self, input: i32) -> Self {
998        self.automated_snapshot_retention_period = ::std::option::Option::Some(input);
999        self
1000    }
1001    /// <p>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 <code>CreateClusterSnapshot</code>.</p>
1002    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
1003    /// <p>Default: <code>1</code></p>
1004    /// <p>Constraints: Must be a value from 0 to 35.</p>
1005    pub fn set_automated_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
1006        self.automated_snapshot_retention_period = input;
1007        self
1008    }
1009    /// <p>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 <code>CreateClusterSnapshot</code>.</p>
1010    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
1011    /// <p>Default: <code>1</code></p>
1012    /// <p>Constraints: Must be a value from 0 to 35.</p>
1013    pub fn get_automated_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
1014        &self.automated_snapshot_retention_period
1015    }
1016    /// <p>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.</p>
1017    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
1018    pub fn manual_snapshot_retention_period(mut self, input: i32) -> Self {
1019        self.manual_snapshot_retention_period = ::std::option::Option::Some(input);
1020        self
1021    }
1022    /// <p>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.</p>
1023    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
1024    pub fn set_manual_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
1025        self.manual_snapshot_retention_period = input;
1026        self
1027    }
1028    /// <p>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.</p>
1029    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
1030    pub fn get_manual_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
1031        &self.manual_snapshot_retention_period
1032    }
1033    /// <p>The port number on which the cluster accepts incoming connections.</p>
1034    /// <p>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.</p>
1035    /// <p>Default: <code>5439</code></p>
1036    /// <p>Valid Values:</p>
1037    /// <ul>
1038    /// <li>
1039    /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
1040    /// <li>
1041    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
1042    /// </ul>
1043    pub fn port(mut self, input: i32) -> Self {
1044        self.port = ::std::option::Option::Some(input);
1045        self
1046    }
1047    /// <p>The port number on which the cluster accepts incoming connections.</p>
1048    /// <p>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.</p>
1049    /// <p>Default: <code>5439</code></p>
1050    /// <p>Valid Values:</p>
1051    /// <ul>
1052    /// <li>
1053    /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
1054    /// <li>
1055    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
1056    /// </ul>
1057    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
1058        self.port = input;
1059        self
1060    }
1061    /// <p>The port number on which the cluster accepts incoming connections.</p>
1062    /// <p>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.</p>
1063    /// <p>Default: <code>5439</code></p>
1064    /// <p>Valid Values:</p>
1065    /// <ul>
1066    /// <li>
1067    /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
1068    /// <li>
1069    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
1070    /// </ul>
1071    pub fn get_port(&self) -> &::std::option::Option<i32> {
1072        &self.port
1073    }
1074    /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
1075    /// <p>The version selected runs on all the nodes in the cluster.</p>
1076    /// <p>Constraints: Only version 1.0 is currently available.</p>
1077    /// <p>Example: <code>1.0</code></p>
1078    pub fn cluster_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1079        self.cluster_version = ::std::option::Option::Some(input.into());
1080        self
1081    }
1082    /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
1083    /// <p>The version selected runs on all the nodes in the cluster.</p>
1084    /// <p>Constraints: Only version 1.0 is currently available.</p>
1085    /// <p>Example: <code>1.0</code></p>
1086    pub fn set_cluster_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1087        self.cluster_version = input;
1088        self
1089    }
1090    /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
1091    /// <p>The version selected runs on all the nodes in the cluster.</p>
1092    /// <p>Constraints: Only version 1.0 is currently available.</p>
1093    /// <p>Example: <code>1.0</code></p>
1094    pub fn get_cluster_version(&self) -> &::std::option::Option<::std::string::String> {
1095        &self.cluster_version
1096    }
1097    /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
1098    /// <p>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.</p>
1099    /// <p>Default: <code>true</code></p>
1100    pub fn allow_version_upgrade(mut self, input: bool) -> Self {
1101        self.allow_version_upgrade = ::std::option::Option::Some(input);
1102        self
1103    }
1104    /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
1105    /// <p>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.</p>
1106    /// <p>Default: <code>true</code></p>
1107    pub fn set_allow_version_upgrade(mut self, input: ::std::option::Option<bool>) -> Self {
1108        self.allow_version_upgrade = input;
1109        self
1110    }
1111    /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
1112    /// <p>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.</p>
1113    /// <p>Default: <code>true</code></p>
1114    pub fn get_allow_version_upgrade(&self) -> &::std::option::Option<bool> {
1115        &self.allow_version_upgrade
1116    }
1117    /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
1118    /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1119    /// <p>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.</p>
1120    /// <p>Default: <code>1</code></p>
1121    /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
1122    pub fn number_of_nodes(mut self, input: i32) -> Self {
1123        self.number_of_nodes = ::std::option::Option::Some(input);
1124        self
1125    }
1126    /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
1127    /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1128    /// <p>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.</p>
1129    /// <p>Default: <code>1</code></p>
1130    /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
1131    pub fn set_number_of_nodes(mut self, input: ::std::option::Option<i32>) -> Self {
1132        self.number_of_nodes = input;
1133        self
1134    }
1135    /// <p>The number of compute nodes in the cluster. This parameter is required when the <b>ClusterType</b> parameter is specified as <code>multi-node</code>.</p>
1136    /// <p>For information about determining how many nodes you need, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1137    /// <p>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.</p>
1138    /// <p>Default: <code>1</code></p>
1139    /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
1140    pub fn get_number_of_nodes(&self) -> &::std::option::Option<i32> {
1141        &self.number_of_nodes
1142    }
1143    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
1144    /// <p>Default: false</p>
1145    pub fn publicly_accessible(mut self, input: bool) -> Self {
1146        self.publicly_accessible = ::std::option::Option::Some(input);
1147        self
1148    }
1149    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
1150    /// <p>Default: false</p>
1151    pub fn set_publicly_accessible(mut self, input: ::std::option::Option<bool>) -> Self {
1152        self.publicly_accessible = input;
1153        self
1154    }
1155    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
1156    /// <p>Default: false</p>
1157    pub fn get_publicly_accessible(&self) -> &::std::option::Option<bool> {
1158        &self.publicly_accessible
1159    }
1160    /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
1161    /// <p>Default: true</p>
1162    pub fn encrypted(mut self, input: bool) -> Self {
1163        self.encrypted = ::std::option::Option::Some(input);
1164        self
1165    }
1166    /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
1167    /// <p>Default: true</p>
1168    pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
1169        self.encrypted = input;
1170        self
1171    }
1172    /// <p>If <code>true</code>, the data in the cluster is encrypted at rest. If you set the value on this parameter to <code>false</code>, the request will fail.</p>
1173    /// <p>Default: true</p>
1174    pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
1175        &self.encrypted
1176    }
1177    /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
1178    pub fn hsm_client_certificate_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1179        self.hsm_client_certificate_identifier = ::std::option::Option::Some(input.into());
1180        self
1181    }
1182    /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
1183    pub fn set_hsm_client_certificate_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1184        self.hsm_client_certificate_identifier = input;
1185        self
1186    }
1187    /// <p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>
1188    pub fn get_hsm_client_certificate_identifier(&self) -> &::std::option::Option<::std::string::String> {
1189        &self.hsm_client_certificate_identifier
1190    }
1191    /// <p>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.</p>
1192    pub fn hsm_configuration_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1193        self.hsm_configuration_identifier = ::std::option::Option::Some(input.into());
1194        self
1195    }
1196    /// <p>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.</p>
1197    pub fn set_hsm_configuration_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1198        self.hsm_configuration_identifier = input;
1199        self
1200    }
1201    /// <p>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.</p>
1202    pub fn get_hsm_configuration_identifier(&self) -> &::std::option::Option<::std::string::String> {
1203        &self.hsm_configuration_identifier
1204    }
1205    /// <p>The Elastic IP (EIP) address for the cluster.</p>
1206    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
1207    pub fn elastic_ip(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1208        self.elastic_ip = ::std::option::Option::Some(input.into());
1209        self
1210    }
1211    /// <p>The Elastic IP (EIP) address for the cluster.</p>
1212    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
1213    pub fn set_elastic_ip(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1214        self.elastic_ip = input;
1215        self
1216    }
1217    /// <p>The Elastic IP (EIP) address for the cluster.</p>
1218    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>
1219    pub fn get_elastic_ip(&self) -> &::std::option::Option<::std::string::String> {
1220        &self.elastic_ip
1221    }
1222    /// Appends an item to `tags`.
1223    ///
1224    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
1225    ///
1226    /// <p>A list of tag instances.</p>
1227    pub fn tags(mut self, input: crate::types::Tag) -> Self {
1228        let mut v = self.tags.unwrap_or_default();
1229        v.push(input);
1230        self.tags = ::std::option::Option::Some(v);
1231        self
1232    }
1233    /// <p>A list of tag instances.</p>
1234    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
1235        self.tags = input;
1236        self
1237    }
1238    /// <p>A list of tag instances.</p>
1239    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
1240        &self.tags
1241    }
1242    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
1243    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1244        self.kms_key_id = ::std::option::Option::Some(input.into());
1245        self
1246    }
1247    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
1248    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1249        self.kms_key_id = input;
1250        self
1251    }
1252    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
1253    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
1254        &self.kms_key_id
1255    }
1256    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
1257    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
1258    /// <p>Default: false</p>
1259    pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
1260        self.enhanced_vpc_routing = ::std::option::Option::Some(input);
1261        self
1262    }
1263    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
1264    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
1265    /// <p>Default: false</p>
1266    pub fn set_enhanced_vpc_routing(mut self, input: ::std::option::Option<bool>) -> Self {
1267        self.enhanced_vpc_routing = input;
1268        self
1269    }
1270    /// <p>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 <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p>
1271    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
1272    /// <p>Default: false</p>
1273    pub fn get_enhanced_vpc_routing(&self) -> &::std::option::Option<bool> {
1274        &self.enhanced_vpc_routing
1275    }
1276    /// <p>Reserved.</p>
1277    pub fn additional_info(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1278        self.additional_info = ::std::option::Option::Some(input.into());
1279        self
1280    }
1281    /// <p>Reserved.</p>
1282    pub fn set_additional_info(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1283        self.additional_info = input;
1284        self
1285    }
1286    /// <p>Reserved.</p>
1287    pub fn get_additional_info(&self) -> &::std::option::Option<::std::string::String> {
1288        &self.additional_info
1289    }
1290    /// Appends an item to `iam_roles`.
1291    ///
1292    /// To override the contents of this collection use [`set_iam_roles`](Self::set_iam_roles).
1293    ///
1294    /// <p>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.</p>
1295    /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1296    pub fn iam_roles(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1297        let mut v = self.iam_roles.unwrap_or_default();
1298        v.push(input.into());
1299        self.iam_roles = ::std::option::Option::Some(v);
1300        self
1301    }
1302    /// <p>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.</p>
1303    /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1304    pub fn set_iam_roles(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
1305        self.iam_roles = input;
1306        self
1307    }
1308    /// <p>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.</p>
1309    /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
1310    pub fn get_iam_roles(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
1311        &self.iam_roles
1312    }
1313    /// <p>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 <code>current</code> track.</p>
1314    pub fn maintenance_track_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1315        self.maintenance_track_name = ::std::option::Option::Some(input.into());
1316        self
1317    }
1318    /// <p>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 <code>current</code> track.</p>
1319    pub fn set_maintenance_track_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1320        self.maintenance_track_name = input;
1321        self
1322    }
1323    /// <p>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 <code>current</code> track.</p>
1324    pub fn get_maintenance_track_name(&self) -> &::std::option::Option<::std::string::String> {
1325        &self.maintenance_track_name
1326    }
1327    /// <p>A unique identifier for the snapshot schedule.</p>
1328    pub fn snapshot_schedule_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1329        self.snapshot_schedule_identifier = ::std::option::Option::Some(input.into());
1330        self
1331    }
1332    /// <p>A unique identifier for the snapshot schedule.</p>
1333    pub fn set_snapshot_schedule_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1334        self.snapshot_schedule_identifier = input;
1335        self
1336    }
1337    /// <p>A unique identifier for the snapshot schedule.</p>
1338    pub fn get_snapshot_schedule_identifier(&self) -> &::std::option::Option<::std::string::String> {
1339        &self.snapshot_schedule_identifier
1340    }
1341    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
1342    pub fn availability_zone_relocation(mut self, input: bool) -> Self {
1343        self.availability_zone_relocation = ::std::option::Option::Some(input);
1344        self
1345    }
1346    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
1347    pub fn set_availability_zone_relocation(mut self, input: ::std::option::Option<bool>) -> Self {
1348        self.availability_zone_relocation = input;
1349        self
1350    }
1351    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
1352    pub fn get_availability_zone_relocation(&self) -> &::std::option::Option<bool> {
1353        &self.availability_zone_relocation
1354    }
1355    /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
1356    pub fn aqua_configuration_status(mut self, input: crate::types::AquaConfigurationStatus) -> Self {
1357        self.aqua_configuration_status = ::std::option::Option::Some(input);
1358        self
1359    }
1360    /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
1361    pub fn set_aqua_configuration_status(mut self, input: ::std::option::Option<crate::types::AquaConfigurationStatus>) -> Self {
1362        self.aqua_configuration_status = input;
1363        self
1364    }
1365    /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
1366    pub fn get_aqua_configuration_status(&self) -> &::std::option::Option<crate::types::AquaConfigurationStatus> {
1367        &self.aqua_configuration_status
1368    }
1369    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
1370    pub fn default_iam_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1371        self.default_iam_role_arn = ::std::option::Option::Some(input.into());
1372        self
1373    }
1374    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
1375    pub fn set_default_iam_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1376        self.default_iam_role_arn = input;
1377        self
1378    }
1379    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
1380    pub fn get_default_iam_role_arn(&self) -> &::std::option::Option<::std::string::String> {
1381        &self.default_iam_role_arn
1382    }
1383    /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
1384    pub fn load_sample_data(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1385        self.load_sample_data = ::std::option::Option::Some(input.into());
1386        self
1387    }
1388    /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
1389    pub fn set_load_sample_data(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1390        self.load_sample_data = input;
1391        self
1392    }
1393    /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
1394    pub fn get_load_sample_data(&self) -> &::std::option::Option<::std::string::String> {
1395        &self.load_sample_data
1396    }
1397    /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1398    pub fn manage_master_password(mut self, input: bool) -> Self {
1399        self.manage_master_password = ::std::option::Option::Some(input);
1400        self
1401    }
1402    /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1403    pub fn set_manage_master_password(mut self, input: ::std::option::Option<bool>) -> Self {
1404        self.manage_master_password = input;
1405        self
1406    }
1407    /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage this cluster's admin credentials. You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is true. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses <code>MasterUserPassword</code> for the admin user account's password.</p>
1408    pub fn get_manage_master_password(&self) -> &::std::option::Option<bool> {
1409        &self.manage_master_password
1410    }
1411    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1412    pub fn master_password_secret_kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1413        self.master_password_secret_kms_key_id = ::std::option::Option::Some(input.into());
1414        self
1415    }
1416    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1417    pub fn set_master_password_secret_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1418        self.master_password_secret_kms_key_id = input;
1419        self
1420    }
1421    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret. You can only use this parameter if <code>ManageMasterPassword</code> is true.</p>
1422    pub fn get_master_password_secret_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
1423        &self.master_password_secret_kms_key_id
1424    }
1425    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1426    pub fn ip_address_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1427        self.ip_address_type = ::std::option::Option::Some(input.into());
1428        self
1429    }
1430    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1431    pub fn set_ip_address_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1432        self.ip_address_type = input;
1433        self
1434    }
1435    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
1436    pub fn get_ip_address_type(&self) -> &::std::option::Option<::std::string::String> {
1437        &self.ip_address_type
1438    }
1439    /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
1440    pub fn multi_az(mut self, input: bool) -> Self {
1441        self.multi_az = ::std::option::Option::Some(input);
1442        self
1443    }
1444    /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
1445    pub fn set_multi_az(mut self, input: ::std::option::Option<bool>) -> Self {
1446        self.multi_az = input;
1447        self
1448    }
1449    /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
1450    pub fn get_multi_az(&self) -> &::std::option::Option<bool> {
1451        &self.multi_az
1452    }
1453    /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1454    pub fn redshift_idc_application_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1455        self.redshift_idc_application_arn = ::std::option::Option::Some(input.into());
1456        self
1457    }
1458    /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1459    pub fn set_redshift_idc_application_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1460        self.redshift_idc_application_arn = input;
1461        self
1462    }
1463    /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1464    pub fn get_redshift_idc_application_arn(&self) -> &::std::option::Option<::std::string::String> {
1465        &self.redshift_idc_application_arn
1466    }
1467    /// Consumes the builder and constructs a [`CreateClusterInput`](crate::operation::create_cluster::CreateClusterInput).
1468    pub fn build(
1469        self,
1470    ) -> ::std::result::Result<crate::operation::create_cluster::CreateClusterInput, ::aws_smithy_types::error::operation::BuildError> {
1471        ::std::result::Result::Ok(crate::operation::create_cluster::CreateClusterInput {
1472            db_name: self.db_name,
1473            cluster_identifier: self.cluster_identifier,
1474            cluster_type: self.cluster_type,
1475            node_type: self.node_type,
1476            master_username: self.master_username,
1477            master_user_password: self.master_user_password,
1478            cluster_security_groups: self.cluster_security_groups,
1479            vpc_security_group_ids: self.vpc_security_group_ids,
1480            cluster_subnet_group_name: self.cluster_subnet_group_name,
1481            availability_zone: self.availability_zone,
1482            preferred_maintenance_window: self.preferred_maintenance_window,
1483            cluster_parameter_group_name: self.cluster_parameter_group_name,
1484            automated_snapshot_retention_period: self.automated_snapshot_retention_period,
1485            manual_snapshot_retention_period: self.manual_snapshot_retention_period,
1486            port: self.port,
1487            cluster_version: self.cluster_version,
1488            allow_version_upgrade: self.allow_version_upgrade,
1489            number_of_nodes: self.number_of_nodes,
1490            publicly_accessible: self.publicly_accessible,
1491            encrypted: self.encrypted,
1492            hsm_client_certificate_identifier: self.hsm_client_certificate_identifier,
1493            hsm_configuration_identifier: self.hsm_configuration_identifier,
1494            elastic_ip: self.elastic_ip,
1495            tags: self.tags,
1496            kms_key_id: self.kms_key_id,
1497            enhanced_vpc_routing: self.enhanced_vpc_routing,
1498            additional_info: self.additional_info,
1499            iam_roles: self.iam_roles,
1500            maintenance_track_name: self.maintenance_track_name,
1501            snapshot_schedule_identifier: self.snapshot_schedule_identifier,
1502            availability_zone_relocation: self.availability_zone_relocation,
1503            aqua_configuration_status: self.aqua_configuration_status,
1504            default_iam_role_arn: self.default_iam_role_arn,
1505            load_sample_data: self.load_sample_data,
1506            manage_master_password: self.manage_master_password,
1507            master_password_secret_kms_key_id: self.master_password_secret_kms_key_id,
1508            ip_address_type: self.ip_address_type,
1509            multi_az: self.multi_az,
1510            redshift_idc_application_arn: self.redshift_idc_application_arn,
1511        })
1512    }
1513}
1514impl ::std::fmt::Debug for CreateClusterInputBuilder {
1515    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1516        let mut formatter = f.debug_struct("CreateClusterInputBuilder");
1517        formatter.field("db_name", &self.db_name);
1518        formatter.field("cluster_identifier", &self.cluster_identifier);
1519        formatter.field("cluster_type", &self.cluster_type);
1520        formatter.field("node_type", &self.node_type);
1521        formatter.field("master_username", &self.master_username);
1522        formatter.field("master_user_password", &"*** Sensitive Data Redacted ***");
1523        formatter.field("cluster_security_groups", &self.cluster_security_groups);
1524        formatter.field("vpc_security_group_ids", &self.vpc_security_group_ids);
1525        formatter.field("cluster_subnet_group_name", &self.cluster_subnet_group_name);
1526        formatter.field("availability_zone", &self.availability_zone);
1527        formatter.field("preferred_maintenance_window", &self.preferred_maintenance_window);
1528        formatter.field("cluster_parameter_group_name", &self.cluster_parameter_group_name);
1529        formatter.field("automated_snapshot_retention_period", &self.automated_snapshot_retention_period);
1530        formatter.field("manual_snapshot_retention_period", &self.manual_snapshot_retention_period);
1531        formatter.field("port", &self.port);
1532        formatter.field("cluster_version", &self.cluster_version);
1533        formatter.field("allow_version_upgrade", &self.allow_version_upgrade);
1534        formatter.field("number_of_nodes", &self.number_of_nodes);
1535        formatter.field("publicly_accessible", &self.publicly_accessible);
1536        formatter.field("encrypted", &self.encrypted);
1537        formatter.field("hsm_client_certificate_identifier", &self.hsm_client_certificate_identifier);
1538        formatter.field("hsm_configuration_identifier", &self.hsm_configuration_identifier);
1539        formatter.field("elastic_ip", &self.elastic_ip);
1540        formatter.field("tags", &self.tags);
1541        formatter.field("kms_key_id", &self.kms_key_id);
1542        formatter.field("enhanced_vpc_routing", &self.enhanced_vpc_routing);
1543        formatter.field("additional_info", &self.additional_info);
1544        formatter.field("iam_roles", &self.iam_roles);
1545        formatter.field("maintenance_track_name", &self.maintenance_track_name);
1546        formatter.field("snapshot_schedule_identifier", &self.snapshot_schedule_identifier);
1547        formatter.field("availability_zone_relocation", &self.availability_zone_relocation);
1548        formatter.field("aqua_configuration_status", &self.aqua_configuration_status);
1549        formatter.field("default_iam_role_arn", &self.default_iam_role_arn);
1550        formatter.field("load_sample_data", &self.load_sample_data);
1551        formatter.field("manage_master_password", &self.manage_master_password);
1552        formatter.field("master_password_secret_kms_key_id", &self.master_password_secret_kms_key_id);
1553        formatter.field("ip_address_type", &self.ip_address_type);
1554        formatter.field("multi_az", &self.multi_az);
1555        formatter.field("redshift_idc_application_arn", &self.redshift_idc_application_arn);
1556        formatter.finish()
1557    }
1558}