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_output::ModifyClusterOutputBuilder;
3
4pub use crate::operation::modify_cluster::_modify_cluster_input::ModifyClusterInputBuilder;
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>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>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>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><note>
272    /// <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>
273    /// </note>
274    /// <p>Default: Uses existing setting.</p>
275    /// <p>Constraints:</p>
276    /// <ul>
277    /// <li>
278    /// <p>Must be between 8 and 64 characters in length.</p></li>
279    /// <li>
280    /// <p>Must contain at least one uppercase letter.</p></li>
281    /// <li>
282    /// <p>Must contain at least one lowercase letter.</p></li>
283    /// <li>
284    /// <p>Must contain one number.</p></li>
285    /// <li>
286    /// <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>
287    /// </ul>
288    pub fn master_user_password(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
289        self.inner = self.inner.master_user_password(input.into());
290        self
291    }
292    /// <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>
293    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p><note>
294    /// <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>
295    /// </note>
296    /// <p>Default: Uses existing setting.</p>
297    /// <p>Constraints:</p>
298    /// <ul>
299    /// <li>
300    /// <p>Must be between 8 and 64 characters in length.</p></li>
301    /// <li>
302    /// <p>Must contain at least one uppercase letter.</p></li>
303    /// <li>
304    /// <p>Must contain at least one lowercase letter.</p></li>
305    /// <li>
306    /// <p>Must contain one number.</p></li>
307    /// <li>
308    /// <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>
309    /// </ul>
310    pub fn set_master_user_password(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
311        self.inner = self.inner.set_master_user_password(input);
312        self
313    }
314    /// <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>
315    /// <p>You can't use <code>MasterUserPassword</code> if <code>ManageMasterPassword</code> is <code>true</code>.</p><note>
316    /// <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>
317    /// </note>
318    /// <p>Default: Uses existing setting.</p>
319    /// <p>Constraints:</p>
320    /// <ul>
321    /// <li>
322    /// <p>Must be between 8 and 64 characters in length.</p></li>
323    /// <li>
324    /// <p>Must contain at least one uppercase letter.</p></li>
325    /// <li>
326    /// <p>Must contain at least one lowercase letter.</p></li>
327    /// <li>
328    /// <p>Must contain one number.</p></li>
329    /// <li>
330    /// <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>
331    /// </ul>
332    pub fn get_master_user_password(&self) -> &::std::option::Option<::std::string::String> {
333        self.inner.get_master_user_password()
334    }
335    /// <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>
336    /// <p>Default: Uses existing setting.</p>
337    /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
338    pub fn cluster_parameter_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
339        self.inner = self.inner.cluster_parameter_group_name(input.into());
340        self
341    }
342    /// <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>
343    /// <p>Default: Uses existing setting.</p>
344    /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
345    pub fn set_cluster_parameter_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
346        self.inner = self.inner.set_cluster_parameter_group_name(input);
347        self
348    }
349    /// <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>
350    /// <p>Default: Uses existing setting.</p>
351    /// <p>Constraints: The cluster parameter group must be in the same parameter group family that matches the cluster version.</p>
352    pub fn get_cluster_parameter_group_name(&self) -> &::std::option::Option<::std::string::String> {
353        self.inner.get_cluster_parameter_group_name()
354    }
355    /// <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>
356    /// <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>
357    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
358    /// <p>Default: Uses existing setting.</p>
359    /// <p>Constraints: Must be a value from 0 to 35.</p>
360    pub fn automated_snapshot_retention_period(mut self, input: i32) -> Self {
361        self.inner = self.inner.automated_snapshot_retention_period(input);
362        self
363    }
364    /// <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>
365    /// <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>
366    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
367    /// <p>Default: Uses existing setting.</p>
368    /// <p>Constraints: Must be a value from 0 to 35.</p>
369    pub fn set_automated_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
370        self.inner = self.inner.set_automated_snapshot_retention_period(input);
371        self
372    }
373    /// <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>
374    /// <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>
375    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
376    /// <p>Default: Uses existing setting.</p>
377    /// <p>Constraints: Must be a value from 0 to 35.</p>
378    pub fn get_automated_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
379        self.inner.get_automated_snapshot_retention_period()
380    }
381    /// <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>
382    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
383    /// <p>The default value is -1.</p>
384    pub fn manual_snapshot_retention_period(mut self, input: i32) -> Self {
385        self.inner = self.inner.manual_snapshot_retention_period(input);
386        self
387    }
388    /// <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>
389    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
390    /// <p>The default value is -1.</p>
391    pub fn set_manual_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
392        self.inner = self.inner.set_manual_snapshot_retention_period(input);
393        self
394    }
395    /// <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>
396    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
397    /// <p>The default value is -1.</p>
398    pub fn get_manual_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
399        self.inner.get_manual_snapshot_retention_period()
400    }
401    /// <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>
402    /// <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>
403    /// <p>Default: Uses existing setting.</p>
404    /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
405    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
406    /// <p>Constraints: Must be at least 30 minutes.</p>
407    pub fn preferred_maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
408        self.inner = self.inner.preferred_maintenance_window(input.into());
409        self
410    }
411    /// <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>
412    /// <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>
413    /// <p>Default: Uses existing setting.</p>
414    /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
415    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
416    /// <p>Constraints: Must be at least 30 minutes.</p>
417    pub fn set_preferred_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
418        self.inner = self.inner.set_preferred_maintenance_window(input);
419        self
420    }
421    /// <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>
422    /// <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>
423    /// <p>Default: Uses existing setting.</p>
424    /// <p>Format: ddd:hh24:mi-ddd:hh24:mi, for example <code>wed:07:30-wed:08:00</code>.</p>
425    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
426    /// <p>Constraints: Must be at least 30 minutes.</p>
427    pub fn get_preferred_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
428        self.inner.get_preferred_maintenance_window()
429    }
430    /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
431    /// <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>
432    /// <p>Example: <code>1.0</code></p>
433    pub fn cluster_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
434        self.inner = self.inner.cluster_version(input.into());
435        self
436    }
437    /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
438    /// <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>
439    /// <p>Example: <code>1.0</code></p>
440    pub fn set_cluster_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
441        self.inner = self.inner.set_cluster_version(input);
442        self
443    }
444    /// <p>The new version number of the Amazon Redshift engine to upgrade to.</p>
445    /// <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>
446    /// <p>Example: <code>1.0</code></p>
447    pub fn get_cluster_version(&self) -> &::std::option::Option<::std::string::String> {
448        self.inner.get_cluster_version()
449    }
450    /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
451    /// <p>Default: <code>false</code></p>
452    pub fn allow_version_upgrade(mut self, input: bool) -> Self {
453        self.inner = self.inner.allow_version_upgrade(input);
454        self
455    }
456    /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
457    /// <p>Default: <code>false</code></p>
458    pub fn set_allow_version_upgrade(mut self, input: ::std::option::Option<bool>) -> Self {
459        self.inner = self.inner.set_allow_version_upgrade(input);
460        self
461    }
462    /// <p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window.</p>
463    /// <p>Default: <code>false</code></p>
464    pub fn get_allow_version_upgrade(&self) -> &::std::option::Option<bool> {
465        self.inner.get_allow_version_upgrade()
466    }
467    /// <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>
468    pub fn hsm_client_certificate_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
469        self.inner = self.inner.hsm_client_certificate_identifier(input.into());
470        self
471    }
472    /// <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>
473    pub fn set_hsm_client_certificate_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
474        self.inner = self.inner.set_hsm_client_certificate_identifier(input);
475        self
476    }
477    /// <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>
478    pub fn get_hsm_client_certificate_identifier(&self) -> &::std::option::Option<::std::string::String> {
479        self.inner.get_hsm_client_certificate_identifier()
480    }
481    /// <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>
482    pub fn hsm_configuration_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
483        self.inner = self.inner.hsm_configuration_identifier(input.into());
484        self
485    }
486    /// <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>
487    pub fn set_hsm_configuration_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
488        self.inner = self.inner.set_hsm_configuration_identifier(input);
489        self
490    }
491    /// <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>
492    pub fn get_hsm_configuration_identifier(&self) -> &::std::option::Option<::std::string::String> {
493        self.inner.get_hsm_configuration_identifier()
494    }
495    /// <p>The new identifier for the cluster.</p>
496    /// <p>Constraints:</p>
497    /// <ul>
498    /// <li>
499    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
500    /// <li>
501    /// <p>Alphabetic characters must be lowercase.</p></li>
502    /// <li>
503    /// <p>First character must be a letter.</p></li>
504    /// <li>
505    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
506    /// <li>
507    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
508    /// </ul>
509    /// <p>Example: <code>examplecluster</code></p>
510    pub fn new_cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
511        self.inner = self.inner.new_cluster_identifier(input.into());
512        self
513    }
514    /// <p>The new identifier for the cluster.</p>
515    /// <p>Constraints:</p>
516    /// <ul>
517    /// <li>
518    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
519    /// <li>
520    /// <p>Alphabetic characters must be lowercase.</p></li>
521    /// <li>
522    /// <p>First character must be a letter.</p></li>
523    /// <li>
524    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
525    /// <li>
526    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
527    /// </ul>
528    /// <p>Example: <code>examplecluster</code></p>
529    pub fn set_new_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
530        self.inner = self.inner.set_new_cluster_identifier(input);
531        self
532    }
533    /// <p>The new identifier for the cluster.</p>
534    /// <p>Constraints:</p>
535    /// <ul>
536    /// <li>
537    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
538    /// <li>
539    /// <p>Alphabetic characters must be lowercase.</p></li>
540    /// <li>
541    /// <p>First character must be a letter.</p></li>
542    /// <li>
543    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
544    /// <li>
545    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
546    /// </ul>
547    /// <p>Example: <code>examplecluster</code></p>
548    pub fn get_new_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
549        self.inner.get_new_cluster_identifier()
550    }
551    /// <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>
552    /// <p>Default: false</p>
553    pub fn publicly_accessible(mut self, input: bool) -> Self {
554        self.inner = self.inner.publicly_accessible(input);
555        self
556    }
557    /// <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>
558    /// <p>Default: false</p>
559    pub fn set_publicly_accessible(mut self, input: ::std::option::Option<bool>) -> Self {
560        self.inner = self.inner.set_publicly_accessible(input);
561        self
562    }
563    /// <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>
564    /// <p>Default: false</p>
565    pub fn get_publicly_accessible(&self) -> &::std::option::Option<bool> {
566        self.inner.get_publicly_accessible()
567    }
568    /// <p>The Elastic IP (EIP) address for the cluster.</p>
569    /// <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>
570    pub fn elastic_ip(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
571        self.inner = self.inner.elastic_ip(input.into());
572        self
573    }
574    /// <p>The Elastic IP (EIP) address for the cluster.</p>
575    /// <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>
576    pub fn set_elastic_ip(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
577        self.inner = self.inner.set_elastic_ip(input);
578        self
579    }
580    /// <p>The Elastic IP (EIP) address for the cluster.</p>
581    /// <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>
582    pub fn get_elastic_ip(&self) -> &::std::option::Option<::std::string::String> {
583        self.inner.get_elastic_ip()
584    }
585    /// <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>
586    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
587    /// <p>Default: false</p>
588    pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
589        self.inner = self.inner.enhanced_vpc_routing(input);
590        self
591    }
592    /// <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>
593    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
594    /// <p>Default: false</p>
595    pub fn set_enhanced_vpc_routing(mut self, input: ::std::option::Option<bool>) -> Self {
596        self.inner = self.inner.set_enhanced_vpc_routing(input);
597        self
598    }
599    /// <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>
600    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
601    /// <p>Default: false</p>
602    pub fn get_enhanced_vpc_routing(&self) -> &::std::option::Option<bool> {
603        self.inner.get_enhanced_vpc_routing()
604    }
605    /// <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>
606    pub fn maintenance_track_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
607        self.inner = self.inner.maintenance_track_name(input.into());
608        self
609    }
610    /// <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>
611    pub fn set_maintenance_track_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
612        self.inner = self.inner.set_maintenance_track_name(input);
613        self
614    }
615    /// <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>
616    pub fn get_maintenance_track_name(&self) -> &::std::option::Option<::std::string::String> {
617        self.inner.get_maintenance_track_name()
618    }
619    /// <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>
620    /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
621    pub fn encrypted(mut self, input: bool) -> Self {
622        self.inner = self.inner.encrypted(input);
623        self
624    }
625    /// <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>
626    /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
627    pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
628        self.inner = self.inner.set_encrypted(input);
629        self
630    }
631    /// <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>
632    /// <p>If the value is not encrypted (false), then the cluster is decrypted.</p>
633    pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
634        self.inner.get_encrypted()
635    }
636    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
637    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
638        self.inner = self.inner.kms_key_id(input.into());
639        self
640    }
641    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
642    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
643        self.inner = self.inner.set_kms_key_id(input);
644        self
645    }
646    /// <p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>
647    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
648        self.inner.get_kms_key_id()
649    }
650    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
651    pub fn availability_zone_relocation(mut self, input: bool) -> Self {
652        self.inner = self.inner.availability_zone_relocation(input);
653        self
654    }
655    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
656    pub fn set_availability_zone_relocation(mut self, input: ::std::option::Option<bool>) -> Self {
657        self.inner = self.inner.set_availability_zone_relocation(input);
658        self
659    }
660    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster modification is complete.</p>
661    pub fn get_availability_zone_relocation(&self) -> &::std::option::Option<bool> {
662        self.inner.get_availability_zone_relocation()
663    }
664    /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
665    pub fn availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
666        self.inner = self.inner.availability_zone(input.into());
667        self
668    }
669    /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
670    pub fn set_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
671        self.inner = self.inner.set_availability_zone(input);
672        self
673    }
674    /// <p>The option to initiate relocation for an Amazon Redshift cluster to the target Availability Zone.</p>
675    pub fn get_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
676        self.inner.get_availability_zone()
677    }
678    /// <p>The option to change the port of an Amazon Redshift cluster.</p>
679    /// <p>Valid Values:</p>
680    /// <ul>
681    /// <li>
682    /// <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>
683    /// <li>
684    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
685    /// </ul>
686    pub fn port(mut self, input: i32) -> Self {
687        self.inner = self.inner.port(input);
688        self
689    }
690    /// <p>The option to change the port of an Amazon Redshift cluster.</p>
691    /// <p>Valid Values:</p>
692    /// <ul>
693    /// <li>
694    /// <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>
695    /// <li>
696    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
697    /// </ul>
698    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
699        self.inner = self.inner.set_port(input);
700        self
701    }
702    /// <p>The option to change the port of an Amazon Redshift cluster.</p>
703    /// <p>Valid Values:</p>
704    /// <ul>
705    /// <li>
706    /// <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>
707    /// <li>
708    /// <p>For clusters with dc2 nodes - Select a port within the range <code>1150-65535</code>.</p></li>
709    /// </ul>
710    pub fn get_port(&self) -> &::std::option::Option<i32> {
711        self.inner.get_port()
712    }
713    /// <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>
714    pub fn manage_master_password(mut self, input: bool) -> Self {
715        self.inner = self.inner.manage_master_password(input);
716        self
717    }
718    /// <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>
719    pub fn set_manage_master_password(mut self, input: ::std::option::Option<bool>) -> Self {
720        self.inner = self.inner.set_manage_master_password(input);
721        self
722    }
723    /// <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>
724    pub fn get_manage_master_password(&self) -> &::std::option::Option<bool> {
725        self.inner.get_manage_master_password()
726    }
727    /// <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>
728    pub fn master_password_secret_kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
729        self.inner = self.inner.master_password_secret_kms_key_id(input.into());
730        self
731    }
732    /// <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>
733    pub fn set_master_password_secret_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
734        self.inner = self.inner.set_master_password_secret_kms_key_id(input);
735        self
736    }
737    /// <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>
738    pub fn get_master_password_secret_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
739        self.inner.get_master_password_secret_kms_key_id()
740    }
741    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
742    pub fn ip_address_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
743        self.inner = self.inner.ip_address_type(input.into());
744        self
745    }
746    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
747    pub fn set_ip_address_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
748        self.inner = self.inner.set_ip_address_type(input);
749        self
750    }
751    /// <p>The IP address types that the cluster supports. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
752    pub fn get_ip_address_type(&self) -> &::std::option::Option<::std::string::String> {
753        self.inner.get_ip_address_type()
754    }
755    /// <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>
756    pub fn multi_az(mut self, input: bool) -> Self {
757        self.inner = self.inner.multi_az(input);
758        self
759    }
760    /// <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>
761    pub fn set_multi_az(mut self, input: ::std::option::Option<bool>) -> Self {
762        self.inner = self.inner.set_multi_az(input);
763        self
764    }
765    /// <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>
766    pub fn get_multi_az(&self) -> &::std::option::Option<bool> {
767        self.inner.get_multi_az()
768    }
769}