aws_sdk_ec2/operation/disassociate_nat_gateway_address/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::disassociate_nat_gateway_address::_disassociate_nat_gateway_address_output::DisassociateNatGatewayAddressOutputBuilder;
3
4pub use crate::operation::disassociate_nat_gateway_address::_disassociate_nat_gateway_address_input::DisassociateNatGatewayAddressInputBuilder;
5
6impl crate::operation::disassociate_nat_gateway_address::builders::DisassociateNatGatewayAddressInputBuilder {
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::disassociate_nat_gateway_address::DisassociateNatGatewayAddressOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.disassociate_nat_gateway_address();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `DisassociateNatGatewayAddress`.
24///
25/// <p>Disassociates secondary Elastic IP addresses (EIPs) from a public NAT gateway. You cannot disassociate your primary EIP. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-working-with.html#nat-gateway-edit-secondary">Edit secondary IP address associations</a> in the <i>Amazon VPC User Guide</i>.</p>
26/// <p>While disassociating is in progress, you cannot associate/disassociate additional EIPs while the connections are being drained. You are, however, allowed to delete the NAT gateway.</p>
27/// <p>An EIP is released only at the end of MaxDrainDurationSeconds. It stays associated and supports the existing connections but does not support any new connections (new connections are distributed across the remaining associated EIPs). As the existing connections drain out, the EIPs (and the corresponding private IP addresses mapped to them) are released.</p>
28#[derive(::std::clone::Clone, ::std::fmt::Debug)]
29pub struct DisassociateNatGatewayAddressFluentBuilder {
30    handle: ::std::sync::Arc<crate::client::Handle>,
31    inner: crate::operation::disassociate_nat_gateway_address::builders::DisassociateNatGatewayAddressInputBuilder,
32    config_override: ::std::option::Option<crate::config::Builder>,
33}
34impl
35    crate::client::customize::internal::CustomizableSend<
36        crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressOutput,
37        crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressError,
38    > for DisassociateNatGatewayAddressFluentBuilder
39{
40    fn send(
41        self,
42        config_override: crate::config::Builder,
43    ) -> crate::client::customize::internal::BoxFuture<
44        crate::client::customize::internal::SendResult<
45            crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressOutput,
46            crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressError,
47        >,
48    > {
49        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
50    }
51}
52impl DisassociateNatGatewayAddressFluentBuilder {
53    /// Creates a new `DisassociateNatGatewayAddressFluentBuilder`.
54    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
55        Self {
56            handle,
57            inner: ::std::default::Default::default(),
58            config_override: ::std::option::Option::None,
59        }
60    }
61    /// Access the DisassociateNatGatewayAddress as a reference.
62    pub fn as_input(&self) -> &crate::operation::disassociate_nat_gateway_address::builders::DisassociateNatGatewayAddressInputBuilder {
63        &self.inner
64    }
65    /// Sends the request and returns the response.
66    ///
67    /// If an error occurs, an `SdkError` will be returned with additional details that
68    /// can be matched against.
69    ///
70    /// By default, any retryable failures will be retried twice. Retry behavior
71    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
72    /// set when configuring the client.
73    pub async fn send(
74        self,
75    ) -> ::std::result::Result<
76        crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressOutput,
77        ::aws_smithy_runtime_api::client::result::SdkError<
78            crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressError,
79            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
80        >,
81    > {
82        let input = self
83            .inner
84            .build()
85            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
86        let runtime_plugins = crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddress::operation_runtime_plugins(
87            self.handle.runtime_plugins.clone(),
88            &self.handle.conf,
89            self.config_override,
90        );
91        crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddress::orchestrate(&runtime_plugins, input).await
92    }
93
94    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
95    pub fn customize(
96        self,
97    ) -> crate::client::customize::CustomizableOperation<
98        crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressOutput,
99        crate::operation::disassociate_nat_gateway_address::DisassociateNatGatewayAddressError,
100        Self,
101    > {
102        crate::client::customize::CustomizableOperation::new(self)
103    }
104    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
105        self.set_config_override(::std::option::Option::Some(config_override.into()));
106        self
107    }
108
109    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
110        self.config_override = config_override;
111        self
112    }
113    /// <p>The ID of the NAT gateway.</p>
114    pub fn nat_gateway_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
115        self.inner = self.inner.nat_gateway_id(input.into());
116        self
117    }
118    /// <p>The ID of the NAT gateway.</p>
119    pub fn set_nat_gateway_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
120        self.inner = self.inner.set_nat_gateway_id(input);
121        self
122    }
123    /// <p>The ID of the NAT gateway.</p>
124    pub fn get_nat_gateway_id(&self) -> &::std::option::Option<::std::string::String> {
125        self.inner.get_nat_gateway_id()
126    }
127    ///
128    /// Appends an item to `AssociationIds`.
129    ///
130    /// To override the contents of this collection use [`set_association_ids`](Self::set_association_ids).
131    ///
132    /// <p>The association IDs of EIPs that have been associated with the NAT gateway.</p>
133    pub fn association_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
134        self.inner = self.inner.association_ids(input.into());
135        self
136    }
137    /// <p>The association IDs of EIPs that have been associated with the NAT gateway.</p>
138    pub fn set_association_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
139        self.inner = self.inner.set_association_ids(input);
140        self
141    }
142    /// <p>The association IDs of EIPs that have been associated with the NAT gateway.</p>
143    pub fn get_association_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
144        self.inner.get_association_ids()
145    }
146    /// <p>The maximum amount of time to wait (in seconds) before forcibly releasing the IP addresses if connections are still in progress. Default value is 350 seconds.</p>
147    pub fn max_drain_duration_seconds(mut self, input: i32) -> Self {
148        self.inner = self.inner.max_drain_duration_seconds(input);
149        self
150    }
151    /// <p>The maximum amount of time to wait (in seconds) before forcibly releasing the IP addresses if connections are still in progress. Default value is 350 seconds.</p>
152    pub fn set_max_drain_duration_seconds(mut self, input: ::std::option::Option<i32>) -> Self {
153        self.inner = self.inner.set_max_drain_duration_seconds(input);
154        self
155    }
156    /// <p>The maximum amount of time to wait (in seconds) before forcibly releasing the IP addresses if connections are still in progress. Default value is 350 seconds.</p>
157    pub fn get_max_drain_duration_seconds(&self) -> &::std::option::Option<i32> {
158        self.inner.get_max_drain_duration_seconds()
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}