Skip to main content

aws_sdk_redshift/operation/modify_cluster/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::modify_cluster::_modify_cluster_input::ModifyClusterInputBuilder;
3
4pub use crate::operation::modify_cluster::_modify_cluster_output::ModifyClusterOutputBuilder;
5
6impl crate::operation::modify_cluster::builders::ModifyClusterInputBuilder {
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::modify_cluster::ModifyClusterOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::modify_cluster::ModifyClusterError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.modify_cluster();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `ModifyCluster`.
24///
25/// <p>Modifies the settings for a cluster.</p>
26/// <p>You can also change node type and the number of nodes to scale up or down the cluster. When resizing a cluster, you must specify both the number of nodes and the node type even if one of the parameters does not change.</p>
27/// <p>You can add another security or parameter group, or change the admin user password. Resetting a cluster password or modifying the security groups associated with a cluster do not need a reboot. However, modifying a parameter group requires a reboot for parameters to take effect. For more information about managing clusters, go to <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>
28/// <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>
29/// <ul>
30/// <li>
31/// <p>Creating a public cluster</p></li>
32/// <li>
33/// <p>Restoring a public cluster</p></li>
34/// <li>
35/// <p>Modifying a private cluster to be public</p></li>
36/// <li>
37/// <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>
38/// </ul>
39/// <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>
40#[derive(::std::clone::Clone, ::std::fmt::Debug)]
41pub struct ModifyClusterFluentBuilder {
42    handle: ::std::sync::Arc<crate::client::Handle>,
43    inner: crate::operation::modify_cluster::builders::ModifyClusterInputBuilder,
44    config_override: ::std::option::Option<crate::config::Builder>,
45}
46impl
47    crate::client::customize::internal::CustomizableSend<
48        crate::operation::modify_cluster::ModifyClusterOutput,
49        crate::operation::modify_cluster::ModifyClusterError,
50    > for ModifyClusterFluentBuilder
51{
52    fn send(
53        self,
54        config_override: crate::config::Builder,
55    ) -> crate::client::customize::internal::BoxFuture<
56        crate::client::customize::internal::SendResult<
57            crate::operation::modify_cluster::ModifyClusterOutput,
58            crate::operation::modify_cluster::ModifyClusterError,
59        >,
60    > {
61        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
62    }
63}
64impl ModifyClusterFluentBuilder {
65    /// Creates a new `ModifyClusterFluentBuilder`.
66    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
67        Self {
68            handle,
69            inner: ::std::default::Default::default(),
70            config_override: ::std::option::Option::None,
71        }
72    }
73    /// Access the ModifyCluster as a reference.
74    pub fn as_input(&self) -> &crate::operation::modify_cluster::builders::ModifyClusterInputBuilder {
75        &self.inner
76    }
77    /// Sends the request and returns the response.
78    ///
79    /// If an error occurs, an `SdkError` will be returned with additional details that
80    /// can be matched against.
81    ///
82    /// By default, any retryable failures will be retried twice. Retry behavior
83    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
84    /// set when configuring the client.
85    pub async fn send(
86        self,
87    ) -> ::std::result::Result<
88        crate::operation::modify_cluster::ModifyClusterOutput,
89        ::aws_smithy_runtime_api::client::result::SdkError<
90            crate::operation::modify_cluster::ModifyClusterError,
91            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
92        >,
93    > {
94        let input = self
95            .inner
96            .build()
97            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
98        let runtime_plugins = crate::operation::modify_cluster::ModifyCluster::operation_runtime_plugins(
99            self.handle.runtime_plugins.clone(),
100            &self.handle.conf,
101            self.config_override,
102        );
103        crate::operation::modify_cluster::ModifyCluster::orchestrate(&runtime_plugins, input).await
104    }
105
106    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
107    pub fn customize(
108        self,
109    ) -> crate::client::customize::CustomizableOperation<
110        crate::operation::modify_cluster::ModifyClusterOutput,
111        crate::operation::modify_cluster::ModifyClusterError,
112        Self,
113    > {
114        crate::client::customize::CustomizableOperation::new(self)
115    }
116    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
117        self.set_config_override(::std::option::Option::Some(config_override.into()));
118        self
119    }
120
121    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
122        self.config_override = config_override;
123        self
124    }
125    /// <p>The unique identifier of the cluster to be modified.</p>
126    /// <p>Example: <code>examplecluster</code></p>
127    pub fn cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
128        self.inner = self.inner.cluster_identifier(input.into());
129        self
130    }
131    /// <p>The unique identifier of the cluster to be modified.</p>
132    /// <p>Example: <code>examplecluster</code></p>
133    pub fn set_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
134        self.inner = self.inner.set_cluster_identifier(input);
135        self
136    }
137    /// <p>The unique identifier of the cluster to be modified.</p>
138    /// <p>Example: <code>examplecluster</code></p>
139    pub fn get_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
140        self.inner.get_cluster_identifier()
141    }
142    /// <p>The new cluster type.</p>
143    /// <p>When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the old cluster is deleted and your connection is switched to the new cluster. You can use <code>DescribeResize</code> to track the progress of the resize request.</p>
144    /// <p>Valid Values: <code> multi-node | single-node </code></p>
145    pub fn cluster_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
146        self.inner = self.inner.cluster_type(input.into());
147        self
148    }
149    /// <p>The new cluster type.</p>
150    /// <p>When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the old cluster is deleted and your connection is switched to the new cluster. You can use <code>DescribeResize</code> to track the progress of the resize request.</p>
151    /// <p>Valid Values: <code> multi-node | single-node </code></p>
152    pub fn set_cluster_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
153        self.inner = self.inner.set_cluster_type(input);
154        self
155    }
156    /// <p>The new cluster type.</p>
157    /// <p>When you submit your cluster resize request, your existing cluster goes into a read-only mode. After Amazon Redshift provisions a new cluster based on your resize requirements, there will be outage for a period while the old cluster is deleted and your connection is switched to the new cluster. You can use <code>DescribeResize</code> to track the progress of the resize request.</p>
158    /// <p>Valid Values: <code> multi-node | single-node </code></p>
159    pub fn get_cluster_type(&self) -> &::std::option::Option<::std::string::String> {
160        self.inner.get_cluster_type()
161    }
162    /// <p>The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.</p>
163    /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
164    /// <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>
165    pub fn node_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
166        self.inner = self.inner.node_type(input.into());
167        self
168    }
169    /// <p>The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.</p>
170    /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
171    /// <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>
172    pub fn set_node_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
173        self.inner = self.inner.set_node_type(input);
174        self
175    }
176    /// <p>The new node type of the cluster. If you specify a new node type, you must also specify the number of nodes parameter.</p>
177    /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
178    /// <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>
179    pub fn get_node_type(&self) -> &::std::option::Option<::std::string::String> {
180        self.inner.get_node_type()
181    }
182    /// <p>The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.</p>
183    /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
184    /// <p>Valid Values: Integer greater than <code>0</code>.</p>
185    pub fn number_of_nodes(mut self, input: i32) -> Self {
186        self.inner = self.inner.number_of_nodes(input);
187        self
188    }
189    /// <p>The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.</p>
190    /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
191    /// <p>Valid Values: Integer greater than <code>0</code>.</p>
192    pub fn set_number_of_nodes(mut self, input: ::std::option::Option<i32>) -> Self {
193        self.inner = self.inner.set_number_of_nodes(input);
194        self
195    }
196    /// <p>The new number of nodes of the cluster. If you specify a new number of nodes, you must also specify the node type parameter.</p>
197    /// <p>For more information about resizing clusters, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/rs-resize-tutorial.html">Resizing Clusters in Amazon Redshift</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
198    /// <p>Valid Values: Integer greater than <code>0</code>.</p>
199    pub fn get_number_of_nodes(&self) -> &::std::option::Option<i32> {
200        self.inner.get_number_of_nodes()
201    }
202    ///
203    /// Appends an item to `ClusterSecurityGroups`.
204    ///
205    /// To override the contents of this collection use [`set_cluster_security_groups`](Self::set_cluster_security_groups).
206    ///
207    /// <p>A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.</p>
208    /// <p>Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.</p>
209    /// <p>Constraints:</p>
210    /// <ul>
211    /// <li>
212    /// <p>Must be 1 to 255 alphanumeric characters or hyphens</p></li>
213    /// <li>
214    /// <p>First character must be a letter</p></li>
215    /// <li>
216    /// <p>Cannot end with a hyphen or contain two consecutive hyphens</p></li>
217    /// </ul>
218    pub fn cluster_security_groups(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
219        self.inner = self.inner.cluster_security_groups(input.into());
220        self
221    }
222    /// <p>A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.</p>
223    /// <p>Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.</p>
224    /// <p>Constraints:</p>
225    /// <ul>
226    /// <li>
227    /// <p>Must be 1 to 255 alphanumeric characters or hyphens</p></li>
228    /// <li>
229    /// <p>First character must be a letter</p></li>
230    /// <li>
231    /// <p>Cannot end with a hyphen or contain two consecutive hyphens</p></li>
232    /// </ul>
233    pub fn set_cluster_security_groups(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
234        self.inner = self.inner.set_cluster_security_groups(input);
235        self
236    }
237    /// <p>A list of cluster security groups to be authorized on this cluster. This change is asynchronously applied as soon as possible.</p>
238    /// <p>Security groups currently associated with the cluster, and not in the list of groups to apply, will be revoked from the cluster.</p>
239    /// <p>Constraints:</p>
240    /// <ul>
241    /// <li>
242    /// <p>Must be 1 to 255 alphanumeric characters or hyphens</p></li>
243    /// <li>
244    /// <p>First character must be a letter</p></li>
245    /// <li>
246    /// <p>Cannot end with a hyphen or contain two consecutive hyphens</p></li>
247    /// </ul>
248    pub fn get_cluster_security_groups(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
249        self.inner.get_cluster_security_groups()
250    }
251    ///
252    /// Appends an item to `VpcSecurityGroupIds`.
253    ///
254    /// To override the contents of this collection use [`set_vpc_security_group_ids`](Self::set_vpc_security_group_ids).
255    ///
256    /// <p>A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is asynchronously applied as soon as possible.</p>
257    pub fn vpc_security_group_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
258        self.inner = self.inner.vpc_security_group_ids(input.into());
259        self
260    }
261    /// <p>A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is asynchronously applied as soon as possible.</p>
262    pub fn set_vpc_security_group_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
263        self.inner = self.inner.set_vpc_security_group_ids(input);
264        self
265    }
266    /// <p>A list of virtual private cloud (VPC) security groups to be associated with the cluster. This change is asynchronously applied as soon as possible.</p>
267    pub fn get_vpc_security_group_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
268        self.inner.get_vpc_security_group_ids()
269    }
270    /// <p>The new password for the cluster admin user. This change is asynchronously applied as soon as possible. Between the time of the request and the completion of the request, the <code>MasterUserPassword</code> element exists in the <code>PendingModifiedValues</code> element of the operation response.</p>
271    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
272    /// <p>If your admin user account is locked, this operation also unlocks your account and resets the failed-login counter. This option is available only when account lockout security is enabled for the cluster.</p><note>
273    /// <p>Operations never return the password, so this operation provides a way to regain access to the admin user account for a cluster if the password is lost.</p>
274    /// </note>
275    /// <p>Default: Uses existing setting.</p>
276    /// <p>Constraints:</p>
277    /// <ul>
278    /// <li>
279    /// <p>Must be between 8 and 64 characters in length.</p></li>
280    /// <li>
281    /// <p>Must contain at least one uppercase letter.</p></li>
282    /// <li>
283    /// <p>Must contain at least one lowercase letter.</p></li>
284    /// <li>
285    /// <p>Must contain one number.</p></li>
286    /// <li>
287    /// <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>
288    /// </ul>
289    pub fn master_user_password(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
290        self.inner = self.inner.master_user_password(input.into());
291        self
292    }
293    /// <p>The new password for the cluster admin user. This change is asynchronously applied as soon as possible. Between the time of the request and the completion of the request, the <code>MasterUserPassword</code> element exists in the <code>PendingModifiedValues</code> element of the operation response.</p>
294    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
295    /// <p>If your admin user account is locked, this operation also unlocks your account and resets the failed-login counter. This option is available only when account lockout security is enabled for the cluster.</p><note>
296    /// <p>Operations never return the password, so this operation provides a way to regain access to the admin user account for a cluster if the password is lost.</p>
297    /// </note>
298    /// <p>Default: Uses existing setting.</p>
299    /// <p>Constraints:</p>
300    /// <ul>
301    /// <li>
302    /// <p>Must be between 8 and 64 characters in length.</p></li>
303    /// <li>
304    /// <p>Must contain at least one uppercase letter.</p></li>
305    /// <li>
306    /// <p>Must contain at least one lowercase letter.</p></li>
307    /// <li>
308    /// <p>Must contain one number.</p></li>
309    /// <li>
310    /// <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>
311    /// </ul>
312    pub fn set_master_user_password(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
313        self.inner = self.inner.set_master_user_password(input);
314        self
315    }
316    /// <p>The new password for the cluster admin user. This change is asynchronously applied as soon as possible. Between the time of the request and the completion of the request, the <code>MasterUserPassword</code> element exists in the <code>PendingModifiedValues</code> element of the operation response.</p>
317    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p>
318    /// <p>If your admin user account is locked, this operation also unlocks your account and resets the failed-login counter. This option is available only when account lockout security is enabled for the cluster.</p><note>
319    /// <p>Operations never return the password, so this operation provides a way to regain access to the admin user account for a cluster if the password is lost.</p>
320    /// </note>
321    /// <p>Default: Uses existing setting.</p>
322    /// <p>Constraints:</p>
323    /// <ul>
324    /// <li>
325    /// <p>Must be between 8 and 64 characters in length.</p></li>
326    /// <li>
327    /// <p>Must contain at least one uppercase letter.</p></li>
328    /// <li>
329    /// <p>Must contain at least one lowercase letter.</p></li>
330    /// <li>
331    /// <p>Must contain one number.</p></li>
332    /// <li>
333    /// <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>
334    /// </ul>
335    pub fn get_master_user_password(&self) -> &::std::option::Option<::std::string::String> {
336        self.inner.get_master_user_password()
337    }
338    /// <p>The name of the cluster parameter group to apply to this cluster. This change is applied only after the cluster is rebooted. To reboot a cluster use <code>RebootCluster</code>.</p>
339    /// <p>Default: Uses existing setting.</p>
340    /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
341    pub fn cluster_parameter_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
342        self.inner = self.inner.cluster_parameter_group_name(input.into());
343        self
344    }
345    /// <p>The name of the cluster parameter group to apply to this cluster. This change is applied only after the cluster is rebooted. To reboot a cluster use <code>RebootCluster</code>.</p>
346    /// <p>Default: Uses existing setting.</p>
347    /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
348    pub fn set_cluster_parameter_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
349        self.inner = self.inner.set_cluster_parameter_group_name(input);
350        self
351    }
352    /// <p>The name of the cluster parameter group to apply to this cluster. This change is applied only after the cluster is rebooted. To reboot a cluster use <code>RebootCluster</code>.</p>
353    /// <p>Default: Uses existing setting.</p>
354    /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
355    pub fn get_cluster_parameter_group_name(&self) -> &::std::option::Option<::std::string::String> {
356        self.inner.get_cluster_parameter_group_name()
357    }
358    /// <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>
359    /// <p>If you decrease the automated snapshot retention period from its current value, existing automated snapshots that fall outside of the new retention period will be immediately deleted.</p>
360    /// <p>You can't disable automated snapshots for RG or RA3 node types. Set the automated retention period from 1-35 days.</p>
361    /// <p>Default: Uses existing setting.</p>
362    /// <p>Constraints: Must be a value from 0 to 35.</p>
363    pub fn automated_snapshot_retention_period(mut self, input: i32) -> Self {
364        self.inner = self.inner.automated_snapshot_retention_period(input);
365        self
366    }
367    /// <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>
368    /// <p>If you decrease the automated snapshot retention period from its current value, existing automated snapshots that fall outside of the new retention period will be immediately deleted.</p>
369    /// <p>You can't disable automated snapshots for RG or RA3 node types. Set the automated retention period from 1-35 days.</p>
370    /// <p>Default: Uses existing setting.</p>
371    /// <p>Constraints: Must be a value from 0 to 35.</p>
372    pub fn set_automated_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
373        self.inner = self.inner.set_automated_snapshot_retention_period(input);
374        self
375    }
376    /// <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>
377    /// <p>If you decrease the automated snapshot retention period from its current value, existing automated snapshots that fall outside of the new retention period will be immediately deleted.</p>
378    /// <p>You can't disable automated snapshots for RG or RA3 node types. Set the automated retention period from 1-35 days.</p>
379    /// <p>Default: Uses existing setting.</p>
380    /// <p>Constraints: Must be a value from 0 to 35.</p>
381    pub fn get_automated_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
382        self.inner.get_automated_snapshot_retention_period()
383    }
384    /// <p>The default for number of days that a newly created manual snapshot is retained. If the value is -1, the manual snapshot is retained indefinitely. This value doesn't retroactively change the retention periods of existing manual snapshots.</p>
385    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
386    /// <p>The default value is -1.</p>
387    pub fn manual_snapshot_retention_period(mut self, input: i32) -> Self {
388        self.inner = self.inner.manual_snapshot_retention_period(input);
389        self
390    }
391    /// <p>The default for number of days that a newly created manual snapshot is retained. If the value is -1, the manual snapshot is retained indefinitely. This value doesn't retroactively change the retention periods of existing manual snapshots.</p>
392    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
393    /// <p>The default value is -1.</p>
394    pub fn set_manual_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
395        self.inner = self.inner.set_manual_snapshot_retention_period(input);
396        self
397    }
398    /// <p>The default for number of days that a newly created manual snapshot is retained. If the value is -1, the manual snapshot is retained indefinitely. This value doesn't retroactively change the retention periods of existing manual snapshots.</p>
399    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
400    /// <p>The default value is -1.</p>
401    pub fn get_manual_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
402        self.inner.get_manual_snapshot_retention_period()
403    }
404    /// <p>The weekly time range (in UTC) during which system maintenance can occur, if necessary. If system maintenance is necessary during the window, it may result in an outage.</p>
405    /// <p>This maintenance window change is made immediately. If the new maintenance window indicates the current time, there must be at least 120 minutes between the current time and end of the window in order to ensure that pending changes are applied.</p>
406    /// <p>Default: Uses existing setting.</p>
407    /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
408    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
409    /// <p>Constraints: Must be at least 30 minutes.</p>
410    pub fn preferred_maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
411        self.inner = self.inner.preferred_maintenance_window(input.into());
412        self
413    }
414    /// <p>The weekly time range (in UTC) during which system maintenance can occur, if necessary. If system maintenance is necessary during the window, it may result in an outage.</p>
415    /// <p>This maintenance window change is made immediately. If the new maintenance window indicates the current time, there must be at least 120 minutes between the current time and end of the window in order to ensure that pending changes are applied.</p>
416    /// <p>Default: Uses existing setting.</p>
417    /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
418    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
419    /// <p>Constraints: Must be at least 30 minutes.</p>
420    pub fn set_preferred_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
421        self.inner = self.inner.set_preferred_maintenance_window(input);
422        self
423    }
424    /// <p>The weekly time range (in UTC) during which system maintenance can occur, if necessary. If system maintenance is necessary during the window, it may result in an outage.</p>
425    /// <p>This maintenance window change is made immediately. If the new maintenance window indicates the current time, there must be at least 120 minutes between the current time and end of the window in order to ensure that pending changes are applied.</p>
426    /// <p>Default: Uses existing setting.</p>
427    /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
428    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
429    /// <p>Constraints: Must be at least 30 minutes.</p>
430    pub fn get_preferred_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
431        self.inner.get_preferred_maintenance_window()
432    }
433    /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
434    /// <p>For major version upgrades, if a non-default cluster parameter group is currently in use, a new cluster parameter group in the cluster parameter group family for the new version must be specified. The new cluster parameter group can be the default for that cluster parameter group family. For more information about parameters and parameter groups, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
435    /// <p>Example: <code>1.0</code></p>
436    pub fn cluster_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
437        self.inner = self.inner.cluster_version(input.into());
438        self
439    }
440    /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
441    /// <p>For major version upgrades, if a non-default cluster parameter group is currently in use, a new cluster parameter group in the cluster parameter group family for the new version must be specified. The new cluster parameter group can be the default for that cluster parameter group family. For more information about parameters and parameter groups, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
442    /// <p>Example: <code>1.0</code></p>
443    pub fn set_cluster_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
444        self.inner = self.inner.set_cluster_version(input);
445        self
446    }
447    /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
448    /// <p>For major version upgrades, if a non-default cluster parameter group is currently in use, a new cluster parameter group in the cluster parameter group family for the new version must be specified. The new cluster parameter group can be the default for that cluster parameter group family. For more information about parameters and parameter groups, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
449    /// <p>Example: <code>1.0</code></p>
450    pub fn get_cluster_version(&self) -> &::std::option::Option<::std::string::String> {
451        self.inner.get_cluster_version()
452    }
453    /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
454    /// <p>Default: <code>false</code></p>
455    pub fn allow_version_upgrade(mut self, input: bool) -> Self {
456        self.inner = self.inner.allow_version_upgrade(input);
457        self
458    }
459    /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
460    /// <p>Default: <code>false</code></p>
461    pub fn set_allow_version_upgrade(mut self, input: ::std::option::Option<bool>) -> Self {
462        self.inner = self.inner.set_allow_version_upgrade(input);
463        self
464    }
465    /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
466    /// <p>Default: <code>false</code></p>
467    pub fn get_allow_version_upgrade(&self) -> &::std::option::Option<bool> {
468        self.inner.get_allow_version_upgrade()
469    }
470    /// <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>
471    pub fn hsm_client_certificate_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
472        self.inner = self.inner.hsm_client_certificate_identifier(input.into());
473        self
474    }
475    /// <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>
476    pub fn set_hsm_client_certificate_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
477        self.inner = self.inner.set_hsm_client_certificate_identifier(input);
478        self
479    }
480    /// <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>
481    pub fn get_hsm_client_certificate_identifier(&self) -> &::std::option::Option<::std::string::String> {
482        self.inner.get_hsm_client_certificate_identifier()
483    }
484    /// <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>
485    pub fn hsm_configuration_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
486        self.inner = self.inner.hsm_configuration_identifier(input.into());
487        self
488    }
489    /// <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>
490    pub fn set_hsm_configuration_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
491        self.inner = self.inner.set_hsm_configuration_identifier(input);
492        self
493    }
494    /// <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>
495    pub fn get_hsm_configuration_identifier(&self) -> &::std::option::Option<::std::string::String> {
496        self.inner.get_hsm_configuration_identifier()
497    }
498    /// <p>The new identifier for the cluster.</p>
499    /// <p>Constraints:</p>
500    /// <ul>
501    /// <li>
502    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
503    /// <li>
504    /// <p>Alphabetic characters must be lowercase.</p></li>
505    /// <li>
506    /// <p>First character must be a letter.</p></li>
507    /// <li>
508    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
509    /// <li>
510    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
511    /// </ul>
512    /// <p>Example: <code>examplecluster</code></p>
513    pub fn new_cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
514        self.inner = self.inner.new_cluster_identifier(input.into());
515        self
516    }
517    /// <p>The new identifier for the cluster.</p>
518    /// <p>Constraints:</p>
519    /// <ul>
520    /// <li>
521    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
522    /// <li>
523    /// <p>Alphabetic characters must be lowercase.</p></li>
524    /// <li>
525    /// <p>First character must be a letter.</p></li>
526    /// <li>
527    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
528    /// <li>
529    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
530    /// </ul>
531    /// <p>Example: <code>examplecluster</code></p>
532    pub fn set_new_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
533        self.inner = self.inner.set_new_cluster_identifier(input);
534        self
535    }
536    /// <p>The new identifier for the cluster.</p>
537    /// <p>Constraints:</p>
538    /// <ul>
539    /// <li>
540    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
541    /// <li>
542    /// <p>Alphabetic characters must be lowercase.</p></li>
543    /// <li>
544    /// <p>First character must be a letter.</p></li>
545    /// <li>
546    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
547    /// <li>
548    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
549    /// </ul>
550    /// <p>Example: <code>examplecluster</code></p>
551    pub fn get_new_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
552        self.inner.get_new_cluster_identifier()
553    }
554    /// <p>If <code>true</code>, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available.</p>
555    /// <p>Default: false</p>
556    pub fn publicly_accessible(mut self, input: bool) -> Self {
557        self.inner = self.inner.publicly_accessible(input);
558        self
559    }
560    /// <p>If <code>true</code>, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available.</p>
561    /// <p>Default: false</p>
562    pub fn set_publicly_accessible(mut self, input: ::std::option::Option<bool>) -> Self {
563        self.inner = self.inner.set_publicly_accessible(input);
564        self
565    }
566    /// <p>If <code>true</code>, the cluster can be accessed from a public network. Only clusters in VPCs can be set to be publicly available.</p>
567    /// <p>Default: false</p>
568    pub fn get_publicly_accessible(&self) -> &::std::option::Option<bool> {
569        self.inner.get_publicly_accessible()
570    }
571    /// <p>The Elastic IP (EIP) address for the cluster.</p>
572    /// <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For more information about provisioning clusters in EC2-VPC, go to <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>
573    pub fn elastic_ip(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
574        self.inner = self.inner.elastic_ip(input.into());
575        self
576    }
577    /// <p>The Elastic IP (EIP) address for the cluster.</p>
578    /// <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For more information about provisioning clusters in EC2-VPC, go to <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>
579    pub fn set_elastic_ip(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
580        self.inner = self.inner.set_elastic_ip(input);
581        self
582    }
583    /// <p>The Elastic IP (EIP) address for the cluster.</p>
584    /// <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For more information about provisioning clusters in EC2-VPC, go to <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>
585    pub fn get_elastic_ip(&self) -> &::std::option::Option<::std::string::String> {
586        self.inner.get_elastic_ip()
587    }
588    /// <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>
589    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
590    /// <p>Default: false</p>
591    pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
592        self.inner = self.inner.enhanced_vpc_routing(input);
593        self
594    }
595    /// <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>
596    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
597    /// <p>Default: false</p>
598    pub fn set_enhanced_vpc_routing(mut self, input: ::std::option::Option<bool>) -> Self {
599        self.inner = self.inner.set_enhanced_vpc_routing(input);
600        self
601    }
602    /// <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>
603    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
604    /// <p>Default: false</p>
605    pub fn get_enhanced_vpc_routing(&self) -> &::std::option::Option<bool> {
606        self.inner.get_enhanced_vpc_routing()
607    }
608    /// <p>The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the <code>PendingModifiedValues</code> for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.</p>
609    pub fn maintenance_track_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
610        self.inner = self.inner.maintenance_track_name(input.into());
611        self
612    }
613    /// <p>The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the <code>PendingModifiedValues</code> for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.</p>
614    pub fn set_maintenance_track_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
615        self.inner = self.inner.set_maintenance_track_name(input);
616        self
617    }
618    /// <p>The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the <code>PendingModifiedValues</code> for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.</p>
619    pub fn get_maintenance_track_name(&self) -> &::std::option::Option<::std::string::String> {
620        self.inner.get_maintenance_track_name()
621    }
622    /// <p>Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the <code>KmsKeyId</code> parameter, we encrypt the cluster with the provided <code>KmsKeyId</code>. If you don't provide a <code>KmsKeyId</code>, we encrypt with the default key.</p>
623    /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
624    pub fn encrypted(mut self, input: bool) -> Self {
625        self.inner = self.inner.encrypted(input);
626        self
627    }
628    /// <p>Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the <code>KmsKeyId</code> parameter, we encrypt the cluster with the provided <code>KmsKeyId</code>. If you don't provide a <code>KmsKeyId</code>, we encrypt with the default key.</p>
629    /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
630    pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
631        self.inner = self.inner.set_encrypted(input);
632        self
633    }
634    /// <p>Indicates whether the cluster is encrypted. If the value is encrypted (true) and you provide a value for the <code>KmsKeyId</code> parameter, we encrypt the cluster with the provided <code>KmsKeyId</code>. If you don't provide a <code>KmsKeyId</code>, we encrypt with the default key.</p>
635    /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
636    pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
637        self.inner.get_encrypted()
638    }
639    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
640    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
641        self.inner = self.inner.kms_key_id(input.into());
642        self
643    }
644    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
645    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
646        self.inner = self.inner.set_kms_key_id(input);
647        self
648    }
649    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
650    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
651        self.inner.get_kms_key_id()
652    }
653    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
654    pub fn availability_zone_relocation(mut self, input: bool) -> Self {
655        self.inner = self.inner.availability_zone_relocation(input);
656        self
657    }
658    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
659    pub fn set_availability_zone_relocation(mut self, input: ::std::option::Option<bool>) -> Self {
660        self.inner = self.inner.set_availability_zone_relocation(input);
661        self
662    }
663    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
664    pub fn get_availability_zone_relocation(&self) -> &::std::option::Option<bool> {
665        self.inner.get_availability_zone_relocation()
666    }
667    /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
668    pub fn availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
669        self.inner = self.inner.availability_zone(input.into());
670        self
671    }
672    /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
673    pub fn set_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
674        self.inner = self.inner.set_availability_zone(input);
675        self
676    }
677    /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
678    pub fn get_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
679        self.inner.get_availability_zone()
680    }
681    /// <p>The option to change the port of an Amazon Redshift cluster.</p>
682    /// <p>Valid Values:</p>
683    /// <ul>
684    /// <li>
685    /// <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>
686    /// <li>
687    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
688    /// </ul>
689    pub fn port(mut self, input: i32) -> Self {
690        self.inner = self.inner.port(input);
691        self
692    }
693    /// <p>The option to change the port of an Amazon Redshift cluster.</p>
694    /// <p>Valid Values:</p>
695    /// <ul>
696    /// <li>
697    /// <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>
698    /// <li>
699    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
700    /// </ul>
701    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
702        self.inner = self.inner.set_port(input);
703        self
704    }
705    /// <p>The option to change the port of an Amazon Redshift cluster.</p>
706    /// <p>Valid Values:</p>
707    /// <ul>
708    /// <li>
709    /// <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>
710    /// <li>
711    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
712    /// </ul>
713    pub fn get_port(&self) -> &::std::option::Option<i32> {
714        self.inner.get_port()
715    }
716    /// <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>
717    pub fn manage_master_password(mut self, input: bool) -> Self {
718        self.inner = self.inner.manage_master_password(input);
719        self
720    }
721    /// <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>
722    pub fn set_manage_master_password(mut self, input: ::std::option::Option<bool>) -> Self {
723        self.inner = self.inner.set_manage_master_password(input);
724        self
725    }
726    /// <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>
727    pub fn get_manage_master_password(&self) -> &::std::option::Option<bool> {
728        self.inner.get_manage_master_password()
729    }
730    /// <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>
731    pub fn master_password_secret_kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
732        self.inner = self.inner.master_password_secret_kms_key_id(input.into());
733        self
734    }
735    /// <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>
736    pub fn set_master_password_secret_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
737        self.inner = self.inner.set_master_password_secret_kms_key_id(input);
738        self
739    }
740    /// <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>
741    pub fn get_master_password_secret_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
742        self.inner.get_master_password_secret_kms_key_id()
743    }
744    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
745    pub fn ip_address_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
746        self.inner = self.inner.ip_address_type(input.into());
747        self
748    }
749    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
750    pub fn set_ip_address_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
751        self.inner = self.inner.set_ip_address_type(input);
752        self
753    }
754    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
755    pub fn get_ip_address_type(&self) -> &::std::option::Option<::std::string::String> {
756        self.inner.get_ip_address_type()
757    }
758    /// <p>If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones.</p>
759    pub fn multi_az(mut self, input: bool) -> Self {
760        self.inner = self.inner.multi_az(input);
761        self
762    }
763    /// <p>If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones.</p>
764    pub fn set_multi_az(mut self, input: ::std::option::Option<bool>) -> Self {
765        self.inner = self.inner.set_multi_az(input);
766        self
767    }
768    /// <p>If true and the cluster is currently only deployed in a single Availability Zone, the cluster will be modified to be deployed in two Availability Zones.</p>
769    pub fn get_multi_az(&self) -> &::std::option::Option<bool> {
770        self.inner.get_multi_az()
771    }
772    /// <p>If <code>true</code>, allocates additional compute resources for running automatic optimization operations.</p>
773    /// <p>Default: false</p>
774    pub fn extra_compute_for_automatic_optimization(mut self, input: bool) -> Self {
775        self.inner = self.inner.extra_compute_for_automatic_optimization(input);
776        self
777    }
778    /// <p>If <code>true</code>, allocates additional compute resources for running automatic optimization operations.</p>
779    /// <p>Default: false</p>
780    pub fn set_extra_compute_for_automatic_optimization(mut self, input: ::std::option::Option<bool>) -> Self {
781        self.inner = self.inner.set_extra_compute_for_automatic_optimization(input);
782        self
783    }
784    /// <p>If <code>true</code>, allocates additional compute resources for running automatic optimization operations.</p>
785    /// <p>Default: false</p>
786    pub fn get_extra_compute_for_automatic_optimization(&self) -> &::std::option::Option<bool> {
787        self.inner.get_extra_compute_for_automatic_optimization()
788    }
789}