1 1 | // Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2 2 | #[allow(missing_docs)] // documentation missing in model
|
3 - | #[derive(::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::hash::Hash)]
|
4 - | pub struct StartSnapshotInput {
|
5 - | /// <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
|
6 - | /// <ul>
|
7 - | /// <li>
|
8 - | /// <p>No blocks are written to the snapshot.</p></li>
|
9 - | /// <li>
|
10 - | /// <p>The snapshot is not completed after writing the last block of data.</p></li>
|
11 - | /// </ul>
|
12 - | /// <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
|
13 - | pub timeout: ::std::option::Option<crate::model::Timeout>,
|
14 - | /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
|
15 - | /// <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
|
16 - | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
17 - | pub client_token: ::std::option::Option<crate::model::IdempotencyToken>,
|
18 - | /// <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
|
19 - | pub volume_size: crate::model::VolumeSize,
|
20 - | /// <p>The tags to apply to the snapshot.</p>
|
21 - | pub tags: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
|
22 - | /// <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
|
23 - | /// <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
|
24 - | /// <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
|
25 - | /// <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
|
26 - | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
27 - | pub encrypted: ::std::option::Option<bool>,
|
28 - | /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
|
29 - | /// <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
|
30 - | /// <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
|
31 - | pub kms_key_arn: ::std::option::Option<crate::model::KmsKeyArn>,
|
32 - | /// <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
|
33 - | /// <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
|
34 - | pub parent_snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
|
35 - | /// <p>A description for the snapshot.</p>
|
36 - | pub description: ::std::option::Option<crate::model::Description>,
|
3 + | #[derive(
|
4 + | ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
|
5 + | )]
|
6 + | pub struct CompleteSnapshotInput {
|
7 + | /// <p>The number of blocks that were written to the snapshot.</p>
|
8 + | pub changed_blocks_count: crate::model::ChangedBlocksCount,
|
9 + | /// <p>The aggregation method used to generate the checksum. Currently, the only supported aggregation method is <code>LINEAR</code>.</p>
|
10 + | pub checksum_aggregation_method: ::std::option::Option<crate::model::ChecksumAggregationMethod>,
|
11 + | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
12 + | pub checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
|
13 + | /// <p>The ID of the snapshot.</p>
|
14 + | pub snapshot_id: crate::model::SnapshotId,
|
15 + | /// <p>An aggregated Base-64 SHA256 checksum based on the checksums of each written block.</p>
|
16 + | /// <p>To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written block in ascending order of their block index, concatenate them to form a single string, and then generate the checksum on the entire string using the SHA256 algorithm.</p>
|
17 + | pub checksum: ::std::option::Option<crate::model::Checksum>,
|
37 18 | }
|
38 - | impl StartSnapshotInput {
|
39 - | /// <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
|
40 - | /// <ul>
|
41 - | /// <li>
|
42 - | /// <p>No blocks are written to the snapshot.</p></li>
|
43 - | /// <li>
|
44 - | /// <p>The snapshot is not completed after writing the last block of data.</p></li>
|
45 - | /// </ul>
|
46 - | /// <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
|
47 - | pub fn timeout(&self) -> ::std::option::Option<&crate::model::Timeout> {
|
48 - | self.timeout.as_ref()
|
49 - | }
|
50 - | /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
|
51 - | /// <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
|
52 - | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
53 - | pub fn client_token(&self) -> ::std::option::Option<&crate::model::IdempotencyToken> {
|
54 - | self.client_token.as_ref()
|
55 - | }
|
56 - | /// <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
|
57 - | pub fn volume_size(&self) -> &crate::model::VolumeSize {
|
58 - | &self.volume_size
|
59 - | }
|
60 - | /// <p>The tags to apply to the snapshot.</p>
|
61 - | pub fn tags(&self) -> ::std::option::Option<&[crate::model::Tag]> {
|
62 - | self.tags.as_deref()
|
63 - | }
|
64 - | /// <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
|
65 - | /// <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
|
66 - | /// <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
|
67 - | /// <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
|
68 - | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
69 - | pub fn encrypted(&self) -> ::std::option::Option<bool> {
|
70 - | self.encrypted
|
19 + | impl CompleteSnapshotInput {
|
20 + | /// <p>The number of blocks that were written to the snapshot.</p>
|
21 + | pub fn changed_blocks_count(&self) -> &crate::model::ChangedBlocksCount {
|
22 + | &self.changed_blocks_count
|
71 23 | }
|
72 - | /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
|
73 - | /// <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
|
74 - | /// <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
|
75 - | pub fn kms_key_arn(&self) -> ::std::option::Option<&crate::model::KmsKeyArn> {
|
76 - | self.kms_key_arn.as_ref()
|
24 + | /// <p>The aggregation method used to generate the checksum. Currently, the only supported aggregation method is <code>LINEAR</code>.</p>
|
25 + | pub fn checksum_aggregation_method(
|
26 + | &self,
|
27 + | ) -> ::std::option::Option<&crate::model::ChecksumAggregationMethod> {
|
28 + | self.checksum_aggregation_method.as_ref()
|
77 29 | }
|
78 - | /// <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
|
79 - | /// <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
|
80 - | pub fn parent_snapshot_id(&self) -> ::std::option::Option<&crate::model::SnapshotId> {
|
81 - | self.parent_snapshot_id.as_ref()
|
30 + | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
31 + | pub fn checksum_algorithm(&self) -> ::std::option::Option<&crate::model::ChecksumAlgorithm> {
|
32 + | self.checksum_algorithm.as_ref()
|
82 33 | }
|
83 - | /// <p>A description for the snapshot.</p>
|
84 - | pub fn description(&self) -> ::std::option::Option<&crate::model::Description> {
|
85 - | self.description.as_ref()
|
34 + | /// <p>The ID of the snapshot.</p>
|
35 + | pub fn snapshot_id(&self) -> &crate::model::SnapshotId {
|
36 + | &self.snapshot_id
|
86 37 | }
|
87 - | }
|
88 - | impl ::std::fmt::Debug for StartSnapshotInput {
|
89 - | fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
90 - | let mut formatter = f.debug_struct("StartSnapshotInput");
|
91 - | formatter.field("timeout", &self.timeout);
|
92 - | formatter.field("client_token", &self.client_token);
|
93 - | formatter.field("volume_size", &self.volume_size);
|
94 - | formatter.field("tags", &self.tags);
|
95 - | formatter.field("encrypted", &self.encrypted);
|
96 - | formatter.field("kms_key_arn", &"*** Sensitive Data Redacted ***");
|
97 - | formatter.field("parent_snapshot_id", &self.parent_snapshot_id);
|
98 - | formatter.field("description", &self.description);
|
99 - | formatter.finish()
|
38 + | /// <p>An aggregated Base-64 SHA256 checksum based on the checksums of each written block.</p>
|
39 + | /// <p>To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written block in ascending order of their block index, concatenate them to form a single string, and then generate the checksum on the entire string using the SHA256 algorithm.</p>
|
40 + | pub fn checksum(&self) -> ::std::option::Option<&crate::model::Checksum> {
|
41 + | self.checksum.as_ref()
|
100 42 | }
|
101 43 | }
|
102 - | impl StartSnapshotInput {
|
103 - | /// Creates a new builder-style object to manufacture [`StartSnapshotInput`](crate::input::StartSnapshotInput).
|
104 - | pub fn builder() -> crate::input::start_snapshot_input::Builder {
|
105 - | crate::input::start_snapshot_input::Builder::default()
|
44 + | impl CompleteSnapshotInput {
|
45 + | /// Creates a new builder-style object to manufacture [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput).
|
46 + | pub fn builder() -> crate::input::complete_snapshot_input::Builder {
|
47 + | crate::input::complete_snapshot_input::Builder::default()
|
106 48 | }
|
107 49 | }
|
108 - | impl crate::constrained::Constrained for crate::input::StartSnapshotInput {
|
109 - | type Unconstrained = crate::input::start_snapshot_input::Builder;
|
50 + | impl crate::constrained::Constrained for crate::input::CompleteSnapshotInput {
|
51 + | type Unconstrained = crate::input::complete_snapshot_input::Builder;
|
110 52 | }
|
111 53 |
|
112 54 | #[allow(missing_docs)] // documentation missing in model
|
113 - | pub struct PutSnapshotBlockInput {
|
114 - | /// <p>The ID of the snapshot.</p>
|
55 + | #[derive(
|
56 + | ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
|
57 + | )]
|
58 + | pub struct GetSnapshotBlockInput {
|
59 + | /// <p>The ID of the snapshot containing the block from which to get data.</p>
|
115 60 | pub snapshot_id: crate::model::SnapshotId,
|
116 - | /// <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
|
61 + | /// <p>The block token of the block from which to get data.</p>
|
62 + | /// <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
63 + | pub block_token: crate::model::BlockToken,
|
64 + | /// <p>The block index of the block from which to get data.</p>
|
65 + | /// <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
117 66 | pub block_index: crate::model::BlockIndex,
|
118 - | /// <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
|
119 - | pub checksum: crate::model::Checksum,
|
120 - | /// <p>The progress of the write process, as a percentage.</p>
|
121 - | pub progress: ::std::option::Option<crate::model::Progress>,
|
122 - | /// <p>The data to write to the block.</p>
|
123 - | /// <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
124 - | pub block_data: ::aws_smithy_types::byte_stream::ByteStream,
|
125 - | /// <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
|
126 - | /// <p>Valid values: <code>524288</code></p>
|
127 - | pub data_length: i32,
|
128 - | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
129 - | pub checksum_algorithm: crate::model::ChecksumAlgorithm,
|
130 67 | }
|
131 - | impl PutSnapshotBlockInput {
|
132 - | /// <p>The ID of the snapshot.</p>
|
68 + | impl GetSnapshotBlockInput {
|
69 + | /// <p>The ID of the snapshot containing the block from which to get data.</p>
|
133 70 | pub fn snapshot_id(&self) -> &crate::model::SnapshotId {
|
134 71 | &self.snapshot_id
|
135 72 | }
|
136 - | /// <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
|
73 + | /// <p>The block token of the block from which to get data.</p>
|
74 + | /// <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
75 + | pub fn block_token(&self) -> &crate::model::BlockToken {
|
76 + | &self.block_token
|
77 + | }
|
78 + | /// <p>The block index of the block from which to get data.</p>
|
79 + | /// <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
137 80 | pub fn block_index(&self) -> &crate::model::BlockIndex {
|
138 81 | &self.block_index
|
139 82 | }
|
140 - | /// <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
|
141 - | pub fn checksum(&self) -> &crate::model::Checksum {
|
142 - | &self.checksum
|
83 + | }
|
84 + | impl GetSnapshotBlockInput {
|
85 + | /// Creates a new builder-style object to manufacture [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
|
86 + | pub fn builder() -> crate::input::get_snapshot_block_input::Builder {
|
87 + | crate::input::get_snapshot_block_input::Builder::default()
|
143 88 | }
|
144 - | /// <p>The progress of the write process, as a percentage.</p>
|
145 - | pub fn progress(&self) -> ::std::option::Option<&crate::model::Progress> {
|
146 - | self.progress.as_ref()
|
89 + | }
|
90 + | impl crate::constrained::Constrained for crate::input::GetSnapshotBlockInput {
|
91 + | type Unconstrained = crate::input::get_snapshot_block_input::Builder;
|
92 + | }
|
93 + |
|
94 + | #[allow(missing_docs)] // documentation missing in model
|
95 + | #[derive(
|
96 + | ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
|
97 + | )]
|
98 + | pub struct ListChangedBlocksInput {
|
99 + | /// <p>The ID of the second snapshot to use for the comparison.</p><important>
|
100 + | /// <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p>
|
101 + | /// </important>
|
102 + | pub second_snapshot_id: crate::model::SnapshotId,
|
103 + | /// <p>The ID of the first snapshot to use for the comparison.</p><important>
|
104 + | /// <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p>
|
105 + | /// </important>
|
106 + | pub first_snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
|
107 + | /// <p>The token to request the next page of results.</p>
|
108 + | pub next_token: ::std::option::Option<crate::model::PageToken>,
|
109 + | /// <p>The number of results to return.</p>
|
110 + | pub max_results: ::std::option::Option<crate::model::MaxResults>,
|
111 + | /// <p>The block index from which the comparison should start.</p>
|
112 + | /// <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p>
|
113 + | pub starting_block_index: ::std::option::Option<crate::model::BlockIndex>,
|
114 + | }
|
115 + | impl ListChangedBlocksInput {
|
116 + | /// <p>The ID of the second snapshot to use for the comparison.</p><important>
|
117 + | /// <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p>
|
118 + | /// </important>
|
119 + | pub fn second_snapshot_id(&self) -> &crate::model::SnapshotId {
|
120 + | &self.second_snapshot_id
|
147 121 | }
|
148 - | /// <p>The data to write to the block.</p>
|
149 - | /// <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
150 - | pub fn block_data(&self) -> &::aws_smithy_types::byte_stream::ByteStream {
|
151 - | &self.block_data
|
122 + | /// <p>The ID of the first snapshot to use for the comparison.</p><important>
|
123 + | /// <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p>
|
124 + | /// </important>
|
125 + | pub fn first_snapshot_id(&self) -> ::std::option::Option<&crate::model::SnapshotId> {
|
126 + | self.first_snapshot_id.as_ref()
|
152 127 | }
|
153 - | /// <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
|
154 - | /// <p>Valid values: <code>524288</code></p>
|
155 - | pub fn data_length(&self) -> i32 {
|
156 - | self.data_length
|
128 + | /// <p>The token to request the next page of results.</p>
|
129 + | pub fn next_token(&self) -> ::std::option::Option<&crate::model::PageToken> {
|
130 + | self.next_token.as_ref()
|
157 131 | }
|
158 - | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
159 - | pub fn checksum_algorithm(&self) -> &crate::model::ChecksumAlgorithm {
|
160 - | &self.checksum_algorithm
|
132 + | /// <p>The number of results to return.</p>
|
133 + | pub fn max_results(&self) -> ::std::option::Option<&crate::model::MaxResults> {
|
134 + | self.max_results.as_ref()
|
161 135 | }
|
162 - | }
|
163 - | impl ::std::fmt::Debug for PutSnapshotBlockInput {
|
164 - | fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
165 - | let mut formatter = f.debug_struct("PutSnapshotBlockInput");
|
166 - | formatter.field("snapshot_id", &self.snapshot_id);
|
167 - | formatter.field("block_index", &self.block_index);
|
168 - | formatter.field("checksum", &self.checksum);
|
169 - | formatter.field("progress", &self.progress);
|
170 - | formatter.field("block_data", &"*** Sensitive Data Redacted ***");
|
171 - | formatter.field("data_length", &self.data_length);
|
172 - | formatter.field("checksum_algorithm", &self.checksum_algorithm);
|
173 - | formatter.finish()
|
136 + | /// <p>The block index from which the comparison should start.</p>
|
137 + | /// <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p>
|
138 + | pub fn starting_block_index(&self) -> ::std::option::Option<&crate::model::BlockIndex> {
|
139 + | self.starting_block_index.as_ref()
|
174 140 | }
|
175 141 | }
|
176 - | impl PutSnapshotBlockInput {
|
177 - | /// Creates a new builder-style object to manufacture [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
|
178 - | pub fn builder() -> crate::input::put_snapshot_block_input::Builder {
|
179 - | crate::input::put_snapshot_block_input::Builder::default()
|
142 + | impl ListChangedBlocksInput {
|
143 + | /// Creates a new builder-style object to manufacture [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput).
|
144 + | pub fn builder() -> crate::input::list_changed_blocks_input::Builder {
|
145 + | crate::input::list_changed_blocks_input::Builder::default()
|
180 146 | }
|
181 147 | }
|
182 - | impl crate::constrained::Constrained for crate::input::PutSnapshotBlockInput {
|
183 - | type Unconstrained = crate::input::put_snapshot_block_input::Builder;
|
148 + | impl crate::constrained::Constrained for crate::input::ListChangedBlocksInput {
|
149 + | type Unconstrained = crate::input::list_changed_blocks_input::Builder;
|
184 150 | }
|
185 151 |
|
186 152 | #[allow(missing_docs)] // documentation missing in model
|
187 153 | #[derive(
|
188 154 | ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
|
189 155 | )]
|
190 156 | pub struct ListSnapshotBlocksInput {
|
191 157 | /// <p>The number of results to return.</p>
|
192 158 | pub max_results: ::std::option::Option<crate::model::MaxResults>,
|
193 159 | /// <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
|
194 160 | pub starting_block_index: ::std::option::Option<crate::model::BlockIndex>,
|
195 161 | /// <p>The token to request the next page of results.</p>
|
196 162 | pub next_token: ::std::option::Option<crate::model::PageToken>,
|
197 163 | /// <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
|
198 164 | pub snapshot_id: crate::model::SnapshotId,
|
199 165 | }
|
200 166 | impl ListSnapshotBlocksInput {
|
201 167 | /// <p>The number of results to return.</p>
|
202 168 | pub fn max_results(&self) -> ::std::option::Option<&crate::model::MaxResults> {
|
203 169 | self.max_results.as_ref()
|
204 170 | }
|
205 171 | /// <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
|
206 172 | pub fn starting_block_index(&self) -> ::std::option::Option<&crate::model::BlockIndex> {
|
207 173 | self.starting_block_index.as_ref()
|
208 174 | }
|
209 175 | /// <p>The token to request the next page of results.</p>
|
210 176 | pub fn next_token(&self) -> ::std::option::Option<&crate::model::PageToken> {
|
211 177 | self.next_token.as_ref()
|
212 178 | }
|
213 179 | /// <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
|
214 180 | pub fn snapshot_id(&self) -> &crate::model::SnapshotId {
|
215 181 | &self.snapshot_id
|
216 182 | }
|
217 183 | }
|
218 184 | impl ListSnapshotBlocksInput {
|
219 185 | /// Creates a new builder-style object to manufacture [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput).
|
220 186 | pub fn builder() -> crate::input::list_snapshot_blocks_input::Builder {
|
221 187 | crate::input::list_snapshot_blocks_input::Builder::default()
|
222 188 | }
|
223 189 | }
|
224 190 | impl crate::constrained::Constrained for crate::input::ListSnapshotBlocksInput {
|
225 191 | type Unconstrained = crate::input::list_snapshot_blocks_input::Builder;
|
226 192 | }
|
227 193 |
|
228 194 | #[allow(missing_docs)] // documentation missing in model
|
229 - | #[derive(
|
230 - | ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
|
231 - | )]
|
232 - | pub struct ListChangedBlocksInput {
|
233 - | /// <p>The ID of the second snapshot to use for the comparison.</p><important>
|
234 - | /// <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p>
|
235 - | /// </important>
|
236 - | pub second_snapshot_id: crate::model::SnapshotId,
|
237 - | /// <p>The ID of the first snapshot to use for the comparison.</p><important>
|
238 - | /// <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p>
|
239 - | /// </important>
|
240 - | pub first_snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
|
241 - | /// <p>The token to request the next page of results.</p>
|
242 - | pub next_token: ::std::option::Option<crate::model::PageToken>,
|
243 - | /// <p>The number of results to return.</p>
|
244 - | pub max_results: ::std::option::Option<crate::model::MaxResults>,
|
245 - | /// <p>The block index from which the comparison should start.</p>
|
246 - | /// <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p>
|
247 - | pub starting_block_index: ::std::option::Option<crate::model::BlockIndex>,
|
195 + | pub struct PutSnapshotBlockInput {
|
196 + | /// <p>The ID of the snapshot.</p>
|
197 + | pub snapshot_id: crate::model::SnapshotId,
|
198 + | /// <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
|
199 + | pub block_index: crate::model::BlockIndex,
|
200 + | /// <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
|
201 + | pub checksum: crate::model::Checksum,
|
202 + | /// <p>The progress of the write process, as a percentage.</p>
|
203 + | pub progress: ::std::option::Option<crate::model::Progress>,
|
204 + | /// <p>The data to write to the block.</p>
|
205 + | /// <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
206 + | pub block_data: ::aws_smithy_types::byte_stream::ByteStream,
|
207 + | /// <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
|
208 + | /// <p>Valid values: <code>524288</code></p>
|
209 + | pub data_length: i32,
|
210 + | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
211 + | pub checksum_algorithm: crate::model::ChecksumAlgorithm,
|
248 212 | }
|
249 - | impl ListChangedBlocksInput {
|
250 - | /// <p>The ID of the second snapshot to use for the comparison.</p><important>
|
251 - | /// <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p>
|
252 - | /// </important>
|
253 - | pub fn second_snapshot_id(&self) -> &crate::model::SnapshotId {
|
254 - | &self.second_snapshot_id
|
213 + | impl PutSnapshotBlockInput {
|
214 + | /// <p>The ID of the snapshot.</p>
|
215 + | pub fn snapshot_id(&self) -> &crate::model::SnapshotId {
|
216 + | &self.snapshot_id
|
255 217 | }
|
256 - | /// <p>The ID of the first snapshot to use for the comparison.</p><important>
|
257 - | /// <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p>
|
258 - | /// </important>
|
259 - | pub fn first_snapshot_id(&self) -> ::std::option::Option<&crate::model::SnapshotId> {
|
260 - | self.first_snapshot_id.as_ref()
|
218 + | /// <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
|
219 + | pub fn block_index(&self) -> &crate::model::BlockIndex {
|
220 + | &self.block_index
|
261 221 | }
|
262 - | /// <p>The token to request the next page of results.</p>
|
263 - | pub fn next_token(&self) -> ::std::option::Option<&crate::model::PageToken> {
|
264 - | self.next_token.as_ref()
|
222 + | /// <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
|
223 + | pub fn checksum(&self) -> &crate::model::Checksum {
|
224 + | &self.checksum
|
265 225 | }
|
266 - | /// <p>The number of results to return.</p>
|
267 - | pub fn max_results(&self) -> ::std::option::Option<&crate::model::MaxResults> {
|
268 - | self.max_results.as_ref()
|
226 + | /// <p>The progress of the write process, as a percentage.</p>
|
227 + | pub fn progress(&self) -> ::std::option::Option<&crate::model::Progress> {
|
228 + | self.progress.as_ref()
|
269 229 | }
|
270 - | /// <p>The block index from which the comparison should start.</p>
|
271 - | /// <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p>
|
272 - | pub fn starting_block_index(&self) -> ::std::option::Option<&crate::model::BlockIndex> {
|
273 - | self.starting_block_index.as_ref()
|
230 + | /// <p>The data to write to the block.</p>
|
231 + | /// <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
232 + | pub fn block_data(&self) -> &::aws_smithy_types::byte_stream::ByteStream {
|
233 + | &self.block_data
|
234 + | }
|
235 + | /// <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
|
236 + | /// <p>Valid values: <code>524288</code></p>
|
237 + | pub fn data_length(&self) -> i32 {
|
238 + | self.data_length
|
239 + | }
|
240 + | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
241 + | pub fn checksum_algorithm(&self) -> &crate::model::ChecksumAlgorithm {
|
242 + | &self.checksum_algorithm
|
243 + | }
|
244 + | }
|
245 + | impl ::std::fmt::Debug for PutSnapshotBlockInput {
|
246 + | fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
247 + | let mut formatter = f.debug_struct("PutSnapshotBlockInput");
|
248 + | formatter.field("snapshot_id", &self.snapshot_id);
|
249 + | formatter.field("block_index", &self.block_index);
|
250 + | formatter.field("checksum", &self.checksum);
|
251 + | formatter.field("progress", &self.progress);
|
252 + | formatter.field("block_data", &"*** Sensitive Data Redacted ***");
|
253 + | formatter.field("data_length", &self.data_length);
|
254 + | formatter.field("checksum_algorithm", &self.checksum_algorithm);
|
255 + | formatter.finish()
|
274 256 | }
|
275 257 | }
|
276 - | impl ListChangedBlocksInput {
|
277 - | /// Creates a new builder-style object to manufacture [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput).
|
278 - | pub fn builder() -> crate::input::list_changed_blocks_input::Builder {
|
279 - | crate::input::list_changed_blocks_input::Builder::default()
|
258 + | impl PutSnapshotBlockInput {
|
259 + | /// Creates a new builder-style object to manufacture [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
|
260 + | pub fn builder() -> crate::input::put_snapshot_block_input::Builder {
|
261 + | crate::input::put_snapshot_block_input::Builder::default()
|
280 262 | }
|
281 263 | }
|
282 - | impl crate::constrained::Constrained for crate::input::ListChangedBlocksInput {
|
283 - | type Unconstrained = crate::input::list_changed_blocks_input::Builder;
|
264 + | impl crate::constrained::Constrained for crate::input::PutSnapshotBlockInput {
|
265 + | type Unconstrained = crate::input::put_snapshot_block_input::Builder;
|
284 266 | }
|
285 267 |
|
286 268 | #[allow(missing_docs)] // documentation missing in model
|
287 - | #[derive(
|
288 - | ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
|
289 - | )]
|
290 - | pub struct GetSnapshotBlockInput {
|
291 - | /// <p>The ID of the snapshot containing the block from which to get data.</p>
|
292 - | pub snapshot_id: crate::model::SnapshotId,
|
293 - | /// <p>The block token of the block from which to get data.</p>
|
294 - | /// <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
295 - | pub block_token: crate::model::BlockToken,
|
296 - | /// <p>The block index of the block from which to get data.</p>
|
297 - | /// <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
298 - | pub block_index: crate::model::BlockIndex,
|
269 + | #[derive(::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::hash::Hash)]
|
270 + | pub struct StartSnapshotInput {
|
271 + | /// <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
|
272 + | /// <ul>
|
273 + | /// <li>
|
274 + | /// <p>No blocks are written to the snapshot.</p></li>
|
275 + | /// <li>
|
276 + | /// <p>The snapshot is not completed after writing the last block of data.</p></li>
|
277 + | /// </ul>
|
278 + | /// <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
|
279 + | pub timeout: ::std::option::Option<crate::model::Timeout>,
|
280 + | /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
|
281 + | /// <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
|
282 + | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
283 + | pub client_token: ::std::option::Option<crate::model::IdempotencyToken>,
|
284 + | /// <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
|
285 + | pub volume_size: crate::model::VolumeSize,
|
286 + | /// <p>The tags to apply to the snapshot.</p>
|
287 + | pub tags: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
|
288 + | /// <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
|
289 + | /// <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
|
290 + | /// <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
|
291 + | /// <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
|
292 + | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
293 + | pub encrypted: ::std::option::Option<bool>,
|
294 + | /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
|
295 + | /// <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
|
296 + | /// <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
|
297 + | pub kms_key_arn: ::std::option::Option<crate::model::KmsKeyArn>,
|
298 + | /// <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
|
299 + | /// <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
|
300 + | pub parent_snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
|
301 + | /// <p>A description for the snapshot.</p>
|
302 + | pub description: ::std::option::Option<crate::model::Description>,
|
299 303 | }
|
300 - | impl GetSnapshotBlockInput {
|
301 - | /// <p>The ID of the snapshot containing the block from which to get data.</p>
|
302 - | pub fn snapshot_id(&self) -> &crate::model::SnapshotId {
|
303 - | &self.snapshot_id
|
304 + | impl StartSnapshotInput {
|
305 + | /// <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
|
306 + | /// <ul>
|
307 + | /// <li>
|
308 + | /// <p>No blocks are written to the snapshot.</p></li>
|
309 + | /// <li>
|
310 + | /// <p>The snapshot is not completed after writing the last block of data.</p></li>
|
311 + | /// </ul>
|
312 + | /// <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
|
313 + | pub fn timeout(&self) -> ::std::option::Option<&crate::model::Timeout> {
|
314 + | self.timeout.as_ref()
|
304 315 | }
|
305 - | /// <p>The block token of the block from which to get data.</p>
|
306 - | /// <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
307 - | pub fn block_token(&self) -> &crate::model::BlockToken {
|
308 - | &self.block_token
|
316 + | /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
|
317 + | /// <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
|
318 + | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
319 + | pub fn client_token(&self) -> ::std::option::Option<&crate::model::IdempotencyToken> {
|
320 + | self.client_token.as_ref()
|
309 321 | }
|
310 - | /// <p>The block index of the block from which to get data.</p>
|
311 - | /// <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
312 - | pub fn block_index(&self) -> &crate::model::BlockIndex {
|
313 - | &self.block_index
|
322 + | /// <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
|
323 + | pub fn volume_size(&self) -> &crate::model::VolumeSize {
|
324 + | &self.volume_size
|
314 325 | }
|
315 - | }
|
316 - | impl GetSnapshotBlockInput {
|
317 - | /// Creates a new builder-style object to manufacture [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
|
318 - | pub fn builder() -> crate::input::get_snapshot_block_input::Builder {
|
319 - | crate::input::get_snapshot_block_input::Builder::default()
|
326 + | /// <p>The tags to apply to the snapshot.</p>
|
327 + | pub fn tags(&self) -> ::std::option::Option<&[crate::model::Tag]> {
|
328 + | self.tags.as_deref()
|
320 329 | }
|
321 - | }
|
322 - | impl crate::constrained::Constrained for crate::input::GetSnapshotBlockInput {
|
323 - | type Unconstrained = crate::input::get_snapshot_block_input::Builder;
|
324 - | }
|
325 - |
|
326 - | #[allow(missing_docs)] // documentation missing in model
|
327 - | #[derive(
|
328 - | ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
|
329 - | )]
|
330 - | pub struct CompleteSnapshotInput {
|
331 - | /// <p>The number of blocks that were written to the snapshot.</p>
|
332 - | pub changed_blocks_count: crate::model::ChangedBlocksCount,
|
333 - | /// <p>The aggregation method used to generate the checksum. Currently, the only supported aggregation method is <code>LINEAR</code>.</p>
|
334 - | pub checksum_aggregation_method: ::std::option::Option<crate::model::ChecksumAggregationMethod>,
|
335 - | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
336 - | pub checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
|
337 - | /// <p>The ID of the snapshot.</p>
|
338 - | pub snapshot_id: crate::model::SnapshotId,
|
339 - | /// <p>An aggregated Base-64 SHA256 checksum based on the checksums of each written block.</p>
|
340 - | /// <p>To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written block in ascending order of their block index, concatenate them to form a single string, and then generate the checksum on the entire string using the SHA256 algorithm.</p>
|
341 - | pub checksum: ::std::option::Option<crate::model::Checksum>,
|
342 - | }
|
343 - | impl CompleteSnapshotInput {
|
344 - | /// <p>The number of blocks that were written to the snapshot.</p>
|
345 - | pub fn changed_blocks_count(&self) -> &crate::model::ChangedBlocksCount {
|
346 - | &self.changed_blocks_count
|
330 + | /// <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
|
331 + | /// <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
|
332 + | /// <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
|
333 + | /// <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
|
334 + | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
335 + | pub fn encrypted(&self) -> ::std::option::Option<bool> {
|
336 + | self.encrypted
|
347 337 | }
|
348 - | /// <p>The aggregation method used to generate the checksum. Currently, the only supported aggregation method is <code>LINEAR</code>.</p>
|
349 - | pub fn checksum_aggregation_method(
|
350 - | &self,
|
351 - | ) -> ::std::option::Option<&crate::model::ChecksumAggregationMethod> {
|
352 - | self.checksum_aggregation_method.as_ref()
|
338 + | /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
|
339 + | /// <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
|
340 + | /// <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
|
341 + | pub fn kms_key_arn(&self) -> ::std::option::Option<&crate::model::KmsKeyArn> {
|
342 + | self.kms_key_arn.as_ref()
|
353 343 | }
|
354 - | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
355 - | pub fn checksum_algorithm(&self) -> ::std::option::Option<&crate::model::ChecksumAlgorithm> {
|
356 - | self.checksum_algorithm.as_ref()
|
344 + | /// <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
|
345 + | /// <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
|
346 + | pub fn parent_snapshot_id(&self) -> ::std::option::Option<&crate::model::SnapshotId> {
|
347 + | self.parent_snapshot_id.as_ref()
|
357 348 | }
|
358 - | /// <p>The ID of the snapshot.</p>
|
359 - | pub fn snapshot_id(&self) -> &crate::model::SnapshotId {
|
360 - | &self.snapshot_id
|
349 + | /// <p>A description for the snapshot.</p>
|
350 + | pub fn description(&self) -> ::std::option::Option<&crate::model::Description> {
|
351 + | self.description.as_ref()
|
361 352 | }
|
362 - | /// <p>An aggregated Base-64 SHA256 checksum based on the checksums of each written block.</p>
|
363 - | /// <p>To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written block in ascending order of their block index, concatenate them to form a single string, and then generate the checksum on the entire string using the SHA256 algorithm.</p>
|
364 - | pub fn checksum(&self) -> ::std::option::Option<&crate::model::Checksum> {
|
365 - | self.checksum.as_ref()
|
353 + | }
|
354 + | impl ::std::fmt::Debug for StartSnapshotInput {
|
355 + | fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
356 + | let mut formatter = f.debug_struct("StartSnapshotInput");
|
357 + | formatter.field("timeout", &self.timeout);
|
358 + | formatter.field("client_token", &self.client_token);
|
359 + | formatter.field("volume_size", &self.volume_size);
|
360 + | formatter.field("tags", &self.tags);
|
361 + | formatter.field("encrypted", &self.encrypted);
|
362 + | formatter.field("kms_key_arn", &"*** Sensitive Data Redacted ***");
|
363 + | formatter.field("parent_snapshot_id", &self.parent_snapshot_id);
|
364 + | formatter.field("description", &self.description);
|
365 + | formatter.finish()
|
366 366 | }
|
367 367 | }
|
368 - | impl CompleteSnapshotInput {
|
369 - | /// Creates a new builder-style object to manufacture [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput).
|
370 - | pub fn builder() -> crate::input::complete_snapshot_input::Builder {
|
371 - | crate::input::complete_snapshot_input::Builder::default()
|
368 + | impl StartSnapshotInput {
|
369 + | /// Creates a new builder-style object to manufacture [`StartSnapshotInput`](crate::input::StartSnapshotInput).
|
370 + | pub fn builder() -> crate::input::start_snapshot_input::Builder {
|
371 + | crate::input::start_snapshot_input::Builder::default()
|
372 372 | }
|
373 373 | }
|
374 - | impl crate::constrained::Constrained for crate::input::CompleteSnapshotInput {
|
375 - | type Unconstrained = crate::input::complete_snapshot_input::Builder;
|
374 + | impl crate::constrained::Constrained for crate::input::StartSnapshotInput {
|
375 + | type Unconstrained = crate::input::start_snapshot_input::Builder;
|
376 376 | }
|
377 - | /// See [`StartSnapshotInput`](crate::input::StartSnapshotInput).
|
378 - | pub mod start_snapshot_input {
|
377 + | /// See [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput).
|
378 + | pub mod complete_snapshot_input {
|
379 379 |
|
380 380 | #[derive(::std::cmp::PartialEq, ::std::fmt::Debug)]
|
381 381 | /// Holds one variant for each of the ways the builder can fail.
|
382 382 | #[non_exhaustive]
|
383 383 | #[allow(clippy::enum_variant_names)]
|
384 384 | pub enum ConstraintViolation {
|
385 - | /// Constraint violation occurred building member `timeout` when building `StartSnapshotInput`.
|
386 - | #[doc(hidden)]
|
387 - | Timeout(crate::model::timeout::ConstraintViolation),
|
388 - | /// Constraint violation occurred building member `client_token` when building `StartSnapshotInput`.
|
389 - | #[doc(hidden)]
|
390 - | ClientToken(crate::model::idempotency_token::ConstraintViolation),
|
391 - | /// `volume_size` was not provided but it is required when building `StartSnapshotInput`.
|
392 - | MissingVolumeSize,
|
393 - | /// Constraint violation occurred building member `volume_size` when building `StartSnapshotInput`.
|
385 + | /// `changed_blocks_count` was not provided but it is required when building `CompleteSnapshotInput`.
|
386 + | MissingChangedBlocksCount,
|
387 + | /// Constraint violation occurred building member `changed_blocks_count` when building `CompleteSnapshotInput`.
|
394 388 | #[doc(hidden)]
|
395 - | VolumeSize(crate::model::volume_size::ConstraintViolation),
|
396 - | /// Constraint violation occurred building member `tags` when building `StartSnapshotInput`.
|
389 + | ChangedBlocksCount(crate::model::changed_blocks_count::ConstraintViolation),
|
390 + | /// Constraint violation occurred building member `checksum_aggregation_method` when building `CompleteSnapshotInput`.
|
397 391 | #[doc(hidden)]
|
398 - | Tags(crate::model::tags::ConstraintViolation),
|
399 - | /// Constraint violation occurred building member `kms_key_arn` when building `StartSnapshotInput`.
|
392 + | ChecksumAggregationMethod(crate::model::checksum_aggregation_method::ConstraintViolation),
|
393 + | /// Constraint violation occurred building member `checksum_algorithm` when building `CompleteSnapshotInput`.
|
400 394 | #[doc(hidden)]
|
401 - | KmsKeyArn(crate::model::kms_key_arn::ConstraintViolation),
|
402 - | /// Constraint violation occurred building member `parent_snapshot_id` when building `StartSnapshotInput`.
|
395 + | ChecksumAlgorithm(crate::model::checksum_algorithm::ConstraintViolation),
|
396 + | /// `snapshot_id` was not provided but it is required when building `CompleteSnapshotInput`.
|
397 + | MissingSnapshotId,
|
398 + | /// Constraint violation occurred building member `snapshot_id` when building `CompleteSnapshotInput`.
|
403 399 | #[doc(hidden)]
|
404 - | ParentSnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
405 - | /// Constraint violation occurred building member `description` when building `StartSnapshotInput`.
|
400 + | SnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
401 + | /// Constraint violation occurred building member `checksum` when building `CompleteSnapshotInput`.
|
406 402 | #[doc(hidden)]
|
407 - | Description(crate::model::description::ConstraintViolation),
|
403 + | Checksum(crate::model::checksum::ConstraintViolation),
|
408 404 | }
|
409 405 | impl ::std::fmt::Display for ConstraintViolation {
|
410 406 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
411 407 | match self {
|
412 - | ConstraintViolation::Timeout(_) => write!(f, "constraint violation occurred building member `timeout` when building `StartSnapshotInput`"),
|
413 - | ConstraintViolation::ClientToken(_) => write!(f, "constraint violation occurred building member `client_token` when building `StartSnapshotInput`"),
|
414 - | ConstraintViolation::MissingVolumeSize => write!(f, "`volume_size` was not provided but it is required when building `StartSnapshotInput`"),
|
415 - | ConstraintViolation::VolumeSize(_) => write!(f, "constraint violation occurred building member `volume_size` when building `StartSnapshotInput`"),
|
416 - | ConstraintViolation::Tags(_) => write!(f, "constraint violation occurred building member `tags` when building `StartSnapshotInput`"),
|
417 - | ConstraintViolation::KmsKeyArn(_) => write!(f, "constraint violation occurred building member `kms_key_arn` when building `StartSnapshotInput`"),
|
418 - | ConstraintViolation::ParentSnapshotId(_) => write!(f, "constraint violation occurred building member `parent_snapshot_id` when building `StartSnapshotInput`"),
|
419 - | ConstraintViolation::Description(_) => write!(f, "constraint violation occurred building member `description` when building `StartSnapshotInput`"),
|
408 + | ConstraintViolation::MissingChangedBlocksCount => write!(f, "`changed_blocks_count` was not provided but it is required when building `CompleteSnapshotInput`"),
|
409 + | ConstraintViolation::ChangedBlocksCount(_) => write!(f, "constraint violation occurred building member `changed_blocks_count` when building `CompleteSnapshotInput`"),
|
410 + | ConstraintViolation::ChecksumAggregationMethod(_) => write!(f, "constraint violation occurred building member `checksum_aggregation_method` when building `CompleteSnapshotInput`"),
|
411 + | ConstraintViolation::ChecksumAlgorithm(_) => write!(f, "constraint violation occurred building member `checksum_algorithm` when building `CompleteSnapshotInput`"),
|
412 + | ConstraintViolation::MissingSnapshotId => write!(f, "`snapshot_id` was not provided but it is required when building `CompleteSnapshotInput`"),
|
413 + | ConstraintViolation::SnapshotId(_) => write!(f, "constraint violation occurred building member `snapshot_id` when building `CompleteSnapshotInput`"),
|
414 + | ConstraintViolation::Checksum(_) => write!(f, "constraint violation occurred building member `checksum` when building `CompleteSnapshotInput`"),
|
420 415 | }
|
421 416 | }
|
422 417 | }
|
423 418 | impl ::std::error::Error for ConstraintViolation {}
|
424 419 | impl ConstraintViolation {
|
425 420 | pub(crate) fn as_validation_exception_field(
|
426 421 | self,
|
427 422 | path: ::std::string::String,
|
428 423 | ) -> crate::model::ValidationExceptionField {
|
429 424 | match self {
|
430 - | ConstraintViolation::Timeout(inner) => inner.as_validation_exception_field(path + "/Timeout"),
|
431 - | ConstraintViolation::ClientToken(inner) => inner.as_validation_exception_field(path + "/ClientToken"),
|
432 - | ConstraintViolation::MissingVolumeSize => crate::model::ValidationExceptionField {
|
433 - | message: format!("Value at '{}/VolumeSize' failed to satisfy constraint: Member must not be null", path),
|
434 - | path: path + "/VolumeSize",
|
425 + | ConstraintViolation::MissingChangedBlocksCount => crate::model::ValidationExceptionField {
|
426 + | message: format!("Value at '{}/ChangedBlocksCount' failed to satisfy constraint: Member must not be null", path),
|
427 + | path: path + "/ChangedBlocksCount",
|
435 428 | },
|
436 - | ConstraintViolation::VolumeSize(inner) => inner.as_validation_exception_field(path + "/VolumeSize"),
|
437 - | ConstraintViolation::Tags(inner) => inner.as_validation_exception_field(path + "/Tags"),
|
438 - | ConstraintViolation::KmsKeyArn(inner) => inner.as_validation_exception_field(path + "/KmsKeyArn"),
|
439 - | ConstraintViolation::ParentSnapshotId(inner) => inner.as_validation_exception_field(path + "/ParentSnapshotId"),
|
440 - | ConstraintViolation::Description(inner) => inner.as_validation_exception_field(path + "/Description"),
|
429 + | ConstraintViolation::ChangedBlocksCount(inner) => inner.as_validation_exception_field(path + "/ChangedBlocksCount"),
|
430 + | ConstraintViolation::ChecksumAggregationMethod(inner) => inner.as_validation_exception_field(path + "/ChecksumAggregationMethod"),
|
431 + | ConstraintViolation::ChecksumAlgorithm(inner) => inner.as_validation_exception_field(path + "/ChecksumAlgorithm"),
|
432 + | ConstraintViolation::MissingSnapshotId => crate::model::ValidationExceptionField {
|
433 + | message: format!("Value at '{}/SnapshotId' failed to satisfy constraint: Member must not be null", path),
|
434 + | path: path + "/SnapshotId",
|
435 + | },
|
436 + | ConstraintViolation::SnapshotId(inner) => inner.as_validation_exception_field(path + "/SnapshotId"),
|
437 + | ConstraintViolation::Checksum(inner) => inner.as_validation_exception_field(path + "/Checksum"),
|
441 438 | }
|
442 439 | }
|
443 440 | }
|
444 441 | impl ::std::convert::From<ConstraintViolation>
|
445 442 | for ::aws_smithy_legacy_http_server::protocol::rest_json_1::rejection::RequestRejection
|
446 443 | {
|
447 444 | fn from(constraint_violation: ConstraintViolation) -> Self {
|
448 445 | let first_validation_exception_field =
|
449 446 | constraint_violation.as_validation_exception_field("".to_owned());
|
450 447 | let validation_exception = crate::error::ValidationException {
|
451 448 | message: format!(
|
452 449 | "1 validation error detected. {}",
|
453 450 | &first_validation_exception_field.message
|
454 451 | ),
|
455 452 | field_list: Some(vec![first_validation_exception_field]),
|
456 453 | };
|
457 454 | Self::ConstraintViolation(
|
458 455 | crate::protocol_serde::shape_validation_exception::ser_validation_exception_error(&validation_exception)
|
459 456 | .expect("validation exceptions should never fail to serialize; please file a bug report under https://github.com/smithy-lang/smithy-rs/issues")
|
460 457 | )
|
461 458 | }
|
462 459 | }
|
463 460 | impl ::std::convert::From<Builder>
|
464 - | for crate::constrained::MaybeConstrained<crate::input::StartSnapshotInput>
|
461 + | for crate::constrained::MaybeConstrained<crate::input::CompleteSnapshotInput>
|
465 462 | {
|
466 463 | fn from(builder: Builder) -> Self {
|
467 464 | Self::Unconstrained(builder)
|
468 465 | }
|
469 466 | }
|
470 - | impl ::std::convert::TryFrom<Builder> for crate::input::StartSnapshotInput {
|
467 + | impl ::std::convert::TryFrom<Builder> for crate::input::CompleteSnapshotInput {
|
471 468 | type Error = ConstraintViolation;
|
472 469 |
|
473 470 | fn try_from(builder: Builder) -> ::std::result::Result<Self, Self::Error> {
|
474 471 | builder.build()
|
475 472 | }
|
476 473 | }
|
477 - | /// A builder for [`StartSnapshotInput`](crate::input::StartSnapshotInput).
|
478 - | #[derive(::std::clone::Clone, ::std::default::Default)]
|
474 + | /// A builder for [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput).
|
475 + | #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
|
479 476 | pub struct Builder {
|
480 - | pub(crate) timeout:
|
481 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Timeout>>,
|
482 - | pub(crate) client_token: ::std::option::Option<
|
483 - | crate::constrained::MaybeConstrained<crate::model::IdempotencyToken>,
|
477 + | pub(crate) changed_blocks_count: ::std::option::Option<
|
478 + | crate::constrained::MaybeConstrained<crate::model::ChangedBlocksCount>,
|
484 479 | >,
|
485 - | pub(crate) volume_size:
|
486 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::VolumeSize>>,
|
487 - | pub(crate) tags: ::std::option::Option<
|
488 - | crate::constrained::MaybeConstrained<
|
489 - | crate::constrained::tags_constrained::TagsConstrained,
|
490 - | >,
|
480 + | pub(crate) checksum_aggregation_method: ::std::option::Option<
|
481 + | crate::constrained::MaybeConstrained<crate::model::ChecksumAggregationMethod>,
|
491 482 | >,
|
492 - | pub(crate) encrypted: ::std::option::Option<bool>,
|
493 - | pub(crate) kms_key_arn:
|
494 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::KmsKeyArn>>,
|
495 - | pub(crate) parent_snapshot_id:
|
483 + | pub(crate) checksum_algorithm: ::std::option::Option<
|
484 + | crate::constrained::MaybeConstrained<crate::model::ChecksumAlgorithm>,
|
485 + | >,
|
486 + | pub(crate) snapshot_id:
|
496 487 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
497 - | pub(crate) description:
|
498 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Description>>,
|
488 + | pub(crate) checksum:
|
489 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Checksum>>,
|
499 490 | }
|
500 491 | impl Builder {
|
501 - | /// <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
|
502 - | /// <ul>
|
503 - | /// <li>
|
504 - | /// <p>No blocks are written to the snapshot.</p></li>
|
505 - | /// <li>
|
506 - | /// <p>The snapshot is not completed after writing the last block of data.</p></li>
|
507 - | /// </ul>
|
508 - | /// <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
|
509 - | pub fn timeout(mut self, input: ::std::option::Option<crate::model::Timeout>) -> Self {
|
510 - | self.timeout = input.map(crate::constrained::MaybeConstrained::Constrained);
|
492 + | /// <p>The number of blocks that were written to the snapshot.</p>
|
493 + | pub fn changed_blocks_count(mut self, input: crate::model::ChangedBlocksCount) -> Self {
|
494 + | self.changed_blocks_count =
|
495 + | Some(crate::constrained::MaybeConstrained::Constrained(input));
|
511 496 | self
|
512 497 | }
|
513 - | /// <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
|
514 - | /// <ul>
|
515 - | /// <li>
|
516 - | /// <p>No blocks are written to the snapshot.</p></li>
|
517 - | /// <li>
|
518 - | /// <p>The snapshot is not completed after writing the last block of data.</p></li>
|
519 - | /// </ul>
|
520 - | /// <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
|
521 - | pub(crate) fn set_timeout(
|
498 + | /// <p>The number of blocks that were written to the snapshot.</p>
|
499 + | pub(crate) fn set_changed_blocks_count(
|
522 500 | mut self,
|
523 - | input: Option<
|
524 - | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::Timeout>>,
|
501 + | input: impl ::std::convert::Into<
|
502 + | crate::constrained::MaybeConstrained<crate::model::ChangedBlocksCount>,
|
525 503 | >,
|
526 504 | ) -> Self {
|
527 - | self.timeout = input.map(|v| v.into());
|
505 + | self.changed_blocks_count = Some(input.into());
|
528 506 | self
|
529 507 | }
|
530 - | /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
|
531 - | /// <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
|
532 - | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
533 - | pub fn client_token(
|
508 + | /// <p>The aggregation method used to generate the checksum. Currently, the only supported aggregation method is <code>LINEAR</code>.</p>
|
509 + | pub fn checksum_aggregation_method(
|
534 510 | mut self,
|
535 - | input: ::std::option::Option<crate::model::IdempotencyToken>,
|
511 + | input: ::std::option::Option<crate::model::ChecksumAggregationMethod>,
|
536 512 | ) -> Self {
|
537 - | self.client_token = input.map(crate::constrained::MaybeConstrained::Constrained);
|
513 + | self.checksum_aggregation_method =
|
514 + | input.map(crate::constrained::MaybeConstrained::Constrained);
|
538 515 | self
|
539 516 | }
|
540 - | /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
|
541 - | /// <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
|
542 - | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
543 - | pub(crate) fn set_client_token(
|
517 + | /// <p>The aggregation method used to generate the checksum. Currently, the only supported aggregation method is <code>LINEAR</code>.</p>
|
518 + | pub(crate) fn set_checksum_aggregation_method(
|
544 519 | mut self,
|
545 520 | input: Option<
|
546 521 | impl ::std::convert::Into<
|
547 - | crate::constrained::MaybeConstrained<crate::model::IdempotencyToken>,
|
522 + | crate::constrained::MaybeConstrained<crate::model::ChecksumAggregationMethod>,
|
548 523 | >,
|
549 524 | >,
|
550 525 | ) -> Self {
|
551 - | self.client_token = input.map(|v| v.into());
|
552 - | self
|
553 - | }
|
554 - | /// <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
|
555 - | pub fn volume_size(mut self, input: crate::model::VolumeSize) -> Self {
|
556 - | self.volume_size = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
557 - | self
|
558 - | }
|
559 - | /// <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
|
560 - | pub(crate) fn set_volume_size(
|
561 - | mut self,
|
562 - | input: impl ::std::convert::Into<
|
563 - | crate::constrained::MaybeConstrained<crate::model::VolumeSize>,
|
564 - | >,
|
565 - | ) -> Self {
|
566 - | self.volume_size = Some(input.into());
|
526 + | self.checksum_aggregation_method = input.map(|v| v.into());
|
567 527 | self
|
568 528 | }
|
569 - | /// <p>The tags to apply to the snapshot.</p>
|
570 - | pub fn tags(
|
529 + | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
530 + | pub fn checksum_algorithm(
|
571 531 | mut self,
|
572 - | input: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
|
532 + | input: ::std::option::Option<crate::model::ChecksumAlgorithm>,
|
573 533 | ) -> Self {
|
574 - | self.tags =
|
575 - | input.map(|v| crate::constrained::MaybeConstrained::Constrained((v).into()));
|
534 + | self.checksum_algorithm = input.map(crate::constrained::MaybeConstrained::Constrained);
|
576 535 | self
|
577 536 | }
|
578 - | /// <p>The tags to apply to the snapshot.</p>
|
579 - | pub(crate) fn set_tags(
|
537 + | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
538 + | pub(crate) fn set_checksum_algorithm(
|
580 539 | mut self,
|
581 540 | input: Option<
|
582 541 | impl ::std::convert::Into<
|
583 - | crate::constrained::MaybeConstrained<
|
584 - | crate::constrained::tags_constrained::TagsConstrained,
|
585 - | >,
|
542 + | crate::constrained::MaybeConstrained<crate::model::ChecksumAlgorithm>,
|
586 543 | >,
|
587 544 | >,
|
588 545 | ) -> Self {
|
589 - | self.tags = input.map(|v| v.into());
|
590 - | self
|
591 - | }
|
592 - | /// <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
|
593 - | /// <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
|
594 - | /// <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
|
595 - | /// <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
|
596 - | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
597 - | pub fn encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
|
598 - | self.encrypted = input;
|
599 - | self
|
600 - | }
|
601 - | /// <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
|
602 - | /// <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
|
603 - | /// <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
|
604 - | /// <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
|
605 - | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
606 - | pub(crate) fn set_encrypted(
|
607 - | mut self,
|
608 - | input: Option<impl ::std::convert::Into<bool>>,
|
609 - | ) -> Self {
|
610 - | self.encrypted = input.map(|v| v.into());
|
611 - | self
|
612 - | }
|
613 - | /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
|
614 - | /// <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
|
615 - | /// <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
|
616 - | pub fn kms_key_arn(
|
617 - | mut self,
|
618 - | input: ::std::option::Option<crate::model::KmsKeyArn>,
|
619 - | ) -> Self {
|
620 - | self.kms_key_arn = input.map(crate::constrained::MaybeConstrained::Constrained);
|
621 - | self
|
622 - | }
|
623 - | /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
|
624 - | /// <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
|
625 - | /// <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
|
626 - | pub(crate) fn set_kms_key_arn(
|
627 - | mut self,
|
628 - | input: Option<
|
629 - | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::KmsKeyArn>>,
|
630 - | >,
|
631 - | ) -> Self {
|
632 - | self.kms_key_arn = input.map(|v| v.into());
|
546 + | self.checksum_algorithm = input.map(|v| v.into());
|
633 547 | self
|
634 548 | }
|
635 - | /// <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
|
636 - | /// <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
|
637 - | pub fn parent_snapshot_id(
|
638 - | mut self,
|
639 - | input: ::std::option::Option<crate::model::SnapshotId>,
|
640 - | ) -> Self {
|
641 - | self.parent_snapshot_id = input.map(crate::constrained::MaybeConstrained::Constrained);
|
549 + | /// <p>The ID of the snapshot.</p>
|
550 + | pub fn snapshot_id(mut self, input: crate::model::SnapshotId) -> Self {
|
551 + | self.snapshot_id = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
642 552 | self
|
643 553 | }
|
644 - | /// <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
|
645 - | /// <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
|
646 - | pub(crate) fn set_parent_snapshot_id(
|
554 + | /// <p>The ID of the snapshot.</p>
|
555 + | pub(crate) fn set_snapshot_id(
|
647 556 | mut self,
|
648 - | input: Option<
|
649 - | impl ::std::convert::Into<
|
650 - | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
651 - | >,
|
557 + | input: impl ::std::convert::Into<
|
558 + | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
652 559 | >,
|
653 560 | ) -> Self {
|
654 - | self.parent_snapshot_id = input.map(|v| v.into());
|
561 + | self.snapshot_id = Some(input.into());
|
655 562 | self
|
656 563 | }
|
657 - | /// <p>A description for the snapshot.</p>
|
658 - | pub fn description(
|
659 - | mut self,
|
660 - | input: ::std::option::Option<crate::model::Description>,
|
661 - | ) -> Self {
|
662 - | self.description = input.map(crate::constrained::MaybeConstrained::Constrained);
|
564 + | /// <p>An aggregated Base-64 SHA256 checksum based on the checksums of each written block.</p>
|
565 + | /// <p>To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written block in ascending order of their block index, concatenate them to form a single string, and then generate the checksum on the entire string using the SHA256 algorithm.</p>
|
566 + | pub fn checksum(mut self, input: ::std::option::Option<crate::model::Checksum>) -> Self {
|
567 + | self.checksum = input.map(crate::constrained::MaybeConstrained::Constrained);
|
663 568 | self
|
664 569 | }
|
665 - | /// <p>A description for the snapshot.</p>
|
666 - | pub(crate) fn set_description(
|
570 + | /// <p>An aggregated Base-64 SHA256 checksum based on the checksums of each written block.</p>
|
571 + | /// <p>To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written block in ascending order of their block index, concatenate them to form a single string, and then generate the checksum on the entire string using the SHA256 algorithm.</p>
|
572 + | pub(crate) fn set_checksum(
|
667 573 | mut self,
|
668 574 | input: Option<
|
669 - | impl ::std::convert::Into<
|
670 - | crate::constrained::MaybeConstrained<crate::model::Description>,
|
671 - | >,
|
575 + | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::Checksum>>,
|
672 576 | >,
|
673 577 | ) -> Self {
|
674 - | self.description = input.map(|v| v.into());
|
578 + | self.checksum = input.map(|v| v.into());
|
675 579 | self
|
676 580 | }
|
677 - | /// Consumes the builder and constructs a [`StartSnapshotInput`](crate::input::StartSnapshotInput).
|
581 + | /// Consumes the builder and constructs a [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput).
|
678 582 | ///
|
679 - | /// The builder fails to construct a [`StartSnapshotInput`](crate::input::StartSnapshotInput) if a [`ConstraintViolation`] occurs.
|
583 + | /// The builder fails to construct a [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput) if a [`ConstraintViolation`] occurs.
|
680 584 | ///
|
681 585 | /// If the builder fails, it will return the _first_ encountered [`ConstraintViolation`].
|
682 - | pub fn build(self) -> Result<crate::input::StartSnapshotInput, ConstraintViolation> {
|
586 + | pub fn build(self) -> Result<crate::input::CompleteSnapshotInput, ConstraintViolation> {
|
683 587 | self.build_enforcing_all_constraints()
|
684 588 | }
|
685 589 | fn build_enforcing_all_constraints(
|
686 590 | self,
|
687 - | ) -> Result<crate::input::StartSnapshotInput, ConstraintViolation> {
|
688 - | Ok(crate::input::StartSnapshotInput {
|
689 - | timeout: self
|
690 - | .timeout
|
691 - | .map(|v| match v {
|
692 - | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
693 - | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
694 - | })
|
695 - | .map(|res| res.map_err(ConstraintViolation::Timeout))
|
696 - | .transpose()?,
|
697 - | client_token: self
|
698 - | .client_token
|
699 - | .map(|v| match v {
|
700 - | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
701 - | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
702 - | })
|
703 - | .map(|res| res.map_err(ConstraintViolation::ClientToken))
|
704 - | .transpose()?,
|
705 - | volume_size: self
|
706 - | .volume_size
|
591 + | ) -> Result<crate::input::CompleteSnapshotInput, ConstraintViolation> {
|
592 + | Ok(crate::input::CompleteSnapshotInput {
|
593 + | changed_blocks_count: self
|
594 + | .changed_blocks_count
|
707 595 | .map(|v| match v {
|
708 596 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
709 597 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
710 598 | })
|
711 - | .map(|res| res.map_err(ConstraintViolation::VolumeSize))
|
599 + | .map(|res| res.map_err(ConstraintViolation::ChangedBlocksCount))
|
712 600 | .transpose()?
|
713 - | .ok_or(ConstraintViolation::MissingVolumeSize)?,
|
714 - | tags: self
|
715 - | .tags
|
601 + | .ok_or(ConstraintViolation::MissingChangedBlocksCount)?,
|
602 + | checksum_aggregation_method: self
|
603 + | .checksum_aggregation_method
|
716 604 | .map(|v| match v {
|
717 605 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
718 606 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
719 607 | })
|
720 - | .map(|res| res.map(|v| v.into()).map_err(ConstraintViolation::Tags))
|
608 + | .map(|res| res.map_err(ConstraintViolation::ChecksumAggregationMethod))
|
721 609 | .transpose()?,
|
722 - | encrypted: self.encrypted,
|
723 - | kms_key_arn: self
|
724 - | .kms_key_arn
|
610 + | checksum_algorithm: self
|
611 + | .checksum_algorithm
|
725 612 | .map(|v| match v {
|
726 613 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
727 614 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
728 615 | })
|
729 - | .map(|res| res.map_err(ConstraintViolation::KmsKeyArn))
|
616 + | .map(|res| res.map_err(ConstraintViolation::ChecksumAlgorithm))
|
730 617 | .transpose()?,
|
731 - | parent_snapshot_id: self
|
732 - | .parent_snapshot_id
|
618 + | snapshot_id: self
|
619 + | .snapshot_id
|
733 620 | .map(|v| match v {
|
734 621 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
735 622 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
736 623 | })
|
737 - | .map(|res| res.map_err(ConstraintViolation::ParentSnapshotId))
|
738 - | .transpose()?,
|
739 - | description: self
|
740 - | .description
|
624 + | .map(|res| res.map_err(ConstraintViolation::SnapshotId))
|
625 + | .transpose()?
|
626 + | .ok_or(ConstraintViolation::MissingSnapshotId)?,
|
627 + | checksum: self
|
628 + | .checksum
|
741 629 | .map(|v| match v {
|
742 630 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
743 631 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
744 632 | })
|
745 - | .map(|res| res.map_err(ConstraintViolation::Description))
|
633 + | .map(|res| res.map_err(ConstraintViolation::Checksum))
|
746 634 | .transpose()?,
|
747 635 | })
|
748 636 | }
|
749 637 | }
|
750 - | impl ::std::fmt::Debug for Builder {
|
751 - | fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
752 - | let mut formatter = f.debug_struct("Builder");
|
753 - | formatter.field("timeout", &self.timeout);
|
754 - | formatter.field("client_token", &self.client_token);
|
755 - | formatter.field("volume_size", &self.volume_size);
|
756 - | formatter.field("tags", &self.tags);
|
757 - | formatter.field("encrypted", &self.encrypted);
|
758 - | formatter.field("kms_key_arn", &"*** Sensitive Data Redacted ***");
|
759 - | formatter.field("parent_snapshot_id", &self.parent_snapshot_id);
|
760 - | formatter.field("description", &self.description);
|
761 - | formatter.finish()
|
762 - | }
|
763 - | }
|
764 638 | }
|
765 - | /// See [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
|
766 - | pub mod put_snapshot_block_input {
|
639 + | /// See [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
|
640 + | pub mod get_snapshot_block_input {
|
767 641 |
|
768 642 | #[derive(::std::cmp::PartialEq, ::std::fmt::Debug)]
|
769 643 | /// Holds one variant for each of the ways the builder can fail.
|
770 644 | #[non_exhaustive]
|
771 645 | #[allow(clippy::enum_variant_names)]
|
772 646 | pub enum ConstraintViolation {
|
773 - | /// `snapshot_id` was not provided but it is required when building `PutSnapshotBlockInput`.
|
647 + | /// `snapshot_id` was not provided but it is required when building `GetSnapshotBlockInput`.
|
774 648 | MissingSnapshotId,
|
775 - | /// Constraint violation occurred building member `snapshot_id` when building `PutSnapshotBlockInput`.
|
649 + | /// Constraint violation occurred building member `snapshot_id` when building `GetSnapshotBlockInput`.
|
776 650 | #[doc(hidden)]
|
777 651 | SnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
778 - | /// `block_index` was not provided but it is required when building `PutSnapshotBlockInput`.
|
652 + | /// `block_token` was not provided but it is required when building `GetSnapshotBlockInput`.
|
653 + | MissingBlockToken,
|
654 + | /// Constraint violation occurred building member `block_token` when building `GetSnapshotBlockInput`.
|
655 + | #[doc(hidden)]
|
656 + | BlockToken(crate::model::block_token::ConstraintViolation),
|
657 + | /// `block_index` was not provided but it is required when building `GetSnapshotBlockInput`.
|
779 658 | MissingBlockIndex,
|
780 - | /// Constraint violation occurred building member `block_index` when building `PutSnapshotBlockInput`.
|
659 + | /// Constraint violation occurred building member `block_index` when building `GetSnapshotBlockInput`.
|
781 660 | #[doc(hidden)]
|
782 661 | BlockIndex(crate::model::block_index::ConstraintViolation),
|
783 - | /// `checksum` was not provided but it is required when building `PutSnapshotBlockInput`.
|
784 - | MissingChecksum,
|
785 - | /// Constraint violation occurred building member `checksum` when building `PutSnapshotBlockInput`.
|
786 - | #[doc(hidden)]
|
787 - | Checksum(crate::model::checksum::ConstraintViolation),
|
788 - | /// Constraint violation occurred building member `progress` when building `PutSnapshotBlockInput`.
|
789 - | #[doc(hidden)]
|
790 - | Progress(crate::model::progress::ConstraintViolation),
|
791 - | /// `block_data` was not provided but it is required when building `PutSnapshotBlockInput`.
|
792 - | MissingBlockData,
|
793 - | /// `data_length` was not provided but it is required when building `PutSnapshotBlockInput`.
|
794 - | MissingDataLength,
|
795 - | /// `checksum_algorithm` was not provided but it is required when building `PutSnapshotBlockInput`.
|
796 - | MissingChecksumAlgorithm,
|
797 - | /// Constraint violation occurred building member `checksum_algorithm` when building `PutSnapshotBlockInput`.
|
798 - | #[doc(hidden)]
|
799 - | ChecksumAlgorithm(crate::model::checksum_algorithm::ConstraintViolation),
|
800 662 | }
|
801 663 | impl ::std::fmt::Display for ConstraintViolation {
|
802 664 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
803 665 | match self {
|
804 - | ConstraintViolation::MissingSnapshotId => write!(f, "`snapshot_id` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
805 - | ConstraintViolation::SnapshotId(_) => write!(f, "constraint violation occurred building member `snapshot_id` when building `PutSnapshotBlockInput`"),
|
806 - | ConstraintViolation::MissingBlockIndex => write!(f, "`block_index` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
807 - | ConstraintViolation::BlockIndex(_) => write!(f, "constraint violation occurred building member `block_index` when building `PutSnapshotBlockInput`"),
|
808 - | ConstraintViolation::MissingChecksum => write!(f, "`checksum` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
809 - | ConstraintViolation::Checksum(_) => write!(f, "constraint violation occurred building member `checksum` when building `PutSnapshotBlockInput`"),
|
810 - | ConstraintViolation::Progress(_) => write!(f, "constraint violation occurred building member `progress` when building `PutSnapshotBlockInput`"),
|
811 - | ConstraintViolation::MissingBlockData => write!(f, "`block_data` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
812 - | ConstraintViolation::MissingDataLength => write!(f, "`data_length` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
813 - | ConstraintViolation::MissingChecksumAlgorithm => write!(f, "`checksum_algorithm` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
814 - | ConstraintViolation::ChecksumAlgorithm(_) => write!(f, "constraint violation occurred building member `checksum_algorithm` when building `PutSnapshotBlockInput`"),
|
666 + | ConstraintViolation::MissingSnapshotId => write!(f, "`snapshot_id` was not provided but it is required when building `GetSnapshotBlockInput`"),
|
667 + | ConstraintViolation::SnapshotId(_) => write!(f, "constraint violation occurred building member `snapshot_id` when building `GetSnapshotBlockInput`"),
|
668 + | ConstraintViolation::MissingBlockToken => write!(f, "`block_token` was not provided but it is required when building `GetSnapshotBlockInput`"),
|
669 + | ConstraintViolation::BlockToken(_) => write!(f, "constraint violation occurred building member `block_token` when building `GetSnapshotBlockInput`"),
|
670 + | ConstraintViolation::MissingBlockIndex => write!(f, "`block_index` was not provided but it is required when building `GetSnapshotBlockInput`"),
|
671 + | ConstraintViolation::BlockIndex(_) => write!(f, "constraint violation occurred building member `block_index` when building `GetSnapshotBlockInput`"),
|
815 672 | }
|
816 673 | }
|
817 674 | }
|
818 675 | impl ::std::error::Error for ConstraintViolation {}
|
819 676 | impl ConstraintViolation {
|
820 677 | pub(crate) fn as_validation_exception_field(
|
821 678 | self,
|
822 679 | path: ::std::string::String,
|
823 680 | ) -> crate::model::ValidationExceptionField {
|
824 681 | match self {
|
825 682 | ConstraintViolation::MissingSnapshotId => crate::model::ValidationExceptionField {
|
826 683 | message: format!("Value at '{}/SnapshotId' failed to satisfy constraint: Member must not be null", path),
|
827 684 | path: path + "/SnapshotId",
|
828 685 | },
|
829 686 | ConstraintViolation::SnapshotId(inner) => inner.as_validation_exception_field(path + "/SnapshotId"),
|
687 + | ConstraintViolation::MissingBlockToken => crate::model::ValidationExceptionField {
|
688 + | message: format!("Value at '{}/BlockToken' failed to satisfy constraint: Member must not be null", path),
|
689 + | path: path + "/BlockToken",
|
690 + | },
|
691 + | ConstraintViolation::BlockToken(inner) => inner.as_validation_exception_field(path + "/BlockToken"),
|
830 692 | ConstraintViolation::MissingBlockIndex => crate::model::ValidationExceptionField {
|
831 693 | message: format!("Value at '{}/BlockIndex' failed to satisfy constraint: Member must not be null", path),
|
832 694 | path: path + "/BlockIndex",
|
833 695 | },
|
834 696 | ConstraintViolation::BlockIndex(inner) => inner.as_validation_exception_field(path + "/BlockIndex"),
|
835 - | ConstraintViolation::MissingChecksum => crate::model::ValidationExceptionField {
|
836 - | message: format!("Value at '{}/Checksum' failed to satisfy constraint: Member must not be null", path),
|
837 - | path: path + "/Checksum",
|
838 - | },
|
839 - | ConstraintViolation::Checksum(inner) => inner.as_validation_exception_field(path + "/Checksum"),
|
840 - | ConstraintViolation::Progress(inner) => inner.as_validation_exception_field(path + "/Progress"),
|
841 - | ConstraintViolation::MissingBlockData => crate::model::ValidationExceptionField {
|
842 - | message: format!("Value at '{}/BlockData' failed to satisfy constraint: Member must not be null", path),
|
843 - | path: path + "/BlockData",
|
844 - | },
|
845 - | ConstraintViolation::MissingDataLength => crate::model::ValidationExceptionField {
|
846 - | message: format!("Value at '{}/DataLength' failed to satisfy constraint: Member must not be null", path),
|
847 - | path: path + "/DataLength",
|
848 - | },
|
849 - | ConstraintViolation::MissingChecksumAlgorithm => crate::model::ValidationExceptionField {
|
850 - | message: format!("Value at '{}/ChecksumAlgorithm' failed to satisfy constraint: Member must not be null", path),
|
851 - | path: path + "/ChecksumAlgorithm",
|
852 - | },
|
853 - | ConstraintViolation::ChecksumAlgorithm(inner) => inner.as_validation_exception_field(path + "/ChecksumAlgorithm"),
|
854 697 | }
|
855 698 | }
|
856 699 | }
|
857 700 | impl ::std::convert::From<ConstraintViolation>
|
858 701 | for ::aws_smithy_legacy_http_server::protocol::rest_json_1::rejection::RequestRejection
|
859 702 | {
|
860 703 | fn from(constraint_violation: ConstraintViolation) -> Self {
|
861 704 | let first_validation_exception_field =
|
862 705 | constraint_violation.as_validation_exception_field("".to_owned());
|
863 706 | let validation_exception = crate::error::ValidationException {
|
864 707 | message: format!(
|
865 708 | "1 validation error detected. {}",
|
866 709 | &first_validation_exception_field.message
|
867 710 | ),
|
868 711 | field_list: Some(vec![first_validation_exception_field]),
|
869 712 | };
|
870 713 | Self::ConstraintViolation(
|
871 714 | crate::protocol_serde::shape_validation_exception::ser_validation_exception_error(&validation_exception)
|
872 715 | .expect("validation exceptions should never fail to serialize; please file a bug report under https://github.com/smithy-lang/smithy-rs/issues")
|
873 716 | )
|
874 717 | }
|
875 718 | }
|
876 719 | impl ::std::convert::From<Builder>
|
877 - | for crate::constrained::MaybeConstrained<crate::input::PutSnapshotBlockInput>
|
720 + | for crate::constrained::MaybeConstrained<crate::input::GetSnapshotBlockInput>
|
878 721 | {
|
879 722 | fn from(builder: Builder) -> Self {
|
880 723 | Self::Unconstrained(builder)
|
881 724 | }
|
882 725 | }
|
883 - | impl ::std::convert::TryFrom<Builder> for crate::input::PutSnapshotBlockInput {
|
726 + | impl ::std::convert::TryFrom<Builder> for crate::input::GetSnapshotBlockInput {
|
884 727 | type Error = ConstraintViolation;
|
885 728 |
|
886 729 | fn try_from(builder: Builder) -> ::std::result::Result<Self, Self::Error> {
|
887 730 | builder.build()
|
888 731 | }
|
889 732 | }
|
890 - | /// A builder for [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
|
891 - | #[derive(::std::default::Default)]
|
733 + | /// A builder for [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
|
734 + | #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
|
892 735 | pub struct Builder {
|
893 736 | pub(crate) snapshot_id:
|
894 737 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
738 + | pub(crate) block_token:
|
739 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::BlockToken>>,
|
895 740 | pub(crate) block_index:
|
896 741 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::BlockIndex>>,
|
897 - | pub(crate) checksum:
|
898 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Checksum>>,
|
899 - | pub(crate) progress:
|
900 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Progress>>,
|
901 - | pub(crate) block_data: ::std::option::Option<::aws_smithy_types::byte_stream::ByteStream>,
|
902 - | pub(crate) data_length: ::std::option::Option<i32>,
|
903 - | pub(crate) checksum_algorithm: ::std::option::Option<
|
904 - | crate::constrained::MaybeConstrained<crate::model::ChecksumAlgorithm>,
|
905 - | >,
|
906 742 | }
|
907 743 | impl Builder {
|
908 - | /// <p>The ID of the snapshot.</p>
|
744 + | /// <p>The ID of the snapshot containing the block from which to get data.</p>
|
909 745 | pub fn snapshot_id(mut self, input: crate::model::SnapshotId) -> Self {
|
910 746 | self.snapshot_id = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
911 747 | self
|
912 748 | }
|
913 - | /// <p>The ID of the snapshot.</p>
|
749 + | /// <p>The ID of the snapshot containing the block from which to get data.</p>
|
914 750 | pub(crate) fn set_snapshot_id(
|
915 751 | mut self,
|
916 752 | input: impl ::std::convert::Into<
|
917 753 | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
918 754 | >,
|
919 755 | ) -> Self {
|
920 756 | self.snapshot_id = Some(input.into());
|
921 757 | self
|
922 758 | }
|
923 - | /// <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
|
924 - | pub fn block_index(mut self, input: crate::model::BlockIndex) -> Self {
|
925 - | self.block_index = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
926 - | self
|
927 - | }
|
928 - | /// <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
|
929 - | pub(crate) fn set_block_index(
|
930 - | mut self,
|
931 - | input: impl ::std::convert::Into<
|
932 - | crate::constrained::MaybeConstrained<crate::model::BlockIndex>,
|
933 - | >,
|
934 - | ) -> Self {
|
935 - | self.block_index = Some(input.into());
|
936 - | self
|
937 - | }
|
938 - | /// <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
|
939 - | pub fn checksum(mut self, input: crate::model::Checksum) -> Self {
|
940 - | self.checksum = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
759 + | /// <p>The block token of the block from which to get data.</p>
|
760 + | /// <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
761 + | pub fn block_token(mut self, input: crate::model::BlockToken) -> Self {
|
762 + | self.block_token = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
941 763 | self
|
942 764 | }
|
943 - | /// <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
|
944 - | pub(crate) fn set_checksum(
|
765 + | /// <p>The block token of the block from which to get data.</p>
|
766 + | /// <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
767 + | pub(crate) fn set_block_token(
|
945 768 | mut self,
|
946 769 | input: impl ::std::convert::Into<
|
947 - | crate::constrained::MaybeConstrained<crate::model::Checksum>,
|
948 - | >,
|
949 - | ) -> Self {
|
950 - | self.checksum = Some(input.into());
|
951 - | self
|
952 - | }
|
953 - | /// <p>The progress of the write process, as a percentage.</p>
|
954 - | pub fn progress(mut self, input: ::std::option::Option<crate::model::Progress>) -> Self {
|
955 - | self.progress = input.map(crate::constrained::MaybeConstrained::Constrained);
|
956 - | self
|
957 - | }
|
958 - | /// <p>The progress of the write process, as a percentage.</p>
|
959 - | pub(crate) fn set_progress(
|
960 - | mut self,
|
961 - | input: Option<
|
962 - | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::Progress>>,
|
770 + | crate::constrained::MaybeConstrained<crate::model::BlockToken>,
|
963 771 | >,
|
964 772 | ) -> Self {
|
965 - | self.progress = input.map(|v| v.into());
|
966 - | self
|
967 - | }
|
968 - | /// <p>The data to write to the block.</p>
|
969 - | /// <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
970 - | pub fn block_data(mut self, input: ::aws_smithy_types::byte_stream::ByteStream) -> Self {
|
971 - | self.block_data = Some(input);
|
972 - | self
|
973 - | }
|
974 - | /// <p>The data to write to the block.</p>
|
975 - | /// <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
976 - | pub(crate) fn set_block_data(
|
977 - | mut self,
|
978 - | input: impl ::std::convert::Into<::aws_smithy_types::byte_stream::ByteStream>,
|
979 - | ) -> Self {
|
980 - | self.block_data = Some(input.into());
|
981 - | self
|
982 - | }
|
983 - | /// <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
|
984 - | /// <p>Valid values: <code>524288</code></p>
|
985 - | pub fn data_length(mut self, input: i32) -> Self {
|
986 - | self.data_length = Some(input);
|
987 - | self
|
988 - | }
|
989 - | /// <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
|
990 - | /// <p>Valid values: <code>524288</code></p>
|
991 - | pub(crate) fn set_data_length(mut self, input: impl ::std::convert::Into<i32>) -> Self {
|
992 - | self.data_length = Some(input.into());
|
773 + | self.block_token = Some(input.into());
|
993 774 | self
|
994 775 | }
|
995 - | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
996 - | pub fn checksum_algorithm(mut self, input: crate::model::ChecksumAlgorithm) -> Self {
|
997 - | self.checksum_algorithm =
|
998 - | Some(crate::constrained::MaybeConstrained::Constrained(input));
|
776 + | /// <p>The block index of the block from which to get data.</p>
|
777 + | /// <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
778 + | pub fn block_index(mut self, input: crate::model::BlockIndex) -> Self {
|
779 + | self.block_index = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
999 780 | self
|
1000 781 | }
|
1001 - | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
1002 - | pub(crate) fn set_checksum_algorithm(
|
782 + | /// <p>The block index of the block from which to get data.</p>
|
783 + | /// <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
784 + | pub(crate) fn set_block_index(
|
1003 785 | mut self,
|
1004 786 | input: impl ::std::convert::Into<
|
1005 - | crate::constrained::MaybeConstrained<crate::model::ChecksumAlgorithm>,
|
787 + | crate::constrained::MaybeConstrained<crate::model::BlockIndex>,
|
1006 788 | >,
|
1007 789 | ) -> Self {
|
1008 - | self.checksum_algorithm = Some(input.into());
|
790 + | self.block_index = Some(input.into());
|
1009 791 | self
|
1010 792 | }
|
1011 - | /// Consumes the builder and constructs a [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
|
793 + | /// Consumes the builder and constructs a [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
|
1012 794 | ///
|
1013 - | /// The builder fails to construct a [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput) if a [`ConstraintViolation`] occurs.
|
795 + | /// The builder fails to construct a [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput) if a [`ConstraintViolation`] occurs.
|
1014 796 | ///
|
1015 797 | /// If the builder fails, it will return the _first_ encountered [`ConstraintViolation`].
|
1016 - | pub fn build(self) -> Result<crate::input::PutSnapshotBlockInput, ConstraintViolation> {
|
798 + | pub fn build(self) -> Result<crate::input::GetSnapshotBlockInput, ConstraintViolation> {
|
1017 799 | self.build_enforcing_all_constraints()
|
1018 800 | }
|
1019 801 | fn build_enforcing_all_constraints(
|
1020 802 | self,
|
1021 - | ) -> Result<crate::input::PutSnapshotBlockInput, ConstraintViolation> {
|
1022 - | Ok(crate::input::PutSnapshotBlockInput {
|
803 + | ) -> Result<crate::input::GetSnapshotBlockInput, ConstraintViolation> {
|
804 + | Ok(crate::input::GetSnapshotBlockInput {
|
1023 805 | snapshot_id: self
|
1024 806 | .snapshot_id
|
1025 807 | .map(|v| match v {
|
1026 808 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1027 809 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1028 810 | })
|
1029 811 | .map(|res| res.map_err(ConstraintViolation::SnapshotId))
|
1030 812 | .transpose()?
|
1031 813 | .ok_or(ConstraintViolation::MissingSnapshotId)?,
|
1032 - | block_index: self
|
1033 - | .block_index
|
1034 - | .map(|v| match v {
|
1035 - | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1036 - | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1037 - | })
|
1038 - | .map(|res| res.map_err(ConstraintViolation::BlockIndex))
|
1039 - | .transpose()?
|
1040 - | .ok_or(ConstraintViolation::MissingBlockIndex)?,
|
1041 - | checksum: self
|
1042 - | .checksum
|
1043 - | .map(|v| match v {
|
1044 - | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1045 - | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1046 - | })
|
1047 - | .map(|res| res.map_err(ConstraintViolation::Checksum))
|
1048 - | .transpose()?
|
1049 - | .ok_or(ConstraintViolation::MissingChecksum)?,
|
1050 - | progress: self
|
1051 - | .progress
|
814 + | block_token: self
|
815 + | .block_token
|
1052 816 | .map(|v| match v {
|
1053 817 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1054 818 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1055 819 | })
|
1056 - | .map(|res| res.map_err(ConstraintViolation::Progress))
|
1057 - | .transpose()?,
|
1058 - | block_data: self
|
1059 - | .block_data
|
1060 - | .ok_or(ConstraintViolation::MissingBlockData)?,
|
1061 - | data_length: self
|
1062 - | .data_length
|
1063 - | .ok_or(ConstraintViolation::MissingDataLength)?,
|
1064 - | checksum_algorithm: self
|
1065 - | .checksum_algorithm
|
820 + | .map(|res| res.map_err(ConstraintViolation::BlockToken))
|
821 + | .transpose()?
|
822 + | .ok_or(ConstraintViolation::MissingBlockToken)?,
|
823 + | block_index: self
|
824 + | .block_index
|
1066 825 | .map(|v| match v {
|
1067 826 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1068 827 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1069 828 | })
|
1070 - | .map(|res| res.map_err(ConstraintViolation::ChecksumAlgorithm))
|
829 + | .map(|res| res.map_err(ConstraintViolation::BlockIndex))
|
1071 830 | .transpose()?
|
1072 - | .ok_or(ConstraintViolation::MissingChecksumAlgorithm)?,
|
831 + | .ok_or(ConstraintViolation::MissingBlockIndex)?,
|
1073 832 | })
|
1074 833 | }
|
1075 834 | }
|
1076 - | impl ::std::fmt::Debug for Builder {
|
1077 - | fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
1078 - | let mut formatter = f.debug_struct("Builder");
|
1079 - | formatter.field("snapshot_id", &self.snapshot_id);
|
1080 - | formatter.field("block_index", &self.block_index);
|
1081 - | formatter.field("checksum", &self.checksum);
|
1082 - | formatter.field("progress", &self.progress);
|
1083 - | formatter.field("block_data", &"*** Sensitive Data Redacted ***");
|
1084 - | formatter.field("data_length", &self.data_length);
|
1085 - | formatter.field("checksum_algorithm", &self.checksum_algorithm);
|
1086 - | formatter.finish()
|
1087 - | }
|
1088 - | }
|
1089 835 | }
|
1090 - | /// See [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput).
|
1091 - | pub mod list_snapshot_blocks_input {
|
836 + | /// See [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput).
|
837 + | pub mod list_changed_blocks_input {
|
1092 838 |
|
1093 839 | #[derive(::std::cmp::PartialEq, ::std::fmt::Debug)]
|
1094 840 | /// Holds one variant for each of the ways the builder can fail.
|
1095 841 | #[non_exhaustive]
|
1096 842 | #[allow(clippy::enum_variant_names)]
|
1097 843 | pub enum ConstraintViolation {
|
1098 - | /// Constraint violation occurred building member `max_results` when building `ListSnapshotBlocksInput`.
|
844 + | /// `second_snapshot_id` was not provided but it is required when building `ListChangedBlocksInput`.
|
845 + | MissingSecondSnapshotId,
|
846 + | /// Constraint violation occurred building member `second_snapshot_id` when building `ListChangedBlocksInput`.
|
1099 847 | #[doc(hidden)]
|
1100 - | MaxResults(crate::model::max_results::ConstraintViolation),
|
1101 - | /// Constraint violation occurred building member `starting_block_index` when building `ListSnapshotBlocksInput`.
|
848 + | SecondSnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
849 + | /// Constraint violation occurred building member `first_snapshot_id` when building `ListChangedBlocksInput`.
|
1102 850 | #[doc(hidden)]
|
1103 - | StartingBlockIndex(crate::model::block_index::ConstraintViolation),
|
1104 - | /// Constraint violation occurred building member `next_token` when building `ListSnapshotBlocksInput`.
|
851 + | FirstSnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
852 + | /// Constraint violation occurred building member `next_token` when building `ListChangedBlocksInput`.
|
1105 853 | #[doc(hidden)]
|
1106 854 | NextToken(crate::model::page_token::ConstraintViolation),
|
1107 - | /// `snapshot_id` was not provided but it is required when building `ListSnapshotBlocksInput`.
|
1108 - | MissingSnapshotId,
|
1109 - | /// Constraint violation occurred building member `snapshot_id` when building `ListSnapshotBlocksInput`.
|
855 + | /// Constraint violation occurred building member `max_results` when building `ListChangedBlocksInput`.
|
1110 856 | #[doc(hidden)]
|
1111 - | SnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
857 + | MaxResults(crate::model::max_results::ConstraintViolation),
|
858 + | /// Constraint violation occurred building member `starting_block_index` when building `ListChangedBlocksInput`.
|
859 + | #[doc(hidden)]
|
860 + | StartingBlockIndex(crate::model::block_index::ConstraintViolation),
|
1112 861 | }
|
1113 862 | impl ::std::fmt::Display for ConstraintViolation {
|
1114 863 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
1115 864 | match self {
|
1116 - | ConstraintViolation::MaxResults(_) => write!(f, "constraint violation occurred building member `max_results` when building `ListSnapshotBlocksInput`"),
|
1117 - | ConstraintViolation::StartingBlockIndex(_) => write!(f, "constraint violation occurred building member `starting_block_index` when building `ListSnapshotBlocksInput`"),
|
1118 - | ConstraintViolation::NextToken(_) => write!(f, "constraint violation occurred building member `next_token` when building `ListSnapshotBlocksInput`"),
|
1119 - | ConstraintViolation::MissingSnapshotId => write!(f, "`snapshot_id` was not provided but it is required when building `ListSnapshotBlocksInput`"),
|
1120 - | ConstraintViolation::SnapshotId(_) => write!(f, "constraint violation occurred building member `snapshot_id` when building `ListSnapshotBlocksInput`"),
|
865 + | ConstraintViolation::MissingSecondSnapshotId => write!(f, "`second_snapshot_id` was not provided but it is required when building `ListChangedBlocksInput`"),
|
866 + | ConstraintViolation::SecondSnapshotId(_) => write!(f, "constraint violation occurred building member `second_snapshot_id` when building `ListChangedBlocksInput`"),
|
867 + | ConstraintViolation::FirstSnapshotId(_) => write!(f, "constraint violation occurred building member `first_snapshot_id` when building `ListChangedBlocksInput`"),
|
868 + | ConstraintViolation::NextToken(_) => write!(f, "constraint violation occurred building member `next_token` when building `ListChangedBlocksInput`"),
|
869 + | ConstraintViolation::MaxResults(_) => write!(f, "constraint violation occurred building member `max_results` when building `ListChangedBlocksInput`"),
|
870 + | ConstraintViolation::StartingBlockIndex(_) => write!(f, "constraint violation occurred building member `starting_block_index` when building `ListChangedBlocksInput`"),
|
1121 871 | }
|
1122 872 | }
|
1123 873 | }
|
1124 874 | impl ::std::error::Error for ConstraintViolation {}
|
1125 875 | impl ConstraintViolation {
|
1126 876 | pub(crate) fn as_validation_exception_field(
|
1127 877 | self,
|
1128 878 | path: ::std::string::String,
|
1129 879 | ) -> crate::model::ValidationExceptionField {
|
1130 880 | match self {
|
881 + | ConstraintViolation::MissingSecondSnapshotId => crate::model::ValidationExceptionField {
|
882 + | message: format!("Value at '{}/SecondSnapshotId' failed to satisfy constraint: Member must not be null", path),
|
883 + | path: path + "/SecondSnapshotId",
|
884 + | },
|
885 + | ConstraintViolation::SecondSnapshotId(inner) => inner.as_validation_exception_field(path + "/SecondSnapshotId"),
|
886 + | ConstraintViolation::FirstSnapshotId(inner) => inner.as_validation_exception_field(path + "/FirstSnapshotId"),
|
887 + | ConstraintViolation::NextToken(inner) => inner.as_validation_exception_field(path + "/NextToken"),
|
1131 888 | ConstraintViolation::MaxResults(inner) => inner.as_validation_exception_field(path + "/MaxResults"),
|
1132 889 | ConstraintViolation::StartingBlockIndex(inner) => inner.as_validation_exception_field(path + "/StartingBlockIndex"),
|
1133 - | ConstraintViolation::NextToken(inner) => inner.as_validation_exception_field(path + "/NextToken"),
|
1134 - | ConstraintViolation::MissingSnapshotId => crate::model::ValidationExceptionField {
|
1135 - | message: format!("Value at '{}/SnapshotId' failed to satisfy constraint: Member must not be null", path),
|
1136 - | path: path + "/SnapshotId",
|
1137 - | },
|
1138 - | ConstraintViolation::SnapshotId(inner) => inner.as_validation_exception_field(path + "/SnapshotId"),
|
1139 890 | }
|
1140 891 | }
|
1141 892 | }
|
1142 893 | impl ::std::convert::From<ConstraintViolation>
|
1143 894 | for ::aws_smithy_legacy_http_server::protocol::rest_json_1::rejection::RequestRejection
|
1144 895 | {
|
1145 896 | fn from(constraint_violation: ConstraintViolation) -> Self {
|
1146 897 | let first_validation_exception_field =
|
1147 898 | constraint_violation.as_validation_exception_field("".to_owned());
|
1148 899 | let validation_exception = crate::error::ValidationException {
|
1149 900 | message: format!(
|
1150 901 | "1 validation error detected. {}",
|
1151 902 | &first_validation_exception_field.message
|
1152 903 | ),
|
1153 904 | field_list: Some(vec![first_validation_exception_field]),
|
1154 905 | };
|
1155 906 | Self::ConstraintViolation(
|
1156 907 | crate::protocol_serde::shape_validation_exception::ser_validation_exception_error(&validation_exception)
|
1157 908 | .expect("validation exceptions should never fail to serialize; please file a bug report under https://github.com/smithy-lang/smithy-rs/issues")
|
1158 909 | )
|
1159 910 | }
|
1160 911 | }
|
1161 912 | impl ::std::convert::From<Builder>
|
1162 - | for crate::constrained::MaybeConstrained<crate::input::ListSnapshotBlocksInput>
|
913 + | for crate::constrained::MaybeConstrained<crate::input::ListChangedBlocksInput>
|
1163 914 | {
|
1164 915 | fn from(builder: Builder) -> Self {
|
1165 916 | Self::Unconstrained(builder)
|
1166 917 | }
|
1167 918 | }
|
1168 - | impl ::std::convert::TryFrom<Builder> for crate::input::ListSnapshotBlocksInput {
|
919 + | impl ::std::convert::TryFrom<Builder> for crate::input::ListChangedBlocksInput {
|
1169 920 | type Error = ConstraintViolation;
|
1170 921 |
|
1171 922 | fn try_from(builder: Builder) -> ::std::result::Result<Self, Self::Error> {
|
1172 923 | builder.build()
|
1173 924 | }
|
1174 925 | }
|
1175 - | /// A builder for [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput).
|
926 + | /// A builder for [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput).
|
1176 927 | #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
|
1177 928 | pub struct Builder {
|
929 + | pub(crate) second_snapshot_id:
|
930 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
931 + | pub(crate) first_snapshot_id:
|
932 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
933 + | pub(crate) next_token:
|
934 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::PageToken>>,
|
1178 935 | pub(crate) max_results:
|
1179 936 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::MaxResults>>,
|
1180 937 | pub(crate) starting_block_index:
|
1181 938 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::BlockIndex>>,
|
1182 - | pub(crate) next_token:
|
1183 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::PageToken>>,
|
1184 - | pub(crate) snapshot_id:
|
1185 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
1186 939 | }
|
1187 940 | impl Builder {
|
1188 - | /// <p>The number of results to return.</p>
|
1189 - | pub fn max_results(
|
1190 - | mut self,
|
1191 - | input: ::std::option::Option<crate::model::MaxResults>,
|
1192 - | ) -> Self {
|
1193 - | self.max_results = input.map(crate::constrained::MaybeConstrained::Constrained);
|
941 + | /// <p>The ID of the second snapshot to use for the comparison.</p><important>
|
942 + | /// <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p>
|
943 + | /// </important>
|
944 + | pub fn second_snapshot_id(mut self, input: crate::model::SnapshotId) -> Self {
|
945 + | self.second_snapshot_id =
|
946 + | Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1194 947 | self
|
1195 948 | }
|
1196 - | /// <p>The number of results to return.</p>
|
1197 - | pub(crate) fn set_max_results(
|
949 + | /// <p>The ID of the second snapshot to use for the comparison.</p><important>
|
950 + | /// <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p>
|
951 + | /// </important>
|
952 + | pub(crate) fn set_second_snapshot_id(
|
1198 953 | mut self,
|
1199 - | input: Option<
|
1200 - | impl ::std::convert::Into<
|
1201 - | crate::constrained::MaybeConstrained<crate::model::MaxResults>,
|
1202 - | >,
|
954 + | input: impl ::std::convert::Into<
|
955 + | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1203 956 | >,
|
1204 957 | ) -> Self {
|
1205 - | self.max_results = input.map(|v| v.into());
|
958 + | self.second_snapshot_id = Some(input.into());
|
1206 959 | self
|
1207 960 | }
|
1208 - | /// <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
|
1209 - | pub fn starting_block_index(
|
961 + | /// <p>The ID of the first snapshot to use for the comparison.</p><important>
|
962 + | /// <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p>
|
963 + | /// </important>
|
964 + | pub fn first_snapshot_id(
|
1210 965 | mut self,
|
1211 - | input: ::std::option::Option<crate::model::BlockIndex>,
|
966 + | input: ::std::option::Option<crate::model::SnapshotId>,
|
1212 967 | ) -> Self {
|
1213 - | self.starting_block_index =
|
1214 - | input.map(crate::constrained::MaybeConstrained::Constrained);
|
968 + | self.first_snapshot_id = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1215 969 | self
|
1216 970 | }
|
1217 - | /// <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
|
1218 - | pub(crate) fn set_starting_block_index(
|
971 + | /// <p>The ID of the first snapshot to use for the comparison.</p><important>
|
972 + | /// <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p>
|
973 + | /// </important>
|
974 + | pub(crate) fn set_first_snapshot_id(
|
1219 975 | mut self,
|
1220 976 | input: Option<
|
1221 977 | impl ::std::convert::Into<
|
1222 - | crate::constrained::MaybeConstrained<crate::model::BlockIndex>,
|
978 + | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1223 979 | >,
|
1224 980 | >,
|
1225 981 | ) -> Self {
|
1226 - | self.starting_block_index = input.map(|v| v.into());
|
982 + | self.first_snapshot_id = input.map(|v| v.into());
|
1227 983 | self
|
1228 984 | }
|
1229 985 | /// <p>The token to request the next page of results.</p>
|
1230 986 | pub fn next_token(mut self, input: ::std::option::Option<crate::model::PageToken>) -> Self {
|
1231 987 | self.next_token = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1232 988 | self
|
1233 989 | }
|
1234 990 | /// <p>The token to request the next page of results.</p>
|
1235 991 | pub(crate) fn set_next_token(
|
1236 992 | mut self,
|
1237 993 | input: Option<
|
1238 994 | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::PageToken>>,
|
1239 995 | >,
|
1240 996 | ) -> Self {
|
1241 997 | self.next_token = input.map(|v| v.into());
|
1242 998 | self
|
1243 999 | }
|
1244 - | /// <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
|
1245 - | pub fn snapshot_id(mut self, input: crate::model::SnapshotId) -> Self {
|
1246 - | self.snapshot_id = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1000 + | /// <p>The number of results to return.</p>
|
1001 + | pub fn max_results(
|
1002 + | mut self,
|
1003 + | input: ::std::option::Option<crate::model::MaxResults>,
|
1004 + | ) -> Self {
|
1005 + | self.max_results = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1247 1006 | self
|
1248 1007 | }
|
1249 - | /// <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
|
1250 - | pub(crate) fn set_snapshot_id(
|
1008 + | /// <p>The number of results to return.</p>
|
1009 + | pub(crate) fn set_max_results(
|
1251 1010 | mut self,
|
1252 - | input: impl ::std::convert::Into<
|
1253 - | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1011 + | input: Option<
|
1012 + | impl ::std::convert::Into<
|
1013 + | crate::constrained::MaybeConstrained<crate::model::MaxResults>,
|
1014 + | >,
|
1254 1015 | >,
|
1255 1016 | ) -> Self {
|
1256 - | self.snapshot_id = Some(input.into());
|
1017 + | self.max_results = input.map(|v| v.into());
|
1257 1018 | self
|
1258 1019 | }
|
1259 - | /// Consumes the builder and constructs a [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput).
|
1020 + | /// <p>The block index from which the comparison should start.</p>
|
1021 + | /// <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p>
|
1022 + | pub fn starting_block_index(
|
1023 + | mut self,
|
1024 + | input: ::std::option::Option<crate::model::BlockIndex>,
|
1025 + | ) -> Self {
|
1026 + | self.starting_block_index =
|
1027 + | input.map(crate::constrained::MaybeConstrained::Constrained);
|
1028 + | self
|
1029 + | }
|
1030 + | /// <p>The block index from which the comparison should start.</p>
|
1031 + | /// <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p>
|
1032 + | pub(crate) fn set_starting_block_index(
|
1033 + | mut self,
|
1034 + | input: Option<
|
1035 + | impl ::std::convert::Into<
|
1036 + | crate::constrained::MaybeConstrained<crate::model::BlockIndex>,
|
1037 + | >,
|
1038 + | >,
|
1039 + | ) -> Self {
|
1040 + | self.starting_block_index = input.map(|v| v.into());
|
1041 + | self
|
1042 + | }
|
1043 + | /// Consumes the builder and constructs a [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput).
|
1260 1044 | ///
|
1261 - | /// The builder fails to construct a [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput) if a [`ConstraintViolation`] occurs.
|
1045 + | /// The builder fails to construct a [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput) if a [`ConstraintViolation`] occurs.
|
1262 1046 | ///
|
1263 1047 | /// If the builder fails, it will return the _first_ encountered [`ConstraintViolation`].
|
1264 - | pub fn build(self) -> Result<crate::input::ListSnapshotBlocksInput, ConstraintViolation> {
|
1048 + | pub fn build(self) -> Result<crate::input::ListChangedBlocksInput, ConstraintViolation> {
|
1265 1049 | self.build_enforcing_all_constraints()
|
1266 1050 | }
|
1267 1051 | fn build_enforcing_all_constraints(
|
1268 1052 | self,
|
1269 - | ) -> Result<crate::input::ListSnapshotBlocksInput, ConstraintViolation> {
|
1270 - | Ok(crate::input::ListSnapshotBlocksInput {
|
1271 - | max_results: self
|
1272 - | .max_results
|
1053 + | ) -> Result<crate::input::ListChangedBlocksInput, ConstraintViolation> {
|
1054 + | Ok(crate::input::ListChangedBlocksInput {
|
1055 + | second_snapshot_id: self
|
1056 + | .second_snapshot_id
|
1273 1057 | .map(|v| match v {
|
1274 1058 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1275 1059 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1276 1060 | })
|
1277 - | .map(|res| res.map_err(ConstraintViolation::MaxResults))
|
1278 - | .transpose()?,
|
1279 - | starting_block_index: self
|
1280 - | .starting_block_index
|
1061 + | .map(|res| res.map_err(ConstraintViolation::SecondSnapshotId))
|
1062 + | .transpose()?
|
1063 + | .ok_or(ConstraintViolation::MissingSecondSnapshotId)?,
|
1064 + | first_snapshot_id: self
|
1065 + | .first_snapshot_id
|
1281 1066 | .map(|v| match v {
|
1282 1067 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1283 1068 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1284 1069 | })
|
1285 - | .map(|res| res.map_err(ConstraintViolation::StartingBlockIndex))
|
1070 + | .map(|res| res.map_err(ConstraintViolation::FirstSnapshotId))
|
1286 1071 | .transpose()?,
|
1287 1072 | next_token: self
|
1288 1073 | .next_token
|
1289 1074 | .map(|v| match v {
|
1290 1075 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1291 1076 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1292 1077 | })
|
1293 1078 | .map(|res| res.map_err(ConstraintViolation::NextToken))
|
1294 1079 | .transpose()?,
|
1295 - | snapshot_id: self
|
1296 - | .snapshot_id
|
1080 + | max_results: self
|
1081 + | .max_results
|
1297 1082 | .map(|v| match v {
|
1298 1083 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1299 1084 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1300 1085 | })
|
1301 - | .map(|res| res.map_err(ConstraintViolation::SnapshotId))
|
1302 - | .transpose()?
|
1303 - | .ok_or(ConstraintViolation::MissingSnapshotId)?,
|
1086 + | .map(|res| res.map_err(ConstraintViolation::MaxResults))
|
1087 + | .transpose()?,
|
1088 + | starting_block_index: self
|
1089 + | .starting_block_index
|
1090 + | .map(|v| match v {
|
1091 + | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1092 + | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1093 + | })
|
1094 + | .map(|res| res.map_err(ConstraintViolation::StartingBlockIndex))
|
1095 + | .transpose()?,
|
1304 1096 | })
|
1305 1097 | }
|
1306 1098 | }
|
1307 1099 | }
|
1308 - | /// See [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput).
|
1309 - | pub mod list_changed_blocks_input {
|
1100 + | /// See [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput).
|
1101 + | pub mod list_snapshot_blocks_input {
|
1310 1102 |
|
1311 1103 | #[derive(::std::cmp::PartialEq, ::std::fmt::Debug)]
|
1312 1104 | /// Holds one variant for each of the ways the builder can fail.
|
1313 1105 | #[non_exhaustive]
|
1314 1106 | #[allow(clippy::enum_variant_names)]
|
1315 1107 | pub enum ConstraintViolation {
|
1316 - | /// `second_snapshot_id` was not provided but it is required when building `ListChangedBlocksInput`.
|
1317 - | MissingSecondSnapshotId,
|
1318 - | /// Constraint violation occurred building member `second_snapshot_id` when building `ListChangedBlocksInput`.
|
1108 + | /// Constraint violation occurred building member `max_results` when building `ListSnapshotBlocksInput`.
|
1319 1109 | #[doc(hidden)]
|
1320 - | SecondSnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
1321 - | /// Constraint violation occurred building member `first_snapshot_id` when building `ListChangedBlocksInput`.
|
1110 + | MaxResults(crate::model::max_results::ConstraintViolation),
|
1111 + | /// Constraint violation occurred building member `starting_block_index` when building `ListSnapshotBlocksInput`.
|
1322 1112 | #[doc(hidden)]
|
1323 - | FirstSnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
1324 - | /// Constraint violation occurred building member `next_token` when building `ListChangedBlocksInput`.
|
1113 + | StartingBlockIndex(crate::model::block_index::ConstraintViolation),
|
1114 + | /// Constraint violation occurred building member `next_token` when building `ListSnapshotBlocksInput`.
|
1325 1115 | #[doc(hidden)]
|
1326 1116 | NextToken(crate::model::page_token::ConstraintViolation),
|
1327 - | /// Constraint violation occurred building member `max_results` when building `ListChangedBlocksInput`.
|
1328 - | #[doc(hidden)]
|
1329 - | MaxResults(crate::model::max_results::ConstraintViolation),
|
1330 - | /// Constraint violation occurred building member `starting_block_index` when building `ListChangedBlocksInput`.
|
1117 + | /// `snapshot_id` was not provided but it is required when building `ListSnapshotBlocksInput`.
|
1118 + | MissingSnapshotId,
|
1119 + | /// Constraint violation occurred building member `snapshot_id` when building `ListSnapshotBlocksInput`.
|
1331 1120 | #[doc(hidden)]
|
1332 - | StartingBlockIndex(crate::model::block_index::ConstraintViolation),
|
1121 + | SnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
1333 1122 | }
|
1334 1123 | impl ::std::fmt::Display for ConstraintViolation {
|
1335 1124 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
1336 1125 | match self {
|
1337 - | ConstraintViolation::MissingSecondSnapshotId => write!(f, "`second_snapshot_id` was not provided but it is required when building `ListChangedBlocksInput`"),
|
1338 - | ConstraintViolation::SecondSnapshotId(_) => write!(f, "constraint violation occurred building member `second_snapshot_id` when building `ListChangedBlocksInput`"),
|
1339 - | ConstraintViolation::FirstSnapshotId(_) => write!(f, "constraint violation occurred building member `first_snapshot_id` when building `ListChangedBlocksInput`"),
|
1340 - | ConstraintViolation::NextToken(_) => write!(f, "constraint violation occurred building member `next_token` when building `ListChangedBlocksInput`"),
|
1341 - | ConstraintViolation::MaxResults(_) => write!(f, "constraint violation occurred building member `max_results` when building `ListChangedBlocksInput`"),
|
1342 - | ConstraintViolation::StartingBlockIndex(_) => write!(f, "constraint violation occurred building member `starting_block_index` when building `ListChangedBlocksInput`"),
|
1126 + | ConstraintViolation::MaxResults(_) => write!(f, "constraint violation occurred building member `max_results` when building `ListSnapshotBlocksInput`"),
|
1127 + | ConstraintViolation::StartingBlockIndex(_) => write!(f, "constraint violation occurred building member `starting_block_index` when building `ListSnapshotBlocksInput`"),
|
1128 + | ConstraintViolation::NextToken(_) => write!(f, "constraint violation occurred building member `next_token` when building `ListSnapshotBlocksInput`"),
|
1129 + | ConstraintViolation::MissingSnapshotId => write!(f, "`snapshot_id` was not provided but it is required when building `ListSnapshotBlocksInput`"),
|
1130 + | ConstraintViolation::SnapshotId(_) => write!(f, "constraint violation occurred building member `snapshot_id` when building `ListSnapshotBlocksInput`"),
|
1343 1131 | }
|
1344 1132 | }
|
1345 1133 | }
|
1346 1134 | impl ::std::error::Error for ConstraintViolation {}
|
1347 1135 | impl ConstraintViolation {
|
1348 1136 | pub(crate) fn as_validation_exception_field(
|
1349 1137 | self,
|
1350 1138 | path: ::std::string::String,
|
1351 1139 | ) -> crate::model::ValidationExceptionField {
|
1352 1140 | match self {
|
1353 - | ConstraintViolation::MissingSecondSnapshotId => crate::model::ValidationExceptionField {
|
1354 - | message: format!("Value at '{}/SecondSnapshotId' failed to satisfy constraint: Member must not be null", path),
|
1355 - | path: path + "/SecondSnapshotId",
|
1356 - | },
|
1357 - | ConstraintViolation::SecondSnapshotId(inner) => inner.as_validation_exception_field(path + "/SecondSnapshotId"),
|
1358 - | ConstraintViolation::FirstSnapshotId(inner) => inner.as_validation_exception_field(path + "/FirstSnapshotId"),
|
1359 - | ConstraintViolation::NextToken(inner) => inner.as_validation_exception_field(path + "/NextToken"),
|
1360 1141 | ConstraintViolation::MaxResults(inner) => inner.as_validation_exception_field(path + "/MaxResults"),
|
1361 1142 | ConstraintViolation::StartingBlockIndex(inner) => inner.as_validation_exception_field(path + "/StartingBlockIndex"),
|
1143 + | ConstraintViolation::NextToken(inner) => inner.as_validation_exception_field(path + "/NextToken"),
|
1144 + | ConstraintViolation::MissingSnapshotId => crate::model::ValidationExceptionField {
|
1145 + | message: format!("Value at '{}/SnapshotId' failed to satisfy constraint: Member must not be null", path),
|
1146 + | path: path + "/SnapshotId",
|
1147 + | },
|
1148 + | ConstraintViolation::SnapshotId(inner) => inner.as_validation_exception_field(path + "/SnapshotId"),
|
1362 1149 | }
|
1363 1150 | }
|
1364 1151 | }
|
1365 1152 | impl ::std::convert::From<ConstraintViolation>
|
1366 1153 | for ::aws_smithy_legacy_http_server::protocol::rest_json_1::rejection::RequestRejection
|
1367 1154 | {
|
1368 1155 | fn from(constraint_violation: ConstraintViolation) -> Self {
|
1369 1156 | let first_validation_exception_field =
|
1370 1157 | constraint_violation.as_validation_exception_field("".to_owned());
|
1371 1158 | let validation_exception = crate::error::ValidationException {
|
1372 1159 | message: format!(
|
1373 1160 | "1 validation error detected. {}",
|
1374 1161 | &first_validation_exception_field.message
|
1375 1162 | ),
|
1376 1163 | field_list: Some(vec![first_validation_exception_field]),
|
1377 1164 | };
|
1378 1165 | Self::ConstraintViolation(
|
1379 1166 | crate::protocol_serde::shape_validation_exception::ser_validation_exception_error(&validation_exception)
|
1380 1167 | .expect("validation exceptions should never fail to serialize; please file a bug report under https://github.com/smithy-lang/smithy-rs/issues")
|
1381 1168 | )
|
1382 1169 | }
|
1383 1170 | }
|
1384 1171 | impl ::std::convert::From<Builder>
|
1385 - | for crate::constrained::MaybeConstrained<crate::input::ListChangedBlocksInput>
|
1172 + | for crate::constrained::MaybeConstrained<crate::input::ListSnapshotBlocksInput>
|
1386 1173 | {
|
1387 1174 | fn from(builder: Builder) -> Self {
|
1388 1175 | Self::Unconstrained(builder)
|
1389 1176 | }
|
1390 1177 | }
|
1391 - | impl ::std::convert::TryFrom<Builder> for crate::input::ListChangedBlocksInput {
|
1178 + | impl ::std::convert::TryFrom<Builder> for crate::input::ListSnapshotBlocksInput {
|
1392 1179 | type Error = ConstraintViolation;
|
1393 1180 |
|
1394 1181 | fn try_from(builder: Builder) -> ::std::result::Result<Self, Self::Error> {
|
1395 1182 | builder.build()
|
1396 1183 | }
|
1397 1184 | }
|
1398 - | /// A builder for [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput).
|
1185 + | /// A builder for [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput).
|
1399 1186 | #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
|
1400 1187 | pub struct Builder {
|
1401 - | pub(crate) second_snapshot_id:
|
1402 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
1403 - | pub(crate) first_snapshot_id:
|
1404 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
1405 - | pub(crate) next_token:
|
1406 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::PageToken>>,
|
1407 1188 | pub(crate) max_results:
|
1408 1189 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::MaxResults>>,
|
1409 1190 | pub(crate) starting_block_index:
|
1410 1191 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::BlockIndex>>,
|
1192 + | pub(crate) next_token:
|
1193 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::PageToken>>,
|
1194 + | pub(crate) snapshot_id:
|
1195 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
1411 1196 | }
|
1412 1197 | impl Builder {
|
1413 - | /// <p>The ID of the second snapshot to use for the comparison.</p><important>
|
1414 - | /// <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p>
|
1415 - | /// </important>
|
1416 - | pub fn second_snapshot_id(mut self, input: crate::model::SnapshotId) -> Self {
|
1417 - | self.second_snapshot_id =
|
1418 - | Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1198 + | /// <p>The number of results to return.</p>
|
1199 + | pub fn max_results(
|
1200 + | mut self,
|
1201 + | input: ::std::option::Option<crate::model::MaxResults>,
|
1202 + | ) -> Self {
|
1203 + | self.max_results = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1419 1204 | self
|
1420 1205 | }
|
1421 - | /// <p>The ID of the second snapshot to use for the comparison.</p><important>
|
1422 - | /// <p>The <code>SecondSnapshotId</code> parameter must be specified with a <code>FirstSnapshotID</code> parameter; otherwise, an error occurs.</p>
|
1423 - | /// </important>
|
1424 - | pub(crate) fn set_second_snapshot_id(
|
1206 + | /// <p>The number of results to return.</p>
|
1207 + | pub(crate) fn set_max_results(
|
1425 1208 | mut self,
|
1426 - | input: impl ::std::convert::Into<
|
1427 - | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1209 + | input: Option<
|
1210 + | impl ::std::convert::Into<
|
1211 + | crate::constrained::MaybeConstrained<crate::model::MaxResults>,
|
1212 + | >,
|
1428 1213 | >,
|
1429 1214 | ) -> Self {
|
1430 - | self.second_snapshot_id = Some(input.into());
|
1215 + | self.max_results = input.map(|v| v.into());
|
1431 1216 | self
|
1432 1217 | }
|
1433 - | /// <p>The ID of the first snapshot to use for the comparison.</p><important>
|
1434 - | /// <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p>
|
1435 - | /// </important>
|
1436 - | pub fn first_snapshot_id(
|
1218 + | /// <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
|
1219 + | pub fn starting_block_index(
|
1437 1220 | mut self,
|
1438 - | input: ::std::option::Option<crate::model::SnapshotId>,
|
1221 + | input: ::std::option::Option<crate::model::BlockIndex>,
|
1439 1222 | ) -> Self {
|
1440 - | self.first_snapshot_id = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1223 + | self.starting_block_index =
|
1224 + | input.map(crate::constrained::MaybeConstrained::Constrained);
|
1441 1225 | self
|
1442 1226 | }
|
1443 - | /// <p>The ID of the first snapshot to use for the comparison.</p><important>
|
1444 - | /// <p>The <code>FirstSnapshotID</code> parameter must be specified with a <code>SecondSnapshotId</code> parameter; otherwise, an error occurs.</p>
|
1445 - | /// </important>
|
1446 - | pub(crate) fn set_first_snapshot_id(
|
1227 + | /// <p>The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot.</p>
|
1228 + | pub(crate) fn set_starting_block_index(
|
1447 1229 | mut self,
|
1448 1230 | input: Option<
|
1449 1231 | impl ::std::convert::Into<
|
1450 - | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1232 + | crate::constrained::MaybeConstrained<crate::model::BlockIndex>,
|
1451 1233 | >,
|
1452 1234 | >,
|
1453 1235 | ) -> Self {
|
1454 - | self.first_snapshot_id = input.map(|v| v.into());
|
1236 + | self.starting_block_index = input.map(|v| v.into());
|
1455 1237 | self
|
1456 1238 | }
|
1457 1239 | /// <p>The token to request the next page of results.</p>
|
1458 1240 | pub fn next_token(mut self, input: ::std::option::Option<crate::model::PageToken>) -> Self {
|
1459 1241 | self.next_token = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1460 1242 | self
|
1461 1243 | }
|
1462 1244 | /// <p>The token to request the next page of results.</p>
|
1463 1245 | pub(crate) fn set_next_token(
|
1464 1246 | mut self,
|
1465 1247 | input: Option<
|
1466 1248 | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::PageToken>>,
|
1467 1249 | >,
|
1468 1250 | ) -> Self {
|
1469 1251 | self.next_token = input.map(|v| v.into());
|
1470 1252 | self
|
1471 1253 | }
|
1472 - | /// <p>The number of results to return.</p>
|
1473 - | pub fn max_results(
|
1474 - | mut self,
|
1475 - | input: ::std::option::Option<crate::model::MaxResults>,
|
1476 - | ) -> Self {
|
1477 - | self.max_results = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1478 - | self
|
1479 - | }
|
1480 - | /// <p>The number of results to return.</p>
|
1481 - | pub(crate) fn set_max_results(
|
1482 - | mut self,
|
1483 - | input: Option<
|
1484 - | impl ::std::convert::Into<
|
1485 - | crate::constrained::MaybeConstrained<crate::model::MaxResults>,
|
1486 - | >,
|
1487 - | >,
|
1488 - | ) -> Self {
|
1489 - | self.max_results = input.map(|v| v.into());
|
1490 - | self
|
1491 - | }
|
1492 - | /// <p>The block index from which the comparison should start.</p>
|
1493 - | /// <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p>
|
1494 - | pub fn starting_block_index(
|
1495 - | mut self,
|
1496 - | input: ::std::option::Option<crate::model::BlockIndex>,
|
1497 - | ) -> Self {
|
1498 - | self.starting_block_index =
|
1499 - | input.map(crate::constrained::MaybeConstrained::Constrained);
|
1254 + | /// <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
|
1255 + | pub fn snapshot_id(mut self, input: crate::model::SnapshotId) -> Self {
|
1256 + | self.snapshot_id = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1500 1257 | self
|
1501 1258 | }
|
1502 - | /// <p>The block index from which the comparison should start.</p>
|
1503 - | /// <p>The list in the response will start from this block index or the next valid block index in the snapshots.</p>
|
1504 - | pub(crate) fn set_starting_block_index(
|
1259 + | /// <p>The ID of the snapshot from which to get block indexes and block tokens.</p>
|
1260 + | pub(crate) fn set_snapshot_id(
|
1505 1261 | mut self,
|
1506 - | input: Option<
|
1507 - | impl ::std::convert::Into<
|
1508 - | crate::constrained::MaybeConstrained<crate::model::BlockIndex>,
|
1509 - | >,
|
1262 + | input: impl ::std::convert::Into<
|
1263 + | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1510 1264 | >,
|
1511 1265 | ) -> Self {
|
1512 - | self.starting_block_index = input.map(|v| v.into());
|
1266 + | self.snapshot_id = Some(input.into());
|
1513 1267 | self
|
1514 1268 | }
|
1515 - | /// Consumes the builder and constructs a [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput).
|
1269 + | /// Consumes the builder and constructs a [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput).
|
1516 1270 | ///
|
1517 - | /// The builder fails to construct a [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput) if a [`ConstraintViolation`] occurs.
|
1271 + | /// The builder fails to construct a [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput) if a [`ConstraintViolation`] occurs.
|
1518 1272 | ///
|
1519 1273 | /// If the builder fails, it will return the _first_ encountered [`ConstraintViolation`].
|
1520 - | pub fn build(self) -> Result<crate::input::ListChangedBlocksInput, ConstraintViolation> {
|
1274 + | pub fn build(self) -> Result<crate::input::ListSnapshotBlocksInput, ConstraintViolation> {
|
1521 1275 | self.build_enforcing_all_constraints()
|
1522 1276 | }
|
1523 1277 | fn build_enforcing_all_constraints(
|
1524 1278 | self,
|
1525 - | ) -> Result<crate::input::ListChangedBlocksInput, ConstraintViolation> {
|
1526 - | Ok(crate::input::ListChangedBlocksInput {
|
1527 - | second_snapshot_id: self
|
1528 - | .second_snapshot_id
|
1279 + | ) -> Result<crate::input::ListSnapshotBlocksInput, ConstraintViolation> {
|
1280 + | Ok(crate::input::ListSnapshotBlocksInput {
|
1281 + | max_results: self
|
1282 + | .max_results
|
1529 1283 | .map(|v| match v {
|
1530 1284 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1531 1285 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1532 1286 | })
|
1533 - | .map(|res| res.map_err(ConstraintViolation::SecondSnapshotId))
|
1534 - | .transpose()?
|
1535 - | .ok_or(ConstraintViolation::MissingSecondSnapshotId)?,
|
1536 - | first_snapshot_id: self
|
1537 - | .first_snapshot_id
|
1287 + | .map(|res| res.map_err(ConstraintViolation::MaxResults))
|
1288 + | .transpose()?,
|
1289 + | starting_block_index: self
|
1290 + | .starting_block_index
|
1538 1291 | .map(|v| match v {
|
1539 1292 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1540 1293 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1541 1294 | })
|
1542 - | .map(|res| res.map_err(ConstraintViolation::FirstSnapshotId))
|
1295 + | .map(|res| res.map_err(ConstraintViolation::StartingBlockIndex))
|
1543 1296 | .transpose()?,
|
1544 1297 | next_token: self
|
1545 1298 | .next_token
|
1546 1299 | .map(|v| match v {
|
1547 1300 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1548 1301 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1549 1302 | })
|
1550 1303 | .map(|res| res.map_err(ConstraintViolation::NextToken))
|
1551 1304 | .transpose()?,
|
1552 - | max_results: self
|
1553 - | .max_results
|
1554 - | .map(|v| match v {
|
1555 - | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1556 - | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1557 - | })
|
1558 - | .map(|res| res.map_err(ConstraintViolation::MaxResults))
|
1559 - | .transpose()?,
|
1560 - | starting_block_index: self
|
1561 - | .starting_block_index
|
1305 + | snapshot_id: self
|
1306 + | .snapshot_id
|
1562 1307 | .map(|v| match v {
|
1563 1308 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1564 1309 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1565 1310 | })
|
1566 - | .map(|res| res.map_err(ConstraintViolation::StartingBlockIndex))
|
1567 - | .transpose()?,
|
1311 + | .map(|res| res.map_err(ConstraintViolation::SnapshotId))
|
1312 + | .transpose()?
|
1313 + | .ok_or(ConstraintViolation::MissingSnapshotId)?,
|
1568 1314 | })
|
1569 1315 | }
|
1570 1316 | }
|
1571 1317 | }
|
1572 - | /// See [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
|
1573 - | pub mod get_snapshot_block_input {
|
1318 + | /// See [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
|
1319 + | pub mod put_snapshot_block_input {
|
1574 1320 |
|
1575 1321 | #[derive(::std::cmp::PartialEq, ::std::fmt::Debug)]
|
1576 1322 | /// Holds one variant for each of the ways the builder can fail.
|
1577 1323 | #[non_exhaustive]
|
1578 1324 | #[allow(clippy::enum_variant_names)]
|
1579 1325 | pub enum ConstraintViolation {
|
1580 - | /// `snapshot_id` was not provided but it is required when building `GetSnapshotBlockInput`.
|
1326 + | /// `snapshot_id` was not provided but it is required when building `PutSnapshotBlockInput`.
|
1581 1327 | MissingSnapshotId,
|
1582 - | /// Constraint violation occurred building member `snapshot_id` when building `GetSnapshotBlockInput`.
|
1328 + | /// Constraint violation occurred building member `snapshot_id` when building `PutSnapshotBlockInput`.
|
1583 1329 | #[doc(hidden)]
|
1584 1330 | SnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
1585 - | /// `block_token` was not provided but it is required when building `GetSnapshotBlockInput`.
|
1586 - | MissingBlockToken,
|
1587 - | /// Constraint violation occurred building member `block_token` when building `GetSnapshotBlockInput`.
|
1588 - | #[doc(hidden)]
|
1589 - | BlockToken(crate::model::block_token::ConstraintViolation),
|
1590 - | /// `block_index` was not provided but it is required when building `GetSnapshotBlockInput`.
|
1331 + | /// `block_index` was not provided but it is required when building `PutSnapshotBlockInput`.
|
1591 1332 | MissingBlockIndex,
|
1592 - | /// Constraint violation occurred building member `block_index` when building `GetSnapshotBlockInput`.
|
1333 + | /// Constraint violation occurred building member `block_index` when building `PutSnapshotBlockInput`.
|
1593 1334 | #[doc(hidden)]
|
1594 1335 | BlockIndex(crate::model::block_index::ConstraintViolation),
|
1336 + | /// `checksum` was not provided but it is required when building `PutSnapshotBlockInput`.
|
1337 + | MissingChecksum,
|
1338 + | /// Constraint violation occurred building member `checksum` when building `PutSnapshotBlockInput`.
|
1339 + | #[doc(hidden)]
|
1340 + | Checksum(crate::model::checksum::ConstraintViolation),
|
1341 + | /// Constraint violation occurred building member `progress` when building `PutSnapshotBlockInput`.
|
1342 + | #[doc(hidden)]
|
1343 + | Progress(crate::model::progress::ConstraintViolation),
|
1344 + | /// `block_data` was not provided but it is required when building `PutSnapshotBlockInput`.
|
1345 + | MissingBlockData,
|
1346 + | /// `data_length` was not provided but it is required when building `PutSnapshotBlockInput`.
|
1347 + | MissingDataLength,
|
1348 + | /// `checksum_algorithm` was not provided but it is required when building `PutSnapshotBlockInput`.
|
1349 + | MissingChecksumAlgorithm,
|
1350 + | /// Constraint violation occurred building member `checksum_algorithm` when building `PutSnapshotBlockInput`.
|
1351 + | #[doc(hidden)]
|
1352 + | ChecksumAlgorithm(crate::model::checksum_algorithm::ConstraintViolation),
|
1595 1353 | }
|
1596 1354 | impl ::std::fmt::Display for ConstraintViolation {
|
1597 1355 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
1598 1356 | match self {
|
1599 - | ConstraintViolation::MissingSnapshotId => write!(f, "`snapshot_id` was not provided but it is required when building `GetSnapshotBlockInput`"),
|
1600 - | ConstraintViolation::SnapshotId(_) => write!(f, "constraint violation occurred building member `snapshot_id` when building `GetSnapshotBlockInput`"),
|
1601 - | ConstraintViolation::MissingBlockToken => write!(f, "`block_token` was not provided but it is required when building `GetSnapshotBlockInput`"),
|
1602 - | ConstraintViolation::BlockToken(_) => write!(f, "constraint violation occurred building member `block_token` when building `GetSnapshotBlockInput`"),
|
1603 - | ConstraintViolation::MissingBlockIndex => write!(f, "`block_index` was not provided but it is required when building `GetSnapshotBlockInput`"),
|
1604 - | ConstraintViolation::BlockIndex(_) => write!(f, "constraint violation occurred building member `block_index` when building `GetSnapshotBlockInput`"),
|
1357 + | ConstraintViolation::MissingSnapshotId => write!(f, "`snapshot_id` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
1358 + | ConstraintViolation::SnapshotId(_) => write!(f, "constraint violation occurred building member `snapshot_id` when building `PutSnapshotBlockInput`"),
|
1359 + | ConstraintViolation::MissingBlockIndex => write!(f, "`block_index` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
1360 + | ConstraintViolation::BlockIndex(_) => write!(f, "constraint violation occurred building member `block_index` when building `PutSnapshotBlockInput`"),
|
1361 + | ConstraintViolation::MissingChecksum => write!(f, "`checksum` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
1362 + | ConstraintViolation::Checksum(_) => write!(f, "constraint violation occurred building member `checksum` when building `PutSnapshotBlockInput`"),
|
1363 + | ConstraintViolation::Progress(_) => write!(f, "constraint violation occurred building member `progress` when building `PutSnapshotBlockInput`"),
|
1364 + | ConstraintViolation::MissingBlockData => write!(f, "`block_data` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
1365 + | ConstraintViolation::MissingDataLength => write!(f, "`data_length` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
1366 + | ConstraintViolation::MissingChecksumAlgorithm => write!(f, "`checksum_algorithm` was not provided but it is required when building `PutSnapshotBlockInput`"),
|
1367 + | ConstraintViolation::ChecksumAlgorithm(_) => write!(f, "constraint violation occurred building member `checksum_algorithm` when building `PutSnapshotBlockInput`"),
|
1605 1368 | }
|
1606 1369 | }
|
1607 1370 | }
|
1608 1371 | impl ::std::error::Error for ConstraintViolation {}
|
1609 1372 | impl ConstraintViolation {
|
1610 1373 | pub(crate) fn as_validation_exception_field(
|
1611 1374 | self,
|
1612 1375 | path: ::std::string::String,
|
1613 1376 | ) -> crate::model::ValidationExceptionField {
|
1614 1377 | match self {
|
1615 1378 | ConstraintViolation::MissingSnapshotId => crate::model::ValidationExceptionField {
|
1616 1379 | message: format!("Value at '{}/SnapshotId' failed to satisfy constraint: Member must not be null", path),
|
1617 1380 | path: path + "/SnapshotId",
|
1618 1381 | },
|
1619 1382 | ConstraintViolation::SnapshotId(inner) => inner.as_validation_exception_field(path + "/SnapshotId"),
|
1620 - | ConstraintViolation::MissingBlockToken => crate::model::ValidationExceptionField {
|
1621 - | message: format!("Value at '{}/BlockToken' failed to satisfy constraint: Member must not be null", path),
|
1622 - | path: path + "/BlockToken",
|
1623 - | },
|
1624 - | ConstraintViolation::BlockToken(inner) => inner.as_validation_exception_field(path + "/BlockToken"),
|
1625 1383 | ConstraintViolation::MissingBlockIndex => crate::model::ValidationExceptionField {
|
1626 1384 | message: format!("Value at '{}/BlockIndex' failed to satisfy constraint: Member must not be null", path),
|
1627 1385 | path: path + "/BlockIndex",
|
1628 1386 | },
|
1629 1387 | ConstraintViolation::BlockIndex(inner) => inner.as_validation_exception_field(path + "/BlockIndex"),
|
1388 + | ConstraintViolation::MissingChecksum => crate::model::ValidationExceptionField {
|
1389 + | message: format!("Value at '{}/Checksum' failed to satisfy constraint: Member must not be null", path),
|
1390 + | path: path + "/Checksum",
|
1391 + | },
|
1392 + | ConstraintViolation::Checksum(inner) => inner.as_validation_exception_field(path + "/Checksum"),
|
1393 + | ConstraintViolation::Progress(inner) => inner.as_validation_exception_field(path + "/Progress"),
|
1394 + | ConstraintViolation::MissingBlockData => crate::model::ValidationExceptionField {
|
1395 + | message: format!("Value at '{}/BlockData' failed to satisfy constraint: Member must not be null", path),
|
1396 + | path: path + "/BlockData",
|
1397 + | },
|
1398 + | ConstraintViolation::MissingDataLength => crate::model::ValidationExceptionField {
|
1399 + | message: format!("Value at '{}/DataLength' failed to satisfy constraint: Member must not be null", path),
|
1400 + | path: path + "/DataLength",
|
1401 + | },
|
1402 + | ConstraintViolation::MissingChecksumAlgorithm => crate::model::ValidationExceptionField {
|
1403 + | message: format!("Value at '{}/ChecksumAlgorithm' failed to satisfy constraint: Member must not be null", path),
|
1404 + | path: path + "/ChecksumAlgorithm",
|
1405 + | },
|
1406 + | ConstraintViolation::ChecksumAlgorithm(inner) => inner.as_validation_exception_field(path + "/ChecksumAlgorithm"),
|
1630 1407 | }
|
1631 1408 | }
|
1632 1409 | }
|
1633 1410 | impl ::std::convert::From<ConstraintViolation>
|
1634 1411 | for ::aws_smithy_legacy_http_server::protocol::rest_json_1::rejection::RequestRejection
|
1635 1412 | {
|
1636 1413 | fn from(constraint_violation: ConstraintViolation) -> Self {
|
1637 1414 | let first_validation_exception_field =
|
1638 1415 | constraint_violation.as_validation_exception_field("".to_owned());
|
1639 1416 | let validation_exception = crate::error::ValidationException {
|
1640 1417 | message: format!(
|
1641 1418 | "1 validation error detected. {}",
|
1642 1419 | &first_validation_exception_field.message
|
1643 1420 | ),
|
1644 1421 | field_list: Some(vec![first_validation_exception_field]),
|
1645 1422 | };
|
1646 1423 | Self::ConstraintViolation(
|
1647 1424 | crate::protocol_serde::shape_validation_exception::ser_validation_exception_error(&validation_exception)
|
1648 1425 | .expect("validation exceptions should never fail to serialize; please file a bug report under https://github.com/smithy-lang/smithy-rs/issues")
|
1649 1426 | )
|
1650 1427 | }
|
1651 1428 | }
|
1652 1429 | impl ::std::convert::From<Builder>
|
1653 - | for crate::constrained::MaybeConstrained<crate::input::GetSnapshotBlockInput>
|
1430 + | for crate::constrained::MaybeConstrained<crate::input::PutSnapshotBlockInput>
|
1654 1431 | {
|
1655 1432 | fn from(builder: Builder) -> Self {
|
1656 1433 | Self::Unconstrained(builder)
|
1657 1434 | }
|
1658 1435 | }
|
1659 - | impl ::std::convert::TryFrom<Builder> for crate::input::GetSnapshotBlockInput {
|
1436 + | impl ::std::convert::TryFrom<Builder> for crate::input::PutSnapshotBlockInput {
|
1660 1437 | type Error = ConstraintViolation;
|
1661 1438 |
|
1662 1439 | fn try_from(builder: Builder) -> ::std::result::Result<Self, Self::Error> {
|
1663 1440 | builder.build()
|
1664 1441 | }
|
1665 1442 | }
|
1666 - | /// A builder for [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
|
1667 - | #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
|
1443 + | /// A builder for [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
|
1444 + | #[derive(::std::default::Default)]
|
1668 1445 | pub struct Builder {
|
1669 1446 | pub(crate) snapshot_id:
|
1670 1447 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
1671 - | pub(crate) block_token:
|
1672 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::BlockToken>>,
|
1673 1448 | pub(crate) block_index:
|
1674 1449 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::BlockIndex>>,
|
1450 + | pub(crate) checksum:
|
1451 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Checksum>>,
|
1452 + | pub(crate) progress:
|
1453 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Progress>>,
|
1454 + | pub(crate) block_data: ::std::option::Option<::aws_smithy_types::byte_stream::ByteStream>,
|
1455 + | pub(crate) data_length: ::std::option::Option<i32>,
|
1456 + | pub(crate) checksum_algorithm: ::std::option::Option<
|
1457 + | crate::constrained::MaybeConstrained<crate::model::ChecksumAlgorithm>,
|
1458 + | >,
|
1675 1459 | }
|
1676 1460 | impl Builder {
|
1677 - | /// <p>The ID of the snapshot containing the block from which to get data.</p>
|
1461 + | /// <p>The ID of the snapshot.</p>
|
1678 1462 | pub fn snapshot_id(mut self, input: crate::model::SnapshotId) -> Self {
|
1679 1463 | self.snapshot_id = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1680 1464 | self
|
1681 1465 | }
|
1682 - | /// <p>The ID of the snapshot containing the block from which to get data.</p>
|
1466 + | /// <p>The ID of the snapshot.</p>
|
1683 1467 | pub(crate) fn set_snapshot_id(
|
1684 1468 | mut self,
|
1685 1469 | input: impl ::std::convert::Into<
|
1686 1470 | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1687 1471 | >,
|
1688 1472 | ) -> Self {
|
1689 1473 | self.snapshot_id = Some(input.into());
|
1690 1474 | self
|
1691 1475 | }
|
1692 - | /// <p>The block token of the block from which to get data.</p>
|
1693 - | /// <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
1694 - | pub fn block_token(mut self, input: crate::model::BlockToken) -> Self {
|
1695 - | self.block_token = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1476 + | /// <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
|
1477 + | pub fn block_index(mut self, input: crate::model::BlockIndex) -> Self {
|
1478 + | self.block_index = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1696 1479 | self
|
1697 1480 | }
|
1698 - | /// <p>The block token of the block from which to get data.</p>
|
1699 - | /// <p>Obtain the <code>BlockToken</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
1700 - | pub(crate) fn set_block_token(
|
1481 + | /// <p>The block index of the block in which to write the data. A block index is a logical index in units of <code>512</code> KiB blocks. To identify the block index, divide the logical offset of the data in the logical volume by the block size (logical offset of data/<code>524288</code>). The logical offset of the data must be <code>512</code> KiB aligned.</p>
|
1482 + | pub(crate) fn set_block_index(
|
1701 1483 | mut self,
|
1702 1484 | input: impl ::std::convert::Into<
|
1703 - | crate::constrained::MaybeConstrained<crate::model::BlockToken>,
|
1485 + | crate::constrained::MaybeConstrained<crate::model::BlockIndex>,
|
1704 1486 | >,
|
1705 1487 | ) -> Self {
|
1706 - | self.block_token = Some(input.into());
|
1488 + | self.block_index = Some(input.into());
|
1707 1489 | self
|
1708 1490 | }
|
1709 - | /// <p>The block index of the block from which to get data.</p>
|
1710 - | /// <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
1711 - | pub fn block_index(mut self, input: crate::model::BlockIndex) -> Self {
|
1712 - | self.block_index = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1491 + | /// <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
|
1492 + | pub fn checksum(mut self, input: crate::model::Checksum) -> Self {
|
1493 + | self.checksum = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1713 1494 | self
|
1714 1495 | }
|
1715 - | /// <p>The block index of the block from which to get data.</p>
|
1716 - | /// <p>Obtain the <code>BlockIndex</code> by running the <code>ListChangedBlocks</code> or <code>ListSnapshotBlocks</code> operations.</p>
|
1717 - | pub(crate) fn set_block_index(
|
1496 + | /// <p>A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported.</p>
|
1497 + | pub(crate) fn set_checksum(
|
1718 1498 | mut self,
|
1719 1499 | input: impl ::std::convert::Into<
|
1720 - | crate::constrained::MaybeConstrained<crate::model::BlockIndex>,
|
1500 + | crate::constrained::MaybeConstrained<crate::model::Checksum>,
|
1721 1501 | >,
|
1722 1502 | ) -> Self {
|
1723 - | self.block_index = Some(input.into());
|
1503 + | self.checksum = Some(input.into());
|
1724 1504 | self
|
1725 1505 | }
|
1726 - | /// Consumes the builder and constructs a [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput).
|
1506 + | /// <p>The progress of the write process, as a percentage.</p>
|
1507 + | pub fn progress(mut self, input: ::std::option::Option<crate::model::Progress>) -> Self {
|
1508 + | self.progress = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1509 + | self
|
1510 + | }
|
1511 + | /// <p>The progress of the write process, as a percentage.</p>
|
1512 + | pub(crate) fn set_progress(
|
1513 + | mut self,
|
1514 + | input: Option<
|
1515 + | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::Progress>>,
|
1516 + | >,
|
1517 + | ) -> Self {
|
1518 + | self.progress = input.map(|v| v.into());
|
1519 + | self
|
1520 + | }
|
1521 + | /// <p>The data to write to the block.</p>
|
1522 + | /// <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
1523 + | pub fn block_data(mut self, input: ::aws_smithy_types::byte_stream::ByteStream) -> Self {
|
1524 + | self.block_data = Some(input);
|
1525 + | self
|
1526 + | }
|
1527 + | /// <p>The data to write to the block.</p>
|
1528 + | /// <p>The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the block data using the <b>x-amz-Checksum</b> header. Also, you must specify the checksum algorithm using the <b>x-amz-Checksum-Algorithm</b> header. The checksum that you provide is part of the Signature Version 4 signing process. It is validated against a checksum generated by Amazon EBS to ensure the validity and authenticity of the data. If the checksums do not correspond, the request fails. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-checksums"> Using checksums with the EBS direct APIs</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
1529 + | pub(crate) fn set_block_data(
|
1530 + | mut self,
|
1531 + | input: impl ::std::convert::Into<::aws_smithy_types::byte_stream::ByteStream>,
|
1532 + | ) -> Self {
|
1533 + | self.block_data = Some(input.into());
|
1534 + | self
|
1535 + | }
|
1536 + | /// <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
|
1537 + | /// <p>Valid values: <code>524288</code></p>
|
1538 + | pub fn data_length(mut self, input: i32) -> Self {
|
1539 + | self.data_length = Some(input);
|
1540 + | self
|
1541 + | }
|
1542 + | /// <p>The size of the data to write to the block, in bytes. Currently, the only supported size is <code>524288</code>.</p>
|
1543 + | /// <p>Valid values: <code>524288</code></p>
|
1544 + | pub(crate) fn set_data_length(mut self, input: impl ::std::convert::Into<i32>) -> Self {
|
1545 + | self.data_length = Some(input.into());
|
1546 + | self
|
1547 + | }
|
1548 + | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
1549 + | pub fn checksum_algorithm(mut self, input: crate::model::ChecksumAlgorithm) -> Self {
|
1550 + | self.checksum_algorithm =
|
1551 + | Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1552 + | self
|
1553 + | }
|
1554 + | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
1555 + | pub(crate) fn set_checksum_algorithm(
|
1556 + | mut self,
|
1557 + | input: impl ::std::convert::Into<
|
1558 + | crate::constrained::MaybeConstrained<crate::model::ChecksumAlgorithm>,
|
1559 + | >,
|
1560 + | ) -> Self {
|
1561 + | self.checksum_algorithm = Some(input.into());
|
1562 + | self
|
1563 + | }
|
1564 + | /// Consumes the builder and constructs a [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput).
|
1727 1565 | ///
|
1728 - | /// The builder fails to construct a [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput) if a [`ConstraintViolation`] occurs.
|
1566 + | /// The builder fails to construct a [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput) if a [`ConstraintViolation`] occurs.
|
1729 1567 | ///
|
1730 1568 | /// If the builder fails, it will return the _first_ encountered [`ConstraintViolation`].
|
1731 - | pub fn build(self) -> Result<crate::input::GetSnapshotBlockInput, ConstraintViolation> {
|
1569 + | pub fn build(self) -> Result<crate::input::PutSnapshotBlockInput, ConstraintViolation> {
|
1732 1570 | self.build_enforcing_all_constraints()
|
1733 1571 | }
|
1734 1572 | fn build_enforcing_all_constraints(
|
1735 1573 | self,
|
1736 - | ) -> Result<crate::input::GetSnapshotBlockInput, ConstraintViolation> {
|
1737 - | Ok(crate::input::GetSnapshotBlockInput {
|
1574 + | ) -> Result<crate::input::PutSnapshotBlockInput, ConstraintViolation> {
|
1575 + | Ok(crate::input::PutSnapshotBlockInput {
|
1738 1576 | snapshot_id: self
|
1739 1577 | .snapshot_id
|
1740 1578 | .map(|v| match v {
|
1741 1579 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1742 1580 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1743 1581 | })
|
1744 1582 | .map(|res| res.map_err(ConstraintViolation::SnapshotId))
|
1745 1583 | .transpose()?
|
1746 1584 | .ok_or(ConstraintViolation::MissingSnapshotId)?,
|
1747 - | block_token: self
|
1748 - | .block_token
|
1585 + | block_index: self
|
1586 + | .block_index
|
1749 1587 | .map(|v| match v {
|
1750 1588 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1751 1589 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1752 1590 | })
|
1753 - | .map(|res| res.map_err(ConstraintViolation::BlockToken))
|
1591 + | .map(|res| res.map_err(ConstraintViolation::BlockIndex))
|
1754 1592 | .transpose()?
|
1755 - | .ok_or(ConstraintViolation::MissingBlockToken)?,
|
1756 - | block_index: self
|
1757 - | .block_index
|
1593 + | .ok_or(ConstraintViolation::MissingBlockIndex)?,
|
1594 + | checksum: self
|
1595 + | .checksum
|
1758 1596 | .map(|v| match v {
|
1759 1597 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1760 1598 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1761 1599 | })
|
1762 - | .map(|res| res.map_err(ConstraintViolation::BlockIndex))
|
1600 + | .map(|res| res.map_err(ConstraintViolation::Checksum))
|
1763 1601 | .transpose()?
|
1764 - | .ok_or(ConstraintViolation::MissingBlockIndex)?,
|
1602 + | .ok_or(ConstraintViolation::MissingChecksum)?,
|
1603 + | progress: self
|
1604 + | .progress
|
1605 + | .map(|v| match v {
|
1606 + | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1607 + | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1608 + | })
|
1609 + | .map(|res| res.map_err(ConstraintViolation::Progress))
|
1610 + | .transpose()?,
|
1611 + | block_data: self
|
1612 + | .block_data
|
1613 + | .ok_or(ConstraintViolation::MissingBlockData)?,
|
1614 + | data_length: self
|
1615 + | .data_length
|
1616 + | .ok_or(ConstraintViolation::MissingDataLength)?,
|
1617 + | checksum_algorithm: self
|
1618 + | .checksum_algorithm
|
1619 + | .map(|v| match v {
|
1620 + | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1621 + | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1622 + | })
|
1623 + | .map(|res| res.map_err(ConstraintViolation::ChecksumAlgorithm))
|
1624 + | .transpose()?
|
1625 + | .ok_or(ConstraintViolation::MissingChecksumAlgorithm)?,
|
1765 1626 | })
|
1766 1627 | }
|
1767 1628 | }
|
1629 + | impl ::std::fmt::Debug for Builder {
|
1630 + | fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
1631 + | let mut formatter = f.debug_struct("Builder");
|
1632 + | formatter.field("snapshot_id", &self.snapshot_id);
|
1633 + | formatter.field("block_index", &self.block_index);
|
1634 + | formatter.field("checksum", &self.checksum);
|
1635 + | formatter.field("progress", &self.progress);
|
1636 + | formatter.field("block_data", &"*** Sensitive Data Redacted ***");
|
1637 + | formatter.field("data_length", &self.data_length);
|
1638 + | formatter.field("checksum_algorithm", &self.checksum_algorithm);
|
1639 + | formatter.finish()
|
1640 + | }
|
1641 + | }
|
1768 1642 | }
|
1769 - | /// See [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput).
|
1770 - | pub mod complete_snapshot_input {
|
1643 + | /// See [`StartSnapshotInput`](crate::input::StartSnapshotInput).
|
1644 + | pub mod start_snapshot_input {
|
1771 1645 |
|
1772 1646 | #[derive(::std::cmp::PartialEq, ::std::fmt::Debug)]
|
1773 1647 | /// Holds one variant for each of the ways the builder can fail.
|
1774 1648 | #[non_exhaustive]
|
1775 1649 | #[allow(clippy::enum_variant_names)]
|
1776 1650 | pub enum ConstraintViolation {
|
1777 - | /// `changed_blocks_count` was not provided but it is required when building `CompleteSnapshotInput`.
|
1778 - | MissingChangedBlocksCount,
|
1779 - | /// Constraint violation occurred building member `changed_blocks_count` when building `CompleteSnapshotInput`.
|
1651 + | /// Constraint violation occurred building member `timeout` when building `StartSnapshotInput`.
|
1780 1652 | #[doc(hidden)]
|
1781 - | ChangedBlocksCount(crate::model::changed_blocks_count::ConstraintViolation),
|
1782 - | /// Constraint violation occurred building member `checksum_aggregation_method` when building `CompleteSnapshotInput`.
|
1653 + | Timeout(crate::model::timeout::ConstraintViolation),
|
1654 + | /// Constraint violation occurred building member `client_token` when building `StartSnapshotInput`.
|
1783 1655 | #[doc(hidden)]
|
1784 - | ChecksumAggregationMethod(crate::model::checksum_aggregation_method::ConstraintViolation),
|
1785 - | /// Constraint violation occurred building member `checksum_algorithm` when building `CompleteSnapshotInput`.
|
1656 + | ClientToken(crate::model::idempotency_token::ConstraintViolation),
|
1657 + | /// `volume_size` was not provided but it is required when building `StartSnapshotInput`.
|
1658 + | MissingVolumeSize,
|
1659 + | /// Constraint violation occurred building member `volume_size` when building `StartSnapshotInput`.
|
1786 1660 | #[doc(hidden)]
|
1787 - | ChecksumAlgorithm(crate::model::checksum_algorithm::ConstraintViolation),
|
1788 - | /// `snapshot_id` was not provided but it is required when building `CompleteSnapshotInput`.
|
1789 - | MissingSnapshotId,
|
1790 - | /// Constraint violation occurred building member `snapshot_id` when building `CompleteSnapshotInput`.
|
1661 + | VolumeSize(crate::model::volume_size::ConstraintViolation),
|
1662 + | /// Constraint violation occurred building member `tags` when building `StartSnapshotInput`.
|
1791 1663 | #[doc(hidden)]
|
1792 - | SnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
1793 - | /// Constraint violation occurred building member `checksum` when building `CompleteSnapshotInput`.
|
1664 + | Tags(crate::model::tags::ConstraintViolation),
|
1665 + | /// Constraint violation occurred building member `kms_key_arn` when building `StartSnapshotInput`.
|
1794 1666 | #[doc(hidden)]
|
1795 - | Checksum(crate::model::checksum::ConstraintViolation),
|
1667 + | KmsKeyArn(crate::model::kms_key_arn::ConstraintViolation),
|
1668 + | /// Constraint violation occurred building member `parent_snapshot_id` when building `StartSnapshotInput`.
|
1669 + | #[doc(hidden)]
|
1670 + | ParentSnapshotId(crate::model::snapshot_id::ConstraintViolation),
|
1671 + | /// Constraint violation occurred building member `description` when building `StartSnapshotInput`.
|
1672 + | #[doc(hidden)]
|
1673 + | Description(crate::model::description::ConstraintViolation),
|
1796 1674 | }
|
1797 1675 | impl ::std::fmt::Display for ConstraintViolation {
|
1798 1676 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
1799 1677 | match self {
|
1800 - | ConstraintViolation::MissingChangedBlocksCount => write!(f, "`changed_blocks_count` was not provided but it is required when building `CompleteSnapshotInput`"),
|
1801 - | ConstraintViolation::ChangedBlocksCount(_) => write!(f, "constraint violation occurred building member `changed_blocks_count` when building `CompleteSnapshotInput`"),
|
1802 - | ConstraintViolation::ChecksumAggregationMethod(_) => write!(f, "constraint violation occurred building member `checksum_aggregation_method` when building `CompleteSnapshotInput`"),
|
1803 - | ConstraintViolation::ChecksumAlgorithm(_) => write!(f, "constraint violation occurred building member `checksum_algorithm` when building `CompleteSnapshotInput`"),
|
1804 - | ConstraintViolation::MissingSnapshotId => write!(f, "`snapshot_id` was not provided but it is required when building `CompleteSnapshotInput`"),
|
1805 - | ConstraintViolation::SnapshotId(_) => write!(f, "constraint violation occurred building member `snapshot_id` when building `CompleteSnapshotInput`"),
|
1806 - | ConstraintViolation::Checksum(_) => write!(f, "constraint violation occurred building member `checksum` when building `CompleteSnapshotInput`"),
|
1678 + | ConstraintViolation::Timeout(_) => write!(f, "constraint violation occurred building member `timeout` when building `StartSnapshotInput`"),
|
1679 + | ConstraintViolation::ClientToken(_) => write!(f, "constraint violation occurred building member `client_token` when building `StartSnapshotInput`"),
|
1680 + | ConstraintViolation::MissingVolumeSize => write!(f, "`volume_size` was not provided but it is required when building `StartSnapshotInput`"),
|
1681 + | ConstraintViolation::VolumeSize(_) => write!(f, "constraint violation occurred building member `volume_size` when building `StartSnapshotInput`"),
|
1682 + | ConstraintViolation::Tags(_) => write!(f, "constraint violation occurred building member `tags` when building `StartSnapshotInput`"),
|
1683 + | ConstraintViolation::KmsKeyArn(_) => write!(f, "constraint violation occurred building member `kms_key_arn` when building `StartSnapshotInput`"),
|
1684 + | ConstraintViolation::ParentSnapshotId(_) => write!(f, "constraint violation occurred building member `parent_snapshot_id` when building `StartSnapshotInput`"),
|
1685 + | ConstraintViolation::Description(_) => write!(f, "constraint violation occurred building member `description` when building `StartSnapshotInput`"),
|
1807 1686 | }
|
1808 1687 | }
|
1809 1688 | }
|
1810 1689 | impl ::std::error::Error for ConstraintViolation {}
|
1811 1690 | impl ConstraintViolation {
|
1812 1691 | pub(crate) fn as_validation_exception_field(
|
1813 1692 | self,
|
1814 1693 | path: ::std::string::String,
|
1815 1694 | ) -> crate::model::ValidationExceptionField {
|
1816 1695 | match self {
|
1817 - | ConstraintViolation::MissingChangedBlocksCount => crate::model::ValidationExceptionField {
|
1818 - | message: format!("Value at '{}/ChangedBlocksCount' failed to satisfy constraint: Member must not be null", path),
|
1819 - | path: path + "/ChangedBlocksCount",
|
1820 - | },
|
1821 - | ConstraintViolation::ChangedBlocksCount(inner) => inner.as_validation_exception_field(path + "/ChangedBlocksCount"),
|
1822 - | ConstraintViolation::ChecksumAggregationMethod(inner) => inner.as_validation_exception_field(path + "/ChecksumAggregationMethod"),
|
1823 - | ConstraintViolation::ChecksumAlgorithm(inner) => inner.as_validation_exception_field(path + "/ChecksumAlgorithm"),
|
1824 - | ConstraintViolation::MissingSnapshotId => crate::model::ValidationExceptionField {
|
1825 - | message: format!("Value at '{}/SnapshotId' failed to satisfy constraint: Member must not be null", path),
|
1826 - | path: path + "/SnapshotId",
|
1696 + | ConstraintViolation::Timeout(inner) => inner.as_validation_exception_field(path + "/Timeout"),
|
1697 + | ConstraintViolation::ClientToken(inner) => inner.as_validation_exception_field(path + "/ClientToken"),
|
1698 + | ConstraintViolation::MissingVolumeSize => crate::model::ValidationExceptionField {
|
1699 + | message: format!("Value at '{}/VolumeSize' failed to satisfy constraint: Member must not be null", path),
|
1700 + | path: path + "/VolumeSize",
|
1827 1701 | },
|
1828 - | ConstraintViolation::SnapshotId(inner) => inner.as_validation_exception_field(path + "/SnapshotId"),
|
1829 - | ConstraintViolation::Checksum(inner) => inner.as_validation_exception_field(path + "/Checksum"),
|
1702 + | ConstraintViolation::VolumeSize(inner) => inner.as_validation_exception_field(path + "/VolumeSize"),
|
1703 + | ConstraintViolation::Tags(inner) => inner.as_validation_exception_field(path + "/Tags"),
|
1704 + | ConstraintViolation::KmsKeyArn(inner) => inner.as_validation_exception_field(path + "/KmsKeyArn"),
|
1705 + | ConstraintViolation::ParentSnapshotId(inner) => inner.as_validation_exception_field(path + "/ParentSnapshotId"),
|
1706 + | ConstraintViolation::Description(inner) => inner.as_validation_exception_field(path + "/Description"),
|
1830 1707 | }
|
1831 1708 | }
|
1832 1709 | }
|
1833 1710 | impl ::std::convert::From<ConstraintViolation>
|
1834 1711 | for ::aws_smithy_legacy_http_server::protocol::rest_json_1::rejection::RequestRejection
|
1835 1712 | {
|
1836 1713 | fn from(constraint_violation: ConstraintViolation) -> Self {
|
1837 1714 | let first_validation_exception_field =
|
1838 1715 | constraint_violation.as_validation_exception_field("".to_owned());
|
1839 1716 | let validation_exception = crate::error::ValidationException {
|
1840 1717 | message: format!(
|
1841 1718 | "1 validation error detected. {}",
|
1842 1719 | &first_validation_exception_field.message
|
1843 1720 | ),
|
1844 1721 | field_list: Some(vec![first_validation_exception_field]),
|
1845 1722 | };
|
1846 1723 | Self::ConstraintViolation(
|
1847 1724 | crate::protocol_serde::shape_validation_exception::ser_validation_exception_error(&validation_exception)
|
1848 1725 | .expect("validation exceptions should never fail to serialize; please file a bug report under https://github.com/smithy-lang/smithy-rs/issues")
|
1849 1726 | )
|
1850 1727 | }
|
1851 1728 | }
|
1852 1729 | impl ::std::convert::From<Builder>
|
1853 - | for crate::constrained::MaybeConstrained<crate::input::CompleteSnapshotInput>
|
1730 + | for crate::constrained::MaybeConstrained<crate::input::StartSnapshotInput>
|
1854 1731 | {
|
1855 1732 | fn from(builder: Builder) -> Self {
|
1856 1733 | Self::Unconstrained(builder)
|
1857 1734 | }
|
1858 1735 | }
|
1859 - | impl ::std::convert::TryFrom<Builder> for crate::input::CompleteSnapshotInput {
|
1736 + | impl ::std::convert::TryFrom<Builder> for crate::input::StartSnapshotInput {
|
1860 1737 | type Error = ConstraintViolation;
|
1861 1738 |
|
1862 1739 | fn try_from(builder: Builder) -> ::std::result::Result<Self, Self::Error> {
|
1863 1740 | builder.build()
|
1864 1741 | }
|
1865 1742 | }
|
1866 - | /// A builder for [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput).
|
1867 - | #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
|
1743 + | /// A builder for [`StartSnapshotInput`](crate::input::StartSnapshotInput).
|
1744 + | #[derive(::std::clone::Clone, ::std::default::Default)]
|
1868 1745 | pub struct Builder {
|
1869 - | pub(crate) changed_blocks_count: ::std::option::Option<
|
1870 - | crate::constrained::MaybeConstrained<crate::model::ChangedBlocksCount>,
|
1871 - | >,
|
1872 - | pub(crate) checksum_aggregation_method: ::std::option::Option<
|
1873 - | crate::constrained::MaybeConstrained<crate::model::ChecksumAggregationMethod>,
|
1746 + | pub(crate) timeout:
|
1747 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Timeout>>,
|
1748 + | pub(crate) client_token: ::std::option::Option<
|
1749 + | crate::constrained::MaybeConstrained<crate::model::IdempotencyToken>,
|
1874 1750 | >,
|
1875 - | pub(crate) checksum_algorithm: ::std::option::Option<
|
1876 - | crate::constrained::MaybeConstrained<crate::model::ChecksumAlgorithm>,
|
1751 + | pub(crate) volume_size:
|
1752 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::VolumeSize>>,
|
1753 + | pub(crate) tags: ::std::option::Option<
|
1754 + | crate::constrained::MaybeConstrained<
|
1755 + | crate::constrained::tags_constrained::TagsConstrained,
|
1756 + | >,
|
1877 1757 | >,
|
1878 - | pub(crate) snapshot_id:
|
1758 + | pub(crate) encrypted: ::std::option::Option<bool>,
|
1759 + | pub(crate) kms_key_arn:
|
1760 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::KmsKeyArn>>,
|
1761 + | pub(crate) parent_snapshot_id:
|
1879 1762 | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::SnapshotId>>,
|
1880 - | pub(crate) checksum:
|
1881 - | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Checksum>>,
|
1763 + | pub(crate) description:
|
1764 + | ::std::option::Option<crate::constrained::MaybeConstrained<crate::model::Description>>,
|
1882 1765 | }
|
1883 1766 | impl Builder {
|
1884 - | /// <p>The number of blocks that were written to the snapshot.</p>
|
1885 - | pub fn changed_blocks_count(mut self, input: crate::model::ChangedBlocksCount) -> Self {
|
1886 - | self.changed_blocks_count =
|
1887 - | Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1767 + | /// <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
|
1768 + | /// <ul>
|
1769 + | /// <li>
|
1770 + | /// <p>No blocks are written to the snapshot.</p></li>
|
1771 + | /// <li>
|
1772 + | /// <p>The snapshot is not completed after writing the last block of data.</p></li>
|
1773 + | /// </ul>
|
1774 + | /// <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
|
1775 + | pub fn timeout(mut self, input: ::std::option::Option<crate::model::Timeout>) -> Self {
|
1776 + | self.timeout = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1888 1777 | self
|
1889 1778 | }
|
1890 - | /// <p>The number of blocks that were written to the snapshot.</p>
|
1891 - | pub(crate) fn set_changed_blocks_count(
|
1779 + | /// <p>The amount of time (in minutes) after which the snapshot is automatically cancelled if:</p>
|
1780 + | /// <ul>
|
1781 + | /// <li>
|
1782 + | /// <p>No blocks are written to the snapshot.</p></li>
|
1783 + | /// <li>
|
1784 + | /// <p>The snapshot is not completed after writing the last block of data.</p></li>
|
1785 + | /// </ul>
|
1786 + | /// <p>If no value is specified, the timeout defaults to <code>60</code> minutes.</p>
|
1787 + | pub(crate) fn set_timeout(
|
1892 1788 | mut self,
|
1893 - | input: impl ::std::convert::Into<
|
1894 - | crate::constrained::MaybeConstrained<crate::model::ChangedBlocksCount>,
|
1789 + | input: Option<
|
1790 + | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::Timeout>>,
|
1895 1791 | >,
|
1896 1792 | ) -> Self {
|
1897 - | self.changed_blocks_count = Some(input.into());
|
1793 + | self.timeout = input.map(|v| v.into());
|
1898 1794 | self
|
1899 1795 | }
|
1900 - | /// <p>The aggregation method used to generate the checksum. Currently, the only supported aggregation method is <code>LINEAR</code>.</p>
|
1901 - | pub fn checksum_aggregation_method(
|
1796 + | /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
|
1797 + | /// <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
|
1798 + | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
1799 + | pub fn client_token(
|
1902 1800 | mut self,
|
1903 - | input: ::std::option::Option<crate::model::ChecksumAggregationMethod>,
|
1801 + | input: ::std::option::Option<crate::model::IdempotencyToken>,
|
1904 1802 | ) -> Self {
|
1905 - | self.checksum_aggregation_method =
|
1906 - | input.map(crate::constrained::MaybeConstrained::Constrained);
|
1803 + | self.client_token = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1907 1804 | self
|
1908 1805 | }
|
1909 - | /// <p>The aggregation method used to generate the checksum. Currently, the only supported aggregation method is <code>LINEAR</code>.</p>
|
1910 - | pub(crate) fn set_checksum_aggregation_method(
|
1806 + | /// <p>A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original request completes successfully. The subsequent retries with the same client token return the result from the original successful request and they have no additional effect.</p>
|
1807 + | /// <p>If you do not specify a client token, one is automatically generated by the AWS SDK.</p>
|
1808 + | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-direct-api-idempotency.html"> Idempotency for StartSnapshot API</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
1809 + | pub(crate) fn set_client_token(
|
1911 1810 | mut self,
|
1912 1811 | input: Option<
|
1913 1812 | impl ::std::convert::Into<
|
1914 - | crate::constrained::MaybeConstrained<crate::model::ChecksumAggregationMethod>,
|
1813 + | crate::constrained::MaybeConstrained<crate::model::IdempotencyToken>,
|
1915 1814 | >,
|
1916 1815 | >,
|
1917 1816 | ) -> Self {
|
1918 - | self.checksum_aggregation_method = input.map(|v| v.into());
|
1817 + | self.client_token = input.map(|v| v.into());
|
1919 1818 | self
|
1920 1819 | }
|
1921 - | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
1922 - | pub fn checksum_algorithm(
|
1820 + | /// <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
|
1821 + | pub fn volume_size(mut self, input: crate::model::VolumeSize) -> Self {
|
1822 + | self.volume_size = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1823 + | self
|
1824 + | }
|
1825 + | /// <p>The size of the volume, in GiB. The maximum size is <code>16384</code> GiB (16 TiB).</p>
|
1826 + | pub(crate) fn set_volume_size(
|
1923 1827 | mut self,
|
1924 - | input: ::std::option::Option<crate::model::ChecksumAlgorithm>,
|
1828 + | input: impl ::std::convert::Into<
|
1829 + | crate::constrained::MaybeConstrained<crate::model::VolumeSize>,
|
1830 + | >,
|
1925 1831 | ) -> Self {
|
1926 - | self.checksum_algorithm = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1832 + | self.volume_size = Some(input.into());
|
1927 1833 | self
|
1928 1834 | }
|
1929 - | /// <p>The algorithm used to generate the checksum. Currently, the only supported algorithm is <code>SHA256</code>.</p>
|
1930 - | pub(crate) fn set_checksum_algorithm(
|
1835 + | /// <p>The tags to apply to the snapshot.</p>
|
1836 + | pub fn tags(
|
1837 + | mut self,
|
1838 + | input: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
|
1839 + | ) -> Self {
|
1840 + | self.tags =
|
1841 + | input.map(|v| crate::constrained::MaybeConstrained::Constrained((v).into()));
|
1842 + | self
|
1843 + | }
|
1844 + | /// <p>The tags to apply to the snapshot.</p>
|
1845 + | pub(crate) fn set_tags(
|
1931 1846 | mut self,
|
1932 1847 | input: Option<
|
1933 1848 | impl ::std::convert::Into<
|
1934 - | crate::constrained::MaybeConstrained<crate::model::ChecksumAlgorithm>,
|
1849 + | crate::constrained::MaybeConstrained<
|
1850 + | crate::constrained::tags_constrained::TagsConstrained,
|
1851 + | >,
|
1935 1852 | >,
|
1936 1853 | >,
|
1937 1854 | ) -> Self {
|
1938 - | self.checksum_algorithm = input.map(|v| v.into());
|
1855 + | self.tags = input.map(|v| v.into());
|
1939 1856 | self
|
1940 1857 | }
|
1941 - | /// <p>The ID of the snapshot.</p>
|
1942 - | pub fn snapshot_id(mut self, input: crate::model::SnapshotId) -> Self {
|
1943 - | self.snapshot_id = Some(crate::constrained::MaybeConstrained::Constrained(input));
|
1858 + | /// <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
|
1859 + | /// <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
|
1860 + | /// <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
|
1861 + | /// <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
|
1862 + | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
1863 + | pub fn encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
|
1864 + | self.encrypted = input;
|
1944 1865 | self
|
1945 1866 | }
|
1946 - | /// <p>The ID of the snapshot.</p>
|
1947 - | pub(crate) fn set_snapshot_id(
|
1867 + | /// <p>Indicates whether to encrypt the snapshot. To create an encrypted snapshot, specify <code>true</code>. To create an unencrypted snapshot, omit this parameter.</p>
|
1868 + | /// <p>If you specify a value for <b>ParentSnapshotId</b>, omit this parameter.</p>
|
1869 + | /// <p>If you specify <code>true</code>, the snapshot is encrypted using the CMK specified using the <b>KmsKeyArn</b> parameter. If no value is specified for <b>KmsKeyArn</b>, the default CMK for your account is used. If no default CMK has been specified for your account, the AWS managed CMK is used. To set a default CMK for your account, use <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyEbsDefaultKmsKeyId.html"> ModifyEbsDefaultKmsKeyId</a>.</p>
|
1870 + | /// <p>If your account is enabled for encryption by default, you cannot set this parameter to <code>false</code>. In this case, you can omit this parameter.</p>
|
1871 + | /// <p>For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-accessing-snapshot.html#ebsapis-using-encryption"> Using encryption</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
|
1872 + | pub(crate) fn set_encrypted(
|
1948 1873 | mut self,
|
1949 - | input: impl ::std::convert::Into<
|
1950 - | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1874 + | input: Option<impl ::std::convert::Into<bool>>,
|
1875 + | ) -> Self {
|
1876 + | self.encrypted = input.map(|v| v.into());
|
1877 + | self
|
1878 + | }
|
1879 + | /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
|
1880 + | /// <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
|
1881 + | /// <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
|
1882 + | pub fn kms_key_arn(
|
1883 + | mut self,
|
1884 + | input: ::std::option::Option<crate::model::KmsKeyArn>,
|
1885 + | ) -> Self {
|
1886 + | self.kms_key_arn = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1887 + | self
|
1888 + | }
|
1889 + | /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) to be used to encrypt the snapshot. If you do not specify a CMK, the default AWS managed CMK is used.</p>
|
1890 + | /// <p>If you specify a <b>ParentSnapshotId</b>, omit this parameter; the snapshot will be encrypted using the same CMK that was used to encrypt the parent snapshot.</p>
|
1891 + | /// <p>If <b>Encrypted</b> is set to <code>true</code>, you must specify a CMK ARN.</p>
|
1892 + | pub(crate) fn set_kms_key_arn(
|
1893 + | mut self,
|
1894 + | input: Option<
|
1895 + | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::KmsKeyArn>>,
|
1951 1896 | >,
|
1952 1897 | ) -> Self {
|
1953 - | self.snapshot_id = Some(input.into());
|
1898 + | self.kms_key_arn = input.map(|v| v.into());
|
1954 1899 | self
|
1955 1900 | }
|
1956 - | /// <p>An aggregated Base-64 SHA256 checksum based on the checksums of each written block.</p>
|
1957 - | /// <p>To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written block in ascending order of their block index, concatenate them to form a single string, and then generate the checksum on the entire string using the SHA256 algorithm.</p>
|
1958 - | pub fn checksum(mut self, input: ::std::option::Option<crate::model::Checksum>) -> Self {
|
1959 - | self.checksum = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1901 + | /// <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
|
1902 + | /// <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
|
1903 + | pub fn parent_snapshot_id(
|
1904 + | mut self,
|
1905 + | input: ::std::option::Option<crate::model::SnapshotId>,
|
1906 + | ) -> Self {
|
1907 + | self.parent_snapshot_id = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1960 1908 | self
|
1961 1909 | }
|
1962 - | /// <p>An aggregated Base-64 SHA256 checksum based on the checksums of each written block.</p>
|
1963 - | /// <p>To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written block in ascending order of their block index, concatenate them to form a single string, and then generate the checksum on the entire string using the SHA256 algorithm.</p>
|
1964 - | pub(crate) fn set_checksum(
|
1910 + | /// <p>The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter.</p>
|
1911 + | /// <p>If your account is enabled for encryption by default, you cannot use an unencrypted snapshot as a parent snapshot. You must first create an encrypted copy of the parent snapshot using <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CopySnapshot.html">CopySnapshot</a>.</p>
|
1912 + | pub(crate) fn set_parent_snapshot_id(
|
1965 1913 | mut self,
|
1966 1914 | input: Option<
|
1967 - | impl ::std::convert::Into<crate::constrained::MaybeConstrained<crate::model::Checksum>>,
|
1915 + | impl ::std::convert::Into<
|
1916 + | crate::constrained::MaybeConstrained<crate::model::SnapshotId>,
|
1917 + | >,
|
1968 1918 | >,
|
1969 1919 | ) -> Self {
|
1970 - | self.checksum = input.map(|v| v.into());
|
1920 + | self.parent_snapshot_id = input.map(|v| v.into());
|
1971 1921 | self
|
1972 1922 | }
|
1973 - | /// Consumes the builder and constructs a [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput).
|
1923 + | /// <p>A description for the snapshot.</p>
|
1924 + | pub fn description(
|
1925 + | mut self,
|
1926 + | input: ::std::option::Option<crate::model::Description>,
|
1927 + | ) -> Self {
|
1928 + | self.description = input.map(crate::constrained::MaybeConstrained::Constrained);
|
1929 + | self
|
1930 + | }
|
1931 + | /// <p>A description for the snapshot.</p>
|
1932 + | pub(crate) fn set_description(
|
1933 + | mut self,
|
1934 + | input: Option<
|
1935 + | impl ::std::convert::Into<
|
1936 + | crate::constrained::MaybeConstrained<crate::model::Description>,
|
1937 + | >,
|
1938 + | >,
|
1939 + | ) -> Self {
|
1940 + | self.description = input.map(|v| v.into());
|
1941 + | self
|
1942 + | }
|
1943 + | /// Consumes the builder and constructs a [`StartSnapshotInput`](crate::input::StartSnapshotInput).
|
1974 1944 | ///
|
1975 - | /// The builder fails to construct a [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput) if a [`ConstraintViolation`] occurs.
|
1945 + | /// The builder fails to construct a [`StartSnapshotInput`](crate::input::StartSnapshotInput) if a [`ConstraintViolation`] occurs.
|
1976 1946 | ///
|
1977 1947 | /// If the builder fails, it will return the _first_ encountered [`ConstraintViolation`].
|
1978 - | pub fn build(self) -> Result<crate::input::CompleteSnapshotInput, ConstraintViolation> {
|
1948 + | pub fn build(self) -> Result<crate::input::StartSnapshotInput, ConstraintViolation> {
|
1979 1949 | self.build_enforcing_all_constraints()
|
1980 1950 | }
|
1981 1951 | fn build_enforcing_all_constraints(
|
1982 1952 | self,
|
1983 - | ) -> Result<crate::input::CompleteSnapshotInput, ConstraintViolation> {
|
1984 - | Ok(crate::input::CompleteSnapshotInput {
|
1985 - | changed_blocks_count: self
|
1986 - | .changed_blocks_count
|
1953 + | ) -> Result<crate::input::StartSnapshotInput, ConstraintViolation> {
|
1954 + | Ok(crate::input::StartSnapshotInput {
|
1955 + | timeout: self
|
1956 + | .timeout
|
1987 1957 | .map(|v| match v {
|
1988 1958 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1989 1959 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1990 1960 | })
|
1991 - | .map(|res| res.map_err(ConstraintViolation::ChangedBlocksCount))
|
1961 + | .map(|res| res.map_err(ConstraintViolation::Timeout))
|
1962 + | .transpose()?,
|
1963 + | client_token: self
|
1964 + | .client_token
|
1965 + | .map(|v| match v {
|
1966 + | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1967 + | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1968 + | })
|
1969 + | .map(|res| res.map_err(ConstraintViolation::ClientToken))
|
1970 + | .transpose()?,
|
1971 + | volume_size: self
|
1972 + | .volume_size
|
1973 + | .map(|v| match v {
|
1974 + | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1975 + | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1976 + | })
|
1977 + | .map(|res| res.map_err(ConstraintViolation::VolumeSize))
|
1992 1978 | .transpose()?
|
1993 - | .ok_or(ConstraintViolation::MissingChangedBlocksCount)?,
|
1994 - | checksum_aggregation_method: self
|
1995 - | .checksum_aggregation_method
|
1979 + | .ok_or(ConstraintViolation::MissingVolumeSize)?,
|
1980 + | tags: self
|
1981 + | .tags
|
1996 1982 | .map(|v| match v {
|
1997 1983 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
1998 1984 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
1999 1985 | })
|
2000 - | .map(|res| res.map_err(ConstraintViolation::ChecksumAggregationMethod))
|
1986 + | .map(|res| res.map(|v| v.into()).map_err(ConstraintViolation::Tags))
|
2001 1987 | .transpose()?,
|
2002 - | checksum_algorithm: self
|
2003 - | .checksum_algorithm
|
1988 + | encrypted: self.encrypted,
|
1989 + | kms_key_arn: self
|
1990 + | .kms_key_arn
|
2004 1991 | .map(|v| match v {
|
2005 1992 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
2006 1993 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
2007 1994 | })
|
2008 - | .map(|res| res.map_err(ConstraintViolation::ChecksumAlgorithm))
|
1995 + | .map(|res| res.map_err(ConstraintViolation::KmsKeyArn))
|
2009 1996 | .transpose()?,
|
2010 - | snapshot_id: self
|
2011 - | .snapshot_id
|
1997 + | parent_snapshot_id: self
|
1998 + | .parent_snapshot_id
|
2012 1999 | .map(|v| match v {
|
2013 2000 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
2014 2001 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
2015 2002 | })
|
2016 - | .map(|res| res.map_err(ConstraintViolation::SnapshotId))
|
2017 - | .transpose()?
|
2018 - | .ok_or(ConstraintViolation::MissingSnapshotId)?,
|
2019 - | checksum: self
|
2020 - | .checksum
|
2003 + | .map(|res| res.map_err(ConstraintViolation::ParentSnapshotId))
|
2004 + | .transpose()?,
|
2005 + | description: self
|
2006 + | .description
|
2021 2007 | .map(|v| match v {
|
2022 2008 | crate::constrained::MaybeConstrained::Constrained(x) => Ok(x),
|
2023 2009 | crate::constrained::MaybeConstrained::Unconstrained(x) => x.try_into(),
|
2024 2010 | })
|
2025 - | .map(|res| res.map_err(ConstraintViolation::Checksum))
|
2011 + | .map(|res| res.map_err(ConstraintViolation::Description))
|
2026 2012 | .transpose()?,
|
2027 2013 | })
|
2028 2014 | }
|
2029 2015 | }
|
2016 + | impl ::std::fmt::Debug for Builder {
|
2017 + | fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
|
2018 + | let mut formatter = f.debug_struct("Builder");
|
2019 + | formatter.field("timeout", &self.timeout);
|
2020 + | formatter.field("client_token", &self.client_token);
|
2021 + | formatter.field("volume_size", &self.volume_size);
|
2022 + | formatter.field("tags", &self.tags);
|
2023 + | formatter.field("encrypted", &self.encrypted);
|
2024 + | formatter.field("kms_key_arn", &"*** Sensitive Data Redacted ***");
|
2025 + | formatter.field("parent_snapshot_id", &self.parent_snapshot_id);
|
2026 + | formatter.field("description", &self.description);
|
2027 + | formatter.finish()
|
2028 + | }
|
2029 + | }
|
2030 2030 | }
|