Skip to main content

aws_sdk_ec2/types/
_explanation.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p>Describes an explanation code for an unreachable path. For more information, see <a href="https://docs.aws.amazon.com/vpc/latest/reachability/explanation-codes.html">Reachability Analyzer explanation codes</a>.</p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
6pub struct Explanation {
7    /// <p>The network ACL.</p>
8    pub acl: ::std::option::Option<crate::types::AnalysisComponent>,
9    /// <p>The network ACL rule.</p>
10    pub acl_rule: ::std::option::Option<crate::types::AnalysisAclRule>,
11    /// <p>The IPv4 address, in CIDR notation.</p>
12    pub address: ::std::option::Option<::std::string::String>,
13    /// <p>The IPv4 addresses, in CIDR notation.</p>
14    pub addresses: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
15    /// <p>The resource to which the component is attached.</p>
16    pub attached_to: ::std::option::Option<crate::types::AnalysisComponent>,
17    /// <p>The Availability Zones.</p>
18    pub availability_zones: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
19    /// <p>The IDs of the Availability Zones.</p>
20    pub availability_zone_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
21    /// <p>The CIDR ranges.</p>
22    pub cidrs: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
23    /// <p>The component.</p>
24    pub component: ::std::option::Option<crate::types::AnalysisComponent>,
25    /// <p>The customer gateway.</p>
26    pub customer_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
27    /// <p>The destination.</p>
28    pub destination: ::std::option::Option<crate::types::AnalysisComponent>,
29    /// <p>The destination VPC.</p>
30    pub destination_vpc: ::std::option::Option<crate::types::AnalysisComponent>,
31    /// <p>The direction. The following are the possible values:</p>
32    /// <ul>
33    /// <li>
34    /// <p>egress</p></li>
35    /// <li>
36    /// <p>ingress</p></li>
37    /// </ul>
38    pub direction: ::std::option::Option<::std::string::String>,
39    /// <p>The explanation code.</p>
40    pub explanation_code: ::std::option::Option<::std::string::String>,
41    /// <p>The route table.</p>
42    pub ingress_route_table: ::std::option::Option<crate::types::AnalysisComponent>,
43    /// <p>The internet gateway.</p>
44    pub internet_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
45    /// <p>The Amazon Resource Name (ARN) of the load balancer.</p>
46    pub load_balancer_arn: ::std::option::Option<::std::string::String>,
47    /// <p>The listener for a Classic Load Balancer.</p>
48    pub classic_load_balancer_listener: ::std::option::Option<crate::types::AnalysisLoadBalancerListener>,
49    /// <p>The listener port of the load balancer.</p>
50    pub load_balancer_listener_port: ::std::option::Option<i32>,
51    /// <p>The target.</p>
52    pub load_balancer_target: ::std::option::Option<crate::types::AnalysisLoadBalancerTarget>,
53    /// <p>The target group.</p>
54    pub load_balancer_target_group: ::std::option::Option<crate::types::AnalysisComponent>,
55    /// <p>The target groups.</p>
56    pub load_balancer_target_groups: ::std::option::Option<::std::vec::Vec<crate::types::AnalysisComponent>>,
57    /// <p>The target port.</p>
58    pub load_balancer_target_port: ::std::option::Option<i32>,
59    /// <p>The load balancer listener.</p>
60    pub elastic_load_balancer_listener: ::std::option::Option<crate::types::AnalysisComponent>,
61    /// <p>The missing component.</p>
62    pub missing_component: ::std::option::Option<::std::string::String>,
63    /// <p>The NAT gateway.</p>
64    pub nat_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
65    /// <p>The network interface.</p>
66    pub network_interface: ::std::option::Option<crate::types::AnalysisComponent>,
67    /// <p>The packet field.</p>
68    pub packet_field: ::std::option::Option<::std::string::String>,
69    /// <p>The VPC peering connection.</p>
70    pub vpc_peering_connection: ::std::option::Option<crate::types::AnalysisComponent>,
71    /// <p>The port.</p>
72    pub port: ::std::option::Option<i32>,
73    /// <p>The port ranges.</p>
74    pub port_ranges: ::std::option::Option<::std::vec::Vec<crate::types::PortRange>>,
75    /// <p>The prefix list.</p>
76    pub prefix_list: ::std::option::Option<crate::types::AnalysisComponent>,
77    /// <p>The protocols.</p>
78    pub protocols: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
79    /// <p>The route table route.</p>
80    pub route_table_route: ::std::option::Option<crate::types::AnalysisRouteTableRoute>,
81    /// <p>The route table.</p>
82    pub route_table: ::std::option::Option<crate::types::AnalysisComponent>,
83    /// <p>The security group.</p>
84    pub security_group: ::std::option::Option<crate::types::AnalysisComponent>,
85    /// <p>The security group rule.</p>
86    pub security_group_rule: ::std::option::Option<crate::types::AnalysisSecurityGroupRule>,
87    /// <p>The security groups.</p>
88    pub security_groups: ::std::option::Option<::std::vec::Vec<crate::types::AnalysisComponent>>,
89    /// <p>The source VPC.</p>
90    pub source_vpc: ::std::option::Option<crate::types::AnalysisComponent>,
91    /// <p>The state.</p>
92    pub state: ::std::option::Option<::std::string::String>,
93    /// <p>The subnet.</p>
94    pub subnet: ::std::option::Option<crate::types::AnalysisComponent>,
95    /// <p>The route table for the subnet.</p>
96    pub subnet_route_table: ::std::option::Option<crate::types::AnalysisComponent>,
97    /// <p>The component VPC.</p>
98    pub vpc: ::std::option::Option<crate::types::AnalysisComponent>,
99    /// <p>The VPC endpoint.</p>
100    pub vpc_endpoint: ::std::option::Option<crate::types::AnalysisComponent>,
101    /// <p>The VPN connection.</p>
102    pub vpn_connection: ::std::option::Option<crate::types::AnalysisComponent>,
103    /// <p>The VPN gateway.</p>
104    pub vpn_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
105    /// <p>The transit gateway.</p>
106    pub transit_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
107    /// <p>The transit gateway route table.</p>
108    pub transit_gateway_route_table: ::std::option::Option<crate::types::AnalysisComponent>,
109    /// <p>The transit gateway route table route.</p>
110    pub transit_gateway_route_table_route: ::std::option::Option<crate::types::TransitGatewayRouteTableRoute>,
111    /// <p>The transit gateway attachment.</p>
112    pub transit_gateway_attachment: ::std::option::Option<crate::types::AnalysisComponent>,
113    /// <p>The Amazon Web Services account for the component.</p>
114    pub component_account: ::std::option::Option<::std::string::String>,
115    /// <p>The Region for the component.</p>
116    pub component_region: ::std::option::Option<::std::string::String>,
117    /// <p>The Network Firewall stateless rule.</p>
118    pub firewall_stateless_rule: ::std::option::Option<crate::types::FirewallStatelessRule>,
119    /// <p>The Network Firewall stateful rule.</p>
120    pub firewall_stateful_rule: ::std::option::Option<crate::types::FirewallStatefulRule>,
121}
122impl Explanation {
123    /// <p>The network ACL.</p>
124    pub fn acl(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
125        self.acl.as_ref()
126    }
127    /// <p>The network ACL rule.</p>
128    pub fn acl_rule(&self) -> ::std::option::Option<&crate::types::AnalysisAclRule> {
129        self.acl_rule.as_ref()
130    }
131    /// <p>The IPv4 address, in CIDR notation.</p>
132    pub fn address(&self) -> ::std::option::Option<&str> {
133        self.address.as_deref()
134    }
135    /// <p>The IPv4 addresses, in CIDR notation.</p>
136    ///
137    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.addresses.is_none()`.
138    pub fn addresses(&self) -> &[::std::string::String] {
139        self.addresses.as_deref().unwrap_or_default()
140    }
141    /// <p>The resource to which the component is attached.</p>
142    pub fn attached_to(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
143        self.attached_to.as_ref()
144    }
145    /// <p>The Availability Zones.</p>
146    ///
147    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.availability_zones.is_none()`.
148    pub fn availability_zones(&self) -> &[::std::string::String] {
149        self.availability_zones.as_deref().unwrap_or_default()
150    }
151    /// <p>The IDs of the Availability Zones.</p>
152    ///
153    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.availability_zone_ids.is_none()`.
154    pub fn availability_zone_ids(&self) -> &[::std::string::String] {
155        self.availability_zone_ids.as_deref().unwrap_or_default()
156    }
157    /// <p>The CIDR ranges.</p>
158    ///
159    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.cidrs.is_none()`.
160    pub fn cidrs(&self) -> &[::std::string::String] {
161        self.cidrs.as_deref().unwrap_or_default()
162    }
163    /// <p>The component.</p>
164    pub fn component(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
165        self.component.as_ref()
166    }
167    /// <p>The customer gateway.</p>
168    pub fn customer_gateway(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
169        self.customer_gateway.as_ref()
170    }
171    /// <p>The destination.</p>
172    pub fn destination(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
173        self.destination.as_ref()
174    }
175    /// <p>The destination VPC.</p>
176    pub fn destination_vpc(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
177        self.destination_vpc.as_ref()
178    }
179    /// <p>The direction. The following are the possible values:</p>
180    /// <ul>
181    /// <li>
182    /// <p>egress</p></li>
183    /// <li>
184    /// <p>ingress</p></li>
185    /// </ul>
186    pub fn direction(&self) -> ::std::option::Option<&str> {
187        self.direction.as_deref()
188    }
189    /// <p>The explanation code.</p>
190    pub fn explanation_code(&self) -> ::std::option::Option<&str> {
191        self.explanation_code.as_deref()
192    }
193    /// <p>The route table.</p>
194    pub fn ingress_route_table(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
195        self.ingress_route_table.as_ref()
196    }
197    /// <p>The internet gateway.</p>
198    pub fn internet_gateway(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
199        self.internet_gateway.as_ref()
200    }
201    /// <p>The Amazon Resource Name (ARN) of the load balancer.</p>
202    pub fn load_balancer_arn(&self) -> ::std::option::Option<&str> {
203        self.load_balancer_arn.as_deref()
204    }
205    /// <p>The listener for a Classic Load Balancer.</p>
206    pub fn classic_load_balancer_listener(&self) -> ::std::option::Option<&crate::types::AnalysisLoadBalancerListener> {
207        self.classic_load_balancer_listener.as_ref()
208    }
209    /// <p>The listener port of the load balancer.</p>
210    pub fn load_balancer_listener_port(&self) -> ::std::option::Option<i32> {
211        self.load_balancer_listener_port
212    }
213    /// <p>The target.</p>
214    pub fn load_balancer_target(&self) -> ::std::option::Option<&crate::types::AnalysisLoadBalancerTarget> {
215        self.load_balancer_target.as_ref()
216    }
217    /// <p>The target group.</p>
218    pub fn load_balancer_target_group(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
219        self.load_balancer_target_group.as_ref()
220    }
221    /// <p>The target groups.</p>
222    ///
223    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.load_balancer_target_groups.is_none()`.
224    pub fn load_balancer_target_groups(&self) -> &[crate::types::AnalysisComponent] {
225        self.load_balancer_target_groups.as_deref().unwrap_or_default()
226    }
227    /// <p>The target port.</p>
228    pub fn load_balancer_target_port(&self) -> ::std::option::Option<i32> {
229        self.load_balancer_target_port
230    }
231    /// <p>The load balancer listener.</p>
232    pub fn elastic_load_balancer_listener(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
233        self.elastic_load_balancer_listener.as_ref()
234    }
235    /// <p>The missing component.</p>
236    pub fn missing_component(&self) -> ::std::option::Option<&str> {
237        self.missing_component.as_deref()
238    }
239    /// <p>The NAT gateway.</p>
240    pub fn nat_gateway(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
241        self.nat_gateway.as_ref()
242    }
243    /// <p>The network interface.</p>
244    pub fn network_interface(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
245        self.network_interface.as_ref()
246    }
247    /// <p>The packet field.</p>
248    pub fn packet_field(&self) -> ::std::option::Option<&str> {
249        self.packet_field.as_deref()
250    }
251    /// <p>The VPC peering connection.</p>
252    pub fn vpc_peering_connection(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
253        self.vpc_peering_connection.as_ref()
254    }
255    /// <p>The port.</p>
256    pub fn port(&self) -> ::std::option::Option<i32> {
257        self.port
258    }
259    /// <p>The port ranges.</p>
260    ///
261    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.port_ranges.is_none()`.
262    pub fn port_ranges(&self) -> &[crate::types::PortRange] {
263        self.port_ranges.as_deref().unwrap_or_default()
264    }
265    /// <p>The prefix list.</p>
266    pub fn prefix_list(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
267        self.prefix_list.as_ref()
268    }
269    /// <p>The protocols.</p>
270    ///
271    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.protocols.is_none()`.
272    pub fn protocols(&self) -> &[::std::string::String] {
273        self.protocols.as_deref().unwrap_or_default()
274    }
275    /// <p>The route table route.</p>
276    pub fn route_table_route(&self) -> ::std::option::Option<&crate::types::AnalysisRouteTableRoute> {
277        self.route_table_route.as_ref()
278    }
279    /// <p>The route table.</p>
280    pub fn route_table(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
281        self.route_table.as_ref()
282    }
283    /// <p>The security group.</p>
284    pub fn security_group(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
285        self.security_group.as_ref()
286    }
287    /// <p>The security group rule.</p>
288    pub fn security_group_rule(&self) -> ::std::option::Option<&crate::types::AnalysisSecurityGroupRule> {
289        self.security_group_rule.as_ref()
290    }
291    /// <p>The security groups.</p>
292    ///
293    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.security_groups.is_none()`.
294    pub fn security_groups(&self) -> &[crate::types::AnalysisComponent] {
295        self.security_groups.as_deref().unwrap_or_default()
296    }
297    /// <p>The source VPC.</p>
298    pub fn source_vpc(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
299        self.source_vpc.as_ref()
300    }
301    /// <p>The state.</p>
302    pub fn state(&self) -> ::std::option::Option<&str> {
303        self.state.as_deref()
304    }
305    /// <p>The subnet.</p>
306    pub fn subnet(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
307        self.subnet.as_ref()
308    }
309    /// <p>The route table for the subnet.</p>
310    pub fn subnet_route_table(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
311        self.subnet_route_table.as_ref()
312    }
313    /// <p>The component VPC.</p>
314    pub fn vpc(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
315        self.vpc.as_ref()
316    }
317    /// <p>The VPC endpoint.</p>
318    pub fn vpc_endpoint(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
319        self.vpc_endpoint.as_ref()
320    }
321    /// <p>The VPN connection.</p>
322    pub fn vpn_connection(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
323        self.vpn_connection.as_ref()
324    }
325    /// <p>The VPN gateway.</p>
326    pub fn vpn_gateway(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
327        self.vpn_gateway.as_ref()
328    }
329    /// <p>The transit gateway.</p>
330    pub fn transit_gateway(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
331        self.transit_gateway.as_ref()
332    }
333    /// <p>The transit gateway route table.</p>
334    pub fn transit_gateway_route_table(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
335        self.transit_gateway_route_table.as_ref()
336    }
337    /// <p>The transit gateway route table route.</p>
338    pub fn transit_gateway_route_table_route(&self) -> ::std::option::Option<&crate::types::TransitGatewayRouteTableRoute> {
339        self.transit_gateway_route_table_route.as_ref()
340    }
341    /// <p>The transit gateway attachment.</p>
342    pub fn transit_gateway_attachment(&self) -> ::std::option::Option<&crate::types::AnalysisComponent> {
343        self.transit_gateway_attachment.as_ref()
344    }
345    /// <p>The Amazon Web Services account for the component.</p>
346    pub fn component_account(&self) -> ::std::option::Option<&str> {
347        self.component_account.as_deref()
348    }
349    /// <p>The Region for the component.</p>
350    pub fn component_region(&self) -> ::std::option::Option<&str> {
351        self.component_region.as_deref()
352    }
353    /// <p>The Network Firewall stateless rule.</p>
354    pub fn firewall_stateless_rule(&self) -> ::std::option::Option<&crate::types::FirewallStatelessRule> {
355        self.firewall_stateless_rule.as_ref()
356    }
357    /// <p>The Network Firewall stateful rule.</p>
358    pub fn firewall_stateful_rule(&self) -> ::std::option::Option<&crate::types::FirewallStatefulRule> {
359        self.firewall_stateful_rule.as_ref()
360    }
361}
362impl Explanation {
363    /// Creates a new builder-style object to manufacture [`Explanation`](crate::types::Explanation).
364    pub fn builder() -> crate::types::builders::ExplanationBuilder {
365        crate::types::builders::ExplanationBuilder::default()
366    }
367}
368
369/// A builder for [`Explanation`](crate::types::Explanation).
370#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
371#[non_exhaustive]
372pub struct ExplanationBuilder {
373    pub(crate) acl: ::std::option::Option<crate::types::AnalysisComponent>,
374    pub(crate) acl_rule: ::std::option::Option<crate::types::AnalysisAclRule>,
375    pub(crate) address: ::std::option::Option<::std::string::String>,
376    pub(crate) addresses: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
377    pub(crate) attached_to: ::std::option::Option<crate::types::AnalysisComponent>,
378    pub(crate) availability_zones: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
379    pub(crate) availability_zone_ids: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
380    pub(crate) cidrs: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
381    pub(crate) component: ::std::option::Option<crate::types::AnalysisComponent>,
382    pub(crate) customer_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
383    pub(crate) destination: ::std::option::Option<crate::types::AnalysisComponent>,
384    pub(crate) destination_vpc: ::std::option::Option<crate::types::AnalysisComponent>,
385    pub(crate) direction: ::std::option::Option<::std::string::String>,
386    pub(crate) explanation_code: ::std::option::Option<::std::string::String>,
387    pub(crate) ingress_route_table: ::std::option::Option<crate::types::AnalysisComponent>,
388    pub(crate) internet_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
389    pub(crate) load_balancer_arn: ::std::option::Option<::std::string::String>,
390    pub(crate) classic_load_balancer_listener: ::std::option::Option<crate::types::AnalysisLoadBalancerListener>,
391    pub(crate) load_balancer_listener_port: ::std::option::Option<i32>,
392    pub(crate) load_balancer_target: ::std::option::Option<crate::types::AnalysisLoadBalancerTarget>,
393    pub(crate) load_balancer_target_group: ::std::option::Option<crate::types::AnalysisComponent>,
394    pub(crate) load_balancer_target_groups: ::std::option::Option<::std::vec::Vec<crate::types::AnalysisComponent>>,
395    pub(crate) load_balancer_target_port: ::std::option::Option<i32>,
396    pub(crate) elastic_load_balancer_listener: ::std::option::Option<crate::types::AnalysisComponent>,
397    pub(crate) missing_component: ::std::option::Option<::std::string::String>,
398    pub(crate) nat_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
399    pub(crate) network_interface: ::std::option::Option<crate::types::AnalysisComponent>,
400    pub(crate) packet_field: ::std::option::Option<::std::string::String>,
401    pub(crate) vpc_peering_connection: ::std::option::Option<crate::types::AnalysisComponent>,
402    pub(crate) port: ::std::option::Option<i32>,
403    pub(crate) port_ranges: ::std::option::Option<::std::vec::Vec<crate::types::PortRange>>,
404    pub(crate) prefix_list: ::std::option::Option<crate::types::AnalysisComponent>,
405    pub(crate) protocols: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
406    pub(crate) route_table_route: ::std::option::Option<crate::types::AnalysisRouteTableRoute>,
407    pub(crate) route_table: ::std::option::Option<crate::types::AnalysisComponent>,
408    pub(crate) security_group: ::std::option::Option<crate::types::AnalysisComponent>,
409    pub(crate) security_group_rule: ::std::option::Option<crate::types::AnalysisSecurityGroupRule>,
410    pub(crate) security_groups: ::std::option::Option<::std::vec::Vec<crate::types::AnalysisComponent>>,
411    pub(crate) source_vpc: ::std::option::Option<crate::types::AnalysisComponent>,
412    pub(crate) state: ::std::option::Option<::std::string::String>,
413    pub(crate) subnet: ::std::option::Option<crate::types::AnalysisComponent>,
414    pub(crate) subnet_route_table: ::std::option::Option<crate::types::AnalysisComponent>,
415    pub(crate) vpc: ::std::option::Option<crate::types::AnalysisComponent>,
416    pub(crate) vpc_endpoint: ::std::option::Option<crate::types::AnalysisComponent>,
417    pub(crate) vpn_connection: ::std::option::Option<crate::types::AnalysisComponent>,
418    pub(crate) vpn_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
419    pub(crate) transit_gateway: ::std::option::Option<crate::types::AnalysisComponent>,
420    pub(crate) transit_gateway_route_table: ::std::option::Option<crate::types::AnalysisComponent>,
421    pub(crate) transit_gateway_route_table_route: ::std::option::Option<crate::types::TransitGatewayRouteTableRoute>,
422    pub(crate) transit_gateway_attachment: ::std::option::Option<crate::types::AnalysisComponent>,
423    pub(crate) component_account: ::std::option::Option<::std::string::String>,
424    pub(crate) component_region: ::std::option::Option<::std::string::String>,
425    pub(crate) firewall_stateless_rule: ::std::option::Option<crate::types::FirewallStatelessRule>,
426    pub(crate) firewall_stateful_rule: ::std::option::Option<crate::types::FirewallStatefulRule>,
427}
428impl ExplanationBuilder {
429    /// <p>The network ACL.</p>
430    pub fn acl(mut self, input: crate::types::AnalysisComponent) -> Self {
431        self.acl = ::std::option::Option::Some(input);
432        self
433    }
434    /// <p>The network ACL.</p>
435    pub fn set_acl(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
436        self.acl = input;
437        self
438    }
439    /// <p>The network ACL.</p>
440    pub fn get_acl(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
441        &self.acl
442    }
443    /// <p>The network ACL rule.</p>
444    pub fn acl_rule(mut self, input: crate::types::AnalysisAclRule) -> Self {
445        self.acl_rule = ::std::option::Option::Some(input);
446        self
447    }
448    /// <p>The network ACL rule.</p>
449    pub fn set_acl_rule(mut self, input: ::std::option::Option<crate::types::AnalysisAclRule>) -> Self {
450        self.acl_rule = input;
451        self
452    }
453    /// <p>The network ACL rule.</p>
454    pub fn get_acl_rule(&self) -> &::std::option::Option<crate::types::AnalysisAclRule> {
455        &self.acl_rule
456    }
457    /// <p>The IPv4 address, in CIDR notation.</p>
458    pub fn address(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
459        self.address = ::std::option::Option::Some(input.into());
460        self
461    }
462    /// <p>The IPv4 address, in CIDR notation.</p>
463    pub fn set_address(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
464        self.address = input;
465        self
466    }
467    /// <p>The IPv4 address, in CIDR notation.</p>
468    pub fn get_address(&self) -> &::std::option::Option<::std::string::String> {
469        &self.address
470    }
471    /// Appends an item to `addresses`.
472    ///
473    /// To override the contents of this collection use [`set_addresses`](Self::set_addresses).
474    ///
475    /// <p>The IPv4 addresses, in CIDR notation.</p>
476    pub fn addresses(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
477        let mut v = self.addresses.unwrap_or_default();
478        v.push(input.into());
479        self.addresses = ::std::option::Option::Some(v);
480        self
481    }
482    /// <p>The IPv4 addresses, in CIDR notation.</p>
483    pub fn set_addresses(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
484        self.addresses = input;
485        self
486    }
487    /// <p>The IPv4 addresses, in CIDR notation.</p>
488    pub fn get_addresses(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
489        &self.addresses
490    }
491    /// <p>The resource to which the component is attached.</p>
492    pub fn attached_to(mut self, input: crate::types::AnalysisComponent) -> Self {
493        self.attached_to = ::std::option::Option::Some(input);
494        self
495    }
496    /// <p>The resource to which the component is attached.</p>
497    pub fn set_attached_to(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
498        self.attached_to = input;
499        self
500    }
501    /// <p>The resource to which the component is attached.</p>
502    pub fn get_attached_to(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
503        &self.attached_to
504    }
505    /// Appends an item to `availability_zones`.
506    ///
507    /// To override the contents of this collection use [`set_availability_zones`](Self::set_availability_zones).
508    ///
509    /// <p>The Availability Zones.</p>
510    pub fn availability_zones(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
511        let mut v = self.availability_zones.unwrap_or_default();
512        v.push(input.into());
513        self.availability_zones = ::std::option::Option::Some(v);
514        self
515    }
516    /// <p>The Availability Zones.</p>
517    pub fn set_availability_zones(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
518        self.availability_zones = input;
519        self
520    }
521    /// <p>The Availability Zones.</p>
522    pub fn get_availability_zones(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
523        &self.availability_zones
524    }
525    /// Appends an item to `availability_zone_ids`.
526    ///
527    /// To override the contents of this collection use [`set_availability_zone_ids`](Self::set_availability_zone_ids).
528    ///
529    /// <p>The IDs of the Availability Zones.</p>
530    pub fn availability_zone_ids(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
531        let mut v = self.availability_zone_ids.unwrap_or_default();
532        v.push(input.into());
533        self.availability_zone_ids = ::std::option::Option::Some(v);
534        self
535    }
536    /// <p>The IDs of the Availability Zones.</p>
537    pub fn set_availability_zone_ids(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
538        self.availability_zone_ids = input;
539        self
540    }
541    /// <p>The IDs of the Availability Zones.</p>
542    pub fn get_availability_zone_ids(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
543        &self.availability_zone_ids
544    }
545    /// Appends an item to `cidrs`.
546    ///
547    /// To override the contents of this collection use [`set_cidrs`](Self::set_cidrs).
548    ///
549    /// <p>The CIDR ranges.</p>
550    pub fn cidrs(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
551        let mut v = self.cidrs.unwrap_or_default();
552        v.push(input.into());
553        self.cidrs = ::std::option::Option::Some(v);
554        self
555    }
556    /// <p>The CIDR ranges.</p>
557    pub fn set_cidrs(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
558        self.cidrs = input;
559        self
560    }
561    /// <p>The CIDR ranges.</p>
562    pub fn get_cidrs(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
563        &self.cidrs
564    }
565    /// <p>The component.</p>
566    pub fn component(mut self, input: crate::types::AnalysisComponent) -> Self {
567        self.component = ::std::option::Option::Some(input);
568        self
569    }
570    /// <p>The component.</p>
571    pub fn set_component(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
572        self.component = input;
573        self
574    }
575    /// <p>The component.</p>
576    pub fn get_component(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
577        &self.component
578    }
579    /// <p>The customer gateway.</p>
580    pub fn customer_gateway(mut self, input: crate::types::AnalysisComponent) -> Self {
581        self.customer_gateway = ::std::option::Option::Some(input);
582        self
583    }
584    /// <p>The customer gateway.</p>
585    pub fn set_customer_gateway(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
586        self.customer_gateway = input;
587        self
588    }
589    /// <p>The customer gateway.</p>
590    pub fn get_customer_gateway(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
591        &self.customer_gateway
592    }
593    /// <p>The destination.</p>
594    pub fn destination(mut self, input: crate::types::AnalysisComponent) -> Self {
595        self.destination = ::std::option::Option::Some(input);
596        self
597    }
598    /// <p>The destination.</p>
599    pub fn set_destination(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
600        self.destination = input;
601        self
602    }
603    /// <p>The destination.</p>
604    pub fn get_destination(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
605        &self.destination
606    }
607    /// <p>The destination VPC.</p>
608    pub fn destination_vpc(mut self, input: crate::types::AnalysisComponent) -> Self {
609        self.destination_vpc = ::std::option::Option::Some(input);
610        self
611    }
612    /// <p>The destination VPC.</p>
613    pub fn set_destination_vpc(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
614        self.destination_vpc = input;
615        self
616    }
617    /// <p>The destination VPC.</p>
618    pub fn get_destination_vpc(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
619        &self.destination_vpc
620    }
621    /// <p>The direction. The following are the possible values:</p>
622    /// <ul>
623    /// <li>
624    /// <p>egress</p></li>
625    /// <li>
626    /// <p>ingress</p></li>
627    /// </ul>
628    pub fn direction(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
629        self.direction = ::std::option::Option::Some(input.into());
630        self
631    }
632    /// <p>The direction. The following are the possible values:</p>
633    /// <ul>
634    /// <li>
635    /// <p>egress</p></li>
636    /// <li>
637    /// <p>ingress</p></li>
638    /// </ul>
639    pub fn set_direction(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
640        self.direction = input;
641        self
642    }
643    /// <p>The direction. The following are the possible values:</p>
644    /// <ul>
645    /// <li>
646    /// <p>egress</p></li>
647    /// <li>
648    /// <p>ingress</p></li>
649    /// </ul>
650    pub fn get_direction(&self) -> &::std::option::Option<::std::string::String> {
651        &self.direction
652    }
653    /// <p>The explanation code.</p>
654    pub fn explanation_code(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
655        self.explanation_code = ::std::option::Option::Some(input.into());
656        self
657    }
658    /// <p>The explanation code.</p>
659    pub fn set_explanation_code(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
660        self.explanation_code = input;
661        self
662    }
663    /// <p>The explanation code.</p>
664    pub fn get_explanation_code(&self) -> &::std::option::Option<::std::string::String> {
665        &self.explanation_code
666    }
667    /// <p>The route table.</p>
668    pub fn ingress_route_table(mut self, input: crate::types::AnalysisComponent) -> Self {
669        self.ingress_route_table = ::std::option::Option::Some(input);
670        self
671    }
672    /// <p>The route table.</p>
673    pub fn set_ingress_route_table(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
674        self.ingress_route_table = input;
675        self
676    }
677    /// <p>The route table.</p>
678    pub fn get_ingress_route_table(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
679        &self.ingress_route_table
680    }
681    /// <p>The internet gateway.</p>
682    pub fn internet_gateway(mut self, input: crate::types::AnalysisComponent) -> Self {
683        self.internet_gateway = ::std::option::Option::Some(input);
684        self
685    }
686    /// <p>The internet gateway.</p>
687    pub fn set_internet_gateway(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
688        self.internet_gateway = input;
689        self
690    }
691    /// <p>The internet gateway.</p>
692    pub fn get_internet_gateway(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
693        &self.internet_gateway
694    }
695    /// <p>The Amazon Resource Name (ARN) of the load balancer.</p>
696    pub fn load_balancer_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
697        self.load_balancer_arn = ::std::option::Option::Some(input.into());
698        self
699    }
700    /// <p>The Amazon Resource Name (ARN) of the load balancer.</p>
701    pub fn set_load_balancer_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
702        self.load_balancer_arn = input;
703        self
704    }
705    /// <p>The Amazon Resource Name (ARN) of the load balancer.</p>
706    pub fn get_load_balancer_arn(&self) -> &::std::option::Option<::std::string::String> {
707        &self.load_balancer_arn
708    }
709    /// <p>The listener for a Classic Load Balancer.</p>
710    pub fn classic_load_balancer_listener(mut self, input: crate::types::AnalysisLoadBalancerListener) -> Self {
711        self.classic_load_balancer_listener = ::std::option::Option::Some(input);
712        self
713    }
714    /// <p>The listener for a Classic Load Balancer.</p>
715    pub fn set_classic_load_balancer_listener(mut self, input: ::std::option::Option<crate::types::AnalysisLoadBalancerListener>) -> Self {
716        self.classic_load_balancer_listener = input;
717        self
718    }
719    /// <p>The listener for a Classic Load Balancer.</p>
720    pub fn get_classic_load_balancer_listener(&self) -> &::std::option::Option<crate::types::AnalysisLoadBalancerListener> {
721        &self.classic_load_balancer_listener
722    }
723    /// <p>The listener port of the load balancer.</p>
724    pub fn load_balancer_listener_port(mut self, input: i32) -> Self {
725        self.load_balancer_listener_port = ::std::option::Option::Some(input);
726        self
727    }
728    /// <p>The listener port of the load balancer.</p>
729    pub fn set_load_balancer_listener_port(mut self, input: ::std::option::Option<i32>) -> Self {
730        self.load_balancer_listener_port = input;
731        self
732    }
733    /// <p>The listener port of the load balancer.</p>
734    pub fn get_load_balancer_listener_port(&self) -> &::std::option::Option<i32> {
735        &self.load_balancer_listener_port
736    }
737    /// <p>The target.</p>
738    pub fn load_balancer_target(mut self, input: crate::types::AnalysisLoadBalancerTarget) -> Self {
739        self.load_balancer_target = ::std::option::Option::Some(input);
740        self
741    }
742    /// <p>The target.</p>
743    pub fn set_load_balancer_target(mut self, input: ::std::option::Option<crate::types::AnalysisLoadBalancerTarget>) -> Self {
744        self.load_balancer_target = input;
745        self
746    }
747    /// <p>The target.</p>
748    pub fn get_load_balancer_target(&self) -> &::std::option::Option<crate::types::AnalysisLoadBalancerTarget> {
749        &self.load_balancer_target
750    }
751    /// <p>The target group.</p>
752    pub fn load_balancer_target_group(mut self, input: crate::types::AnalysisComponent) -> Self {
753        self.load_balancer_target_group = ::std::option::Option::Some(input);
754        self
755    }
756    /// <p>The target group.</p>
757    pub fn set_load_balancer_target_group(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
758        self.load_balancer_target_group = input;
759        self
760    }
761    /// <p>The target group.</p>
762    pub fn get_load_balancer_target_group(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
763        &self.load_balancer_target_group
764    }
765    /// Appends an item to `load_balancer_target_groups`.
766    ///
767    /// To override the contents of this collection use [`set_load_balancer_target_groups`](Self::set_load_balancer_target_groups).
768    ///
769    /// <p>The target groups.</p>
770    pub fn load_balancer_target_groups(mut self, input: crate::types::AnalysisComponent) -> Self {
771        let mut v = self.load_balancer_target_groups.unwrap_or_default();
772        v.push(input);
773        self.load_balancer_target_groups = ::std::option::Option::Some(v);
774        self
775    }
776    /// <p>The target groups.</p>
777    pub fn set_load_balancer_target_groups(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::AnalysisComponent>>) -> Self {
778        self.load_balancer_target_groups = input;
779        self
780    }
781    /// <p>The target groups.</p>
782    pub fn get_load_balancer_target_groups(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::AnalysisComponent>> {
783        &self.load_balancer_target_groups
784    }
785    /// <p>The target port.</p>
786    pub fn load_balancer_target_port(mut self, input: i32) -> Self {
787        self.load_balancer_target_port = ::std::option::Option::Some(input);
788        self
789    }
790    /// <p>The target port.</p>
791    pub fn set_load_balancer_target_port(mut self, input: ::std::option::Option<i32>) -> Self {
792        self.load_balancer_target_port = input;
793        self
794    }
795    /// <p>The target port.</p>
796    pub fn get_load_balancer_target_port(&self) -> &::std::option::Option<i32> {
797        &self.load_balancer_target_port
798    }
799    /// <p>The load balancer listener.</p>
800    pub fn elastic_load_balancer_listener(mut self, input: crate::types::AnalysisComponent) -> Self {
801        self.elastic_load_balancer_listener = ::std::option::Option::Some(input);
802        self
803    }
804    /// <p>The load balancer listener.</p>
805    pub fn set_elastic_load_balancer_listener(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
806        self.elastic_load_balancer_listener = input;
807        self
808    }
809    /// <p>The load balancer listener.</p>
810    pub fn get_elastic_load_balancer_listener(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
811        &self.elastic_load_balancer_listener
812    }
813    /// <p>The missing component.</p>
814    pub fn missing_component(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
815        self.missing_component = ::std::option::Option::Some(input.into());
816        self
817    }
818    /// <p>The missing component.</p>
819    pub fn set_missing_component(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
820        self.missing_component = input;
821        self
822    }
823    /// <p>The missing component.</p>
824    pub fn get_missing_component(&self) -> &::std::option::Option<::std::string::String> {
825        &self.missing_component
826    }
827    /// <p>The NAT gateway.</p>
828    pub fn nat_gateway(mut self, input: crate::types::AnalysisComponent) -> Self {
829        self.nat_gateway = ::std::option::Option::Some(input);
830        self
831    }
832    /// <p>The NAT gateway.</p>
833    pub fn set_nat_gateway(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
834        self.nat_gateway = input;
835        self
836    }
837    /// <p>The NAT gateway.</p>
838    pub fn get_nat_gateway(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
839        &self.nat_gateway
840    }
841    /// <p>The network interface.</p>
842    pub fn network_interface(mut self, input: crate::types::AnalysisComponent) -> Self {
843        self.network_interface = ::std::option::Option::Some(input);
844        self
845    }
846    /// <p>The network interface.</p>
847    pub fn set_network_interface(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
848        self.network_interface = input;
849        self
850    }
851    /// <p>The network interface.</p>
852    pub fn get_network_interface(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
853        &self.network_interface
854    }
855    /// <p>The packet field.</p>
856    pub fn packet_field(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
857        self.packet_field = ::std::option::Option::Some(input.into());
858        self
859    }
860    /// <p>The packet field.</p>
861    pub fn set_packet_field(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
862        self.packet_field = input;
863        self
864    }
865    /// <p>The packet field.</p>
866    pub fn get_packet_field(&self) -> &::std::option::Option<::std::string::String> {
867        &self.packet_field
868    }
869    /// <p>The VPC peering connection.</p>
870    pub fn vpc_peering_connection(mut self, input: crate::types::AnalysisComponent) -> Self {
871        self.vpc_peering_connection = ::std::option::Option::Some(input);
872        self
873    }
874    /// <p>The VPC peering connection.</p>
875    pub fn set_vpc_peering_connection(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
876        self.vpc_peering_connection = input;
877        self
878    }
879    /// <p>The VPC peering connection.</p>
880    pub fn get_vpc_peering_connection(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
881        &self.vpc_peering_connection
882    }
883    /// <p>The port.</p>
884    pub fn port(mut self, input: i32) -> Self {
885        self.port = ::std::option::Option::Some(input);
886        self
887    }
888    /// <p>The port.</p>
889    pub fn set_port(mut self, input: ::std::option::Option<i32>) -> Self {
890        self.port = input;
891        self
892    }
893    /// <p>The port.</p>
894    pub fn get_port(&self) -> &::std::option::Option<i32> {
895        &self.port
896    }
897    /// Appends an item to `port_ranges`.
898    ///
899    /// To override the contents of this collection use [`set_port_ranges`](Self::set_port_ranges).
900    ///
901    /// <p>The port ranges.</p>
902    pub fn port_ranges(mut self, input: crate::types::PortRange) -> Self {
903        let mut v = self.port_ranges.unwrap_or_default();
904        v.push(input);
905        self.port_ranges = ::std::option::Option::Some(v);
906        self
907    }
908    /// <p>The port ranges.</p>
909    pub fn set_port_ranges(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::PortRange>>) -> Self {
910        self.port_ranges = input;
911        self
912    }
913    /// <p>The port ranges.</p>
914    pub fn get_port_ranges(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::PortRange>> {
915        &self.port_ranges
916    }
917    /// <p>The prefix list.</p>
918    pub fn prefix_list(mut self, input: crate::types::AnalysisComponent) -> Self {
919        self.prefix_list = ::std::option::Option::Some(input);
920        self
921    }
922    /// <p>The prefix list.</p>
923    pub fn set_prefix_list(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
924        self.prefix_list = input;
925        self
926    }
927    /// <p>The prefix list.</p>
928    pub fn get_prefix_list(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
929        &self.prefix_list
930    }
931    /// Appends an item to `protocols`.
932    ///
933    /// To override the contents of this collection use [`set_protocols`](Self::set_protocols).
934    ///
935    /// <p>The protocols.</p>
936    pub fn protocols(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
937        let mut v = self.protocols.unwrap_or_default();
938        v.push(input.into());
939        self.protocols = ::std::option::Option::Some(v);
940        self
941    }
942    /// <p>The protocols.</p>
943    pub fn set_protocols(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
944        self.protocols = input;
945        self
946    }
947    /// <p>The protocols.</p>
948    pub fn get_protocols(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
949        &self.protocols
950    }
951    /// <p>The route table route.</p>
952    pub fn route_table_route(mut self, input: crate::types::AnalysisRouteTableRoute) -> Self {
953        self.route_table_route = ::std::option::Option::Some(input);
954        self
955    }
956    /// <p>The route table route.</p>
957    pub fn set_route_table_route(mut self, input: ::std::option::Option<crate::types::AnalysisRouteTableRoute>) -> Self {
958        self.route_table_route = input;
959        self
960    }
961    /// <p>The route table route.</p>
962    pub fn get_route_table_route(&self) -> &::std::option::Option<crate::types::AnalysisRouteTableRoute> {
963        &self.route_table_route
964    }
965    /// <p>The route table.</p>
966    pub fn route_table(mut self, input: crate::types::AnalysisComponent) -> Self {
967        self.route_table = ::std::option::Option::Some(input);
968        self
969    }
970    /// <p>The route table.</p>
971    pub fn set_route_table(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
972        self.route_table = input;
973        self
974    }
975    /// <p>The route table.</p>
976    pub fn get_route_table(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
977        &self.route_table
978    }
979    /// <p>The security group.</p>
980    pub fn security_group(mut self, input: crate::types::AnalysisComponent) -> Self {
981        self.security_group = ::std::option::Option::Some(input);
982        self
983    }
984    /// <p>The security group.</p>
985    pub fn set_security_group(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
986        self.security_group = input;
987        self
988    }
989    /// <p>The security group.</p>
990    pub fn get_security_group(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
991        &self.security_group
992    }
993    /// <p>The security group rule.</p>
994    pub fn security_group_rule(mut self, input: crate::types::AnalysisSecurityGroupRule) -> Self {
995        self.security_group_rule = ::std::option::Option::Some(input);
996        self
997    }
998    /// <p>The security group rule.</p>
999    pub fn set_security_group_rule(mut self, input: ::std::option::Option<crate::types::AnalysisSecurityGroupRule>) -> Self {
1000        self.security_group_rule = input;
1001        self
1002    }
1003    /// <p>The security group rule.</p>
1004    pub fn get_security_group_rule(&self) -> &::std::option::Option<crate::types::AnalysisSecurityGroupRule> {
1005        &self.security_group_rule
1006    }
1007    /// Appends an item to `security_groups`.
1008    ///
1009    /// To override the contents of this collection use [`set_security_groups`](Self::set_security_groups).
1010    ///
1011    /// <p>The security groups.</p>
1012    pub fn security_groups(mut self, input: crate::types::AnalysisComponent) -> Self {
1013        let mut v = self.security_groups.unwrap_or_default();
1014        v.push(input);
1015        self.security_groups = ::std::option::Option::Some(v);
1016        self
1017    }
1018    /// <p>The security groups.</p>
1019    pub fn set_security_groups(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::AnalysisComponent>>) -> Self {
1020        self.security_groups = input;
1021        self
1022    }
1023    /// <p>The security groups.</p>
1024    pub fn get_security_groups(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::AnalysisComponent>> {
1025        &self.security_groups
1026    }
1027    /// <p>The source VPC.</p>
1028    pub fn source_vpc(mut self, input: crate::types::AnalysisComponent) -> Self {
1029        self.source_vpc = ::std::option::Option::Some(input);
1030        self
1031    }
1032    /// <p>The source VPC.</p>
1033    pub fn set_source_vpc(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1034        self.source_vpc = input;
1035        self
1036    }
1037    /// <p>The source VPC.</p>
1038    pub fn get_source_vpc(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1039        &self.source_vpc
1040    }
1041    /// <p>The state.</p>
1042    pub fn state(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1043        self.state = ::std::option::Option::Some(input.into());
1044        self
1045    }
1046    /// <p>The state.</p>
1047    pub fn set_state(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1048        self.state = input;
1049        self
1050    }
1051    /// <p>The state.</p>
1052    pub fn get_state(&self) -> &::std::option::Option<::std::string::String> {
1053        &self.state
1054    }
1055    /// <p>The subnet.</p>
1056    pub fn subnet(mut self, input: crate::types::AnalysisComponent) -> Self {
1057        self.subnet = ::std::option::Option::Some(input);
1058        self
1059    }
1060    /// <p>The subnet.</p>
1061    pub fn set_subnet(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1062        self.subnet = input;
1063        self
1064    }
1065    /// <p>The subnet.</p>
1066    pub fn get_subnet(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1067        &self.subnet
1068    }
1069    /// <p>The route table for the subnet.</p>
1070    pub fn subnet_route_table(mut self, input: crate::types::AnalysisComponent) -> Self {
1071        self.subnet_route_table = ::std::option::Option::Some(input);
1072        self
1073    }
1074    /// <p>The route table for the subnet.</p>
1075    pub fn set_subnet_route_table(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1076        self.subnet_route_table = input;
1077        self
1078    }
1079    /// <p>The route table for the subnet.</p>
1080    pub fn get_subnet_route_table(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1081        &self.subnet_route_table
1082    }
1083    /// <p>The component VPC.</p>
1084    pub fn vpc(mut self, input: crate::types::AnalysisComponent) -> Self {
1085        self.vpc = ::std::option::Option::Some(input);
1086        self
1087    }
1088    /// <p>The component VPC.</p>
1089    pub fn set_vpc(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1090        self.vpc = input;
1091        self
1092    }
1093    /// <p>The component VPC.</p>
1094    pub fn get_vpc(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1095        &self.vpc
1096    }
1097    /// <p>The VPC endpoint.</p>
1098    pub fn vpc_endpoint(mut self, input: crate::types::AnalysisComponent) -> Self {
1099        self.vpc_endpoint = ::std::option::Option::Some(input);
1100        self
1101    }
1102    /// <p>The VPC endpoint.</p>
1103    pub fn set_vpc_endpoint(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1104        self.vpc_endpoint = input;
1105        self
1106    }
1107    /// <p>The VPC endpoint.</p>
1108    pub fn get_vpc_endpoint(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1109        &self.vpc_endpoint
1110    }
1111    /// <p>The VPN connection.</p>
1112    pub fn vpn_connection(mut self, input: crate::types::AnalysisComponent) -> Self {
1113        self.vpn_connection = ::std::option::Option::Some(input);
1114        self
1115    }
1116    /// <p>The VPN connection.</p>
1117    pub fn set_vpn_connection(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1118        self.vpn_connection = input;
1119        self
1120    }
1121    /// <p>The VPN connection.</p>
1122    pub fn get_vpn_connection(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1123        &self.vpn_connection
1124    }
1125    /// <p>The VPN gateway.</p>
1126    pub fn vpn_gateway(mut self, input: crate::types::AnalysisComponent) -> Self {
1127        self.vpn_gateway = ::std::option::Option::Some(input);
1128        self
1129    }
1130    /// <p>The VPN gateway.</p>
1131    pub fn set_vpn_gateway(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1132        self.vpn_gateway = input;
1133        self
1134    }
1135    /// <p>The VPN gateway.</p>
1136    pub fn get_vpn_gateway(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1137        &self.vpn_gateway
1138    }
1139    /// <p>The transit gateway.</p>
1140    pub fn transit_gateway(mut self, input: crate::types::AnalysisComponent) -> Self {
1141        self.transit_gateway = ::std::option::Option::Some(input);
1142        self
1143    }
1144    /// <p>The transit gateway.</p>
1145    pub fn set_transit_gateway(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1146        self.transit_gateway = input;
1147        self
1148    }
1149    /// <p>The transit gateway.</p>
1150    pub fn get_transit_gateway(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1151        &self.transit_gateway
1152    }
1153    /// <p>The transit gateway route table.</p>
1154    pub fn transit_gateway_route_table(mut self, input: crate::types::AnalysisComponent) -> Self {
1155        self.transit_gateway_route_table = ::std::option::Option::Some(input);
1156        self
1157    }
1158    /// <p>The transit gateway route table.</p>
1159    pub fn set_transit_gateway_route_table(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1160        self.transit_gateway_route_table = input;
1161        self
1162    }
1163    /// <p>The transit gateway route table.</p>
1164    pub fn get_transit_gateway_route_table(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1165        &self.transit_gateway_route_table
1166    }
1167    /// <p>The transit gateway route table route.</p>
1168    pub fn transit_gateway_route_table_route(mut self, input: crate::types::TransitGatewayRouteTableRoute) -> Self {
1169        self.transit_gateway_route_table_route = ::std::option::Option::Some(input);
1170        self
1171    }
1172    /// <p>The transit gateway route table route.</p>
1173    pub fn set_transit_gateway_route_table_route(mut self, input: ::std::option::Option<crate::types::TransitGatewayRouteTableRoute>) -> Self {
1174        self.transit_gateway_route_table_route = input;
1175        self
1176    }
1177    /// <p>The transit gateway route table route.</p>
1178    pub fn get_transit_gateway_route_table_route(&self) -> &::std::option::Option<crate::types::TransitGatewayRouteTableRoute> {
1179        &self.transit_gateway_route_table_route
1180    }
1181    /// <p>The transit gateway attachment.</p>
1182    pub fn transit_gateway_attachment(mut self, input: crate::types::AnalysisComponent) -> Self {
1183        self.transit_gateway_attachment = ::std::option::Option::Some(input);
1184        self
1185    }
1186    /// <p>The transit gateway attachment.</p>
1187    pub fn set_transit_gateway_attachment(mut self, input: ::std::option::Option<crate::types::AnalysisComponent>) -> Self {
1188        self.transit_gateway_attachment = input;
1189        self
1190    }
1191    /// <p>The transit gateway attachment.</p>
1192    pub fn get_transit_gateway_attachment(&self) -> &::std::option::Option<crate::types::AnalysisComponent> {
1193        &self.transit_gateway_attachment
1194    }
1195    /// <p>The Amazon Web Services account for the component.</p>
1196    pub fn component_account(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1197        self.component_account = ::std::option::Option::Some(input.into());
1198        self
1199    }
1200    /// <p>The Amazon Web Services account for the component.</p>
1201    pub fn set_component_account(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1202        self.component_account = input;
1203        self
1204    }
1205    /// <p>The Amazon Web Services account for the component.</p>
1206    pub fn get_component_account(&self) -> &::std::option::Option<::std::string::String> {
1207        &self.component_account
1208    }
1209    /// <p>The Region for the component.</p>
1210    pub fn component_region(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
1211        self.component_region = ::std::option::Option::Some(input.into());
1212        self
1213    }
1214    /// <p>The Region for the component.</p>
1215    pub fn set_component_region(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
1216        self.component_region = input;
1217        self
1218    }
1219    /// <p>The Region for the component.</p>
1220    pub fn get_component_region(&self) -> &::std::option::Option<::std::string::String> {
1221        &self.component_region
1222    }
1223    /// <p>The Network Firewall stateless rule.</p>
1224    pub fn firewall_stateless_rule(mut self, input: crate::types::FirewallStatelessRule) -> Self {
1225        self.firewall_stateless_rule = ::std::option::Option::Some(input);
1226        self
1227    }
1228    /// <p>The Network Firewall stateless rule.</p>
1229    pub fn set_firewall_stateless_rule(mut self, input: ::std::option::Option<crate::types::FirewallStatelessRule>) -> Self {
1230        self.firewall_stateless_rule = input;
1231        self
1232    }
1233    /// <p>The Network Firewall stateless rule.</p>
1234    pub fn get_firewall_stateless_rule(&self) -> &::std::option::Option<crate::types::FirewallStatelessRule> {
1235        &self.firewall_stateless_rule
1236    }
1237    /// <p>The Network Firewall stateful rule.</p>
1238    pub fn firewall_stateful_rule(mut self, input: crate::types::FirewallStatefulRule) -> Self {
1239        self.firewall_stateful_rule = ::std::option::Option::Some(input);
1240        self
1241    }
1242    /// <p>The Network Firewall stateful rule.</p>
1243    pub fn set_firewall_stateful_rule(mut self, input: ::std::option::Option<crate::types::FirewallStatefulRule>) -> Self {
1244        self.firewall_stateful_rule = input;
1245        self
1246    }
1247    /// <p>The Network Firewall stateful rule.</p>
1248    pub fn get_firewall_stateful_rule(&self) -> &::std::option::Option<crate::types::FirewallStatefulRule> {
1249        &self.firewall_stateful_rule
1250    }
1251    /// Consumes the builder and constructs a [`Explanation`](crate::types::Explanation).
1252    pub fn build(self) -> crate::types::Explanation {
1253        crate::types::Explanation {
1254            acl: self.acl,
1255            acl_rule: self.acl_rule,
1256            address: self.address,
1257            addresses: self.addresses,
1258            attached_to: self.attached_to,
1259            availability_zones: self.availability_zones,
1260            availability_zone_ids: self.availability_zone_ids,
1261            cidrs: self.cidrs,
1262            component: self.component,
1263            customer_gateway: self.customer_gateway,
1264            destination: self.destination,
1265            destination_vpc: self.destination_vpc,
1266            direction: self.direction,
1267            explanation_code: self.explanation_code,
1268            ingress_route_table: self.ingress_route_table,
1269            internet_gateway: self.internet_gateway,
1270            load_balancer_arn: self.load_balancer_arn,
1271            classic_load_balancer_listener: self.classic_load_balancer_listener,
1272            load_balancer_listener_port: self.load_balancer_listener_port,
1273            load_balancer_target: self.load_balancer_target,
1274            load_balancer_target_group: self.load_balancer_target_group,
1275            load_balancer_target_groups: self.load_balancer_target_groups,
1276            load_balancer_target_port: self.load_balancer_target_port,
1277            elastic_load_balancer_listener: self.elastic_load_balancer_listener,
1278            missing_component: self.missing_component,
1279            nat_gateway: self.nat_gateway,
1280            network_interface: self.network_interface,
1281            packet_field: self.packet_field,
1282            vpc_peering_connection: self.vpc_peering_connection,
1283            port: self.port,
1284            port_ranges: self.port_ranges,
1285            prefix_list: self.prefix_list,
1286            protocols: self.protocols,
1287            route_table_route: self.route_table_route,
1288            route_table: self.route_table,
1289            security_group: self.security_group,
1290            security_group_rule: self.security_group_rule,
1291            security_groups: self.security_groups,
1292            source_vpc: self.source_vpc,
1293            state: self.state,
1294            subnet: self.subnet,
1295            subnet_route_table: self.subnet_route_table,
1296            vpc: self.vpc,
1297            vpc_endpoint: self.vpc_endpoint,
1298            vpn_connection: self.vpn_connection,
1299            vpn_gateway: self.vpn_gateway,
1300            transit_gateway: self.transit_gateway,
1301            transit_gateway_route_table: self.transit_gateway_route_table,
1302            transit_gateway_route_table_route: self.transit_gateway_route_table_route,
1303            transit_gateway_attachment: self.transit_gateway_attachment,
1304            component_account: self.component_account,
1305            component_region: self.component_region,
1306            firewall_stateless_rule: self.firewall_stateless_rule,
1307            firewall_stateful_rule: self.firewall_stateful_rule,
1308        }
1309    }
1310}