aws_sdk_ec2/operation/create_ipam/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_ipam::_create_ipam_output::CreateIpamOutputBuilder;
3
4pub use crate::operation::create_ipam::_create_ipam_input::CreateIpamInputBuilder;
5
6impl crate::operation::create_ipam::builders::CreateIpamInputBuilder {
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::create_ipam::CreateIpamOutput,
13 ::aws_smithy_runtime_api::client::result::SdkError<
14 crate::operation::create_ipam::CreateIpamError,
15 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16 >,
17 > {
18 let mut fluent_builder = client.create_ipam();
19 fluent_builder.inner = self;
20 fluent_builder.send().await
21 }
22}
23/// Fluent builder constructing a request to `CreateIpam`.
24///
25/// <p>Create an IPAM. Amazon VPC IP Address Manager (IPAM) is a VPC feature that you can use to automate your IP address management workflows including assigning, tracking, troubleshooting, and auditing IP addresses across Amazon Web Services Regions and accounts throughout your Amazon Web Services Organization.</p>
26/// <p>For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/create-ipam.html">Create an IPAM</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
27#[derive(::std::clone::Clone, ::std::fmt::Debug)]
28pub struct CreateIpamFluentBuilder {
29 handle: ::std::sync::Arc<crate::client::Handle>,
30 inner: crate::operation::create_ipam::builders::CreateIpamInputBuilder,
31 config_override: ::std::option::Option<crate::config::Builder>,
32}
33impl
34 crate::client::customize::internal::CustomizableSend<
35 crate::operation::create_ipam::CreateIpamOutput,
36 crate::operation::create_ipam::CreateIpamError,
37 > for CreateIpamFluentBuilder
38{
39 fn send(
40 self,
41 config_override: crate::config::Builder,
42 ) -> crate::client::customize::internal::BoxFuture<
43 crate::client::customize::internal::SendResult<
44 crate::operation::create_ipam::CreateIpamOutput,
45 crate::operation::create_ipam::CreateIpamError,
46 >,
47 > {
48 ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
49 }
50}
51impl CreateIpamFluentBuilder {
52 /// Creates a new `CreateIpamFluentBuilder`.
53 pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
54 Self {
55 handle,
56 inner: ::std::default::Default::default(),
57 config_override: ::std::option::Option::None,
58 }
59 }
60 /// Access the CreateIpam as a reference.
61 pub fn as_input(&self) -> &crate::operation::create_ipam::builders::CreateIpamInputBuilder {
62 &self.inner
63 }
64 /// Sends the request and returns the response.
65 ///
66 /// If an error occurs, an `SdkError` will be returned with additional details that
67 /// can be matched against.
68 ///
69 /// By default, any retryable failures will be retried twice. Retry behavior
70 /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
71 /// set when configuring the client.
72 pub async fn send(
73 self,
74 ) -> ::std::result::Result<
75 crate::operation::create_ipam::CreateIpamOutput,
76 ::aws_smithy_runtime_api::client::result::SdkError<
77 crate::operation::create_ipam::CreateIpamError,
78 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
79 >,
80 > {
81 let input = self
82 .inner
83 .build()
84 .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
85 let runtime_plugins = crate::operation::create_ipam::CreateIpam::operation_runtime_plugins(
86 self.handle.runtime_plugins.clone(),
87 &self.handle.conf,
88 self.config_override,
89 );
90 crate::operation::create_ipam::CreateIpam::orchestrate(&runtime_plugins, input).await
91 }
92
93 /// Consumes this builder, creating a customizable operation that can be modified before being sent.
94 pub fn customize(
95 self,
96 ) -> crate::client::customize::CustomizableOperation<
97 crate::operation::create_ipam::CreateIpamOutput,
98 crate::operation::create_ipam::CreateIpamError,
99 Self,
100 > {
101 crate::client::customize::CustomizableOperation::new(self)
102 }
103 pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
104 self.set_config_override(::std::option::Option::Some(config_override.into()));
105 self
106 }
107
108 pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
109 self.config_override = config_override;
110 self
111 }
112 /// <p>A check for 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>
113 pub fn dry_run(mut self, input: bool) -> Self {
114 self.inner = self.inner.dry_run(input);
115 self
116 }
117 /// <p>A check for 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>
118 pub fn set_dry_run(mut self, input: ::std::option::Option<bool>) -> Self {
119 self.inner = self.inner.set_dry_run(input);
120 self
121 }
122 /// <p>A check for 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>
123 pub fn get_dry_run(&self) -> &::std::option::Option<bool> {
124 self.inner.get_dry_run()
125 }
126 /// <p>A description for the IPAM.</p>
127 pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
128 self.inner = self.inner.description(input.into());
129 self
130 }
131 /// <p>A description for the IPAM.</p>
132 pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
133 self.inner = self.inner.set_description(input);
134 self
135 }
136 /// <p>A description for the IPAM.</p>
137 pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
138 self.inner.get_description()
139 }
140 ///
141 /// Appends an item to `OperatingRegions`.
142 ///
143 /// To override the contents of this collection use [`set_operating_regions`](Self::set_operating_regions).
144 ///
145 /// <p>The operating Regions for the IPAM. Operating Regions are Amazon Web Services Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only discovers and monitors resources in the Amazon Web Services Regions you select as operating Regions.</p>
146 /// <p>For more information about operating Regions, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/create-ipam.html">Create an IPAM</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
147 pub fn operating_regions(mut self, input: crate::types::AddIpamOperatingRegion) -> Self {
148 self.inner = self.inner.operating_regions(input);
149 self
150 }
151 /// <p>The operating Regions for the IPAM. Operating Regions are Amazon Web Services Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only discovers and monitors resources in the Amazon Web Services Regions you select as operating Regions.</p>
152 /// <p>For more information about operating Regions, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/create-ipam.html">Create an IPAM</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
153 pub fn set_operating_regions(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::AddIpamOperatingRegion>>) -> Self {
154 self.inner = self.inner.set_operating_regions(input);
155 self
156 }
157 /// <p>The operating Regions for the IPAM. Operating Regions are Amazon Web Services Regions where the IPAM is allowed to manage IP address CIDRs. IPAM only discovers and monitors resources in the Amazon Web Services Regions you select as operating Regions.</p>
158 /// <p>For more information about operating Regions, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/create-ipam.html">Create an IPAM</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
159 pub fn get_operating_regions(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::AddIpamOperatingRegion>> {
160 self.inner.get_operating_regions()
161 }
162 ///
163 /// Appends an item to `TagSpecifications`.
164 ///
165 /// To override the contents of this collection use [`set_tag_specifications`](Self::set_tag_specifications).
166 ///
167 /// <p>The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>
168 pub fn tag_specifications(mut self, input: crate::types::TagSpecification) -> Self {
169 self.inner = self.inner.tag_specifications(input);
170 self
171 }
172 /// <p>The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>
173 pub fn set_tag_specifications(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>>) -> Self {
174 self.inner = self.inner.set_tag_specifications(input);
175 self
176 }
177 /// <p>The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>
178 pub fn get_tag_specifications(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>> {
179 self.inner.get_tag_specifications()
180 }
181 /// <p>A 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">Ensuring idempotency</a>.</p>
182 pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
183 self.inner = self.inner.client_token(input.into());
184 self
185 }
186 /// <p>A 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">Ensuring idempotency</a>.</p>
187 pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
188 self.inner = self.inner.set_client_token(input);
189 self
190 }
191 /// <p>A 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">Ensuring idempotency</a>.</p>
192 pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
193 self.inner.get_client_token()
194 }
195 /// <p>IPAM is offered in a Free Tier and an Advanced Tier. For more information about the features available in each tier and the costs associated with the tiers, see <a href="http://aws.amazon.com/vpc/pricing/">Amazon VPC pricing > IPAM tab</a>.</p>
196 pub fn tier(mut self, input: crate::types::IpamTier) -> Self {
197 self.inner = self.inner.tier(input);
198 self
199 }
200 /// <p>IPAM is offered in a Free Tier and an Advanced Tier. For more information about the features available in each tier and the costs associated with the tiers, see <a href="http://aws.amazon.com/vpc/pricing/">Amazon VPC pricing > IPAM tab</a>.</p>
201 pub fn set_tier(mut self, input: ::std::option::Option<crate::types::IpamTier>) -> Self {
202 self.inner = self.inner.set_tier(input);
203 self
204 }
205 /// <p>IPAM is offered in a Free Tier and an Advanced Tier. For more information about the features available in each tier and the costs associated with the tiers, see <a href="http://aws.amazon.com/vpc/pricing/">Amazon VPC pricing > IPAM tab</a>.</p>
206 pub fn get_tier(&self) -> &::std::option::Option<crate::types::IpamTier> {
207 self.inner.get_tier()
208 }
209 /// <p>Enable this option to use your own GUA ranges as private IPv6 addresses. This option is disabled by default.</p>
210 pub fn enable_private_gua(mut self, input: bool) -> Self {
211 self.inner = self.inner.enable_private_gua(input);
212 self
213 }
214 /// <p>Enable this option to use your own GUA ranges as private IPv6 addresses. This option is disabled by default.</p>
215 pub fn set_enable_private_gua(mut self, input: ::std::option::Option<bool>) -> Self {
216 self.inner = self.inner.set_enable_private_gua(input);
217 self
218 }
219 /// <p>Enable this option to use your own GUA ranges as private IPv6 addresses. This option is disabled by default.</p>
220 pub fn get_enable_private_gua(&self) -> &::std::option::Option<bool> {
221 self.inner.get_enable_private_gua()
222 }
223 /// <p>A metered account is an Amazon Web Services account that is charged for active IP addresses managed in IPAM. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/ipam-enable-cost-distro.html">Enable cost distribution</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
224 /// <p>Possible values:</p>
225 /// <ul>
226 /// <li>
227 /// <p><code>ipam-owner</code> (default): The Amazon Web Services account which owns the IPAM is charged for all active IP addresses managed in IPAM.</p></li>
228 /// <li>
229 /// <p><code>resource-owner</code>: The Amazon Web Services account that owns the IP address is charged for the active IP address.</p></li>
230 /// </ul>
231 pub fn metered_account(mut self, input: crate::types::IpamMeteredAccount) -> Self {
232 self.inner = self.inner.metered_account(input);
233 self
234 }
235 /// <p>A metered account is an Amazon Web Services account that is charged for active IP addresses managed in IPAM. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/ipam-enable-cost-distro.html">Enable cost distribution</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
236 /// <p>Possible values:</p>
237 /// <ul>
238 /// <li>
239 /// <p><code>ipam-owner</code> (default): The Amazon Web Services account which owns the IPAM is charged for all active IP addresses managed in IPAM.</p></li>
240 /// <li>
241 /// <p><code>resource-owner</code>: The Amazon Web Services account that owns the IP address is charged for the active IP address.</p></li>
242 /// </ul>
243 pub fn set_metered_account(mut self, input: ::std::option::Option<crate::types::IpamMeteredAccount>) -> Self {
244 self.inner = self.inner.set_metered_account(input);
245 self
246 }
247 /// <p>A metered account is an Amazon Web Services account that is charged for active IP addresses managed in IPAM. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/ipam-enable-cost-distro.html">Enable cost distribution</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
248 /// <p>Possible values:</p>
249 /// <ul>
250 /// <li>
251 /// <p><code>ipam-owner</code> (default): The Amazon Web Services account which owns the IPAM is charged for all active IP addresses managed in IPAM.</p></li>
252 /// <li>
253 /// <p><code>resource-owner</code>: The Amazon Web Services account that owns the IP address is charged for the active IP address.</p></li>
254 /// </ul>
255 pub fn get_metered_account(&self) -> &::std::option::Option<crate::types::IpamMeteredAccount> {
256 self.inner.get_metered_account()
257 }
258}