aws_sdk_ec2/operation/create_vpc/
_create_vpc_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateVpcInput {
6    /// <p>The IPv4 network range for the VPC, in CIDR notation. For example, <code>10.0.0.0/16</code>. We modify the specified CIDR block to its canonical form; for example, if you specify <code>100.68.0.18/18</code>, we modify it to <code>100.68.0.0/18</code>.</p>
7    pub cidr_block: ::std::option::Option<::std::string::String>,
8    /// <p>The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.</p>
9    pub ipv6_pool: ::std::option::Option<::std::string::String>,
10    /// <p>The IPv6 CIDR block from the IPv6 address pool. You must also specify <code>Ipv6Pool</code> in the request.</p>
11    /// <p>To let Amazon choose the IPv6 CIDR block for you, omit this parameter.</p>
12    pub ipv6_cidr_block: ::std::option::Option<::std::string::String>,
13    /// <p>The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
14    pub ipv4_ipam_pool_id: ::std::option::Option<::std::string::String>,
15    /// <p>The netmask length of the IPv4 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
16    pub ipv4_netmask_length: ::std::option::Option<i32>,
17    /// <p>The ID of an IPv6 IPAM pool which will be used to allocate this VPC an IPv6 CIDR. 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. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
18    pub ipv6_ipam_pool_id: ::std::option::Option<::std::string::String>,
19    /// <p>The netmask length of the IPv6 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
20    pub ipv6_netmask_length: ::std::option::Option<i32>,
21    /// <p>The name of the location from which we advertise the IPV6 CIDR block. Use this parameter to limit the address to this location.</p>
22    /// <p>You must set <code>AmazonProvidedIpv6CidrBlock</code> to <code>true</code> to use this parameter.</p>
23    pub ipv6_cidr_block_network_border_group: ::std::option::Option<::std::string::String>,
24    /// <p>The tags to assign to the VPC.</p>
25    pub tag_specifications: ::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>>,
26    /// <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>
27    pub dry_run: ::std::option::Option<bool>,
28    /// <p>The tenancy options for instances launched into the VPC. For <code>default</code>, instances are launched with shared tenancy by default. You can launch instances with any tenancy into a shared tenancy VPC. For <code>dedicated</code>, instances are launched as dedicated tenancy instances by default. You can only launch instances with a tenancy of <code>dedicated</code> or <code>host</code> into a dedicated tenancy VPC.</p>
29    /// <p><b>Important:</b> The <code>host</code> value cannot be used with this parameter. Use the <code>default</code> or <code>dedicated</code> values only.</p>
30    /// <p>Default: <code>default</code></p>
31    pub instance_tenancy: ::std::option::Option<crate::types::Tenancy>,
32    /// <p>Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block.</p>
33    pub amazon_provided_ipv6_cidr_block: ::std::option::Option<bool>,
34}
35impl CreateVpcInput {
36    /// <p>The IPv4 network range for the VPC, in CIDR notation. For example, <code>10.0.0.0/16</code>. We modify the specified CIDR block to its canonical form; for example, if you specify <code>100.68.0.18/18</code>, we modify it to <code>100.68.0.0/18</code>.</p>
37    pub fn cidr_block(&self) -> ::std::option::Option<&str> {
38        self.cidr_block.as_deref()
39    }
40    /// <p>The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.</p>
41    pub fn ipv6_pool(&self) -> ::std::option::Option<&str> {
42        self.ipv6_pool.as_deref()
43    }
44    /// <p>The IPv6 CIDR block from the IPv6 address pool. You must also specify <code>Ipv6Pool</code> in the request.</p>
45    /// <p>To let Amazon choose the IPv6 CIDR block for you, omit this parameter.</p>
46    pub fn ipv6_cidr_block(&self) -> ::std::option::Option<&str> {
47        self.ipv6_cidr_block.as_deref()
48    }
49    /// <p>The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
50    pub fn ipv4_ipam_pool_id(&self) -> ::std::option::Option<&str> {
51        self.ipv4_ipam_pool_id.as_deref()
52    }
53    /// <p>The netmask length of the IPv4 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
54    pub fn ipv4_netmask_length(&self) -> ::std::option::Option<i32> {
55        self.ipv4_netmask_length
56    }
57    /// <p>The ID of an IPv6 IPAM pool which will be used to allocate this VPC an IPv6 CIDR. 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. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
58    pub fn ipv6_ipam_pool_id(&self) -> ::std::option::Option<&str> {
59        self.ipv6_ipam_pool_id.as_deref()
60    }
61    /// <p>The netmask length of the IPv6 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
62    pub fn ipv6_netmask_length(&self) -> ::std::option::Option<i32> {
63        self.ipv6_netmask_length
64    }
65    /// <p>The name of the location from which we advertise the IPV6 CIDR block. Use this parameter to limit the address to this location.</p>
66    /// <p>You must set <code>AmazonProvidedIpv6CidrBlock</code> to <code>true</code> to use this parameter.</p>
67    pub fn ipv6_cidr_block_network_border_group(&self) -> ::std::option::Option<&str> {
68        self.ipv6_cidr_block_network_border_group.as_deref()
69    }
70    /// <p>The tags to assign to the VPC.</p>
71    ///
72    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tag_specifications.is_none()`.
73    pub fn tag_specifications(&self) -> &[crate::types::TagSpecification] {
74        self.tag_specifications.as_deref().unwrap_or_default()
75    }
76    /// <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>
77    pub fn dry_run(&self) -> ::std::option::Option<bool> {
78        self.dry_run
79    }
80    /// <p>The tenancy options for instances launched into the VPC. For <code>default</code>, instances are launched with shared tenancy by default. You can launch instances with any tenancy into a shared tenancy VPC. For <code>dedicated</code>, instances are launched as dedicated tenancy instances by default. You can only launch instances with a tenancy of <code>dedicated</code> or <code>host</code> into a dedicated tenancy VPC.</p>
81    /// <p><b>Important:</b> The <code>host</code> value cannot be used with this parameter. Use the <code>default</code> or <code>dedicated</code> values only.</p>
82    /// <p>Default: <code>default</code></p>
83    pub fn instance_tenancy(&self) -> ::std::option::Option<&crate::types::Tenancy> {
84        self.instance_tenancy.as_ref()
85    }
86    /// <p>Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block.</p>
87    pub fn amazon_provided_ipv6_cidr_block(&self) -> ::std::option::Option<bool> {
88        self.amazon_provided_ipv6_cidr_block
89    }
90}
91impl CreateVpcInput {
92    /// Creates a new builder-style object to manufacture [`CreateVpcInput`](crate::operation::create_vpc::CreateVpcInput).
93    pub fn builder() -> crate::operation::create_vpc::builders::CreateVpcInputBuilder {
94        crate::operation::create_vpc::builders::CreateVpcInputBuilder::default()
95    }
96}
97
98/// A builder for [`CreateVpcInput`](crate::operation::create_vpc::CreateVpcInput).
99#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
100#[non_exhaustive]
101pub struct CreateVpcInputBuilder {
102    pub(crate) cidr_block: ::std::option::Option<::std::string::String>,
103    pub(crate) ipv6_pool: ::std::option::Option<::std::string::String>,
104    pub(crate) ipv6_cidr_block: ::std::option::Option<::std::string::String>,
105    pub(crate) ipv4_ipam_pool_id: ::std::option::Option<::std::string::String>,
106    pub(crate) ipv4_netmask_length: ::std::option::Option<i32>,
107    pub(crate) ipv6_ipam_pool_id: ::std::option::Option<::std::string::String>,
108    pub(crate) ipv6_netmask_length: ::std::option::Option<i32>,
109    pub(crate) ipv6_cidr_block_network_border_group: ::std::option::Option<::std::string::String>,
110    pub(crate) tag_specifications: ::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>>,
111    pub(crate) dry_run: ::std::option::Option<bool>,
112    pub(crate) instance_tenancy: ::std::option::Option<crate::types::Tenancy>,
113    pub(crate) amazon_provided_ipv6_cidr_block: ::std::option::Option<bool>,
114}
115impl CreateVpcInputBuilder {
116    /// <p>The IPv4 network range for the VPC, in CIDR notation. For example, <code>10.0.0.0/16</code>. We modify the specified CIDR block to its canonical form; for example, if you specify <code>100.68.0.18/18</code>, we modify it to <code>100.68.0.0/18</code>.</p>
117    pub fn cidr_block(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
118        self.cidr_block = ::std::option::Option::Some(input.into());
119        self
120    }
121    /// <p>The IPv4 network range for the VPC, in CIDR notation. For example, <code>10.0.0.0/16</code>. We modify the specified CIDR block to its canonical form; for example, if you specify <code>100.68.0.18/18</code>, we modify it to <code>100.68.0.0/18</code>.</p>
122    pub fn set_cidr_block(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
123        self.cidr_block = input;
124        self
125    }
126    /// <p>The IPv4 network range for the VPC, in CIDR notation. For example, <code>10.0.0.0/16</code>. We modify the specified CIDR block to its canonical form; for example, if you specify <code>100.68.0.18/18</code>, we modify it to <code>100.68.0.0/18</code>.</p>
127    pub fn get_cidr_block(&self) -> &::std::option::Option<::std::string::String> {
128        &self.cidr_block
129    }
130    /// <p>The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.</p>
131    pub fn ipv6_pool(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
132        self.ipv6_pool = ::std::option::Option::Some(input.into());
133        self
134    }
135    /// <p>The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.</p>
136    pub fn set_ipv6_pool(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
137        self.ipv6_pool = input;
138        self
139    }
140    /// <p>The ID of an IPv6 address pool from which to allocate the IPv6 CIDR block.</p>
141    pub fn get_ipv6_pool(&self) -> &::std::option::Option<::std::string::String> {
142        &self.ipv6_pool
143    }
144    /// <p>The IPv6 CIDR block from the IPv6 address pool. You must also specify <code>Ipv6Pool</code> in the request.</p>
145    /// <p>To let Amazon choose the IPv6 CIDR block for you, omit this parameter.</p>
146    pub fn ipv6_cidr_block(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
147        self.ipv6_cidr_block = ::std::option::Option::Some(input.into());
148        self
149    }
150    /// <p>The IPv6 CIDR block from the IPv6 address pool. You must also specify <code>Ipv6Pool</code> in the request.</p>
151    /// <p>To let Amazon choose the IPv6 CIDR block for you, omit this parameter.</p>
152    pub fn set_ipv6_cidr_block(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
153        self.ipv6_cidr_block = input;
154        self
155    }
156    /// <p>The IPv6 CIDR block from the IPv6 address pool. You must also specify <code>Ipv6Pool</code> in the request.</p>
157    /// <p>To let Amazon choose the IPv6 CIDR block for you, omit this parameter.</p>
158    pub fn get_ipv6_cidr_block(&self) -> &::std::option::Option<::std::string::String> {
159        &self.ipv6_cidr_block
160    }
161    /// <p>The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
162    pub fn ipv4_ipam_pool_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
163        self.ipv4_ipam_pool_id = ::std::option::Option::Some(input.into());
164        self
165    }
166    /// <p>The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
167    pub fn set_ipv4_ipam_pool_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
168        self.ipv4_ipam_pool_id = input;
169        self
170    }
171    /// <p>The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
172    pub fn get_ipv4_ipam_pool_id(&self) -> &::std::option::Option<::std::string::String> {
173        &self.ipv4_ipam_pool_id
174    }
175    /// <p>The netmask length of the IPv4 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
176    pub fn ipv4_netmask_length(mut self, input: i32) -> Self {
177        self.ipv4_netmask_length = ::std::option::Option::Some(input);
178        self
179    }
180    /// <p>The netmask length of the IPv4 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
181    pub fn set_ipv4_netmask_length(mut self, input: ::std::option::Option<i32>) -> Self {
182        self.ipv4_netmask_length = input;
183        self
184    }
185    /// <p>The netmask length of the IPv4 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
186    pub fn get_ipv4_netmask_length(&self) -> &::std::option::Option<i32> {
187        &self.ipv4_netmask_length
188    }
189    /// <p>The ID of an IPv6 IPAM pool which will be used to allocate this VPC an IPv6 CIDR. 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. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
190    pub fn ipv6_ipam_pool_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
191        self.ipv6_ipam_pool_id = ::std::option::Option::Some(input.into());
192        self
193    }
194    /// <p>The ID of an IPv6 IPAM pool which will be used to allocate this VPC an IPv6 CIDR. 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. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
195    pub fn set_ipv6_ipam_pool_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
196        self.ipv6_ipam_pool_id = input;
197        self
198    }
199    /// <p>The ID of an IPv6 IPAM pool which will be used to allocate this VPC an IPv6 CIDR. 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. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
200    pub fn get_ipv6_ipam_pool_id(&self) -> &::std::option::Option<::std::string::String> {
201        &self.ipv6_ipam_pool_id
202    }
203    /// <p>The netmask length of the IPv6 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
204    pub fn ipv6_netmask_length(mut self, input: i32) -> Self {
205        self.ipv6_netmask_length = ::std::option::Option::Some(input);
206        self
207    }
208    /// <p>The netmask length of the IPv6 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
209    pub fn set_ipv6_netmask_length(mut self, input: ::std::option::Option<i32>) -> Self {
210        self.ipv6_netmask_length = input;
211        self
212    }
213    /// <p>The netmask length of the IPv6 CIDR you want to allocate to this VPC from an Amazon VPC IP Address Manager (IPAM) pool. For more information about IPAM, see <a href="https://docs.aws.amazon.com/vpc/latest/ipam/what-is-it-ipam.html">What is IPAM?</a> in the <i>Amazon VPC IPAM User Guide</i>.</p>
214    pub fn get_ipv6_netmask_length(&self) -> &::std::option::Option<i32> {
215        &self.ipv6_netmask_length
216    }
217    /// <p>The name of the location from which we advertise the IPV6 CIDR block. Use this parameter to limit the address to this location.</p>
218    /// <p>You must set <code>AmazonProvidedIpv6CidrBlock</code> to <code>true</code> to use this parameter.</p>
219    pub fn ipv6_cidr_block_network_border_group(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
220        self.ipv6_cidr_block_network_border_group = ::std::option::Option::Some(input.into());
221        self
222    }
223    /// <p>The name of the location from which we advertise the IPV6 CIDR block. Use this parameter to limit the address to this location.</p>
224    /// <p>You must set <code>AmazonProvidedIpv6CidrBlock</code> to <code>true</code> to use this parameter.</p>
225    pub fn set_ipv6_cidr_block_network_border_group(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
226        self.ipv6_cidr_block_network_border_group = input;
227        self
228    }
229    /// <p>The name of the location from which we advertise the IPV6 CIDR block. Use this parameter to limit the address to this location.</p>
230    /// <p>You must set <code>AmazonProvidedIpv6CidrBlock</code> to <code>true</code> to use this parameter.</p>
231    pub fn get_ipv6_cidr_block_network_border_group(&self) -> &::std::option::Option<::std::string::String> {
232        &self.ipv6_cidr_block_network_border_group
233    }
234    /// Appends an item to `tag_specifications`.
235    ///
236    /// To override the contents of this collection use [`set_tag_specifications`](Self::set_tag_specifications).
237    ///
238    /// <p>The tags to assign to the VPC.</p>
239    pub fn tag_specifications(mut self, input: crate::types::TagSpecification) -> Self {
240        let mut v = self.tag_specifications.unwrap_or_default();
241        v.push(input);
242        self.tag_specifications = ::std::option::Option::Some(v);
243        self
244    }
245    /// <p>The tags to assign to the VPC.</p>
246    pub fn set_tag_specifications(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>>) -> Self {
247        self.tag_specifications = input;
248        self
249    }
250    /// <p>The tags to assign to the VPC.</p>
251    pub fn get_tag_specifications(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>> {
252        &self.tag_specifications
253    }
254    /// <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>
255    pub fn dry_run(mut self, input: bool) -> Self {
256        self.dry_run = ::std::option::Option::Some(input);
257        self
258    }
259    /// <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>
260    pub fn set_dry_run(mut self, input: ::std::option::Option<bool>) -> Self {
261        self.dry_run = input;
262        self
263    }
264    /// <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>
265    pub fn get_dry_run(&self) -> &::std::option::Option<bool> {
266        &self.dry_run
267    }
268    /// <p>The tenancy options for instances launched into the VPC. For <code>default</code>, instances are launched with shared tenancy by default. You can launch instances with any tenancy into a shared tenancy VPC. For <code>dedicated</code>, instances are launched as dedicated tenancy instances by default. You can only launch instances with a tenancy of <code>dedicated</code> or <code>host</code> into a dedicated tenancy VPC.</p>
269    /// <p><b>Important:</b> The <code>host</code> value cannot be used with this parameter. Use the <code>default</code> or <code>dedicated</code> values only.</p>
270    /// <p>Default: <code>default</code></p>
271    pub fn instance_tenancy(mut self, input: crate::types::Tenancy) -> Self {
272        self.instance_tenancy = ::std::option::Option::Some(input);
273        self
274    }
275    /// <p>The tenancy options for instances launched into the VPC. For <code>default</code>, instances are launched with shared tenancy by default. You can launch instances with any tenancy into a shared tenancy VPC. For <code>dedicated</code>, instances are launched as dedicated tenancy instances by default. You can only launch instances with a tenancy of <code>dedicated</code> or <code>host</code> into a dedicated tenancy VPC.</p>
276    /// <p><b>Important:</b> The <code>host</code> value cannot be used with this parameter. Use the <code>default</code> or <code>dedicated</code> values only.</p>
277    /// <p>Default: <code>default</code></p>
278    pub fn set_instance_tenancy(mut self, input: ::std::option::Option<crate::types::Tenancy>) -> Self {
279        self.instance_tenancy = input;
280        self
281    }
282    /// <p>The tenancy options for instances launched into the VPC. For <code>default</code>, instances are launched with shared tenancy by default. You can launch instances with any tenancy into a shared tenancy VPC. For <code>dedicated</code>, instances are launched as dedicated tenancy instances by default. You can only launch instances with a tenancy of <code>dedicated</code> or <code>host</code> into a dedicated tenancy VPC.</p>
283    /// <p><b>Important:</b> The <code>host</code> value cannot be used with this parameter. Use the <code>default</code> or <code>dedicated</code> values only.</p>
284    /// <p>Default: <code>default</code></p>
285    pub fn get_instance_tenancy(&self) -> &::std::option::Option<crate::types::Tenancy> {
286        &self.instance_tenancy
287    }
288    /// <p>Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block.</p>
289    pub fn amazon_provided_ipv6_cidr_block(mut self, input: bool) -> Self {
290        self.amazon_provided_ipv6_cidr_block = ::std::option::Option::Some(input);
291        self
292    }
293    /// <p>Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block.</p>
294    pub fn set_amazon_provided_ipv6_cidr_block(mut self, input: ::std::option::Option<bool>) -> Self {
295        self.amazon_provided_ipv6_cidr_block = input;
296        self
297    }
298    /// <p>Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block.</p>
299    pub fn get_amazon_provided_ipv6_cidr_block(&self) -> &::std::option::Option<bool> {
300        &self.amazon_provided_ipv6_cidr_block
301    }
302    /// Consumes the builder and constructs a [`CreateVpcInput`](crate::operation::create_vpc::CreateVpcInput).
303    pub fn build(self) -> ::std::result::Result<crate::operation::create_vpc::CreateVpcInput, ::aws_smithy_types::error::operation::BuildError> {
304        ::std::result::Result::Ok(crate::operation::create_vpc::CreateVpcInput {
305            cidr_block: self.cidr_block,
306            ipv6_pool: self.ipv6_pool,
307            ipv6_cidr_block: self.ipv6_cidr_block,
308            ipv4_ipam_pool_id: self.ipv4_ipam_pool_id,
309            ipv4_netmask_length: self.ipv4_netmask_length,
310            ipv6_ipam_pool_id: self.ipv6_ipam_pool_id,
311            ipv6_netmask_length: self.ipv6_netmask_length,
312            ipv6_cidr_block_network_border_group: self.ipv6_cidr_block_network_border_group,
313            tag_specifications: self.tag_specifications,
314            dry_run: self.dry_run,
315            instance_tenancy: self.instance_tenancy,
316            amazon_provided_ipv6_cidr_block: self.amazon_provided_ipv6_cidr_block,
317        })
318    }
319}