aws_sdk_ec2/operation/release_address/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::release_address::_release_address_output::ReleaseAddressOutputBuilder;
3
4pub use crate::operation::release_address::_release_address_input::ReleaseAddressInputBuilder;
5
6impl crate::operation::release_address::builders::ReleaseAddressInputBuilder {
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::release_address::ReleaseAddressOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::release_address::ReleaseAddressError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.release_address();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `ReleaseAddress`.
24///
25/// <p>Releases the specified Elastic IP address.</p>
26/// <p>\[Default VPC\] Releasing an Elastic IP address automatically disassociates it from any instance that it's associated with. To disassociate an Elastic IP address without releasing it, use DisassociateAddress.</p>
27/// <p>\[Nondefault VPC\] You must use DisassociateAddress to disassociate the Elastic IP address before you can release it. Otherwise, Amazon EC2 returns an error (InvalidIPAddress.InUse).</p>
28/// <p>After releasing an Elastic IP address, it is released to the IP address pool. Be sure to update your DNS records and any servers or devices that communicate with the address. If you attempt to release an Elastic IP address that you already released, you'll get an <code>AuthFailure</code> error if the address is already allocated to another Amazon Web Services account.</p>
29/// <p>After you release an Elastic IP address, you might be able to recover it. For more information, see <code>AllocateAddress</code>.</p>
30#[derive(::std::clone::Clone, ::std::fmt::Debug)]
31pub struct ReleaseAddressFluentBuilder {
32    handle: ::std::sync::Arc<crate::client::Handle>,
33    inner: crate::operation::release_address::builders::ReleaseAddressInputBuilder,
34    config_override: ::std::option::Option<crate::config::Builder>,
35}
36impl
37    crate::client::customize::internal::CustomizableSend<
38        crate::operation::release_address::ReleaseAddressOutput,
39        crate::operation::release_address::ReleaseAddressError,
40    > for ReleaseAddressFluentBuilder
41{
42    fn send(
43        self,
44        config_override: crate::config::Builder,
45    ) -> crate::client::customize::internal::BoxFuture<
46        crate::client::customize::internal::SendResult<
47            crate::operation::release_address::ReleaseAddressOutput,
48            crate::operation::release_address::ReleaseAddressError,
49        >,
50    > {
51        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
52    }
53}
54impl ReleaseAddressFluentBuilder {
55    /// Creates a new `ReleaseAddressFluentBuilder`.
56    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
57        Self {
58            handle,
59            inner: ::std::default::Default::default(),
60            config_override: ::std::option::Option::None,
61        }
62    }
63    /// Access the ReleaseAddress as a reference.
64    pub fn as_input(&self) -> &crate::operation::release_address::builders::ReleaseAddressInputBuilder {
65        &self.inner
66    }
67    /// Sends the request and returns the response.
68    ///
69    /// If an error occurs, an `SdkError` will be returned with additional details that
70    /// can be matched against.
71    ///
72    /// By default, any retryable failures will be retried twice. Retry behavior
73    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
74    /// set when configuring the client.
75    pub async fn send(
76        self,
77    ) -> ::std::result::Result<
78        crate::operation::release_address::ReleaseAddressOutput,
79        ::aws_smithy_runtime_api::client::result::SdkError<
80            crate::operation::release_address::ReleaseAddressError,
81            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
82        >,
83    > {
84        let input = self
85            .inner
86            .build()
87            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
88        let runtime_plugins = crate::operation::release_address::ReleaseAddress::operation_runtime_plugins(
89            self.handle.runtime_plugins.clone(),
90            &self.handle.conf,
91            self.config_override,
92        );
93        crate::operation::release_address::ReleaseAddress::orchestrate(&runtime_plugins, input).await
94    }
95
96    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
97    pub fn customize(
98        self,
99    ) -> crate::client::customize::CustomizableOperation<
100        crate::operation::release_address::ReleaseAddressOutput,
101        crate::operation::release_address::ReleaseAddressError,
102        Self,
103    > {
104        crate::client::customize::CustomizableOperation::new(self)
105    }
106    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
107        self.set_config_override(::std::option::Option::Some(config_override.into()));
108        self
109    }
110
111    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
112        self.config_override = config_override;
113        self
114    }
115    /// <p>The allocation ID. This parameter is required.</p>
116    pub fn allocation_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
117        self.inner = self.inner.allocation_id(input.into());
118        self
119    }
120    /// <p>The allocation ID. This parameter is required.</p>
121    pub fn set_allocation_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
122        self.inner = self.inner.set_allocation_id(input);
123        self
124    }
125    /// <p>The allocation ID. This parameter is required.</p>
126    pub fn get_allocation_id(&self) -> &::std::option::Option<::std::string::String> {
127        self.inner.get_allocation_id()
128    }
129    /// <p>Deprecated.</p>
130    pub fn public_ip(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
131        self.inner = self.inner.public_ip(input.into());
132        self
133    }
134    /// <p>Deprecated.</p>
135    pub fn set_public_ip(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
136        self.inner = self.inner.set_public_ip(input);
137        self
138    }
139    /// <p>Deprecated.</p>
140    pub fn get_public_ip(&self) -> &::std::option::Option<::std::string::String> {
141        self.inner.get_public_ip()
142    }
143    /// <p>The set of Availability Zones, Local Zones, or Wavelength Zones from which Amazon Web Services advertises IP addresses.</p>
144    /// <p>If you provide an incorrect network border group, you receive an <code>InvalidAddress.NotFound</code> error.</p>
145    pub fn network_border_group(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
146        self.inner = self.inner.network_border_group(input.into());
147        self
148    }
149    /// <p>The set of Availability Zones, Local Zones, or Wavelength Zones from which Amazon Web Services advertises IP addresses.</p>
150    /// <p>If you provide an incorrect network border group, you receive an <code>InvalidAddress.NotFound</code> error.</p>
151    pub fn set_network_border_group(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
152        self.inner = self.inner.set_network_border_group(input);
153        self
154    }
155    /// <p>The set of Availability Zones, Local Zones, or Wavelength Zones from which Amazon Web Services advertises IP addresses.</p>
156    /// <p>If you provide an incorrect network border group, you receive an <code>InvalidAddress.NotFound</code> error.</p>
157    pub fn get_network_border_group(&self) -> &::std::option::Option<::std::string::String> {
158        self.inner.get_network_border_group()
159    }
160    /// <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>
161    pub fn dry_run(mut self, input: bool) -> Self {
162        self.inner = self.inner.dry_run(input);
163        self
164    }
165    /// <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>
166    pub fn set_dry_run(mut self, input: ::std::option::Option<bool>) -> Self {
167        self.inner = self.inner.set_dry_run(input);
168        self
169    }
170    /// <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>
171    pub fn get_dry_run(&self) -> &::std::option::Option<bool> {
172        self.inner.get_dry_run()
173    }
174}