Skip to main content

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