aws_sdk_redshift/types/
_snapshot.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p>Describes a snapshot.</p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
6pub struct Snapshot {
7    /// <p>The snapshot identifier that is provided in the request.</p>
8    pub snapshot_identifier: ::std::option::Option<::std::string::String>,
9    /// <p>The identifier of the cluster for which the snapshot was taken.</p>
10    pub cluster_identifier: ::std::option::Option<::std::string::String>,
11    /// <p>The time (in UTC format) when Amazon Redshift began the snapshot. A snapshot contains a copy of the cluster data as of this exact time.</p>
12    pub snapshot_create_time: ::std::option::Option<::aws_smithy_types::DateTime>,
13    /// <p>The snapshot status. The value of the status depends on the API operation used:</p>
14    /// <ul>
15    /// <li>
16    /// <p><code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> returns status as "creating".</p></li>
17    /// <li>
18    /// <p><code>DescribeClusterSnapshots</code> returns status as "creating", "available", "final snapshot", or "failed".</p></li>
19    /// <li>
20    /// <p><code>DeleteClusterSnapshot</code> returns status as "deleted".</p></li>
21    /// </ul>
22    pub status: ::std::option::Option<::std::string::String>,
23    /// <p>The port that the cluster is listening on.</p>
24    pub port: ::std::option::Option<i32>,
25    /// <p>The Availability Zone in which the cluster was created.</p>
26    pub availability_zone: ::std::option::Option<::std::string::String>,
27    /// <p>The time (UTC) when the cluster was originally created.</p>
28    pub cluster_create_time: ::std::option::Option<::aws_smithy_types::DateTime>,
29    /// <p>The admin user name for the cluster.</p>
30    pub master_username: ::std::option::Option<::std::string::String>,
31    /// <p>The version ID of the Amazon Redshift engine that is running on the cluster.</p>
32    pub cluster_version: ::std::option::Option<::std::string::String>,
33    /// <p>The cluster version of the cluster used to create the snapshot. For example, 1.0.15503.</p>
34    pub engine_full_version: ::std::option::Option<::std::string::String>,
35    /// <p>The snapshot type. Snapshots created using <code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> are of type "manual".</p>
36    pub snapshot_type: ::std::option::Option<::std::string::String>,
37    /// <p>The node type of the nodes in the cluster.</p>
38    pub node_type: ::std::option::Option<::std::string::String>,
39    /// <p>The number of nodes in the cluster.</p>
40    pub number_of_nodes: ::std::option::Option<i32>,
41    /// <p>The name of the database that was created when the cluster was created.</p>
42    pub db_name: ::std::option::Option<::std::string::String>,
43    /// <p>The VPC identifier of the cluster if the snapshot is from a cluster in a VPC. Otherwise, this field is not in the output.</p>
44    pub vpc_id: ::std::option::Option<::std::string::String>,
45    /// <p>If <code>true</code>, the data in the snapshot is encrypted at rest.</p>
46    pub encrypted: ::std::option::Option<bool>,
47    /// <p>The Key Management Service (KMS) key ID of the encryption key that was used to encrypt data in the cluster from which the snapshot was taken.</p>
48    pub kms_key_id: ::std::option::Option<::std::string::String>,
49    /// <p>A boolean that indicates whether the snapshot data is encrypted using the HSM keys of the source cluster. <code>true</code> indicates that the data is encrypted using HSM keys.</p>
50    pub encrypted_with_hsm: ::std::option::Option<bool>,
51    /// <p>A list of the Amazon Web Services accounts authorized to restore the snapshot. Returns <code>null</code> if no accounts are authorized. Visible only to the snapshot owner.</p>
52    pub accounts_with_restore_access: ::std::option::Option<::std::vec::Vec<crate::types::AccountWithRestoreAccess>>,
53    /// <p>For manual snapshots, the Amazon Web Services account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot.</p>
54    pub owner_account: ::std::option::Option<::std::string::String>,
55    /// <p>The size of the complete set of backup data that would be used to restore the cluster.</p>
56    pub total_backup_size_in_mega_bytes: ::std::option::Option<f64>,
57    /// <p>The size of the incremental backup.</p>
58    pub actual_incremental_backup_size_in_mega_bytes: ::std::option::Option<f64>,
59    /// <p>The number of megabytes that have been transferred to the snapshot backup.</p>
60    pub backup_progress_in_mega_bytes: ::std::option::Option<f64>,
61    /// <p>The number of megabytes per second being transferred to the snapshot backup. Returns <code>0</code> for a completed backup.</p>
62    pub current_backup_rate_in_mega_bytes_per_second: ::std::option::Option<f64>,
63    /// <p>The estimate of the time remaining before the snapshot backup will complete. Returns <code>0</code> for a completed backup.</p>
64    pub estimated_seconds_to_completion: ::std::option::Option<i64>,
65    /// <p>The amount of time an in-progress snapshot backup has been running, or the amount of time it took a completed backup to finish.</p>
66    pub elapsed_time_in_seconds: ::std::option::Option<i64>,
67    /// <p>The source region from which the snapshot was copied.</p>
68    pub source_region: ::std::option::Option<::std::string::String>,
69    /// <p>The list of tags for the cluster snapshot.</p>
70    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
71    /// <p>The list of node types that this cluster snapshot is able to restore into.</p>
72    pub restorable_node_types: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
73    /// <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>
74    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
75    /// <p>Default: false</p>
76    pub enhanced_vpc_routing: ::std::option::Option<bool>,
77    /// <p>The name of the maintenance track for the snapshot.</p>
78    pub maintenance_track_name: ::std::option::Option<::std::string::String>,
79    /// <p>The number of days that a manual snapshot is retained. If the value is -1, the manual snapshot is retained indefinitely.</p>
80    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
81    pub manual_snapshot_retention_period: ::std::option::Option<i32>,
82    /// <p>The number of days until a manual snapshot will pass its retention period.</p>
83    pub manual_snapshot_remaining_days: ::std::option::Option<i32>,
84    /// <p>A timestamp representing the start of the retention period for the snapshot.</p>
85    pub snapshot_retention_start_time: ::std::option::Option<::aws_smithy_types::DateTime>,
86    /// <p>The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.</p>
87    pub master_password_secret_arn: ::std::option::Option<::std::string::String>,
88    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret.</p>
89    pub master_password_secret_kms_key_id: ::std::option::Option<::std::string::String>,
90    /// <p>The Amazon Resource Name (ARN) of the snapshot.</p>
91    pub snapshot_arn: ::std::option::Option<::std::string::String>,
92}
93impl Snapshot {
94    /// <p>The snapshot identifier that is provided in the request.</p>
95    pub fn snapshot_identifier(&self) -> ::std::option::Option<&str> {
96        self.snapshot_identifier.as_deref()
97    }
98    /// <p>The identifier of the cluster for which the snapshot was taken.</p>
99    pub fn cluster_identifier(&self) -> ::std::option::Option<&str> {
100        self.cluster_identifier.as_deref()
101    }
102    /// <p>The time (in UTC format) when Amazon Redshift began the snapshot. A snapshot contains a copy of the cluster data as of this exact time.</p>
103    pub fn snapshot_create_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
104        self.snapshot_create_time.as_ref()
105    }
106    /// <p>The snapshot status. The value of the status depends on the API operation used:</p>
107    /// <ul>
108    /// <li>
109    /// <p><code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> returns status as "creating".</p></li>
110    /// <li>
111    /// <p><code>DescribeClusterSnapshots</code> returns status as "creating", "available", "final snapshot", or "failed".</p></li>
112    /// <li>
113    /// <p><code>DeleteClusterSnapshot</code> returns status as "deleted".</p></li>
114    /// </ul>
115    pub fn status(&self) -> ::std::option::Option<&str> {
116        self.status.as_deref()
117    }
118    /// <p>The port that the cluster is listening on.</p>
119    pub fn port(&self) -> ::std::option::Option<i32> {
120        self.port
121    }
122    /// <p>The Availability Zone in which the cluster was created.</p>
123    pub fn availability_zone(&self) -> ::std::option::Option<&str> {
124        self.availability_zone.as_deref()
125    }
126    /// <p>The time (UTC) when the cluster was originally created.</p>
127    pub fn cluster_create_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
128        self.cluster_create_time.as_ref()
129    }
130    /// <p>The admin user name for the cluster.</p>
131    pub fn master_username(&self) -> ::std::option::Option<&str> {
132        self.master_username.as_deref()
133    }
134    /// <p>The version ID of the Amazon Redshift engine that is running on the cluster.</p>
135    pub fn cluster_version(&self) -> ::std::option::Option<&str> {
136        self.cluster_version.as_deref()
137    }
138    /// <p>The cluster version of the cluster used to create the snapshot. For example, 1.0.15503.</p>
139    pub fn engine_full_version(&self) -> ::std::option::Option<&str> {
140        self.engine_full_version.as_deref()
141    }
142    /// <p>The snapshot type. Snapshots created using <code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> are of type "manual".</p>
143    pub fn snapshot_type(&self) -> ::std::option::Option<&str> {
144        self.snapshot_type.as_deref()
145    }
146    /// <p>The node type of the nodes in the cluster.</p>
147    pub fn node_type(&self) -> ::std::option::Option<&str> {
148        self.node_type.as_deref()
149    }
150    /// <p>The number of nodes in the cluster.</p>
151    pub fn number_of_nodes(&self) -> ::std::option::Option<i32> {
152        self.number_of_nodes
153    }
154    /// <p>The name of the database that was created when the cluster was created.</p>
155    pub fn db_name(&self) -> ::std::option::Option<&str> {
156        self.db_name.as_deref()
157    }
158    /// <p>The VPC identifier of the cluster if the snapshot is from a cluster in a VPC. Otherwise, this field is not in the output.</p>
159    pub fn vpc_id(&self) -> ::std::option::Option<&str> {
160        self.vpc_id.as_deref()
161    }
162    /// <p>If <code>true</code>, the data in the snapshot is encrypted at rest.</p>
163    pub fn encrypted(&self) -> ::std::option::Option<bool> {
164        self.encrypted
165    }
166    /// <p>The Key Management Service (KMS) key ID of the encryption key that was used to encrypt data in the cluster from which the snapshot was taken.</p>
167    pub fn kms_key_id(&self) -> ::std::option::Option<&str> {
168        self.kms_key_id.as_deref()
169    }
170    /// <p>A boolean that indicates whether the snapshot data is encrypted using the HSM keys of the source cluster. <code>true</code> indicates that the data is encrypted using HSM keys.</p>
171    pub fn encrypted_with_hsm(&self) -> ::std::option::Option<bool> {
172        self.encrypted_with_hsm
173    }
174    /// <p>A list of the Amazon Web Services accounts authorized to restore the snapshot. Returns <code>null</code> if no accounts are authorized. Visible only to the snapshot owner.</p>
175    ///
176    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.accounts_with_restore_access.is_none()`.
177    pub fn accounts_with_restore_access(&self) -> &[crate::types::AccountWithRestoreAccess] {
178        self.accounts_with_restore_access.as_deref().unwrap_or_default()
179    }
180    /// <p>For manual snapshots, the Amazon Web Services account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot.</p>
181    pub fn owner_account(&self) -> ::std::option::Option<&str> {
182        self.owner_account.as_deref()
183    }
184    /// <p>The size of the complete set of backup data that would be used to restore the cluster.</p>
185    pub fn total_backup_size_in_mega_bytes(&self) -> ::std::option::Option<f64> {
186        self.total_backup_size_in_mega_bytes
187    }
188    /// <p>The size of the incremental backup.</p>
189    pub fn actual_incremental_backup_size_in_mega_bytes(&self) -> ::std::option::Option<f64> {
190        self.actual_incremental_backup_size_in_mega_bytes
191    }
192    /// <p>The number of megabytes that have been transferred to the snapshot backup.</p>
193    pub fn backup_progress_in_mega_bytes(&self) -> ::std::option::Option<f64> {
194        self.backup_progress_in_mega_bytes
195    }
196    /// <p>The number of megabytes per second being transferred to the snapshot backup. Returns <code>0</code> for a completed backup.</p>
197    pub fn current_backup_rate_in_mega_bytes_per_second(&self) -> ::std::option::Option<f64> {
198        self.current_backup_rate_in_mega_bytes_per_second
199    }
200    /// <p>The estimate of the time remaining before the snapshot backup will complete. Returns <code>0</code> for a completed backup.</p>
201    pub fn estimated_seconds_to_completion(&self) -> ::std::option::Option<i64> {
202        self.estimated_seconds_to_completion
203    }
204    /// <p>The amount of time an in-progress snapshot backup has been running, or the amount of time it took a completed backup to finish.</p>
205    pub fn elapsed_time_in_seconds(&self) -> ::std::option::Option<i64> {
206        self.elapsed_time_in_seconds
207    }
208    /// <p>The source region from which the snapshot was copied.</p>
209    pub fn source_region(&self) -> ::std::option::Option<&str> {
210        self.source_region.as_deref()
211    }
212    /// <p>The list of tags for the cluster snapshot.</p>
213    ///
214    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
215    pub fn tags(&self) -> &[crate::types::Tag] {
216        self.tags.as_deref().unwrap_or_default()
217    }
218    /// <p>The list of node types that this cluster snapshot is able to restore into.</p>
219    ///
220    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.restorable_node_types.is_none()`.
221    pub fn restorable_node_types(&self) -> &[::std::string::String] {
222        self.restorable_node_types.as_deref().unwrap_or_default()
223    }
224    /// <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>
225    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
226    /// <p>Default: false</p>
227    pub fn enhanced_vpc_routing(&self) -> ::std::option::Option<bool> {
228        self.enhanced_vpc_routing
229    }
230    /// <p>The name of the maintenance track for the snapshot.</p>
231    pub fn maintenance_track_name(&self) -> ::std::option::Option<&str> {
232        self.maintenance_track_name.as_deref()
233    }
234    /// <p>The number of days that a manual snapshot is retained. If the value is -1, the manual snapshot is retained indefinitely.</p>
235    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
236    pub fn manual_snapshot_retention_period(&self) -> ::std::option::Option<i32> {
237        self.manual_snapshot_retention_period
238    }
239    /// <p>The number of days until a manual snapshot will pass its retention period.</p>
240    pub fn manual_snapshot_remaining_days(&self) -> ::std::option::Option<i32> {
241        self.manual_snapshot_remaining_days
242    }
243    /// <p>A timestamp representing the start of the retention period for the snapshot.</p>
244    pub fn snapshot_retention_start_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
245        self.snapshot_retention_start_time.as_ref()
246    }
247    /// <p>The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.</p>
248    pub fn master_password_secret_arn(&self) -> ::std::option::Option<&str> {
249        self.master_password_secret_arn.as_deref()
250    }
251    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret.</p>
252    pub fn master_password_secret_kms_key_id(&self) -> ::std::option::Option<&str> {
253        self.master_password_secret_kms_key_id.as_deref()
254    }
255    /// <p>The Amazon Resource Name (ARN) of the snapshot.</p>
256    pub fn snapshot_arn(&self) -> ::std::option::Option<&str> {
257        self.snapshot_arn.as_deref()
258    }
259}
260impl Snapshot {
261    /// Creates a new builder-style object to manufacture [`Snapshot`](crate::types::Snapshot).
262    pub fn builder() -> crate::types::builders::SnapshotBuilder {
263        crate::types::builders::SnapshotBuilder::default()
264    }
265}
266
267/// A builder for [`Snapshot`](crate::types::Snapshot).
268#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
269#[non_exhaustive]
270pub struct SnapshotBuilder {
271    pub(crate) snapshot_identifier: ::std::option::Option<::std::string::String>,
272    pub(crate) cluster_identifier: ::std::option::Option<::std::string::String>,
273    pub(crate) snapshot_create_time: ::std::option::Option<::aws_smithy_types::DateTime>,
274    pub(crate) status: ::std::option::Option<::std::string::String>,
275    pub(crate) port: ::std::option::Option<i32>,
276    pub(crate) availability_zone: ::std::option::Option<::std::string::String>,
277    pub(crate) cluster_create_time: ::std::option::Option<::aws_smithy_types::DateTime>,
278    pub(crate) master_username: ::std::option::Option<::std::string::String>,
279    pub(crate) cluster_version: ::std::option::Option<::std::string::String>,
280    pub(crate) engine_full_version: ::std::option::Option<::std::string::String>,
281    pub(crate) snapshot_type: ::std::option::Option<::std::string::String>,
282    pub(crate) node_type: ::std::option::Option<::std::string::String>,
283    pub(crate) number_of_nodes: ::std::option::Option<i32>,
284    pub(crate) db_name: ::std::option::Option<::std::string::String>,
285    pub(crate) vpc_id: ::std::option::Option<::std::string::String>,
286    pub(crate) encrypted: ::std::option::Option<bool>,
287    pub(crate) kms_key_id: ::std::option::Option<::std::string::String>,
288    pub(crate) encrypted_with_hsm: ::std::option::Option<bool>,
289    pub(crate) accounts_with_restore_access: ::std::option::Option<::std::vec::Vec<crate::types::AccountWithRestoreAccess>>,
290    pub(crate) owner_account: ::std::option::Option<::std::string::String>,
291    pub(crate) total_backup_size_in_mega_bytes: ::std::option::Option<f64>,
292    pub(crate) actual_incremental_backup_size_in_mega_bytes: ::std::option::Option<f64>,
293    pub(crate) backup_progress_in_mega_bytes: ::std::option::Option<f64>,
294    pub(crate) current_backup_rate_in_mega_bytes_per_second: ::std::option::Option<f64>,
295    pub(crate) estimated_seconds_to_completion: ::std::option::Option<i64>,
296    pub(crate) elapsed_time_in_seconds: ::std::option::Option<i64>,
297    pub(crate) source_region: ::std::option::Option<::std::string::String>,
298    pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
299    pub(crate) restorable_node_types: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
300    pub(crate) enhanced_vpc_routing: ::std::option::Option<bool>,
301    pub(crate) maintenance_track_name: ::std::option::Option<::std::string::String>,
302    pub(crate) manual_snapshot_retention_period: ::std::option::Option<i32>,
303    pub(crate) manual_snapshot_remaining_days: ::std::option::Option<i32>,
304    pub(crate) snapshot_retention_start_time: ::std::option::Option<::aws_smithy_types::DateTime>,
305    pub(crate) master_password_secret_arn: ::std::option::Option<::std::string::String>,
306    pub(crate) master_password_secret_kms_key_id: ::std::option::Option<::std::string::String>,
307    pub(crate) snapshot_arn: ::std::option::Option<::std::string::String>,
308}
309impl SnapshotBuilder {
310    /// <p>The snapshot identifier that is provided in the request.</p>
311    pub fn snapshot_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
312        self.snapshot_identifier = ::std::option::Option::Some(input.into());
313        self
314    }
315    /// <p>The snapshot identifier that is provided in the request.</p>
316    pub fn set_snapshot_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
317        self.snapshot_identifier = input;
318        self
319    }
320    /// <p>The snapshot identifier that is provided in the request.</p>
321    pub fn get_snapshot_identifier(&self) -> &::std::option::Option<::std::string::String> {
322        &self.snapshot_identifier
323    }
324    /// <p>The identifier of the cluster for which the snapshot was taken.</p>
325    pub fn cluster_identifier(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
326        self.cluster_identifier = ::std::option::Option::Some(input.into());
327        self
328    }
329    /// <p>The identifier of the cluster for which the snapshot was taken.</p>
330    pub fn set_cluster_identifier(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
331        self.cluster_identifier = input;
332        self
333    }
334    /// <p>The identifier of the cluster for which the snapshot was taken.</p>
335    pub fn get_cluster_identifier(&self) -> &::std::option::Option<::std::string::String> {
336        &self.cluster_identifier
337    }
338    /// <p>The time (in UTC format) when Amazon Redshift began the snapshot. A snapshot contains a copy of the cluster data as of this exact time.</p>
339    pub fn snapshot_create_time(mut self, input: ::aws_smithy_types::DateTime) -> Self {
340        self.snapshot_create_time = ::std::option::Option::Some(input);
341        self
342    }
343    /// <p>The time (in UTC format) when Amazon Redshift began the snapshot. A snapshot contains a copy of the cluster data as of this exact time.</p>
344    pub fn set_snapshot_create_time(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
345        self.snapshot_create_time = input;
346        self
347    }
348    /// <p>The time (in UTC format) when Amazon Redshift began the snapshot. A snapshot contains a copy of the cluster data as of this exact time.</p>
349    pub fn get_snapshot_create_time(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
350        &self.snapshot_create_time
351    }
352    /// <p>The snapshot status. The value of the status depends on the API operation used:</p>
353    /// <ul>
354    /// <li>
355    /// <p><code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> returns status as "creating".</p></li>
356    /// <li>
357    /// <p><code>DescribeClusterSnapshots</code> returns status as "creating", "available", "final snapshot", or "failed".</p></li>
358    /// <li>
359    /// <p><code>DeleteClusterSnapshot</code> returns status as "deleted".</p></li>
360    /// </ul>
361    pub fn status(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
362        self.status = ::std::option::Option::Some(input.into());
363        self
364    }
365    /// <p>The snapshot status. The value of the status depends on the API operation used:</p>
366    /// <ul>
367    /// <li>
368    /// <p><code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> returns status as "creating".</p></li>
369    /// <li>
370    /// <p><code>DescribeClusterSnapshots</code> returns status as "creating", "available", "final snapshot", or "failed".</p></li>
371    /// <li>
372    /// <p><code>DeleteClusterSnapshot</code> returns status as "deleted".</p></li>
373    /// </ul>
374    pub fn set_status(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
375        self.status = input;
376        self
377    }
378    /// <p>The snapshot status. The value of the status depends on the API operation used:</p>
379    /// <ul>
380    /// <li>
381    /// <p><code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> returns status as "creating".</p></li>
382    /// <li>
383    /// <p><code>DescribeClusterSnapshots</code> returns status as "creating", "available", "final snapshot", or "failed".</p></li>
384    /// <li>
385    /// <p><code>DeleteClusterSnapshot</code> returns status as "deleted".</p></li>
386    /// </ul>
387    pub fn get_status(&self) -> &::std::option::Option<::std::string::String> {
388        &self.status
389    }
390    /// <p>The port that the cluster is listening on.</p>
391    pub fn port(mut self, input: i32) -> Self {
392        self.port = ::std::option::Option::Some(input);
393        self
394    }
395    /// <p>The port that the cluster is listening on.</p>
396    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
397        self.port = input;
398        self
399    }
400    /// <p>The port that the cluster is listening on.</p>
401    pub fn get_port(&self) -> &::std::option::Option<i32> {
402        &self.port
403    }
404    /// <p>The Availability Zone in which the cluster was created.</p>
405    pub fn availability_zone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
406        self.availability_zone = ::std::option::Option::Some(input.into());
407        self
408    }
409    /// <p>The Availability Zone in which the cluster was created.</p>
410    pub fn set_availability_zone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
411        self.availability_zone = input;
412        self
413    }
414    /// <p>The Availability Zone in which the cluster was created.</p>
415    pub fn get_availability_zone(&self) -> &::std::option::Option<::std::string::String> {
416        &self.availability_zone
417    }
418    /// <p>The time (UTC) when the cluster was originally created.</p>
419    pub fn cluster_create_time(mut self, input: ::aws_smithy_types::DateTime) -> Self {
420        self.cluster_create_time = ::std::option::Option::Some(input);
421        self
422    }
423    /// <p>The time (UTC) when the cluster was originally created.</p>
424    pub fn set_cluster_create_time(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
425        self.cluster_create_time = input;
426        self
427    }
428    /// <p>The time (UTC) when the cluster was originally created.</p>
429    pub fn get_cluster_create_time(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
430        &self.cluster_create_time
431    }
432    /// <p>The admin user name for the cluster.</p>
433    pub fn master_username(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
434        self.master_username = ::std::option::Option::Some(input.into());
435        self
436    }
437    /// <p>The admin user name for the cluster.</p>
438    pub fn set_master_username(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
439        self.master_username = input;
440        self
441    }
442    /// <p>The admin user name for the cluster.</p>
443    pub fn get_master_username(&self) -> &::std::option::Option<::std::string::String> {
444        &self.master_username
445    }
446    /// <p>The version ID of the Amazon Redshift engine that is running on the cluster.</p>
447    pub fn cluster_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
448        self.cluster_version = ::std::option::Option::Some(input.into());
449        self
450    }
451    /// <p>The version ID of the Amazon Redshift engine that is running on the cluster.</p>
452    pub fn set_cluster_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
453        self.cluster_version = input;
454        self
455    }
456    /// <p>The version ID of the Amazon Redshift engine that is running on the cluster.</p>
457    pub fn get_cluster_version(&self) -> &::std::option::Option<::std::string::String> {
458        &self.cluster_version
459    }
460    /// <p>The cluster version of the cluster used to create the snapshot. For example, 1.0.15503.</p>
461    pub fn engine_full_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
462        self.engine_full_version = ::std::option::Option::Some(input.into());
463        self
464    }
465    /// <p>The cluster version of the cluster used to create the snapshot. For example, 1.0.15503.</p>
466    pub fn set_engine_full_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
467        self.engine_full_version = input;
468        self
469    }
470    /// <p>The cluster version of the cluster used to create the snapshot. For example, 1.0.15503.</p>
471    pub fn get_engine_full_version(&self) -> &::std::option::Option<::std::string::String> {
472        &self.engine_full_version
473    }
474    /// <p>The snapshot type. Snapshots created using <code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> are of type "manual".</p>
475    pub fn snapshot_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
476        self.snapshot_type = ::std::option::Option::Some(input.into());
477        self
478    }
479    /// <p>The snapshot type. Snapshots created using <code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> are of type "manual".</p>
480    pub fn set_snapshot_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
481        self.snapshot_type = input;
482        self
483    }
484    /// <p>The snapshot type. Snapshots created using <code>CreateClusterSnapshot</code> and <code>CopyClusterSnapshot</code> are of type "manual".</p>
485    pub fn get_snapshot_type(&self) -> &::std::option::Option<::std::string::String> {
486        &self.snapshot_type
487    }
488    /// <p>The node type of the nodes in the cluster.</p>
489    pub fn node_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
490        self.node_type = ::std::option::Option::Some(input.into());
491        self
492    }
493    /// <p>The node type of the nodes in the cluster.</p>
494    pub fn set_node_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
495        self.node_type = input;
496        self
497    }
498    /// <p>The node type of the nodes in the cluster.</p>
499    pub fn get_node_type(&self) -> &::std::option::Option<::std::string::String> {
500        &self.node_type
501    }
502    /// <p>The number of nodes in the cluster.</p>
503    pub fn number_of_nodes(mut self, input: i32) -> Self {
504        self.number_of_nodes = ::std::option::Option::Some(input);
505        self
506    }
507    /// <p>The number of nodes in the cluster.</p>
508    pub fn set_number_of_nodes(mut self, input: ::std::option::Option<i32>) -> Self {
509        self.number_of_nodes = input;
510        self
511    }
512    /// <p>The number of nodes in the cluster.</p>
513    pub fn get_number_of_nodes(&self) -> &::std::option::Option<i32> {
514        &self.number_of_nodes
515    }
516    /// <p>The name of the database that was created when the cluster was created.</p>
517    pub fn db_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
518        self.db_name = ::std::option::Option::Some(input.into());
519        self
520    }
521    /// <p>The name of the database that was created when the cluster was created.</p>
522    pub fn set_db_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
523        self.db_name = input;
524        self
525    }
526    /// <p>The name of the database that was created when the cluster was created.</p>
527    pub fn get_db_name(&self) -> &::std::option::Option<::std::string::String> {
528        &self.db_name
529    }
530    /// <p>The VPC identifier of the cluster if the snapshot is from a cluster in a VPC. Otherwise, this field is not in the output.</p>
531    pub fn vpc_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
532        self.vpc_id = ::std::option::Option::Some(input.into());
533        self
534    }
535    /// <p>The VPC identifier of the cluster if the snapshot is from a cluster in a VPC. Otherwise, this field is not in the output.</p>
536    pub fn set_vpc_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
537        self.vpc_id = input;
538        self
539    }
540    /// <p>The VPC identifier of the cluster if the snapshot is from a cluster in a VPC. Otherwise, this field is not in the output.</p>
541    pub fn get_vpc_id(&self) -> &::std::option::Option<::std::string::String> {
542        &self.vpc_id
543    }
544    /// <p>If <code>true</code>, the data in the snapshot is encrypted at rest.</p>
545    pub fn encrypted(mut self, input: bool) -> Self {
546        self.encrypted = ::std::option::Option::Some(input);
547        self
548    }
549    /// <p>If <code>true</code>, the data in the snapshot is encrypted at rest.</p>
550    pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
551        self.encrypted = input;
552        self
553    }
554    /// <p>If <code>true</code>, the data in the snapshot is encrypted at rest.</p>
555    pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
556        &self.encrypted
557    }
558    /// <p>The Key Management Service (KMS) key ID of the encryption key that was used to encrypt data in the cluster from which the snapshot was taken.</p>
559    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
560        self.kms_key_id = ::std::option::Option::Some(input.into());
561        self
562    }
563    /// <p>The Key Management Service (KMS) key ID of the encryption key that was used to encrypt data in the cluster from which the snapshot was taken.</p>
564    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
565        self.kms_key_id = input;
566        self
567    }
568    /// <p>The Key Management Service (KMS) key ID of the encryption key that was used to encrypt data in the cluster from which the snapshot was taken.</p>
569    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
570        &self.kms_key_id
571    }
572    /// <p>A boolean that indicates whether the snapshot data is encrypted using the HSM keys of the source cluster. <code>true</code> indicates that the data is encrypted using HSM keys.</p>
573    pub fn encrypted_with_hsm(mut self, input: bool) -> Self {
574        self.encrypted_with_hsm = ::std::option::Option::Some(input);
575        self
576    }
577    /// <p>A boolean that indicates whether the snapshot data is encrypted using the HSM keys of the source cluster. <code>true</code> indicates that the data is encrypted using HSM keys.</p>
578    pub fn set_encrypted_with_hsm(mut self, input: ::std::option::Option<bool>) -> Self {
579        self.encrypted_with_hsm = input;
580        self
581    }
582    /// <p>A boolean that indicates whether the snapshot data is encrypted using the HSM keys of the source cluster. <code>true</code> indicates that the data is encrypted using HSM keys.</p>
583    pub fn get_encrypted_with_hsm(&self) -> &::std::option::Option<bool> {
584        &self.encrypted_with_hsm
585    }
586    /// Appends an item to `accounts_with_restore_access`.
587    ///
588    /// To override the contents of this collection use [`set_accounts_with_restore_access`](Self::set_accounts_with_restore_access).
589    ///
590    /// <p>A list of the Amazon Web Services accounts authorized to restore the snapshot. Returns <code>null</code> if no accounts are authorized. Visible only to the snapshot owner.</p>
591    pub fn accounts_with_restore_access(mut self, input: crate::types::AccountWithRestoreAccess) -> Self {
592        let mut v = self.accounts_with_restore_access.unwrap_or_default();
593        v.push(input);
594        self.accounts_with_restore_access = ::std::option::Option::Some(v);
595        self
596    }
597    /// <p>A list of the Amazon Web Services accounts authorized to restore the snapshot. Returns <code>null</code> if no accounts are authorized. Visible only to the snapshot owner.</p>
598    pub fn set_accounts_with_restore_access(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::AccountWithRestoreAccess>>) -> Self {
599        self.accounts_with_restore_access = input;
600        self
601    }
602    /// <p>A list of the Amazon Web Services accounts authorized to restore the snapshot. Returns <code>null</code> if no accounts are authorized. Visible only to the snapshot owner.</p>
603    pub fn get_accounts_with_restore_access(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::AccountWithRestoreAccess>> {
604        &self.accounts_with_restore_access
605    }
606    /// <p>For manual snapshots, the Amazon Web Services account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot.</p>
607    pub fn owner_account(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
608        self.owner_account = ::std::option::Option::Some(input.into());
609        self
610    }
611    /// <p>For manual snapshots, the Amazon Web Services account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot.</p>
612    pub fn set_owner_account(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
613        self.owner_account = input;
614        self
615    }
616    /// <p>For manual snapshots, the Amazon Web Services account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot.</p>
617    pub fn get_owner_account(&self) -> &::std::option::Option<::std::string::String> {
618        &self.owner_account
619    }
620    /// <p>The size of the complete set of backup data that would be used to restore the cluster.</p>
621    pub fn total_backup_size_in_mega_bytes(mut self, input: f64) -> Self {
622        self.total_backup_size_in_mega_bytes = ::std::option::Option::Some(input);
623        self
624    }
625    /// <p>The size of the complete set of backup data that would be used to restore the cluster.</p>
626    pub fn set_total_backup_size_in_mega_bytes(mut self, input: ::std::option::Option<f64>) -> Self {
627        self.total_backup_size_in_mega_bytes = input;
628        self
629    }
630    /// <p>The size of the complete set of backup data that would be used to restore the cluster.</p>
631    pub fn get_total_backup_size_in_mega_bytes(&self) -> &::std::option::Option<f64> {
632        &self.total_backup_size_in_mega_bytes
633    }
634    /// <p>The size of the incremental backup.</p>
635    pub fn actual_incremental_backup_size_in_mega_bytes(mut self, input: f64) -> Self {
636        self.actual_incremental_backup_size_in_mega_bytes = ::std::option::Option::Some(input);
637        self
638    }
639    /// <p>The size of the incremental backup.</p>
640    pub fn set_actual_incremental_backup_size_in_mega_bytes(mut self, input: ::std::option::Option<f64>) -> Self {
641        self.actual_incremental_backup_size_in_mega_bytes = input;
642        self
643    }
644    /// <p>The size of the incremental backup.</p>
645    pub fn get_actual_incremental_backup_size_in_mega_bytes(&self) -> &::std::option::Option<f64> {
646        &self.actual_incremental_backup_size_in_mega_bytes
647    }
648    /// <p>The number of megabytes that have been transferred to the snapshot backup.</p>
649    pub fn backup_progress_in_mega_bytes(mut self, input: f64) -> Self {
650        self.backup_progress_in_mega_bytes = ::std::option::Option::Some(input);
651        self
652    }
653    /// <p>The number of megabytes that have been transferred to the snapshot backup.</p>
654    pub fn set_backup_progress_in_mega_bytes(mut self, input: ::std::option::Option<f64>) -> Self {
655        self.backup_progress_in_mega_bytes = input;
656        self
657    }
658    /// <p>The number of megabytes that have been transferred to the snapshot backup.</p>
659    pub fn get_backup_progress_in_mega_bytes(&self) -> &::std::option::Option<f64> {
660        &self.backup_progress_in_mega_bytes
661    }
662    /// <p>The number of megabytes per second being transferred to the snapshot backup. Returns <code>0</code> for a completed backup.</p>
663    pub fn current_backup_rate_in_mega_bytes_per_second(mut self, input: f64) -> Self {
664        self.current_backup_rate_in_mega_bytes_per_second = ::std::option::Option::Some(input);
665        self
666    }
667    /// <p>The number of megabytes per second being transferred to the snapshot backup. Returns <code>0</code> for a completed backup.</p>
668    pub fn set_current_backup_rate_in_mega_bytes_per_second(mut self, input: ::std::option::Option<f64>) -> Self {
669        self.current_backup_rate_in_mega_bytes_per_second = input;
670        self
671    }
672    /// <p>The number of megabytes per second being transferred to the snapshot backup. Returns <code>0</code> for a completed backup.</p>
673    pub fn get_current_backup_rate_in_mega_bytes_per_second(&self) -> &::std::option::Option<f64> {
674        &self.current_backup_rate_in_mega_bytes_per_second
675    }
676    /// <p>The estimate of the time remaining before the snapshot backup will complete. Returns <code>0</code> for a completed backup.</p>
677    pub fn estimated_seconds_to_completion(mut self, input: i64) -> Self {
678        self.estimated_seconds_to_completion = ::std::option::Option::Some(input);
679        self
680    }
681    /// <p>The estimate of the time remaining before the snapshot backup will complete. Returns <code>0</code> for a completed backup.</p>
682    pub fn set_estimated_seconds_to_completion(mut self, input: ::std::option::Option<i64>) -> Self {
683        self.estimated_seconds_to_completion = input;
684        self
685    }
686    /// <p>The estimate of the time remaining before the snapshot backup will complete. Returns <code>0</code> for a completed backup.</p>
687    pub fn get_estimated_seconds_to_completion(&self) -> &::std::option::Option<i64> {
688        &self.estimated_seconds_to_completion
689    }
690    /// <p>The amount of time an in-progress snapshot backup has been running, or the amount of time it took a completed backup to finish.</p>
691    pub fn elapsed_time_in_seconds(mut self, input: i64) -> Self {
692        self.elapsed_time_in_seconds = ::std::option::Option::Some(input);
693        self
694    }
695    /// <p>The amount of time an in-progress snapshot backup has been running, or the amount of time it took a completed backup to finish.</p>
696    pub fn set_elapsed_time_in_seconds(mut self, input: ::std::option::Option<i64>) -> Self {
697        self.elapsed_time_in_seconds = input;
698        self
699    }
700    /// <p>The amount of time an in-progress snapshot backup has been running, or the amount of time it took a completed backup to finish.</p>
701    pub fn get_elapsed_time_in_seconds(&self) -> &::std::option::Option<i64> {
702        &self.elapsed_time_in_seconds
703    }
704    /// <p>The source region from which the snapshot was copied.</p>
705    pub fn source_region(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
706        self.source_region = ::std::option::Option::Some(input.into());
707        self
708    }
709    /// <p>The source region from which the snapshot was copied.</p>
710    pub fn set_source_region(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
711        self.source_region = input;
712        self
713    }
714    /// <p>The source region from which the snapshot was copied.</p>
715    pub fn get_source_region(&self) -> &::std::option::Option<::std::string::String> {
716        &self.source_region
717    }
718    /// Appends an item to `tags`.
719    ///
720    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
721    ///
722    /// <p>The list of tags for the cluster snapshot.</p>
723    pub fn tags(mut self, input: crate::types::Tag) -> Self {
724        let mut v = self.tags.unwrap_or_default();
725        v.push(input);
726        self.tags = ::std::option::Option::Some(v);
727        self
728    }
729    /// <p>The list of tags for the cluster snapshot.</p>
730    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
731        self.tags = input;
732        self
733    }
734    /// <p>The list of tags for the cluster snapshot.</p>
735    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
736        &self.tags
737    }
738    /// Appends an item to `restorable_node_types`.
739    ///
740    /// To override the contents of this collection use [`set_restorable_node_types`](Self::set_restorable_node_types).
741    ///
742    /// <p>The list of node types that this cluster snapshot is able to restore into.</p>
743    pub fn restorable_node_types(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
744        let mut v = self.restorable_node_types.unwrap_or_default();
745        v.push(input.into());
746        self.restorable_node_types = ::std::option::Option::Some(v);
747        self
748    }
749    /// <p>The list of node types that this cluster snapshot is able to restore into.</p>
750    pub fn set_restorable_node_types(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
751        self.restorable_node_types = input;
752        self
753    }
754    /// <p>The list of node types that this cluster snapshot is able to restore into.</p>
755    pub fn get_restorable_node_types(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
756        &self.restorable_node_types
757    }
758    /// <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>
759    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
760    /// <p>Default: false</p>
761    pub fn enhanced_vpc_routing(mut self, input: bool) -> Self {
762        self.enhanced_vpc_routing = ::std::option::Option::Some(input);
763        self
764    }
765    /// <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>
766    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
767    /// <p>Default: false</p>
768    pub fn set_enhanced_vpc_routing(mut self, input: ::std::option::Option<bool>) -> Self {
769        self.enhanced_vpc_routing = input;
770        self
771    }
772    /// <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>
773    /// <p>If this option is <code>true</code>, enhanced VPC routing is enabled.</p>
774    /// <p>Default: false</p>
775    pub fn get_enhanced_vpc_routing(&self) -> &::std::option::Option<bool> {
776        &self.enhanced_vpc_routing
777    }
778    /// <p>The name of the maintenance track for the snapshot.</p>
779    pub fn maintenance_track_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
780        self.maintenance_track_name = ::std::option::Option::Some(input.into());
781        self
782    }
783    /// <p>The name of the maintenance track for the snapshot.</p>
784    pub fn set_maintenance_track_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
785        self.maintenance_track_name = input;
786        self
787    }
788    /// <p>The name of the maintenance track for the snapshot.</p>
789    pub fn get_maintenance_track_name(&self) -> &::std::option::Option<::std::string::String> {
790        &self.maintenance_track_name
791    }
792    /// <p>The number of days that a manual snapshot is retained. If the value is -1, the manual snapshot is retained indefinitely.</p>
793    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
794    pub fn manual_snapshot_retention_period(mut self, input: i32) -> Self {
795        self.manual_snapshot_retention_period = ::std::option::Option::Some(input);
796        self
797    }
798    /// <p>The number of days that a manual snapshot is retained. If the value is -1, the manual snapshot is retained indefinitely.</p>
799    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
800    pub fn set_manual_snapshot_retention_period(mut self, input: ::std::option::Option<i32>) -> Self {
801        self.manual_snapshot_retention_period = input;
802        self
803    }
804    /// <p>The number of days that a manual snapshot is retained. If the value is -1, the manual snapshot is retained indefinitely.</p>
805    /// <p>The value must be either -1 or an integer between 1 and 3,653.</p>
806    pub fn get_manual_snapshot_retention_period(&self) -> &::std::option::Option<i32> {
807        &self.manual_snapshot_retention_period
808    }
809    /// <p>The number of days until a manual snapshot will pass its retention period.</p>
810    pub fn manual_snapshot_remaining_days(mut self, input: i32) -> Self {
811        self.manual_snapshot_remaining_days = ::std::option::Option::Some(input);
812        self
813    }
814    /// <p>The number of days until a manual snapshot will pass its retention period.</p>
815    pub fn set_manual_snapshot_remaining_days(mut self, input: ::std::option::Option<i32>) -> Self {
816        self.manual_snapshot_remaining_days = input;
817        self
818    }
819    /// <p>The number of days until a manual snapshot will pass its retention period.</p>
820    pub fn get_manual_snapshot_remaining_days(&self) -> &::std::option::Option<i32> {
821        &self.manual_snapshot_remaining_days
822    }
823    /// <p>A timestamp representing the start of the retention period for the snapshot.</p>
824    pub fn snapshot_retention_start_time(mut self, input: ::aws_smithy_types::DateTime) -> Self {
825        self.snapshot_retention_start_time = ::std::option::Option::Some(input);
826        self
827    }
828    /// <p>A timestamp representing the start of the retention period for the snapshot.</p>
829    pub fn set_snapshot_retention_start_time(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
830        self.snapshot_retention_start_time = input;
831        self
832    }
833    /// <p>A timestamp representing the start of the retention period for the snapshot.</p>
834    pub fn get_snapshot_retention_start_time(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
835        &self.snapshot_retention_start_time
836    }
837    /// <p>The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.</p>
838    pub fn master_password_secret_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
839        self.master_password_secret_arn = ::std::option::Option::Some(input.into());
840        self
841    }
842    /// <p>The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.</p>
843    pub fn set_master_password_secret_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
844        self.master_password_secret_arn = input;
845        self
846    }
847    /// <p>The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.</p>
848    pub fn get_master_password_secret_arn(&self) -> &::std::option::Option<::std::string::String> {
849        &self.master_password_secret_arn
850    }
851    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret.</p>
852    pub fn master_password_secret_kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
853        self.master_password_secret_kms_key_id = ::std::option::Option::Some(input.into());
854        self
855    }
856    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret.</p>
857    pub fn set_master_password_secret_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
858        self.master_password_secret_kms_key_id = input;
859        self
860    }
861    /// <p>The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret.</p>
862    pub fn get_master_password_secret_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
863        &self.master_password_secret_kms_key_id
864    }
865    /// <p>The Amazon Resource Name (ARN) of the snapshot.</p>
866    pub fn snapshot_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
867        self.snapshot_arn = ::std::option::Option::Some(input.into());
868        self
869    }
870    /// <p>The Amazon Resource Name (ARN) of the snapshot.</p>
871    pub fn set_snapshot_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
872        self.snapshot_arn = input;
873        self
874    }
875    /// <p>The Amazon Resource Name (ARN) of the snapshot.</p>
876    pub fn get_snapshot_arn(&self) -> &::std::option::Option<::std::string::String> {
877        &self.snapshot_arn
878    }
879    /// Consumes the builder and constructs a [`Snapshot`](crate::types::Snapshot).
880    pub fn build(self) -> crate::types::Snapshot {
881        crate::types::Snapshot {
882            snapshot_identifier: self.snapshot_identifier,
883            cluster_identifier: self.cluster_identifier,
884            snapshot_create_time: self.snapshot_create_time,
885            status: self.status,
886            port: self.port,
887            availability_zone: self.availability_zone,
888            cluster_create_time: self.cluster_create_time,
889            master_username: self.master_username,
890            cluster_version: self.cluster_version,
891            engine_full_version: self.engine_full_version,
892            snapshot_type: self.snapshot_type,
893            node_type: self.node_type,
894            number_of_nodes: self.number_of_nodes,
895            db_name: self.db_name,
896            vpc_id: self.vpc_id,
897            encrypted: self.encrypted,
898            kms_key_id: self.kms_key_id,
899            encrypted_with_hsm: self.encrypted_with_hsm,
900            accounts_with_restore_access: self.accounts_with_restore_access,
901            owner_account: self.owner_account,
902            total_backup_size_in_mega_bytes: self.total_backup_size_in_mega_bytes,
903            actual_incremental_backup_size_in_mega_bytes: self.actual_incremental_backup_size_in_mega_bytes,
904            backup_progress_in_mega_bytes: self.backup_progress_in_mega_bytes,
905            current_backup_rate_in_mega_bytes_per_second: self.current_backup_rate_in_mega_bytes_per_second,
906            estimated_seconds_to_completion: self.estimated_seconds_to_completion,
907            elapsed_time_in_seconds: self.elapsed_time_in_seconds,
908            source_region: self.source_region,
909            tags: self.tags,
910            restorable_node_types: self.restorable_node_types,
911            enhanced_vpc_routing: self.enhanced_vpc_routing,
912            maintenance_track_name: self.maintenance_track_name,
913            manual_snapshot_retention_period: self.manual_snapshot_retention_period,
914            manual_snapshot_remaining_days: self.manual_snapshot_remaining_days,
915            snapshot_retention_start_time: self.snapshot_retention_start_time,
916            master_password_secret_arn: self.master_password_secret_arn,
917            master_password_secret_kms_key_id: self.master_password_secret_kms_key_id,
918            snapshot_arn: self.snapshot_arn,
919        }
920    }
921}