aws_sdk_redshift/operation/restore_from_cluster_snapshot/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::restore_from_cluster_snapshot::_restore_from_cluster_snapshot_output::RestoreFromClusterSnapshotOutputBuilder;
3
4pub use crate::operation::restore_from_cluster_snapshot::_restore_from_cluster_snapshot_input::RestoreFromClusterSnapshotInputBuilder;
5
6impl crate::operation::restore_from_cluster_snapshot::builders::RestoreFromClusterSnapshotInputBuilder {
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::restore_from_cluster_snapshot::RestoreFromClusterSnapshotOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::restore_from_cluster_snapshot::RestoreFromClusterSnapshotError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.restore_from_cluster_snapshot();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `RestoreFromClusterSnapshot`.
24///
25/// <p>Creates a new cluster from a snapshot. By default, Amazon Redshift creates the resulting cluster with the same configuration as the original cluster from which the snapshot was created, except that the new cluster is created with the default cluster security and parameter groups. After Amazon Redshift creates the cluster, you can use the <code>ModifyCluster</code> API to associate a different security group and different parameter group with the restored cluster. If you are using a DS node type, you can also choose to change to another DS node type of the same size during restore.</p>
26/// <p>If you restore a cluster into a VPC, you must provide a cluster subnet group where you want the cluster restored.</p>
27/// <p>VPC Block Public Access (BPA) enables you to block resources in VPCs and subnets that you own in a Region from reaching or being reached from the internet through internet gateways and egress-only internet gateways. If a subnet group for a provisioned cluster is in an account with VPC BPA turned on, the following capabilities are blocked:</p>
28/// <ul>
29/// <li>
30/// <p>Creating a public cluster</p></li>
31/// <li>
32/// <p>Restoring a public cluster</p></li>
33/// <li>
34/// <p>Modifying a private cluster to be public</p></li>
35/// <li>
36/// <p>Adding a subnet with VPC BPA turned on to the subnet group when there's at least one public cluster within the group</p></li>
37/// </ul>
38/// <p>For more information about VPC BPA, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/security-vpc-bpa.html">Block public access to VPCs and subnets</a> in the <i>Amazon VPC User Guide</i>.</p>
39/// <p>For more information about working with snapshots, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html">Amazon Redshift Snapshots</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
40#[derive(::std::clone::Clone, ::std::fmt::Debug)]
41pub struct RestoreFromClusterSnapshotFluentBuilder {
42    handle: ::std::sync::Arc<crate::client::Handle>,
43    inner: crate::operation::restore_from_cluster_snapshot::builders::RestoreFromClusterSnapshotInputBuilder,
44    config_override: ::std::option::Option<crate::config::Builder>,
45}
46impl
47    crate::client::customize::internal::CustomizableSend<
48        crate::operation::restore_from_cluster_snapshot::RestoreFromClusterSnapshotOutput,
49        crate::operation::restore_from_cluster_snapshot::RestoreFromClusterSnapshotError,
50    > for RestoreFromClusterSnapshotFluentBuilder
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::restore_from_cluster_snapshot::RestoreFromClusterSnapshotOutput,
58            crate::operation::restore_from_cluster_snapshot::RestoreFromClusterSnapshotError,
59        >,
60    > {
61        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
62    }
63}
64impl RestoreFromClusterSnapshotFluentBuilder {
65    /// Creates a new `RestoreFromClusterSnapshotFluentBuilder`.
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 RestoreFromClusterSnapshot as a reference.
74    pub fn as_input(&self) -> &crate::operation::restore_from_cluster_snapshot::builders::RestoreFromClusterSnapshotInputBuilder {
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::restore_from_cluster_snapshot::RestoreFromClusterSnapshotOutput,
89        ::aws_smithy_runtime_api::client::result::SdkError<
90            crate::operation::restore_from_cluster_snapshot::RestoreFromClusterSnapshotError,
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::restore_from_cluster_snapshot::RestoreFromClusterSnapshot::operation_runtime_plugins(
99            self.handle.runtime_plugins.clone(),
100            &self.handle.conf,
101            self.config_override,
102        );
103        crate::operation::restore_from_cluster_snapshot::RestoreFromClusterSnapshot::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::restore_from_cluster_snapshot::RestoreFromClusterSnapshotOutput,
111        crate::operation::restore_from_cluster_snapshot::RestoreFromClusterSnapshotError,
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 identifier of the cluster that will be created from restoring the snapshot.</p>
126    /// <p>Constraints:</p>
127    /// <ul>
128    /// <li>
129    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
130    /// <li>
131    /// <p>Alphabetic characters must be lowercase.</p></li>
132    /// <li>
133    /// <p>First character must be a letter.</p></li>
134    /// <li>
135    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
136    /// <li>
137    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
138    /// </ul>
139    pub fn cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
140        self.inner = self.inner.cluster_identifier(input.into());
141        self
142    }
143    /// <p>The identifier of the cluster that will be created from restoring the snapshot.</p>
144    /// <p>Constraints:</p>
145    /// <ul>
146    /// <li>
147    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
148    /// <li>
149    /// <p>Alphabetic characters must be lowercase.</p></li>
150    /// <li>
151    /// <p>First character must be a letter.</p></li>
152    /// <li>
153    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
154    /// <li>
155    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
156    /// </ul>
157    pub fn set_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
158        self.inner = self.inner.set_cluster_identifier(input);
159        self
160    }
161    /// <p>The identifier of the cluster that will be created from restoring the snapshot.</p>
162    /// <p>Constraints:</p>
163    /// <ul>
164    /// <li>
165    /// <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p></li>
166    /// <li>
167    /// <p>Alphabetic characters must be lowercase.</p></li>
168    /// <li>
169    /// <p>First character must be a letter.</p></li>
170    /// <li>
171    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
172    /// <li>
173    /// <p>Must be unique for all clusters within an Amazon Web Services account.</p></li>
174    /// </ul>
175    pub fn get_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
176        self.inner.get_cluster_identifier()
177    }
178    /// <p>The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive. You must specify this parameter or <code>snapshotArn</code>, but not both.</p>
179    /// <p>Example: <code>my-snapshot-id</code></p>
180    pub fn snapshot_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
181        self.inner = self.inner.snapshot_identifier(input.into());
182        self
183    }
184    /// <p>The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive. You must specify this parameter or <code>snapshotArn</code>, but not both.</p>
185    /// <p>Example: <code>my-snapshot-id</code></p>
186    pub fn set_snapshot_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
187        self.inner = self.inner.set_snapshot_identifier(input);
188        self
189    }
190    /// <p>The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive. You must specify this parameter or <code>snapshotArn</code>, but not both.</p>
191    /// <p>Example: <code>my-snapshot-id</code></p>
192    pub fn get_snapshot_identifier(&self) -> &::std::option::Option<::std::string::String> {
193        self.inner.get_snapshot_identifier()
194    }
195    /// <p>The Amazon Resource Name (ARN) of the snapshot associated with the message to restore from a cluster. You must specify this parameter or <code>snapshotIdentifier</code>, but not both.</p>
196    pub fn snapshot_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
197        self.inner = self.inner.snapshot_arn(input.into());
198        self
199    }
200    /// <p>The Amazon Resource Name (ARN) of the snapshot associated with the message to restore from a cluster. You must specify this parameter or <code>snapshotIdentifier</code>, but not both.</p>
201    pub fn set_snapshot_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
202        self.inner = self.inner.set_snapshot_arn(input);
203        self
204    }
205    /// <p>The Amazon Resource Name (ARN) of the snapshot associated with the message to restore from a cluster. You must specify this parameter or <code>snapshotIdentifier</code>, but not both.</p>
206    pub fn get_snapshot_arn(&self) -> &::std::option::Option<::std::string::String> {
207        self.inner.get_snapshot_arn()
208    }
209    /// <p>The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.</p>
210    pub fn snapshot_cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
211        self.inner = self.inner.snapshot_cluster_identifier(input.into());
212        self
213    }
214    /// <p>The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.</p>
215    pub fn set_snapshot_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
216        self.inner = self.inner.set_snapshot_cluster_identifier(input);
217        self
218    }
219    /// <p>The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.</p>
220    pub fn get_snapshot_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
221        self.inner.get_snapshot_cluster_identifier()
222    }
223    /// <p>The port number on which the cluster accepts connections.</p>
224    /// <p>Default: The same port as the original cluster.</p>
225    /// <p>Valid values: For clusters with DC2 nodes, must be within the range <code>1150</code>-<code>65535</code>. For clusters with ra3 nodes, must be within the ranges <code>5431</code>-<code>5455</code> or <code>8191</code>-<code>8215</code>.</p>
226    pub fn port(mut self, input: i32) -> Self {
227        self.inner = self.inner.port(input);
228        self
229    }
230    /// <p>The port number on which the cluster accepts connections.</p>
231    /// <p>Default: The same port as the original cluster.</p>
232    /// <p>Valid values: For clusters with DC2 nodes, must be within the range <code>1150</code>-<code>65535</code>. For clusters with ra3 nodes, must be within the ranges <code>5431</code>-<code>5455</code> or <code>8191</code>-<code>8215</code>.</p>
233    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
234        self.inner = self.inner.set_port(input);
235        self
236    }
237    /// <p>The port number on which the cluster accepts connections.</p>
238    /// <p>Default: The same port as the original cluster.</p>
239    /// <p>Valid values: For clusters with DC2 nodes, must be within the range <code>1150</code>-<code>65535</code>. For clusters with ra3 nodes, must be within the ranges <code>5431</code>-<code>5455</code> or <code>8191</code>-<code>8215</code>.</p>
240    pub fn get_port(&self) -> &::std::option::Option<i32> {
241        self.inner.get_port()
242    }
243    /// <p>The Amazon EC2 Availability Zone in which to restore the cluster.</p>
244    /// <p>Default: A random, system-chosen Availability Zone.</p>
245    /// <p>Example: <code>us-east-2a</code></p>
246    pub fn availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
247        self.inner = self.inner.availability_zone(input.into());
248        self
249    }
250    /// <p>The Amazon EC2 Availability Zone in which to restore the cluster.</p>
251    /// <p>Default: A random, system-chosen Availability Zone.</p>
252    /// <p>Example: <code>us-east-2a</code></p>
253    pub fn set_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
254        self.inner = self.inner.set_availability_zone(input);
255        self
256    }
257    /// <p>The Amazon EC2 Availability Zone in which to restore the cluster.</p>
258    /// <p>Default: A random, system-chosen Availability Zone.</p>
259    /// <p>Example: <code>us-east-2a</code></p>
260    pub fn get_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
261        self.inner.get_availability_zone()
262    }
263    /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
264    /// <p>Default: <code>true</code></p>
265    pub fn allow_version_upgrade(mut self, input: bool) -> Self {
266        self.inner = self.inner.allow_version_upgrade(input);
267        self
268    }
269    /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
270    /// <p>Default: <code>true</code></p>
271    pub fn set_allow_version_upgrade(mut self, input: ::std::option::Option<bool>) -> Self {
272        self.inner = self.inner.set_allow_version_upgrade(input);
273        self
274    }
275    /// <p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p>
276    /// <p>Default: <code>true</code></p>
277    pub fn get_allow_version_upgrade(&self) -> &::std::option::Option<bool> {
278        self.inner.get_allow_version_upgrade()
279    }
280    /// <p>The name of the subnet group where you want to cluster restored.</p>
281    /// <p>A snapshot of cluster in VPC can be restored only in VPC. Therefore, you must provide subnet group name where you want the cluster restored.</p>
282    pub fn cluster_subnet_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
283        self.inner = self.inner.cluster_subnet_group_name(input.into());
284        self
285    }
286    /// <p>The name of the subnet group where you want to cluster restored.</p>
287    /// <p>A snapshot of cluster in VPC can be restored only in VPC. Therefore, you must provide subnet group name where you want the cluster restored.</p>
288    pub fn set_cluster_subnet_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
289        self.inner = self.inner.set_cluster_subnet_group_name(input);
290        self
291    }
292    /// <p>The name of the subnet group where you want to cluster restored.</p>
293    /// <p>A snapshot of cluster in VPC can be restored only in VPC. Therefore, you must provide subnet group name where you want the cluster restored.</p>
294    pub fn get_cluster_subnet_group_name(&self) -> &::std::option::Option<::std::string::String> {
295        self.inner.get_cluster_subnet_group_name()
296    }
297    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
298    /// <p>Default: false</p>
299    pub fn publicly_accessible(mut self, input: bool) -> Self {
300        self.inner = self.inner.publicly_accessible(input);
301        self
302    }
303    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
304    /// <p>Default: false</p>
305    pub fn set_publicly_accessible(mut self, input: ::std::option::Option<bool>) -> Self {
306        self.inner = self.inner.set_publicly_accessible(input);
307        self
308    }
309    /// <p>If <code>true</code>, the cluster can be accessed from a public network.</p>
310    /// <p>Default: false</p>
311    pub fn get_publicly_accessible(&self) -> &::std::option::Option<bool> {
312        self.inner.get_publicly_accessible()
313    }
314    /// <p>The Amazon Web Services account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.</p>
315    pub fn owner_account(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
316        self.inner = self.inner.owner_account(input.into());
317        self
318    }
319    /// <p>The Amazon Web Services account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.</p>
320    pub fn set_owner_account(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
321        self.inner = self.inner.set_owner_account(input);
322        self
323    }
324    /// <p>The Amazon Web Services account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.</p>
325    pub fn get_owner_account(&self) -> &::std::option::Option<::std::string::String> {
326        self.inner.get_owner_account()
327    }
328    /// <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>
329    pub fn hsm_client_certificate_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
330        self.inner = self.inner.hsm_client_certificate_identifier(input.into());
331        self
332    }
333    /// <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>
334    pub fn set_hsm_client_certificate_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
335        self.inner = self.inner.set_hsm_client_certificate_identifier(input);
336        self
337    }
338    /// <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>
339    pub fn get_hsm_client_certificate_identifier(&self) -> &::std::option::Option<::std::string::String> {
340        self.inner.get_hsm_client_certificate_identifier()
341    }
342    /// <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>
343    pub fn hsm_configuration_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
344        self.inner = self.inner.hsm_configuration_identifier(input.into());
345        self
346    }
347    /// <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>
348    pub fn set_hsm_configuration_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
349        self.inner = self.inner.set_hsm_configuration_identifier(input);
350        self
351    }
352    /// <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>
353    pub fn get_hsm_configuration_identifier(&self) -> &::std::option::Option<::std::string::String> {
354        self.inner.get_hsm_configuration_identifier()
355    }
356    /// <p>The Elastic IP (EIP) address for the cluster. Don't specify the Elastic IP address for a publicly accessible cluster with availability zone relocation turned on.</p>
357    pub fn elastic_ip(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
358        self.inner = self.inner.elastic_ip(input.into());
359        self
360    }
361    /// <p>The Elastic IP (EIP) address for the cluster. Don't specify the Elastic IP address for a publicly accessible cluster with availability zone relocation turned on.</p>
362    pub fn set_elastic_ip(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
363        self.inner = self.inner.set_elastic_ip(input);
364        self
365    }
366    /// <p>The Elastic IP (EIP) address for the cluster. Don't specify the Elastic IP address for a publicly accessible cluster with availability zone relocation turned on.</p>
367    pub fn get_elastic_ip(&self) -> &::std::option::Option<::std::string::String> {
368        self.inner.get_elastic_ip()
369    }
370    /// <p>The name of the parameter group to be associated with this cluster.</p>
371    /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a>.</p>
372    /// <p>Constraints:</p>
373    /// <ul>
374    /// <li>
375    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
376    /// <li>
377    /// <p>First character must be a letter.</p></li>
378    /// <li>
379    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
380    /// </ul>
381    pub fn cluster_parameter_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
382        self.inner = self.inner.cluster_parameter_group_name(input.into());
383        self
384    }
385    /// <p>The name of the parameter group to be associated with this cluster.</p>
386    /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a>.</p>
387    /// <p>Constraints:</p>
388    /// <ul>
389    /// <li>
390    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
391    /// <li>
392    /// <p>First character must be a letter.</p></li>
393    /// <li>
394    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
395    /// </ul>
396    pub fn set_cluster_parameter_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
397        self.inner = self.inner.set_cluster_parameter_group_name(input);
398        self
399    }
400    /// <p>The name of the parameter group to be associated with this cluster.</p>
401    /// <p>Default: The default Amazon Redshift cluster parameter group. For information about the default parameter group, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html">Working with Amazon Redshift Parameter Groups</a>.</p>
402    /// <p>Constraints:</p>
403    /// <ul>
404    /// <li>
405    /// <p>Must be 1 to 255 alphanumeric characters or hyphens.</p></li>
406    /// <li>
407    /// <p>First character must be a letter.</p></li>
408    /// <li>
409    /// <p>Cannot end with a hyphen or contain two consecutive hyphens.</p></li>
410    /// </ul>
411    pub fn get_cluster_parameter_group_name(&self) -> &::std::option::Option<::std::string::String> {
412        self.inner.get_cluster_parameter_group_name()
413    }
414    ///
415    /// Appends an item to `ClusterSecurityGroups`.
416    ///
417    /// To override the contents of this collection use [`set_cluster_security_groups`](Self::set_cluster_security_groups).
418    ///
419    /// <p>A list of security groups to be associated with this cluster.</p>
420    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
421    /// <p>Cluster security groups only apply to clusters outside of VPCs.</p>
422    pub fn cluster_security_groups(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
423        self.inner = self.inner.cluster_security_groups(input.into());
424        self
425    }
426    /// <p>A list of security groups to be associated with this cluster.</p>
427    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
428    /// <p>Cluster security groups only apply to clusters outside of VPCs.</p>
429    pub fn set_cluster_security_groups(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
430        self.inner = self.inner.set_cluster_security_groups(input);
431        self
432    }
433    /// <p>A list of security groups to be associated with this cluster.</p>
434    /// <p>Default: The default cluster security group for Amazon Redshift.</p>
435    /// <p>Cluster security groups only apply to clusters outside of VPCs.</p>
436    pub fn get_cluster_security_groups(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
437        self.inner.get_cluster_security_groups()
438    }
439    ///
440    /// Appends an item to `VpcSecurityGroupIds`.
441    ///
442    /// To override the contents of this collection use [`set_vpc_security_group_ids`](Self::set_vpc_security_group_ids).
443    ///
444    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
445    /// <p>Default: The default VPC security group is associated with the cluster.</p>
446    /// <p>VPC security groups only apply to clusters in VPCs.</p>
447    pub fn vpc_security_group_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
448        self.inner = self.inner.vpc_security_group_ids(input.into());
449        self
450    }
451    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
452    /// <p>Default: The default VPC security group is associated with the cluster.</p>
453    /// <p>VPC security groups only apply to clusters in VPCs.</p>
454    pub fn set_vpc_security_group_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
455        self.inner = self.inner.set_vpc_security_group_ids(input);
456        self
457    }
458    /// <p>A list of Virtual Private Cloud (VPC) security groups to be associated with the cluster.</p>
459    /// <p>Default: The default VPC security group is associated with the cluster.</p>
460    /// <p>VPC security groups only apply to clusters in VPCs.</p>
461    pub fn get_vpc_security_group_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
462        self.inner.get_vpc_security_group_ids()
463    }
464    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
465    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
466    /// <p>Default: The value selected for the cluster from which the snapshot was taken. For more information about the time blocks for each region, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
467    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
468    /// <p>Constraints: Minimum 30-minute window.</p>
469    pub fn preferred_maintenance_window(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
470        self.inner = self.inner.preferred_maintenance_window(input.into());
471        self
472    }
473    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
474    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
475    /// <p>Default: The value selected for the cluster from which the snapshot was taken. For more information about the time blocks for each region, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
476    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
477    /// <p>Constraints: Minimum 30-minute window.</p>
478    pub fn set_preferred_maintenance_window(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
479        self.inner = self.inner.set_preferred_maintenance_window(input);
480        self
481    }
482    /// <p>The weekly time range (in UTC) during which automated cluster maintenance can occur.</p>
483    /// <p>Format: <code>ddd:hh24:mi-ddd:hh24:mi</code></p>
484    /// <p>Default: The value selected for the cluster from which the snapshot was taken. For more information about the time blocks for each region, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-maintenance-windows">Maintenance Windows</a> in Amazon Redshift Cluster Management Guide.</p>
485    /// <p>Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun</p>
486    /// <p>Constraints: Minimum 30-minute window.</p>
487    pub fn get_preferred_maintenance_window(&self) -> &::std::option::Option<::std::string::String> {
488        self.inner.get_preferred_maintenance_window()
489    }
490    /// <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>
491    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
492    /// <p>Default: The value selected for the cluster from which the snapshot was taken.</p>
493    /// <p>Constraints: Must be a value from 0 to 35.</p>
494    pub fn automated_snapshot_retention_period(mut self, input: i32) -> Self {
495        self.inner = self.inner.automated_snapshot_retention_period(input);
496        self
497    }
498    /// <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>
499    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
500    /// <p>Default: The value selected for the cluster from which the snapshot was taken.</p>
501    /// <p>Constraints: Must be a value from 0 to 35.</p>
502    pub fn set_automated_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
503        self.inner = self.inner.set_automated_snapshot_retention_period(input);
504        self
505    }
506    /// <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>
507    /// <p>You can't disable automated snapshots for RA3 node types. Set the automated retention period from 1-35 days.</p>
508    /// <p>Default: The value selected for the cluster from which the snapshot was taken.</p>
509    /// <p>Constraints: Must be a value from 0 to 35.</p>
510    pub fn get_automated_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
511        self.inner.get_automated_snapshot_retention_period()
512    }
513    /// <p>The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.</p>
514    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
515    pub fn manual_snapshot_retention_period(mut self, input: i32) -> Self {
516        self.inner = self.inner.manual_snapshot_retention_period(input);
517        self
518    }
519    /// <p>The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.</p>
520    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
521    pub fn set_manual_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
522        self.inner = self.inner.set_manual_snapshot_retention_period(input);
523        self
524    }
525    /// <p>The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.</p>
526    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
527    pub fn get_manual_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
528        self.inner.get_manual_snapshot_retention_period()
529    }
530    /// <p>The Key Management Service (KMS) key ID of the encryption key that encrypts data in the cluster restored from a shared snapshot. You can also provide the key ID when you restore from an unencrypted snapshot to an encrypted cluster in the same account. Additionally, you can specify a new KMS key ID when you restore from an encrypted snapshot in the same account in order to change it. In that case, the restored cluster is encrypted with the new KMS key ID.</p>
531    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
532        self.inner = self.inner.kms_key_id(input.into());
533        self
534    }
535    /// <p>The Key Management Service (KMS) key ID of the encryption key that encrypts data in the cluster restored from a shared snapshot. You can also provide the key ID when you restore from an unencrypted snapshot to an encrypted cluster in the same account. Additionally, you can specify a new KMS key ID when you restore from an encrypted snapshot in the same account in order to change it. In that case, the restored cluster is encrypted with the new KMS key ID.</p>
536    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
537        self.inner = self.inner.set_kms_key_id(input);
538        self
539    }
540    /// <p>The Key Management Service (KMS) key ID of the encryption key that encrypts data in the cluster restored from a shared snapshot. You can also provide the key ID when you restore from an unencrypted snapshot to an encrypted cluster in the same account. Additionally, you can specify a new KMS key ID when you restore from an encrypted snapshot in the same account in order to change it. In that case, the restored cluster is encrypted with the new KMS key ID.</p>
541    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
542        self.inner.get_kms_key_id()
543    }
544    /// <p>The node type that the restored cluster will be provisioned with.</p>
545    /// <p>If you have a DC instance type, you must restore into that same instance type and size. In other words, you can only restore a dc2.large node type into another dc2 type. For more information about node types, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes"> About Clusters and Nodes</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
546    pub fn node_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
547        self.inner = self.inner.node_type(input.into());
548        self
549    }
550    /// <p>The node type that the restored cluster will be provisioned with.</p>
551    /// <p>If you have a DC instance type, you must restore into that same instance type and size. In other words, you can only restore a dc2.large node type into another dc2 type. For more information about node types, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes"> About Clusters and Nodes</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
552    pub fn set_node_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
553        self.inner = self.inner.set_node_type(input);
554        self
555    }
556    /// <p>The node type that the restored cluster will be provisioned with.</p>
557    /// <p>If you have a DC instance type, you must restore into that same instance type and size. In other words, you can only restore a dc2.large node type into another dc2 type. For more information about node types, see <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes"> About Clusters and Nodes</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
558    pub fn get_node_type(&self) -> &::std::option::Option<::std::string::String> {
559        self.inner.get_node_type()
560    }
561    /// <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>
562    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
563    /// <p>Default: false</p>
564    pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
565        self.inner = self.inner.enhanced_vpc_routing(input);
566        self
567    }
568    /// <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>
569    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
570    /// <p>Default: false</p>
571    pub fn set_enhanced_vpc_routing(mut self, input: ::std::option::Option<bool>) -> Self {
572        self.inner = self.inner.set_enhanced_vpc_routing(input);
573        self
574    }
575    /// <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>
576    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
577    /// <p>Default: false</p>
578    pub fn get_enhanced_vpc_routing(&self) -> &::std::option::Option<bool> {
579        self.inner.get_enhanced_vpc_routing()
580    }
581    /// <p>Reserved.</p>
582    pub fn additional_info(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
583        self.inner = self.inner.additional_info(input.into());
584        self
585    }
586    /// <p>Reserved.</p>
587    pub fn set_additional_info(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
588        self.inner = self.inner.set_additional_info(input);
589        self
590    }
591    /// <p>Reserved.</p>
592    pub fn get_additional_info(&self) -> &::std::option::Option<::std::string::String> {
593        self.inner.get_additional_info()
594    }
595    ///
596    /// Appends an item to `IamRoles`.
597    ///
598    /// To override the contents of this collection use [`set_iam_roles`](Self::set_iam_roles).
599    ///
600    /// <p>A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format.</p>
601    /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
602    pub fn iam_roles(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
603        self.inner = self.inner.iam_roles(input.into());
604        self
605    }
606    /// <p>A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format.</p>
607    /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
608    pub fn set_iam_roles(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
609        self.inner = self.inner.set_iam_roles(input);
610        self
611    }
612    /// <p>A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services. You must supply the IAM roles in their Amazon Resource Name (ARN) format.</p>
613    /// <p>The maximum number of IAM roles that you can associate is subject to a quota. For more information, go to <a href="https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html">Quotas and limits</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>
614    pub fn get_iam_roles(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
615        self.inner.get_iam_roles()
616    }
617    /// <p>The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the <code>MaintenanceTrack</code> value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks.</p>
618    pub fn maintenance_track_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
619        self.inner = self.inner.maintenance_track_name(input.into());
620        self
621    }
622    /// <p>The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the <code>MaintenanceTrack</code> value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks.</p>
623    pub fn set_maintenance_track_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
624        self.inner = self.inner.set_maintenance_track_name(input);
625        self
626    }
627    /// <p>The name of the maintenance track for the restored cluster. When you take a snapshot, the snapshot inherits the <code>MaintenanceTrack</code> value from the cluster. The snapshot might be on a different track than the cluster that was the source for the snapshot. For example, suppose that you take a snapshot of a cluster that is on the current track and then change the cluster to be on the trailing track. In this case, the snapshot and the source cluster are on different tracks.</p>
628    pub fn get_maintenance_track_name(&self) -> &::std::option::Option<::std::string::String> {
629        self.inner.get_maintenance_track_name()
630    }
631    /// <p>A unique identifier for the snapshot schedule.</p>
632    pub fn snapshot_schedule_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
633        self.inner = self.inner.snapshot_schedule_identifier(input.into());
634        self
635    }
636    /// <p>A unique identifier for the snapshot schedule.</p>
637    pub fn set_snapshot_schedule_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
638        self.inner = self.inner.set_snapshot_schedule_identifier(input);
639        self
640    }
641    /// <p>A unique identifier for the snapshot schedule.</p>
642    pub fn get_snapshot_schedule_identifier(&self) -> &::std::option::Option<::std::string::String> {
643        self.inner.get_snapshot_schedule_identifier()
644    }
645    /// <p>The number of nodes specified when provisioning the restored cluster.</p>
646    pub fn number_of_nodes(mut self, input: i32) -> Self {
647        self.inner = self.inner.number_of_nodes(input);
648        self
649    }
650    /// <p>The number of nodes specified when provisioning the restored cluster.</p>
651    pub fn set_number_of_nodes(mut self, input: ::std::option::Option<i32>) -> Self {
652        self.inner = self.inner.set_number_of_nodes(input);
653        self
654    }
655    /// <p>The number of nodes specified when provisioning the restored cluster.</p>
656    pub fn get_number_of_nodes(&self) -> &::std::option::Option<i32> {
657        self.inner.get_number_of_nodes()
658    }
659    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is restored.</p>
660    pub fn availability_zone_relocation(mut self, input: bool) -> Self {
661        self.inner = self.inner.availability_zone_relocation(input);
662        self
663    }
664    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is restored.</p>
665    pub fn set_availability_zone_relocation(mut self, input: ::std::option::Option<bool>) -> Self {
666        self.inner = self.inner.set_availability_zone_relocation(input);
667        self
668    }
669    /// <p>The option to enable relocation for an Amazon Redshift cluster between Availability Zones after the cluster is restored.</p>
670    pub fn get_availability_zone_relocation(&self) -> &::std::option::Option<bool> {
671        self.inner.get_availability_zone_relocation()
672    }
673    /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
674    pub fn aqua_configuration_status(mut self, input: crate::types::AquaConfigurationStatus) -> Self {
675        self.inner = self.inner.aqua_configuration_status(input);
676        self
677    }
678    /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
679    pub fn set_aqua_configuration_status(mut self, input: ::std::option::Option<crate::types::AquaConfigurationStatus>) -> Self {
680        self.inner = self.inner.set_aqua_configuration_status(input);
681        self
682    }
683    /// <p>This parameter is retired. It does not set the AQUA configuration status. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).</p>
684    pub fn get_aqua_configuration_status(&self) -> &::std::option::Option<crate::types::AquaConfigurationStatus> {
685        self.inner.get_aqua_configuration_status()
686    }
687    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was last modified while it was restored from a snapshot.</p>
688    pub fn default_iam_role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
689        self.inner = self.inner.default_iam_role_arn(input.into());
690        self
691    }
692    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was last modified while it was restored from a snapshot.</p>
693    pub fn set_default_iam_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
694        self.inner = self.inner.set_default_iam_role_arn(input);
695        self
696    }
697    /// <p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was last modified while it was restored from a snapshot.</p>
698    pub fn get_default_iam_role_arn(&self) -> &::std::option::Option<::std::string::String> {
699        self.inner.get_default_iam_role_arn()
700    }
701    /// <p>The identifier of the target reserved node offering.</p>
702    pub fn reserved_node_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
703        self.inner = self.inner.reserved_node_id(input.into());
704        self
705    }
706    /// <p>The identifier of the target reserved node offering.</p>
707    pub fn set_reserved_node_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
708        self.inner = self.inner.set_reserved_node_id(input);
709        self
710    }
711    /// <p>The identifier of the target reserved node offering.</p>
712    pub fn get_reserved_node_id(&self) -> &::std::option::Option<::std::string::String> {
713        self.inner.get_reserved_node_id()
714    }
715    /// <p>The identifier of the target reserved node offering.</p>
716    pub fn target_reserved_node_offering_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
717        self.inner = self.inner.target_reserved_node_offering_id(input.into());
718        self
719    }
720    /// <p>The identifier of the target reserved node offering.</p>
721    pub fn set_target_reserved_node_offering_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
722        self.inner = self.inner.set_target_reserved_node_offering_id(input);
723        self
724    }
725    /// <p>The identifier of the target reserved node offering.</p>
726    pub fn get_target_reserved_node_offering_id(&self) -> &::std::option::Option<::std::string::String> {
727        self.inner.get_target_reserved_node_offering_id()
728    }
729    /// <p>Enables support for restoring an unencrypted snapshot to a cluster encrypted with Key Management Service (KMS) and a customer managed key.</p>
730    pub fn encrypted(mut self, input: bool) -> Self {
731        self.inner = self.inner.encrypted(input);
732        self
733    }
734    /// <p>Enables support for restoring an unencrypted snapshot to a cluster encrypted with Key Management Service (KMS) and a customer managed key.</p>
735    pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
736        self.inner = self.inner.set_encrypted(input);
737        self
738    }
739    /// <p>Enables support for restoring an unencrypted snapshot to a cluster encrypted with Key Management Service (KMS) and a customer managed key.</p>
740    pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
741        self.inner.get_encrypted()
742    }
743    /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage the restored cluster's admin credentials. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses the admin credentials the cluster had at the time the snapshot was taken.</p>
744    pub fn manage_master_password(mut self, input: bool) -> Self {
745        self.inner = self.inner.manage_master_password(input);
746        self
747    }
748    /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage the restored cluster's admin credentials. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses the admin credentials the cluster had at the time the snapshot was taken.</p>
749    pub fn set_manage_master_password(mut self, input: ::std::option::Option<bool>) -> Self {
750        self.inner = self.inner.set_manage_master_password(input);
751        self
752    }
753    /// <p>If <code>true</code>, Amazon Redshift uses Secrets Manager to manage the restored cluster's admin credentials. If <code>ManageMasterPassword</code> is false or not set, Amazon Redshift uses the admin credentials the cluster had at the time the snapshot was taken.</p>
754    pub fn get_manage_master_password(&self) -> &::std::option::Option<bool> {
755        self.inner.get_manage_master_password()
756    }
757    /// <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>
758    pub fn master_password_secret_kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
759        self.inner = self.inner.master_password_secret_kms_key_id(input.into());
760        self
761    }
762    /// <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>
763    pub fn set_master_password_secret_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
764        self.inner = self.inner.set_master_password_secret_kms_key_id(input);
765        self
766    }
767    /// <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>
768    pub fn get_master_password_secret_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
769        self.inner.get_master_password_secret_kms_key_id()
770    }
771    /// <p>The IP address type for the cluster. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
772    pub fn ip_address_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
773        self.inner = self.inner.ip_address_type(input.into());
774        self
775    }
776    /// <p>The IP address type for the cluster. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
777    pub fn set_ip_address_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
778        self.inner = self.inner.set_ip_address_type(input);
779        self
780    }
781    /// <p>The IP address type for the cluster. Possible values are <code>ipv4</code> and <code>dualstack</code>.</p>
782    pub fn get_ip_address_type(&self) -> &::std::option::Option<::std::string::String> {
783        self.inner.get_ip_address_type()
784    }
785    /// <p>If true, the snapshot will be restored to a cluster deployed in two Availability Zones.</p>
786    pub fn multi_az(mut self, input: bool) -> Self {
787        self.inner = self.inner.multi_az(input);
788        self
789    }
790    /// <p>If true, the snapshot will be restored to a cluster deployed in two Availability Zones.</p>
791    pub fn set_multi_az(mut self, input: ::std::option::Option<bool>) -> Self {
792        self.inner = self.inner.set_multi_az(input);
793        self
794    }
795    /// <p>If true, the snapshot will be restored to a cluster deployed in two Availability Zones.</p>
796    pub fn get_multi_az(&self) -> &::std::option::Option<bool> {
797        self.inner.get_multi_az()
798    }
799}