aws_sdk_redshift/operation/create_cluster/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_cluster::_create_cluster_output::CreateClusterOutputBuilder;
3
4pub use crate::operation::create_cluster::_create_cluster_input::CreateClusterInputBuilder;
5
6impl crate::operation::create_cluster::builders::CreateClusterInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::create_cluster::CreateClusterOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_cluster::CreateClusterError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_cluster();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateCluster`.
24///
25/// <p>Creates a new cluster with the specified parameters.</p>
26/// <p>To create a cluster in Virtual Private Cloud (VPC), you must provide a cluster subnet group name. The cluster subnet group identifies the subnets of your VPC that Amazon Redshift uses when creating the cluster. For more information about managing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
27/// <p>VPC Block Public Access (BPA) enables you to block resources in VPCs and subnets that you own in a Region from reaching or being reached from the internet through internet gateways and egress-only internet gateways. If a subnet group for a provisioned cluster is in an account with VPC BPA turned on, the following capabilities are blocked:</p>
28/// <ul>
29/// <li>
30/// <p>Creating a public cluster</p></li>
31/// <li>
32/// <p>Restoring a public cluster</p></li>
33/// <li>
34/// <p>Modifying a private cluster to be public</p></li>
35/// <li>
36/// <p>Adding a subnet with VPC BPA turned on to the subnet group when there's at least one public cluster within the group</p></li>
37/// </ul>
38/// <p>For more information about VPC BPA, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/security-vpc-bpa.html">Block public access to VPCs and subnets</a> in the <i>Amazon VPC User Guide</i>.</p>
39#[derive(::std::clone::Clone, ::std::fmt::Debug)]
40pub struct CreateClusterFluentBuilder {
41    handle: ::std::sync::Arc<crate::client::Handle>,
42    inner: crate::operation::create_cluster::builders::CreateClusterInputBuilder,
43    config_override: ::std::option::Option<crate::config::Builder>,
44}
45impl
46    crate::client::customize::internal::CustomizableSend<
47        crate::operation::create_cluster::CreateClusterOutput,
48        crate::operation::create_cluster::CreateClusterError,
49    > for CreateClusterFluentBuilder
50{
51    fn send(
52        self,
53        config_override: crate::config::Builder,
54    ) -> crate::client::customize::internal::BoxFuture<
55        crate::client::customize::internal::SendResult<
56            crate::operation::create_cluster::CreateClusterOutput,
57            crate::operation::create_cluster::CreateClusterError,
58        >,
59    > {
60        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
61    }
62}
63impl CreateClusterFluentBuilder {
64    /// Creates a new `CreateClusterFluentBuilder`.
65    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
66        Self {
67            handle,
68            inner: ::std::default::Default::default(),
69            config_override: ::std::option::Option::None,
70        }
71    }
72    /// Access the CreateCluster as a reference.
73    pub fn as_input(&self) -> &crate::operation::create_cluster::builders::CreateClusterInputBuilder {
74        &self.inner
75    }
76    /// Sends the request and returns the response.
77    ///
78    /// If an error occurs, an `SdkError` will be returned with additional details that
79    /// can be matched against.
80    ///
81    /// By default, any retryable failures will be retried twice. Retry behavior
82    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
83    /// set when configuring the client.
84    pub async fn send(
85        self,
86    ) -> ::std::result::Result<
87        crate::operation::create_cluster::CreateClusterOutput,
88        ::aws_smithy_runtime_api::client::result::SdkError<
89            crate::operation::create_cluster::CreateClusterError,
90            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
91        >,
92    > {
93        let input = self
94            .inner
95            .build()
96            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
97        let runtime_plugins = crate::operation::create_cluster::CreateCluster::operation_runtime_plugins(
98            self.handle.runtime_plugins.clone(),
99            &self.handle.conf,
100            self.config_override,
101        );
102        crate::operation::create_cluster::CreateCluster::orchestrate(&runtime_plugins, input).await
103    }
104
105    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
106    pub fn customize(
107        self,
108    ) -> crate::client::customize::CustomizableOperation<
109        crate::operation::create_cluster::CreateClusterOutput,
110        crate::operation::create_cluster::CreateClusterError,
111        Self,
112    > {
113        crate::client::customize::CustomizableOperation::new(self)
114    }
115    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
116        self.set_config_override(::std::option::Option::Some(config_override.into()));
117        self
118    }
119
120    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
121        self.config_override = config_override;
122        self
123    }
124    /// <p>The name of the first database to be created when the cluster is created.</p>
125    /// <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>
126    /// <p>Default: <code>dev</code></p>
127    /// <p>Constraints:</p>
128    /// <ul>
129    /// <li>
130    /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
131    /// <li>
132    /// <p>Must contain only lowercase letters.</p></li>
133    /// <li>
134    /// <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>
135    /// </ul>
136    pub fn db_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
137        self.inner = self.inner.db_name(input.into());
138        self
139    }
140    /// <p>The name of the first database to be created when the cluster is created.</p>
141    /// <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>
142    /// <p>Default: <code>dev</code></p>
143    /// <p>Constraints:</p>
144    /// <ul>
145    /// <li>
146    /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
147    /// <li>
148    /// <p>Must contain only lowercase letters.</p></li>
149    /// <li>
150    /// <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>
151    /// </ul>
152    pub fn set_db_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
153        self.inner = self.inner.set_db_name(input);
154        self
155    }
156    /// <p>The name of the first database to be created when the cluster is created.</p>
157    /// <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>
158    /// <p>Default: <code>dev</code></p>
159    /// <p>Constraints:</p>
160    /// <ul>
161    /// <li>
162    /// <p>Must contain 1 to 64 alphanumeric characters.</p></li>
163    /// <li>
164    /// <p>Must contain only lowercase letters.</p></li>
165    /// <li>
166    /// <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>
167    /// </ul>
168    pub fn get_db_name(&self) -> &::std::option::Option<::std::string::String> {
169        self.inner.get_db_name()
170    }
171    /// <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>
172    /// <p>Constraints:</p>
173    /// <ul>
174    /// <li>
175    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
176    /// <li>
177    /// <p>Alphabetic characters must be lowercase.</p></li>
178    /// <li>
179    /// <p>First character must be a letter.</p></li>
180    /// <li>
181    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
182    /// <li>
183    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
184    /// </ul>
185    /// <p>Example: <code>myexamplecluster</code></p>
186    pub fn cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
187        self.inner = self.inner.cluster_identifier(input.into());
188        self
189    }
190    /// <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>
191    /// <p>Constraints:</p>
192    /// <ul>
193    /// <li>
194    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
195    /// <li>
196    /// <p>Alphabetic characters must be lowercase.</p></li>
197    /// <li>
198    /// <p>First character must be a letter.</p></li>
199    /// <li>
200    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
201    /// <li>
202    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
203    /// </ul>
204    /// <p>Example: <code>myexamplecluster</code></p>
205    pub fn set_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
206        self.inner = self.inner.set_cluster_identifier(input);
207        self
208    }
209    /// <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>
210    /// <p>Constraints:</p>
211    /// <ul>
212    /// <li>
213    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
214    /// <li>
215    /// <p>Alphabetic characters must be lowercase.</p></li>
216    /// <li>
217    /// <p>First character must be a letter.</p></li>
218    /// <li>
219    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
220    /// <li>
221    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
222    /// </ul>
223    /// <p>Example: <code>myexamplecluster</code></p>
224    pub fn get_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
225        self.inner.get_cluster_identifier()
226    }
227    /// <p>The type of the cluster. When cluster type is specified as</p>
228    /// <ul>
229    /// <li>
230    /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
231    /// <li>
232    /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
233    /// </ul>
234    /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
235    /// <p>Default: <code>multi-node</code></p>
236    pub fn cluster_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
237        self.inner = self.inner.cluster_type(input.into());
238        self
239    }
240    /// <p>The type of the cluster. When cluster type is specified as</p>
241    /// <ul>
242    /// <li>
243    /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
244    /// <li>
245    /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
246    /// </ul>
247    /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
248    /// <p>Default: <code>multi-node</code></p>
249    pub fn set_cluster_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
250        self.inner = self.inner.set_cluster_type(input);
251        self
252    }
253    /// <p>The type of the cluster. When cluster type is specified as</p>
254    /// <ul>
255    /// <li>
256    /// <p><code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p></li>
257    /// <li>
258    /// <p><code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p></li>
259    /// </ul>
260    /// <p>Valid Values: <code>multi-node</code> | <code>single-node</code></p>
261    /// <p>Default: <code>multi-node</code></p>
262    pub fn get_cluster_type(&self) -> &::std::option::Option<::std::string::String> {
263        self.inner.get_cluster_type()
264    }
265    /// <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>
266    /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
267    pub fn node_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
268        self.inner = self.inner.node_type(input.into());
269        self
270    }
271    /// <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>
272    /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
273    pub fn set_node_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
274        self.inner = self.inner.set_node_type(input);
275        self
276    }
277    /// <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>
278    /// <p>Valid Values: <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.large</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code></p>
279    pub fn get_node_type(&self) -> &::std::option::Option<::std::string::String> {
280        self.inner.get_node_type()
281    }
282    /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
283    /// <p>Constraints:</p>
284    /// <ul>
285    /// <li>
286    /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
287    /// <li>
288    /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
289    /// <li>
290    /// <p>The first character must be a letter.</p></li>
291    /// <li>
292    /// <p>Must not contain a colon (:) or a slash (/).</p></li>
293    /// <li>
294    /// <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>
295    /// </ul>
296    pub fn master_username(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
297        self.inner = self.inner.master_username(input.into());
298        self
299    }
300    /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
301    /// <p>Constraints:</p>
302    /// <ul>
303    /// <li>
304    /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
305    /// <li>
306    /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
307    /// <li>
308    /// <p>The first character must be a letter.</p></li>
309    /// <li>
310    /// <p>Must not contain a colon (:) or a slash (/).</p></li>
311    /// <li>
312    /// <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>
313    /// </ul>
314    pub fn set_master_username(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
315        self.inner = self.inner.set_master_username(input);
316        self
317    }
318    /// <p>The user name associated with the admin user account for the cluster that is being created.</p>
319    /// <p>Constraints:</p>
320    /// <ul>
321    /// <li>
322    /// <p>Must be 1 - 128 alphanumeric characters or hyphens. The user name can't be <code>PUBLIC</code>.</p></li>
323    /// <li>
324    /// <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p></li>
325    /// <li>
326    /// <p>The first character must be a letter.</p></li>
327    /// <li>
328    /// <p>Must not contain a colon (:) or a slash (/).</p></li>
329    /// <li>
330    /// <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>
331    /// </ul>
332    pub fn get_master_username(&self) -> &::std::option::Option<::std::string::String> {
333        self.inner.get_master_username()
334    }
335    /// <p>The password associated with the admin user account for the cluster that is being created.</p>
336    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
337    /// <p>Constraints:</p>
338    /// <ul>
339    /// <li>
340    /// <p>Must be between 8 and 64 characters in length.</p></li>
341    /// <li>
342    /// <p>Must contain at least one uppercase letter.</p></li>
343    /// <li>
344    /// <p>Must contain at least one lowercase letter.</p></li>
345    /// <li>
346    /// <p>Must contain one number.</p></li>
347    /// <li>
348    /// <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>
349    /// </ul>
350    pub fn master_user_password(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
351        self.inner = self.inner.master_user_password(input.into());
352        self
353    }
354    /// <p>The password associated with the admin user account for the cluster that is being created.</p>
355    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
356    /// <p>Constraints:</p>
357    /// <ul>
358    /// <li>
359    /// <p>Must be between 8 and 64 characters in length.</p></li>
360    /// <li>
361    /// <p>Must contain at least one uppercase letter.</p></li>
362    /// <li>
363    /// <p>Must contain at least one lowercase letter.</p></li>
364    /// <li>
365    /// <p>Must contain one number.</p></li>
366    /// <li>
367    /// <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>
368    /// </ul>
369    pub fn set_master_user_password(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
370        self.inner = self.inner.set_master_user_password(input);
371        self
372    }
373    /// <p>The password associated with the admin user account for the cluster that is being created.</p>
374    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
375    /// <p>Constraints:</p>
376    /// <ul>
377    /// <li>
378    /// <p>Must be between 8 and 64 characters in length.</p></li>
379    /// <li>
380    /// <p>Must contain at least one uppercase letter.</p></li>
381    /// <li>
382    /// <p>Must contain at least one lowercase letter.</p></li>
383    /// <li>
384    /// <p>Must contain one number.</p></li>
385    /// <li>
386    /// <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>
387    /// </ul>
388    pub fn get_master_user_password(&self) -> &::std::option::Option<::std::string::String> {
389        self.inner.get_master_user_password()
390    }
391    ///
392    /// Appends an item to `ClusterSecurityGroups`.
393    ///
394    /// To override the contents of this collection use [`set_cluster_security_groups`](Self::set_cluster_security_groups).
395    ///
396    /// <p>A list of security groups to be associated with this cluster.</p>
397    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
398    pub fn cluster_security_groups(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
399        self.inner = self.inner.cluster_security_groups(input.into());
400        self
401    }
402    /// <p>A list of security groups to be associated with this cluster.</p>
403    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
404    pub fn set_cluster_security_groups(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
405        self.inner = self.inner.set_cluster_security_groups(input);
406        self
407    }
408    /// <p>A list of security groups to be associated with this cluster.</p>
409    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
410    pub fn get_cluster_security_groups(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
411        self.inner.get_cluster_security_groups()
412    }
413    ///
414    /// Appends an item to `VpcSecurityGroupIds`.
415    ///
416    /// To override the contents of this collection use [`set_vpc_security_group_ids`](Self::set_vpc_security_group_ids).
417    ///
418    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
419    /// <p>Default: The default VPC security group is associated with the cluster.</p>
420    pub fn vpc_security_group_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
421        self.inner = self.inner.vpc_security_group_ids(input.into());
422        self
423    }
424    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
425    /// <p>Default: The default VPC security group is associated with the cluster.</p>
426    pub fn set_vpc_security_group_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
427        self.inner = self.inner.set_vpc_security_group_ids(input);
428        self
429    }
430    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
431    /// <p>Default: The default VPC security group is associated with the cluster.</p>
432    pub fn get_vpc_security_group_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
433        self.inner.get_vpc_security_group_ids()
434    }
435    /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
436    /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
437    pub fn cluster_subnet_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
438        self.inner = self.inner.cluster_subnet_group_name(input.into());
439        self
440    }
441    /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
442    /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
443    pub fn set_cluster_subnet_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
444        self.inner = self.inner.set_cluster_subnet_group_name(input);
445        self
446    }
447    /// <p>The name of a cluster subnet group to be associated with this cluster.</p>
448    /// <p>If this parameter is not provided the resulting cluster will be deployed outside virtual private cloud (VPC).</p>
449    pub fn get_cluster_subnet_group_name(&self) -> &::std::option::Option<::std::string::String> {
450        self.inner.get_cluster_subnet_group_name()
451    }
452    /// <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>
453    /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
454    /// <p>Example: <code>us-east-2d</code></p>
455    /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
456    pub fn availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
457        self.inner = self.inner.availability_zone(input.into());
458        self
459    }
460    /// <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>
461    /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
462    /// <p>Example: <code>us-east-2d</code></p>
463    /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
464    pub fn set_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
465        self.inner = self.inner.set_availability_zone(input);
466        self
467    }
468    /// <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>
469    /// <p>Default: A random, system-chosen Availability Zone in the region that is specified by the endpoint.</p>
470    /// <p>Example: <code>us-east-2d</code></p>
471    /// <p>Constraint: The specified Availability Zone must be in the same region as the current endpoint.</p>
472    pub fn get_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
473        self.inner.get_availability_zone()
474    }
475    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
476    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
477    /// <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>
478    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
479    /// <p>Constraints: Minimum 30-minute window.</p>
480    pub fn preferred_maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
481        self.inner = self.inner.preferred_maintenance_window(input.into());
482        self
483    }
484    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
485    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
486    /// <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>
487    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
488    /// <p>Constraints: Minimum 30-minute window.</p>
489    pub fn set_preferred_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
490        self.inner = self.inner.set_preferred_maintenance_window(input);
491        self
492    }
493    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
494    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
495    /// <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>
496    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
497    /// <p>Constraints: Minimum 30-minute window.</p>
498    pub fn get_preferred_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
499        self.inner.get_preferred_maintenance_window()
500    }
501    /// <p>The name of the parameter group to be associated with this cluster.</p>
502    /// <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>
503    /// <p>Constraints:</p>
504    /// <ul>
505    /// <li>
506    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
507    /// <li>
508    /// <p>First character must be a letter.</p></li>
509    /// <li>
510    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
511    /// </ul>
512    pub fn cluster_parameter_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
513        self.inner = self.inner.cluster_parameter_group_name(input.into());
514        self
515    }
516    /// <p>The name of the parameter group to be associated with this cluster.</p>
517    /// <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>
518    /// <p>Constraints:</p>
519    /// <ul>
520    /// <li>
521    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
522    /// <li>
523    /// <p>First character must be a letter.</p></li>
524    /// <li>
525    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
526    /// </ul>
527    pub fn set_cluster_parameter_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
528        self.inner = self.inner.set_cluster_parameter_group_name(input);
529        self
530    }
531    /// <p>The name of the parameter group to be associated with this cluster.</p>
532    /// <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>
533    /// <p>Constraints:</p>
534    /// <ul>
535    /// <li>
536    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
537    /// <li>
538    /// <p>First character must be a letter.</p></li>
539    /// <li>
540    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
541    /// </ul>
542    pub fn get_cluster_parameter_group_name(&self) -> &::std::option::Option<::std::string::String> {
543        self.inner.get_cluster_parameter_group_name()
544    }
545    /// <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>
546    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
547    /// <p>Default: <code>1</code></p>
548    /// <p>Constraints: Must be a value from 0 to 35.</p>
549    pub fn automated_snapshot_retention_period(mut self, input: i32) -> Self {
550        self.inner = self.inner.automated_snapshot_retention_period(input);
551        self
552    }
553    /// <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>
554    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
555    /// <p>Default: <code>1</code></p>
556    /// <p>Constraints: Must be a value from 0 to 35.</p>
557    pub fn set_automated_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
558        self.inner = self.inner.set_automated_snapshot_retention_period(input);
559        self
560    }
561    /// <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>
562    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
563    /// <p>Default: <code>1</code></p>
564    /// <p>Constraints: Must be a value from 0 to 35.</p>
565    pub fn get_automated_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
566        self.inner.get_automated_snapshot_retention_period()
567    }
568    /// <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>
569    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
570    pub fn manual_snapshot_retention_period(mut self, input: i32) -> Self {
571        self.inner = self.inner.manual_snapshot_retention_period(input);
572        self
573    }
574    /// <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>
575    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
576    pub fn set_manual_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
577        self.inner = self.inner.set_manual_snapshot_retention_period(input);
578        self
579    }
580    /// <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>
581    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
582    pub fn get_manual_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
583        self.inner.get_manual_snapshot_retention_period()
584    }
585    /// <p>The port number on which the cluster accepts incoming connections.</p>
586    /// <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>
587    /// <p>Default: <code>5439</code></p>
588    /// <p>Valid Values:</p>
589    /// <ul>
590    /// <li>
591    /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
592    /// <li>
593    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
594    /// </ul>
595    pub fn port(mut self, input: i32) -> Self {
596        self.inner = self.inner.port(input);
597        self
598    }
599    /// <p>The port number on which the cluster accepts incoming connections.</p>
600    /// <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>
601    /// <p>Default: <code>5439</code></p>
602    /// <p>Valid Values:</p>
603    /// <ul>
604    /// <li>
605    /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
606    /// <li>
607    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
608    /// </ul>
609    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
610        self.inner = self.inner.set_port(input);
611        self
612    }
613    /// <p>The port number on which the cluster accepts incoming connections.</p>
614    /// <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>
615    /// <p>Default: <code>5439</code></p>
616    /// <p>Valid Values:</p>
617    /// <ul>
618    /// <li>
619    /// <p>For clusters with ra3 nodes - Select a port within the ranges <code>5431-5455</code> or <code>8191-8215</code>. (If you have an existing cluster with ra3 nodes, it isn't required that you change the port to these ranges.)</p></li>
620    /// <li>
621    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
622    /// </ul>
623    pub fn get_port(&self) -> &::std::option::Option<i32> {
624        self.inner.get_port()
625    }
626    /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
627    /// <p>The version selected runs on all the nodes in the cluster.</p>
628    /// <p>Constraints: Only version 1.0 is currently available.</p>
629    /// <p>Example: <code>1.0</code></p>
630    pub fn cluster_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
631        self.inner = self.inner.cluster_version(input.into());
632        self
633    }
634    /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
635    /// <p>The version selected runs on all the nodes in the cluster.</p>
636    /// <p>Constraints: Only version 1.0 is currently available.</p>
637    /// <p>Example: <code>1.0</code></p>
638    pub fn set_cluster_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
639        self.inner = self.inner.set_cluster_version(input);
640        self
641    }
642    /// <p>The version of the Amazon Redshift engine software that you want to deploy on the cluster.</p>
643    /// <p>The version selected runs on all the nodes in the cluster.</p>
644    /// <p>Constraints: Only version 1.0 is currently available.</p>
645    /// <p>Example: <code>1.0</code></p>
646    pub fn get_cluster_version(&self) -> &::std::option::Option<::std::string::String> {
647        self.inner.get_cluster_version()
648    }
649    /// <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>
650    /// <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>
651    /// <p>Default: <code>true</code></p>
652    pub fn allow_version_upgrade(mut self, input: bool) -> Self {
653        self.inner = self.inner.allow_version_upgrade(input);
654        self
655    }
656    /// <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>
657    /// <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>
658    /// <p>Default: <code>true</code></p>
659    pub fn set_allow_version_upgrade(mut self, input: ::std::option::Option<bool>) -> Self {
660        self.inner = self.inner.set_allow_version_upgrade(input);
661        self
662    }
663    /// <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>
664    /// <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>
665    /// <p>Default: <code>true</code></p>
666    pub fn get_allow_version_upgrade(&self) -> &::std::option::Option<bool> {
667        self.inner.get_allow_version_upgrade()
668    }
669    /// <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>
670    /// <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>
671    /// <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>
672    /// <p>Default: <code>1</code></p>
673    /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
674    pub fn number_of_nodes(mut self, input: i32) -> Self {
675        self.inner = self.inner.number_of_nodes(input);
676        self
677    }
678    /// <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>
679    /// <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>
680    /// <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>
681    /// <p>Default: <code>1</code></p>
682    /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
683    pub fn set_number_of_nodes(mut self, input: ::std::option::Option<i32>) -> Self {
684        self.inner = self.inner.set_number_of_nodes(input);
685        self
686    }
687    /// <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>
688    /// <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>
689    /// <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>
690    /// <p>Default: <code>1</code></p>
691    /// <p>Constraints: Value must be at least 1 and no more than 100.</p>
692    pub fn get_number_of_nodes(&self) -> &::std::option::Option<i32> {
693        self.inner.get_number_of_nodes()
694    }
695    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
696    /// <p>Default: false</p>
697    pub fn publicly_accessible(mut self, input: bool) -> Self {
698        self.inner = self.inner.publicly_accessible(input);
699        self
700    }
701    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
702    /// <p>Default: false</p>
703    pub fn set_publicly_accessible(mut self, input: ::std::option::Option<bool>) -> Self {
704        self.inner = self.inner.set_publicly_accessible(input);
705        self
706    }
707    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
708    /// <p>Default: false</p>
709    pub fn get_publicly_accessible(&self) -> &::std::option::Option<bool> {
710        self.inner.get_publicly_accessible()
711    }
712    /// <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>
713    /// <p>Default: true</p>
714    pub fn encrypted(mut self, input: bool) -> Self {
715        self.inner = self.inner.encrypted(input);
716        self
717    }
718    /// <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>
719    /// <p>Default: true</p>
720    pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
721        self.inner = self.inner.set_encrypted(input);
722        self
723    }
724    /// <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>
725    /// <p>Default: true</p>
726    pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
727        self.inner.get_encrypted()
728    }
729    /// <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>
730    pub fn hsm_client_certificate_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
731        self.inner = self.inner.hsm_client_certificate_identifier(input.into());
732        self
733    }
734    /// <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>
735    pub fn set_hsm_client_certificate_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
736        self.inner = self.inner.set_hsm_client_certificate_identifier(input);
737        self
738    }
739    /// <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>
740    pub fn get_hsm_client_certificate_identifier(&self) -> &::std::option::Option<::std::string::String> {
741        self.inner.get_hsm_client_certificate_identifier()
742    }
743    /// <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>
744    pub fn hsm_configuration_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
745        self.inner = self.inner.hsm_configuration_identifier(input.into());
746        self
747    }
748    /// <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>
749    pub fn set_hsm_configuration_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
750        self.inner = self.inner.set_hsm_configuration_identifier(input);
751        self
752    }
753    /// <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>
754    pub fn get_hsm_configuration_identifier(&self) -> &::std::option::Option<::std::string::String> {
755        self.inner.get_hsm_configuration_identifier()
756    }
757    /// <p>The Elastic IP (EIP) address for the cluster.</p>
758    /// <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>
759    pub fn elastic_ip(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
760        self.inner = self.inner.elastic_ip(input.into());
761        self
762    }
763    /// <p>The Elastic IP (EIP) address for the cluster.</p>
764    /// <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>
765    pub fn set_elastic_ip(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
766        self.inner = self.inner.set_elastic_ip(input);
767        self
768    }
769    /// <p>The Elastic IP (EIP) address for the cluster.</p>
770    /// <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>
771    pub fn get_elastic_ip(&self) -> &::std::option::Option<::std::string::String> {
772        self.inner.get_elastic_ip()
773    }
774    ///
775    /// Appends an item to `Tags`.
776    ///
777    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
778    ///
779    /// <p>A list of tag instances.</p>
780    pub fn tags(mut self, input: crate::types::Tag) -> Self {
781        self.inner = self.inner.tags(input);
782        self
783    }
784    /// <p>A list of tag instances.</p>
785    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
786        self.inner = self.inner.set_tags(input);
787        self
788    }
789    /// <p>A list of tag instances.</p>
790    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
791        self.inner.get_tags()
792    }
793    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
794    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
795        self.inner = self.inner.kms_key_id(input.into());
796        self
797    }
798    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
799    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
800        self.inner = self.inner.set_kms_key_id(input);
801        self
802    }
803    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
804    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
805        self.inner.get_kms_key_id()
806    }
807    /// <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>
808    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
809    /// <p>Default: false</p>
810    pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
811        self.inner = self.inner.enhanced_vpc_routing(input);
812        self
813    }
814    /// <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>
815    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
816    /// <p>Default: false</p>
817    pub fn set_enhanced_vpc_routing(mut self, input: ::std::option::Option<bool>) -> Self {
818        self.inner = self.inner.set_enhanced_vpc_routing(input);
819        self
820    }
821    /// <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>
822    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
823    /// <p>Default: false</p>
824    pub fn get_enhanced_vpc_routing(&self) -> &::std::option::Option<bool> {
825        self.inner.get_enhanced_vpc_routing()
826    }
827    /// <p>Reserved.</p>
828    pub fn additional_info(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
829        self.inner = self.inner.additional_info(input.into());
830        self
831    }
832    /// <p>Reserved.</p>
833    pub fn set_additional_info(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
834        self.inner = self.inner.set_additional_info(input);
835        self
836    }
837    /// <p>Reserved.</p>
838    pub fn get_additional_info(&self) -> &::std::option::Option<::std::string::String> {
839        self.inner.get_additional_info()
840    }
841    ///
842    /// Appends an item to `IamRoles`.
843    ///
844    /// To override the contents of this collection use [`set_iam_roles`](Self::set_iam_roles).
845    ///
846    /// <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>
847    /// <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>
848    pub fn iam_roles(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
849        self.inner = self.inner.iam_roles(input.into());
850        self
851    }
852    /// <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>
853    /// <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>
854    pub fn set_iam_roles(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
855        self.inner = self.inner.set_iam_roles(input);
856        self
857    }
858    /// <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>
859    /// <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>
860    pub fn get_iam_roles(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
861        self.inner.get_iam_roles()
862    }
863    /// <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>
864    pub fn maintenance_track_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
865        self.inner = self.inner.maintenance_track_name(input.into());
866        self
867    }
868    /// <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>
869    pub fn set_maintenance_track_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
870        self.inner = self.inner.set_maintenance_track_name(input);
871        self
872    }
873    /// <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>
874    pub fn get_maintenance_track_name(&self) -> &::std::option::Option<::std::string::String> {
875        self.inner.get_maintenance_track_name()
876    }
877    /// <p>A unique identifier for the snapshot schedule.</p>
878    pub fn snapshot_schedule_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
879        self.inner = self.inner.snapshot_schedule_identifier(input.into());
880        self
881    }
882    /// <p>A unique identifier for the snapshot schedule.</p>
883    pub fn set_snapshot_schedule_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
884        self.inner = self.inner.set_snapshot_schedule_identifier(input);
885        self
886    }
887    /// <p>A unique identifier for the snapshot schedule.</p>
888    pub fn get_snapshot_schedule_identifier(&self) -> &::std::option::Option<::std::string::String> {
889        self.inner.get_snapshot_schedule_identifier()
890    }
891    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
892    pub fn availability_zone_relocation(mut self, input: bool) -> Self {
893        self.inner = self.inner.availability_zone_relocation(input);
894        self
895    }
896    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
897    pub fn set_availability_zone_relocation(mut self, input: ::std::option::Option<bool>) -> Self {
898        self.inner = self.inner.set_availability_zone_relocation(input);
899        self
900    }
901    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is created.</p>
902    pub fn get_availability_zone_relocation(&self) -> &::std::option::Option<bool> {
903        self.inner.get_availability_zone_relocation()
904    }
905    /// <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>
906    pub fn aqua_configuration_status(mut self, input: crate::types::AquaConfigurationStatus) -> Self {
907        self.inner = self.inner.aqua_configuration_status(input);
908        self
909    }
910    /// <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>
911    pub fn set_aqua_configuration_status(mut self, input: ::std::option::Option<crate::types::AquaConfigurationStatus>) -> Self {
912        self.inner = self.inner.set_aqua_configuration_status(input);
913        self
914    }
915    /// <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>
916    pub fn get_aqua_configuration_status(&self) -> &::std::option::Option<crate::types::AquaConfigurationStatus> {
917        self.inner.get_aqua_configuration_status()
918    }
919    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
920    pub fn default_iam_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
921        self.inner = self.inner.default_iam_role_arn(input.into());
922        self
923    }
924    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
925    pub fn set_default_iam_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
926        self.inner = self.inner.set_default_iam_role_arn(input);
927        self
928    }
929    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created.</p>
930    pub fn get_default_iam_role_arn(&self) -> &::std::option::Option<::std::string::String> {
931        self.inner.get_default_iam_role_arn()
932    }
933    /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
934    pub fn load_sample_data(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
935        self.inner = self.inner.load_sample_data(input.into());
936        self
937    }
938    /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
939    pub fn set_load_sample_data(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
940        self.inner = self.inner.set_load_sample_data(input);
941        self
942    }
943    /// <p>A flag that specifies whether to load sample data once the cluster is created.</p>
944    pub fn get_load_sample_data(&self) -> &::std::option::Option<::std::string::String> {
945        self.inner.get_load_sample_data()
946    }
947    /// <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>
948    pub fn manage_master_password(mut self, input: bool) -> Self {
949        self.inner = self.inner.manage_master_password(input);
950        self
951    }
952    /// <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>
953    pub fn set_manage_master_password(mut self, input: ::std::option::Option<bool>) -> Self {
954        self.inner = self.inner.set_manage_master_password(input);
955        self
956    }
957    /// <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>
958    pub fn get_manage_master_password(&self) -> &::std::option::Option<bool> {
959        self.inner.get_manage_master_password()
960    }
961    /// <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>
962    pub fn master_password_secret_kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
963        self.inner = self.inner.master_password_secret_kms_key_id(input.into());
964        self
965    }
966    /// <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>
967    pub fn set_master_password_secret_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
968        self.inner = self.inner.set_master_password_secret_kms_key_id(input);
969        self
970    }
971    /// <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>
972    pub fn get_master_password_secret_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
973        self.inner.get_master_password_secret_kms_key_id()
974    }
975    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
976    pub fn ip_address_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
977        self.inner = self.inner.ip_address_type(input.into());
978        self
979    }
980    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
981    pub fn set_ip_address_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
982        self.inner = self.inner.set_ip_address_type(input);
983        self
984    }
985    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
986    pub fn get_ip_address_type(&self) -> &::std::option::Option<::std::string::String> {
987        self.inner.get_ip_address_type()
988    }
989    /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
990    pub fn multi_az(mut self, input: bool) -> Self {
991        self.inner = self.inner.multi_az(input);
992        self
993    }
994    /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
995    pub fn set_multi_az(mut self, input: ::std::option::Option<bool>) -> Self {
996        self.inner = self.inner.set_multi_az(input);
997        self
998    }
999    /// <p>If true, Amazon Redshift will deploy the cluster in two Availability Zones (AZ).</p>
1000    pub fn get_multi_az(&self) -> &::std::option::Option<bool> {
1001        self.inner.get_multi_az()
1002    }
1003    /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1004    pub fn redshift_idc_application_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1005        self.inner = self.inner.redshift_idc_application_arn(input.into());
1006        self
1007    }
1008    /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1009    pub fn set_redshift_idc_application_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1010        self.inner = self.inner.set_redshift_idc_application_arn(input);
1011        self
1012    }
1013    /// <p>The Amazon resource name (ARN) of the Amazon Redshift IAM Identity Center application.</p>
1014    pub fn get_redshift_idc_application_arn(&self) -> &::std::option::Option<::std::string::String> {
1015        self.inner.get_redshift_idc_application_arn()
1016    }
1017}