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}