aws_sdk_ec2/operation/copy_volumes/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::copy_volumes::_copy_volumes_output::CopyVolumesOutputBuilder;
3
4pub use crate::operation::copy_volumes::_copy_volumes_input::CopyVolumesInputBuilder;
5
6impl crate::operation::copy_volumes::builders::CopyVolumesInputBuilder {
7 /// Sends a request with this input using the given client.
8 pub async fn send_with(
9 self,
10 client: &crate::Client,
11 ) -> ::std::result::Result<
12 crate::operation::copy_volumes::CopyVolumesOutput,
13 ::aws_smithy_runtime_api::client::result::SdkError<
14 crate::operation::copy_volumes::CopyVolumesError,
15 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16 >,
17 > {
18 let mut fluent_builder = client.copy_volumes();
19 fluent_builder.inner = self;
20 fluent_builder.send().await
21 }
22}
23/// Fluent builder constructing a request to `CopyVolumes`.
24///
25/// <p>Creates a crash-consistent, point-in-time copy of an existing Amazon EBS volume within the same Availability Zone. The volume copy can be attached to an Amazon EC2 instance once it reaches the <code>available</code> state. For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/ebs-copying-volume.html">Copy an Amazon EBS volume</a>.</p>
26#[derive(::std::clone::Clone, ::std::fmt::Debug)]
27pub struct CopyVolumesFluentBuilder {
28 handle: ::std::sync::Arc<crate::client::Handle>,
29 inner: crate::operation::copy_volumes::builders::CopyVolumesInputBuilder,
30 config_override: ::std::option::Option<crate::config::Builder>,
31}
32impl
33 crate::client::customize::internal::CustomizableSend<
34 crate::operation::copy_volumes::CopyVolumesOutput,
35 crate::operation::copy_volumes::CopyVolumesError,
36 > for CopyVolumesFluentBuilder
37{
38 fn send(
39 self,
40 config_override: crate::config::Builder,
41 ) -> crate::client::customize::internal::BoxFuture<
42 crate::client::customize::internal::SendResult<
43 crate::operation::copy_volumes::CopyVolumesOutput,
44 crate::operation::copy_volumes::CopyVolumesError,
45 >,
46 > {
47 ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
48 }
49}
50impl CopyVolumesFluentBuilder {
51 /// Creates a new `CopyVolumesFluentBuilder`.
52 pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
53 Self {
54 handle,
55 inner: ::std::default::Default::default(),
56 config_override: ::std::option::Option::None,
57 }
58 }
59 /// Access the CopyVolumes as a reference.
60 pub fn as_input(&self) -> &crate::operation::copy_volumes::builders::CopyVolumesInputBuilder {
61 &self.inner
62 }
63 /// Sends the request and returns the response.
64 ///
65 /// If an error occurs, an `SdkError` will be returned with additional details that
66 /// can be matched against.
67 ///
68 /// By default, any retryable failures will be retried twice. Retry behavior
69 /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
70 /// set when configuring the client.
71 pub async fn send(
72 self,
73 ) -> ::std::result::Result<
74 crate::operation::copy_volumes::CopyVolumesOutput,
75 ::aws_smithy_runtime_api::client::result::SdkError<
76 crate::operation::copy_volumes::CopyVolumesError,
77 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
78 >,
79 > {
80 let input = self
81 .inner
82 .build()
83 .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
84 let runtime_plugins = crate::operation::copy_volumes::CopyVolumes::operation_runtime_plugins(
85 self.handle.runtime_plugins.clone(),
86 &self.handle.conf,
87 self.config_override,
88 );
89 crate::operation::copy_volumes::CopyVolumes::orchestrate(&runtime_plugins, input).await
90 }
91
92 /// Consumes this builder, creating a customizable operation that can be modified before being sent.
93 pub fn customize(
94 self,
95 ) -> crate::client::customize::CustomizableOperation<
96 crate::operation::copy_volumes::CopyVolumesOutput,
97 crate::operation::copy_volumes::CopyVolumesError,
98 Self,
99 > {
100 crate::client::customize::CustomizableOperation::new(self)
101 }
102 pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
103 self.set_config_override(::std::option::Option::Some(config_override.into()));
104 self
105 }
106
107 pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
108 self.config_override = config_override;
109 self
110 }
111 /// <p>The ID of the source EBS volume to copy.</p>
112 pub fn source_volume_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
113 self.inner = self.inner.source_volume_id(input.into());
114 self
115 }
116 /// <p>The ID of the source EBS volume to copy.</p>
117 pub fn set_source_volume_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
118 self.inner = self.inner.set_source_volume_id(input);
119 self
120 }
121 /// <p>The ID of the source EBS volume to copy.</p>
122 pub fn get_source_volume_id(&self) -> &::std::option::Option<::std::string::String> {
123 self.inner.get_source_volume_id()
124 }
125 /// <p>The number of I/O operations per second (IOPS) to provision for the volume copy. Required for <code>io1</code> and <code>io2</code> volumes. Optional for <code>gp3</code> volumes. Omit for all other volume types. Full provisioned IOPS performance can be achieved only once the volume copy is fully initialized.</p>
126 /// <p>Valid ranges:</p>
127 /// <ul>
128 /// <li>
129 /// <p>gp3: <code>3,000 </code>(<i>default</i>)<code> - 80,000</code> IOPS</p></li>
130 /// <li>
131 /// <p>io1: <code>100 - 64,000</code> IOPS</p></li>
132 /// <li>
133 /// <p>io2: <code>100 - 256,000</code> IOPS</p></li>
134 /// </ul><note>
135 /// <p><a href="https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html"> Instances built on the Nitro System</a> can support up to 256,000 IOPS. Other instances can support up to 32,000 IOPS.</p>
136 /// </note>
137 pub fn iops(mut self, input: i32) -> Self {
138 self.inner = self.inner.iops(input);
139 self
140 }
141 /// <p>The number of I/O operations per second (IOPS) to provision for the volume copy. Required for <code>io1</code> and <code>io2</code> volumes. Optional for <code>gp3</code> volumes. Omit for all other volume types. Full provisioned IOPS performance can be achieved only once the volume copy is fully initialized.</p>
142 /// <p>Valid ranges:</p>
143 /// <ul>
144 /// <li>
145 /// <p>gp3: <code>3,000 </code>(<i>default</i>)<code> - 80,000</code> IOPS</p></li>
146 /// <li>
147 /// <p>io1: <code>100 - 64,000</code> IOPS</p></li>
148 /// <li>
149 /// <p>io2: <code>100 - 256,000</code> IOPS</p></li>
150 /// </ul><note>
151 /// <p><a href="https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html"> Instances built on the Nitro System</a> can support up to 256,000 IOPS. Other instances can support up to 32,000 IOPS.</p>
152 /// </note>
153 pub fn set_iops(mut self, input: ::std::option::Option<i32>) -> Self {
154 self.inner = self.inner.set_iops(input);
155 self
156 }
157 /// <p>The number of I/O operations per second (IOPS) to provision for the volume copy. Required for <code>io1</code> and <code>io2</code> volumes. Optional for <code>gp3</code> volumes. Omit for all other volume types. Full provisioned IOPS performance can be achieved only once the volume copy is fully initialized.</p>
158 /// <p>Valid ranges:</p>
159 /// <ul>
160 /// <li>
161 /// <p>gp3: <code>3,000 </code>(<i>default</i>)<code> - 80,000</code> IOPS</p></li>
162 /// <li>
163 /// <p>io1: <code>100 - 64,000</code> IOPS</p></li>
164 /// <li>
165 /// <p>io2: <code>100 - 256,000</code> IOPS</p></li>
166 /// </ul><note>
167 /// <p><a href="https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html"> Instances built on the Nitro System</a> can support up to 256,000 IOPS. Other instances can support up to 32,000 IOPS.</p>
168 /// </note>
169 pub fn get_iops(&self) -> &::std::option::Option<i32> {
170 self.inner.get_iops()
171 }
172 /// <p>The size of the volume copy, in GiBs. The size must be equal to or greater than the size of the source volume. If not specified, the size defaults to the size of the source volume.</p>
173 /// <p>Maximum supported sizes:</p>
174 /// <ul>
175 /// <li>
176 /// <p>gp2: <code>16,384</code> GiB</p></li>
177 /// <li>
178 /// <p>gp3: <code>65,536</code> GiB</p></li>
179 /// <li>
180 /// <p>io1: <code>16,384</code> GiB</p></li>
181 /// <li>
182 /// <p>io2: <code>65,536</code> GiB</p></li>
183 /// <li>
184 /// <p>st1 and sc1: <code>16,384</code> GiB</p></li>
185 /// <li>
186 /// <p>standard: <code>1024</code> GiB</p></li>
187 /// </ul>
188 pub fn size(mut self, input: i32) -> Self {
189 self.inner = self.inner.size(input);
190 self
191 }
192 /// <p>The size of the volume copy, in GiBs. The size must be equal to or greater than the size of the source volume. If not specified, the size defaults to the size of the source volume.</p>
193 /// <p>Maximum supported sizes:</p>
194 /// <ul>
195 /// <li>
196 /// <p>gp2: <code>16,384</code> GiB</p></li>
197 /// <li>
198 /// <p>gp3: <code>65,536</code> GiB</p></li>
199 /// <li>
200 /// <p>io1: <code>16,384</code> GiB</p></li>
201 /// <li>
202 /// <p>io2: <code>65,536</code> GiB</p></li>
203 /// <li>
204 /// <p>st1 and sc1: <code>16,384</code> GiB</p></li>
205 /// <li>
206 /// <p>standard: <code>1024</code> GiB</p></li>
207 /// </ul>
208 pub fn set_size(mut self, input: ::std::option::Option<i32>) -> Self {
209 self.inner = self.inner.set_size(input);
210 self
211 }
212 /// <p>The size of the volume copy, in GiBs. The size must be equal to or greater than the size of the source volume. If not specified, the size defaults to the size of the source volume.</p>
213 /// <p>Maximum supported sizes:</p>
214 /// <ul>
215 /// <li>
216 /// <p>gp2: <code>16,384</code> GiB</p></li>
217 /// <li>
218 /// <p>gp3: <code>65,536</code> GiB</p></li>
219 /// <li>
220 /// <p>io1: <code>16,384</code> GiB</p></li>
221 /// <li>
222 /// <p>io2: <code>65,536</code> GiB</p></li>
223 /// <li>
224 /// <p>st1 and sc1: <code>16,384</code> GiB</p></li>
225 /// <li>
226 /// <p>standard: <code>1024</code> GiB</p></li>
227 /// </ul>
228 pub fn get_size(&self) -> &::std::option::Option<i32> {
229 self.inner.get_size()
230 }
231 /// <p>The volume type for the volume copy. If not specified, the volume type defaults to <code>gp2</code>.</p>
232 pub fn volume_type(mut self, input: crate::types::VolumeType) -> Self {
233 self.inner = self.inner.volume_type(input);
234 self
235 }
236 /// <p>The volume type for the volume copy. If not specified, the volume type defaults to <code>gp2</code>.</p>
237 pub fn set_volume_type(mut self, input: ::std::option::Option<crate::types::VolumeType>) -> Self {
238 self.inner = self.inner.set_volume_type(input);
239 self
240 }
241 /// <p>The volume type for the volume copy. If not specified, the volume type defaults to <code>gp2</code>.</p>
242 pub fn get_volume_type(&self) -> &::std::option::Option<crate::types::VolumeType> {
243 self.inner.get_volume_type()
244 }
245 /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
246 pub fn dry_run(mut self, input: bool) -> Self {
247 self.inner = self.inner.dry_run(input);
248 self
249 }
250 /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
251 pub fn set_dry_run(mut self, input: ::std::option::Option<bool>) -> Self {
252 self.inner = self.inner.set_dry_run(input);
253 self
254 }
255 /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
256 pub fn get_dry_run(&self) -> &::std::option::Option<bool> {
257 self.inner.get_dry_run()
258 }
259 ///
260 /// Appends an item to `TagSpecifications`.
261 ///
262 /// To override the contents of this collection use [`set_tag_specifications`](Self::set_tag_specifications).
263 ///
264 /// <p>The tags to apply to the volume copy during creation.</p>
265 pub fn tag_specifications(mut self, input: crate::types::TagSpecification) -> Self {
266 self.inner = self.inner.tag_specifications(input);
267 self
268 }
269 /// <p>The tags to apply to the volume copy during creation.</p>
270 pub fn set_tag_specifications(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>>) -> Self {
271 self.inner = self.inner.set_tag_specifications(input);
272 self
273 }
274 /// <p>The tags to apply to the volume copy during creation.</p>
275 pub fn get_tag_specifications(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>> {
276 self.inner.get_tag_specifications()
277 }
278 /// <p>Indicates whether to enable Amazon EBS Multi-Attach for the volume copy. If you enable Multi-Attach, you can attach the volume to up to 16 Nitro instances in the same Availability Zone simultaneously. Supported with <code>io1</code> and <code>io2</code> volumes only. For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes-multi.html"> Amazon EBS Multi-Attach</a>.</p>
279 pub fn multi_attach_enabled(mut self, input: bool) -> Self {
280 self.inner = self.inner.multi_attach_enabled(input);
281 self
282 }
283 /// <p>Indicates whether to enable Amazon EBS Multi-Attach for the volume copy. If you enable Multi-Attach, you can attach the volume to up to 16 Nitro instances in the same Availability Zone simultaneously. Supported with <code>io1</code> and <code>io2</code> volumes only. For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes-multi.html"> Amazon EBS Multi-Attach</a>.</p>
284 pub fn set_multi_attach_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
285 self.inner = self.inner.set_multi_attach_enabled(input);
286 self
287 }
288 /// <p>Indicates whether to enable Amazon EBS Multi-Attach for the volume copy. If you enable Multi-Attach, you can attach the volume to up to 16 Nitro instances in the same Availability Zone simultaneously. Supported with <code>io1</code> and <code>io2</code> volumes only. For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes-multi.html"> Amazon EBS Multi-Attach</a>.</p>
289 pub fn get_multi_attach_enabled(&self) -> &::std::option::Option<bool> {
290 self.inner.get_multi_attach_enabled()
291 }
292 /// <p>The throughput to provision for the volume copy, in MiB/s. Supported for <code>gp3</code> volumes only. Omit for all other volume types. Full provisioned throughput performance can be achieved only once the volume copy is fully initialized.</p>
293 /// <p>Valid Range: <code>125 - 2000</code> MiB/s</p>
294 /// <p></p>
295 pub fn throughput(mut self, input: i32) -> Self {
296 self.inner = self.inner.throughput(input);
297 self
298 }
299 /// <p>The throughput to provision for the volume copy, in MiB/s. Supported for <code>gp3</code> volumes only. Omit for all other volume types. Full provisioned throughput performance can be achieved only once the volume copy is fully initialized.</p>
300 /// <p>Valid Range: <code>125 - 2000</code> MiB/s</p>
301 /// <p></p>
302 pub fn set_throughput(mut self, input: ::std::option::Option<i32>) -> Self {
303 self.inner = self.inner.set_throughput(input);
304 self
305 }
306 /// <p>The throughput to provision for the volume copy, in MiB/s. Supported for <code>gp3</code> volumes only. Omit for all other volume types. Full provisioned throughput performance can be achieved only once the volume copy is fully initialized.</p>
307 /// <p>Valid Range: <code>125 - 2000</code> MiB/s</p>
308 /// <p></p>
309 pub fn get_throughput(&self) -> &::std::option::Option<i32> {
310 self.inner.get_throughput()
311 }
312 /// <p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html"> Ensure Idempotency</a>.</p>
313 pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
314 self.inner = self.inner.client_token(input.into());
315 self
316 }
317 /// <p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html"> Ensure Idempotency</a>.</p>
318 pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
319 self.inner = self.inner.set_client_token(input);
320 self
321 }
322 /// <p>Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html"> Ensure Idempotency</a>.</p>
323 pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
324 self.inner.get_client_token()
325 }
326}