Skip to main content

origincloud_network/generated/
origincloud.network.v1beta1.rs

1// Code generated by origincloud-sdk-generator. DO NOT EDIT.
2// source: origincloud/network/v1beta1/acl.proto
3// source: origincloud/network/v1beta1/acl_association.proto
4// source: origincloud/network/v1beta1/acl_rule.proto
5// source: origincloud/network/v1beta1/dns_policy.proto
6// source: origincloud/network/v1beta1/dns_policy_association.proto
7// source: origincloud/network/v1beta1/floating_ip.proto
8// source: origincloud/network/v1beta1/floating_ip_association.proto
9// source: origincloud/network/v1beta1/internet_gateway.proto
10// source: origincloud/network/v1beta1/nat_gateway.proto
11// source: origincloud/network/v1beta1/network_interface.proto
12// source: origincloud/network/v1beta1/route.proto
13// source: origincloud/network/v1beta1/route_table.proto
14// source: origincloud/network/v1beta1/route_table_association.proto
15// source: origincloud/network/v1beta1/security_group.proto
16// source: origincloud/network/v1beta1/security_group_association.proto
17// source: origincloud/network/v1beta1/security_group_rule.proto
18// source: origincloud/network/v1beta1/subnet.proto
19// source: origincloud/network/v1beta1/vpc.proto
20
21/// Stateless rules for the traffic in and out of the subnets associated with
22/// the ACL.
23#[derive(Clone, PartialEq, ::prost::Message)]
24pub struct Acl {
25    /// The ACL's resource name.
26    #[prost(string, tag = "1")]
27    pub name: ::prost::alloc::string::String,
28    /// The ACL's URN, the identifier access policies and the audit log use.
29    #[prost(string, tag = "2")]
30    pub urn: ::prost::alloc::string::String,
31    /// The VPC the ACL belongs to, in the same project and region.
32    #[prost(string, tag = "3")]
33    pub vpc: ::prost::alloc::string::String,
34    /// Whether the platform created the ACL with the VPC. Only the project's
35    /// default VPC has such resources. It can't be deleted, and goes with its
36    /// VPC.
37    #[prost(bool, tag = "4")]
38    pub vpc_default: bool,
39    /// When the ACL was created.
40    #[prost(message, optional, tag = "5")]
41    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
42    /// The principal that created the ACL, such as `user:<id>` or
43    /// `service_account:<id>`; empty for one the platform created.
44    #[prost(string, tag = "6")]
45    pub creator: ::prost::alloc::string::String,
46    /// Labels of your own, at most 50. The `origin:name` tag is the name the
47    /// console shows.
48    #[prost(btree_map = "string, string", tag = "7")]
49    pub tags: ::prost::alloc::collections::BTreeMap<
50        ::prost::alloc::string::String,
51        ::prost::alloc::string::String,
52    >,
53}
54/// The request for GetAcl.
55#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
56pub struct GetAclRequest {
57    /// The ACL to return.
58    #[prost(string, tag = "1")]
59    pub name: ::prost::alloc::string::String,
60}
61/// The request for ListAcls.
62#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
63pub struct ListAclsRequest {
64    /// The region whose ACLs to list, `projects/{project}/regions/{region}`.
65    #[prost(string, tag = "1")]
66    pub parent: ::prost::alloc::string::String,
67    /// The most ACLs to return; the server clamps it, and 0 means its
68    /// default.
69    #[prost(int32, tag = "2")]
70    pub page_size: i32,
71    /// A previous response's `next_page_token`, for the page after it.
72    #[prost(string, tag = "3")]
73    pub page_token: ::prost::alloc::string::String,
74    /// Only the ACLs of this VPC, when set.
75    #[prost(string, tag = "4")]
76    pub vpc: ::prost::alloc::string::String,
77}
78/// The response for ListAcls.
79#[derive(Clone, PartialEq, ::prost::Message)]
80pub struct ListAclsResponse {
81    /// The ACLs on this page.
82    #[prost(message, repeated, tag = "1")]
83    pub acls: ::prost::alloc::vec::Vec<Acl>,
84    /// The token for the next page; empty on the last one.
85    #[prost(string, tag = "2")]
86    pub next_page_token: ::prost::alloc::string::String,
87}
88/// The request for CreateAcl.
89#[derive(Clone, PartialEq, ::prost::Message)]
90pub struct CreateAclRequest {
91    /// The region to create the ACL in, `projects/{project}/regions/{region}`.
92    #[prost(string, tag = "1")]
93    pub parent: ::prost::alloc::string::String,
94    /// The ACL to create: its VPC, and optionally its tags.
95    #[prost(message, optional, tag = "2")]
96    pub acl: ::core::option::Option<Acl>,
97    /// A UUID; a repeat with the same id returns the first request's
98    /// operation instead of creating a second ACL.
99    #[prost(string, tag = "3")]
100    pub request_id: ::prost::alloc::string::String,
101}
102/// The request for UpdateAcl.
103#[derive(Clone, PartialEq, ::prost::Message)]
104pub struct UpdateAclRequest {
105    /// The ACL, by its name, with the fields to change.
106    #[prost(message, optional, tag = "1")]
107    pub acl: ::core::option::Option<Acl>,
108    /// The fields to change: `tags`, or `*`.
109    #[prost(message, optional, tag = "2")]
110    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
111    /// A UUID; a repeat with the same id returns the first request's
112    /// operation instead of changing the ACL again.
113    #[prost(string, tag = "3")]
114    pub request_id: ::prost::alloc::string::String,
115}
116/// The request for DeleteAcl.
117#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
118pub struct DeleteAclRequest {
119    /// The ACL to delete.
120    #[prost(string, tag = "1")]
121    pub name: ::prost::alloc::string::String,
122    /// A UUID; a repeat with the same id returns the first request's
123    /// operation.
124    #[prost(string, tag = "2")]
125    pub request_id: ::prost::alloc::string::String,
126}
127/// The ACL that filters a subnet's traffic at its edge.
128#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
129pub struct AclAssociation {
130    /// The association's resource name. Its last segment is the ACL's id.
131    #[prost(string, tag = "1")]
132    pub name: ::prost::alloc::string::String,
133    /// The ACL that filters the subnet's traffic, in the subnet's VPC.
134    #[prost(string, tag = "2")]
135    pub acl: ::prost::alloc::string::String,
136}
137/// The request for GetAclAssociation.
138#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
139pub struct GetAclAssociationRequest {
140    /// The association to return.
141    #[prost(string, tag = "1")]
142    pub name: ::prost::alloc::string::String,
143}
144/// The request for ListAclAssociations.
145#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
146pub struct ListAclAssociationsRequest {
147    /// The subnet whose association to list,
148    /// `projects/{project}/zones/{zone}/subnets/{subnet}`.
149    #[prost(string, tag = "1")]
150    pub parent: ::prost::alloc::string::String,
151    /// The most associations to return; the server clamps it, and 0 means
152    /// its default.
153    #[prost(int32, tag = "2")]
154    pub page_size: i32,
155    /// A previous response's `next_page_token`, for the page after it.
156    #[prost(string, tag = "3")]
157    pub page_token: ::prost::alloc::string::String,
158}
159/// The response for ListAclAssociations.
160#[derive(Clone, PartialEq, ::prost::Message)]
161pub struct ListAclAssociationsResponse {
162    /// The associations on this page.
163    #[prost(message, repeated, tag = "1")]
164    pub acl_associations: ::prost::alloc::vec::Vec<AclAssociation>,
165    /// The token for the next page; empty on the last one.
166    #[prost(string, tag = "2")]
167    pub next_page_token: ::prost::alloc::string::String,
168}
169/// The request for CreateAclAssociation.
170#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
171pub struct CreateAclAssociationRequest {
172    /// The subnet to associate the ACL with,
173    /// `projects/{project}/zones/{zone}/subnets/{subnet}`.
174    #[prost(string, tag = "1")]
175    pub parent: ::prost::alloc::string::String,
176    /// The association to create: its ACL.
177    #[prost(message, optional, tag = "2")]
178    pub acl_association: ::core::option::Option<AclAssociation>,
179    /// A UUID; a repeat with the same id returns the first request's
180    /// operation.
181    #[prost(string, tag = "3")]
182    pub request_id: ::prost::alloc::string::String,
183}
184/// The request for DeleteAclAssociation.
185#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
186pub struct DeleteAclAssociationRequest {
187    /// The association to remove.
188    #[prost(string, tag = "1")]
189    pub name: ::prost::alloc::string::String,
190    /// A UUID; a repeat with the same id returns the first request's
191    /// operation.
192    #[prost(string, tag = "2")]
193    pub request_id: ::prost::alloc::string::String,
194}
195/// An ACL rule: accepts or drops the traffic it matches in one direction.
196#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
197pub struct AclRule {
198    /// The rule's resource name.
199    #[prost(string, tag = "1")]
200    pub name: ::prost::alloc::string::String,
201    /// Which traffic the rule applies to.
202    #[prost(enumeration = "acl_rule::Direction", tag = "2")]
203    pub direction: i32,
204    /// The rule's place in its direction, from 1; lower comes first. No two
205    /// rules of a direction share one.
206    #[prost(int32, tag = "3")]
207    pub priority: i32,
208    /// The traffic the rule matches.
209    #[prost(enumeration = "acl_rule::Protocol", tag = "4")]
210    pub protocol: i32,
211    /// The first port the rule matches, for `acl_rule::Protocol::Tcp` and `acl_rule::Protocol::Udp`. Each set of
212    /// ports has one spelling, and the rule reads back in it: `first_port` 0
213    /// and `last_port` 0 match every port, a `last_port` of 0 the single port
214    /// `first_port`, and a `first_port` below `last_port` the range between
215    /// them. Any other spelling of a set is refused with `INVALID_ARGUMENT`
216    /// naming the one to use: `first_port` 22 and `last_port` 22 is
217    /// `first_port` 22 and `last_port` 0, and 0 or 1 to 65535 is 0 and 0.
218    #[prost(int32, tag = "5")]
219    pub first_port: i32,
220    /// The last port the rule matches, above `first_port`; 0 for the single
221    /// port `first_port`, or with `first_port` 0 for every port.
222    #[prost(int32, tag = "6")]
223    pub last_port: i32,
224    /// The far side's range: where entering traffic comes from, or where
225    /// leaving traffic goes to.
226    #[prost(string, tag = "7")]
227    pub cidr_block: ::prost::alloc::string::String,
228    /// What the rule does with the traffic it matches.
229    #[prost(enumeration = "acl_rule::Action", tag = "8")]
230    pub action: i32,
231}
232/// Nested message and enum types in `AclRule`.
233pub mod acl_rule {
234    /// Which traffic a rule applies to.
235    #[derive(
236        Clone,
237        Copy,
238        Debug,
239        PartialEq,
240        Eq,
241        Hash,
242        PartialOrd,
243        Ord,
244        ::prost::Enumeration
245    )]
246    #[repr(i32)]
247    pub enum Direction {
248        /// Not set.
249        Unspecified = 0,
250        /// Traffic entering the subnet.
251        Ingress = 1,
252        /// Traffic leaving the subnet.
253        Egress = 2,
254    }
255    impl Direction {
256        /// String value of the enum field names used in the ProtoBuf definition.
257        ///
258        /// The values are not transformed in any way and thus are considered stable
259        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
260        pub fn as_str_name(&self) -> &'static str {
261            match self {
262                Self::Unspecified => "DIRECTION_UNSPECIFIED",
263                Self::Ingress => "INGRESS",
264                Self::Egress => "EGRESS",
265            }
266        }
267        /// Creates an enum from field names used in the ProtoBuf definition.
268        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
269            match value {
270                "DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
271                "INGRESS" => Some(Self::Ingress),
272                "EGRESS" => Some(Self::Egress),
273                _ => None,
274            }
275        }
276    }
277    /// The traffic a rule matches.
278    #[derive(
279        Clone,
280        Copy,
281        Debug,
282        PartialEq,
283        Eq,
284        Hash,
285        PartialOrd,
286        Ord,
287        ::prost::Enumeration
288    )]
289    #[repr(i32)]
290    pub enum Protocol {
291        /// Not set.
292        Unspecified = 0,
293        /// Every protocol; ports don't apply.
294        All = 1,
295        /// TCP.
296        Tcp = 2,
297        /// UDP.
298        Udp = 3,
299        /// ICMP to and from IPv4 ranges, ICMPv6 to and from IPv6 ranges, every
300        /// type and code; ports don't apply.
301        Icmp = 4,
302    }
303    impl Protocol {
304        /// String value of the enum field names used in the ProtoBuf definition.
305        ///
306        /// The values are not transformed in any way and thus are considered stable
307        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
308        pub fn as_str_name(&self) -> &'static str {
309            match self {
310                Self::Unspecified => "PROTOCOL_UNSPECIFIED",
311                Self::All => "ALL",
312                Self::Tcp => "TCP",
313                Self::Udp => "UDP",
314                Self::Icmp => "ICMP",
315            }
316        }
317        /// Creates an enum from field names used in the ProtoBuf definition.
318        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
319            match value {
320                "PROTOCOL_UNSPECIFIED" => Some(Self::Unspecified),
321                "ALL" => Some(Self::All),
322                "TCP" => Some(Self::Tcp),
323                "UDP" => Some(Self::Udp),
324                "ICMP" => Some(Self::Icmp),
325                _ => None,
326            }
327        }
328    }
329    /// What a rule does with the traffic it matches.
330    #[derive(
331        Clone,
332        Copy,
333        Debug,
334        PartialEq,
335        Eq,
336        Hash,
337        PartialOrd,
338        Ord,
339        ::prost::Enumeration
340    )]
341    #[repr(i32)]
342    pub enum Action {
343        /// Not set.
344        Unspecified = 0,
345        /// Let it through.
346        Accept = 1,
347        /// Drop it.
348        Drop = 2,
349    }
350    impl Action {
351        /// String value of the enum field names used in the ProtoBuf definition.
352        ///
353        /// The values are not transformed in any way and thus are considered stable
354        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
355        pub fn as_str_name(&self) -> &'static str {
356            match self {
357                Self::Unspecified => "ACTION_UNSPECIFIED",
358                Self::Accept => "ACCEPT",
359                Self::Drop => "DROP",
360            }
361        }
362        /// Creates an enum from field names used in the ProtoBuf definition.
363        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
364            match value {
365                "ACTION_UNSPECIFIED" => Some(Self::Unspecified),
366                "ACCEPT" => Some(Self::Accept),
367                "DROP" => Some(Self::Drop),
368                _ => None,
369            }
370        }
371    }
372}
373/// The request for GetAclRule.
374#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
375pub struct GetAclRuleRequest {
376    /// The rule to return.
377    #[prost(string, tag = "1")]
378    pub name: ::prost::alloc::string::String,
379}
380/// The request for ListAclRules.
381#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
382pub struct ListAclRulesRequest {
383    /// The ACL whose rules to list,
384    /// `projects/{project}/regions/{region}/acls/{acl}`.
385    #[prost(string, tag = "1")]
386    pub parent: ::prost::alloc::string::String,
387    /// The most rules to return; the server clamps it, and 0 means its
388    /// default.
389    #[prost(int32, tag = "2")]
390    pub page_size: i32,
391    /// A previous response's `next_page_token`, for the page after it.
392    #[prost(string, tag = "3")]
393    pub page_token: ::prost::alloc::string::String,
394}
395/// The response for ListAclRules.
396#[derive(Clone, PartialEq, ::prost::Message)]
397pub struct ListAclRulesResponse {
398    /// The rules on this page.
399    #[prost(message, repeated, tag = "1")]
400    pub acl_rules: ::prost::alloc::vec::Vec<AclRule>,
401    /// The token for the next page; empty on the last one.
402    #[prost(string, tag = "2")]
403    pub next_page_token: ::prost::alloc::string::String,
404}
405/// The request for CreateAclRule.
406#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
407pub struct CreateAclRuleRequest {
408    /// The ACL to add the rule to,
409    /// `projects/{project}/regions/{region}/acls/{acl}`.
410    #[prost(string, tag = "1")]
411    pub parent: ::prost::alloc::string::String,
412    /// The rule to add.
413    #[prost(message, optional, tag = "2")]
414    pub acl_rule: ::core::option::Option<AclRule>,
415    /// A UUID; a repeat with the same id returns the first request's
416    /// operation instead of adding the rule again.
417    #[prost(string, tag = "3")]
418    pub request_id: ::prost::alloc::string::String,
419}
420/// The request for DeleteAclRule.
421#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
422pub struct DeleteAclRuleRequest {
423    /// The rule to remove.
424    #[prost(string, tag = "1")]
425    pub name: ::prost::alloc::string::String,
426    /// A UUID; a repeat with the same id returns the first request's
427    /// operation.
428    #[prost(string, tag = "2")]
429    pub request_id: ::prost::alloc::string::String,
430}
431/// How a VPC's resolver answers names outside the platform's own.
432#[derive(Clone, PartialEq, ::prost::Message)]
433pub struct DnsPolicy {
434    /// The policy's resource name.
435    #[prost(string, tag = "1")]
436    pub name: ::prost::alloc::string::String,
437    /// The policy's URN, the identifier access policies and the audit log
438    /// use.
439    #[prost(string, tag = "2")]
440    pub urn: ::prost::alloc::string::String,
441    /// Whether this is the project's default policy in its region, which a
442    /// VPC without a DNS policy association relays through. Change it with
443    /// `SetDefaultDnsPolicy`.
444    #[prost(bool, tag = "3")]
445    pub project_default: bool,
446    /// Whether the resolver relays names it can't answer itself to
447    /// `upstream_servers`. Off, it answers only the platform's own names.
448    #[prost(bool, tag = "4")]
449    pub relay_enabled: bool,
450    /// The resolvers to relay to, at most 5 IPv4 or IPv6 addresses, tried in
451    /// order. At least one while `relay_enabled` is on.
452    #[prost(string, repeated, tag = "5")]
453    pub upstream_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
454    /// When the DNS policy was created.
455    #[prost(message, optional, tag = "6")]
456    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
457    /// The principal that created the DNS policy, such as `user:<id>` or
458    /// `service_account:<id>`; empty for one the platform created.
459    #[prost(string, tag = "7")]
460    pub creator: ::prost::alloc::string::String,
461    /// Labels of your own, at most 50. The `origin:name` tag is the name the
462    /// console shows.
463    #[prost(btree_map = "string, string", tag = "8")]
464    pub tags: ::prost::alloc::collections::BTreeMap<
465        ::prost::alloc::string::String,
466        ::prost::alloc::string::String,
467    >,
468}
469/// The request for GetDnsPolicy.
470#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
471pub struct GetDnsPolicyRequest {
472    /// The DNS policy to return.
473    #[prost(string, tag = "1")]
474    pub name: ::prost::alloc::string::String,
475}
476/// The request for ListDnsPolicies.
477#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
478pub struct ListDnsPoliciesRequest {
479    /// The region whose DNS policies to list,
480    /// `projects/{project}/regions/{region}`.
481    #[prost(string, tag = "1")]
482    pub parent: ::prost::alloc::string::String,
483    /// The most DNS policies to return; the server clamps it, and 0 means
484    /// its default.
485    #[prost(int32, tag = "2")]
486    pub page_size: i32,
487    /// A previous response's `next_page_token`, for the page after it.
488    #[prost(string, tag = "3")]
489    pub page_token: ::prost::alloc::string::String,
490}
491/// The response for ListDnsPolicies.
492#[derive(Clone, PartialEq, ::prost::Message)]
493pub struct ListDnsPoliciesResponse {
494    /// The DNS policies on this page.
495    #[prost(message, repeated, tag = "1")]
496    pub dns_policies: ::prost::alloc::vec::Vec<DnsPolicy>,
497    /// The token for the next page; empty on the last one.
498    #[prost(string, tag = "2")]
499    pub next_page_token: ::prost::alloc::string::String,
500}
501/// The request for CreateDnsPolicy.
502#[derive(Clone, PartialEq, ::prost::Message)]
503pub struct CreateDnsPolicyRequest {
504    /// The region to create the DNS policy in,
505    /// `projects/{project}/regions/{region}`.
506    #[prost(string, tag = "1")]
507    pub parent: ::prost::alloc::string::String,
508    /// The policy to create: its relay settings, and optionally its tags.
509    #[prost(message, optional, tag = "2")]
510    pub dns_policy: ::core::option::Option<DnsPolicy>,
511    /// A UUID; a repeat with the same id returns the first request's
512    /// operation instead of creating a second DNS policy.
513    #[prost(string, tag = "3")]
514    pub request_id: ::prost::alloc::string::String,
515}
516/// The request for UpdateDnsPolicy.
517#[derive(Clone, PartialEq, ::prost::Message)]
518pub struct UpdateDnsPolicyRequest {
519    /// The DNS policy, by its name, with the fields to change.
520    #[prost(message, optional, tag = "1")]
521    pub dns_policy: ::core::option::Option<DnsPolicy>,
522    /// The fields to change, any of `relay_enabled`, `upstream_servers` and
523    /// `tags`. `*` is all of them.
524    #[prost(message, optional, tag = "2")]
525    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
526    /// A UUID; a repeat with the same id returns the first request's
527    /// operation instead of changing the DNS policy again.
528    #[prost(string, tag = "3")]
529    pub request_id: ::prost::alloc::string::String,
530}
531/// The request for DeleteDnsPolicy.
532#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
533pub struct DeleteDnsPolicyRequest {
534    /// The DNS policy to delete.
535    #[prost(string, tag = "1")]
536    pub name: ::prost::alloc::string::String,
537    /// A UUID; a repeat with the same id returns the first request's
538    /// operation.
539    #[prost(string, tag = "2")]
540    pub request_id: ::prost::alloc::string::String,
541}
542/// The request for SetDefaultDnsPolicy.
543#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
544pub struct SetDefaultDnsPolicyRequest {
545    /// The DNS policy to make the default.
546    #[prost(string, tag = "1")]
547    pub name: ::prost::alloc::string::String,
548    /// A UUID; a repeat with the same id returns the first request's
549    /// operation.
550    #[prost(string, tag = "2")]
551    pub request_id: ::prost::alloc::string::String,
552}
553/// The DNS policy a VPC's resolver relays through.
554#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
555pub struct DnsPolicyAssociation {
556    /// The association's resource name. Its last segment is the DNS policy's
557    /// id.
558    #[prost(string, tag = "1")]
559    pub name: ::prost::alloc::string::String,
560    /// The DNS policy the VPC relays through, in the VPC's project and region.
561    #[prost(string, tag = "2")]
562    pub dns_policy: ::prost::alloc::string::String,
563}
564/// The request for GetDnsPolicyAssociation.
565#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
566pub struct GetDnsPolicyAssociationRequest {
567    /// The association to return.
568    #[prost(string, tag = "1")]
569    pub name: ::prost::alloc::string::String,
570}
571/// The request for ListDnsPolicyAssociations.
572#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
573pub struct ListDnsPolicyAssociationsRequest {
574    /// The VPC whose association to list,
575    /// `projects/{project}/regions/{region}/vpcs/{vpc}`.
576    #[prost(string, tag = "1")]
577    pub parent: ::prost::alloc::string::String,
578    /// The most associations to return; the server clamps it, and 0 means
579    /// its default.
580    #[prost(int32, tag = "2")]
581    pub page_size: i32,
582    /// A previous response's `next_page_token`, for the page after it.
583    #[prost(string, tag = "3")]
584    pub page_token: ::prost::alloc::string::String,
585}
586/// The response for ListDnsPolicyAssociations.
587#[derive(Clone, PartialEq, ::prost::Message)]
588pub struct ListDnsPolicyAssociationsResponse {
589    /// The associations on this page.
590    #[prost(message, repeated, tag = "1")]
591    pub dns_policy_associations: ::prost::alloc::vec::Vec<DnsPolicyAssociation>,
592    /// The token for the next page; empty on the last one.
593    #[prost(string, tag = "2")]
594    pub next_page_token: ::prost::alloc::string::String,
595}
596/// The request for CreateDnsPolicyAssociation.
597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
598pub struct CreateDnsPolicyAssociationRequest {
599    /// The VPC to associate the DNS policy with,
600    /// `projects/{project}/regions/{region}/vpcs/{vpc}`.
601    #[prost(string, tag = "1")]
602    pub parent: ::prost::alloc::string::String,
603    /// The association to create: its DNS policy.
604    #[prost(message, optional, tag = "2")]
605    pub dns_policy_association: ::core::option::Option<DnsPolicyAssociation>,
606    /// A UUID; a repeat with the same id returns the first request's
607    /// operation.
608    #[prost(string, tag = "3")]
609    pub request_id: ::prost::alloc::string::String,
610}
611/// The request for DeleteDnsPolicyAssociation.
612#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
613pub struct DeleteDnsPolicyAssociationRequest {
614    /// The association to remove.
615    #[prost(string, tag = "1")]
616    pub name: ::prost::alloc::string::String,
617    /// A UUID; a repeat with the same id returns the first request's
618    /// operation.
619    #[prost(string, tag = "2")]
620    pub request_id: ::prost::alloc::string::String,
621}
622/// A public IPv4 address of your own.
623#[derive(Clone, PartialEq, ::prost::Message)]
624pub struct FloatingIp {
625    /// The floating IP's resource name.
626    #[prost(string, tag = "1")]
627    pub name: ::prost::alloc::string::String,
628    /// The floating IP's URN, the identifier access policies and the audit
629    /// log use.
630    #[prost(string, tag = "2")]
631    pub urn: ::prost::alloc::string::String,
632    /// The public address.
633    #[prost(string, tag = "3")]
634    pub address: ::prost::alloc::string::String,
635    /// The network interface the address reaches, as the floating IP's
636    /// association (a `FloatingIpAssociation`) sets it; empty while it has
637    /// none.
638    #[prost(string, tag = "4")]
639    pub network_interface: ::prost::alloc::string::String,
640    /// The interface's private IPv4 address the public one translates to, as
641    /// the floating IP's association sets it; empty while it has none.
642    #[prost(string, tag = "5")]
643    pub private_address: ::prost::alloc::string::String,
644    /// Whether the platform assigned the address at launch, to an interface
645    /// the launch created in a subnet with `auto_assign_public_ip`. Such an
646    /// address is part of that interface: its association can't be removed
647    /// nor the address deleted, and it is released with the interface when
648    /// its instance is terminated.
649    #[prost(bool, tag = "6")]
650    pub auto_assigned: bool,
651    /// When the floating IP was created.
652    #[prost(message, optional, tag = "7")]
653    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
654    /// The principal that created the floating IP, such as `user:<id>` or
655    /// `service_account:<id>`; empty for one the platform created.
656    #[prost(string, tag = "8")]
657    pub creator: ::prost::alloc::string::String,
658    /// Labels of your own, at most 50. The `origin:name` tag is the name the
659    /// console shows.
660    #[prost(btree_map = "string, string", tag = "9")]
661    pub tags: ::prost::alloc::collections::BTreeMap<
662        ::prost::alloc::string::String,
663        ::prost::alloc::string::String,
664    >,
665}
666/// The request for GetFloatingIp.
667#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
668pub struct GetFloatingIpRequest {
669    /// The floating IP to return.
670    #[prost(string, tag = "1")]
671    pub name: ::prost::alloc::string::String,
672}
673/// The request for ListFloatingIps.
674#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
675pub struct ListFloatingIpsRequest {
676    /// The zone whose floating IPs to list, `projects/{project}/zones/{zone}`.
677    #[prost(string, tag = "1")]
678    pub parent: ::prost::alloc::string::String,
679    /// The most floating IPs to return; the server clamps it, and 0 means
680    /// its default.
681    #[prost(int32, tag = "2")]
682    pub page_size: i32,
683    /// A previous response's `next_page_token`, for the page after it.
684    #[prost(string, tag = "3")]
685    pub page_token: ::prost::alloc::string::String,
686}
687/// The response for ListFloatingIps.
688#[derive(Clone, PartialEq, ::prost::Message)]
689pub struct ListFloatingIpsResponse {
690    /// The floating IPs on this page.
691    #[prost(message, repeated, tag = "1")]
692    pub floating_ips: ::prost::alloc::vec::Vec<FloatingIp>,
693    /// The token for the next page; empty on the last one.
694    #[prost(string, tag = "2")]
695    pub next_page_token: ::prost::alloc::string::String,
696}
697/// The request for CreateFloatingIp.
698#[derive(Clone, PartialEq, ::prost::Message)]
699pub struct CreateFloatingIpRequest {
700    /// The zone to allocate the floating IP in,
701    /// `projects/{project}/zones/{zone}`.
702    #[prost(string, tag = "1")]
703    pub parent: ::prost::alloc::string::String,
704    /// The floating IP to allocate: optionally its tags.
705    #[prost(message, optional, tag = "2")]
706    pub floating_ip: ::core::option::Option<FloatingIp>,
707    /// A UUID; a repeat with the same id returns the first request's
708    /// operation instead of allocating a second floating IP.
709    #[prost(string, tag = "3")]
710    pub request_id: ::prost::alloc::string::String,
711}
712/// The request for UpdateFloatingIp.
713#[derive(Clone, PartialEq, ::prost::Message)]
714pub struct UpdateFloatingIpRequest {
715    /// The floating IP, by its name, with the fields to change.
716    #[prost(message, optional, tag = "1")]
717    pub floating_ip: ::core::option::Option<FloatingIp>,
718    /// The fields to change: `tags`, or `*`.
719    #[prost(message, optional, tag = "2")]
720    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
721    /// A UUID; a repeat with the same id returns the first request's
722    /// operation instead of changing the floating IP again.
723    #[prost(string, tag = "3")]
724    pub request_id: ::prost::alloc::string::String,
725}
726/// The request for DeleteFloatingIp.
727#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
728pub struct DeleteFloatingIpRequest {
729    /// The floating IP to release.
730    #[prost(string, tag = "1")]
731    pub name: ::prost::alloc::string::String,
732    /// A UUID; a repeat with the same id returns the first request's
733    /// operation.
734    #[prost(string, tag = "2")]
735    pub request_id: ::prost::alloc::string::String,
736}
737/// The network interface a floating IP reaches.
738#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
739pub struct FloatingIpAssociation {
740    /// The association's resource name. Its last segment is the network
741    /// interface's id.
742    #[prost(string, tag = "1")]
743    pub name: ::prost::alloc::string::String,
744    /// The network interface the address reaches, in the floating IP's project
745    /// and zone.
746    #[prost(string, tag = "2")]
747    pub network_interface: ::prost::alloc::string::String,
748    /// The interface's private IPv4 address the public one translates to.
749    #[prost(string, tag = "3")]
750    pub private_address: ::prost::alloc::string::String,
751}
752/// The request for GetFloatingIpAssociation.
753#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
754pub struct GetFloatingIpAssociationRequest {
755    /// The association to return.
756    #[prost(string, tag = "1")]
757    pub name: ::prost::alloc::string::String,
758}
759/// The request for ListFloatingIpAssociations.
760#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
761pub struct ListFloatingIpAssociationsRequest {
762    /// The floating IP whose association to list,
763    /// `projects/{project}/zones/{zone}/floatingIps/{floating_ip}`.
764    #[prost(string, tag = "1")]
765    pub parent: ::prost::alloc::string::String,
766    /// The most associations to return; the server clamps it, and 0 means
767    /// its default.
768    #[prost(int32, tag = "2")]
769    pub page_size: i32,
770    /// A previous response's `next_page_token`, for the page after it.
771    #[prost(string, tag = "3")]
772    pub page_token: ::prost::alloc::string::String,
773}
774/// The response for ListFloatingIpAssociations.
775#[derive(Clone, PartialEq, ::prost::Message)]
776pub struct ListFloatingIpAssociationsResponse {
777    /// The associations on this page.
778    #[prost(message, repeated, tag = "1")]
779    pub floating_ip_associations: ::prost::alloc::vec::Vec<FloatingIpAssociation>,
780    /// The token for the next page; empty on the last one.
781    #[prost(string, tag = "2")]
782    pub next_page_token: ::prost::alloc::string::String,
783}
784/// The request for CreateFloatingIpAssociation.
785#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
786pub struct CreateFloatingIpAssociationRequest {
787    /// The floating IP to associate,
788    /// `projects/{project}/zones/{zone}/floatingIps/{floating_ip}`.
789    #[prost(string, tag = "1")]
790    pub parent: ::prost::alloc::string::String,
791    /// The association to create: its network interface.
792    #[prost(message, optional, tag = "2")]
793    pub floating_ip_association: ::core::option::Option<FloatingIpAssociation>,
794    /// A UUID; a repeat with the same id returns the first request's
795    /// operation.
796    #[prost(string, tag = "3")]
797    pub request_id: ::prost::alloc::string::String,
798}
799/// The request for DeleteFloatingIpAssociation.
800#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
801pub struct DeleteFloatingIpAssociationRequest {
802    /// The association to remove.
803    #[prost(string, tag = "1")]
804    pub name: ::prost::alloc::string::String,
805    /// A UUID; a repeat with the same id returns the first request's
806    /// operation.
807    #[prost(string, tag = "2")]
808    pub request_id: ::prost::alloc::string::String,
809}
810/// A VPC's way to and from the internet.
811#[derive(Clone, PartialEq, ::prost::Message)]
812pub struct InternetGateway {
813    /// The gateway's resource name.
814    #[prost(string, tag = "1")]
815    pub name: ::prost::alloc::string::String,
816    /// The gateway's URN, the identifier access policies and the audit log
817    /// use.
818    #[prost(string, tag = "2")]
819    pub urn: ::prost::alloc::string::String,
820    /// The VPC the gateway connects, in the same project and region.
821    #[prost(string, tag = "3")]
822    pub vpc: ::prost::alloc::string::String,
823    /// When the internet gateway was created.
824    #[prost(message, optional, tag = "4")]
825    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
826    /// The principal that created the internet gateway, such as `user:<id>`
827    /// or `service_account:<id>`; empty for one the platform created.
828    #[prost(string, tag = "5")]
829    pub creator: ::prost::alloc::string::String,
830    /// Labels of your own, at most 50. The `origin:name` tag is the name the
831    /// console shows.
832    #[prost(btree_map = "string, string", tag = "6")]
833    pub tags: ::prost::alloc::collections::BTreeMap<
834        ::prost::alloc::string::String,
835        ::prost::alloc::string::String,
836    >,
837}
838/// The request for GetInternetGateway.
839#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
840pub struct GetInternetGatewayRequest {
841    /// The internet gateway to return.
842    #[prost(string, tag = "1")]
843    pub name: ::prost::alloc::string::String,
844}
845/// The request for ListInternetGateways.
846#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
847pub struct ListInternetGatewaysRequest {
848    /// The region whose internet gateways to list,
849    /// `projects/{project}/regions/{region}`.
850    #[prost(string, tag = "1")]
851    pub parent: ::prost::alloc::string::String,
852    /// The most internet gateways to return; the server clamps it, and 0
853    /// means its default.
854    #[prost(int32, tag = "2")]
855    pub page_size: i32,
856    /// A previous response's `next_page_token`, for the page after it.
857    #[prost(string, tag = "3")]
858    pub page_token: ::prost::alloc::string::String,
859    /// Only the gateway of this VPC, when set.
860    #[prost(string, tag = "4")]
861    pub vpc: ::prost::alloc::string::String,
862}
863/// The response for ListInternetGateways.
864#[derive(Clone, PartialEq, ::prost::Message)]
865pub struct ListInternetGatewaysResponse {
866    /// The internet gateways on this page.
867    #[prost(message, repeated, tag = "1")]
868    pub internet_gateways: ::prost::alloc::vec::Vec<InternetGateway>,
869    /// The token for the next page; empty on the last one.
870    #[prost(string, tag = "2")]
871    pub next_page_token: ::prost::alloc::string::String,
872}
873/// The request for CreateInternetGateway.
874#[derive(Clone, PartialEq, ::prost::Message)]
875pub struct CreateInternetGatewayRequest {
876    /// The region to create the internet gateway in,
877    /// `projects/{project}/regions/{region}`.
878    #[prost(string, tag = "1")]
879    pub parent: ::prost::alloc::string::String,
880    /// The gateway to create: its VPC, and optionally its tags.
881    #[prost(message, optional, tag = "2")]
882    pub internet_gateway: ::core::option::Option<InternetGateway>,
883    /// A UUID; a repeat with the same id returns the first request's
884    /// operation instead of creating a second internet gateway.
885    #[prost(string, tag = "3")]
886    pub request_id: ::prost::alloc::string::String,
887}
888/// The request for UpdateInternetGateway.
889#[derive(Clone, PartialEq, ::prost::Message)]
890pub struct UpdateInternetGatewayRequest {
891    /// The internet gateway, by its name, with the fields to change.
892    #[prost(message, optional, tag = "1")]
893    pub internet_gateway: ::core::option::Option<InternetGateway>,
894    /// The fields to change: `tags`, or `*`.
895    #[prost(message, optional, tag = "2")]
896    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
897    /// A UUID; a repeat with the same id returns the first request's
898    /// operation instead of changing the internet gateway again.
899    #[prost(string, tag = "3")]
900    pub request_id: ::prost::alloc::string::String,
901}
902/// The request for DeleteInternetGateway.
903#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
904pub struct DeleteInternetGatewayRequest {
905    /// The internet gateway to delete.
906    #[prost(string, tag = "1")]
907    pub name: ::prost::alloc::string::String,
908    /// A UUID; a repeat with the same id returns the first request's
909    /// operation.
910    #[prost(string, tag = "2")]
911    pub request_id: ::prost::alloc::string::String,
912}
913/// Shared IPv4 egress through one floating IP.
914#[derive(Clone, PartialEq, ::prost::Message)]
915pub struct NatGateway {
916    /// The gateway's resource name.
917    #[prost(string, tag = "1")]
918    pub name: ::prost::alloc::string::String,
919    /// The gateway's URN, the identifier access policies and the audit log
920    /// use.
921    #[prost(string, tag = "2")]
922    pub urn: ::prost::alloc::string::String,
923    /// The public subnet the gateway lives in, in the same project and zone.
924    #[prost(string, tag = "3")]
925    pub subnet: ::prost::alloc::string::String,
926    /// The floating IP instances behind the gateway appear as, in the same
927    /// project and zone. It stays allocated when the gateway is deleted.
928    #[prost(string, tag = "4")]
929    pub floating_ip: ::prost::alloc::string::String,
930    /// The subnet's VPC.
931    #[prost(string, tag = "5")]
932    pub vpc: ::prost::alloc::string::String,
933    /// When the NAT gateway was created.
934    #[prost(message, optional, tag = "6")]
935    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
936    /// The principal that created the NAT gateway, such as `user:<id>` or
937    /// `service_account:<id>`; empty for one the platform created.
938    #[prost(string, tag = "7")]
939    pub creator: ::prost::alloc::string::String,
940    /// Labels of your own, at most 50. The `origin:name` tag is the name the
941    /// console shows.
942    #[prost(btree_map = "string, string", tag = "8")]
943    pub tags: ::prost::alloc::collections::BTreeMap<
944        ::prost::alloc::string::String,
945        ::prost::alloc::string::String,
946    >,
947}
948/// The request for GetNatGateway.
949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
950pub struct GetNatGatewayRequest {
951    /// The NAT gateway to return.
952    #[prost(string, tag = "1")]
953    pub name: ::prost::alloc::string::String,
954}
955/// The request for ListNatGateways.
956#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
957pub struct ListNatGatewaysRequest {
958    /// The zone whose NAT gateways to list, `projects/{project}/zones/{zone}`.
959    #[prost(string, tag = "1")]
960    pub parent: ::prost::alloc::string::String,
961    /// The most NAT gateways to return; the server clamps it, and 0 means its
962    /// default.
963    #[prost(int32, tag = "2")]
964    pub page_size: i32,
965    /// A previous response's `next_page_token`, for the page after it.
966    #[prost(string, tag = "3")]
967    pub page_token: ::prost::alloc::string::String,
968}
969/// The response for ListNatGateways.
970#[derive(Clone, PartialEq, ::prost::Message)]
971pub struct ListNatGatewaysResponse {
972    /// The NAT gateways on this page.
973    #[prost(message, repeated, tag = "1")]
974    pub nat_gateways: ::prost::alloc::vec::Vec<NatGateway>,
975    /// The token for the next page; empty on the last one.
976    #[prost(string, tag = "2")]
977    pub next_page_token: ::prost::alloc::string::String,
978}
979/// The request for CreateNatGateway.
980#[derive(Clone, PartialEq, ::prost::Message)]
981pub struct CreateNatGatewayRequest {
982    /// The zone to create the NAT gateway in, `projects/{project}/zones/{zone}`.
983    #[prost(string, tag = "1")]
984    pub parent: ::prost::alloc::string::String,
985    /// The gateway to create: its subnet and floating IP, and optionally its
986    /// tags.
987    #[prost(message, optional, tag = "2")]
988    pub nat_gateway: ::core::option::Option<NatGateway>,
989    /// A UUID; a repeat with the same id returns the first request's
990    /// operation instead of creating a second NAT gateway.
991    #[prost(string, tag = "3")]
992    pub request_id: ::prost::alloc::string::String,
993}
994/// The request for UpdateNatGateway.
995#[derive(Clone, PartialEq, ::prost::Message)]
996pub struct UpdateNatGatewayRequest {
997    /// The NAT gateway, by its name, with the fields to change.
998    #[prost(message, optional, tag = "1")]
999    pub nat_gateway: ::core::option::Option<NatGateway>,
1000    /// The fields to change: `tags`, or `*`.
1001    #[prost(message, optional, tag = "2")]
1002    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1003    /// A UUID; a repeat with the same id returns the first request's
1004    /// operation instead of changing the NAT gateway again.
1005    #[prost(string, tag = "3")]
1006    pub request_id: ::prost::alloc::string::String,
1007}
1008/// The request for DeleteNatGateway.
1009#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1010pub struct DeleteNatGatewayRequest {
1011    /// The NAT gateway to delete.
1012    #[prost(string, tag = "1")]
1013    pub name: ::prost::alloc::string::String,
1014    /// A UUID; a repeat with the same id returns the first request's
1015    /// operation.
1016    #[prost(string, tag = "2")]
1017    pub request_id: ::prost::alloc::string::String,
1018}
1019/// A network interface: private addresses in one subnet, filtered by security
1020/// groups.
1021#[derive(Clone, PartialEq, ::prost::Message)]
1022pub struct NetworkInterface {
1023    /// The interface's resource name.
1024    #[prost(string, tag = "1")]
1025    pub name: ::prost::alloc::string::String,
1026    /// The interface's URN, the identifier access policies and the audit log
1027    /// use.
1028    #[prost(string, tag = "2")]
1029    pub urn: ::prost::alloc::string::String,
1030    /// The subnet the interface has its addresses in, in the same project
1031    /// and zone.
1032    #[prost(string, tag = "3")]
1033    pub subnet: ::prost::alloc::string::String,
1034    /// The security groups that filter the interface's traffic, as its
1035    /// security group associations (each a `SecurityGroupAssociation`) set
1036    /// them. The interface admits the traffic any of them allows. With none,
1037    /// it admits and sends nothing except replies to its own traffic and
1038    /// address resolution (ARP and IPv6 neighbor discovery): it is closed.
1039    #[prost(string, repeated, tag = "4")]
1040    pub security_groups: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1041    /// Whether a packet the instance sends must carry the interface's own
1042    /// MAC and IP address as its source; `true` when left unset. Turn it off
1043    /// for an instance that forwards traffic for other addresses, such as a
1044    /// router, a NAT instance or a shared virtual IP.
1045    #[prost(bool, optional, tag = "5")]
1046    pub source_address_check: ::core::option::Option<bool>,
1047    /// The interface's private IPv4 address.
1048    #[prost(string, tag = "6")]
1049    pub ipv4_address: ::prost::alloc::string::String,
1050    /// The interface's IPv6 address.
1051    #[prost(string, tag = "7")]
1052    pub ipv6_address: ::prost::alloc::string::String,
1053    /// Whether the interface is in use.
1054    #[prost(enumeration = "network_interface::State", tag = "8")]
1055    pub state: i32,
1056    /// The instance the interface is attached to; empty while it is
1057    /// `network_interface::State::Available`. An instance attaches interfaces when it is launched.
1058    #[prost(string, tag = "9")]
1059    pub instance: ::prost::alloc::string::String,
1060    /// When the network interface was created.
1061    #[prost(message, optional, tag = "10")]
1062    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1063    /// The principal that created the network interface, such as `user:<id>`
1064    /// or `service_account:<id>`; empty for one the platform created.
1065    #[prost(string, tag = "11")]
1066    pub creator: ::prost::alloc::string::String,
1067    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1068    /// console shows.
1069    #[prost(btree_map = "string, string", tag = "12")]
1070    pub tags: ::prost::alloc::collections::BTreeMap<
1071        ::prost::alloc::string::String,
1072        ::prost::alloc::string::String,
1073    >,
1074}
1075/// Nested message and enum types in `NetworkInterface`.
1076pub mod network_interface {
1077    /// Whether an interface is in use.
1078    #[derive(
1079        Clone,
1080        Copy,
1081        Debug,
1082        PartialEq,
1083        Eq,
1084        Hash,
1085        PartialOrd,
1086        Ord,
1087        ::prost::Enumeration
1088    )]
1089    #[repr(i32)]
1090    pub enum State {
1091        /// Not set.
1092        Unspecified = 0,
1093        /// Not attached to anything.
1094        Available = 1,
1095        /// Attached; `instance` names what to.
1096        Attached = 2,
1097    }
1098    impl State {
1099        /// String value of the enum field names used in the ProtoBuf definition.
1100        ///
1101        /// The values are not transformed in any way and thus are considered stable
1102        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1103        pub fn as_str_name(&self) -> &'static str {
1104            match self {
1105                Self::Unspecified => "STATE_UNSPECIFIED",
1106                Self::Available => "AVAILABLE",
1107                Self::Attached => "ATTACHED",
1108            }
1109        }
1110        /// Creates an enum from field names used in the ProtoBuf definition.
1111        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1112            match value {
1113                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1114                "AVAILABLE" => Some(Self::Available),
1115                "ATTACHED" => Some(Self::Attached),
1116                _ => None,
1117            }
1118        }
1119    }
1120}
1121/// The request for GetNetworkInterface.
1122#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1123pub struct GetNetworkInterfaceRequest {
1124    /// The network interface to return.
1125    #[prost(string, tag = "1")]
1126    pub name: ::prost::alloc::string::String,
1127}
1128/// The request for ListNetworkInterfaces.
1129#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1130pub struct ListNetworkInterfacesRequest {
1131    /// The zone whose network interfaces to list,
1132    /// `projects/{project}/zones/{zone}`.
1133    #[prost(string, tag = "1")]
1134    pub parent: ::prost::alloc::string::String,
1135    /// The most network interfaces to return; the server clamps it, and 0
1136    /// means its default.
1137    #[prost(int32, tag = "2")]
1138    pub page_size: i32,
1139    /// A previous response's `next_page_token`, for the page after it.
1140    #[prost(string, tag = "3")]
1141    pub page_token: ::prost::alloc::string::String,
1142    /// Only the interfaces in this subnet, when set.
1143    #[prost(string, tag = "4")]
1144    pub subnet: ::prost::alloc::string::String,
1145}
1146/// The response for ListNetworkInterfaces.
1147#[derive(Clone, PartialEq, ::prost::Message)]
1148pub struct ListNetworkInterfacesResponse {
1149    /// The network interfaces on this page.
1150    #[prost(message, repeated, tag = "1")]
1151    pub network_interfaces: ::prost::alloc::vec::Vec<NetworkInterface>,
1152    /// The token for the next page; empty on the last one.
1153    #[prost(string, tag = "2")]
1154    pub next_page_token: ::prost::alloc::string::String,
1155}
1156/// The request for CreateNetworkInterface.
1157#[derive(Clone, PartialEq, ::prost::Message)]
1158pub struct CreateNetworkInterfaceRequest {
1159    /// The zone to create the network interface in,
1160    /// `projects/{project}/zones/{zone}`.
1161    #[prost(string, tag = "1")]
1162    pub parent: ::prost::alloc::string::String,
1163    /// The interface to create: its subnet, and optionally its source-address
1164    /// check and tags.
1165    #[prost(message, optional, tag = "2")]
1166    pub network_interface: ::core::option::Option<NetworkInterface>,
1167    /// A UUID; a repeat with the same id returns the first request's
1168    /// operation instead of creating a second network interface.
1169    #[prost(string, tag = "3")]
1170    pub request_id: ::prost::alloc::string::String,
1171}
1172/// The request for UpdateNetworkInterface.
1173#[derive(Clone, PartialEq, ::prost::Message)]
1174pub struct UpdateNetworkInterfaceRequest {
1175    /// The network interface, by its name, with the fields to change.
1176    #[prost(message, optional, tag = "1")]
1177    pub network_interface: ::core::option::Option<NetworkInterface>,
1178    /// The fields to change: `source_address_check`, `tags`, or both. `*` is
1179    /// both.
1180    #[prost(message, optional, tag = "2")]
1181    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1182    /// A UUID; a repeat with the same id returns the first request's
1183    /// operation instead of changing the network interface again.
1184    #[prost(string, tag = "3")]
1185    pub request_id: ::prost::alloc::string::String,
1186}
1187/// The request for DeleteNetworkInterface.
1188#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1189pub struct DeleteNetworkInterfaceRequest {
1190    /// The network interface to delete.
1191    #[prost(string, tag = "1")]
1192    pub name: ::prost::alloc::string::String,
1193    /// A UUID; a repeat with the same id returns the first request's
1194    /// operation.
1195    #[prost(string, tag = "2")]
1196    pub request_id: ::prost::alloc::string::String,
1197}
1198/// A route: traffic to `destination` leaves through one gateway. Set exactly
1199/// one of `internet_gateway` and `nat_gateway`.
1200#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1201pub struct Route {
1202    /// The route's resource name.
1203    #[prost(string, tag = "1")]
1204    pub name: ::prost::alloc::string::String,
1205    /// The destination: the IPv4 default route, written with an all-zero
1206    /// address and prefix length 0, or the IPv6 one, `::/0`. A route table
1207    /// decides only where traffic to the internet goes.
1208    #[prost(string, tag = "2")]
1209    pub destination: ::prost::alloc::string::String,
1210    /// The internet gateway of the table's VPC to send the traffic to.
1211    #[prost(string, tag = "3")]
1212    pub internet_gateway: ::prost::alloc::string::String,
1213    /// The NAT gateway in the table's VPC to send the traffic to, for the
1214    /// IPv4 default route only: a NAT gateway translates IPv4 only. Named in
1215    /// the gateway's own zone; a name with another zone is refused with
1216    /// `INVALID_ARGUMENT`.
1217    #[prost(string, tag = "4")]
1218    pub nat_gateway: ::prost::alloc::string::String,
1219}
1220/// The request for GetRoute.
1221#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1222pub struct GetRouteRequest {
1223    /// The route to return.
1224    #[prost(string, tag = "1")]
1225    pub name: ::prost::alloc::string::String,
1226}
1227/// The request for ListRoutes.
1228#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1229pub struct ListRoutesRequest {
1230    /// The route table whose routes to list,
1231    /// `projects/{project}/regions/{region}/routeTables/{route_table}`.
1232    #[prost(string, tag = "1")]
1233    pub parent: ::prost::alloc::string::String,
1234    /// The most routes to return; the server clamps it, and 0 means its
1235    /// default.
1236    #[prost(int32, tag = "2")]
1237    pub page_size: i32,
1238    /// A previous response's `next_page_token`, for the page after it.
1239    #[prost(string, tag = "3")]
1240    pub page_token: ::prost::alloc::string::String,
1241}
1242/// The response for ListRoutes.
1243#[derive(Clone, PartialEq, ::prost::Message)]
1244pub struct ListRoutesResponse {
1245    /// The routes on this page.
1246    #[prost(message, repeated, tag = "1")]
1247    pub routes: ::prost::alloc::vec::Vec<Route>,
1248    /// The token for the next page; empty on the last one.
1249    #[prost(string, tag = "2")]
1250    pub next_page_token: ::prost::alloc::string::String,
1251}
1252/// The request for CreateRoute.
1253#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1254pub struct CreateRouteRequest {
1255    /// The route table to add the route to,
1256    /// `projects/{project}/regions/{region}/routeTables/{route_table}`.
1257    #[prost(string, tag = "1")]
1258    pub parent: ::prost::alloc::string::String,
1259    /// The route to add: its destination and its gateway.
1260    #[prost(message, optional, tag = "2")]
1261    pub route: ::core::option::Option<Route>,
1262    /// A UUID; a repeat with the same id returns the first request's
1263    /// operation instead of adding the route again.
1264    #[prost(string, tag = "3")]
1265    pub request_id: ::prost::alloc::string::String,
1266}
1267/// The request for DeleteRoute.
1268#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1269pub struct DeleteRouteRequest {
1270    /// The route to remove.
1271    #[prost(string, tag = "1")]
1272    pub name: ::prost::alloc::string::String,
1273    /// A UUID; a repeat with the same id returns the first request's
1274    /// operation.
1275    #[prost(string, tag = "2")]
1276    pub request_id: ::prost::alloc::string::String,
1277}
1278/// Routes out of a VPC for the subnets associated with the table.
1279#[derive(Clone, PartialEq, ::prost::Message)]
1280pub struct RouteTable {
1281    /// The route table's resource name.
1282    #[prost(string, tag = "1")]
1283    pub name: ::prost::alloc::string::String,
1284    /// The route table's URN, the identifier access policies and the audit
1285    /// log use.
1286    #[prost(string, tag = "2")]
1287    pub urn: ::prost::alloc::string::String,
1288    /// The VPC the table routes for, in the same project and region.
1289    #[prost(string, tag = "3")]
1290    pub vpc: ::prost::alloc::string::String,
1291    /// Whether the platform created the table with the VPC, as its main route
1292    /// table. Only the project's default VPC has such resources. It can't be
1293    /// deleted, and goes with its VPC. Like any other table, it routes only
1294    /// for the subnets a route table association names it for.
1295    #[prost(bool, tag = "4")]
1296    pub main: bool,
1297    /// The VPC's own ranges, which every table reaches directly. Traffic
1298    /// within the VPC never needs a route.
1299    #[prost(string, repeated, tag = "5")]
1300    pub local_routes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1301    /// When the route table was created.
1302    #[prost(message, optional, tag = "6")]
1303    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1304    /// The principal that created the route table, such as `user:<id>` or
1305    /// `service_account:<id>`; empty for one the platform created.
1306    #[prost(string, tag = "7")]
1307    pub creator: ::prost::alloc::string::String,
1308    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1309    /// console shows.
1310    #[prost(btree_map = "string, string", tag = "8")]
1311    pub tags: ::prost::alloc::collections::BTreeMap<
1312        ::prost::alloc::string::String,
1313        ::prost::alloc::string::String,
1314    >,
1315}
1316/// The request for GetRouteTable.
1317#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1318pub struct GetRouteTableRequest {
1319    /// The route table to return.
1320    #[prost(string, tag = "1")]
1321    pub name: ::prost::alloc::string::String,
1322}
1323/// The request for ListRouteTables.
1324#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1325pub struct ListRouteTablesRequest {
1326    /// The region whose route tables to list,
1327    /// `projects/{project}/regions/{region}`.
1328    #[prost(string, tag = "1")]
1329    pub parent: ::prost::alloc::string::String,
1330    /// The most route tables to return; the server clamps it, and 0 means
1331    /// its default.
1332    #[prost(int32, tag = "2")]
1333    pub page_size: i32,
1334    /// A previous response's `next_page_token`, for the page after it.
1335    #[prost(string, tag = "3")]
1336    pub page_token: ::prost::alloc::string::String,
1337    /// Only the route tables of this VPC, when set.
1338    #[prost(string, tag = "4")]
1339    pub vpc: ::prost::alloc::string::String,
1340}
1341/// The response for ListRouteTables.
1342#[derive(Clone, PartialEq, ::prost::Message)]
1343pub struct ListRouteTablesResponse {
1344    /// The route tables on this page.
1345    #[prost(message, repeated, tag = "1")]
1346    pub route_tables: ::prost::alloc::vec::Vec<RouteTable>,
1347    /// The token for the next page; empty on the last one.
1348    #[prost(string, tag = "2")]
1349    pub next_page_token: ::prost::alloc::string::String,
1350}
1351/// The request for CreateRouteTable.
1352#[derive(Clone, PartialEq, ::prost::Message)]
1353pub struct CreateRouteTableRequest {
1354    /// The region to create the route table in,
1355    /// `projects/{project}/regions/{region}`.
1356    #[prost(string, tag = "1")]
1357    pub parent: ::prost::alloc::string::String,
1358    /// The route table to create: its VPC, and optionally its tags.
1359    #[prost(message, optional, tag = "2")]
1360    pub route_table: ::core::option::Option<RouteTable>,
1361    /// A UUID; a repeat with the same id returns the first request's
1362    /// operation instead of creating a second route table.
1363    #[prost(string, tag = "3")]
1364    pub request_id: ::prost::alloc::string::String,
1365}
1366/// The request for UpdateRouteTable.
1367#[derive(Clone, PartialEq, ::prost::Message)]
1368pub struct UpdateRouteTableRequest {
1369    /// The route table, by its name, with the fields to change.
1370    #[prost(message, optional, tag = "1")]
1371    pub route_table: ::core::option::Option<RouteTable>,
1372    /// The fields to change: `tags`, or `*`.
1373    #[prost(message, optional, tag = "2")]
1374    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1375    /// A UUID; a repeat with the same id returns the first request's
1376    /// operation instead of changing the route table again.
1377    #[prost(string, tag = "3")]
1378    pub request_id: ::prost::alloc::string::String,
1379}
1380/// The request for DeleteRouteTable.
1381#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1382pub struct DeleteRouteTableRequest {
1383    /// The route table to delete.
1384    #[prost(string, tag = "1")]
1385    pub name: ::prost::alloc::string::String,
1386    /// A UUID; a repeat with the same id returns the first request's
1387    /// operation.
1388    #[prost(string, tag = "2")]
1389    pub request_id: ::prost::alloc::string::String,
1390}
1391/// The route table a subnet uses.
1392#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1393pub struct RouteTableAssociation {
1394    /// The association's resource name. Its last segment is the route
1395    /// table's id.
1396    #[prost(string, tag = "1")]
1397    pub name: ::prost::alloc::string::String,
1398    /// The route table the subnet uses, in the subnet's VPC.
1399    #[prost(string, tag = "2")]
1400    pub route_table: ::prost::alloc::string::String,
1401}
1402/// The request for GetRouteTableAssociation.
1403#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1404pub struct GetRouteTableAssociationRequest {
1405    /// The association to return.
1406    #[prost(string, tag = "1")]
1407    pub name: ::prost::alloc::string::String,
1408}
1409/// The request for ListRouteTableAssociations.
1410#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1411pub struct ListRouteTableAssociationsRequest {
1412    /// The subnet whose association to list,
1413    /// `projects/{project}/zones/{zone}/subnets/{subnet}`.
1414    #[prost(string, tag = "1")]
1415    pub parent: ::prost::alloc::string::String,
1416    /// The most associations to return; the server clamps it, and 0 means
1417    /// its default.
1418    #[prost(int32, tag = "2")]
1419    pub page_size: i32,
1420    /// A previous response's `next_page_token`, for the page after it.
1421    #[prost(string, tag = "3")]
1422    pub page_token: ::prost::alloc::string::String,
1423}
1424/// The response for ListRouteTableAssociations.
1425#[derive(Clone, PartialEq, ::prost::Message)]
1426pub struct ListRouteTableAssociationsResponse {
1427    /// The associations on this page.
1428    #[prost(message, repeated, tag = "1")]
1429    pub route_table_associations: ::prost::alloc::vec::Vec<RouteTableAssociation>,
1430    /// The token for the next page; empty on the last one.
1431    #[prost(string, tag = "2")]
1432    pub next_page_token: ::prost::alloc::string::String,
1433}
1434/// The request for CreateRouteTableAssociation.
1435#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1436pub struct CreateRouteTableAssociationRequest {
1437    /// The subnet to associate the route table with,
1438    /// `projects/{project}/zones/{zone}/subnets/{subnet}`.
1439    #[prost(string, tag = "1")]
1440    pub parent: ::prost::alloc::string::String,
1441    /// The association to create: its route table.
1442    #[prost(message, optional, tag = "2")]
1443    pub route_table_association: ::core::option::Option<RouteTableAssociation>,
1444    /// A UUID; a repeat with the same id returns the first request's
1445    /// operation.
1446    #[prost(string, tag = "3")]
1447    pub request_id: ::prost::alloc::string::String,
1448}
1449/// The request for DeleteRouteTableAssociation.
1450#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1451pub struct DeleteRouteTableAssociationRequest {
1452    /// The association to remove.
1453    #[prost(string, tag = "1")]
1454    pub name: ::prost::alloc::string::String,
1455    /// A UUID; a repeat with the same id returns the first request's
1456    /// operation.
1457    #[prost(string, tag = "2")]
1458    pub request_id: ::prost::alloc::string::String,
1459}
1460/// Rules that allow traffic to and from the network interfaces associated
1461/// with the group.
1462#[derive(Clone, PartialEq, ::prost::Message)]
1463pub struct SecurityGroup {
1464    /// The group's resource name.
1465    #[prost(string, tag = "1")]
1466    pub name: ::prost::alloc::string::String,
1467    /// The group's URN, the identifier access policies and the audit log use.
1468    #[prost(string, tag = "2")]
1469    pub urn: ::prost::alloc::string::String,
1470    /// The VPC the group belongs to, in the same project and region.
1471    #[prost(string, tag = "3")]
1472    pub vpc: ::prost::alloc::string::String,
1473    /// Whether the platform created the group with the VPC. Only the
1474    /// project's default VPC has such resources. It can't be deleted, and
1475    /// goes with its VPC.
1476    #[prost(bool, tag = "4")]
1477    pub vpc_default: bool,
1478    /// When the security group was created.
1479    #[prost(message, optional, tag = "5")]
1480    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1481    /// The principal that created the security group, such as `user:<id>` or
1482    /// `service_account:<id>`; empty for one the platform created.
1483    #[prost(string, tag = "6")]
1484    pub creator: ::prost::alloc::string::String,
1485    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1486    /// console shows.
1487    #[prost(btree_map = "string, string", tag = "7")]
1488    pub tags: ::prost::alloc::collections::BTreeMap<
1489        ::prost::alloc::string::String,
1490        ::prost::alloc::string::String,
1491    >,
1492}
1493/// The request for GetSecurityGroup.
1494#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1495pub struct GetSecurityGroupRequest {
1496    /// The security group to return.
1497    #[prost(string, tag = "1")]
1498    pub name: ::prost::alloc::string::String,
1499}
1500/// The request for ListSecurityGroups.
1501#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1502pub struct ListSecurityGroupsRequest {
1503    /// The region whose security groups to list,
1504    /// `projects/{project}/regions/{region}`.
1505    #[prost(string, tag = "1")]
1506    pub parent: ::prost::alloc::string::String,
1507    /// The most security groups to return; the server clamps it, and 0
1508    /// means its default.
1509    #[prost(int32, tag = "2")]
1510    pub page_size: i32,
1511    /// A previous response's `next_page_token`, for the page after it.
1512    #[prost(string, tag = "3")]
1513    pub page_token: ::prost::alloc::string::String,
1514    /// Only the groups of this VPC, when set.
1515    #[prost(string, tag = "4")]
1516    pub vpc: ::prost::alloc::string::String,
1517}
1518/// The response for ListSecurityGroups.
1519#[derive(Clone, PartialEq, ::prost::Message)]
1520pub struct ListSecurityGroupsResponse {
1521    /// The security groups on this page.
1522    #[prost(message, repeated, tag = "1")]
1523    pub security_groups: ::prost::alloc::vec::Vec<SecurityGroup>,
1524    /// The token for the next page; empty on the last one.
1525    #[prost(string, tag = "2")]
1526    pub next_page_token: ::prost::alloc::string::String,
1527}
1528/// The request for CreateSecurityGroup.
1529#[derive(Clone, PartialEq, ::prost::Message)]
1530pub struct CreateSecurityGroupRequest {
1531    /// The region to create the security group in,
1532    /// `projects/{project}/regions/{region}`.
1533    #[prost(string, tag = "1")]
1534    pub parent: ::prost::alloc::string::String,
1535    /// The group to create: its VPC, and optionally its tags.
1536    #[prost(message, optional, tag = "2")]
1537    pub security_group: ::core::option::Option<SecurityGroup>,
1538    /// A UUID; a repeat with the same id returns the first request's
1539    /// operation instead of creating a second security group.
1540    #[prost(string, tag = "3")]
1541    pub request_id: ::prost::alloc::string::String,
1542}
1543/// The request for UpdateSecurityGroup.
1544#[derive(Clone, PartialEq, ::prost::Message)]
1545pub struct UpdateSecurityGroupRequest {
1546    /// The security group, by its name, with the fields to change.
1547    #[prost(message, optional, tag = "1")]
1548    pub security_group: ::core::option::Option<SecurityGroup>,
1549    /// The fields to change: `tags`, or `*`.
1550    #[prost(message, optional, tag = "2")]
1551    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1552    /// A UUID; a repeat with the same id returns the first request's
1553    /// operation instead of changing the security group again.
1554    #[prost(string, tag = "3")]
1555    pub request_id: ::prost::alloc::string::String,
1556}
1557/// The request for DeleteSecurityGroup.
1558#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1559pub struct DeleteSecurityGroupRequest {
1560    /// The security group to delete.
1561    #[prost(string, tag = "1")]
1562    pub name: ::prost::alloc::string::String,
1563    /// A UUID; a repeat with the same id returns the first request's
1564    /// operation.
1565    #[prost(string, tag = "2")]
1566    pub request_id: ::prost::alloc::string::String,
1567}
1568/// A security group that filters a network interface's traffic.
1569#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1570pub struct SecurityGroupAssociation {
1571    /// The association's resource name. Its last segment is the security
1572    /// group's id.
1573    #[prost(string, tag = "1")]
1574    pub name: ::prost::alloc::string::String,
1575    /// The security group, in the interface's VPC.
1576    #[prost(string, tag = "2")]
1577    pub security_group: ::prost::alloc::string::String,
1578}
1579/// The request for GetSecurityGroupAssociation.
1580#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1581pub struct GetSecurityGroupAssociationRequest {
1582    /// The association to return.
1583    #[prost(string, tag = "1")]
1584    pub name: ::prost::alloc::string::String,
1585}
1586/// The request for ListSecurityGroupAssociations.
1587#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1588pub struct ListSecurityGroupAssociationsRequest {
1589    /// The network interface whose associations to list,
1590    /// `projects/{project}/zones/{zone}/networkInterfaces/{network_interface}`.
1591    #[prost(string, tag = "1")]
1592    pub parent: ::prost::alloc::string::String,
1593    /// The most associations to return; the server clamps it, and 0 means
1594    /// its default.
1595    #[prost(int32, tag = "2")]
1596    pub page_size: i32,
1597    /// A previous response's `next_page_token`, for the page after it.
1598    #[prost(string, tag = "3")]
1599    pub page_token: ::prost::alloc::string::String,
1600}
1601/// The response for ListSecurityGroupAssociations.
1602#[derive(Clone, PartialEq, ::prost::Message)]
1603pub struct ListSecurityGroupAssociationsResponse {
1604    /// The associations on this page.
1605    #[prost(message, repeated, tag = "1")]
1606    pub security_group_associations: ::prost::alloc::vec::Vec<SecurityGroupAssociation>,
1607    /// The token for the next page; empty on the last one.
1608    #[prost(string, tag = "2")]
1609    pub next_page_token: ::prost::alloc::string::String,
1610}
1611/// The request for CreateSecurityGroupAssociation.
1612#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1613pub struct CreateSecurityGroupAssociationRequest {
1614    /// The network interface to associate the security group with,
1615    /// `projects/{project}/zones/{zone}/networkInterfaces/{network_interface}`.
1616    #[prost(string, tag = "1")]
1617    pub parent: ::prost::alloc::string::String,
1618    /// The association to create: its security group.
1619    #[prost(message, optional, tag = "2")]
1620    pub security_group_association: ::core::option::Option<SecurityGroupAssociation>,
1621    /// A UUID; a repeat with the same id returns the first request's
1622    /// operation.
1623    #[prost(string, tag = "3")]
1624    pub request_id: ::prost::alloc::string::String,
1625}
1626/// The request for DeleteSecurityGroupAssociation.
1627#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1628pub struct DeleteSecurityGroupAssociationRequest {
1629    /// The association to remove.
1630    #[prost(string, tag = "1")]
1631    pub name: ::prost::alloc::string::String,
1632    /// A UUID; a repeat with the same id returns the first request's
1633    /// operation.
1634    #[prost(string, tag = "2")]
1635    pub request_id: ::prost::alloc::string::String,
1636}
1637/// A security group rule: the traffic it allows in one direction, to or from
1638/// one peer. Set exactly one of `cidr_block`, `peer_security_group` and
1639/// `same_group`.
1640#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1641pub struct SecurityGroupRule {
1642    /// The rule's resource name.
1643    #[prost(string, tag = "1")]
1644    pub name: ::prost::alloc::string::String,
1645    /// Which traffic the rule applies to.
1646    #[prost(enumeration = "security_group_rule::Direction", tag = "2")]
1647    pub direction: i32,
1648    /// The traffic the rule allows.
1649    #[prost(enumeration = "security_group_rule::Protocol", tag = "3")]
1650    pub protocol: i32,
1651    /// The first port the rule matches, for `security_group_rule::Protocol::Tcp` and `security_group_rule::Protocol::Udp`. Each set of
1652    /// ports has one spelling, and the rule reads back in it: `first_port` 0
1653    /// and `last_port` 0 match every port, a `last_port` of 0 the single port
1654    /// `first_port`, and a `first_port` below `last_port` the range between
1655    /// them. Any other spelling of a set is refused with `INVALID_ARGUMENT`
1656    /// naming the one to use: `first_port` 22 and `last_port` 22 is
1657    /// `first_port` 22 and `last_port` 0, and 0 or 1 to 65535 is 0 and 0.
1658    #[prost(int32, tag = "4")]
1659    pub first_port: i32,
1660    /// The last port the rule matches, above `first_port`; 0 for the single
1661    /// port `first_port`, or with `first_port` 0 for every port.
1662    #[prost(int32, tag = "5")]
1663    pub last_port: i32,
1664    /// The peer as an address range: where admitted traffic comes from, or
1665    /// where sent traffic goes to.
1666    #[prost(string, tag = "6")]
1667    pub cidr_block: ::prost::alloc::string::String,
1668    /// The peer as another security group of the same VPC: its members'
1669    /// addresses. The rule's own group is refused here with
1670    /// `INVALID_ARGUMENT`: it is `same_group`.
1671    #[prost(string, tag = "7")]
1672    pub peer_security_group: ::prost::alloc::string::String,
1673    /// The peer as the rule's own group's members.
1674    #[prost(bool, tag = "8")]
1675    pub same_group: bool,
1676    /// What the rule is for.
1677    #[prost(string, tag = "9")]
1678    pub description: ::prost::alloc::string::String,
1679}
1680/// Nested message and enum types in `SecurityGroupRule`.
1681pub mod security_group_rule {
1682    /// Which traffic a rule applies to.
1683    #[derive(
1684        Clone,
1685        Copy,
1686        Debug,
1687        PartialEq,
1688        Eq,
1689        Hash,
1690        PartialOrd,
1691        Ord,
1692        ::prost::Enumeration
1693    )]
1694    #[repr(i32)]
1695    pub enum Direction {
1696        /// Not set.
1697        Unspecified = 0,
1698        /// Traffic an interface in the group admits.
1699        Ingress = 1,
1700        /// Traffic an interface in the group sends.
1701        Egress = 2,
1702    }
1703    impl Direction {
1704        /// String value of the enum field names used in the ProtoBuf definition.
1705        ///
1706        /// The values are not transformed in any way and thus are considered stable
1707        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1708        pub fn as_str_name(&self) -> &'static str {
1709            match self {
1710                Self::Unspecified => "DIRECTION_UNSPECIFIED",
1711                Self::Ingress => "INGRESS",
1712                Self::Egress => "EGRESS",
1713            }
1714        }
1715        /// Creates an enum from field names used in the ProtoBuf definition.
1716        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1717            match value {
1718                "DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
1719                "INGRESS" => Some(Self::Ingress),
1720                "EGRESS" => Some(Self::Egress),
1721                _ => None,
1722            }
1723        }
1724    }
1725    /// The traffic a rule matches.
1726    #[derive(
1727        Clone,
1728        Copy,
1729        Debug,
1730        PartialEq,
1731        Eq,
1732        Hash,
1733        PartialOrd,
1734        Ord,
1735        ::prost::Enumeration
1736    )]
1737    #[repr(i32)]
1738    pub enum Protocol {
1739        /// Not set.
1740        Unspecified = 0,
1741        /// Every protocol; ports don't apply.
1742        All = 1,
1743        /// TCP.
1744        Tcp = 2,
1745        /// UDP.
1746        Udp = 3,
1747        /// ICMP to and from IPv4 ranges, ICMPv6 to and from IPv6 ranges, every
1748        /// type and code; ports don't apply.
1749        Icmp = 4,
1750    }
1751    impl Protocol {
1752        /// String value of the enum field names used in the ProtoBuf definition.
1753        ///
1754        /// The values are not transformed in any way and thus are considered stable
1755        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1756        pub fn as_str_name(&self) -> &'static str {
1757            match self {
1758                Self::Unspecified => "PROTOCOL_UNSPECIFIED",
1759                Self::All => "ALL",
1760                Self::Tcp => "TCP",
1761                Self::Udp => "UDP",
1762                Self::Icmp => "ICMP",
1763            }
1764        }
1765        /// Creates an enum from field names used in the ProtoBuf definition.
1766        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1767            match value {
1768                "PROTOCOL_UNSPECIFIED" => Some(Self::Unspecified),
1769                "ALL" => Some(Self::All),
1770                "TCP" => Some(Self::Tcp),
1771                "UDP" => Some(Self::Udp),
1772                "ICMP" => Some(Self::Icmp),
1773                _ => None,
1774            }
1775        }
1776    }
1777}
1778/// The request for GetSecurityGroupRule.
1779#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1780pub struct GetSecurityGroupRuleRequest {
1781    /// The rule to return.
1782    #[prost(string, tag = "1")]
1783    pub name: ::prost::alloc::string::String,
1784}
1785/// The request for ListSecurityGroupRules.
1786#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1787pub struct ListSecurityGroupRulesRequest {
1788    /// The security group whose rules to list,
1789    /// `projects/{project}/regions/{region}/securityGroups/{security_group}`.
1790    #[prost(string, tag = "1")]
1791    pub parent: ::prost::alloc::string::String,
1792    /// The most rules to return; the server clamps it, and 0 means its
1793    /// default.
1794    #[prost(int32, tag = "2")]
1795    pub page_size: i32,
1796    /// A previous response's `next_page_token`, for the page after it.
1797    #[prost(string, tag = "3")]
1798    pub page_token: ::prost::alloc::string::String,
1799}
1800/// The response for ListSecurityGroupRules.
1801#[derive(Clone, PartialEq, ::prost::Message)]
1802pub struct ListSecurityGroupRulesResponse {
1803    /// The rules on this page.
1804    #[prost(message, repeated, tag = "1")]
1805    pub security_group_rules: ::prost::alloc::vec::Vec<SecurityGroupRule>,
1806    /// The token for the next page; empty on the last one.
1807    #[prost(string, tag = "2")]
1808    pub next_page_token: ::prost::alloc::string::String,
1809}
1810/// The request for CreateSecurityGroupRule.
1811#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1812pub struct CreateSecurityGroupRuleRequest {
1813    /// The security group to add the rule to,
1814    /// `projects/{project}/regions/{region}/securityGroups/{security_group}`.
1815    #[prost(string, tag = "1")]
1816    pub parent: ::prost::alloc::string::String,
1817    /// The rule to add.
1818    #[prost(message, optional, tag = "2")]
1819    pub security_group_rule: ::core::option::Option<SecurityGroupRule>,
1820    /// A UUID; a repeat with the same id returns the first request's
1821    /// operation instead of adding the rule again.
1822    #[prost(string, tag = "3")]
1823    pub request_id: ::prost::alloc::string::String,
1824}
1825/// The request for DeleteSecurityGroupRule.
1826#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1827pub struct DeleteSecurityGroupRuleRequest {
1828    /// The rule to remove.
1829    #[prost(string, tag = "1")]
1830    pub name: ::prost::alloc::string::String,
1831    /// A UUID; a repeat with the same id returns the first request's
1832    /// operation.
1833    #[prost(string, tag = "2")]
1834    pub request_id: ::prost::alloc::string::String,
1835}
1836/// The part of a VPC in one zone, with its own address ranges.
1837#[derive(Clone, PartialEq, ::prost::Message)]
1838pub struct Subnet {
1839    /// The subnet's resource name.
1840    #[prost(string, tag = "1")]
1841    pub name: ::prost::alloc::string::String,
1842    /// The subnet's URN, the identifier access policies and the audit log
1843    /// use.
1844    #[prost(string, tag = "2")]
1845    pub urn: ::prost::alloc::string::String,
1846    /// The VPC the subnet is part of, in the same project and in the zone's
1847    /// region. For now a VPC lives in one zone of its region: a subnet in
1848    /// another zone is refused with `FAILED_PRECONDITION`.
1849    #[prost(string, tag = "3")]
1850    pub vpc: ::prost::alloc::string::String,
1851    /// The route table that decides where the subnet's traffic goes, as the
1852    /// subnet's route table association (a `RouteTableAssociation`) sets it.
1853    /// A subnet reaches, and is reached from, the internet for an address
1854    /// family only if its own route table has that family's default route (a
1855    /// `Route` with that family's default destination). Empty while it has
1856    /// none: a subnet with no route table has no route out of its VPC and isn't
1857    /// reachable from the internet, even when the VPC has an internet gateway.
1858    #[prost(string, tag = "4")]
1859    pub route_table: ::prost::alloc::string::String,
1860    /// The ACL that filters traffic in and out of the subnet, as the subnet's
1861    /// ACL association (an `AclAssociation`) sets it. Empty while it has
1862    /// none: nothing is filtered at the subnet's edge, and its interfaces'
1863    /// security groups still apply.
1864    #[prost(string, tag = "5")]
1865    pub acl: ::prost::alloc::string::String,
1866    /// Whether a launch that creates its network interface in the subnet,
1867    /// as the GraphQL API's `launchInstance` does, gives that interface a
1868    /// floating IP of its own, released when the instance is terminated. The
1869    /// interface is created with its address or not at all: with none free in
1870    /// the zone, or the public IP quota used up, the instance is `FAILED`
1871    /// with the reason. `CreateInstance` takes existing interfaces, so an instance it launches
1872    /// gets none: create a floating IP and a floating IP association for its
1873    /// interface instead.
1874    #[prost(bool, tag = "6")]
1875    pub auto_assign_public_ip: bool,
1876    /// The subnet's IPv4 range.
1877    #[prost(string, tag = "7")]
1878    pub ipv4_cidr_block: ::prost::alloc::string::String,
1879    /// The subnet's IPv6 range, a `/72`.
1880    #[prost(string, tag = "8")]
1881    pub ipv6_cidr_block: ::prost::alloc::string::String,
1882    /// The IPv4 address of the subnet's router.
1883    #[prost(string, tag = "9")]
1884    pub ipv4_gateway: ::prost::alloc::string::String,
1885    /// The IPv6 address of the subnet's router.
1886    #[prost(string, tag = "10")]
1887    pub ipv6_gateway: ::prost::alloc::string::String,
1888    /// The DNS servers instances in the subnet use over IPv4.
1889    #[prost(string, repeated, tag = "11")]
1890    pub ipv4_dns_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1891    /// The DNS servers instances in the subnet use over IPv6.
1892    #[prost(string, repeated, tag = "12")]
1893    pub ipv6_dns_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1894    /// How many IPv4 addresses in the subnet are free for interfaces.
1895    #[prost(int64, tag = "13")]
1896    pub available_ipv4_address_count: i64,
1897    /// When the subnet was created.
1898    #[prost(message, optional, tag = "14")]
1899    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1900    /// The principal that created the subnet, such as `user:<id>` or
1901    /// `service_account:<id>`; empty for one the platform created.
1902    #[prost(string, tag = "15")]
1903    pub creator: ::prost::alloc::string::String,
1904    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1905    /// console shows.
1906    #[prost(btree_map = "string, string", tag = "16")]
1907    pub tags: ::prost::alloc::collections::BTreeMap<
1908        ::prost::alloc::string::String,
1909        ::prost::alloc::string::String,
1910    >,
1911}
1912/// The request for GetSubnet.
1913#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1914pub struct GetSubnetRequest {
1915    /// The subnet to return.
1916    #[prost(string, tag = "1")]
1917    pub name: ::prost::alloc::string::String,
1918}
1919/// The request for ListSubnets.
1920#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1921pub struct ListSubnetsRequest {
1922    /// The zone whose subnets to list, `projects/{project}/zones/{zone}`.
1923    #[prost(string, tag = "1")]
1924    pub parent: ::prost::alloc::string::String,
1925    /// The most subnets to return; the server clamps it, and 0 means its
1926    /// default.
1927    #[prost(int32, tag = "2")]
1928    pub page_size: i32,
1929    /// A previous response's `next_page_token`, for the page after it.
1930    #[prost(string, tag = "3")]
1931    pub page_token: ::prost::alloc::string::String,
1932    /// Only the subnets of this VPC, when set.
1933    #[prost(string, tag = "4")]
1934    pub vpc: ::prost::alloc::string::String,
1935}
1936/// The response for ListSubnets.
1937#[derive(Clone, PartialEq, ::prost::Message)]
1938pub struct ListSubnetsResponse {
1939    /// The subnets on this page.
1940    #[prost(message, repeated, tag = "1")]
1941    pub subnets: ::prost::alloc::vec::Vec<Subnet>,
1942    /// The token for the next page; empty on the last one.
1943    #[prost(string, tag = "2")]
1944    pub next_page_token: ::prost::alloc::string::String,
1945}
1946/// The request for CreateSubnet.
1947#[derive(Clone, PartialEq, ::prost::Message)]
1948pub struct CreateSubnetRequest {
1949    /// The zone to create the subnet in, `projects/{project}/zones/{zone}`.
1950    #[prost(string, tag = "1")]
1951    pub parent: ::prost::alloc::string::String,
1952    /// The subnet to create: its VPC, and optionally its public address
1953    /// assignment and tags.
1954    #[prost(message, optional, tag = "2")]
1955    pub subnet: ::core::option::Option<Subnet>,
1956    /// A UUID; a repeat with the same id returns the first request's
1957    /// operation instead of creating a second subnet.
1958    #[prost(string, tag = "3")]
1959    pub request_id: ::prost::alloc::string::String,
1960}
1961/// The request for UpdateSubnet.
1962#[derive(Clone, PartialEq, ::prost::Message)]
1963pub struct UpdateSubnetRequest {
1964    /// The subnet, by its name, with the fields to change.
1965    #[prost(message, optional, tag = "1")]
1966    pub subnet: ::core::option::Option<Subnet>,
1967    /// The fields to change: `auto_assign_public_ip`, `tags`, or both. `*`
1968    /// is both.
1969    #[prost(message, optional, tag = "2")]
1970    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1971    /// A UUID; a repeat with the same id returns the first request's
1972    /// operation instead of changing the subnet again.
1973    #[prost(string, tag = "3")]
1974    pub request_id: ::prost::alloc::string::String,
1975}
1976/// The request for DeleteSubnet.
1977#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1978pub struct DeleteSubnetRequest {
1979    /// The subnet to delete.
1980    #[prost(string, tag = "1")]
1981    pub name: ::prost::alloc::string::String,
1982    /// A UUID; a repeat with the same id returns the first request's
1983    /// operation.
1984    #[prost(string, tag = "2")]
1985    pub request_id: ::prost::alloc::string::String,
1986}
1987/// A private network in one region.
1988#[derive(Clone, PartialEq, ::prost::Message)]
1989pub struct Vpc {
1990    /// The VPC's resource name.
1991    #[prost(string, tag = "1")]
1992    pub name: ::prost::alloc::string::String,
1993    /// The VPC's URN, the identifier access policies and the audit log use.
1994    #[prost(string, tag = "2")]
1995    pub urn: ::prost::alloc::string::String,
1996    /// The private IPv4 range (RFC 1918), from `/16` to `/28`. A free `/16`
1997    /// of the `172.16` private block when left empty. Subnets are carved from
1998    /// it in equal sizes.
1999    #[prost(string, tag = "3")]
2000    pub ipv4_cidr_block: ::prost::alloc::string::String,
2001    /// The IPv6 range the platform assigned, a `/56`. Each subnet gets a
2002    /// `/72` of it.
2003    #[prost(string, tag = "4")]
2004    pub ipv6_cidr_block: ::prost::alloc::string::String,
2005    /// The prefix length of every subnet's IPv4 range.
2006    #[prost(int32, tag = "5")]
2007    pub subnet_ipv4_prefix_length: i32,
2008    /// How many more subnets the VPC's address space holds.
2009    #[prost(int32, tag = "6")]
2010    pub available_subnet_count: i32,
2011    /// The DNS policy the VPC's resolver relays through, as the VPC's DNS
2012    /// policy association (a `DnsPolicyAssociation`) sets it. Empty while it
2013    /// has none: the VPC then relays through the project's default DNS policy
2014    /// in its region.
2015    #[prost(string, tag = "7")]
2016    pub dns_policy: ::prost::alloc::string::String,
2017    /// The VPC's internet gateway; empty while it has none.
2018    #[prost(string, tag = "8")]
2019    pub internet_gateway: ::prost::alloc::string::String,
2020    /// Whether this is the project's default VPC. Unlike a VPC you create, the
2021    /// platform creates it with defaults: an internet gateway, and a security
2022    /// group, an ACL and a main route table marked as created with the VPC
2023    /// (`vpc_default` on the group and the ACL, `main` on the route table).
2024    #[prost(bool, tag = "9")]
2025    pub project_default: bool,
2026    /// When the VPC was created.
2027    #[prost(message, optional, tag = "10")]
2028    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
2029    /// The principal that created the VPC, such as `user:<id>` or
2030    /// `service_account:<id>`; empty for one the platform created.
2031    #[prost(string, tag = "11")]
2032    pub creator: ::prost::alloc::string::String,
2033    /// Labels of your own, at most 50. The `origin:name` tag is the name the
2034    /// console shows.
2035    #[prost(btree_map = "string, string", tag = "12")]
2036    pub tags: ::prost::alloc::collections::BTreeMap<
2037        ::prost::alloc::string::String,
2038        ::prost::alloc::string::String,
2039    >,
2040}
2041/// The request for GetVpc.
2042#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2043pub struct GetVpcRequest {
2044    /// The VPC to return.
2045    #[prost(string, tag = "1")]
2046    pub name: ::prost::alloc::string::String,
2047}
2048/// The request for ListVpcs.
2049#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2050pub struct ListVpcsRequest {
2051    /// The region whose VPCs to list, `projects/{project}/regions/{region}`.
2052    #[prost(string, tag = "1")]
2053    pub parent: ::prost::alloc::string::String,
2054    /// The most VPCs to return; the server clamps it, and 0 means its
2055    /// default.
2056    #[prost(int32, tag = "2")]
2057    pub page_size: i32,
2058    /// A previous response's `next_page_token`, for the page after it.
2059    #[prost(string, tag = "3")]
2060    pub page_token: ::prost::alloc::string::String,
2061}
2062/// The response for ListVpcs.
2063#[derive(Clone, PartialEq, ::prost::Message)]
2064pub struct ListVpcsResponse {
2065    /// The VPCs on this page.
2066    #[prost(message, repeated, tag = "1")]
2067    pub vpcs: ::prost::alloc::vec::Vec<Vpc>,
2068    /// The token for the next page; empty on the last one.
2069    #[prost(string, tag = "2")]
2070    pub next_page_token: ::prost::alloc::string::String,
2071}
2072/// The request for CreateVpc.
2073#[derive(Clone, PartialEq, ::prost::Message)]
2074pub struct CreateVpcRequest {
2075    /// The region to create the VPC in, `projects/{project}/regions/{region}`.
2076    #[prost(string, tag = "1")]
2077    pub parent: ::prost::alloc::string::String,
2078    /// The VPC to create: optionally its IPv4 range and tags.
2079    #[prost(message, optional, tag = "2")]
2080    pub vpc: ::core::option::Option<Vpc>,
2081    /// A UUID; a repeat with the same id returns the first request's
2082    /// operation instead of creating a second VPC.
2083    #[prost(string, tag = "3")]
2084    pub request_id: ::prost::alloc::string::String,
2085}
2086/// The request for UpdateVpc.
2087#[derive(Clone, PartialEq, ::prost::Message)]
2088pub struct UpdateVpcRequest {
2089    /// The VPC, by its name, with the fields to change.
2090    #[prost(message, optional, tag = "1")]
2091    pub vpc: ::core::option::Option<Vpc>,
2092    /// The fields to change: `tags`, or `*`.
2093    #[prost(message, optional, tag = "2")]
2094    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
2095    /// A UUID; a repeat with the same id returns the first request's
2096    /// operation instead of changing the VPC again.
2097    #[prost(string, tag = "3")]
2098    pub request_id: ::prost::alloc::string::String,
2099}
2100/// The request for DeleteVpc.
2101#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2102pub struct DeleteVpcRequest {
2103    /// The VPC to delete.
2104    #[prost(string, tag = "1")]
2105    pub name: ::prost::alloc::string::String,
2106    /// A UUID; a repeat with the same id returns the first request's
2107    /// operation.
2108    #[prost(string, tag = "2")]
2109    pub request_id: ::prost::alloc::string::String,
2110}
2111impl serde::Serialize for Acl {
2112    #[allow(deprecated)]
2113    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2114    where
2115        S: serde::Serializer,
2116    {
2117        use serde::ser::SerializeStruct;
2118        let mut len = 0;
2119        if !self.name.is_empty() {
2120            len += 1;
2121        }
2122        if !self.urn.is_empty() {
2123            len += 1;
2124        }
2125        if !self.vpc.is_empty() {
2126            len += 1;
2127        }
2128        if self.vpc_default {
2129            len += 1;
2130        }
2131        if self.create_time.is_some() {
2132            len += 1;
2133        }
2134        if !self.creator.is_empty() {
2135            len += 1;
2136        }
2137        if !self.tags.is_empty() {
2138            len += 1;
2139        }
2140        let mut struct_ser = serializer
2141            .serialize_struct("origincloud.network.v1beta1.Acl", len)?;
2142        if !self.name.is_empty() {
2143            struct_ser.serialize_field("name", &self.name)?;
2144        }
2145        if !self.urn.is_empty() {
2146            struct_ser.serialize_field("urn", &self.urn)?;
2147        }
2148        if !self.vpc.is_empty() {
2149            struct_ser.serialize_field("vpc", &self.vpc)?;
2150        }
2151        if self.vpc_default {
2152            struct_ser.serialize_field("vpcDefault", &self.vpc_default)?;
2153        }
2154        if let Some(v) = self.create_time.as_ref() {
2155            struct_ser.serialize_field("createTime", v)?;
2156        }
2157        if !self.creator.is_empty() {
2158            struct_ser.serialize_field("creator", &self.creator)?;
2159        }
2160        if !self.tags.is_empty() {
2161            struct_ser.serialize_field("tags", &self.tags)?;
2162        }
2163        struct_ser.end()
2164    }
2165}
2166impl<'de> serde::Deserialize<'de> for Acl {
2167    #[allow(deprecated)]
2168    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2169    where
2170        D: serde::Deserializer<'de>,
2171    {
2172        const FIELDS: &[&str] = &[
2173            "name",
2174            "urn",
2175            "vpc",
2176            "vpc_default",
2177            "vpcDefault",
2178            "create_time",
2179            "createTime",
2180            "creator",
2181            "tags",
2182        ];
2183        #[allow(clippy::enum_variant_names)]
2184        enum GeneratedField {
2185            Name,
2186            Urn,
2187            Vpc,
2188            VpcDefault,
2189            CreateTime,
2190            Creator,
2191            Tags,
2192            __SkipField__,
2193        }
2194        impl<'de> serde::Deserialize<'de> for GeneratedField {
2195            fn deserialize<D>(
2196                deserializer: D,
2197            ) -> std::result::Result<GeneratedField, D::Error>
2198            where
2199                D: serde::Deserializer<'de>,
2200            {
2201                struct GeneratedVisitor;
2202                impl serde::de::Visitor<'_> for GeneratedVisitor {
2203                    type Value = GeneratedField;
2204                    fn expecting(
2205                        &self,
2206                        formatter: &mut std::fmt::Formatter<'_>,
2207                    ) -> std::fmt::Result {
2208                        write!(formatter, "expected one of: {:?}", & FIELDS)
2209                    }
2210                    #[allow(unused_variables)]
2211                    fn visit_str<E>(
2212                        self,
2213                        value: &str,
2214                    ) -> std::result::Result<GeneratedField, E>
2215                    where
2216                        E: serde::de::Error,
2217                    {
2218                        match value {
2219                            "name" => Ok(GeneratedField::Name),
2220                            "urn" => Ok(GeneratedField::Urn),
2221                            "vpc" => Ok(GeneratedField::Vpc),
2222                            "vpcDefault" | "vpc_default" => {
2223                                Ok(GeneratedField::VpcDefault)
2224                            }
2225                            "createTime" | "create_time" => {
2226                                Ok(GeneratedField::CreateTime)
2227                            }
2228                            "creator" => Ok(GeneratedField::Creator),
2229                            "tags" => Ok(GeneratedField::Tags),
2230                            _ => Ok(GeneratedField::__SkipField__),
2231                        }
2232                    }
2233                }
2234                deserializer.deserialize_identifier(GeneratedVisitor)
2235            }
2236        }
2237        struct GeneratedVisitor;
2238        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2239            type Value = Acl;
2240            fn expecting(
2241                &self,
2242                formatter: &mut std::fmt::Formatter<'_>,
2243            ) -> std::fmt::Result {
2244                formatter.write_str("struct origincloud.network.v1beta1.Acl")
2245            }
2246            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Acl, V::Error>
2247            where
2248                V: serde::de::MapAccess<'de>,
2249            {
2250                let mut name__ = None;
2251                let mut urn__ = None;
2252                let mut vpc__ = None;
2253                let mut vpc_default__ = None;
2254                let mut create_time__ = None;
2255                let mut creator__ = None;
2256                let mut tags__ = None;
2257                while let Some(k) = map_.next_key()? {
2258                    match k {
2259                        GeneratedField::Name => {
2260                            if name__.is_some() {
2261                                return Err(serde::de::Error::duplicate_field("name"));
2262                            }
2263                            name__ = Some(map_.next_value()?);
2264                        }
2265                        GeneratedField::Urn => {
2266                            if urn__.is_some() {
2267                                return Err(serde::de::Error::duplicate_field("urn"));
2268                            }
2269                            urn__ = Some(map_.next_value()?);
2270                        }
2271                        GeneratedField::Vpc => {
2272                            if vpc__.is_some() {
2273                                return Err(serde::de::Error::duplicate_field("vpc"));
2274                            }
2275                            vpc__ = Some(map_.next_value()?);
2276                        }
2277                        GeneratedField::VpcDefault => {
2278                            if vpc_default__.is_some() {
2279                                return Err(serde::de::Error::duplicate_field("vpcDefault"));
2280                            }
2281                            vpc_default__ = Some(map_.next_value()?);
2282                        }
2283                        GeneratedField::CreateTime => {
2284                            if create_time__.is_some() {
2285                                return Err(serde::de::Error::duplicate_field("createTime"));
2286                            }
2287                            create_time__ = map_.next_value()?;
2288                        }
2289                        GeneratedField::Creator => {
2290                            if creator__.is_some() {
2291                                return Err(serde::de::Error::duplicate_field("creator"));
2292                            }
2293                            creator__ = Some(map_.next_value()?);
2294                        }
2295                        GeneratedField::Tags => {
2296                            if tags__.is_some() {
2297                                return Err(serde::de::Error::duplicate_field("tags"));
2298                            }
2299                            tags__ = Some(
2300                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
2301                            );
2302                        }
2303                        GeneratedField::__SkipField__ => {
2304                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2305                        }
2306                    }
2307                }
2308                Ok(Acl {
2309                    name: name__.unwrap_or_default(),
2310                    urn: urn__.unwrap_or_default(),
2311                    vpc: vpc__.unwrap_or_default(),
2312                    vpc_default: vpc_default__.unwrap_or_default(),
2313                    create_time: create_time__,
2314                    creator: creator__.unwrap_or_default(),
2315                    tags: tags__.unwrap_or_default(),
2316                })
2317            }
2318        }
2319        deserializer
2320            .deserialize_struct(
2321                "origincloud.network.v1beta1.Acl",
2322                FIELDS,
2323                GeneratedVisitor,
2324            )
2325    }
2326}
2327impl serde::Serialize for AclAssociation {
2328    #[allow(deprecated)]
2329    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2330    where
2331        S: serde::Serializer,
2332    {
2333        use serde::ser::SerializeStruct;
2334        let mut len = 0;
2335        if !self.name.is_empty() {
2336            len += 1;
2337        }
2338        if !self.acl.is_empty() {
2339            len += 1;
2340        }
2341        let mut struct_ser = serializer
2342            .serialize_struct("origincloud.network.v1beta1.AclAssociation", len)?;
2343        if !self.name.is_empty() {
2344            struct_ser.serialize_field("name", &self.name)?;
2345        }
2346        if !self.acl.is_empty() {
2347            struct_ser.serialize_field("acl", &self.acl)?;
2348        }
2349        struct_ser.end()
2350    }
2351}
2352impl<'de> serde::Deserialize<'de> for AclAssociation {
2353    #[allow(deprecated)]
2354    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2355    where
2356        D: serde::Deserializer<'de>,
2357    {
2358        const FIELDS: &[&str] = &["name", "acl"];
2359        #[allow(clippy::enum_variant_names)]
2360        enum GeneratedField {
2361            Name,
2362            Acl,
2363            __SkipField__,
2364        }
2365        impl<'de> serde::Deserialize<'de> for GeneratedField {
2366            fn deserialize<D>(
2367                deserializer: D,
2368            ) -> std::result::Result<GeneratedField, D::Error>
2369            where
2370                D: serde::Deserializer<'de>,
2371            {
2372                struct GeneratedVisitor;
2373                impl serde::de::Visitor<'_> for GeneratedVisitor {
2374                    type Value = GeneratedField;
2375                    fn expecting(
2376                        &self,
2377                        formatter: &mut std::fmt::Formatter<'_>,
2378                    ) -> std::fmt::Result {
2379                        write!(formatter, "expected one of: {:?}", & FIELDS)
2380                    }
2381                    #[allow(unused_variables)]
2382                    fn visit_str<E>(
2383                        self,
2384                        value: &str,
2385                    ) -> std::result::Result<GeneratedField, E>
2386                    where
2387                        E: serde::de::Error,
2388                    {
2389                        match value {
2390                            "name" => Ok(GeneratedField::Name),
2391                            "acl" => Ok(GeneratedField::Acl),
2392                            _ => Ok(GeneratedField::__SkipField__),
2393                        }
2394                    }
2395                }
2396                deserializer.deserialize_identifier(GeneratedVisitor)
2397            }
2398        }
2399        struct GeneratedVisitor;
2400        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2401            type Value = AclAssociation;
2402            fn expecting(
2403                &self,
2404                formatter: &mut std::fmt::Formatter<'_>,
2405            ) -> std::fmt::Result {
2406                formatter.write_str("struct origincloud.network.v1beta1.AclAssociation")
2407            }
2408            fn visit_map<V>(
2409                self,
2410                mut map_: V,
2411            ) -> std::result::Result<AclAssociation, V::Error>
2412            where
2413                V: serde::de::MapAccess<'de>,
2414            {
2415                let mut name__ = None;
2416                let mut acl__ = None;
2417                while let Some(k) = map_.next_key()? {
2418                    match k {
2419                        GeneratedField::Name => {
2420                            if name__.is_some() {
2421                                return Err(serde::de::Error::duplicate_field("name"));
2422                            }
2423                            name__ = Some(map_.next_value()?);
2424                        }
2425                        GeneratedField::Acl => {
2426                            if acl__.is_some() {
2427                                return Err(serde::de::Error::duplicate_field("acl"));
2428                            }
2429                            acl__ = Some(map_.next_value()?);
2430                        }
2431                        GeneratedField::__SkipField__ => {
2432                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2433                        }
2434                    }
2435                }
2436                Ok(AclAssociation {
2437                    name: name__.unwrap_or_default(),
2438                    acl: acl__.unwrap_or_default(),
2439                })
2440            }
2441        }
2442        deserializer
2443            .deserialize_struct(
2444                "origincloud.network.v1beta1.AclAssociation",
2445                FIELDS,
2446                GeneratedVisitor,
2447            )
2448    }
2449}
2450impl serde::Serialize for AclRule {
2451    #[allow(deprecated)]
2452    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2453    where
2454        S: serde::Serializer,
2455    {
2456        use serde::ser::SerializeStruct;
2457        let mut len = 0;
2458        if !self.name.is_empty() {
2459            len += 1;
2460        }
2461        if self.direction != 0 {
2462            len += 1;
2463        }
2464        if self.priority != 0 {
2465            len += 1;
2466        }
2467        if self.protocol != 0 {
2468            len += 1;
2469        }
2470        if self.first_port != 0 {
2471            len += 1;
2472        }
2473        if self.last_port != 0 {
2474            len += 1;
2475        }
2476        if !self.cidr_block.is_empty() {
2477            len += 1;
2478        }
2479        if self.action != 0 {
2480            len += 1;
2481        }
2482        let mut struct_ser = serializer
2483            .serialize_struct("origincloud.network.v1beta1.AclRule", len)?;
2484        if !self.name.is_empty() {
2485            struct_ser.serialize_field("name", &self.name)?;
2486        }
2487        if self.direction != 0 {
2488            let v = acl_rule::Direction::try_from(self.direction)
2489                .map_err(|_| serde::ser::Error::custom(
2490                    format!("Invalid variant {}", self.direction),
2491                ))?;
2492            struct_ser.serialize_field("direction", &v)?;
2493        }
2494        if self.priority != 0 {
2495            struct_ser.serialize_field("priority", &self.priority)?;
2496        }
2497        if self.protocol != 0 {
2498            let v = acl_rule::Protocol::try_from(self.protocol)
2499                .map_err(|_| serde::ser::Error::custom(
2500                    format!("Invalid variant {}", self.protocol),
2501                ))?;
2502            struct_ser.serialize_field("protocol", &v)?;
2503        }
2504        if self.first_port != 0 {
2505            struct_ser.serialize_field("firstPort", &self.first_port)?;
2506        }
2507        if self.last_port != 0 {
2508            struct_ser.serialize_field("lastPort", &self.last_port)?;
2509        }
2510        if !self.cidr_block.is_empty() {
2511            struct_ser.serialize_field("cidrBlock", &self.cidr_block)?;
2512        }
2513        if self.action != 0 {
2514            let v = acl_rule::Action::try_from(self.action)
2515                .map_err(|_| serde::ser::Error::custom(
2516                    format!("Invalid variant {}", self.action),
2517                ))?;
2518            struct_ser.serialize_field("action", &v)?;
2519        }
2520        struct_ser.end()
2521    }
2522}
2523impl<'de> serde::Deserialize<'de> for AclRule {
2524    #[allow(deprecated)]
2525    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2526    where
2527        D: serde::Deserializer<'de>,
2528    {
2529        const FIELDS: &[&str] = &[
2530            "name",
2531            "direction",
2532            "priority",
2533            "protocol",
2534            "first_port",
2535            "firstPort",
2536            "last_port",
2537            "lastPort",
2538            "cidr_block",
2539            "cidrBlock",
2540            "action",
2541        ];
2542        #[allow(clippy::enum_variant_names)]
2543        enum GeneratedField {
2544            Name,
2545            Direction,
2546            Priority,
2547            Protocol,
2548            FirstPort,
2549            LastPort,
2550            CidrBlock,
2551            Action,
2552            __SkipField__,
2553        }
2554        impl<'de> serde::Deserialize<'de> for GeneratedField {
2555            fn deserialize<D>(
2556                deserializer: D,
2557            ) -> std::result::Result<GeneratedField, D::Error>
2558            where
2559                D: serde::Deserializer<'de>,
2560            {
2561                struct GeneratedVisitor;
2562                impl serde::de::Visitor<'_> for GeneratedVisitor {
2563                    type Value = GeneratedField;
2564                    fn expecting(
2565                        &self,
2566                        formatter: &mut std::fmt::Formatter<'_>,
2567                    ) -> std::fmt::Result {
2568                        write!(formatter, "expected one of: {:?}", & FIELDS)
2569                    }
2570                    #[allow(unused_variables)]
2571                    fn visit_str<E>(
2572                        self,
2573                        value: &str,
2574                    ) -> std::result::Result<GeneratedField, E>
2575                    where
2576                        E: serde::de::Error,
2577                    {
2578                        match value {
2579                            "name" => Ok(GeneratedField::Name),
2580                            "direction" => Ok(GeneratedField::Direction),
2581                            "priority" => Ok(GeneratedField::Priority),
2582                            "protocol" => Ok(GeneratedField::Protocol),
2583                            "firstPort" | "first_port" => Ok(GeneratedField::FirstPort),
2584                            "lastPort" | "last_port" => Ok(GeneratedField::LastPort),
2585                            "cidrBlock" | "cidr_block" => Ok(GeneratedField::CidrBlock),
2586                            "action" => Ok(GeneratedField::Action),
2587                            _ => Ok(GeneratedField::__SkipField__),
2588                        }
2589                    }
2590                }
2591                deserializer.deserialize_identifier(GeneratedVisitor)
2592            }
2593        }
2594        struct GeneratedVisitor;
2595        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2596            type Value = AclRule;
2597            fn expecting(
2598                &self,
2599                formatter: &mut std::fmt::Formatter<'_>,
2600            ) -> std::fmt::Result {
2601                formatter.write_str("struct origincloud.network.v1beta1.AclRule")
2602            }
2603            fn visit_map<V>(self, mut map_: V) -> std::result::Result<AclRule, V::Error>
2604            where
2605                V: serde::de::MapAccess<'de>,
2606            {
2607                let mut name__ = None;
2608                let mut direction__ = None;
2609                let mut priority__ = None;
2610                let mut protocol__ = None;
2611                let mut first_port__ = None;
2612                let mut last_port__ = None;
2613                let mut cidr_block__ = None;
2614                let mut action__ = None;
2615                while let Some(k) = map_.next_key()? {
2616                    match k {
2617                        GeneratedField::Name => {
2618                            if name__.is_some() {
2619                                return Err(serde::de::Error::duplicate_field("name"));
2620                            }
2621                            name__ = Some(map_.next_value()?);
2622                        }
2623                        GeneratedField::Direction => {
2624                            if direction__.is_some() {
2625                                return Err(serde::de::Error::duplicate_field("direction"));
2626                            }
2627                            direction__ = Some(
2628                                map_.next_value::<acl_rule::Direction>()? as i32,
2629                            );
2630                        }
2631                        GeneratedField::Priority => {
2632                            if priority__.is_some() {
2633                                return Err(serde::de::Error::duplicate_field("priority"));
2634                            }
2635                            priority__ = Some(
2636                                map_
2637                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2638                                    .0,
2639                            );
2640                        }
2641                        GeneratedField::Protocol => {
2642                            if protocol__.is_some() {
2643                                return Err(serde::de::Error::duplicate_field("protocol"));
2644                            }
2645                            protocol__ = Some(
2646                                map_.next_value::<acl_rule::Protocol>()? as i32,
2647                            );
2648                        }
2649                        GeneratedField::FirstPort => {
2650                            if first_port__.is_some() {
2651                                return Err(serde::de::Error::duplicate_field("firstPort"));
2652                            }
2653                            first_port__ = Some(
2654                                map_
2655                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2656                                    .0,
2657                            );
2658                        }
2659                        GeneratedField::LastPort => {
2660                            if last_port__.is_some() {
2661                                return Err(serde::de::Error::duplicate_field("lastPort"));
2662                            }
2663                            last_port__ = Some(
2664                                map_
2665                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2666                                    .0,
2667                            );
2668                        }
2669                        GeneratedField::CidrBlock => {
2670                            if cidr_block__.is_some() {
2671                                return Err(serde::de::Error::duplicate_field("cidrBlock"));
2672                            }
2673                            cidr_block__ = Some(map_.next_value()?);
2674                        }
2675                        GeneratedField::Action => {
2676                            if action__.is_some() {
2677                                return Err(serde::de::Error::duplicate_field("action"));
2678                            }
2679                            action__ = Some(
2680                                map_.next_value::<acl_rule::Action>()? as i32,
2681                            );
2682                        }
2683                        GeneratedField::__SkipField__ => {
2684                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2685                        }
2686                    }
2687                }
2688                Ok(AclRule {
2689                    name: name__.unwrap_or_default(),
2690                    direction: direction__.unwrap_or_default(),
2691                    priority: priority__.unwrap_or_default(),
2692                    protocol: protocol__.unwrap_or_default(),
2693                    first_port: first_port__.unwrap_or_default(),
2694                    last_port: last_port__.unwrap_or_default(),
2695                    cidr_block: cidr_block__.unwrap_or_default(),
2696                    action: action__.unwrap_or_default(),
2697                })
2698            }
2699        }
2700        deserializer
2701            .deserialize_struct(
2702                "origincloud.network.v1beta1.AclRule",
2703                FIELDS,
2704                GeneratedVisitor,
2705            )
2706    }
2707}
2708impl serde::Serialize for acl_rule::Action {
2709    #[allow(deprecated)]
2710    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2711    where
2712        S: serde::Serializer,
2713    {
2714        let variant = match self {
2715            Self::Unspecified => "ACTION_UNSPECIFIED",
2716            Self::Accept => "ACCEPT",
2717            Self::Drop => "DROP",
2718        };
2719        serializer.serialize_str(variant)
2720    }
2721}
2722impl<'de> serde::Deserialize<'de> for acl_rule::Action {
2723    #[allow(deprecated)]
2724    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2725    where
2726        D: serde::Deserializer<'de>,
2727    {
2728        const FIELDS: &[&str] = &["ACTION_UNSPECIFIED", "ACCEPT", "DROP"];
2729        struct GeneratedVisitor;
2730        impl serde::de::Visitor<'_> for GeneratedVisitor {
2731            type Value = acl_rule::Action;
2732            fn expecting(
2733                &self,
2734                formatter: &mut std::fmt::Formatter<'_>,
2735            ) -> std::fmt::Result {
2736                write!(formatter, "expected one of: {:?}", & FIELDS)
2737            }
2738            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2739            where
2740                E: serde::de::Error,
2741            {
2742                i32::try_from(v)
2743                    .ok()
2744                    .and_then(|x| {
2745                        x.try_into().ok().or_else(|| Some(acl_rule::Action::default()))
2746                    })
2747                    .ok_or_else(|| {
2748                        serde::de::Error::invalid_value(
2749                            serde::de::Unexpected::Signed(v),
2750                            &self,
2751                        )
2752                    })
2753            }
2754            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2755            where
2756                E: serde::de::Error,
2757            {
2758                i32::try_from(v)
2759                    .ok()
2760                    .and_then(|x| {
2761                        x.try_into().ok().or_else(|| Some(acl_rule::Action::default()))
2762                    })
2763                    .ok_or_else(|| {
2764                        serde::de::Error::invalid_value(
2765                            serde::de::Unexpected::Unsigned(v),
2766                            &self,
2767                        )
2768                    })
2769            }
2770            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2771            where
2772                E: serde::de::Error,
2773            {
2774                match value {
2775                    "ACTION_UNSPECIFIED" => Ok(acl_rule::Action::Unspecified),
2776                    "ACCEPT" => Ok(acl_rule::Action::Accept),
2777                    "DROP" => Ok(acl_rule::Action::Drop),
2778                    _ => Ok(acl_rule::Action::default()),
2779                }
2780            }
2781        }
2782        deserializer.deserialize_any(GeneratedVisitor)
2783    }
2784}
2785impl serde::Serialize for acl_rule::Direction {
2786    #[allow(deprecated)]
2787    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2788    where
2789        S: serde::Serializer,
2790    {
2791        let variant = match self {
2792            Self::Unspecified => "DIRECTION_UNSPECIFIED",
2793            Self::Ingress => "INGRESS",
2794            Self::Egress => "EGRESS",
2795        };
2796        serializer.serialize_str(variant)
2797    }
2798}
2799impl<'de> serde::Deserialize<'de> for acl_rule::Direction {
2800    #[allow(deprecated)]
2801    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2802    where
2803        D: serde::Deserializer<'de>,
2804    {
2805        const FIELDS: &[&str] = &["DIRECTION_UNSPECIFIED", "INGRESS", "EGRESS"];
2806        struct GeneratedVisitor;
2807        impl serde::de::Visitor<'_> for GeneratedVisitor {
2808            type Value = acl_rule::Direction;
2809            fn expecting(
2810                &self,
2811                formatter: &mut std::fmt::Formatter<'_>,
2812            ) -> std::fmt::Result {
2813                write!(formatter, "expected one of: {:?}", & FIELDS)
2814            }
2815            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2816            where
2817                E: serde::de::Error,
2818            {
2819                i32::try_from(v)
2820                    .ok()
2821                    .and_then(|x| {
2822                        x
2823                            .try_into()
2824                            .ok()
2825                            .or_else(|| Some(acl_rule::Direction::default()))
2826                    })
2827                    .ok_or_else(|| {
2828                        serde::de::Error::invalid_value(
2829                            serde::de::Unexpected::Signed(v),
2830                            &self,
2831                        )
2832                    })
2833            }
2834            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2835            where
2836                E: serde::de::Error,
2837            {
2838                i32::try_from(v)
2839                    .ok()
2840                    .and_then(|x| {
2841                        x
2842                            .try_into()
2843                            .ok()
2844                            .or_else(|| Some(acl_rule::Direction::default()))
2845                    })
2846                    .ok_or_else(|| {
2847                        serde::de::Error::invalid_value(
2848                            serde::de::Unexpected::Unsigned(v),
2849                            &self,
2850                        )
2851                    })
2852            }
2853            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2854            where
2855                E: serde::de::Error,
2856            {
2857                match value {
2858                    "DIRECTION_UNSPECIFIED" => Ok(acl_rule::Direction::Unspecified),
2859                    "INGRESS" => Ok(acl_rule::Direction::Ingress),
2860                    "EGRESS" => Ok(acl_rule::Direction::Egress),
2861                    _ => Ok(acl_rule::Direction::default()),
2862                }
2863            }
2864        }
2865        deserializer.deserialize_any(GeneratedVisitor)
2866    }
2867}
2868impl serde::Serialize for acl_rule::Protocol {
2869    #[allow(deprecated)]
2870    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2871    where
2872        S: serde::Serializer,
2873    {
2874        let variant = match self {
2875            Self::Unspecified => "PROTOCOL_UNSPECIFIED",
2876            Self::All => "ALL",
2877            Self::Tcp => "TCP",
2878            Self::Udp => "UDP",
2879            Self::Icmp => "ICMP",
2880        };
2881        serializer.serialize_str(variant)
2882    }
2883}
2884impl<'de> serde::Deserialize<'de> for acl_rule::Protocol {
2885    #[allow(deprecated)]
2886    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2887    where
2888        D: serde::Deserializer<'de>,
2889    {
2890        const FIELDS: &[&str] = &["PROTOCOL_UNSPECIFIED", "ALL", "TCP", "UDP", "ICMP"];
2891        struct GeneratedVisitor;
2892        impl serde::de::Visitor<'_> for GeneratedVisitor {
2893            type Value = acl_rule::Protocol;
2894            fn expecting(
2895                &self,
2896                formatter: &mut std::fmt::Formatter<'_>,
2897            ) -> std::fmt::Result {
2898                write!(formatter, "expected one of: {:?}", & FIELDS)
2899            }
2900            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2901            where
2902                E: serde::de::Error,
2903            {
2904                i32::try_from(v)
2905                    .ok()
2906                    .and_then(|x| {
2907                        x.try_into().ok().or_else(|| Some(acl_rule::Protocol::default()))
2908                    })
2909                    .ok_or_else(|| {
2910                        serde::de::Error::invalid_value(
2911                            serde::de::Unexpected::Signed(v),
2912                            &self,
2913                        )
2914                    })
2915            }
2916            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2917            where
2918                E: serde::de::Error,
2919            {
2920                i32::try_from(v)
2921                    .ok()
2922                    .and_then(|x| {
2923                        x.try_into().ok().or_else(|| Some(acl_rule::Protocol::default()))
2924                    })
2925                    .ok_or_else(|| {
2926                        serde::de::Error::invalid_value(
2927                            serde::de::Unexpected::Unsigned(v),
2928                            &self,
2929                        )
2930                    })
2931            }
2932            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2933            where
2934                E: serde::de::Error,
2935            {
2936                match value {
2937                    "PROTOCOL_UNSPECIFIED" => Ok(acl_rule::Protocol::Unspecified),
2938                    "ALL" => Ok(acl_rule::Protocol::All),
2939                    "TCP" => Ok(acl_rule::Protocol::Tcp),
2940                    "UDP" => Ok(acl_rule::Protocol::Udp),
2941                    "ICMP" => Ok(acl_rule::Protocol::Icmp),
2942                    _ => Ok(acl_rule::Protocol::default()),
2943                }
2944            }
2945        }
2946        deserializer.deserialize_any(GeneratedVisitor)
2947    }
2948}
2949impl serde::Serialize for CreateAclAssociationRequest {
2950    #[allow(deprecated)]
2951    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2952    where
2953        S: serde::Serializer,
2954    {
2955        use serde::ser::SerializeStruct;
2956        let mut len = 0;
2957        if !self.parent.is_empty() {
2958            len += 1;
2959        }
2960        if self.acl_association.is_some() {
2961            len += 1;
2962        }
2963        if !self.request_id.is_empty() {
2964            len += 1;
2965        }
2966        let mut struct_ser = serializer
2967            .serialize_struct(
2968                "origincloud.network.v1beta1.CreateAclAssociationRequest",
2969                len,
2970            )?;
2971        if !self.parent.is_empty() {
2972            struct_ser.serialize_field("parent", &self.parent)?;
2973        }
2974        if let Some(v) = self.acl_association.as_ref() {
2975            struct_ser.serialize_field("aclAssociation", v)?;
2976        }
2977        if !self.request_id.is_empty() {
2978            struct_ser.serialize_field("requestId", &self.request_id)?;
2979        }
2980        struct_ser.end()
2981    }
2982}
2983impl<'de> serde::Deserialize<'de> for CreateAclAssociationRequest {
2984    #[allow(deprecated)]
2985    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2986    where
2987        D: serde::Deserializer<'de>,
2988    {
2989        const FIELDS: &[&str] = &[
2990            "parent",
2991            "acl_association",
2992            "aclAssociation",
2993            "request_id",
2994            "requestId",
2995        ];
2996        #[allow(clippy::enum_variant_names)]
2997        enum GeneratedField {
2998            Parent,
2999            AclAssociation,
3000            RequestId,
3001            __SkipField__,
3002        }
3003        impl<'de> serde::Deserialize<'de> for GeneratedField {
3004            fn deserialize<D>(
3005                deserializer: D,
3006            ) -> std::result::Result<GeneratedField, D::Error>
3007            where
3008                D: serde::Deserializer<'de>,
3009            {
3010                struct GeneratedVisitor;
3011                impl serde::de::Visitor<'_> for GeneratedVisitor {
3012                    type Value = GeneratedField;
3013                    fn expecting(
3014                        &self,
3015                        formatter: &mut std::fmt::Formatter<'_>,
3016                    ) -> std::fmt::Result {
3017                        write!(formatter, "expected one of: {:?}", & FIELDS)
3018                    }
3019                    #[allow(unused_variables)]
3020                    fn visit_str<E>(
3021                        self,
3022                        value: &str,
3023                    ) -> std::result::Result<GeneratedField, E>
3024                    where
3025                        E: serde::de::Error,
3026                    {
3027                        match value {
3028                            "parent" => Ok(GeneratedField::Parent),
3029                            "aclAssociation" | "acl_association" => {
3030                                Ok(GeneratedField::AclAssociation)
3031                            }
3032                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3033                            _ => Ok(GeneratedField::__SkipField__),
3034                        }
3035                    }
3036                }
3037                deserializer.deserialize_identifier(GeneratedVisitor)
3038            }
3039        }
3040        struct GeneratedVisitor;
3041        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3042            type Value = CreateAclAssociationRequest;
3043            fn expecting(
3044                &self,
3045                formatter: &mut std::fmt::Formatter<'_>,
3046            ) -> std::fmt::Result {
3047                formatter
3048                    .write_str(
3049                        "struct origincloud.network.v1beta1.CreateAclAssociationRequest",
3050                    )
3051            }
3052            fn visit_map<V>(
3053                self,
3054                mut map_: V,
3055            ) -> std::result::Result<CreateAclAssociationRequest, V::Error>
3056            where
3057                V: serde::de::MapAccess<'de>,
3058            {
3059                let mut parent__ = None;
3060                let mut acl_association__ = None;
3061                let mut request_id__ = None;
3062                while let Some(k) = map_.next_key()? {
3063                    match k {
3064                        GeneratedField::Parent => {
3065                            if parent__.is_some() {
3066                                return Err(serde::de::Error::duplicate_field("parent"));
3067                            }
3068                            parent__ = Some(map_.next_value()?);
3069                        }
3070                        GeneratedField::AclAssociation => {
3071                            if acl_association__.is_some() {
3072                                return Err(
3073                                    serde::de::Error::duplicate_field("aclAssociation"),
3074                                );
3075                            }
3076                            acl_association__ = map_.next_value()?;
3077                        }
3078                        GeneratedField::RequestId => {
3079                            if request_id__.is_some() {
3080                                return Err(serde::de::Error::duplicate_field("requestId"));
3081                            }
3082                            request_id__ = Some(map_.next_value()?);
3083                        }
3084                        GeneratedField::__SkipField__ => {
3085                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3086                        }
3087                    }
3088                }
3089                Ok(CreateAclAssociationRequest {
3090                    parent: parent__.unwrap_or_default(),
3091                    acl_association: acl_association__,
3092                    request_id: request_id__.unwrap_or_default(),
3093                })
3094            }
3095        }
3096        deserializer
3097            .deserialize_struct(
3098                "origincloud.network.v1beta1.CreateAclAssociationRequest",
3099                FIELDS,
3100                GeneratedVisitor,
3101            )
3102    }
3103}
3104impl serde::Serialize for CreateAclRequest {
3105    #[allow(deprecated)]
3106    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3107    where
3108        S: serde::Serializer,
3109    {
3110        use serde::ser::SerializeStruct;
3111        let mut len = 0;
3112        if !self.parent.is_empty() {
3113            len += 1;
3114        }
3115        if self.acl.is_some() {
3116            len += 1;
3117        }
3118        if !self.request_id.is_empty() {
3119            len += 1;
3120        }
3121        let mut struct_ser = serializer
3122            .serialize_struct("origincloud.network.v1beta1.CreateAclRequest", len)?;
3123        if !self.parent.is_empty() {
3124            struct_ser.serialize_field("parent", &self.parent)?;
3125        }
3126        if let Some(v) = self.acl.as_ref() {
3127            struct_ser.serialize_field("acl", v)?;
3128        }
3129        if !self.request_id.is_empty() {
3130            struct_ser.serialize_field("requestId", &self.request_id)?;
3131        }
3132        struct_ser.end()
3133    }
3134}
3135impl<'de> serde::Deserialize<'de> for CreateAclRequest {
3136    #[allow(deprecated)]
3137    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3138    where
3139        D: serde::Deserializer<'de>,
3140    {
3141        const FIELDS: &[&str] = &["parent", "acl", "request_id", "requestId"];
3142        #[allow(clippy::enum_variant_names)]
3143        enum GeneratedField {
3144            Parent,
3145            Acl,
3146            RequestId,
3147            __SkipField__,
3148        }
3149        impl<'de> serde::Deserialize<'de> for GeneratedField {
3150            fn deserialize<D>(
3151                deserializer: D,
3152            ) -> std::result::Result<GeneratedField, D::Error>
3153            where
3154                D: serde::Deserializer<'de>,
3155            {
3156                struct GeneratedVisitor;
3157                impl serde::de::Visitor<'_> for GeneratedVisitor {
3158                    type Value = GeneratedField;
3159                    fn expecting(
3160                        &self,
3161                        formatter: &mut std::fmt::Formatter<'_>,
3162                    ) -> std::fmt::Result {
3163                        write!(formatter, "expected one of: {:?}", & FIELDS)
3164                    }
3165                    #[allow(unused_variables)]
3166                    fn visit_str<E>(
3167                        self,
3168                        value: &str,
3169                    ) -> std::result::Result<GeneratedField, E>
3170                    where
3171                        E: serde::de::Error,
3172                    {
3173                        match value {
3174                            "parent" => Ok(GeneratedField::Parent),
3175                            "acl" => Ok(GeneratedField::Acl),
3176                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3177                            _ => Ok(GeneratedField::__SkipField__),
3178                        }
3179                    }
3180                }
3181                deserializer.deserialize_identifier(GeneratedVisitor)
3182            }
3183        }
3184        struct GeneratedVisitor;
3185        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3186            type Value = CreateAclRequest;
3187            fn expecting(
3188                &self,
3189                formatter: &mut std::fmt::Formatter<'_>,
3190            ) -> std::fmt::Result {
3191                formatter
3192                    .write_str("struct origincloud.network.v1beta1.CreateAclRequest")
3193            }
3194            fn visit_map<V>(
3195                self,
3196                mut map_: V,
3197            ) -> std::result::Result<CreateAclRequest, V::Error>
3198            where
3199                V: serde::de::MapAccess<'de>,
3200            {
3201                let mut parent__ = None;
3202                let mut acl__ = None;
3203                let mut request_id__ = None;
3204                while let Some(k) = map_.next_key()? {
3205                    match k {
3206                        GeneratedField::Parent => {
3207                            if parent__.is_some() {
3208                                return Err(serde::de::Error::duplicate_field("parent"));
3209                            }
3210                            parent__ = Some(map_.next_value()?);
3211                        }
3212                        GeneratedField::Acl => {
3213                            if acl__.is_some() {
3214                                return Err(serde::de::Error::duplicate_field("acl"));
3215                            }
3216                            acl__ = map_.next_value()?;
3217                        }
3218                        GeneratedField::RequestId => {
3219                            if request_id__.is_some() {
3220                                return Err(serde::de::Error::duplicate_field("requestId"));
3221                            }
3222                            request_id__ = Some(map_.next_value()?);
3223                        }
3224                        GeneratedField::__SkipField__ => {
3225                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3226                        }
3227                    }
3228                }
3229                Ok(CreateAclRequest {
3230                    parent: parent__.unwrap_or_default(),
3231                    acl: acl__,
3232                    request_id: request_id__.unwrap_or_default(),
3233                })
3234            }
3235        }
3236        deserializer
3237            .deserialize_struct(
3238                "origincloud.network.v1beta1.CreateAclRequest",
3239                FIELDS,
3240                GeneratedVisitor,
3241            )
3242    }
3243}
3244impl serde::Serialize for CreateAclRuleRequest {
3245    #[allow(deprecated)]
3246    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3247    where
3248        S: serde::Serializer,
3249    {
3250        use serde::ser::SerializeStruct;
3251        let mut len = 0;
3252        if !self.parent.is_empty() {
3253            len += 1;
3254        }
3255        if self.acl_rule.is_some() {
3256            len += 1;
3257        }
3258        if !self.request_id.is_empty() {
3259            len += 1;
3260        }
3261        let mut struct_ser = serializer
3262            .serialize_struct("origincloud.network.v1beta1.CreateAclRuleRequest", len)?;
3263        if !self.parent.is_empty() {
3264            struct_ser.serialize_field("parent", &self.parent)?;
3265        }
3266        if let Some(v) = self.acl_rule.as_ref() {
3267            struct_ser.serialize_field("aclRule", v)?;
3268        }
3269        if !self.request_id.is_empty() {
3270            struct_ser.serialize_field("requestId", &self.request_id)?;
3271        }
3272        struct_ser.end()
3273    }
3274}
3275impl<'de> serde::Deserialize<'de> for CreateAclRuleRequest {
3276    #[allow(deprecated)]
3277    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3278    where
3279        D: serde::Deserializer<'de>,
3280    {
3281        const FIELDS: &[&str] = &[
3282            "parent",
3283            "acl_rule",
3284            "aclRule",
3285            "request_id",
3286            "requestId",
3287        ];
3288        #[allow(clippy::enum_variant_names)]
3289        enum GeneratedField {
3290            Parent,
3291            AclRule,
3292            RequestId,
3293            __SkipField__,
3294        }
3295        impl<'de> serde::Deserialize<'de> for GeneratedField {
3296            fn deserialize<D>(
3297                deserializer: D,
3298            ) -> std::result::Result<GeneratedField, D::Error>
3299            where
3300                D: serde::Deserializer<'de>,
3301            {
3302                struct GeneratedVisitor;
3303                impl serde::de::Visitor<'_> for GeneratedVisitor {
3304                    type Value = GeneratedField;
3305                    fn expecting(
3306                        &self,
3307                        formatter: &mut std::fmt::Formatter<'_>,
3308                    ) -> std::fmt::Result {
3309                        write!(formatter, "expected one of: {:?}", & FIELDS)
3310                    }
3311                    #[allow(unused_variables)]
3312                    fn visit_str<E>(
3313                        self,
3314                        value: &str,
3315                    ) -> std::result::Result<GeneratedField, E>
3316                    where
3317                        E: serde::de::Error,
3318                    {
3319                        match value {
3320                            "parent" => Ok(GeneratedField::Parent),
3321                            "aclRule" | "acl_rule" => Ok(GeneratedField::AclRule),
3322                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3323                            _ => Ok(GeneratedField::__SkipField__),
3324                        }
3325                    }
3326                }
3327                deserializer.deserialize_identifier(GeneratedVisitor)
3328            }
3329        }
3330        struct GeneratedVisitor;
3331        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3332            type Value = CreateAclRuleRequest;
3333            fn expecting(
3334                &self,
3335                formatter: &mut std::fmt::Formatter<'_>,
3336            ) -> std::fmt::Result {
3337                formatter
3338                    .write_str("struct origincloud.network.v1beta1.CreateAclRuleRequest")
3339            }
3340            fn visit_map<V>(
3341                self,
3342                mut map_: V,
3343            ) -> std::result::Result<CreateAclRuleRequest, V::Error>
3344            where
3345                V: serde::de::MapAccess<'de>,
3346            {
3347                let mut parent__ = None;
3348                let mut acl_rule__ = None;
3349                let mut request_id__ = None;
3350                while let Some(k) = map_.next_key()? {
3351                    match k {
3352                        GeneratedField::Parent => {
3353                            if parent__.is_some() {
3354                                return Err(serde::de::Error::duplicate_field("parent"));
3355                            }
3356                            parent__ = Some(map_.next_value()?);
3357                        }
3358                        GeneratedField::AclRule => {
3359                            if acl_rule__.is_some() {
3360                                return Err(serde::de::Error::duplicate_field("aclRule"));
3361                            }
3362                            acl_rule__ = map_.next_value()?;
3363                        }
3364                        GeneratedField::RequestId => {
3365                            if request_id__.is_some() {
3366                                return Err(serde::de::Error::duplicate_field("requestId"));
3367                            }
3368                            request_id__ = Some(map_.next_value()?);
3369                        }
3370                        GeneratedField::__SkipField__ => {
3371                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3372                        }
3373                    }
3374                }
3375                Ok(CreateAclRuleRequest {
3376                    parent: parent__.unwrap_or_default(),
3377                    acl_rule: acl_rule__,
3378                    request_id: request_id__.unwrap_or_default(),
3379                })
3380            }
3381        }
3382        deserializer
3383            .deserialize_struct(
3384                "origincloud.network.v1beta1.CreateAclRuleRequest",
3385                FIELDS,
3386                GeneratedVisitor,
3387            )
3388    }
3389}
3390impl serde::Serialize for CreateDnsPolicyAssociationRequest {
3391    #[allow(deprecated)]
3392    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3393    where
3394        S: serde::Serializer,
3395    {
3396        use serde::ser::SerializeStruct;
3397        let mut len = 0;
3398        if !self.parent.is_empty() {
3399            len += 1;
3400        }
3401        if self.dns_policy_association.is_some() {
3402            len += 1;
3403        }
3404        if !self.request_id.is_empty() {
3405            len += 1;
3406        }
3407        let mut struct_ser = serializer
3408            .serialize_struct(
3409                "origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3410                len,
3411            )?;
3412        if !self.parent.is_empty() {
3413            struct_ser.serialize_field("parent", &self.parent)?;
3414        }
3415        if let Some(v) = self.dns_policy_association.as_ref() {
3416            struct_ser.serialize_field("dnsPolicyAssociation", v)?;
3417        }
3418        if !self.request_id.is_empty() {
3419            struct_ser.serialize_field("requestId", &self.request_id)?;
3420        }
3421        struct_ser.end()
3422    }
3423}
3424impl<'de> serde::Deserialize<'de> for CreateDnsPolicyAssociationRequest {
3425    #[allow(deprecated)]
3426    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3427    where
3428        D: serde::Deserializer<'de>,
3429    {
3430        const FIELDS: &[&str] = &[
3431            "parent",
3432            "dns_policy_association",
3433            "dnsPolicyAssociation",
3434            "request_id",
3435            "requestId",
3436        ];
3437        #[allow(clippy::enum_variant_names)]
3438        enum GeneratedField {
3439            Parent,
3440            DnsPolicyAssociation,
3441            RequestId,
3442            __SkipField__,
3443        }
3444        impl<'de> serde::Deserialize<'de> for GeneratedField {
3445            fn deserialize<D>(
3446                deserializer: D,
3447            ) -> std::result::Result<GeneratedField, D::Error>
3448            where
3449                D: serde::Deserializer<'de>,
3450            {
3451                struct GeneratedVisitor;
3452                impl serde::de::Visitor<'_> for GeneratedVisitor {
3453                    type Value = GeneratedField;
3454                    fn expecting(
3455                        &self,
3456                        formatter: &mut std::fmt::Formatter<'_>,
3457                    ) -> std::fmt::Result {
3458                        write!(formatter, "expected one of: {:?}", & FIELDS)
3459                    }
3460                    #[allow(unused_variables)]
3461                    fn visit_str<E>(
3462                        self,
3463                        value: &str,
3464                    ) -> std::result::Result<GeneratedField, E>
3465                    where
3466                        E: serde::de::Error,
3467                    {
3468                        match value {
3469                            "parent" => Ok(GeneratedField::Parent),
3470                            "dnsPolicyAssociation" | "dns_policy_association" => {
3471                                Ok(GeneratedField::DnsPolicyAssociation)
3472                            }
3473                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3474                            _ => Ok(GeneratedField::__SkipField__),
3475                        }
3476                    }
3477                }
3478                deserializer.deserialize_identifier(GeneratedVisitor)
3479            }
3480        }
3481        struct GeneratedVisitor;
3482        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3483            type Value = CreateDnsPolicyAssociationRequest;
3484            fn expecting(
3485                &self,
3486                formatter: &mut std::fmt::Formatter<'_>,
3487            ) -> std::fmt::Result {
3488                formatter
3489                    .write_str(
3490                        "struct origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3491                    )
3492            }
3493            fn visit_map<V>(
3494                self,
3495                mut map_: V,
3496            ) -> std::result::Result<CreateDnsPolicyAssociationRequest, V::Error>
3497            where
3498                V: serde::de::MapAccess<'de>,
3499            {
3500                let mut parent__ = None;
3501                let mut dns_policy_association__ = None;
3502                let mut request_id__ = None;
3503                while let Some(k) = map_.next_key()? {
3504                    match k {
3505                        GeneratedField::Parent => {
3506                            if parent__.is_some() {
3507                                return Err(serde::de::Error::duplicate_field("parent"));
3508                            }
3509                            parent__ = Some(map_.next_value()?);
3510                        }
3511                        GeneratedField::DnsPolicyAssociation => {
3512                            if dns_policy_association__.is_some() {
3513                                return Err(
3514                                    serde::de::Error::duplicate_field("dnsPolicyAssociation"),
3515                                );
3516                            }
3517                            dns_policy_association__ = map_.next_value()?;
3518                        }
3519                        GeneratedField::RequestId => {
3520                            if request_id__.is_some() {
3521                                return Err(serde::de::Error::duplicate_field("requestId"));
3522                            }
3523                            request_id__ = Some(map_.next_value()?);
3524                        }
3525                        GeneratedField::__SkipField__ => {
3526                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3527                        }
3528                    }
3529                }
3530                Ok(CreateDnsPolicyAssociationRequest {
3531                    parent: parent__.unwrap_or_default(),
3532                    dns_policy_association: dns_policy_association__,
3533                    request_id: request_id__.unwrap_or_default(),
3534                })
3535            }
3536        }
3537        deserializer
3538            .deserialize_struct(
3539                "origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3540                FIELDS,
3541                GeneratedVisitor,
3542            )
3543    }
3544}
3545impl serde::Serialize for CreateDnsPolicyRequest {
3546    #[allow(deprecated)]
3547    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3548    where
3549        S: serde::Serializer,
3550    {
3551        use serde::ser::SerializeStruct;
3552        let mut len = 0;
3553        if !self.parent.is_empty() {
3554            len += 1;
3555        }
3556        if self.dns_policy.is_some() {
3557            len += 1;
3558        }
3559        if !self.request_id.is_empty() {
3560            len += 1;
3561        }
3562        let mut struct_ser = serializer
3563            .serialize_struct(
3564                "origincloud.network.v1beta1.CreateDnsPolicyRequest",
3565                len,
3566            )?;
3567        if !self.parent.is_empty() {
3568            struct_ser.serialize_field("parent", &self.parent)?;
3569        }
3570        if let Some(v) = self.dns_policy.as_ref() {
3571            struct_ser.serialize_field("dnsPolicy", v)?;
3572        }
3573        if !self.request_id.is_empty() {
3574            struct_ser.serialize_field("requestId", &self.request_id)?;
3575        }
3576        struct_ser.end()
3577    }
3578}
3579impl<'de> serde::Deserialize<'de> for CreateDnsPolicyRequest {
3580    #[allow(deprecated)]
3581    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3582    where
3583        D: serde::Deserializer<'de>,
3584    {
3585        const FIELDS: &[&str] = &[
3586            "parent",
3587            "dns_policy",
3588            "dnsPolicy",
3589            "request_id",
3590            "requestId",
3591        ];
3592        #[allow(clippy::enum_variant_names)]
3593        enum GeneratedField {
3594            Parent,
3595            DnsPolicy,
3596            RequestId,
3597            __SkipField__,
3598        }
3599        impl<'de> serde::Deserialize<'de> for GeneratedField {
3600            fn deserialize<D>(
3601                deserializer: D,
3602            ) -> std::result::Result<GeneratedField, D::Error>
3603            where
3604                D: serde::Deserializer<'de>,
3605            {
3606                struct GeneratedVisitor;
3607                impl serde::de::Visitor<'_> for GeneratedVisitor {
3608                    type Value = GeneratedField;
3609                    fn expecting(
3610                        &self,
3611                        formatter: &mut std::fmt::Formatter<'_>,
3612                    ) -> std::fmt::Result {
3613                        write!(formatter, "expected one of: {:?}", & FIELDS)
3614                    }
3615                    #[allow(unused_variables)]
3616                    fn visit_str<E>(
3617                        self,
3618                        value: &str,
3619                    ) -> std::result::Result<GeneratedField, E>
3620                    where
3621                        E: serde::de::Error,
3622                    {
3623                        match value {
3624                            "parent" => Ok(GeneratedField::Parent),
3625                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
3626                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3627                            _ => Ok(GeneratedField::__SkipField__),
3628                        }
3629                    }
3630                }
3631                deserializer.deserialize_identifier(GeneratedVisitor)
3632            }
3633        }
3634        struct GeneratedVisitor;
3635        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3636            type Value = CreateDnsPolicyRequest;
3637            fn expecting(
3638                &self,
3639                formatter: &mut std::fmt::Formatter<'_>,
3640            ) -> std::fmt::Result {
3641                formatter
3642                    .write_str(
3643                        "struct origincloud.network.v1beta1.CreateDnsPolicyRequest",
3644                    )
3645            }
3646            fn visit_map<V>(
3647                self,
3648                mut map_: V,
3649            ) -> std::result::Result<CreateDnsPolicyRequest, V::Error>
3650            where
3651                V: serde::de::MapAccess<'de>,
3652            {
3653                let mut parent__ = None;
3654                let mut dns_policy__ = None;
3655                let mut request_id__ = None;
3656                while let Some(k) = map_.next_key()? {
3657                    match k {
3658                        GeneratedField::Parent => {
3659                            if parent__.is_some() {
3660                                return Err(serde::de::Error::duplicate_field("parent"));
3661                            }
3662                            parent__ = Some(map_.next_value()?);
3663                        }
3664                        GeneratedField::DnsPolicy => {
3665                            if dns_policy__.is_some() {
3666                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
3667                            }
3668                            dns_policy__ = map_.next_value()?;
3669                        }
3670                        GeneratedField::RequestId => {
3671                            if request_id__.is_some() {
3672                                return Err(serde::de::Error::duplicate_field("requestId"));
3673                            }
3674                            request_id__ = Some(map_.next_value()?);
3675                        }
3676                        GeneratedField::__SkipField__ => {
3677                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3678                        }
3679                    }
3680                }
3681                Ok(CreateDnsPolicyRequest {
3682                    parent: parent__.unwrap_or_default(),
3683                    dns_policy: dns_policy__,
3684                    request_id: request_id__.unwrap_or_default(),
3685                })
3686            }
3687        }
3688        deserializer
3689            .deserialize_struct(
3690                "origincloud.network.v1beta1.CreateDnsPolicyRequest",
3691                FIELDS,
3692                GeneratedVisitor,
3693            )
3694    }
3695}
3696impl serde::Serialize for CreateFloatingIpAssociationRequest {
3697    #[allow(deprecated)]
3698    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3699    where
3700        S: serde::Serializer,
3701    {
3702        use serde::ser::SerializeStruct;
3703        let mut len = 0;
3704        if !self.parent.is_empty() {
3705            len += 1;
3706        }
3707        if self.floating_ip_association.is_some() {
3708            len += 1;
3709        }
3710        if !self.request_id.is_empty() {
3711            len += 1;
3712        }
3713        let mut struct_ser = serializer
3714            .serialize_struct(
3715                "origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3716                len,
3717            )?;
3718        if !self.parent.is_empty() {
3719            struct_ser.serialize_field("parent", &self.parent)?;
3720        }
3721        if let Some(v) = self.floating_ip_association.as_ref() {
3722            struct_ser.serialize_field("floatingIpAssociation", v)?;
3723        }
3724        if !self.request_id.is_empty() {
3725            struct_ser.serialize_field("requestId", &self.request_id)?;
3726        }
3727        struct_ser.end()
3728    }
3729}
3730impl<'de> serde::Deserialize<'de> for CreateFloatingIpAssociationRequest {
3731    #[allow(deprecated)]
3732    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3733    where
3734        D: serde::Deserializer<'de>,
3735    {
3736        const FIELDS: &[&str] = &[
3737            "parent",
3738            "floating_ip_association",
3739            "floatingIpAssociation",
3740            "request_id",
3741            "requestId",
3742        ];
3743        #[allow(clippy::enum_variant_names)]
3744        enum GeneratedField {
3745            Parent,
3746            FloatingIpAssociation,
3747            RequestId,
3748            __SkipField__,
3749        }
3750        impl<'de> serde::Deserialize<'de> for GeneratedField {
3751            fn deserialize<D>(
3752                deserializer: D,
3753            ) -> std::result::Result<GeneratedField, D::Error>
3754            where
3755                D: serde::Deserializer<'de>,
3756            {
3757                struct GeneratedVisitor;
3758                impl serde::de::Visitor<'_> for GeneratedVisitor {
3759                    type Value = GeneratedField;
3760                    fn expecting(
3761                        &self,
3762                        formatter: &mut std::fmt::Formatter<'_>,
3763                    ) -> std::fmt::Result {
3764                        write!(formatter, "expected one of: {:?}", & FIELDS)
3765                    }
3766                    #[allow(unused_variables)]
3767                    fn visit_str<E>(
3768                        self,
3769                        value: &str,
3770                    ) -> std::result::Result<GeneratedField, E>
3771                    where
3772                        E: serde::de::Error,
3773                    {
3774                        match value {
3775                            "parent" => Ok(GeneratedField::Parent),
3776                            "floatingIpAssociation" | "floating_ip_association" => {
3777                                Ok(GeneratedField::FloatingIpAssociation)
3778                            }
3779                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3780                            _ => Ok(GeneratedField::__SkipField__),
3781                        }
3782                    }
3783                }
3784                deserializer.deserialize_identifier(GeneratedVisitor)
3785            }
3786        }
3787        struct GeneratedVisitor;
3788        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3789            type Value = CreateFloatingIpAssociationRequest;
3790            fn expecting(
3791                &self,
3792                formatter: &mut std::fmt::Formatter<'_>,
3793            ) -> std::fmt::Result {
3794                formatter
3795                    .write_str(
3796                        "struct origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3797                    )
3798            }
3799            fn visit_map<V>(
3800                self,
3801                mut map_: V,
3802            ) -> std::result::Result<CreateFloatingIpAssociationRequest, V::Error>
3803            where
3804                V: serde::de::MapAccess<'de>,
3805            {
3806                let mut parent__ = None;
3807                let mut floating_ip_association__ = None;
3808                let mut request_id__ = None;
3809                while let Some(k) = map_.next_key()? {
3810                    match k {
3811                        GeneratedField::Parent => {
3812                            if parent__.is_some() {
3813                                return Err(serde::de::Error::duplicate_field("parent"));
3814                            }
3815                            parent__ = Some(map_.next_value()?);
3816                        }
3817                        GeneratedField::FloatingIpAssociation => {
3818                            if floating_ip_association__.is_some() {
3819                                return Err(
3820                                    serde::de::Error::duplicate_field("floatingIpAssociation"),
3821                                );
3822                            }
3823                            floating_ip_association__ = map_.next_value()?;
3824                        }
3825                        GeneratedField::RequestId => {
3826                            if request_id__.is_some() {
3827                                return Err(serde::de::Error::duplicate_field("requestId"));
3828                            }
3829                            request_id__ = Some(map_.next_value()?);
3830                        }
3831                        GeneratedField::__SkipField__ => {
3832                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3833                        }
3834                    }
3835                }
3836                Ok(CreateFloatingIpAssociationRequest {
3837                    parent: parent__.unwrap_or_default(),
3838                    floating_ip_association: floating_ip_association__,
3839                    request_id: request_id__.unwrap_or_default(),
3840                })
3841            }
3842        }
3843        deserializer
3844            .deserialize_struct(
3845                "origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3846                FIELDS,
3847                GeneratedVisitor,
3848            )
3849    }
3850}
3851impl serde::Serialize for CreateFloatingIpRequest {
3852    #[allow(deprecated)]
3853    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3854    where
3855        S: serde::Serializer,
3856    {
3857        use serde::ser::SerializeStruct;
3858        let mut len = 0;
3859        if !self.parent.is_empty() {
3860            len += 1;
3861        }
3862        if self.floating_ip.is_some() {
3863            len += 1;
3864        }
3865        if !self.request_id.is_empty() {
3866            len += 1;
3867        }
3868        let mut struct_ser = serializer
3869            .serialize_struct(
3870                "origincloud.network.v1beta1.CreateFloatingIpRequest",
3871                len,
3872            )?;
3873        if !self.parent.is_empty() {
3874            struct_ser.serialize_field("parent", &self.parent)?;
3875        }
3876        if let Some(v) = self.floating_ip.as_ref() {
3877            struct_ser.serialize_field("floatingIp", v)?;
3878        }
3879        if !self.request_id.is_empty() {
3880            struct_ser.serialize_field("requestId", &self.request_id)?;
3881        }
3882        struct_ser.end()
3883    }
3884}
3885impl<'de> serde::Deserialize<'de> for CreateFloatingIpRequest {
3886    #[allow(deprecated)]
3887    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3888    where
3889        D: serde::Deserializer<'de>,
3890    {
3891        const FIELDS: &[&str] = &[
3892            "parent",
3893            "floating_ip",
3894            "floatingIp",
3895            "request_id",
3896            "requestId",
3897        ];
3898        #[allow(clippy::enum_variant_names)]
3899        enum GeneratedField {
3900            Parent,
3901            FloatingIp,
3902            RequestId,
3903            __SkipField__,
3904        }
3905        impl<'de> serde::Deserialize<'de> for GeneratedField {
3906            fn deserialize<D>(
3907                deserializer: D,
3908            ) -> std::result::Result<GeneratedField, D::Error>
3909            where
3910                D: serde::Deserializer<'de>,
3911            {
3912                struct GeneratedVisitor;
3913                impl serde::de::Visitor<'_> for GeneratedVisitor {
3914                    type Value = GeneratedField;
3915                    fn expecting(
3916                        &self,
3917                        formatter: &mut std::fmt::Formatter<'_>,
3918                    ) -> std::fmt::Result {
3919                        write!(formatter, "expected one of: {:?}", & FIELDS)
3920                    }
3921                    #[allow(unused_variables)]
3922                    fn visit_str<E>(
3923                        self,
3924                        value: &str,
3925                    ) -> std::result::Result<GeneratedField, E>
3926                    where
3927                        E: serde::de::Error,
3928                    {
3929                        match value {
3930                            "parent" => Ok(GeneratedField::Parent),
3931                            "floatingIp" | "floating_ip" => {
3932                                Ok(GeneratedField::FloatingIp)
3933                            }
3934                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3935                            _ => Ok(GeneratedField::__SkipField__),
3936                        }
3937                    }
3938                }
3939                deserializer.deserialize_identifier(GeneratedVisitor)
3940            }
3941        }
3942        struct GeneratedVisitor;
3943        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3944            type Value = CreateFloatingIpRequest;
3945            fn expecting(
3946                &self,
3947                formatter: &mut std::fmt::Formatter<'_>,
3948            ) -> std::fmt::Result {
3949                formatter
3950                    .write_str(
3951                        "struct origincloud.network.v1beta1.CreateFloatingIpRequest",
3952                    )
3953            }
3954            fn visit_map<V>(
3955                self,
3956                mut map_: V,
3957            ) -> std::result::Result<CreateFloatingIpRequest, V::Error>
3958            where
3959                V: serde::de::MapAccess<'de>,
3960            {
3961                let mut parent__ = None;
3962                let mut floating_ip__ = None;
3963                let mut request_id__ = None;
3964                while let Some(k) = map_.next_key()? {
3965                    match k {
3966                        GeneratedField::Parent => {
3967                            if parent__.is_some() {
3968                                return Err(serde::de::Error::duplicate_field("parent"));
3969                            }
3970                            parent__ = Some(map_.next_value()?);
3971                        }
3972                        GeneratedField::FloatingIp => {
3973                            if floating_ip__.is_some() {
3974                                return Err(serde::de::Error::duplicate_field("floatingIp"));
3975                            }
3976                            floating_ip__ = map_.next_value()?;
3977                        }
3978                        GeneratedField::RequestId => {
3979                            if request_id__.is_some() {
3980                                return Err(serde::de::Error::duplicate_field("requestId"));
3981                            }
3982                            request_id__ = Some(map_.next_value()?);
3983                        }
3984                        GeneratedField::__SkipField__ => {
3985                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3986                        }
3987                    }
3988                }
3989                Ok(CreateFloatingIpRequest {
3990                    parent: parent__.unwrap_or_default(),
3991                    floating_ip: floating_ip__,
3992                    request_id: request_id__.unwrap_or_default(),
3993                })
3994            }
3995        }
3996        deserializer
3997            .deserialize_struct(
3998                "origincloud.network.v1beta1.CreateFloatingIpRequest",
3999                FIELDS,
4000                GeneratedVisitor,
4001            )
4002    }
4003}
4004impl serde::Serialize for CreateInternetGatewayRequest {
4005    #[allow(deprecated)]
4006    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4007    where
4008        S: serde::Serializer,
4009    {
4010        use serde::ser::SerializeStruct;
4011        let mut len = 0;
4012        if !self.parent.is_empty() {
4013            len += 1;
4014        }
4015        if self.internet_gateway.is_some() {
4016            len += 1;
4017        }
4018        if !self.request_id.is_empty() {
4019            len += 1;
4020        }
4021        let mut struct_ser = serializer
4022            .serialize_struct(
4023                "origincloud.network.v1beta1.CreateInternetGatewayRequest",
4024                len,
4025            )?;
4026        if !self.parent.is_empty() {
4027            struct_ser.serialize_field("parent", &self.parent)?;
4028        }
4029        if let Some(v) = self.internet_gateway.as_ref() {
4030            struct_ser.serialize_field("internetGateway", v)?;
4031        }
4032        if !self.request_id.is_empty() {
4033            struct_ser.serialize_field("requestId", &self.request_id)?;
4034        }
4035        struct_ser.end()
4036    }
4037}
4038impl<'de> serde::Deserialize<'de> for CreateInternetGatewayRequest {
4039    #[allow(deprecated)]
4040    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4041    where
4042        D: serde::Deserializer<'de>,
4043    {
4044        const FIELDS: &[&str] = &[
4045            "parent",
4046            "internet_gateway",
4047            "internetGateway",
4048            "request_id",
4049            "requestId",
4050        ];
4051        #[allow(clippy::enum_variant_names)]
4052        enum GeneratedField {
4053            Parent,
4054            InternetGateway,
4055            RequestId,
4056            __SkipField__,
4057        }
4058        impl<'de> serde::Deserialize<'de> for GeneratedField {
4059            fn deserialize<D>(
4060                deserializer: D,
4061            ) -> std::result::Result<GeneratedField, D::Error>
4062            where
4063                D: serde::Deserializer<'de>,
4064            {
4065                struct GeneratedVisitor;
4066                impl serde::de::Visitor<'_> for GeneratedVisitor {
4067                    type Value = GeneratedField;
4068                    fn expecting(
4069                        &self,
4070                        formatter: &mut std::fmt::Formatter<'_>,
4071                    ) -> std::fmt::Result {
4072                        write!(formatter, "expected one of: {:?}", & FIELDS)
4073                    }
4074                    #[allow(unused_variables)]
4075                    fn visit_str<E>(
4076                        self,
4077                        value: &str,
4078                    ) -> std::result::Result<GeneratedField, E>
4079                    where
4080                        E: serde::de::Error,
4081                    {
4082                        match value {
4083                            "parent" => Ok(GeneratedField::Parent),
4084                            "internetGateway" | "internet_gateway" => {
4085                                Ok(GeneratedField::InternetGateway)
4086                            }
4087                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4088                            _ => Ok(GeneratedField::__SkipField__),
4089                        }
4090                    }
4091                }
4092                deserializer.deserialize_identifier(GeneratedVisitor)
4093            }
4094        }
4095        struct GeneratedVisitor;
4096        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4097            type Value = CreateInternetGatewayRequest;
4098            fn expecting(
4099                &self,
4100                formatter: &mut std::fmt::Formatter<'_>,
4101            ) -> std::fmt::Result {
4102                formatter
4103                    .write_str(
4104                        "struct origincloud.network.v1beta1.CreateInternetGatewayRequest",
4105                    )
4106            }
4107            fn visit_map<V>(
4108                self,
4109                mut map_: V,
4110            ) -> std::result::Result<CreateInternetGatewayRequest, V::Error>
4111            where
4112                V: serde::de::MapAccess<'de>,
4113            {
4114                let mut parent__ = None;
4115                let mut internet_gateway__ = None;
4116                let mut request_id__ = None;
4117                while let Some(k) = map_.next_key()? {
4118                    match k {
4119                        GeneratedField::Parent => {
4120                            if parent__.is_some() {
4121                                return Err(serde::de::Error::duplicate_field("parent"));
4122                            }
4123                            parent__ = Some(map_.next_value()?);
4124                        }
4125                        GeneratedField::InternetGateway => {
4126                            if internet_gateway__.is_some() {
4127                                return Err(
4128                                    serde::de::Error::duplicate_field("internetGateway"),
4129                                );
4130                            }
4131                            internet_gateway__ = map_.next_value()?;
4132                        }
4133                        GeneratedField::RequestId => {
4134                            if request_id__.is_some() {
4135                                return Err(serde::de::Error::duplicate_field("requestId"));
4136                            }
4137                            request_id__ = Some(map_.next_value()?);
4138                        }
4139                        GeneratedField::__SkipField__ => {
4140                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4141                        }
4142                    }
4143                }
4144                Ok(CreateInternetGatewayRequest {
4145                    parent: parent__.unwrap_or_default(),
4146                    internet_gateway: internet_gateway__,
4147                    request_id: request_id__.unwrap_or_default(),
4148                })
4149            }
4150        }
4151        deserializer
4152            .deserialize_struct(
4153                "origincloud.network.v1beta1.CreateInternetGatewayRequest",
4154                FIELDS,
4155                GeneratedVisitor,
4156            )
4157    }
4158}
4159impl serde::Serialize for CreateNatGatewayRequest {
4160    #[allow(deprecated)]
4161    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4162    where
4163        S: serde::Serializer,
4164    {
4165        use serde::ser::SerializeStruct;
4166        let mut len = 0;
4167        if !self.parent.is_empty() {
4168            len += 1;
4169        }
4170        if self.nat_gateway.is_some() {
4171            len += 1;
4172        }
4173        if !self.request_id.is_empty() {
4174            len += 1;
4175        }
4176        let mut struct_ser = serializer
4177            .serialize_struct(
4178                "origincloud.network.v1beta1.CreateNatGatewayRequest",
4179                len,
4180            )?;
4181        if !self.parent.is_empty() {
4182            struct_ser.serialize_field("parent", &self.parent)?;
4183        }
4184        if let Some(v) = self.nat_gateway.as_ref() {
4185            struct_ser.serialize_field("natGateway", v)?;
4186        }
4187        if !self.request_id.is_empty() {
4188            struct_ser.serialize_field("requestId", &self.request_id)?;
4189        }
4190        struct_ser.end()
4191    }
4192}
4193impl<'de> serde::Deserialize<'de> for CreateNatGatewayRequest {
4194    #[allow(deprecated)]
4195    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4196    where
4197        D: serde::Deserializer<'de>,
4198    {
4199        const FIELDS: &[&str] = &[
4200            "parent",
4201            "nat_gateway",
4202            "natGateway",
4203            "request_id",
4204            "requestId",
4205        ];
4206        #[allow(clippy::enum_variant_names)]
4207        enum GeneratedField {
4208            Parent,
4209            NatGateway,
4210            RequestId,
4211            __SkipField__,
4212        }
4213        impl<'de> serde::Deserialize<'de> for GeneratedField {
4214            fn deserialize<D>(
4215                deserializer: D,
4216            ) -> std::result::Result<GeneratedField, D::Error>
4217            where
4218                D: serde::Deserializer<'de>,
4219            {
4220                struct GeneratedVisitor;
4221                impl serde::de::Visitor<'_> for GeneratedVisitor {
4222                    type Value = GeneratedField;
4223                    fn expecting(
4224                        &self,
4225                        formatter: &mut std::fmt::Formatter<'_>,
4226                    ) -> std::fmt::Result {
4227                        write!(formatter, "expected one of: {:?}", & FIELDS)
4228                    }
4229                    #[allow(unused_variables)]
4230                    fn visit_str<E>(
4231                        self,
4232                        value: &str,
4233                    ) -> std::result::Result<GeneratedField, E>
4234                    where
4235                        E: serde::de::Error,
4236                    {
4237                        match value {
4238                            "parent" => Ok(GeneratedField::Parent),
4239                            "natGateway" | "nat_gateway" => {
4240                                Ok(GeneratedField::NatGateway)
4241                            }
4242                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4243                            _ => Ok(GeneratedField::__SkipField__),
4244                        }
4245                    }
4246                }
4247                deserializer.deserialize_identifier(GeneratedVisitor)
4248            }
4249        }
4250        struct GeneratedVisitor;
4251        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4252            type Value = CreateNatGatewayRequest;
4253            fn expecting(
4254                &self,
4255                formatter: &mut std::fmt::Formatter<'_>,
4256            ) -> std::fmt::Result {
4257                formatter
4258                    .write_str(
4259                        "struct origincloud.network.v1beta1.CreateNatGatewayRequest",
4260                    )
4261            }
4262            fn visit_map<V>(
4263                self,
4264                mut map_: V,
4265            ) -> std::result::Result<CreateNatGatewayRequest, V::Error>
4266            where
4267                V: serde::de::MapAccess<'de>,
4268            {
4269                let mut parent__ = None;
4270                let mut nat_gateway__ = None;
4271                let mut request_id__ = None;
4272                while let Some(k) = map_.next_key()? {
4273                    match k {
4274                        GeneratedField::Parent => {
4275                            if parent__.is_some() {
4276                                return Err(serde::de::Error::duplicate_field("parent"));
4277                            }
4278                            parent__ = Some(map_.next_value()?);
4279                        }
4280                        GeneratedField::NatGateway => {
4281                            if nat_gateway__.is_some() {
4282                                return Err(serde::de::Error::duplicate_field("natGateway"));
4283                            }
4284                            nat_gateway__ = map_.next_value()?;
4285                        }
4286                        GeneratedField::RequestId => {
4287                            if request_id__.is_some() {
4288                                return Err(serde::de::Error::duplicate_field("requestId"));
4289                            }
4290                            request_id__ = Some(map_.next_value()?);
4291                        }
4292                        GeneratedField::__SkipField__ => {
4293                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4294                        }
4295                    }
4296                }
4297                Ok(CreateNatGatewayRequest {
4298                    parent: parent__.unwrap_or_default(),
4299                    nat_gateway: nat_gateway__,
4300                    request_id: request_id__.unwrap_or_default(),
4301                })
4302            }
4303        }
4304        deserializer
4305            .deserialize_struct(
4306                "origincloud.network.v1beta1.CreateNatGatewayRequest",
4307                FIELDS,
4308                GeneratedVisitor,
4309            )
4310    }
4311}
4312impl serde::Serialize for CreateNetworkInterfaceRequest {
4313    #[allow(deprecated)]
4314    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4315    where
4316        S: serde::Serializer,
4317    {
4318        use serde::ser::SerializeStruct;
4319        let mut len = 0;
4320        if !self.parent.is_empty() {
4321            len += 1;
4322        }
4323        if self.network_interface.is_some() {
4324            len += 1;
4325        }
4326        if !self.request_id.is_empty() {
4327            len += 1;
4328        }
4329        let mut struct_ser = serializer
4330            .serialize_struct(
4331                "origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4332                len,
4333            )?;
4334        if !self.parent.is_empty() {
4335            struct_ser.serialize_field("parent", &self.parent)?;
4336        }
4337        if let Some(v) = self.network_interface.as_ref() {
4338            struct_ser.serialize_field("networkInterface", v)?;
4339        }
4340        if !self.request_id.is_empty() {
4341            struct_ser.serialize_field("requestId", &self.request_id)?;
4342        }
4343        struct_ser.end()
4344    }
4345}
4346impl<'de> serde::Deserialize<'de> for CreateNetworkInterfaceRequest {
4347    #[allow(deprecated)]
4348    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4349    where
4350        D: serde::Deserializer<'de>,
4351    {
4352        const FIELDS: &[&str] = &[
4353            "parent",
4354            "network_interface",
4355            "networkInterface",
4356            "request_id",
4357            "requestId",
4358        ];
4359        #[allow(clippy::enum_variant_names)]
4360        enum GeneratedField {
4361            Parent,
4362            NetworkInterface,
4363            RequestId,
4364            __SkipField__,
4365        }
4366        impl<'de> serde::Deserialize<'de> for GeneratedField {
4367            fn deserialize<D>(
4368                deserializer: D,
4369            ) -> std::result::Result<GeneratedField, D::Error>
4370            where
4371                D: serde::Deserializer<'de>,
4372            {
4373                struct GeneratedVisitor;
4374                impl serde::de::Visitor<'_> for GeneratedVisitor {
4375                    type Value = GeneratedField;
4376                    fn expecting(
4377                        &self,
4378                        formatter: &mut std::fmt::Formatter<'_>,
4379                    ) -> std::fmt::Result {
4380                        write!(formatter, "expected one of: {:?}", & FIELDS)
4381                    }
4382                    #[allow(unused_variables)]
4383                    fn visit_str<E>(
4384                        self,
4385                        value: &str,
4386                    ) -> std::result::Result<GeneratedField, E>
4387                    where
4388                        E: serde::de::Error,
4389                    {
4390                        match value {
4391                            "parent" => Ok(GeneratedField::Parent),
4392                            "networkInterface" | "network_interface" => {
4393                                Ok(GeneratedField::NetworkInterface)
4394                            }
4395                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4396                            _ => Ok(GeneratedField::__SkipField__),
4397                        }
4398                    }
4399                }
4400                deserializer.deserialize_identifier(GeneratedVisitor)
4401            }
4402        }
4403        struct GeneratedVisitor;
4404        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4405            type Value = CreateNetworkInterfaceRequest;
4406            fn expecting(
4407                &self,
4408                formatter: &mut std::fmt::Formatter<'_>,
4409            ) -> std::fmt::Result {
4410                formatter
4411                    .write_str(
4412                        "struct origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4413                    )
4414            }
4415            fn visit_map<V>(
4416                self,
4417                mut map_: V,
4418            ) -> std::result::Result<CreateNetworkInterfaceRequest, V::Error>
4419            where
4420                V: serde::de::MapAccess<'de>,
4421            {
4422                let mut parent__ = None;
4423                let mut network_interface__ = None;
4424                let mut request_id__ = None;
4425                while let Some(k) = map_.next_key()? {
4426                    match k {
4427                        GeneratedField::Parent => {
4428                            if parent__.is_some() {
4429                                return Err(serde::de::Error::duplicate_field("parent"));
4430                            }
4431                            parent__ = Some(map_.next_value()?);
4432                        }
4433                        GeneratedField::NetworkInterface => {
4434                            if network_interface__.is_some() {
4435                                return Err(
4436                                    serde::de::Error::duplicate_field("networkInterface"),
4437                                );
4438                            }
4439                            network_interface__ = map_.next_value()?;
4440                        }
4441                        GeneratedField::RequestId => {
4442                            if request_id__.is_some() {
4443                                return Err(serde::de::Error::duplicate_field("requestId"));
4444                            }
4445                            request_id__ = Some(map_.next_value()?);
4446                        }
4447                        GeneratedField::__SkipField__ => {
4448                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4449                        }
4450                    }
4451                }
4452                Ok(CreateNetworkInterfaceRequest {
4453                    parent: parent__.unwrap_or_default(),
4454                    network_interface: network_interface__,
4455                    request_id: request_id__.unwrap_or_default(),
4456                })
4457            }
4458        }
4459        deserializer
4460            .deserialize_struct(
4461                "origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4462                FIELDS,
4463                GeneratedVisitor,
4464            )
4465    }
4466}
4467impl serde::Serialize for CreateRouteRequest {
4468    #[allow(deprecated)]
4469    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4470    where
4471        S: serde::Serializer,
4472    {
4473        use serde::ser::SerializeStruct;
4474        let mut len = 0;
4475        if !self.parent.is_empty() {
4476            len += 1;
4477        }
4478        if self.route.is_some() {
4479            len += 1;
4480        }
4481        if !self.request_id.is_empty() {
4482            len += 1;
4483        }
4484        let mut struct_ser = serializer
4485            .serialize_struct("origincloud.network.v1beta1.CreateRouteRequest", len)?;
4486        if !self.parent.is_empty() {
4487            struct_ser.serialize_field("parent", &self.parent)?;
4488        }
4489        if let Some(v) = self.route.as_ref() {
4490            struct_ser.serialize_field("route", v)?;
4491        }
4492        if !self.request_id.is_empty() {
4493            struct_ser.serialize_field("requestId", &self.request_id)?;
4494        }
4495        struct_ser.end()
4496    }
4497}
4498impl<'de> serde::Deserialize<'de> for CreateRouteRequest {
4499    #[allow(deprecated)]
4500    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4501    where
4502        D: serde::Deserializer<'de>,
4503    {
4504        const FIELDS: &[&str] = &["parent", "route", "request_id", "requestId"];
4505        #[allow(clippy::enum_variant_names)]
4506        enum GeneratedField {
4507            Parent,
4508            Route,
4509            RequestId,
4510            __SkipField__,
4511        }
4512        impl<'de> serde::Deserialize<'de> for GeneratedField {
4513            fn deserialize<D>(
4514                deserializer: D,
4515            ) -> std::result::Result<GeneratedField, D::Error>
4516            where
4517                D: serde::Deserializer<'de>,
4518            {
4519                struct GeneratedVisitor;
4520                impl serde::de::Visitor<'_> for GeneratedVisitor {
4521                    type Value = GeneratedField;
4522                    fn expecting(
4523                        &self,
4524                        formatter: &mut std::fmt::Formatter<'_>,
4525                    ) -> std::fmt::Result {
4526                        write!(formatter, "expected one of: {:?}", & FIELDS)
4527                    }
4528                    #[allow(unused_variables)]
4529                    fn visit_str<E>(
4530                        self,
4531                        value: &str,
4532                    ) -> std::result::Result<GeneratedField, E>
4533                    where
4534                        E: serde::de::Error,
4535                    {
4536                        match value {
4537                            "parent" => Ok(GeneratedField::Parent),
4538                            "route" => Ok(GeneratedField::Route),
4539                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4540                            _ => Ok(GeneratedField::__SkipField__),
4541                        }
4542                    }
4543                }
4544                deserializer.deserialize_identifier(GeneratedVisitor)
4545            }
4546        }
4547        struct GeneratedVisitor;
4548        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4549            type Value = CreateRouteRequest;
4550            fn expecting(
4551                &self,
4552                formatter: &mut std::fmt::Formatter<'_>,
4553            ) -> std::fmt::Result {
4554                formatter
4555                    .write_str("struct origincloud.network.v1beta1.CreateRouteRequest")
4556            }
4557            fn visit_map<V>(
4558                self,
4559                mut map_: V,
4560            ) -> std::result::Result<CreateRouteRequest, V::Error>
4561            where
4562                V: serde::de::MapAccess<'de>,
4563            {
4564                let mut parent__ = None;
4565                let mut route__ = None;
4566                let mut request_id__ = None;
4567                while let Some(k) = map_.next_key()? {
4568                    match k {
4569                        GeneratedField::Parent => {
4570                            if parent__.is_some() {
4571                                return Err(serde::de::Error::duplicate_field("parent"));
4572                            }
4573                            parent__ = Some(map_.next_value()?);
4574                        }
4575                        GeneratedField::Route => {
4576                            if route__.is_some() {
4577                                return Err(serde::de::Error::duplicate_field("route"));
4578                            }
4579                            route__ = map_.next_value()?;
4580                        }
4581                        GeneratedField::RequestId => {
4582                            if request_id__.is_some() {
4583                                return Err(serde::de::Error::duplicate_field("requestId"));
4584                            }
4585                            request_id__ = Some(map_.next_value()?);
4586                        }
4587                        GeneratedField::__SkipField__ => {
4588                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4589                        }
4590                    }
4591                }
4592                Ok(CreateRouteRequest {
4593                    parent: parent__.unwrap_or_default(),
4594                    route: route__,
4595                    request_id: request_id__.unwrap_or_default(),
4596                })
4597            }
4598        }
4599        deserializer
4600            .deserialize_struct(
4601                "origincloud.network.v1beta1.CreateRouteRequest",
4602                FIELDS,
4603                GeneratedVisitor,
4604            )
4605    }
4606}
4607impl serde::Serialize for CreateRouteTableAssociationRequest {
4608    #[allow(deprecated)]
4609    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4610    where
4611        S: serde::Serializer,
4612    {
4613        use serde::ser::SerializeStruct;
4614        let mut len = 0;
4615        if !self.parent.is_empty() {
4616            len += 1;
4617        }
4618        if self.route_table_association.is_some() {
4619            len += 1;
4620        }
4621        if !self.request_id.is_empty() {
4622            len += 1;
4623        }
4624        let mut struct_ser = serializer
4625            .serialize_struct(
4626                "origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4627                len,
4628            )?;
4629        if !self.parent.is_empty() {
4630            struct_ser.serialize_field("parent", &self.parent)?;
4631        }
4632        if let Some(v) = self.route_table_association.as_ref() {
4633            struct_ser.serialize_field("routeTableAssociation", v)?;
4634        }
4635        if !self.request_id.is_empty() {
4636            struct_ser.serialize_field("requestId", &self.request_id)?;
4637        }
4638        struct_ser.end()
4639    }
4640}
4641impl<'de> serde::Deserialize<'de> for CreateRouteTableAssociationRequest {
4642    #[allow(deprecated)]
4643    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4644    where
4645        D: serde::Deserializer<'de>,
4646    {
4647        const FIELDS: &[&str] = &[
4648            "parent",
4649            "route_table_association",
4650            "routeTableAssociation",
4651            "request_id",
4652            "requestId",
4653        ];
4654        #[allow(clippy::enum_variant_names)]
4655        enum GeneratedField {
4656            Parent,
4657            RouteTableAssociation,
4658            RequestId,
4659            __SkipField__,
4660        }
4661        impl<'de> serde::Deserialize<'de> for GeneratedField {
4662            fn deserialize<D>(
4663                deserializer: D,
4664            ) -> std::result::Result<GeneratedField, D::Error>
4665            where
4666                D: serde::Deserializer<'de>,
4667            {
4668                struct GeneratedVisitor;
4669                impl serde::de::Visitor<'_> for GeneratedVisitor {
4670                    type Value = GeneratedField;
4671                    fn expecting(
4672                        &self,
4673                        formatter: &mut std::fmt::Formatter<'_>,
4674                    ) -> std::fmt::Result {
4675                        write!(formatter, "expected one of: {:?}", & FIELDS)
4676                    }
4677                    #[allow(unused_variables)]
4678                    fn visit_str<E>(
4679                        self,
4680                        value: &str,
4681                    ) -> std::result::Result<GeneratedField, E>
4682                    where
4683                        E: serde::de::Error,
4684                    {
4685                        match value {
4686                            "parent" => Ok(GeneratedField::Parent),
4687                            "routeTableAssociation" | "route_table_association" => {
4688                                Ok(GeneratedField::RouteTableAssociation)
4689                            }
4690                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4691                            _ => Ok(GeneratedField::__SkipField__),
4692                        }
4693                    }
4694                }
4695                deserializer.deserialize_identifier(GeneratedVisitor)
4696            }
4697        }
4698        struct GeneratedVisitor;
4699        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4700            type Value = CreateRouteTableAssociationRequest;
4701            fn expecting(
4702                &self,
4703                formatter: &mut std::fmt::Formatter<'_>,
4704            ) -> std::fmt::Result {
4705                formatter
4706                    .write_str(
4707                        "struct origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4708                    )
4709            }
4710            fn visit_map<V>(
4711                self,
4712                mut map_: V,
4713            ) -> std::result::Result<CreateRouteTableAssociationRequest, V::Error>
4714            where
4715                V: serde::de::MapAccess<'de>,
4716            {
4717                let mut parent__ = None;
4718                let mut route_table_association__ = None;
4719                let mut request_id__ = None;
4720                while let Some(k) = map_.next_key()? {
4721                    match k {
4722                        GeneratedField::Parent => {
4723                            if parent__.is_some() {
4724                                return Err(serde::de::Error::duplicate_field("parent"));
4725                            }
4726                            parent__ = Some(map_.next_value()?);
4727                        }
4728                        GeneratedField::RouteTableAssociation => {
4729                            if route_table_association__.is_some() {
4730                                return Err(
4731                                    serde::de::Error::duplicate_field("routeTableAssociation"),
4732                                );
4733                            }
4734                            route_table_association__ = map_.next_value()?;
4735                        }
4736                        GeneratedField::RequestId => {
4737                            if request_id__.is_some() {
4738                                return Err(serde::de::Error::duplicate_field("requestId"));
4739                            }
4740                            request_id__ = Some(map_.next_value()?);
4741                        }
4742                        GeneratedField::__SkipField__ => {
4743                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4744                        }
4745                    }
4746                }
4747                Ok(CreateRouteTableAssociationRequest {
4748                    parent: parent__.unwrap_or_default(),
4749                    route_table_association: route_table_association__,
4750                    request_id: request_id__.unwrap_or_default(),
4751                })
4752            }
4753        }
4754        deserializer
4755            .deserialize_struct(
4756                "origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4757                FIELDS,
4758                GeneratedVisitor,
4759            )
4760    }
4761}
4762impl serde::Serialize for CreateRouteTableRequest {
4763    #[allow(deprecated)]
4764    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4765    where
4766        S: serde::Serializer,
4767    {
4768        use serde::ser::SerializeStruct;
4769        let mut len = 0;
4770        if !self.parent.is_empty() {
4771            len += 1;
4772        }
4773        if self.route_table.is_some() {
4774            len += 1;
4775        }
4776        if !self.request_id.is_empty() {
4777            len += 1;
4778        }
4779        let mut struct_ser = serializer
4780            .serialize_struct(
4781                "origincloud.network.v1beta1.CreateRouteTableRequest",
4782                len,
4783            )?;
4784        if !self.parent.is_empty() {
4785            struct_ser.serialize_field("parent", &self.parent)?;
4786        }
4787        if let Some(v) = self.route_table.as_ref() {
4788            struct_ser.serialize_field("routeTable", v)?;
4789        }
4790        if !self.request_id.is_empty() {
4791            struct_ser.serialize_field("requestId", &self.request_id)?;
4792        }
4793        struct_ser.end()
4794    }
4795}
4796impl<'de> serde::Deserialize<'de> for CreateRouteTableRequest {
4797    #[allow(deprecated)]
4798    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4799    where
4800        D: serde::Deserializer<'de>,
4801    {
4802        const FIELDS: &[&str] = &[
4803            "parent",
4804            "route_table",
4805            "routeTable",
4806            "request_id",
4807            "requestId",
4808        ];
4809        #[allow(clippy::enum_variant_names)]
4810        enum GeneratedField {
4811            Parent,
4812            RouteTable,
4813            RequestId,
4814            __SkipField__,
4815        }
4816        impl<'de> serde::Deserialize<'de> for GeneratedField {
4817            fn deserialize<D>(
4818                deserializer: D,
4819            ) -> std::result::Result<GeneratedField, D::Error>
4820            where
4821                D: serde::Deserializer<'de>,
4822            {
4823                struct GeneratedVisitor;
4824                impl serde::de::Visitor<'_> for GeneratedVisitor {
4825                    type Value = GeneratedField;
4826                    fn expecting(
4827                        &self,
4828                        formatter: &mut std::fmt::Formatter<'_>,
4829                    ) -> std::fmt::Result {
4830                        write!(formatter, "expected one of: {:?}", & FIELDS)
4831                    }
4832                    #[allow(unused_variables)]
4833                    fn visit_str<E>(
4834                        self,
4835                        value: &str,
4836                    ) -> std::result::Result<GeneratedField, E>
4837                    where
4838                        E: serde::de::Error,
4839                    {
4840                        match value {
4841                            "parent" => Ok(GeneratedField::Parent),
4842                            "routeTable" | "route_table" => {
4843                                Ok(GeneratedField::RouteTable)
4844                            }
4845                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4846                            _ => Ok(GeneratedField::__SkipField__),
4847                        }
4848                    }
4849                }
4850                deserializer.deserialize_identifier(GeneratedVisitor)
4851            }
4852        }
4853        struct GeneratedVisitor;
4854        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4855            type Value = CreateRouteTableRequest;
4856            fn expecting(
4857                &self,
4858                formatter: &mut std::fmt::Formatter<'_>,
4859            ) -> std::fmt::Result {
4860                formatter
4861                    .write_str(
4862                        "struct origincloud.network.v1beta1.CreateRouteTableRequest",
4863                    )
4864            }
4865            fn visit_map<V>(
4866                self,
4867                mut map_: V,
4868            ) -> std::result::Result<CreateRouteTableRequest, V::Error>
4869            where
4870                V: serde::de::MapAccess<'de>,
4871            {
4872                let mut parent__ = None;
4873                let mut route_table__ = None;
4874                let mut request_id__ = None;
4875                while let Some(k) = map_.next_key()? {
4876                    match k {
4877                        GeneratedField::Parent => {
4878                            if parent__.is_some() {
4879                                return Err(serde::de::Error::duplicate_field("parent"));
4880                            }
4881                            parent__ = Some(map_.next_value()?);
4882                        }
4883                        GeneratedField::RouteTable => {
4884                            if route_table__.is_some() {
4885                                return Err(serde::de::Error::duplicate_field("routeTable"));
4886                            }
4887                            route_table__ = map_.next_value()?;
4888                        }
4889                        GeneratedField::RequestId => {
4890                            if request_id__.is_some() {
4891                                return Err(serde::de::Error::duplicate_field("requestId"));
4892                            }
4893                            request_id__ = Some(map_.next_value()?);
4894                        }
4895                        GeneratedField::__SkipField__ => {
4896                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4897                        }
4898                    }
4899                }
4900                Ok(CreateRouteTableRequest {
4901                    parent: parent__.unwrap_or_default(),
4902                    route_table: route_table__,
4903                    request_id: request_id__.unwrap_or_default(),
4904                })
4905            }
4906        }
4907        deserializer
4908            .deserialize_struct(
4909                "origincloud.network.v1beta1.CreateRouteTableRequest",
4910                FIELDS,
4911                GeneratedVisitor,
4912            )
4913    }
4914}
4915impl serde::Serialize for CreateSecurityGroupAssociationRequest {
4916    #[allow(deprecated)]
4917    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4918    where
4919        S: serde::Serializer,
4920    {
4921        use serde::ser::SerializeStruct;
4922        let mut len = 0;
4923        if !self.parent.is_empty() {
4924            len += 1;
4925        }
4926        if self.security_group_association.is_some() {
4927            len += 1;
4928        }
4929        if !self.request_id.is_empty() {
4930            len += 1;
4931        }
4932        let mut struct_ser = serializer
4933            .serialize_struct(
4934                "origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
4935                len,
4936            )?;
4937        if !self.parent.is_empty() {
4938            struct_ser.serialize_field("parent", &self.parent)?;
4939        }
4940        if let Some(v) = self.security_group_association.as_ref() {
4941            struct_ser.serialize_field("securityGroupAssociation", v)?;
4942        }
4943        if !self.request_id.is_empty() {
4944            struct_ser.serialize_field("requestId", &self.request_id)?;
4945        }
4946        struct_ser.end()
4947    }
4948}
4949impl<'de> serde::Deserialize<'de> for CreateSecurityGroupAssociationRequest {
4950    #[allow(deprecated)]
4951    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4952    where
4953        D: serde::Deserializer<'de>,
4954    {
4955        const FIELDS: &[&str] = &[
4956            "parent",
4957            "security_group_association",
4958            "securityGroupAssociation",
4959            "request_id",
4960            "requestId",
4961        ];
4962        #[allow(clippy::enum_variant_names)]
4963        enum GeneratedField {
4964            Parent,
4965            SecurityGroupAssociation,
4966            RequestId,
4967            __SkipField__,
4968        }
4969        impl<'de> serde::Deserialize<'de> for GeneratedField {
4970            fn deserialize<D>(
4971                deserializer: D,
4972            ) -> std::result::Result<GeneratedField, D::Error>
4973            where
4974                D: serde::Deserializer<'de>,
4975            {
4976                struct GeneratedVisitor;
4977                impl serde::de::Visitor<'_> for GeneratedVisitor {
4978                    type Value = GeneratedField;
4979                    fn expecting(
4980                        &self,
4981                        formatter: &mut std::fmt::Formatter<'_>,
4982                    ) -> std::fmt::Result {
4983                        write!(formatter, "expected one of: {:?}", & FIELDS)
4984                    }
4985                    #[allow(unused_variables)]
4986                    fn visit_str<E>(
4987                        self,
4988                        value: &str,
4989                    ) -> std::result::Result<GeneratedField, E>
4990                    where
4991                        E: serde::de::Error,
4992                    {
4993                        match value {
4994                            "parent" => Ok(GeneratedField::Parent),
4995                            "securityGroupAssociation" | "security_group_association" => {
4996                                Ok(GeneratedField::SecurityGroupAssociation)
4997                            }
4998                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4999                            _ => Ok(GeneratedField::__SkipField__),
5000                        }
5001                    }
5002                }
5003                deserializer.deserialize_identifier(GeneratedVisitor)
5004            }
5005        }
5006        struct GeneratedVisitor;
5007        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5008            type Value = CreateSecurityGroupAssociationRequest;
5009            fn expecting(
5010                &self,
5011                formatter: &mut std::fmt::Formatter<'_>,
5012            ) -> std::fmt::Result {
5013                formatter
5014                    .write_str(
5015                        "struct origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
5016                    )
5017            }
5018            fn visit_map<V>(
5019                self,
5020                mut map_: V,
5021            ) -> std::result::Result<CreateSecurityGroupAssociationRequest, V::Error>
5022            where
5023                V: serde::de::MapAccess<'de>,
5024            {
5025                let mut parent__ = None;
5026                let mut security_group_association__ = None;
5027                let mut request_id__ = None;
5028                while let Some(k) = map_.next_key()? {
5029                    match k {
5030                        GeneratedField::Parent => {
5031                            if parent__.is_some() {
5032                                return Err(serde::de::Error::duplicate_field("parent"));
5033                            }
5034                            parent__ = Some(map_.next_value()?);
5035                        }
5036                        GeneratedField::SecurityGroupAssociation => {
5037                            if security_group_association__.is_some() {
5038                                return Err(
5039                                    serde::de::Error::duplicate_field(
5040                                        "securityGroupAssociation",
5041                                    ),
5042                                );
5043                            }
5044                            security_group_association__ = map_.next_value()?;
5045                        }
5046                        GeneratedField::RequestId => {
5047                            if request_id__.is_some() {
5048                                return Err(serde::de::Error::duplicate_field("requestId"));
5049                            }
5050                            request_id__ = Some(map_.next_value()?);
5051                        }
5052                        GeneratedField::__SkipField__ => {
5053                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5054                        }
5055                    }
5056                }
5057                Ok(CreateSecurityGroupAssociationRequest {
5058                    parent: parent__.unwrap_or_default(),
5059                    security_group_association: security_group_association__,
5060                    request_id: request_id__.unwrap_or_default(),
5061                })
5062            }
5063        }
5064        deserializer
5065            .deserialize_struct(
5066                "origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
5067                FIELDS,
5068                GeneratedVisitor,
5069            )
5070    }
5071}
5072impl serde::Serialize for CreateSecurityGroupRequest {
5073    #[allow(deprecated)]
5074    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5075    where
5076        S: serde::Serializer,
5077    {
5078        use serde::ser::SerializeStruct;
5079        let mut len = 0;
5080        if !self.parent.is_empty() {
5081            len += 1;
5082        }
5083        if self.security_group.is_some() {
5084            len += 1;
5085        }
5086        if !self.request_id.is_empty() {
5087            len += 1;
5088        }
5089        let mut struct_ser = serializer
5090            .serialize_struct(
5091                "origincloud.network.v1beta1.CreateSecurityGroupRequest",
5092                len,
5093            )?;
5094        if !self.parent.is_empty() {
5095            struct_ser.serialize_field("parent", &self.parent)?;
5096        }
5097        if let Some(v) = self.security_group.as_ref() {
5098            struct_ser.serialize_field("securityGroup", v)?;
5099        }
5100        if !self.request_id.is_empty() {
5101            struct_ser.serialize_field("requestId", &self.request_id)?;
5102        }
5103        struct_ser.end()
5104    }
5105}
5106impl<'de> serde::Deserialize<'de> for CreateSecurityGroupRequest {
5107    #[allow(deprecated)]
5108    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5109    where
5110        D: serde::Deserializer<'de>,
5111    {
5112        const FIELDS: &[&str] = &[
5113            "parent",
5114            "security_group",
5115            "securityGroup",
5116            "request_id",
5117            "requestId",
5118        ];
5119        #[allow(clippy::enum_variant_names)]
5120        enum GeneratedField {
5121            Parent,
5122            SecurityGroup,
5123            RequestId,
5124            __SkipField__,
5125        }
5126        impl<'de> serde::Deserialize<'de> for GeneratedField {
5127            fn deserialize<D>(
5128                deserializer: D,
5129            ) -> std::result::Result<GeneratedField, D::Error>
5130            where
5131                D: serde::Deserializer<'de>,
5132            {
5133                struct GeneratedVisitor;
5134                impl serde::de::Visitor<'_> for GeneratedVisitor {
5135                    type Value = GeneratedField;
5136                    fn expecting(
5137                        &self,
5138                        formatter: &mut std::fmt::Formatter<'_>,
5139                    ) -> std::fmt::Result {
5140                        write!(formatter, "expected one of: {:?}", & FIELDS)
5141                    }
5142                    #[allow(unused_variables)]
5143                    fn visit_str<E>(
5144                        self,
5145                        value: &str,
5146                    ) -> std::result::Result<GeneratedField, E>
5147                    where
5148                        E: serde::de::Error,
5149                    {
5150                        match value {
5151                            "parent" => Ok(GeneratedField::Parent),
5152                            "securityGroup" | "security_group" => {
5153                                Ok(GeneratedField::SecurityGroup)
5154                            }
5155                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5156                            _ => Ok(GeneratedField::__SkipField__),
5157                        }
5158                    }
5159                }
5160                deserializer.deserialize_identifier(GeneratedVisitor)
5161            }
5162        }
5163        struct GeneratedVisitor;
5164        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5165            type Value = CreateSecurityGroupRequest;
5166            fn expecting(
5167                &self,
5168                formatter: &mut std::fmt::Formatter<'_>,
5169            ) -> std::fmt::Result {
5170                formatter
5171                    .write_str(
5172                        "struct origincloud.network.v1beta1.CreateSecurityGroupRequest",
5173                    )
5174            }
5175            fn visit_map<V>(
5176                self,
5177                mut map_: V,
5178            ) -> std::result::Result<CreateSecurityGroupRequest, V::Error>
5179            where
5180                V: serde::de::MapAccess<'de>,
5181            {
5182                let mut parent__ = None;
5183                let mut security_group__ = None;
5184                let mut request_id__ = None;
5185                while let Some(k) = map_.next_key()? {
5186                    match k {
5187                        GeneratedField::Parent => {
5188                            if parent__.is_some() {
5189                                return Err(serde::de::Error::duplicate_field("parent"));
5190                            }
5191                            parent__ = Some(map_.next_value()?);
5192                        }
5193                        GeneratedField::SecurityGroup => {
5194                            if security_group__.is_some() {
5195                                return Err(
5196                                    serde::de::Error::duplicate_field("securityGroup"),
5197                                );
5198                            }
5199                            security_group__ = map_.next_value()?;
5200                        }
5201                        GeneratedField::RequestId => {
5202                            if request_id__.is_some() {
5203                                return Err(serde::de::Error::duplicate_field("requestId"));
5204                            }
5205                            request_id__ = Some(map_.next_value()?);
5206                        }
5207                        GeneratedField::__SkipField__ => {
5208                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5209                        }
5210                    }
5211                }
5212                Ok(CreateSecurityGroupRequest {
5213                    parent: parent__.unwrap_or_default(),
5214                    security_group: security_group__,
5215                    request_id: request_id__.unwrap_or_default(),
5216                })
5217            }
5218        }
5219        deserializer
5220            .deserialize_struct(
5221                "origincloud.network.v1beta1.CreateSecurityGroupRequest",
5222                FIELDS,
5223                GeneratedVisitor,
5224            )
5225    }
5226}
5227impl serde::Serialize for CreateSecurityGroupRuleRequest {
5228    #[allow(deprecated)]
5229    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5230    where
5231        S: serde::Serializer,
5232    {
5233        use serde::ser::SerializeStruct;
5234        let mut len = 0;
5235        if !self.parent.is_empty() {
5236            len += 1;
5237        }
5238        if self.security_group_rule.is_some() {
5239            len += 1;
5240        }
5241        if !self.request_id.is_empty() {
5242            len += 1;
5243        }
5244        let mut struct_ser = serializer
5245            .serialize_struct(
5246                "origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5247                len,
5248            )?;
5249        if !self.parent.is_empty() {
5250            struct_ser.serialize_field("parent", &self.parent)?;
5251        }
5252        if let Some(v) = self.security_group_rule.as_ref() {
5253            struct_ser.serialize_field("securityGroupRule", v)?;
5254        }
5255        if !self.request_id.is_empty() {
5256            struct_ser.serialize_field("requestId", &self.request_id)?;
5257        }
5258        struct_ser.end()
5259    }
5260}
5261impl<'de> serde::Deserialize<'de> for CreateSecurityGroupRuleRequest {
5262    #[allow(deprecated)]
5263    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5264    where
5265        D: serde::Deserializer<'de>,
5266    {
5267        const FIELDS: &[&str] = &[
5268            "parent",
5269            "security_group_rule",
5270            "securityGroupRule",
5271            "request_id",
5272            "requestId",
5273        ];
5274        #[allow(clippy::enum_variant_names)]
5275        enum GeneratedField {
5276            Parent,
5277            SecurityGroupRule,
5278            RequestId,
5279            __SkipField__,
5280        }
5281        impl<'de> serde::Deserialize<'de> for GeneratedField {
5282            fn deserialize<D>(
5283                deserializer: D,
5284            ) -> std::result::Result<GeneratedField, D::Error>
5285            where
5286                D: serde::Deserializer<'de>,
5287            {
5288                struct GeneratedVisitor;
5289                impl serde::de::Visitor<'_> for GeneratedVisitor {
5290                    type Value = GeneratedField;
5291                    fn expecting(
5292                        &self,
5293                        formatter: &mut std::fmt::Formatter<'_>,
5294                    ) -> std::fmt::Result {
5295                        write!(formatter, "expected one of: {:?}", & FIELDS)
5296                    }
5297                    #[allow(unused_variables)]
5298                    fn visit_str<E>(
5299                        self,
5300                        value: &str,
5301                    ) -> std::result::Result<GeneratedField, E>
5302                    where
5303                        E: serde::de::Error,
5304                    {
5305                        match value {
5306                            "parent" => Ok(GeneratedField::Parent),
5307                            "securityGroupRule" | "security_group_rule" => {
5308                                Ok(GeneratedField::SecurityGroupRule)
5309                            }
5310                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5311                            _ => Ok(GeneratedField::__SkipField__),
5312                        }
5313                    }
5314                }
5315                deserializer.deserialize_identifier(GeneratedVisitor)
5316            }
5317        }
5318        struct GeneratedVisitor;
5319        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5320            type Value = CreateSecurityGroupRuleRequest;
5321            fn expecting(
5322                &self,
5323                formatter: &mut std::fmt::Formatter<'_>,
5324            ) -> std::fmt::Result {
5325                formatter
5326                    .write_str(
5327                        "struct origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5328                    )
5329            }
5330            fn visit_map<V>(
5331                self,
5332                mut map_: V,
5333            ) -> std::result::Result<CreateSecurityGroupRuleRequest, V::Error>
5334            where
5335                V: serde::de::MapAccess<'de>,
5336            {
5337                let mut parent__ = None;
5338                let mut security_group_rule__ = None;
5339                let mut request_id__ = None;
5340                while let Some(k) = map_.next_key()? {
5341                    match k {
5342                        GeneratedField::Parent => {
5343                            if parent__.is_some() {
5344                                return Err(serde::de::Error::duplicate_field("parent"));
5345                            }
5346                            parent__ = Some(map_.next_value()?);
5347                        }
5348                        GeneratedField::SecurityGroupRule => {
5349                            if security_group_rule__.is_some() {
5350                                return Err(
5351                                    serde::de::Error::duplicate_field("securityGroupRule"),
5352                                );
5353                            }
5354                            security_group_rule__ = map_.next_value()?;
5355                        }
5356                        GeneratedField::RequestId => {
5357                            if request_id__.is_some() {
5358                                return Err(serde::de::Error::duplicate_field("requestId"));
5359                            }
5360                            request_id__ = Some(map_.next_value()?);
5361                        }
5362                        GeneratedField::__SkipField__ => {
5363                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5364                        }
5365                    }
5366                }
5367                Ok(CreateSecurityGroupRuleRequest {
5368                    parent: parent__.unwrap_or_default(),
5369                    security_group_rule: security_group_rule__,
5370                    request_id: request_id__.unwrap_or_default(),
5371                })
5372            }
5373        }
5374        deserializer
5375            .deserialize_struct(
5376                "origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5377                FIELDS,
5378                GeneratedVisitor,
5379            )
5380    }
5381}
5382impl serde::Serialize for CreateSubnetRequest {
5383    #[allow(deprecated)]
5384    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5385    where
5386        S: serde::Serializer,
5387    {
5388        use serde::ser::SerializeStruct;
5389        let mut len = 0;
5390        if !self.parent.is_empty() {
5391            len += 1;
5392        }
5393        if self.subnet.is_some() {
5394            len += 1;
5395        }
5396        if !self.request_id.is_empty() {
5397            len += 1;
5398        }
5399        let mut struct_ser = serializer
5400            .serialize_struct("origincloud.network.v1beta1.CreateSubnetRequest", len)?;
5401        if !self.parent.is_empty() {
5402            struct_ser.serialize_field("parent", &self.parent)?;
5403        }
5404        if let Some(v) = self.subnet.as_ref() {
5405            struct_ser.serialize_field("subnet", v)?;
5406        }
5407        if !self.request_id.is_empty() {
5408            struct_ser.serialize_field("requestId", &self.request_id)?;
5409        }
5410        struct_ser.end()
5411    }
5412}
5413impl<'de> serde::Deserialize<'de> for CreateSubnetRequest {
5414    #[allow(deprecated)]
5415    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5416    where
5417        D: serde::Deserializer<'de>,
5418    {
5419        const FIELDS: &[&str] = &["parent", "subnet", "request_id", "requestId"];
5420        #[allow(clippy::enum_variant_names)]
5421        enum GeneratedField {
5422            Parent,
5423            Subnet,
5424            RequestId,
5425            __SkipField__,
5426        }
5427        impl<'de> serde::Deserialize<'de> for GeneratedField {
5428            fn deserialize<D>(
5429                deserializer: D,
5430            ) -> std::result::Result<GeneratedField, D::Error>
5431            where
5432                D: serde::Deserializer<'de>,
5433            {
5434                struct GeneratedVisitor;
5435                impl serde::de::Visitor<'_> for GeneratedVisitor {
5436                    type Value = GeneratedField;
5437                    fn expecting(
5438                        &self,
5439                        formatter: &mut std::fmt::Formatter<'_>,
5440                    ) -> std::fmt::Result {
5441                        write!(formatter, "expected one of: {:?}", & FIELDS)
5442                    }
5443                    #[allow(unused_variables)]
5444                    fn visit_str<E>(
5445                        self,
5446                        value: &str,
5447                    ) -> std::result::Result<GeneratedField, E>
5448                    where
5449                        E: serde::de::Error,
5450                    {
5451                        match value {
5452                            "parent" => Ok(GeneratedField::Parent),
5453                            "subnet" => Ok(GeneratedField::Subnet),
5454                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5455                            _ => Ok(GeneratedField::__SkipField__),
5456                        }
5457                    }
5458                }
5459                deserializer.deserialize_identifier(GeneratedVisitor)
5460            }
5461        }
5462        struct GeneratedVisitor;
5463        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5464            type Value = CreateSubnetRequest;
5465            fn expecting(
5466                &self,
5467                formatter: &mut std::fmt::Formatter<'_>,
5468            ) -> std::fmt::Result {
5469                formatter
5470                    .write_str("struct origincloud.network.v1beta1.CreateSubnetRequest")
5471            }
5472            fn visit_map<V>(
5473                self,
5474                mut map_: V,
5475            ) -> std::result::Result<CreateSubnetRequest, V::Error>
5476            where
5477                V: serde::de::MapAccess<'de>,
5478            {
5479                let mut parent__ = None;
5480                let mut subnet__ = None;
5481                let mut request_id__ = None;
5482                while let Some(k) = map_.next_key()? {
5483                    match k {
5484                        GeneratedField::Parent => {
5485                            if parent__.is_some() {
5486                                return Err(serde::de::Error::duplicate_field("parent"));
5487                            }
5488                            parent__ = Some(map_.next_value()?);
5489                        }
5490                        GeneratedField::Subnet => {
5491                            if subnet__.is_some() {
5492                                return Err(serde::de::Error::duplicate_field("subnet"));
5493                            }
5494                            subnet__ = map_.next_value()?;
5495                        }
5496                        GeneratedField::RequestId => {
5497                            if request_id__.is_some() {
5498                                return Err(serde::de::Error::duplicate_field("requestId"));
5499                            }
5500                            request_id__ = Some(map_.next_value()?);
5501                        }
5502                        GeneratedField::__SkipField__ => {
5503                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5504                        }
5505                    }
5506                }
5507                Ok(CreateSubnetRequest {
5508                    parent: parent__.unwrap_or_default(),
5509                    subnet: subnet__,
5510                    request_id: request_id__.unwrap_or_default(),
5511                })
5512            }
5513        }
5514        deserializer
5515            .deserialize_struct(
5516                "origincloud.network.v1beta1.CreateSubnetRequest",
5517                FIELDS,
5518                GeneratedVisitor,
5519            )
5520    }
5521}
5522impl serde::Serialize for CreateVpcRequest {
5523    #[allow(deprecated)]
5524    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5525    where
5526        S: serde::Serializer,
5527    {
5528        use serde::ser::SerializeStruct;
5529        let mut len = 0;
5530        if !self.parent.is_empty() {
5531            len += 1;
5532        }
5533        if self.vpc.is_some() {
5534            len += 1;
5535        }
5536        if !self.request_id.is_empty() {
5537            len += 1;
5538        }
5539        let mut struct_ser = serializer
5540            .serialize_struct("origincloud.network.v1beta1.CreateVpcRequest", len)?;
5541        if !self.parent.is_empty() {
5542            struct_ser.serialize_field("parent", &self.parent)?;
5543        }
5544        if let Some(v) = self.vpc.as_ref() {
5545            struct_ser.serialize_field("vpc", v)?;
5546        }
5547        if !self.request_id.is_empty() {
5548            struct_ser.serialize_field("requestId", &self.request_id)?;
5549        }
5550        struct_ser.end()
5551    }
5552}
5553impl<'de> serde::Deserialize<'de> for CreateVpcRequest {
5554    #[allow(deprecated)]
5555    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5556    where
5557        D: serde::Deserializer<'de>,
5558    {
5559        const FIELDS: &[&str] = &["parent", "vpc", "request_id", "requestId"];
5560        #[allow(clippy::enum_variant_names)]
5561        enum GeneratedField {
5562            Parent,
5563            Vpc,
5564            RequestId,
5565            __SkipField__,
5566        }
5567        impl<'de> serde::Deserialize<'de> for GeneratedField {
5568            fn deserialize<D>(
5569                deserializer: D,
5570            ) -> std::result::Result<GeneratedField, D::Error>
5571            where
5572                D: serde::Deserializer<'de>,
5573            {
5574                struct GeneratedVisitor;
5575                impl serde::de::Visitor<'_> for GeneratedVisitor {
5576                    type Value = GeneratedField;
5577                    fn expecting(
5578                        &self,
5579                        formatter: &mut std::fmt::Formatter<'_>,
5580                    ) -> std::fmt::Result {
5581                        write!(formatter, "expected one of: {:?}", & FIELDS)
5582                    }
5583                    #[allow(unused_variables)]
5584                    fn visit_str<E>(
5585                        self,
5586                        value: &str,
5587                    ) -> std::result::Result<GeneratedField, E>
5588                    where
5589                        E: serde::de::Error,
5590                    {
5591                        match value {
5592                            "parent" => Ok(GeneratedField::Parent),
5593                            "vpc" => Ok(GeneratedField::Vpc),
5594                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5595                            _ => Ok(GeneratedField::__SkipField__),
5596                        }
5597                    }
5598                }
5599                deserializer.deserialize_identifier(GeneratedVisitor)
5600            }
5601        }
5602        struct GeneratedVisitor;
5603        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5604            type Value = CreateVpcRequest;
5605            fn expecting(
5606                &self,
5607                formatter: &mut std::fmt::Formatter<'_>,
5608            ) -> std::fmt::Result {
5609                formatter
5610                    .write_str("struct origincloud.network.v1beta1.CreateVpcRequest")
5611            }
5612            fn visit_map<V>(
5613                self,
5614                mut map_: V,
5615            ) -> std::result::Result<CreateVpcRequest, V::Error>
5616            where
5617                V: serde::de::MapAccess<'de>,
5618            {
5619                let mut parent__ = None;
5620                let mut vpc__ = None;
5621                let mut request_id__ = None;
5622                while let Some(k) = map_.next_key()? {
5623                    match k {
5624                        GeneratedField::Parent => {
5625                            if parent__.is_some() {
5626                                return Err(serde::de::Error::duplicate_field("parent"));
5627                            }
5628                            parent__ = Some(map_.next_value()?);
5629                        }
5630                        GeneratedField::Vpc => {
5631                            if vpc__.is_some() {
5632                                return Err(serde::de::Error::duplicate_field("vpc"));
5633                            }
5634                            vpc__ = map_.next_value()?;
5635                        }
5636                        GeneratedField::RequestId => {
5637                            if request_id__.is_some() {
5638                                return Err(serde::de::Error::duplicate_field("requestId"));
5639                            }
5640                            request_id__ = Some(map_.next_value()?);
5641                        }
5642                        GeneratedField::__SkipField__ => {
5643                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5644                        }
5645                    }
5646                }
5647                Ok(CreateVpcRequest {
5648                    parent: parent__.unwrap_or_default(),
5649                    vpc: vpc__,
5650                    request_id: request_id__.unwrap_or_default(),
5651                })
5652            }
5653        }
5654        deserializer
5655            .deserialize_struct(
5656                "origincloud.network.v1beta1.CreateVpcRequest",
5657                FIELDS,
5658                GeneratedVisitor,
5659            )
5660    }
5661}
5662impl serde::Serialize for DeleteAclAssociationRequest {
5663    #[allow(deprecated)]
5664    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5665    where
5666        S: serde::Serializer,
5667    {
5668        use serde::ser::SerializeStruct;
5669        let mut len = 0;
5670        if !self.name.is_empty() {
5671            len += 1;
5672        }
5673        if !self.request_id.is_empty() {
5674            len += 1;
5675        }
5676        let mut struct_ser = serializer
5677            .serialize_struct(
5678                "origincloud.network.v1beta1.DeleteAclAssociationRequest",
5679                len,
5680            )?;
5681        if !self.name.is_empty() {
5682            struct_ser.serialize_field("name", &self.name)?;
5683        }
5684        if !self.request_id.is_empty() {
5685            struct_ser.serialize_field("requestId", &self.request_id)?;
5686        }
5687        struct_ser.end()
5688    }
5689}
5690impl<'de> serde::Deserialize<'de> for DeleteAclAssociationRequest {
5691    #[allow(deprecated)]
5692    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5693    where
5694        D: serde::Deserializer<'de>,
5695    {
5696        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5697        #[allow(clippy::enum_variant_names)]
5698        enum GeneratedField {
5699            Name,
5700            RequestId,
5701            __SkipField__,
5702        }
5703        impl<'de> serde::Deserialize<'de> for GeneratedField {
5704            fn deserialize<D>(
5705                deserializer: D,
5706            ) -> std::result::Result<GeneratedField, D::Error>
5707            where
5708                D: serde::Deserializer<'de>,
5709            {
5710                struct GeneratedVisitor;
5711                impl serde::de::Visitor<'_> for GeneratedVisitor {
5712                    type Value = GeneratedField;
5713                    fn expecting(
5714                        &self,
5715                        formatter: &mut std::fmt::Formatter<'_>,
5716                    ) -> std::fmt::Result {
5717                        write!(formatter, "expected one of: {:?}", & FIELDS)
5718                    }
5719                    #[allow(unused_variables)]
5720                    fn visit_str<E>(
5721                        self,
5722                        value: &str,
5723                    ) -> std::result::Result<GeneratedField, E>
5724                    where
5725                        E: serde::de::Error,
5726                    {
5727                        match value {
5728                            "name" => Ok(GeneratedField::Name),
5729                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5730                            _ => Ok(GeneratedField::__SkipField__),
5731                        }
5732                    }
5733                }
5734                deserializer.deserialize_identifier(GeneratedVisitor)
5735            }
5736        }
5737        struct GeneratedVisitor;
5738        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5739            type Value = DeleteAclAssociationRequest;
5740            fn expecting(
5741                &self,
5742                formatter: &mut std::fmt::Formatter<'_>,
5743            ) -> std::fmt::Result {
5744                formatter
5745                    .write_str(
5746                        "struct origincloud.network.v1beta1.DeleteAclAssociationRequest",
5747                    )
5748            }
5749            fn visit_map<V>(
5750                self,
5751                mut map_: V,
5752            ) -> std::result::Result<DeleteAclAssociationRequest, V::Error>
5753            where
5754                V: serde::de::MapAccess<'de>,
5755            {
5756                let mut name__ = None;
5757                let mut request_id__ = None;
5758                while let Some(k) = map_.next_key()? {
5759                    match k {
5760                        GeneratedField::Name => {
5761                            if name__.is_some() {
5762                                return Err(serde::de::Error::duplicate_field("name"));
5763                            }
5764                            name__ = Some(map_.next_value()?);
5765                        }
5766                        GeneratedField::RequestId => {
5767                            if request_id__.is_some() {
5768                                return Err(serde::de::Error::duplicate_field("requestId"));
5769                            }
5770                            request_id__ = Some(map_.next_value()?);
5771                        }
5772                        GeneratedField::__SkipField__ => {
5773                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5774                        }
5775                    }
5776                }
5777                Ok(DeleteAclAssociationRequest {
5778                    name: name__.unwrap_or_default(),
5779                    request_id: request_id__.unwrap_or_default(),
5780                })
5781            }
5782        }
5783        deserializer
5784            .deserialize_struct(
5785                "origincloud.network.v1beta1.DeleteAclAssociationRequest",
5786                FIELDS,
5787                GeneratedVisitor,
5788            )
5789    }
5790}
5791impl serde::Serialize for DeleteAclRequest {
5792    #[allow(deprecated)]
5793    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5794    where
5795        S: serde::Serializer,
5796    {
5797        use serde::ser::SerializeStruct;
5798        let mut len = 0;
5799        if !self.name.is_empty() {
5800            len += 1;
5801        }
5802        if !self.request_id.is_empty() {
5803            len += 1;
5804        }
5805        let mut struct_ser = serializer
5806            .serialize_struct("origincloud.network.v1beta1.DeleteAclRequest", len)?;
5807        if !self.name.is_empty() {
5808            struct_ser.serialize_field("name", &self.name)?;
5809        }
5810        if !self.request_id.is_empty() {
5811            struct_ser.serialize_field("requestId", &self.request_id)?;
5812        }
5813        struct_ser.end()
5814    }
5815}
5816impl<'de> serde::Deserialize<'de> for DeleteAclRequest {
5817    #[allow(deprecated)]
5818    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5819    where
5820        D: serde::Deserializer<'de>,
5821    {
5822        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5823        #[allow(clippy::enum_variant_names)]
5824        enum GeneratedField {
5825            Name,
5826            RequestId,
5827            __SkipField__,
5828        }
5829        impl<'de> serde::Deserialize<'de> for GeneratedField {
5830            fn deserialize<D>(
5831                deserializer: D,
5832            ) -> std::result::Result<GeneratedField, D::Error>
5833            where
5834                D: serde::Deserializer<'de>,
5835            {
5836                struct GeneratedVisitor;
5837                impl serde::de::Visitor<'_> for GeneratedVisitor {
5838                    type Value = GeneratedField;
5839                    fn expecting(
5840                        &self,
5841                        formatter: &mut std::fmt::Formatter<'_>,
5842                    ) -> std::fmt::Result {
5843                        write!(formatter, "expected one of: {:?}", & FIELDS)
5844                    }
5845                    #[allow(unused_variables)]
5846                    fn visit_str<E>(
5847                        self,
5848                        value: &str,
5849                    ) -> std::result::Result<GeneratedField, E>
5850                    where
5851                        E: serde::de::Error,
5852                    {
5853                        match value {
5854                            "name" => Ok(GeneratedField::Name),
5855                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5856                            _ => Ok(GeneratedField::__SkipField__),
5857                        }
5858                    }
5859                }
5860                deserializer.deserialize_identifier(GeneratedVisitor)
5861            }
5862        }
5863        struct GeneratedVisitor;
5864        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5865            type Value = DeleteAclRequest;
5866            fn expecting(
5867                &self,
5868                formatter: &mut std::fmt::Formatter<'_>,
5869            ) -> std::fmt::Result {
5870                formatter
5871                    .write_str("struct origincloud.network.v1beta1.DeleteAclRequest")
5872            }
5873            fn visit_map<V>(
5874                self,
5875                mut map_: V,
5876            ) -> std::result::Result<DeleteAclRequest, V::Error>
5877            where
5878                V: serde::de::MapAccess<'de>,
5879            {
5880                let mut name__ = None;
5881                let mut request_id__ = None;
5882                while let Some(k) = map_.next_key()? {
5883                    match k {
5884                        GeneratedField::Name => {
5885                            if name__.is_some() {
5886                                return Err(serde::de::Error::duplicate_field("name"));
5887                            }
5888                            name__ = Some(map_.next_value()?);
5889                        }
5890                        GeneratedField::RequestId => {
5891                            if request_id__.is_some() {
5892                                return Err(serde::de::Error::duplicate_field("requestId"));
5893                            }
5894                            request_id__ = Some(map_.next_value()?);
5895                        }
5896                        GeneratedField::__SkipField__ => {
5897                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5898                        }
5899                    }
5900                }
5901                Ok(DeleteAclRequest {
5902                    name: name__.unwrap_or_default(),
5903                    request_id: request_id__.unwrap_or_default(),
5904                })
5905            }
5906        }
5907        deserializer
5908            .deserialize_struct(
5909                "origincloud.network.v1beta1.DeleteAclRequest",
5910                FIELDS,
5911                GeneratedVisitor,
5912            )
5913    }
5914}
5915impl serde::Serialize for DeleteAclRuleRequest {
5916    #[allow(deprecated)]
5917    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5918    where
5919        S: serde::Serializer,
5920    {
5921        use serde::ser::SerializeStruct;
5922        let mut len = 0;
5923        if !self.name.is_empty() {
5924            len += 1;
5925        }
5926        if !self.request_id.is_empty() {
5927            len += 1;
5928        }
5929        let mut struct_ser = serializer
5930            .serialize_struct("origincloud.network.v1beta1.DeleteAclRuleRequest", len)?;
5931        if !self.name.is_empty() {
5932            struct_ser.serialize_field("name", &self.name)?;
5933        }
5934        if !self.request_id.is_empty() {
5935            struct_ser.serialize_field("requestId", &self.request_id)?;
5936        }
5937        struct_ser.end()
5938    }
5939}
5940impl<'de> serde::Deserialize<'de> for DeleteAclRuleRequest {
5941    #[allow(deprecated)]
5942    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5943    where
5944        D: serde::Deserializer<'de>,
5945    {
5946        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5947        #[allow(clippy::enum_variant_names)]
5948        enum GeneratedField {
5949            Name,
5950            RequestId,
5951            __SkipField__,
5952        }
5953        impl<'de> serde::Deserialize<'de> for GeneratedField {
5954            fn deserialize<D>(
5955                deserializer: D,
5956            ) -> std::result::Result<GeneratedField, D::Error>
5957            where
5958                D: serde::Deserializer<'de>,
5959            {
5960                struct GeneratedVisitor;
5961                impl serde::de::Visitor<'_> for GeneratedVisitor {
5962                    type Value = GeneratedField;
5963                    fn expecting(
5964                        &self,
5965                        formatter: &mut std::fmt::Formatter<'_>,
5966                    ) -> std::fmt::Result {
5967                        write!(formatter, "expected one of: {:?}", & FIELDS)
5968                    }
5969                    #[allow(unused_variables)]
5970                    fn visit_str<E>(
5971                        self,
5972                        value: &str,
5973                    ) -> std::result::Result<GeneratedField, E>
5974                    where
5975                        E: serde::de::Error,
5976                    {
5977                        match value {
5978                            "name" => Ok(GeneratedField::Name),
5979                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5980                            _ => Ok(GeneratedField::__SkipField__),
5981                        }
5982                    }
5983                }
5984                deserializer.deserialize_identifier(GeneratedVisitor)
5985            }
5986        }
5987        struct GeneratedVisitor;
5988        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5989            type Value = DeleteAclRuleRequest;
5990            fn expecting(
5991                &self,
5992                formatter: &mut std::fmt::Formatter<'_>,
5993            ) -> std::fmt::Result {
5994                formatter
5995                    .write_str("struct origincloud.network.v1beta1.DeleteAclRuleRequest")
5996            }
5997            fn visit_map<V>(
5998                self,
5999                mut map_: V,
6000            ) -> std::result::Result<DeleteAclRuleRequest, V::Error>
6001            where
6002                V: serde::de::MapAccess<'de>,
6003            {
6004                let mut name__ = None;
6005                let mut request_id__ = None;
6006                while let Some(k) = map_.next_key()? {
6007                    match k {
6008                        GeneratedField::Name => {
6009                            if name__.is_some() {
6010                                return Err(serde::de::Error::duplicate_field("name"));
6011                            }
6012                            name__ = Some(map_.next_value()?);
6013                        }
6014                        GeneratedField::RequestId => {
6015                            if request_id__.is_some() {
6016                                return Err(serde::de::Error::duplicate_field("requestId"));
6017                            }
6018                            request_id__ = Some(map_.next_value()?);
6019                        }
6020                        GeneratedField::__SkipField__ => {
6021                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6022                        }
6023                    }
6024                }
6025                Ok(DeleteAclRuleRequest {
6026                    name: name__.unwrap_or_default(),
6027                    request_id: request_id__.unwrap_or_default(),
6028                })
6029            }
6030        }
6031        deserializer
6032            .deserialize_struct(
6033                "origincloud.network.v1beta1.DeleteAclRuleRequest",
6034                FIELDS,
6035                GeneratedVisitor,
6036            )
6037    }
6038}
6039impl serde::Serialize for DeleteDnsPolicyAssociationRequest {
6040    #[allow(deprecated)]
6041    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6042    where
6043        S: serde::Serializer,
6044    {
6045        use serde::ser::SerializeStruct;
6046        let mut len = 0;
6047        if !self.name.is_empty() {
6048            len += 1;
6049        }
6050        if !self.request_id.is_empty() {
6051            len += 1;
6052        }
6053        let mut struct_ser = serializer
6054            .serialize_struct(
6055                "origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6056                len,
6057            )?;
6058        if !self.name.is_empty() {
6059            struct_ser.serialize_field("name", &self.name)?;
6060        }
6061        if !self.request_id.is_empty() {
6062            struct_ser.serialize_field("requestId", &self.request_id)?;
6063        }
6064        struct_ser.end()
6065    }
6066}
6067impl<'de> serde::Deserialize<'de> for DeleteDnsPolicyAssociationRequest {
6068    #[allow(deprecated)]
6069    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6070    where
6071        D: serde::Deserializer<'de>,
6072    {
6073        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6074        #[allow(clippy::enum_variant_names)]
6075        enum GeneratedField {
6076            Name,
6077            RequestId,
6078            __SkipField__,
6079        }
6080        impl<'de> serde::Deserialize<'de> for GeneratedField {
6081            fn deserialize<D>(
6082                deserializer: D,
6083            ) -> std::result::Result<GeneratedField, D::Error>
6084            where
6085                D: serde::Deserializer<'de>,
6086            {
6087                struct GeneratedVisitor;
6088                impl serde::de::Visitor<'_> for GeneratedVisitor {
6089                    type Value = GeneratedField;
6090                    fn expecting(
6091                        &self,
6092                        formatter: &mut std::fmt::Formatter<'_>,
6093                    ) -> std::fmt::Result {
6094                        write!(formatter, "expected one of: {:?}", & FIELDS)
6095                    }
6096                    #[allow(unused_variables)]
6097                    fn visit_str<E>(
6098                        self,
6099                        value: &str,
6100                    ) -> std::result::Result<GeneratedField, E>
6101                    where
6102                        E: serde::de::Error,
6103                    {
6104                        match value {
6105                            "name" => Ok(GeneratedField::Name),
6106                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6107                            _ => Ok(GeneratedField::__SkipField__),
6108                        }
6109                    }
6110                }
6111                deserializer.deserialize_identifier(GeneratedVisitor)
6112            }
6113        }
6114        struct GeneratedVisitor;
6115        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6116            type Value = DeleteDnsPolicyAssociationRequest;
6117            fn expecting(
6118                &self,
6119                formatter: &mut std::fmt::Formatter<'_>,
6120            ) -> std::fmt::Result {
6121                formatter
6122                    .write_str(
6123                        "struct origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6124                    )
6125            }
6126            fn visit_map<V>(
6127                self,
6128                mut map_: V,
6129            ) -> std::result::Result<DeleteDnsPolicyAssociationRequest, V::Error>
6130            where
6131                V: serde::de::MapAccess<'de>,
6132            {
6133                let mut name__ = None;
6134                let mut request_id__ = None;
6135                while let Some(k) = map_.next_key()? {
6136                    match k {
6137                        GeneratedField::Name => {
6138                            if name__.is_some() {
6139                                return Err(serde::de::Error::duplicate_field("name"));
6140                            }
6141                            name__ = Some(map_.next_value()?);
6142                        }
6143                        GeneratedField::RequestId => {
6144                            if request_id__.is_some() {
6145                                return Err(serde::de::Error::duplicate_field("requestId"));
6146                            }
6147                            request_id__ = Some(map_.next_value()?);
6148                        }
6149                        GeneratedField::__SkipField__ => {
6150                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6151                        }
6152                    }
6153                }
6154                Ok(DeleteDnsPolicyAssociationRequest {
6155                    name: name__.unwrap_or_default(),
6156                    request_id: request_id__.unwrap_or_default(),
6157                })
6158            }
6159        }
6160        deserializer
6161            .deserialize_struct(
6162                "origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6163                FIELDS,
6164                GeneratedVisitor,
6165            )
6166    }
6167}
6168impl serde::Serialize for DeleteDnsPolicyRequest {
6169    #[allow(deprecated)]
6170    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6171    where
6172        S: serde::Serializer,
6173    {
6174        use serde::ser::SerializeStruct;
6175        let mut len = 0;
6176        if !self.name.is_empty() {
6177            len += 1;
6178        }
6179        if !self.request_id.is_empty() {
6180            len += 1;
6181        }
6182        let mut struct_ser = serializer
6183            .serialize_struct(
6184                "origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6185                len,
6186            )?;
6187        if !self.name.is_empty() {
6188            struct_ser.serialize_field("name", &self.name)?;
6189        }
6190        if !self.request_id.is_empty() {
6191            struct_ser.serialize_field("requestId", &self.request_id)?;
6192        }
6193        struct_ser.end()
6194    }
6195}
6196impl<'de> serde::Deserialize<'de> for DeleteDnsPolicyRequest {
6197    #[allow(deprecated)]
6198    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6199    where
6200        D: serde::Deserializer<'de>,
6201    {
6202        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6203        #[allow(clippy::enum_variant_names)]
6204        enum GeneratedField {
6205            Name,
6206            RequestId,
6207            __SkipField__,
6208        }
6209        impl<'de> serde::Deserialize<'de> for GeneratedField {
6210            fn deserialize<D>(
6211                deserializer: D,
6212            ) -> std::result::Result<GeneratedField, D::Error>
6213            where
6214                D: serde::Deserializer<'de>,
6215            {
6216                struct GeneratedVisitor;
6217                impl serde::de::Visitor<'_> for GeneratedVisitor {
6218                    type Value = GeneratedField;
6219                    fn expecting(
6220                        &self,
6221                        formatter: &mut std::fmt::Formatter<'_>,
6222                    ) -> std::fmt::Result {
6223                        write!(formatter, "expected one of: {:?}", & FIELDS)
6224                    }
6225                    #[allow(unused_variables)]
6226                    fn visit_str<E>(
6227                        self,
6228                        value: &str,
6229                    ) -> std::result::Result<GeneratedField, E>
6230                    where
6231                        E: serde::de::Error,
6232                    {
6233                        match value {
6234                            "name" => Ok(GeneratedField::Name),
6235                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6236                            _ => Ok(GeneratedField::__SkipField__),
6237                        }
6238                    }
6239                }
6240                deserializer.deserialize_identifier(GeneratedVisitor)
6241            }
6242        }
6243        struct GeneratedVisitor;
6244        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6245            type Value = DeleteDnsPolicyRequest;
6246            fn expecting(
6247                &self,
6248                formatter: &mut std::fmt::Formatter<'_>,
6249            ) -> std::fmt::Result {
6250                formatter
6251                    .write_str(
6252                        "struct origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6253                    )
6254            }
6255            fn visit_map<V>(
6256                self,
6257                mut map_: V,
6258            ) -> std::result::Result<DeleteDnsPolicyRequest, V::Error>
6259            where
6260                V: serde::de::MapAccess<'de>,
6261            {
6262                let mut name__ = None;
6263                let mut request_id__ = None;
6264                while let Some(k) = map_.next_key()? {
6265                    match k {
6266                        GeneratedField::Name => {
6267                            if name__.is_some() {
6268                                return Err(serde::de::Error::duplicate_field("name"));
6269                            }
6270                            name__ = Some(map_.next_value()?);
6271                        }
6272                        GeneratedField::RequestId => {
6273                            if request_id__.is_some() {
6274                                return Err(serde::de::Error::duplicate_field("requestId"));
6275                            }
6276                            request_id__ = Some(map_.next_value()?);
6277                        }
6278                        GeneratedField::__SkipField__ => {
6279                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6280                        }
6281                    }
6282                }
6283                Ok(DeleteDnsPolicyRequest {
6284                    name: name__.unwrap_or_default(),
6285                    request_id: request_id__.unwrap_or_default(),
6286                })
6287            }
6288        }
6289        deserializer
6290            .deserialize_struct(
6291                "origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6292                FIELDS,
6293                GeneratedVisitor,
6294            )
6295    }
6296}
6297impl serde::Serialize for DeleteFloatingIpAssociationRequest {
6298    #[allow(deprecated)]
6299    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6300    where
6301        S: serde::Serializer,
6302    {
6303        use serde::ser::SerializeStruct;
6304        let mut len = 0;
6305        if !self.name.is_empty() {
6306            len += 1;
6307        }
6308        if !self.request_id.is_empty() {
6309            len += 1;
6310        }
6311        let mut struct_ser = serializer
6312            .serialize_struct(
6313                "origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6314                len,
6315            )?;
6316        if !self.name.is_empty() {
6317            struct_ser.serialize_field("name", &self.name)?;
6318        }
6319        if !self.request_id.is_empty() {
6320            struct_ser.serialize_field("requestId", &self.request_id)?;
6321        }
6322        struct_ser.end()
6323    }
6324}
6325impl<'de> serde::Deserialize<'de> for DeleteFloatingIpAssociationRequest {
6326    #[allow(deprecated)]
6327    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6328    where
6329        D: serde::Deserializer<'de>,
6330    {
6331        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6332        #[allow(clippy::enum_variant_names)]
6333        enum GeneratedField {
6334            Name,
6335            RequestId,
6336            __SkipField__,
6337        }
6338        impl<'de> serde::Deserialize<'de> for GeneratedField {
6339            fn deserialize<D>(
6340                deserializer: D,
6341            ) -> std::result::Result<GeneratedField, D::Error>
6342            where
6343                D: serde::Deserializer<'de>,
6344            {
6345                struct GeneratedVisitor;
6346                impl serde::de::Visitor<'_> for GeneratedVisitor {
6347                    type Value = GeneratedField;
6348                    fn expecting(
6349                        &self,
6350                        formatter: &mut std::fmt::Formatter<'_>,
6351                    ) -> std::fmt::Result {
6352                        write!(formatter, "expected one of: {:?}", & FIELDS)
6353                    }
6354                    #[allow(unused_variables)]
6355                    fn visit_str<E>(
6356                        self,
6357                        value: &str,
6358                    ) -> std::result::Result<GeneratedField, E>
6359                    where
6360                        E: serde::de::Error,
6361                    {
6362                        match value {
6363                            "name" => Ok(GeneratedField::Name),
6364                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6365                            _ => Ok(GeneratedField::__SkipField__),
6366                        }
6367                    }
6368                }
6369                deserializer.deserialize_identifier(GeneratedVisitor)
6370            }
6371        }
6372        struct GeneratedVisitor;
6373        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6374            type Value = DeleteFloatingIpAssociationRequest;
6375            fn expecting(
6376                &self,
6377                formatter: &mut std::fmt::Formatter<'_>,
6378            ) -> std::fmt::Result {
6379                formatter
6380                    .write_str(
6381                        "struct origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6382                    )
6383            }
6384            fn visit_map<V>(
6385                self,
6386                mut map_: V,
6387            ) -> std::result::Result<DeleteFloatingIpAssociationRequest, V::Error>
6388            where
6389                V: serde::de::MapAccess<'de>,
6390            {
6391                let mut name__ = None;
6392                let mut request_id__ = None;
6393                while let Some(k) = map_.next_key()? {
6394                    match k {
6395                        GeneratedField::Name => {
6396                            if name__.is_some() {
6397                                return Err(serde::de::Error::duplicate_field("name"));
6398                            }
6399                            name__ = Some(map_.next_value()?);
6400                        }
6401                        GeneratedField::RequestId => {
6402                            if request_id__.is_some() {
6403                                return Err(serde::de::Error::duplicate_field("requestId"));
6404                            }
6405                            request_id__ = Some(map_.next_value()?);
6406                        }
6407                        GeneratedField::__SkipField__ => {
6408                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6409                        }
6410                    }
6411                }
6412                Ok(DeleteFloatingIpAssociationRequest {
6413                    name: name__.unwrap_or_default(),
6414                    request_id: request_id__.unwrap_or_default(),
6415                })
6416            }
6417        }
6418        deserializer
6419            .deserialize_struct(
6420                "origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6421                FIELDS,
6422                GeneratedVisitor,
6423            )
6424    }
6425}
6426impl serde::Serialize for DeleteFloatingIpRequest {
6427    #[allow(deprecated)]
6428    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6429    where
6430        S: serde::Serializer,
6431    {
6432        use serde::ser::SerializeStruct;
6433        let mut len = 0;
6434        if !self.name.is_empty() {
6435            len += 1;
6436        }
6437        if !self.request_id.is_empty() {
6438            len += 1;
6439        }
6440        let mut struct_ser = serializer
6441            .serialize_struct(
6442                "origincloud.network.v1beta1.DeleteFloatingIpRequest",
6443                len,
6444            )?;
6445        if !self.name.is_empty() {
6446            struct_ser.serialize_field("name", &self.name)?;
6447        }
6448        if !self.request_id.is_empty() {
6449            struct_ser.serialize_field("requestId", &self.request_id)?;
6450        }
6451        struct_ser.end()
6452    }
6453}
6454impl<'de> serde::Deserialize<'de> for DeleteFloatingIpRequest {
6455    #[allow(deprecated)]
6456    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6457    where
6458        D: serde::Deserializer<'de>,
6459    {
6460        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6461        #[allow(clippy::enum_variant_names)]
6462        enum GeneratedField {
6463            Name,
6464            RequestId,
6465            __SkipField__,
6466        }
6467        impl<'de> serde::Deserialize<'de> for GeneratedField {
6468            fn deserialize<D>(
6469                deserializer: D,
6470            ) -> std::result::Result<GeneratedField, D::Error>
6471            where
6472                D: serde::Deserializer<'de>,
6473            {
6474                struct GeneratedVisitor;
6475                impl serde::de::Visitor<'_> for GeneratedVisitor {
6476                    type Value = GeneratedField;
6477                    fn expecting(
6478                        &self,
6479                        formatter: &mut std::fmt::Formatter<'_>,
6480                    ) -> std::fmt::Result {
6481                        write!(formatter, "expected one of: {:?}", & FIELDS)
6482                    }
6483                    #[allow(unused_variables)]
6484                    fn visit_str<E>(
6485                        self,
6486                        value: &str,
6487                    ) -> std::result::Result<GeneratedField, E>
6488                    where
6489                        E: serde::de::Error,
6490                    {
6491                        match value {
6492                            "name" => Ok(GeneratedField::Name),
6493                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6494                            _ => Ok(GeneratedField::__SkipField__),
6495                        }
6496                    }
6497                }
6498                deserializer.deserialize_identifier(GeneratedVisitor)
6499            }
6500        }
6501        struct GeneratedVisitor;
6502        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6503            type Value = DeleteFloatingIpRequest;
6504            fn expecting(
6505                &self,
6506                formatter: &mut std::fmt::Formatter<'_>,
6507            ) -> std::fmt::Result {
6508                formatter
6509                    .write_str(
6510                        "struct origincloud.network.v1beta1.DeleteFloatingIpRequest",
6511                    )
6512            }
6513            fn visit_map<V>(
6514                self,
6515                mut map_: V,
6516            ) -> std::result::Result<DeleteFloatingIpRequest, V::Error>
6517            where
6518                V: serde::de::MapAccess<'de>,
6519            {
6520                let mut name__ = None;
6521                let mut request_id__ = None;
6522                while let Some(k) = map_.next_key()? {
6523                    match k {
6524                        GeneratedField::Name => {
6525                            if name__.is_some() {
6526                                return Err(serde::de::Error::duplicate_field("name"));
6527                            }
6528                            name__ = Some(map_.next_value()?);
6529                        }
6530                        GeneratedField::RequestId => {
6531                            if request_id__.is_some() {
6532                                return Err(serde::de::Error::duplicate_field("requestId"));
6533                            }
6534                            request_id__ = Some(map_.next_value()?);
6535                        }
6536                        GeneratedField::__SkipField__ => {
6537                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6538                        }
6539                    }
6540                }
6541                Ok(DeleteFloatingIpRequest {
6542                    name: name__.unwrap_or_default(),
6543                    request_id: request_id__.unwrap_or_default(),
6544                })
6545            }
6546        }
6547        deserializer
6548            .deserialize_struct(
6549                "origincloud.network.v1beta1.DeleteFloatingIpRequest",
6550                FIELDS,
6551                GeneratedVisitor,
6552            )
6553    }
6554}
6555impl serde::Serialize for DeleteInternetGatewayRequest {
6556    #[allow(deprecated)]
6557    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6558    where
6559        S: serde::Serializer,
6560    {
6561        use serde::ser::SerializeStruct;
6562        let mut len = 0;
6563        if !self.name.is_empty() {
6564            len += 1;
6565        }
6566        if !self.request_id.is_empty() {
6567            len += 1;
6568        }
6569        let mut struct_ser = serializer
6570            .serialize_struct(
6571                "origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6572                len,
6573            )?;
6574        if !self.name.is_empty() {
6575            struct_ser.serialize_field("name", &self.name)?;
6576        }
6577        if !self.request_id.is_empty() {
6578            struct_ser.serialize_field("requestId", &self.request_id)?;
6579        }
6580        struct_ser.end()
6581    }
6582}
6583impl<'de> serde::Deserialize<'de> for DeleteInternetGatewayRequest {
6584    #[allow(deprecated)]
6585    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6586    where
6587        D: serde::Deserializer<'de>,
6588    {
6589        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6590        #[allow(clippy::enum_variant_names)]
6591        enum GeneratedField {
6592            Name,
6593            RequestId,
6594            __SkipField__,
6595        }
6596        impl<'de> serde::Deserialize<'de> for GeneratedField {
6597            fn deserialize<D>(
6598                deserializer: D,
6599            ) -> std::result::Result<GeneratedField, D::Error>
6600            where
6601                D: serde::Deserializer<'de>,
6602            {
6603                struct GeneratedVisitor;
6604                impl serde::de::Visitor<'_> for GeneratedVisitor {
6605                    type Value = GeneratedField;
6606                    fn expecting(
6607                        &self,
6608                        formatter: &mut std::fmt::Formatter<'_>,
6609                    ) -> std::fmt::Result {
6610                        write!(formatter, "expected one of: {:?}", & FIELDS)
6611                    }
6612                    #[allow(unused_variables)]
6613                    fn visit_str<E>(
6614                        self,
6615                        value: &str,
6616                    ) -> std::result::Result<GeneratedField, E>
6617                    where
6618                        E: serde::de::Error,
6619                    {
6620                        match value {
6621                            "name" => Ok(GeneratedField::Name),
6622                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6623                            _ => Ok(GeneratedField::__SkipField__),
6624                        }
6625                    }
6626                }
6627                deserializer.deserialize_identifier(GeneratedVisitor)
6628            }
6629        }
6630        struct GeneratedVisitor;
6631        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6632            type Value = DeleteInternetGatewayRequest;
6633            fn expecting(
6634                &self,
6635                formatter: &mut std::fmt::Formatter<'_>,
6636            ) -> std::fmt::Result {
6637                formatter
6638                    .write_str(
6639                        "struct origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6640                    )
6641            }
6642            fn visit_map<V>(
6643                self,
6644                mut map_: V,
6645            ) -> std::result::Result<DeleteInternetGatewayRequest, V::Error>
6646            where
6647                V: serde::de::MapAccess<'de>,
6648            {
6649                let mut name__ = None;
6650                let mut request_id__ = None;
6651                while let Some(k) = map_.next_key()? {
6652                    match k {
6653                        GeneratedField::Name => {
6654                            if name__.is_some() {
6655                                return Err(serde::de::Error::duplicate_field("name"));
6656                            }
6657                            name__ = Some(map_.next_value()?);
6658                        }
6659                        GeneratedField::RequestId => {
6660                            if request_id__.is_some() {
6661                                return Err(serde::de::Error::duplicate_field("requestId"));
6662                            }
6663                            request_id__ = Some(map_.next_value()?);
6664                        }
6665                        GeneratedField::__SkipField__ => {
6666                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6667                        }
6668                    }
6669                }
6670                Ok(DeleteInternetGatewayRequest {
6671                    name: name__.unwrap_or_default(),
6672                    request_id: request_id__.unwrap_or_default(),
6673                })
6674            }
6675        }
6676        deserializer
6677            .deserialize_struct(
6678                "origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6679                FIELDS,
6680                GeneratedVisitor,
6681            )
6682    }
6683}
6684impl serde::Serialize for DeleteNatGatewayRequest {
6685    #[allow(deprecated)]
6686    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6687    where
6688        S: serde::Serializer,
6689    {
6690        use serde::ser::SerializeStruct;
6691        let mut len = 0;
6692        if !self.name.is_empty() {
6693            len += 1;
6694        }
6695        if !self.request_id.is_empty() {
6696            len += 1;
6697        }
6698        let mut struct_ser = serializer
6699            .serialize_struct(
6700                "origincloud.network.v1beta1.DeleteNatGatewayRequest",
6701                len,
6702            )?;
6703        if !self.name.is_empty() {
6704            struct_ser.serialize_field("name", &self.name)?;
6705        }
6706        if !self.request_id.is_empty() {
6707            struct_ser.serialize_field("requestId", &self.request_id)?;
6708        }
6709        struct_ser.end()
6710    }
6711}
6712impl<'de> serde::Deserialize<'de> for DeleteNatGatewayRequest {
6713    #[allow(deprecated)]
6714    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6715    where
6716        D: serde::Deserializer<'de>,
6717    {
6718        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6719        #[allow(clippy::enum_variant_names)]
6720        enum GeneratedField {
6721            Name,
6722            RequestId,
6723            __SkipField__,
6724        }
6725        impl<'de> serde::Deserialize<'de> for GeneratedField {
6726            fn deserialize<D>(
6727                deserializer: D,
6728            ) -> std::result::Result<GeneratedField, D::Error>
6729            where
6730                D: serde::Deserializer<'de>,
6731            {
6732                struct GeneratedVisitor;
6733                impl serde::de::Visitor<'_> for GeneratedVisitor {
6734                    type Value = GeneratedField;
6735                    fn expecting(
6736                        &self,
6737                        formatter: &mut std::fmt::Formatter<'_>,
6738                    ) -> std::fmt::Result {
6739                        write!(formatter, "expected one of: {:?}", & FIELDS)
6740                    }
6741                    #[allow(unused_variables)]
6742                    fn visit_str<E>(
6743                        self,
6744                        value: &str,
6745                    ) -> std::result::Result<GeneratedField, E>
6746                    where
6747                        E: serde::de::Error,
6748                    {
6749                        match value {
6750                            "name" => Ok(GeneratedField::Name),
6751                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6752                            _ => Ok(GeneratedField::__SkipField__),
6753                        }
6754                    }
6755                }
6756                deserializer.deserialize_identifier(GeneratedVisitor)
6757            }
6758        }
6759        struct GeneratedVisitor;
6760        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6761            type Value = DeleteNatGatewayRequest;
6762            fn expecting(
6763                &self,
6764                formatter: &mut std::fmt::Formatter<'_>,
6765            ) -> std::fmt::Result {
6766                formatter
6767                    .write_str(
6768                        "struct origincloud.network.v1beta1.DeleteNatGatewayRequest",
6769                    )
6770            }
6771            fn visit_map<V>(
6772                self,
6773                mut map_: V,
6774            ) -> std::result::Result<DeleteNatGatewayRequest, V::Error>
6775            where
6776                V: serde::de::MapAccess<'de>,
6777            {
6778                let mut name__ = None;
6779                let mut request_id__ = None;
6780                while let Some(k) = map_.next_key()? {
6781                    match k {
6782                        GeneratedField::Name => {
6783                            if name__.is_some() {
6784                                return Err(serde::de::Error::duplicate_field("name"));
6785                            }
6786                            name__ = Some(map_.next_value()?);
6787                        }
6788                        GeneratedField::RequestId => {
6789                            if request_id__.is_some() {
6790                                return Err(serde::de::Error::duplicate_field("requestId"));
6791                            }
6792                            request_id__ = Some(map_.next_value()?);
6793                        }
6794                        GeneratedField::__SkipField__ => {
6795                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6796                        }
6797                    }
6798                }
6799                Ok(DeleteNatGatewayRequest {
6800                    name: name__.unwrap_or_default(),
6801                    request_id: request_id__.unwrap_or_default(),
6802                })
6803            }
6804        }
6805        deserializer
6806            .deserialize_struct(
6807                "origincloud.network.v1beta1.DeleteNatGatewayRequest",
6808                FIELDS,
6809                GeneratedVisitor,
6810            )
6811    }
6812}
6813impl serde::Serialize for DeleteNetworkInterfaceRequest {
6814    #[allow(deprecated)]
6815    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6816    where
6817        S: serde::Serializer,
6818    {
6819        use serde::ser::SerializeStruct;
6820        let mut len = 0;
6821        if !self.name.is_empty() {
6822            len += 1;
6823        }
6824        if !self.request_id.is_empty() {
6825            len += 1;
6826        }
6827        let mut struct_ser = serializer
6828            .serialize_struct(
6829                "origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6830                len,
6831            )?;
6832        if !self.name.is_empty() {
6833            struct_ser.serialize_field("name", &self.name)?;
6834        }
6835        if !self.request_id.is_empty() {
6836            struct_ser.serialize_field("requestId", &self.request_id)?;
6837        }
6838        struct_ser.end()
6839    }
6840}
6841impl<'de> serde::Deserialize<'de> for DeleteNetworkInterfaceRequest {
6842    #[allow(deprecated)]
6843    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6844    where
6845        D: serde::Deserializer<'de>,
6846    {
6847        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6848        #[allow(clippy::enum_variant_names)]
6849        enum GeneratedField {
6850            Name,
6851            RequestId,
6852            __SkipField__,
6853        }
6854        impl<'de> serde::Deserialize<'de> for GeneratedField {
6855            fn deserialize<D>(
6856                deserializer: D,
6857            ) -> std::result::Result<GeneratedField, D::Error>
6858            where
6859                D: serde::Deserializer<'de>,
6860            {
6861                struct GeneratedVisitor;
6862                impl serde::de::Visitor<'_> for GeneratedVisitor {
6863                    type Value = GeneratedField;
6864                    fn expecting(
6865                        &self,
6866                        formatter: &mut std::fmt::Formatter<'_>,
6867                    ) -> std::fmt::Result {
6868                        write!(formatter, "expected one of: {:?}", & FIELDS)
6869                    }
6870                    #[allow(unused_variables)]
6871                    fn visit_str<E>(
6872                        self,
6873                        value: &str,
6874                    ) -> std::result::Result<GeneratedField, E>
6875                    where
6876                        E: serde::de::Error,
6877                    {
6878                        match value {
6879                            "name" => Ok(GeneratedField::Name),
6880                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6881                            _ => Ok(GeneratedField::__SkipField__),
6882                        }
6883                    }
6884                }
6885                deserializer.deserialize_identifier(GeneratedVisitor)
6886            }
6887        }
6888        struct GeneratedVisitor;
6889        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6890            type Value = DeleteNetworkInterfaceRequest;
6891            fn expecting(
6892                &self,
6893                formatter: &mut std::fmt::Formatter<'_>,
6894            ) -> std::fmt::Result {
6895                formatter
6896                    .write_str(
6897                        "struct origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6898                    )
6899            }
6900            fn visit_map<V>(
6901                self,
6902                mut map_: V,
6903            ) -> std::result::Result<DeleteNetworkInterfaceRequest, V::Error>
6904            where
6905                V: serde::de::MapAccess<'de>,
6906            {
6907                let mut name__ = None;
6908                let mut request_id__ = None;
6909                while let Some(k) = map_.next_key()? {
6910                    match k {
6911                        GeneratedField::Name => {
6912                            if name__.is_some() {
6913                                return Err(serde::de::Error::duplicate_field("name"));
6914                            }
6915                            name__ = Some(map_.next_value()?);
6916                        }
6917                        GeneratedField::RequestId => {
6918                            if request_id__.is_some() {
6919                                return Err(serde::de::Error::duplicate_field("requestId"));
6920                            }
6921                            request_id__ = Some(map_.next_value()?);
6922                        }
6923                        GeneratedField::__SkipField__ => {
6924                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6925                        }
6926                    }
6927                }
6928                Ok(DeleteNetworkInterfaceRequest {
6929                    name: name__.unwrap_or_default(),
6930                    request_id: request_id__.unwrap_or_default(),
6931                })
6932            }
6933        }
6934        deserializer
6935            .deserialize_struct(
6936                "origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6937                FIELDS,
6938                GeneratedVisitor,
6939            )
6940    }
6941}
6942impl serde::Serialize for DeleteRouteRequest {
6943    #[allow(deprecated)]
6944    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6945    where
6946        S: serde::Serializer,
6947    {
6948        use serde::ser::SerializeStruct;
6949        let mut len = 0;
6950        if !self.name.is_empty() {
6951            len += 1;
6952        }
6953        if !self.request_id.is_empty() {
6954            len += 1;
6955        }
6956        let mut struct_ser = serializer
6957            .serialize_struct("origincloud.network.v1beta1.DeleteRouteRequest", len)?;
6958        if !self.name.is_empty() {
6959            struct_ser.serialize_field("name", &self.name)?;
6960        }
6961        if !self.request_id.is_empty() {
6962            struct_ser.serialize_field("requestId", &self.request_id)?;
6963        }
6964        struct_ser.end()
6965    }
6966}
6967impl<'de> serde::Deserialize<'de> for DeleteRouteRequest {
6968    #[allow(deprecated)]
6969    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6970    where
6971        D: serde::Deserializer<'de>,
6972    {
6973        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6974        #[allow(clippy::enum_variant_names)]
6975        enum GeneratedField {
6976            Name,
6977            RequestId,
6978            __SkipField__,
6979        }
6980        impl<'de> serde::Deserialize<'de> for GeneratedField {
6981            fn deserialize<D>(
6982                deserializer: D,
6983            ) -> std::result::Result<GeneratedField, D::Error>
6984            where
6985                D: serde::Deserializer<'de>,
6986            {
6987                struct GeneratedVisitor;
6988                impl serde::de::Visitor<'_> for GeneratedVisitor {
6989                    type Value = GeneratedField;
6990                    fn expecting(
6991                        &self,
6992                        formatter: &mut std::fmt::Formatter<'_>,
6993                    ) -> std::fmt::Result {
6994                        write!(formatter, "expected one of: {:?}", & FIELDS)
6995                    }
6996                    #[allow(unused_variables)]
6997                    fn visit_str<E>(
6998                        self,
6999                        value: &str,
7000                    ) -> std::result::Result<GeneratedField, E>
7001                    where
7002                        E: serde::de::Error,
7003                    {
7004                        match value {
7005                            "name" => Ok(GeneratedField::Name),
7006                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7007                            _ => Ok(GeneratedField::__SkipField__),
7008                        }
7009                    }
7010                }
7011                deserializer.deserialize_identifier(GeneratedVisitor)
7012            }
7013        }
7014        struct GeneratedVisitor;
7015        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7016            type Value = DeleteRouteRequest;
7017            fn expecting(
7018                &self,
7019                formatter: &mut std::fmt::Formatter<'_>,
7020            ) -> std::fmt::Result {
7021                formatter
7022                    .write_str("struct origincloud.network.v1beta1.DeleteRouteRequest")
7023            }
7024            fn visit_map<V>(
7025                self,
7026                mut map_: V,
7027            ) -> std::result::Result<DeleteRouteRequest, V::Error>
7028            where
7029                V: serde::de::MapAccess<'de>,
7030            {
7031                let mut name__ = None;
7032                let mut request_id__ = None;
7033                while let Some(k) = map_.next_key()? {
7034                    match k {
7035                        GeneratedField::Name => {
7036                            if name__.is_some() {
7037                                return Err(serde::de::Error::duplicate_field("name"));
7038                            }
7039                            name__ = Some(map_.next_value()?);
7040                        }
7041                        GeneratedField::RequestId => {
7042                            if request_id__.is_some() {
7043                                return Err(serde::de::Error::duplicate_field("requestId"));
7044                            }
7045                            request_id__ = Some(map_.next_value()?);
7046                        }
7047                        GeneratedField::__SkipField__ => {
7048                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7049                        }
7050                    }
7051                }
7052                Ok(DeleteRouteRequest {
7053                    name: name__.unwrap_or_default(),
7054                    request_id: request_id__.unwrap_or_default(),
7055                })
7056            }
7057        }
7058        deserializer
7059            .deserialize_struct(
7060                "origincloud.network.v1beta1.DeleteRouteRequest",
7061                FIELDS,
7062                GeneratedVisitor,
7063            )
7064    }
7065}
7066impl serde::Serialize for DeleteRouteTableAssociationRequest {
7067    #[allow(deprecated)]
7068    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7069    where
7070        S: serde::Serializer,
7071    {
7072        use serde::ser::SerializeStruct;
7073        let mut len = 0;
7074        if !self.name.is_empty() {
7075            len += 1;
7076        }
7077        if !self.request_id.is_empty() {
7078            len += 1;
7079        }
7080        let mut struct_ser = serializer
7081            .serialize_struct(
7082                "origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7083                len,
7084            )?;
7085        if !self.name.is_empty() {
7086            struct_ser.serialize_field("name", &self.name)?;
7087        }
7088        if !self.request_id.is_empty() {
7089            struct_ser.serialize_field("requestId", &self.request_id)?;
7090        }
7091        struct_ser.end()
7092    }
7093}
7094impl<'de> serde::Deserialize<'de> for DeleteRouteTableAssociationRequest {
7095    #[allow(deprecated)]
7096    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7097    where
7098        D: serde::Deserializer<'de>,
7099    {
7100        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7101        #[allow(clippy::enum_variant_names)]
7102        enum GeneratedField {
7103            Name,
7104            RequestId,
7105            __SkipField__,
7106        }
7107        impl<'de> serde::Deserialize<'de> for GeneratedField {
7108            fn deserialize<D>(
7109                deserializer: D,
7110            ) -> std::result::Result<GeneratedField, D::Error>
7111            where
7112                D: serde::Deserializer<'de>,
7113            {
7114                struct GeneratedVisitor;
7115                impl serde::de::Visitor<'_> for GeneratedVisitor {
7116                    type Value = GeneratedField;
7117                    fn expecting(
7118                        &self,
7119                        formatter: &mut std::fmt::Formatter<'_>,
7120                    ) -> std::fmt::Result {
7121                        write!(formatter, "expected one of: {:?}", & FIELDS)
7122                    }
7123                    #[allow(unused_variables)]
7124                    fn visit_str<E>(
7125                        self,
7126                        value: &str,
7127                    ) -> std::result::Result<GeneratedField, E>
7128                    where
7129                        E: serde::de::Error,
7130                    {
7131                        match value {
7132                            "name" => Ok(GeneratedField::Name),
7133                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7134                            _ => Ok(GeneratedField::__SkipField__),
7135                        }
7136                    }
7137                }
7138                deserializer.deserialize_identifier(GeneratedVisitor)
7139            }
7140        }
7141        struct GeneratedVisitor;
7142        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7143            type Value = DeleteRouteTableAssociationRequest;
7144            fn expecting(
7145                &self,
7146                formatter: &mut std::fmt::Formatter<'_>,
7147            ) -> std::fmt::Result {
7148                formatter
7149                    .write_str(
7150                        "struct origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7151                    )
7152            }
7153            fn visit_map<V>(
7154                self,
7155                mut map_: V,
7156            ) -> std::result::Result<DeleteRouteTableAssociationRequest, V::Error>
7157            where
7158                V: serde::de::MapAccess<'de>,
7159            {
7160                let mut name__ = None;
7161                let mut request_id__ = None;
7162                while let Some(k) = map_.next_key()? {
7163                    match k {
7164                        GeneratedField::Name => {
7165                            if name__.is_some() {
7166                                return Err(serde::de::Error::duplicate_field("name"));
7167                            }
7168                            name__ = Some(map_.next_value()?);
7169                        }
7170                        GeneratedField::RequestId => {
7171                            if request_id__.is_some() {
7172                                return Err(serde::de::Error::duplicate_field("requestId"));
7173                            }
7174                            request_id__ = Some(map_.next_value()?);
7175                        }
7176                        GeneratedField::__SkipField__ => {
7177                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7178                        }
7179                    }
7180                }
7181                Ok(DeleteRouteTableAssociationRequest {
7182                    name: name__.unwrap_or_default(),
7183                    request_id: request_id__.unwrap_or_default(),
7184                })
7185            }
7186        }
7187        deserializer
7188            .deserialize_struct(
7189                "origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7190                FIELDS,
7191                GeneratedVisitor,
7192            )
7193    }
7194}
7195impl serde::Serialize for DeleteRouteTableRequest {
7196    #[allow(deprecated)]
7197    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7198    where
7199        S: serde::Serializer,
7200    {
7201        use serde::ser::SerializeStruct;
7202        let mut len = 0;
7203        if !self.name.is_empty() {
7204            len += 1;
7205        }
7206        if !self.request_id.is_empty() {
7207            len += 1;
7208        }
7209        let mut struct_ser = serializer
7210            .serialize_struct(
7211                "origincloud.network.v1beta1.DeleteRouteTableRequest",
7212                len,
7213            )?;
7214        if !self.name.is_empty() {
7215            struct_ser.serialize_field("name", &self.name)?;
7216        }
7217        if !self.request_id.is_empty() {
7218            struct_ser.serialize_field("requestId", &self.request_id)?;
7219        }
7220        struct_ser.end()
7221    }
7222}
7223impl<'de> serde::Deserialize<'de> for DeleteRouteTableRequest {
7224    #[allow(deprecated)]
7225    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7226    where
7227        D: serde::Deserializer<'de>,
7228    {
7229        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7230        #[allow(clippy::enum_variant_names)]
7231        enum GeneratedField {
7232            Name,
7233            RequestId,
7234            __SkipField__,
7235        }
7236        impl<'de> serde::Deserialize<'de> for GeneratedField {
7237            fn deserialize<D>(
7238                deserializer: D,
7239            ) -> std::result::Result<GeneratedField, D::Error>
7240            where
7241                D: serde::Deserializer<'de>,
7242            {
7243                struct GeneratedVisitor;
7244                impl serde::de::Visitor<'_> for GeneratedVisitor {
7245                    type Value = GeneratedField;
7246                    fn expecting(
7247                        &self,
7248                        formatter: &mut std::fmt::Formatter<'_>,
7249                    ) -> std::fmt::Result {
7250                        write!(formatter, "expected one of: {:?}", & FIELDS)
7251                    }
7252                    #[allow(unused_variables)]
7253                    fn visit_str<E>(
7254                        self,
7255                        value: &str,
7256                    ) -> std::result::Result<GeneratedField, E>
7257                    where
7258                        E: serde::de::Error,
7259                    {
7260                        match value {
7261                            "name" => Ok(GeneratedField::Name),
7262                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7263                            _ => Ok(GeneratedField::__SkipField__),
7264                        }
7265                    }
7266                }
7267                deserializer.deserialize_identifier(GeneratedVisitor)
7268            }
7269        }
7270        struct GeneratedVisitor;
7271        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7272            type Value = DeleteRouteTableRequest;
7273            fn expecting(
7274                &self,
7275                formatter: &mut std::fmt::Formatter<'_>,
7276            ) -> std::fmt::Result {
7277                formatter
7278                    .write_str(
7279                        "struct origincloud.network.v1beta1.DeleteRouteTableRequest",
7280                    )
7281            }
7282            fn visit_map<V>(
7283                self,
7284                mut map_: V,
7285            ) -> std::result::Result<DeleteRouteTableRequest, V::Error>
7286            where
7287                V: serde::de::MapAccess<'de>,
7288            {
7289                let mut name__ = None;
7290                let mut request_id__ = None;
7291                while let Some(k) = map_.next_key()? {
7292                    match k {
7293                        GeneratedField::Name => {
7294                            if name__.is_some() {
7295                                return Err(serde::de::Error::duplicate_field("name"));
7296                            }
7297                            name__ = Some(map_.next_value()?);
7298                        }
7299                        GeneratedField::RequestId => {
7300                            if request_id__.is_some() {
7301                                return Err(serde::de::Error::duplicate_field("requestId"));
7302                            }
7303                            request_id__ = Some(map_.next_value()?);
7304                        }
7305                        GeneratedField::__SkipField__ => {
7306                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7307                        }
7308                    }
7309                }
7310                Ok(DeleteRouteTableRequest {
7311                    name: name__.unwrap_or_default(),
7312                    request_id: request_id__.unwrap_or_default(),
7313                })
7314            }
7315        }
7316        deserializer
7317            .deserialize_struct(
7318                "origincloud.network.v1beta1.DeleteRouteTableRequest",
7319                FIELDS,
7320                GeneratedVisitor,
7321            )
7322    }
7323}
7324impl serde::Serialize for DeleteSecurityGroupAssociationRequest {
7325    #[allow(deprecated)]
7326    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7327    where
7328        S: serde::Serializer,
7329    {
7330        use serde::ser::SerializeStruct;
7331        let mut len = 0;
7332        if !self.name.is_empty() {
7333            len += 1;
7334        }
7335        if !self.request_id.is_empty() {
7336            len += 1;
7337        }
7338        let mut struct_ser = serializer
7339            .serialize_struct(
7340                "origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7341                len,
7342            )?;
7343        if !self.name.is_empty() {
7344            struct_ser.serialize_field("name", &self.name)?;
7345        }
7346        if !self.request_id.is_empty() {
7347            struct_ser.serialize_field("requestId", &self.request_id)?;
7348        }
7349        struct_ser.end()
7350    }
7351}
7352impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupAssociationRequest {
7353    #[allow(deprecated)]
7354    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7355    where
7356        D: serde::Deserializer<'de>,
7357    {
7358        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7359        #[allow(clippy::enum_variant_names)]
7360        enum GeneratedField {
7361            Name,
7362            RequestId,
7363            __SkipField__,
7364        }
7365        impl<'de> serde::Deserialize<'de> for GeneratedField {
7366            fn deserialize<D>(
7367                deserializer: D,
7368            ) -> std::result::Result<GeneratedField, D::Error>
7369            where
7370                D: serde::Deserializer<'de>,
7371            {
7372                struct GeneratedVisitor;
7373                impl serde::de::Visitor<'_> for GeneratedVisitor {
7374                    type Value = GeneratedField;
7375                    fn expecting(
7376                        &self,
7377                        formatter: &mut std::fmt::Formatter<'_>,
7378                    ) -> std::fmt::Result {
7379                        write!(formatter, "expected one of: {:?}", & FIELDS)
7380                    }
7381                    #[allow(unused_variables)]
7382                    fn visit_str<E>(
7383                        self,
7384                        value: &str,
7385                    ) -> std::result::Result<GeneratedField, E>
7386                    where
7387                        E: serde::de::Error,
7388                    {
7389                        match value {
7390                            "name" => Ok(GeneratedField::Name),
7391                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7392                            _ => Ok(GeneratedField::__SkipField__),
7393                        }
7394                    }
7395                }
7396                deserializer.deserialize_identifier(GeneratedVisitor)
7397            }
7398        }
7399        struct GeneratedVisitor;
7400        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7401            type Value = DeleteSecurityGroupAssociationRequest;
7402            fn expecting(
7403                &self,
7404                formatter: &mut std::fmt::Formatter<'_>,
7405            ) -> std::fmt::Result {
7406                formatter
7407                    .write_str(
7408                        "struct origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7409                    )
7410            }
7411            fn visit_map<V>(
7412                self,
7413                mut map_: V,
7414            ) -> std::result::Result<DeleteSecurityGroupAssociationRequest, V::Error>
7415            where
7416                V: serde::de::MapAccess<'de>,
7417            {
7418                let mut name__ = None;
7419                let mut request_id__ = None;
7420                while let Some(k) = map_.next_key()? {
7421                    match k {
7422                        GeneratedField::Name => {
7423                            if name__.is_some() {
7424                                return Err(serde::de::Error::duplicate_field("name"));
7425                            }
7426                            name__ = Some(map_.next_value()?);
7427                        }
7428                        GeneratedField::RequestId => {
7429                            if request_id__.is_some() {
7430                                return Err(serde::de::Error::duplicate_field("requestId"));
7431                            }
7432                            request_id__ = Some(map_.next_value()?);
7433                        }
7434                        GeneratedField::__SkipField__ => {
7435                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7436                        }
7437                    }
7438                }
7439                Ok(DeleteSecurityGroupAssociationRequest {
7440                    name: name__.unwrap_or_default(),
7441                    request_id: request_id__.unwrap_or_default(),
7442                })
7443            }
7444        }
7445        deserializer
7446            .deserialize_struct(
7447                "origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7448                FIELDS,
7449                GeneratedVisitor,
7450            )
7451    }
7452}
7453impl serde::Serialize for DeleteSecurityGroupRequest {
7454    #[allow(deprecated)]
7455    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7456    where
7457        S: serde::Serializer,
7458    {
7459        use serde::ser::SerializeStruct;
7460        let mut len = 0;
7461        if !self.name.is_empty() {
7462            len += 1;
7463        }
7464        if !self.request_id.is_empty() {
7465            len += 1;
7466        }
7467        let mut struct_ser = serializer
7468            .serialize_struct(
7469                "origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7470                len,
7471            )?;
7472        if !self.name.is_empty() {
7473            struct_ser.serialize_field("name", &self.name)?;
7474        }
7475        if !self.request_id.is_empty() {
7476            struct_ser.serialize_field("requestId", &self.request_id)?;
7477        }
7478        struct_ser.end()
7479    }
7480}
7481impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupRequest {
7482    #[allow(deprecated)]
7483    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7484    where
7485        D: serde::Deserializer<'de>,
7486    {
7487        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7488        #[allow(clippy::enum_variant_names)]
7489        enum GeneratedField {
7490            Name,
7491            RequestId,
7492            __SkipField__,
7493        }
7494        impl<'de> serde::Deserialize<'de> for GeneratedField {
7495            fn deserialize<D>(
7496                deserializer: D,
7497            ) -> std::result::Result<GeneratedField, D::Error>
7498            where
7499                D: serde::Deserializer<'de>,
7500            {
7501                struct GeneratedVisitor;
7502                impl serde::de::Visitor<'_> for GeneratedVisitor {
7503                    type Value = GeneratedField;
7504                    fn expecting(
7505                        &self,
7506                        formatter: &mut std::fmt::Formatter<'_>,
7507                    ) -> std::fmt::Result {
7508                        write!(formatter, "expected one of: {:?}", & FIELDS)
7509                    }
7510                    #[allow(unused_variables)]
7511                    fn visit_str<E>(
7512                        self,
7513                        value: &str,
7514                    ) -> std::result::Result<GeneratedField, E>
7515                    where
7516                        E: serde::de::Error,
7517                    {
7518                        match value {
7519                            "name" => Ok(GeneratedField::Name),
7520                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7521                            _ => Ok(GeneratedField::__SkipField__),
7522                        }
7523                    }
7524                }
7525                deserializer.deserialize_identifier(GeneratedVisitor)
7526            }
7527        }
7528        struct GeneratedVisitor;
7529        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7530            type Value = DeleteSecurityGroupRequest;
7531            fn expecting(
7532                &self,
7533                formatter: &mut std::fmt::Formatter<'_>,
7534            ) -> std::fmt::Result {
7535                formatter
7536                    .write_str(
7537                        "struct origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7538                    )
7539            }
7540            fn visit_map<V>(
7541                self,
7542                mut map_: V,
7543            ) -> std::result::Result<DeleteSecurityGroupRequest, V::Error>
7544            where
7545                V: serde::de::MapAccess<'de>,
7546            {
7547                let mut name__ = None;
7548                let mut request_id__ = None;
7549                while let Some(k) = map_.next_key()? {
7550                    match k {
7551                        GeneratedField::Name => {
7552                            if name__.is_some() {
7553                                return Err(serde::de::Error::duplicate_field("name"));
7554                            }
7555                            name__ = Some(map_.next_value()?);
7556                        }
7557                        GeneratedField::RequestId => {
7558                            if request_id__.is_some() {
7559                                return Err(serde::de::Error::duplicate_field("requestId"));
7560                            }
7561                            request_id__ = Some(map_.next_value()?);
7562                        }
7563                        GeneratedField::__SkipField__ => {
7564                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7565                        }
7566                    }
7567                }
7568                Ok(DeleteSecurityGroupRequest {
7569                    name: name__.unwrap_or_default(),
7570                    request_id: request_id__.unwrap_or_default(),
7571                })
7572            }
7573        }
7574        deserializer
7575            .deserialize_struct(
7576                "origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7577                FIELDS,
7578                GeneratedVisitor,
7579            )
7580    }
7581}
7582impl serde::Serialize for DeleteSecurityGroupRuleRequest {
7583    #[allow(deprecated)]
7584    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7585    where
7586        S: serde::Serializer,
7587    {
7588        use serde::ser::SerializeStruct;
7589        let mut len = 0;
7590        if !self.name.is_empty() {
7591            len += 1;
7592        }
7593        if !self.request_id.is_empty() {
7594            len += 1;
7595        }
7596        let mut struct_ser = serializer
7597            .serialize_struct(
7598                "origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7599                len,
7600            )?;
7601        if !self.name.is_empty() {
7602            struct_ser.serialize_field("name", &self.name)?;
7603        }
7604        if !self.request_id.is_empty() {
7605            struct_ser.serialize_field("requestId", &self.request_id)?;
7606        }
7607        struct_ser.end()
7608    }
7609}
7610impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupRuleRequest {
7611    #[allow(deprecated)]
7612    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7613    where
7614        D: serde::Deserializer<'de>,
7615    {
7616        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7617        #[allow(clippy::enum_variant_names)]
7618        enum GeneratedField {
7619            Name,
7620            RequestId,
7621            __SkipField__,
7622        }
7623        impl<'de> serde::Deserialize<'de> for GeneratedField {
7624            fn deserialize<D>(
7625                deserializer: D,
7626            ) -> std::result::Result<GeneratedField, D::Error>
7627            where
7628                D: serde::Deserializer<'de>,
7629            {
7630                struct GeneratedVisitor;
7631                impl serde::de::Visitor<'_> for GeneratedVisitor {
7632                    type Value = GeneratedField;
7633                    fn expecting(
7634                        &self,
7635                        formatter: &mut std::fmt::Formatter<'_>,
7636                    ) -> std::fmt::Result {
7637                        write!(formatter, "expected one of: {:?}", & FIELDS)
7638                    }
7639                    #[allow(unused_variables)]
7640                    fn visit_str<E>(
7641                        self,
7642                        value: &str,
7643                    ) -> std::result::Result<GeneratedField, E>
7644                    where
7645                        E: serde::de::Error,
7646                    {
7647                        match value {
7648                            "name" => Ok(GeneratedField::Name),
7649                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7650                            _ => Ok(GeneratedField::__SkipField__),
7651                        }
7652                    }
7653                }
7654                deserializer.deserialize_identifier(GeneratedVisitor)
7655            }
7656        }
7657        struct GeneratedVisitor;
7658        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7659            type Value = DeleteSecurityGroupRuleRequest;
7660            fn expecting(
7661                &self,
7662                formatter: &mut std::fmt::Formatter<'_>,
7663            ) -> std::fmt::Result {
7664                formatter
7665                    .write_str(
7666                        "struct origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7667                    )
7668            }
7669            fn visit_map<V>(
7670                self,
7671                mut map_: V,
7672            ) -> std::result::Result<DeleteSecurityGroupRuleRequest, V::Error>
7673            where
7674                V: serde::de::MapAccess<'de>,
7675            {
7676                let mut name__ = None;
7677                let mut request_id__ = None;
7678                while let Some(k) = map_.next_key()? {
7679                    match k {
7680                        GeneratedField::Name => {
7681                            if name__.is_some() {
7682                                return Err(serde::de::Error::duplicate_field("name"));
7683                            }
7684                            name__ = Some(map_.next_value()?);
7685                        }
7686                        GeneratedField::RequestId => {
7687                            if request_id__.is_some() {
7688                                return Err(serde::de::Error::duplicate_field("requestId"));
7689                            }
7690                            request_id__ = Some(map_.next_value()?);
7691                        }
7692                        GeneratedField::__SkipField__ => {
7693                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7694                        }
7695                    }
7696                }
7697                Ok(DeleteSecurityGroupRuleRequest {
7698                    name: name__.unwrap_or_default(),
7699                    request_id: request_id__.unwrap_or_default(),
7700                })
7701            }
7702        }
7703        deserializer
7704            .deserialize_struct(
7705                "origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7706                FIELDS,
7707                GeneratedVisitor,
7708            )
7709    }
7710}
7711impl serde::Serialize for DeleteSubnetRequest {
7712    #[allow(deprecated)]
7713    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7714    where
7715        S: serde::Serializer,
7716    {
7717        use serde::ser::SerializeStruct;
7718        let mut len = 0;
7719        if !self.name.is_empty() {
7720            len += 1;
7721        }
7722        if !self.request_id.is_empty() {
7723            len += 1;
7724        }
7725        let mut struct_ser = serializer
7726            .serialize_struct("origincloud.network.v1beta1.DeleteSubnetRequest", len)?;
7727        if !self.name.is_empty() {
7728            struct_ser.serialize_field("name", &self.name)?;
7729        }
7730        if !self.request_id.is_empty() {
7731            struct_ser.serialize_field("requestId", &self.request_id)?;
7732        }
7733        struct_ser.end()
7734    }
7735}
7736impl<'de> serde::Deserialize<'de> for DeleteSubnetRequest {
7737    #[allow(deprecated)]
7738    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7739    where
7740        D: serde::Deserializer<'de>,
7741    {
7742        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7743        #[allow(clippy::enum_variant_names)]
7744        enum GeneratedField {
7745            Name,
7746            RequestId,
7747            __SkipField__,
7748        }
7749        impl<'de> serde::Deserialize<'de> for GeneratedField {
7750            fn deserialize<D>(
7751                deserializer: D,
7752            ) -> std::result::Result<GeneratedField, D::Error>
7753            where
7754                D: serde::Deserializer<'de>,
7755            {
7756                struct GeneratedVisitor;
7757                impl serde::de::Visitor<'_> for GeneratedVisitor {
7758                    type Value = GeneratedField;
7759                    fn expecting(
7760                        &self,
7761                        formatter: &mut std::fmt::Formatter<'_>,
7762                    ) -> std::fmt::Result {
7763                        write!(formatter, "expected one of: {:?}", & FIELDS)
7764                    }
7765                    #[allow(unused_variables)]
7766                    fn visit_str<E>(
7767                        self,
7768                        value: &str,
7769                    ) -> std::result::Result<GeneratedField, E>
7770                    where
7771                        E: serde::de::Error,
7772                    {
7773                        match value {
7774                            "name" => Ok(GeneratedField::Name),
7775                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7776                            _ => Ok(GeneratedField::__SkipField__),
7777                        }
7778                    }
7779                }
7780                deserializer.deserialize_identifier(GeneratedVisitor)
7781            }
7782        }
7783        struct GeneratedVisitor;
7784        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7785            type Value = DeleteSubnetRequest;
7786            fn expecting(
7787                &self,
7788                formatter: &mut std::fmt::Formatter<'_>,
7789            ) -> std::fmt::Result {
7790                formatter
7791                    .write_str("struct origincloud.network.v1beta1.DeleteSubnetRequest")
7792            }
7793            fn visit_map<V>(
7794                self,
7795                mut map_: V,
7796            ) -> std::result::Result<DeleteSubnetRequest, V::Error>
7797            where
7798                V: serde::de::MapAccess<'de>,
7799            {
7800                let mut name__ = None;
7801                let mut request_id__ = None;
7802                while let Some(k) = map_.next_key()? {
7803                    match k {
7804                        GeneratedField::Name => {
7805                            if name__.is_some() {
7806                                return Err(serde::de::Error::duplicate_field("name"));
7807                            }
7808                            name__ = Some(map_.next_value()?);
7809                        }
7810                        GeneratedField::RequestId => {
7811                            if request_id__.is_some() {
7812                                return Err(serde::de::Error::duplicate_field("requestId"));
7813                            }
7814                            request_id__ = Some(map_.next_value()?);
7815                        }
7816                        GeneratedField::__SkipField__ => {
7817                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7818                        }
7819                    }
7820                }
7821                Ok(DeleteSubnetRequest {
7822                    name: name__.unwrap_or_default(),
7823                    request_id: request_id__.unwrap_or_default(),
7824                })
7825            }
7826        }
7827        deserializer
7828            .deserialize_struct(
7829                "origincloud.network.v1beta1.DeleteSubnetRequest",
7830                FIELDS,
7831                GeneratedVisitor,
7832            )
7833    }
7834}
7835impl serde::Serialize for DeleteVpcRequest {
7836    #[allow(deprecated)]
7837    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7838    where
7839        S: serde::Serializer,
7840    {
7841        use serde::ser::SerializeStruct;
7842        let mut len = 0;
7843        if !self.name.is_empty() {
7844            len += 1;
7845        }
7846        if !self.request_id.is_empty() {
7847            len += 1;
7848        }
7849        let mut struct_ser = serializer
7850            .serialize_struct("origincloud.network.v1beta1.DeleteVpcRequest", len)?;
7851        if !self.name.is_empty() {
7852            struct_ser.serialize_field("name", &self.name)?;
7853        }
7854        if !self.request_id.is_empty() {
7855            struct_ser.serialize_field("requestId", &self.request_id)?;
7856        }
7857        struct_ser.end()
7858    }
7859}
7860impl<'de> serde::Deserialize<'de> for DeleteVpcRequest {
7861    #[allow(deprecated)]
7862    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7863    where
7864        D: serde::Deserializer<'de>,
7865    {
7866        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7867        #[allow(clippy::enum_variant_names)]
7868        enum GeneratedField {
7869            Name,
7870            RequestId,
7871            __SkipField__,
7872        }
7873        impl<'de> serde::Deserialize<'de> for GeneratedField {
7874            fn deserialize<D>(
7875                deserializer: D,
7876            ) -> std::result::Result<GeneratedField, D::Error>
7877            where
7878                D: serde::Deserializer<'de>,
7879            {
7880                struct GeneratedVisitor;
7881                impl serde::de::Visitor<'_> for GeneratedVisitor {
7882                    type Value = GeneratedField;
7883                    fn expecting(
7884                        &self,
7885                        formatter: &mut std::fmt::Formatter<'_>,
7886                    ) -> std::fmt::Result {
7887                        write!(formatter, "expected one of: {:?}", & FIELDS)
7888                    }
7889                    #[allow(unused_variables)]
7890                    fn visit_str<E>(
7891                        self,
7892                        value: &str,
7893                    ) -> std::result::Result<GeneratedField, E>
7894                    where
7895                        E: serde::de::Error,
7896                    {
7897                        match value {
7898                            "name" => Ok(GeneratedField::Name),
7899                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7900                            _ => Ok(GeneratedField::__SkipField__),
7901                        }
7902                    }
7903                }
7904                deserializer.deserialize_identifier(GeneratedVisitor)
7905            }
7906        }
7907        struct GeneratedVisitor;
7908        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7909            type Value = DeleteVpcRequest;
7910            fn expecting(
7911                &self,
7912                formatter: &mut std::fmt::Formatter<'_>,
7913            ) -> std::fmt::Result {
7914                formatter
7915                    .write_str("struct origincloud.network.v1beta1.DeleteVpcRequest")
7916            }
7917            fn visit_map<V>(
7918                self,
7919                mut map_: V,
7920            ) -> std::result::Result<DeleteVpcRequest, V::Error>
7921            where
7922                V: serde::de::MapAccess<'de>,
7923            {
7924                let mut name__ = None;
7925                let mut request_id__ = None;
7926                while let Some(k) = map_.next_key()? {
7927                    match k {
7928                        GeneratedField::Name => {
7929                            if name__.is_some() {
7930                                return Err(serde::de::Error::duplicate_field("name"));
7931                            }
7932                            name__ = Some(map_.next_value()?);
7933                        }
7934                        GeneratedField::RequestId => {
7935                            if request_id__.is_some() {
7936                                return Err(serde::de::Error::duplicate_field("requestId"));
7937                            }
7938                            request_id__ = Some(map_.next_value()?);
7939                        }
7940                        GeneratedField::__SkipField__ => {
7941                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7942                        }
7943                    }
7944                }
7945                Ok(DeleteVpcRequest {
7946                    name: name__.unwrap_or_default(),
7947                    request_id: request_id__.unwrap_or_default(),
7948                })
7949            }
7950        }
7951        deserializer
7952            .deserialize_struct(
7953                "origincloud.network.v1beta1.DeleteVpcRequest",
7954                FIELDS,
7955                GeneratedVisitor,
7956            )
7957    }
7958}
7959impl serde::Serialize for DnsPolicy {
7960    #[allow(deprecated)]
7961    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7962    where
7963        S: serde::Serializer,
7964    {
7965        use serde::ser::SerializeStruct;
7966        let mut len = 0;
7967        if !self.name.is_empty() {
7968            len += 1;
7969        }
7970        if !self.urn.is_empty() {
7971            len += 1;
7972        }
7973        if self.project_default {
7974            len += 1;
7975        }
7976        if self.relay_enabled {
7977            len += 1;
7978        }
7979        if !self.upstream_servers.is_empty() {
7980            len += 1;
7981        }
7982        if self.create_time.is_some() {
7983            len += 1;
7984        }
7985        if !self.creator.is_empty() {
7986            len += 1;
7987        }
7988        if !self.tags.is_empty() {
7989            len += 1;
7990        }
7991        let mut struct_ser = serializer
7992            .serialize_struct("origincloud.network.v1beta1.DnsPolicy", len)?;
7993        if !self.name.is_empty() {
7994            struct_ser.serialize_field("name", &self.name)?;
7995        }
7996        if !self.urn.is_empty() {
7997            struct_ser.serialize_field("urn", &self.urn)?;
7998        }
7999        if self.project_default {
8000            struct_ser.serialize_field("projectDefault", &self.project_default)?;
8001        }
8002        if self.relay_enabled {
8003            struct_ser.serialize_field("relayEnabled", &self.relay_enabled)?;
8004        }
8005        if !self.upstream_servers.is_empty() {
8006            struct_ser.serialize_field("upstreamServers", &self.upstream_servers)?;
8007        }
8008        if let Some(v) = self.create_time.as_ref() {
8009            struct_ser.serialize_field("createTime", v)?;
8010        }
8011        if !self.creator.is_empty() {
8012            struct_ser.serialize_field("creator", &self.creator)?;
8013        }
8014        if !self.tags.is_empty() {
8015            struct_ser.serialize_field("tags", &self.tags)?;
8016        }
8017        struct_ser.end()
8018    }
8019}
8020impl<'de> serde::Deserialize<'de> for DnsPolicy {
8021    #[allow(deprecated)]
8022    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8023    where
8024        D: serde::Deserializer<'de>,
8025    {
8026        const FIELDS: &[&str] = &[
8027            "name",
8028            "urn",
8029            "project_default",
8030            "projectDefault",
8031            "relay_enabled",
8032            "relayEnabled",
8033            "upstream_servers",
8034            "upstreamServers",
8035            "create_time",
8036            "createTime",
8037            "creator",
8038            "tags",
8039        ];
8040        #[allow(clippy::enum_variant_names)]
8041        enum GeneratedField {
8042            Name,
8043            Urn,
8044            ProjectDefault,
8045            RelayEnabled,
8046            UpstreamServers,
8047            CreateTime,
8048            Creator,
8049            Tags,
8050            __SkipField__,
8051        }
8052        impl<'de> serde::Deserialize<'de> for GeneratedField {
8053            fn deserialize<D>(
8054                deserializer: D,
8055            ) -> std::result::Result<GeneratedField, D::Error>
8056            where
8057                D: serde::Deserializer<'de>,
8058            {
8059                struct GeneratedVisitor;
8060                impl serde::de::Visitor<'_> for GeneratedVisitor {
8061                    type Value = GeneratedField;
8062                    fn expecting(
8063                        &self,
8064                        formatter: &mut std::fmt::Formatter<'_>,
8065                    ) -> std::fmt::Result {
8066                        write!(formatter, "expected one of: {:?}", & FIELDS)
8067                    }
8068                    #[allow(unused_variables)]
8069                    fn visit_str<E>(
8070                        self,
8071                        value: &str,
8072                    ) -> std::result::Result<GeneratedField, E>
8073                    where
8074                        E: serde::de::Error,
8075                    {
8076                        match value {
8077                            "name" => Ok(GeneratedField::Name),
8078                            "urn" => Ok(GeneratedField::Urn),
8079                            "projectDefault" | "project_default" => {
8080                                Ok(GeneratedField::ProjectDefault)
8081                            }
8082                            "relayEnabled" | "relay_enabled" => {
8083                                Ok(GeneratedField::RelayEnabled)
8084                            }
8085                            "upstreamServers" | "upstream_servers" => {
8086                                Ok(GeneratedField::UpstreamServers)
8087                            }
8088                            "createTime" | "create_time" => {
8089                                Ok(GeneratedField::CreateTime)
8090                            }
8091                            "creator" => Ok(GeneratedField::Creator),
8092                            "tags" => Ok(GeneratedField::Tags),
8093                            _ => Ok(GeneratedField::__SkipField__),
8094                        }
8095                    }
8096                }
8097                deserializer.deserialize_identifier(GeneratedVisitor)
8098            }
8099        }
8100        struct GeneratedVisitor;
8101        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8102            type Value = DnsPolicy;
8103            fn expecting(
8104                &self,
8105                formatter: &mut std::fmt::Formatter<'_>,
8106            ) -> std::fmt::Result {
8107                formatter.write_str("struct origincloud.network.v1beta1.DnsPolicy")
8108            }
8109            fn visit_map<V>(
8110                self,
8111                mut map_: V,
8112            ) -> std::result::Result<DnsPolicy, V::Error>
8113            where
8114                V: serde::de::MapAccess<'de>,
8115            {
8116                let mut name__ = None;
8117                let mut urn__ = None;
8118                let mut project_default__ = None;
8119                let mut relay_enabled__ = None;
8120                let mut upstream_servers__ = None;
8121                let mut create_time__ = None;
8122                let mut creator__ = None;
8123                let mut tags__ = None;
8124                while let Some(k) = map_.next_key()? {
8125                    match k {
8126                        GeneratedField::Name => {
8127                            if name__.is_some() {
8128                                return Err(serde::de::Error::duplicate_field("name"));
8129                            }
8130                            name__ = Some(map_.next_value()?);
8131                        }
8132                        GeneratedField::Urn => {
8133                            if urn__.is_some() {
8134                                return Err(serde::de::Error::duplicate_field("urn"));
8135                            }
8136                            urn__ = Some(map_.next_value()?);
8137                        }
8138                        GeneratedField::ProjectDefault => {
8139                            if project_default__.is_some() {
8140                                return Err(
8141                                    serde::de::Error::duplicate_field("projectDefault"),
8142                                );
8143                            }
8144                            project_default__ = Some(map_.next_value()?);
8145                        }
8146                        GeneratedField::RelayEnabled => {
8147                            if relay_enabled__.is_some() {
8148                                return Err(
8149                                    serde::de::Error::duplicate_field("relayEnabled"),
8150                                );
8151                            }
8152                            relay_enabled__ = Some(map_.next_value()?);
8153                        }
8154                        GeneratedField::UpstreamServers => {
8155                            if upstream_servers__.is_some() {
8156                                return Err(
8157                                    serde::de::Error::duplicate_field("upstreamServers"),
8158                                );
8159                            }
8160                            upstream_servers__ = Some(map_.next_value()?);
8161                        }
8162                        GeneratedField::CreateTime => {
8163                            if create_time__.is_some() {
8164                                return Err(serde::de::Error::duplicate_field("createTime"));
8165                            }
8166                            create_time__ = map_.next_value()?;
8167                        }
8168                        GeneratedField::Creator => {
8169                            if creator__.is_some() {
8170                                return Err(serde::de::Error::duplicate_field("creator"));
8171                            }
8172                            creator__ = Some(map_.next_value()?);
8173                        }
8174                        GeneratedField::Tags => {
8175                            if tags__.is_some() {
8176                                return Err(serde::de::Error::duplicate_field("tags"));
8177                            }
8178                            tags__ = Some(
8179                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
8180                            );
8181                        }
8182                        GeneratedField::__SkipField__ => {
8183                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8184                        }
8185                    }
8186                }
8187                Ok(DnsPolicy {
8188                    name: name__.unwrap_or_default(),
8189                    urn: urn__.unwrap_or_default(),
8190                    project_default: project_default__.unwrap_or_default(),
8191                    relay_enabled: relay_enabled__.unwrap_or_default(),
8192                    upstream_servers: upstream_servers__.unwrap_or_default(),
8193                    create_time: create_time__,
8194                    creator: creator__.unwrap_or_default(),
8195                    tags: tags__.unwrap_or_default(),
8196                })
8197            }
8198        }
8199        deserializer
8200            .deserialize_struct(
8201                "origincloud.network.v1beta1.DnsPolicy",
8202                FIELDS,
8203                GeneratedVisitor,
8204            )
8205    }
8206}
8207impl serde::Serialize for DnsPolicyAssociation {
8208    #[allow(deprecated)]
8209    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8210    where
8211        S: serde::Serializer,
8212    {
8213        use serde::ser::SerializeStruct;
8214        let mut len = 0;
8215        if !self.name.is_empty() {
8216            len += 1;
8217        }
8218        if !self.dns_policy.is_empty() {
8219            len += 1;
8220        }
8221        let mut struct_ser = serializer
8222            .serialize_struct("origincloud.network.v1beta1.DnsPolicyAssociation", len)?;
8223        if !self.name.is_empty() {
8224            struct_ser.serialize_field("name", &self.name)?;
8225        }
8226        if !self.dns_policy.is_empty() {
8227            struct_ser.serialize_field("dnsPolicy", &self.dns_policy)?;
8228        }
8229        struct_ser.end()
8230    }
8231}
8232impl<'de> serde::Deserialize<'de> for DnsPolicyAssociation {
8233    #[allow(deprecated)]
8234    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8235    where
8236        D: serde::Deserializer<'de>,
8237    {
8238        const FIELDS: &[&str] = &["name", "dns_policy", "dnsPolicy"];
8239        #[allow(clippy::enum_variant_names)]
8240        enum GeneratedField {
8241            Name,
8242            DnsPolicy,
8243            __SkipField__,
8244        }
8245        impl<'de> serde::Deserialize<'de> for GeneratedField {
8246            fn deserialize<D>(
8247                deserializer: D,
8248            ) -> std::result::Result<GeneratedField, D::Error>
8249            where
8250                D: serde::Deserializer<'de>,
8251            {
8252                struct GeneratedVisitor;
8253                impl serde::de::Visitor<'_> for GeneratedVisitor {
8254                    type Value = GeneratedField;
8255                    fn expecting(
8256                        &self,
8257                        formatter: &mut std::fmt::Formatter<'_>,
8258                    ) -> std::fmt::Result {
8259                        write!(formatter, "expected one of: {:?}", & FIELDS)
8260                    }
8261                    #[allow(unused_variables)]
8262                    fn visit_str<E>(
8263                        self,
8264                        value: &str,
8265                    ) -> std::result::Result<GeneratedField, E>
8266                    where
8267                        E: serde::de::Error,
8268                    {
8269                        match value {
8270                            "name" => Ok(GeneratedField::Name),
8271                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
8272                            _ => Ok(GeneratedField::__SkipField__),
8273                        }
8274                    }
8275                }
8276                deserializer.deserialize_identifier(GeneratedVisitor)
8277            }
8278        }
8279        struct GeneratedVisitor;
8280        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8281            type Value = DnsPolicyAssociation;
8282            fn expecting(
8283                &self,
8284                formatter: &mut std::fmt::Formatter<'_>,
8285            ) -> std::fmt::Result {
8286                formatter
8287                    .write_str("struct origincloud.network.v1beta1.DnsPolicyAssociation")
8288            }
8289            fn visit_map<V>(
8290                self,
8291                mut map_: V,
8292            ) -> std::result::Result<DnsPolicyAssociation, V::Error>
8293            where
8294                V: serde::de::MapAccess<'de>,
8295            {
8296                let mut name__ = None;
8297                let mut dns_policy__ = None;
8298                while let Some(k) = map_.next_key()? {
8299                    match k {
8300                        GeneratedField::Name => {
8301                            if name__.is_some() {
8302                                return Err(serde::de::Error::duplicate_field("name"));
8303                            }
8304                            name__ = Some(map_.next_value()?);
8305                        }
8306                        GeneratedField::DnsPolicy => {
8307                            if dns_policy__.is_some() {
8308                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
8309                            }
8310                            dns_policy__ = Some(map_.next_value()?);
8311                        }
8312                        GeneratedField::__SkipField__ => {
8313                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8314                        }
8315                    }
8316                }
8317                Ok(DnsPolicyAssociation {
8318                    name: name__.unwrap_or_default(),
8319                    dns_policy: dns_policy__.unwrap_or_default(),
8320                })
8321            }
8322        }
8323        deserializer
8324            .deserialize_struct(
8325                "origincloud.network.v1beta1.DnsPolicyAssociation",
8326                FIELDS,
8327                GeneratedVisitor,
8328            )
8329    }
8330}
8331impl serde::Serialize for FloatingIp {
8332    #[allow(deprecated)]
8333    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8334    where
8335        S: serde::Serializer,
8336    {
8337        use serde::ser::SerializeStruct;
8338        let mut len = 0;
8339        if !self.name.is_empty() {
8340            len += 1;
8341        }
8342        if !self.urn.is_empty() {
8343            len += 1;
8344        }
8345        if !self.address.is_empty() {
8346            len += 1;
8347        }
8348        if !self.network_interface.is_empty() {
8349            len += 1;
8350        }
8351        if !self.private_address.is_empty() {
8352            len += 1;
8353        }
8354        if self.auto_assigned {
8355            len += 1;
8356        }
8357        if self.create_time.is_some() {
8358            len += 1;
8359        }
8360        if !self.creator.is_empty() {
8361            len += 1;
8362        }
8363        if !self.tags.is_empty() {
8364            len += 1;
8365        }
8366        let mut struct_ser = serializer
8367            .serialize_struct("origincloud.network.v1beta1.FloatingIp", len)?;
8368        if !self.name.is_empty() {
8369            struct_ser.serialize_field("name", &self.name)?;
8370        }
8371        if !self.urn.is_empty() {
8372            struct_ser.serialize_field("urn", &self.urn)?;
8373        }
8374        if !self.address.is_empty() {
8375            struct_ser.serialize_field("address", &self.address)?;
8376        }
8377        if !self.network_interface.is_empty() {
8378            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
8379        }
8380        if !self.private_address.is_empty() {
8381            struct_ser.serialize_field("privateAddress", &self.private_address)?;
8382        }
8383        if self.auto_assigned {
8384            struct_ser.serialize_field("autoAssigned", &self.auto_assigned)?;
8385        }
8386        if let Some(v) = self.create_time.as_ref() {
8387            struct_ser.serialize_field("createTime", v)?;
8388        }
8389        if !self.creator.is_empty() {
8390            struct_ser.serialize_field("creator", &self.creator)?;
8391        }
8392        if !self.tags.is_empty() {
8393            struct_ser.serialize_field("tags", &self.tags)?;
8394        }
8395        struct_ser.end()
8396    }
8397}
8398impl<'de> serde::Deserialize<'de> for FloatingIp {
8399    #[allow(deprecated)]
8400    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8401    where
8402        D: serde::Deserializer<'de>,
8403    {
8404        const FIELDS: &[&str] = &[
8405            "name",
8406            "urn",
8407            "address",
8408            "network_interface",
8409            "networkInterface",
8410            "private_address",
8411            "privateAddress",
8412            "auto_assigned",
8413            "autoAssigned",
8414            "create_time",
8415            "createTime",
8416            "creator",
8417            "tags",
8418        ];
8419        #[allow(clippy::enum_variant_names)]
8420        enum GeneratedField {
8421            Name,
8422            Urn,
8423            Address,
8424            NetworkInterface,
8425            PrivateAddress,
8426            AutoAssigned,
8427            CreateTime,
8428            Creator,
8429            Tags,
8430            __SkipField__,
8431        }
8432        impl<'de> serde::Deserialize<'de> for GeneratedField {
8433            fn deserialize<D>(
8434                deserializer: D,
8435            ) -> std::result::Result<GeneratedField, D::Error>
8436            where
8437                D: serde::Deserializer<'de>,
8438            {
8439                struct GeneratedVisitor;
8440                impl serde::de::Visitor<'_> for GeneratedVisitor {
8441                    type Value = GeneratedField;
8442                    fn expecting(
8443                        &self,
8444                        formatter: &mut std::fmt::Formatter<'_>,
8445                    ) -> std::fmt::Result {
8446                        write!(formatter, "expected one of: {:?}", & FIELDS)
8447                    }
8448                    #[allow(unused_variables)]
8449                    fn visit_str<E>(
8450                        self,
8451                        value: &str,
8452                    ) -> std::result::Result<GeneratedField, E>
8453                    where
8454                        E: serde::de::Error,
8455                    {
8456                        match value {
8457                            "name" => Ok(GeneratedField::Name),
8458                            "urn" => Ok(GeneratedField::Urn),
8459                            "address" => Ok(GeneratedField::Address),
8460                            "networkInterface" | "network_interface" => {
8461                                Ok(GeneratedField::NetworkInterface)
8462                            }
8463                            "privateAddress" | "private_address" => {
8464                                Ok(GeneratedField::PrivateAddress)
8465                            }
8466                            "autoAssigned" | "auto_assigned" => {
8467                                Ok(GeneratedField::AutoAssigned)
8468                            }
8469                            "createTime" | "create_time" => {
8470                                Ok(GeneratedField::CreateTime)
8471                            }
8472                            "creator" => Ok(GeneratedField::Creator),
8473                            "tags" => Ok(GeneratedField::Tags),
8474                            _ => Ok(GeneratedField::__SkipField__),
8475                        }
8476                    }
8477                }
8478                deserializer.deserialize_identifier(GeneratedVisitor)
8479            }
8480        }
8481        struct GeneratedVisitor;
8482        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8483            type Value = FloatingIp;
8484            fn expecting(
8485                &self,
8486                formatter: &mut std::fmt::Formatter<'_>,
8487            ) -> std::fmt::Result {
8488                formatter.write_str("struct origincloud.network.v1beta1.FloatingIp")
8489            }
8490            fn visit_map<V>(
8491                self,
8492                mut map_: V,
8493            ) -> std::result::Result<FloatingIp, V::Error>
8494            where
8495                V: serde::de::MapAccess<'de>,
8496            {
8497                let mut name__ = None;
8498                let mut urn__ = None;
8499                let mut address__ = None;
8500                let mut network_interface__ = None;
8501                let mut private_address__ = None;
8502                let mut auto_assigned__ = None;
8503                let mut create_time__ = None;
8504                let mut creator__ = None;
8505                let mut tags__ = None;
8506                while let Some(k) = map_.next_key()? {
8507                    match k {
8508                        GeneratedField::Name => {
8509                            if name__.is_some() {
8510                                return Err(serde::de::Error::duplicate_field("name"));
8511                            }
8512                            name__ = Some(map_.next_value()?);
8513                        }
8514                        GeneratedField::Urn => {
8515                            if urn__.is_some() {
8516                                return Err(serde::de::Error::duplicate_field("urn"));
8517                            }
8518                            urn__ = Some(map_.next_value()?);
8519                        }
8520                        GeneratedField::Address => {
8521                            if address__.is_some() {
8522                                return Err(serde::de::Error::duplicate_field("address"));
8523                            }
8524                            address__ = Some(map_.next_value()?);
8525                        }
8526                        GeneratedField::NetworkInterface => {
8527                            if network_interface__.is_some() {
8528                                return Err(
8529                                    serde::de::Error::duplicate_field("networkInterface"),
8530                                );
8531                            }
8532                            network_interface__ = Some(map_.next_value()?);
8533                        }
8534                        GeneratedField::PrivateAddress => {
8535                            if private_address__.is_some() {
8536                                return Err(
8537                                    serde::de::Error::duplicate_field("privateAddress"),
8538                                );
8539                            }
8540                            private_address__ = Some(map_.next_value()?);
8541                        }
8542                        GeneratedField::AutoAssigned => {
8543                            if auto_assigned__.is_some() {
8544                                return Err(
8545                                    serde::de::Error::duplicate_field("autoAssigned"),
8546                                );
8547                            }
8548                            auto_assigned__ = Some(map_.next_value()?);
8549                        }
8550                        GeneratedField::CreateTime => {
8551                            if create_time__.is_some() {
8552                                return Err(serde::de::Error::duplicate_field("createTime"));
8553                            }
8554                            create_time__ = map_.next_value()?;
8555                        }
8556                        GeneratedField::Creator => {
8557                            if creator__.is_some() {
8558                                return Err(serde::de::Error::duplicate_field("creator"));
8559                            }
8560                            creator__ = Some(map_.next_value()?);
8561                        }
8562                        GeneratedField::Tags => {
8563                            if tags__.is_some() {
8564                                return Err(serde::de::Error::duplicate_field("tags"));
8565                            }
8566                            tags__ = Some(
8567                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
8568                            );
8569                        }
8570                        GeneratedField::__SkipField__ => {
8571                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8572                        }
8573                    }
8574                }
8575                Ok(FloatingIp {
8576                    name: name__.unwrap_or_default(),
8577                    urn: urn__.unwrap_or_default(),
8578                    address: address__.unwrap_or_default(),
8579                    network_interface: network_interface__.unwrap_or_default(),
8580                    private_address: private_address__.unwrap_or_default(),
8581                    auto_assigned: auto_assigned__.unwrap_or_default(),
8582                    create_time: create_time__,
8583                    creator: creator__.unwrap_or_default(),
8584                    tags: tags__.unwrap_or_default(),
8585                })
8586            }
8587        }
8588        deserializer
8589            .deserialize_struct(
8590                "origincloud.network.v1beta1.FloatingIp",
8591                FIELDS,
8592                GeneratedVisitor,
8593            )
8594    }
8595}
8596impl serde::Serialize for FloatingIpAssociation {
8597    #[allow(deprecated)]
8598    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8599    where
8600        S: serde::Serializer,
8601    {
8602        use serde::ser::SerializeStruct;
8603        let mut len = 0;
8604        if !self.name.is_empty() {
8605            len += 1;
8606        }
8607        if !self.network_interface.is_empty() {
8608            len += 1;
8609        }
8610        if !self.private_address.is_empty() {
8611            len += 1;
8612        }
8613        let mut struct_ser = serializer
8614            .serialize_struct("origincloud.network.v1beta1.FloatingIpAssociation", len)?;
8615        if !self.name.is_empty() {
8616            struct_ser.serialize_field("name", &self.name)?;
8617        }
8618        if !self.network_interface.is_empty() {
8619            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
8620        }
8621        if !self.private_address.is_empty() {
8622            struct_ser.serialize_field("privateAddress", &self.private_address)?;
8623        }
8624        struct_ser.end()
8625    }
8626}
8627impl<'de> serde::Deserialize<'de> for FloatingIpAssociation {
8628    #[allow(deprecated)]
8629    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8630    where
8631        D: serde::Deserializer<'de>,
8632    {
8633        const FIELDS: &[&str] = &[
8634            "name",
8635            "network_interface",
8636            "networkInterface",
8637            "private_address",
8638            "privateAddress",
8639        ];
8640        #[allow(clippy::enum_variant_names)]
8641        enum GeneratedField {
8642            Name,
8643            NetworkInterface,
8644            PrivateAddress,
8645            __SkipField__,
8646        }
8647        impl<'de> serde::Deserialize<'de> for GeneratedField {
8648            fn deserialize<D>(
8649                deserializer: D,
8650            ) -> std::result::Result<GeneratedField, D::Error>
8651            where
8652                D: serde::Deserializer<'de>,
8653            {
8654                struct GeneratedVisitor;
8655                impl serde::de::Visitor<'_> for GeneratedVisitor {
8656                    type Value = GeneratedField;
8657                    fn expecting(
8658                        &self,
8659                        formatter: &mut std::fmt::Formatter<'_>,
8660                    ) -> std::fmt::Result {
8661                        write!(formatter, "expected one of: {:?}", & FIELDS)
8662                    }
8663                    #[allow(unused_variables)]
8664                    fn visit_str<E>(
8665                        self,
8666                        value: &str,
8667                    ) -> std::result::Result<GeneratedField, E>
8668                    where
8669                        E: serde::de::Error,
8670                    {
8671                        match value {
8672                            "name" => Ok(GeneratedField::Name),
8673                            "networkInterface" | "network_interface" => {
8674                                Ok(GeneratedField::NetworkInterface)
8675                            }
8676                            "privateAddress" | "private_address" => {
8677                                Ok(GeneratedField::PrivateAddress)
8678                            }
8679                            _ => Ok(GeneratedField::__SkipField__),
8680                        }
8681                    }
8682                }
8683                deserializer.deserialize_identifier(GeneratedVisitor)
8684            }
8685        }
8686        struct GeneratedVisitor;
8687        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8688            type Value = FloatingIpAssociation;
8689            fn expecting(
8690                &self,
8691                formatter: &mut std::fmt::Formatter<'_>,
8692            ) -> std::fmt::Result {
8693                formatter
8694                    .write_str(
8695                        "struct origincloud.network.v1beta1.FloatingIpAssociation",
8696                    )
8697            }
8698            fn visit_map<V>(
8699                self,
8700                mut map_: V,
8701            ) -> std::result::Result<FloatingIpAssociation, V::Error>
8702            where
8703                V: serde::de::MapAccess<'de>,
8704            {
8705                let mut name__ = None;
8706                let mut network_interface__ = None;
8707                let mut private_address__ = None;
8708                while let Some(k) = map_.next_key()? {
8709                    match k {
8710                        GeneratedField::Name => {
8711                            if name__.is_some() {
8712                                return Err(serde::de::Error::duplicate_field("name"));
8713                            }
8714                            name__ = Some(map_.next_value()?);
8715                        }
8716                        GeneratedField::NetworkInterface => {
8717                            if network_interface__.is_some() {
8718                                return Err(
8719                                    serde::de::Error::duplicate_field("networkInterface"),
8720                                );
8721                            }
8722                            network_interface__ = Some(map_.next_value()?);
8723                        }
8724                        GeneratedField::PrivateAddress => {
8725                            if private_address__.is_some() {
8726                                return Err(
8727                                    serde::de::Error::duplicate_field("privateAddress"),
8728                                );
8729                            }
8730                            private_address__ = Some(map_.next_value()?);
8731                        }
8732                        GeneratedField::__SkipField__ => {
8733                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8734                        }
8735                    }
8736                }
8737                Ok(FloatingIpAssociation {
8738                    name: name__.unwrap_or_default(),
8739                    network_interface: network_interface__.unwrap_or_default(),
8740                    private_address: private_address__.unwrap_or_default(),
8741                })
8742            }
8743        }
8744        deserializer
8745            .deserialize_struct(
8746                "origincloud.network.v1beta1.FloatingIpAssociation",
8747                FIELDS,
8748                GeneratedVisitor,
8749            )
8750    }
8751}
8752impl serde::Serialize for GetAclAssociationRequest {
8753    #[allow(deprecated)]
8754    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8755    where
8756        S: serde::Serializer,
8757    {
8758        use serde::ser::SerializeStruct;
8759        let mut len = 0;
8760        if !self.name.is_empty() {
8761            len += 1;
8762        }
8763        let mut struct_ser = serializer
8764            .serialize_struct(
8765                "origincloud.network.v1beta1.GetAclAssociationRequest",
8766                len,
8767            )?;
8768        if !self.name.is_empty() {
8769            struct_ser.serialize_field("name", &self.name)?;
8770        }
8771        struct_ser.end()
8772    }
8773}
8774impl<'de> serde::Deserialize<'de> for GetAclAssociationRequest {
8775    #[allow(deprecated)]
8776    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8777    where
8778        D: serde::Deserializer<'de>,
8779    {
8780        const FIELDS: &[&str] = &["name"];
8781        #[allow(clippy::enum_variant_names)]
8782        enum GeneratedField {
8783            Name,
8784            __SkipField__,
8785        }
8786        impl<'de> serde::Deserialize<'de> for GeneratedField {
8787            fn deserialize<D>(
8788                deserializer: D,
8789            ) -> std::result::Result<GeneratedField, D::Error>
8790            where
8791                D: serde::Deserializer<'de>,
8792            {
8793                struct GeneratedVisitor;
8794                impl serde::de::Visitor<'_> for GeneratedVisitor {
8795                    type Value = GeneratedField;
8796                    fn expecting(
8797                        &self,
8798                        formatter: &mut std::fmt::Formatter<'_>,
8799                    ) -> std::fmt::Result {
8800                        write!(formatter, "expected one of: {:?}", & FIELDS)
8801                    }
8802                    #[allow(unused_variables)]
8803                    fn visit_str<E>(
8804                        self,
8805                        value: &str,
8806                    ) -> std::result::Result<GeneratedField, E>
8807                    where
8808                        E: serde::de::Error,
8809                    {
8810                        match value {
8811                            "name" => Ok(GeneratedField::Name),
8812                            _ => Ok(GeneratedField::__SkipField__),
8813                        }
8814                    }
8815                }
8816                deserializer.deserialize_identifier(GeneratedVisitor)
8817            }
8818        }
8819        struct GeneratedVisitor;
8820        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8821            type Value = GetAclAssociationRequest;
8822            fn expecting(
8823                &self,
8824                formatter: &mut std::fmt::Formatter<'_>,
8825            ) -> std::fmt::Result {
8826                formatter
8827                    .write_str(
8828                        "struct origincloud.network.v1beta1.GetAclAssociationRequest",
8829                    )
8830            }
8831            fn visit_map<V>(
8832                self,
8833                mut map_: V,
8834            ) -> std::result::Result<GetAclAssociationRequest, V::Error>
8835            where
8836                V: serde::de::MapAccess<'de>,
8837            {
8838                let mut name__ = None;
8839                while let Some(k) = map_.next_key()? {
8840                    match k {
8841                        GeneratedField::Name => {
8842                            if name__.is_some() {
8843                                return Err(serde::de::Error::duplicate_field("name"));
8844                            }
8845                            name__ = Some(map_.next_value()?);
8846                        }
8847                        GeneratedField::__SkipField__ => {
8848                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8849                        }
8850                    }
8851                }
8852                Ok(GetAclAssociationRequest {
8853                    name: name__.unwrap_or_default(),
8854                })
8855            }
8856        }
8857        deserializer
8858            .deserialize_struct(
8859                "origincloud.network.v1beta1.GetAclAssociationRequest",
8860                FIELDS,
8861                GeneratedVisitor,
8862            )
8863    }
8864}
8865impl serde::Serialize for GetAclRequest {
8866    #[allow(deprecated)]
8867    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8868    where
8869        S: serde::Serializer,
8870    {
8871        use serde::ser::SerializeStruct;
8872        let mut len = 0;
8873        if !self.name.is_empty() {
8874            len += 1;
8875        }
8876        let mut struct_ser = serializer
8877            .serialize_struct("origincloud.network.v1beta1.GetAclRequest", len)?;
8878        if !self.name.is_empty() {
8879            struct_ser.serialize_field("name", &self.name)?;
8880        }
8881        struct_ser.end()
8882    }
8883}
8884impl<'de> serde::Deserialize<'de> for GetAclRequest {
8885    #[allow(deprecated)]
8886    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8887    where
8888        D: serde::Deserializer<'de>,
8889    {
8890        const FIELDS: &[&str] = &["name"];
8891        #[allow(clippy::enum_variant_names)]
8892        enum GeneratedField {
8893            Name,
8894            __SkipField__,
8895        }
8896        impl<'de> serde::Deserialize<'de> for GeneratedField {
8897            fn deserialize<D>(
8898                deserializer: D,
8899            ) -> std::result::Result<GeneratedField, D::Error>
8900            where
8901                D: serde::Deserializer<'de>,
8902            {
8903                struct GeneratedVisitor;
8904                impl serde::de::Visitor<'_> for GeneratedVisitor {
8905                    type Value = GeneratedField;
8906                    fn expecting(
8907                        &self,
8908                        formatter: &mut std::fmt::Formatter<'_>,
8909                    ) -> std::fmt::Result {
8910                        write!(formatter, "expected one of: {:?}", & FIELDS)
8911                    }
8912                    #[allow(unused_variables)]
8913                    fn visit_str<E>(
8914                        self,
8915                        value: &str,
8916                    ) -> std::result::Result<GeneratedField, E>
8917                    where
8918                        E: serde::de::Error,
8919                    {
8920                        match value {
8921                            "name" => Ok(GeneratedField::Name),
8922                            _ => Ok(GeneratedField::__SkipField__),
8923                        }
8924                    }
8925                }
8926                deserializer.deserialize_identifier(GeneratedVisitor)
8927            }
8928        }
8929        struct GeneratedVisitor;
8930        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8931            type Value = GetAclRequest;
8932            fn expecting(
8933                &self,
8934                formatter: &mut std::fmt::Formatter<'_>,
8935            ) -> std::fmt::Result {
8936                formatter.write_str("struct origincloud.network.v1beta1.GetAclRequest")
8937            }
8938            fn visit_map<V>(
8939                self,
8940                mut map_: V,
8941            ) -> std::result::Result<GetAclRequest, V::Error>
8942            where
8943                V: serde::de::MapAccess<'de>,
8944            {
8945                let mut name__ = None;
8946                while let Some(k) = map_.next_key()? {
8947                    match k {
8948                        GeneratedField::Name => {
8949                            if name__.is_some() {
8950                                return Err(serde::de::Error::duplicate_field("name"));
8951                            }
8952                            name__ = Some(map_.next_value()?);
8953                        }
8954                        GeneratedField::__SkipField__ => {
8955                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8956                        }
8957                    }
8958                }
8959                Ok(GetAclRequest {
8960                    name: name__.unwrap_or_default(),
8961                })
8962            }
8963        }
8964        deserializer
8965            .deserialize_struct(
8966                "origincloud.network.v1beta1.GetAclRequest",
8967                FIELDS,
8968                GeneratedVisitor,
8969            )
8970    }
8971}
8972impl serde::Serialize for GetAclRuleRequest {
8973    #[allow(deprecated)]
8974    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8975    where
8976        S: serde::Serializer,
8977    {
8978        use serde::ser::SerializeStruct;
8979        let mut len = 0;
8980        if !self.name.is_empty() {
8981            len += 1;
8982        }
8983        let mut struct_ser = serializer
8984            .serialize_struct("origincloud.network.v1beta1.GetAclRuleRequest", len)?;
8985        if !self.name.is_empty() {
8986            struct_ser.serialize_field("name", &self.name)?;
8987        }
8988        struct_ser.end()
8989    }
8990}
8991impl<'de> serde::Deserialize<'de> for GetAclRuleRequest {
8992    #[allow(deprecated)]
8993    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8994    where
8995        D: serde::Deserializer<'de>,
8996    {
8997        const FIELDS: &[&str] = &["name"];
8998        #[allow(clippy::enum_variant_names)]
8999        enum GeneratedField {
9000            Name,
9001            __SkipField__,
9002        }
9003        impl<'de> serde::Deserialize<'de> for GeneratedField {
9004            fn deserialize<D>(
9005                deserializer: D,
9006            ) -> std::result::Result<GeneratedField, D::Error>
9007            where
9008                D: serde::Deserializer<'de>,
9009            {
9010                struct GeneratedVisitor;
9011                impl serde::de::Visitor<'_> for GeneratedVisitor {
9012                    type Value = GeneratedField;
9013                    fn expecting(
9014                        &self,
9015                        formatter: &mut std::fmt::Formatter<'_>,
9016                    ) -> std::fmt::Result {
9017                        write!(formatter, "expected one of: {:?}", & FIELDS)
9018                    }
9019                    #[allow(unused_variables)]
9020                    fn visit_str<E>(
9021                        self,
9022                        value: &str,
9023                    ) -> std::result::Result<GeneratedField, E>
9024                    where
9025                        E: serde::de::Error,
9026                    {
9027                        match value {
9028                            "name" => Ok(GeneratedField::Name),
9029                            _ => Ok(GeneratedField::__SkipField__),
9030                        }
9031                    }
9032                }
9033                deserializer.deserialize_identifier(GeneratedVisitor)
9034            }
9035        }
9036        struct GeneratedVisitor;
9037        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9038            type Value = GetAclRuleRequest;
9039            fn expecting(
9040                &self,
9041                formatter: &mut std::fmt::Formatter<'_>,
9042            ) -> std::fmt::Result {
9043                formatter
9044                    .write_str("struct origincloud.network.v1beta1.GetAclRuleRequest")
9045            }
9046            fn visit_map<V>(
9047                self,
9048                mut map_: V,
9049            ) -> std::result::Result<GetAclRuleRequest, V::Error>
9050            where
9051                V: serde::de::MapAccess<'de>,
9052            {
9053                let mut name__ = None;
9054                while let Some(k) = map_.next_key()? {
9055                    match k {
9056                        GeneratedField::Name => {
9057                            if name__.is_some() {
9058                                return Err(serde::de::Error::duplicate_field("name"));
9059                            }
9060                            name__ = Some(map_.next_value()?);
9061                        }
9062                        GeneratedField::__SkipField__ => {
9063                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9064                        }
9065                    }
9066                }
9067                Ok(GetAclRuleRequest {
9068                    name: name__.unwrap_or_default(),
9069                })
9070            }
9071        }
9072        deserializer
9073            .deserialize_struct(
9074                "origincloud.network.v1beta1.GetAclRuleRequest",
9075                FIELDS,
9076                GeneratedVisitor,
9077            )
9078    }
9079}
9080impl serde::Serialize for GetDnsPolicyAssociationRequest {
9081    #[allow(deprecated)]
9082    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9083    where
9084        S: serde::Serializer,
9085    {
9086        use serde::ser::SerializeStruct;
9087        let mut len = 0;
9088        if !self.name.is_empty() {
9089            len += 1;
9090        }
9091        let mut struct_ser = serializer
9092            .serialize_struct(
9093                "origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9094                len,
9095            )?;
9096        if !self.name.is_empty() {
9097            struct_ser.serialize_field("name", &self.name)?;
9098        }
9099        struct_ser.end()
9100    }
9101}
9102impl<'de> serde::Deserialize<'de> for GetDnsPolicyAssociationRequest {
9103    #[allow(deprecated)]
9104    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9105    where
9106        D: serde::Deserializer<'de>,
9107    {
9108        const FIELDS: &[&str] = &["name"];
9109        #[allow(clippy::enum_variant_names)]
9110        enum GeneratedField {
9111            Name,
9112            __SkipField__,
9113        }
9114        impl<'de> serde::Deserialize<'de> for GeneratedField {
9115            fn deserialize<D>(
9116                deserializer: D,
9117            ) -> std::result::Result<GeneratedField, D::Error>
9118            where
9119                D: serde::Deserializer<'de>,
9120            {
9121                struct GeneratedVisitor;
9122                impl serde::de::Visitor<'_> for GeneratedVisitor {
9123                    type Value = GeneratedField;
9124                    fn expecting(
9125                        &self,
9126                        formatter: &mut std::fmt::Formatter<'_>,
9127                    ) -> std::fmt::Result {
9128                        write!(formatter, "expected one of: {:?}", & FIELDS)
9129                    }
9130                    #[allow(unused_variables)]
9131                    fn visit_str<E>(
9132                        self,
9133                        value: &str,
9134                    ) -> std::result::Result<GeneratedField, E>
9135                    where
9136                        E: serde::de::Error,
9137                    {
9138                        match value {
9139                            "name" => Ok(GeneratedField::Name),
9140                            _ => Ok(GeneratedField::__SkipField__),
9141                        }
9142                    }
9143                }
9144                deserializer.deserialize_identifier(GeneratedVisitor)
9145            }
9146        }
9147        struct GeneratedVisitor;
9148        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9149            type Value = GetDnsPolicyAssociationRequest;
9150            fn expecting(
9151                &self,
9152                formatter: &mut std::fmt::Formatter<'_>,
9153            ) -> std::fmt::Result {
9154                formatter
9155                    .write_str(
9156                        "struct origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9157                    )
9158            }
9159            fn visit_map<V>(
9160                self,
9161                mut map_: V,
9162            ) -> std::result::Result<GetDnsPolicyAssociationRequest, V::Error>
9163            where
9164                V: serde::de::MapAccess<'de>,
9165            {
9166                let mut name__ = None;
9167                while let Some(k) = map_.next_key()? {
9168                    match k {
9169                        GeneratedField::Name => {
9170                            if name__.is_some() {
9171                                return Err(serde::de::Error::duplicate_field("name"));
9172                            }
9173                            name__ = Some(map_.next_value()?);
9174                        }
9175                        GeneratedField::__SkipField__ => {
9176                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9177                        }
9178                    }
9179                }
9180                Ok(GetDnsPolicyAssociationRequest {
9181                    name: name__.unwrap_or_default(),
9182                })
9183            }
9184        }
9185        deserializer
9186            .deserialize_struct(
9187                "origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9188                FIELDS,
9189                GeneratedVisitor,
9190            )
9191    }
9192}
9193impl serde::Serialize for GetDnsPolicyRequest {
9194    #[allow(deprecated)]
9195    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9196    where
9197        S: serde::Serializer,
9198    {
9199        use serde::ser::SerializeStruct;
9200        let mut len = 0;
9201        if !self.name.is_empty() {
9202            len += 1;
9203        }
9204        let mut struct_ser = serializer
9205            .serialize_struct("origincloud.network.v1beta1.GetDnsPolicyRequest", len)?;
9206        if !self.name.is_empty() {
9207            struct_ser.serialize_field("name", &self.name)?;
9208        }
9209        struct_ser.end()
9210    }
9211}
9212impl<'de> serde::Deserialize<'de> for GetDnsPolicyRequest {
9213    #[allow(deprecated)]
9214    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9215    where
9216        D: serde::Deserializer<'de>,
9217    {
9218        const FIELDS: &[&str] = &["name"];
9219        #[allow(clippy::enum_variant_names)]
9220        enum GeneratedField {
9221            Name,
9222            __SkipField__,
9223        }
9224        impl<'de> serde::Deserialize<'de> for GeneratedField {
9225            fn deserialize<D>(
9226                deserializer: D,
9227            ) -> std::result::Result<GeneratedField, D::Error>
9228            where
9229                D: serde::Deserializer<'de>,
9230            {
9231                struct GeneratedVisitor;
9232                impl serde::de::Visitor<'_> for GeneratedVisitor {
9233                    type Value = GeneratedField;
9234                    fn expecting(
9235                        &self,
9236                        formatter: &mut std::fmt::Formatter<'_>,
9237                    ) -> std::fmt::Result {
9238                        write!(formatter, "expected one of: {:?}", & FIELDS)
9239                    }
9240                    #[allow(unused_variables)]
9241                    fn visit_str<E>(
9242                        self,
9243                        value: &str,
9244                    ) -> std::result::Result<GeneratedField, E>
9245                    where
9246                        E: serde::de::Error,
9247                    {
9248                        match value {
9249                            "name" => Ok(GeneratedField::Name),
9250                            _ => Ok(GeneratedField::__SkipField__),
9251                        }
9252                    }
9253                }
9254                deserializer.deserialize_identifier(GeneratedVisitor)
9255            }
9256        }
9257        struct GeneratedVisitor;
9258        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9259            type Value = GetDnsPolicyRequest;
9260            fn expecting(
9261                &self,
9262                formatter: &mut std::fmt::Formatter<'_>,
9263            ) -> std::fmt::Result {
9264                formatter
9265                    .write_str("struct origincloud.network.v1beta1.GetDnsPolicyRequest")
9266            }
9267            fn visit_map<V>(
9268                self,
9269                mut map_: V,
9270            ) -> std::result::Result<GetDnsPolicyRequest, V::Error>
9271            where
9272                V: serde::de::MapAccess<'de>,
9273            {
9274                let mut name__ = None;
9275                while let Some(k) = map_.next_key()? {
9276                    match k {
9277                        GeneratedField::Name => {
9278                            if name__.is_some() {
9279                                return Err(serde::de::Error::duplicate_field("name"));
9280                            }
9281                            name__ = Some(map_.next_value()?);
9282                        }
9283                        GeneratedField::__SkipField__ => {
9284                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9285                        }
9286                    }
9287                }
9288                Ok(GetDnsPolicyRequest {
9289                    name: name__.unwrap_or_default(),
9290                })
9291            }
9292        }
9293        deserializer
9294            .deserialize_struct(
9295                "origincloud.network.v1beta1.GetDnsPolicyRequest",
9296                FIELDS,
9297                GeneratedVisitor,
9298            )
9299    }
9300}
9301impl serde::Serialize for GetFloatingIpAssociationRequest {
9302    #[allow(deprecated)]
9303    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9304    where
9305        S: serde::Serializer,
9306    {
9307        use serde::ser::SerializeStruct;
9308        let mut len = 0;
9309        if !self.name.is_empty() {
9310            len += 1;
9311        }
9312        let mut struct_ser = serializer
9313            .serialize_struct(
9314                "origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9315                len,
9316            )?;
9317        if !self.name.is_empty() {
9318            struct_ser.serialize_field("name", &self.name)?;
9319        }
9320        struct_ser.end()
9321    }
9322}
9323impl<'de> serde::Deserialize<'de> for GetFloatingIpAssociationRequest {
9324    #[allow(deprecated)]
9325    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9326    where
9327        D: serde::Deserializer<'de>,
9328    {
9329        const FIELDS: &[&str] = &["name"];
9330        #[allow(clippy::enum_variant_names)]
9331        enum GeneratedField {
9332            Name,
9333            __SkipField__,
9334        }
9335        impl<'de> serde::Deserialize<'de> for GeneratedField {
9336            fn deserialize<D>(
9337                deserializer: D,
9338            ) -> std::result::Result<GeneratedField, D::Error>
9339            where
9340                D: serde::Deserializer<'de>,
9341            {
9342                struct GeneratedVisitor;
9343                impl serde::de::Visitor<'_> for GeneratedVisitor {
9344                    type Value = GeneratedField;
9345                    fn expecting(
9346                        &self,
9347                        formatter: &mut std::fmt::Formatter<'_>,
9348                    ) -> std::fmt::Result {
9349                        write!(formatter, "expected one of: {:?}", & FIELDS)
9350                    }
9351                    #[allow(unused_variables)]
9352                    fn visit_str<E>(
9353                        self,
9354                        value: &str,
9355                    ) -> std::result::Result<GeneratedField, E>
9356                    where
9357                        E: serde::de::Error,
9358                    {
9359                        match value {
9360                            "name" => Ok(GeneratedField::Name),
9361                            _ => Ok(GeneratedField::__SkipField__),
9362                        }
9363                    }
9364                }
9365                deserializer.deserialize_identifier(GeneratedVisitor)
9366            }
9367        }
9368        struct GeneratedVisitor;
9369        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9370            type Value = GetFloatingIpAssociationRequest;
9371            fn expecting(
9372                &self,
9373                formatter: &mut std::fmt::Formatter<'_>,
9374            ) -> std::fmt::Result {
9375                formatter
9376                    .write_str(
9377                        "struct origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9378                    )
9379            }
9380            fn visit_map<V>(
9381                self,
9382                mut map_: V,
9383            ) -> std::result::Result<GetFloatingIpAssociationRequest, V::Error>
9384            where
9385                V: serde::de::MapAccess<'de>,
9386            {
9387                let mut name__ = None;
9388                while let Some(k) = map_.next_key()? {
9389                    match k {
9390                        GeneratedField::Name => {
9391                            if name__.is_some() {
9392                                return Err(serde::de::Error::duplicate_field("name"));
9393                            }
9394                            name__ = Some(map_.next_value()?);
9395                        }
9396                        GeneratedField::__SkipField__ => {
9397                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9398                        }
9399                    }
9400                }
9401                Ok(GetFloatingIpAssociationRequest {
9402                    name: name__.unwrap_or_default(),
9403                })
9404            }
9405        }
9406        deserializer
9407            .deserialize_struct(
9408                "origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9409                FIELDS,
9410                GeneratedVisitor,
9411            )
9412    }
9413}
9414impl serde::Serialize for GetFloatingIpRequest {
9415    #[allow(deprecated)]
9416    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9417    where
9418        S: serde::Serializer,
9419    {
9420        use serde::ser::SerializeStruct;
9421        let mut len = 0;
9422        if !self.name.is_empty() {
9423            len += 1;
9424        }
9425        let mut struct_ser = serializer
9426            .serialize_struct("origincloud.network.v1beta1.GetFloatingIpRequest", len)?;
9427        if !self.name.is_empty() {
9428            struct_ser.serialize_field("name", &self.name)?;
9429        }
9430        struct_ser.end()
9431    }
9432}
9433impl<'de> serde::Deserialize<'de> for GetFloatingIpRequest {
9434    #[allow(deprecated)]
9435    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9436    where
9437        D: serde::Deserializer<'de>,
9438    {
9439        const FIELDS: &[&str] = &["name"];
9440        #[allow(clippy::enum_variant_names)]
9441        enum GeneratedField {
9442            Name,
9443            __SkipField__,
9444        }
9445        impl<'de> serde::Deserialize<'de> for GeneratedField {
9446            fn deserialize<D>(
9447                deserializer: D,
9448            ) -> std::result::Result<GeneratedField, D::Error>
9449            where
9450                D: serde::Deserializer<'de>,
9451            {
9452                struct GeneratedVisitor;
9453                impl serde::de::Visitor<'_> for GeneratedVisitor {
9454                    type Value = GeneratedField;
9455                    fn expecting(
9456                        &self,
9457                        formatter: &mut std::fmt::Formatter<'_>,
9458                    ) -> std::fmt::Result {
9459                        write!(formatter, "expected one of: {:?}", & FIELDS)
9460                    }
9461                    #[allow(unused_variables)]
9462                    fn visit_str<E>(
9463                        self,
9464                        value: &str,
9465                    ) -> std::result::Result<GeneratedField, E>
9466                    where
9467                        E: serde::de::Error,
9468                    {
9469                        match value {
9470                            "name" => Ok(GeneratedField::Name),
9471                            _ => Ok(GeneratedField::__SkipField__),
9472                        }
9473                    }
9474                }
9475                deserializer.deserialize_identifier(GeneratedVisitor)
9476            }
9477        }
9478        struct GeneratedVisitor;
9479        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9480            type Value = GetFloatingIpRequest;
9481            fn expecting(
9482                &self,
9483                formatter: &mut std::fmt::Formatter<'_>,
9484            ) -> std::fmt::Result {
9485                formatter
9486                    .write_str("struct origincloud.network.v1beta1.GetFloatingIpRequest")
9487            }
9488            fn visit_map<V>(
9489                self,
9490                mut map_: V,
9491            ) -> std::result::Result<GetFloatingIpRequest, V::Error>
9492            where
9493                V: serde::de::MapAccess<'de>,
9494            {
9495                let mut name__ = None;
9496                while let Some(k) = map_.next_key()? {
9497                    match k {
9498                        GeneratedField::Name => {
9499                            if name__.is_some() {
9500                                return Err(serde::de::Error::duplicate_field("name"));
9501                            }
9502                            name__ = Some(map_.next_value()?);
9503                        }
9504                        GeneratedField::__SkipField__ => {
9505                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9506                        }
9507                    }
9508                }
9509                Ok(GetFloatingIpRequest {
9510                    name: name__.unwrap_or_default(),
9511                })
9512            }
9513        }
9514        deserializer
9515            .deserialize_struct(
9516                "origincloud.network.v1beta1.GetFloatingIpRequest",
9517                FIELDS,
9518                GeneratedVisitor,
9519            )
9520    }
9521}
9522impl serde::Serialize for GetInternetGatewayRequest {
9523    #[allow(deprecated)]
9524    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9525    where
9526        S: serde::Serializer,
9527    {
9528        use serde::ser::SerializeStruct;
9529        let mut len = 0;
9530        if !self.name.is_empty() {
9531            len += 1;
9532        }
9533        let mut struct_ser = serializer
9534            .serialize_struct(
9535                "origincloud.network.v1beta1.GetInternetGatewayRequest",
9536                len,
9537            )?;
9538        if !self.name.is_empty() {
9539            struct_ser.serialize_field("name", &self.name)?;
9540        }
9541        struct_ser.end()
9542    }
9543}
9544impl<'de> serde::Deserialize<'de> for GetInternetGatewayRequest {
9545    #[allow(deprecated)]
9546    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9547    where
9548        D: serde::Deserializer<'de>,
9549    {
9550        const FIELDS: &[&str] = &["name"];
9551        #[allow(clippy::enum_variant_names)]
9552        enum GeneratedField {
9553            Name,
9554            __SkipField__,
9555        }
9556        impl<'de> serde::Deserialize<'de> for GeneratedField {
9557            fn deserialize<D>(
9558                deserializer: D,
9559            ) -> std::result::Result<GeneratedField, D::Error>
9560            where
9561                D: serde::Deserializer<'de>,
9562            {
9563                struct GeneratedVisitor;
9564                impl serde::de::Visitor<'_> for GeneratedVisitor {
9565                    type Value = GeneratedField;
9566                    fn expecting(
9567                        &self,
9568                        formatter: &mut std::fmt::Formatter<'_>,
9569                    ) -> std::fmt::Result {
9570                        write!(formatter, "expected one of: {:?}", & FIELDS)
9571                    }
9572                    #[allow(unused_variables)]
9573                    fn visit_str<E>(
9574                        self,
9575                        value: &str,
9576                    ) -> std::result::Result<GeneratedField, E>
9577                    where
9578                        E: serde::de::Error,
9579                    {
9580                        match value {
9581                            "name" => Ok(GeneratedField::Name),
9582                            _ => Ok(GeneratedField::__SkipField__),
9583                        }
9584                    }
9585                }
9586                deserializer.deserialize_identifier(GeneratedVisitor)
9587            }
9588        }
9589        struct GeneratedVisitor;
9590        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9591            type Value = GetInternetGatewayRequest;
9592            fn expecting(
9593                &self,
9594                formatter: &mut std::fmt::Formatter<'_>,
9595            ) -> std::fmt::Result {
9596                formatter
9597                    .write_str(
9598                        "struct origincloud.network.v1beta1.GetInternetGatewayRequest",
9599                    )
9600            }
9601            fn visit_map<V>(
9602                self,
9603                mut map_: V,
9604            ) -> std::result::Result<GetInternetGatewayRequest, V::Error>
9605            where
9606                V: serde::de::MapAccess<'de>,
9607            {
9608                let mut name__ = None;
9609                while let Some(k) = map_.next_key()? {
9610                    match k {
9611                        GeneratedField::Name => {
9612                            if name__.is_some() {
9613                                return Err(serde::de::Error::duplicate_field("name"));
9614                            }
9615                            name__ = Some(map_.next_value()?);
9616                        }
9617                        GeneratedField::__SkipField__ => {
9618                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9619                        }
9620                    }
9621                }
9622                Ok(GetInternetGatewayRequest {
9623                    name: name__.unwrap_or_default(),
9624                })
9625            }
9626        }
9627        deserializer
9628            .deserialize_struct(
9629                "origincloud.network.v1beta1.GetInternetGatewayRequest",
9630                FIELDS,
9631                GeneratedVisitor,
9632            )
9633    }
9634}
9635impl serde::Serialize for GetNatGatewayRequest {
9636    #[allow(deprecated)]
9637    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9638    where
9639        S: serde::Serializer,
9640    {
9641        use serde::ser::SerializeStruct;
9642        let mut len = 0;
9643        if !self.name.is_empty() {
9644            len += 1;
9645        }
9646        let mut struct_ser = serializer
9647            .serialize_struct("origincloud.network.v1beta1.GetNatGatewayRequest", len)?;
9648        if !self.name.is_empty() {
9649            struct_ser.serialize_field("name", &self.name)?;
9650        }
9651        struct_ser.end()
9652    }
9653}
9654impl<'de> serde::Deserialize<'de> for GetNatGatewayRequest {
9655    #[allow(deprecated)]
9656    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9657    where
9658        D: serde::Deserializer<'de>,
9659    {
9660        const FIELDS: &[&str] = &["name"];
9661        #[allow(clippy::enum_variant_names)]
9662        enum GeneratedField {
9663            Name,
9664            __SkipField__,
9665        }
9666        impl<'de> serde::Deserialize<'de> for GeneratedField {
9667            fn deserialize<D>(
9668                deserializer: D,
9669            ) -> std::result::Result<GeneratedField, D::Error>
9670            where
9671                D: serde::Deserializer<'de>,
9672            {
9673                struct GeneratedVisitor;
9674                impl serde::de::Visitor<'_> for GeneratedVisitor {
9675                    type Value = GeneratedField;
9676                    fn expecting(
9677                        &self,
9678                        formatter: &mut std::fmt::Formatter<'_>,
9679                    ) -> std::fmt::Result {
9680                        write!(formatter, "expected one of: {:?}", & FIELDS)
9681                    }
9682                    #[allow(unused_variables)]
9683                    fn visit_str<E>(
9684                        self,
9685                        value: &str,
9686                    ) -> std::result::Result<GeneratedField, E>
9687                    where
9688                        E: serde::de::Error,
9689                    {
9690                        match value {
9691                            "name" => Ok(GeneratedField::Name),
9692                            _ => Ok(GeneratedField::__SkipField__),
9693                        }
9694                    }
9695                }
9696                deserializer.deserialize_identifier(GeneratedVisitor)
9697            }
9698        }
9699        struct GeneratedVisitor;
9700        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9701            type Value = GetNatGatewayRequest;
9702            fn expecting(
9703                &self,
9704                formatter: &mut std::fmt::Formatter<'_>,
9705            ) -> std::fmt::Result {
9706                formatter
9707                    .write_str("struct origincloud.network.v1beta1.GetNatGatewayRequest")
9708            }
9709            fn visit_map<V>(
9710                self,
9711                mut map_: V,
9712            ) -> std::result::Result<GetNatGatewayRequest, V::Error>
9713            where
9714                V: serde::de::MapAccess<'de>,
9715            {
9716                let mut name__ = None;
9717                while let Some(k) = map_.next_key()? {
9718                    match k {
9719                        GeneratedField::Name => {
9720                            if name__.is_some() {
9721                                return Err(serde::de::Error::duplicate_field("name"));
9722                            }
9723                            name__ = Some(map_.next_value()?);
9724                        }
9725                        GeneratedField::__SkipField__ => {
9726                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9727                        }
9728                    }
9729                }
9730                Ok(GetNatGatewayRequest {
9731                    name: name__.unwrap_or_default(),
9732                })
9733            }
9734        }
9735        deserializer
9736            .deserialize_struct(
9737                "origincloud.network.v1beta1.GetNatGatewayRequest",
9738                FIELDS,
9739                GeneratedVisitor,
9740            )
9741    }
9742}
9743impl serde::Serialize for GetNetworkInterfaceRequest {
9744    #[allow(deprecated)]
9745    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9746    where
9747        S: serde::Serializer,
9748    {
9749        use serde::ser::SerializeStruct;
9750        let mut len = 0;
9751        if !self.name.is_empty() {
9752            len += 1;
9753        }
9754        let mut struct_ser = serializer
9755            .serialize_struct(
9756                "origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9757                len,
9758            )?;
9759        if !self.name.is_empty() {
9760            struct_ser.serialize_field("name", &self.name)?;
9761        }
9762        struct_ser.end()
9763    }
9764}
9765impl<'de> serde::Deserialize<'de> for GetNetworkInterfaceRequest {
9766    #[allow(deprecated)]
9767    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9768    where
9769        D: serde::Deserializer<'de>,
9770    {
9771        const FIELDS: &[&str] = &["name"];
9772        #[allow(clippy::enum_variant_names)]
9773        enum GeneratedField {
9774            Name,
9775            __SkipField__,
9776        }
9777        impl<'de> serde::Deserialize<'de> for GeneratedField {
9778            fn deserialize<D>(
9779                deserializer: D,
9780            ) -> std::result::Result<GeneratedField, D::Error>
9781            where
9782                D: serde::Deserializer<'de>,
9783            {
9784                struct GeneratedVisitor;
9785                impl serde::de::Visitor<'_> for GeneratedVisitor {
9786                    type Value = GeneratedField;
9787                    fn expecting(
9788                        &self,
9789                        formatter: &mut std::fmt::Formatter<'_>,
9790                    ) -> std::fmt::Result {
9791                        write!(formatter, "expected one of: {:?}", & FIELDS)
9792                    }
9793                    #[allow(unused_variables)]
9794                    fn visit_str<E>(
9795                        self,
9796                        value: &str,
9797                    ) -> std::result::Result<GeneratedField, E>
9798                    where
9799                        E: serde::de::Error,
9800                    {
9801                        match value {
9802                            "name" => Ok(GeneratedField::Name),
9803                            _ => Ok(GeneratedField::__SkipField__),
9804                        }
9805                    }
9806                }
9807                deserializer.deserialize_identifier(GeneratedVisitor)
9808            }
9809        }
9810        struct GeneratedVisitor;
9811        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9812            type Value = GetNetworkInterfaceRequest;
9813            fn expecting(
9814                &self,
9815                formatter: &mut std::fmt::Formatter<'_>,
9816            ) -> std::fmt::Result {
9817                formatter
9818                    .write_str(
9819                        "struct origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9820                    )
9821            }
9822            fn visit_map<V>(
9823                self,
9824                mut map_: V,
9825            ) -> std::result::Result<GetNetworkInterfaceRequest, V::Error>
9826            where
9827                V: serde::de::MapAccess<'de>,
9828            {
9829                let mut name__ = None;
9830                while let Some(k) = map_.next_key()? {
9831                    match k {
9832                        GeneratedField::Name => {
9833                            if name__.is_some() {
9834                                return Err(serde::de::Error::duplicate_field("name"));
9835                            }
9836                            name__ = Some(map_.next_value()?);
9837                        }
9838                        GeneratedField::__SkipField__ => {
9839                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9840                        }
9841                    }
9842                }
9843                Ok(GetNetworkInterfaceRequest {
9844                    name: name__.unwrap_or_default(),
9845                })
9846            }
9847        }
9848        deserializer
9849            .deserialize_struct(
9850                "origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9851                FIELDS,
9852                GeneratedVisitor,
9853            )
9854    }
9855}
9856impl serde::Serialize for GetRouteRequest {
9857    #[allow(deprecated)]
9858    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9859    where
9860        S: serde::Serializer,
9861    {
9862        use serde::ser::SerializeStruct;
9863        let mut len = 0;
9864        if !self.name.is_empty() {
9865            len += 1;
9866        }
9867        let mut struct_ser = serializer
9868            .serialize_struct("origincloud.network.v1beta1.GetRouteRequest", len)?;
9869        if !self.name.is_empty() {
9870            struct_ser.serialize_field("name", &self.name)?;
9871        }
9872        struct_ser.end()
9873    }
9874}
9875impl<'de> serde::Deserialize<'de> for GetRouteRequest {
9876    #[allow(deprecated)]
9877    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9878    where
9879        D: serde::Deserializer<'de>,
9880    {
9881        const FIELDS: &[&str] = &["name"];
9882        #[allow(clippy::enum_variant_names)]
9883        enum GeneratedField {
9884            Name,
9885            __SkipField__,
9886        }
9887        impl<'de> serde::Deserialize<'de> for GeneratedField {
9888            fn deserialize<D>(
9889                deserializer: D,
9890            ) -> std::result::Result<GeneratedField, D::Error>
9891            where
9892                D: serde::Deserializer<'de>,
9893            {
9894                struct GeneratedVisitor;
9895                impl serde::de::Visitor<'_> for GeneratedVisitor {
9896                    type Value = GeneratedField;
9897                    fn expecting(
9898                        &self,
9899                        formatter: &mut std::fmt::Formatter<'_>,
9900                    ) -> std::fmt::Result {
9901                        write!(formatter, "expected one of: {:?}", & FIELDS)
9902                    }
9903                    #[allow(unused_variables)]
9904                    fn visit_str<E>(
9905                        self,
9906                        value: &str,
9907                    ) -> std::result::Result<GeneratedField, E>
9908                    where
9909                        E: serde::de::Error,
9910                    {
9911                        match value {
9912                            "name" => Ok(GeneratedField::Name),
9913                            _ => Ok(GeneratedField::__SkipField__),
9914                        }
9915                    }
9916                }
9917                deserializer.deserialize_identifier(GeneratedVisitor)
9918            }
9919        }
9920        struct GeneratedVisitor;
9921        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9922            type Value = GetRouteRequest;
9923            fn expecting(
9924                &self,
9925                formatter: &mut std::fmt::Formatter<'_>,
9926            ) -> std::fmt::Result {
9927                formatter.write_str("struct origincloud.network.v1beta1.GetRouteRequest")
9928            }
9929            fn visit_map<V>(
9930                self,
9931                mut map_: V,
9932            ) -> std::result::Result<GetRouteRequest, V::Error>
9933            where
9934                V: serde::de::MapAccess<'de>,
9935            {
9936                let mut name__ = None;
9937                while let Some(k) = map_.next_key()? {
9938                    match k {
9939                        GeneratedField::Name => {
9940                            if name__.is_some() {
9941                                return Err(serde::de::Error::duplicate_field("name"));
9942                            }
9943                            name__ = Some(map_.next_value()?);
9944                        }
9945                        GeneratedField::__SkipField__ => {
9946                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9947                        }
9948                    }
9949                }
9950                Ok(GetRouteRequest {
9951                    name: name__.unwrap_or_default(),
9952                })
9953            }
9954        }
9955        deserializer
9956            .deserialize_struct(
9957                "origincloud.network.v1beta1.GetRouteRequest",
9958                FIELDS,
9959                GeneratedVisitor,
9960            )
9961    }
9962}
9963impl serde::Serialize for GetRouteTableAssociationRequest {
9964    #[allow(deprecated)]
9965    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9966    where
9967        S: serde::Serializer,
9968    {
9969        use serde::ser::SerializeStruct;
9970        let mut len = 0;
9971        if !self.name.is_empty() {
9972            len += 1;
9973        }
9974        let mut struct_ser = serializer
9975            .serialize_struct(
9976                "origincloud.network.v1beta1.GetRouteTableAssociationRequest",
9977                len,
9978            )?;
9979        if !self.name.is_empty() {
9980            struct_ser.serialize_field("name", &self.name)?;
9981        }
9982        struct_ser.end()
9983    }
9984}
9985impl<'de> serde::Deserialize<'de> for GetRouteTableAssociationRequest {
9986    #[allow(deprecated)]
9987    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9988    where
9989        D: serde::Deserializer<'de>,
9990    {
9991        const FIELDS: &[&str] = &["name"];
9992        #[allow(clippy::enum_variant_names)]
9993        enum GeneratedField {
9994            Name,
9995            __SkipField__,
9996        }
9997        impl<'de> serde::Deserialize<'de> for GeneratedField {
9998            fn deserialize<D>(
9999                deserializer: D,
10000            ) -> std::result::Result<GeneratedField, D::Error>
10001            where
10002                D: serde::Deserializer<'de>,
10003            {
10004                struct GeneratedVisitor;
10005                impl serde::de::Visitor<'_> for GeneratedVisitor {
10006                    type Value = GeneratedField;
10007                    fn expecting(
10008                        &self,
10009                        formatter: &mut std::fmt::Formatter<'_>,
10010                    ) -> std::fmt::Result {
10011                        write!(formatter, "expected one of: {:?}", & FIELDS)
10012                    }
10013                    #[allow(unused_variables)]
10014                    fn visit_str<E>(
10015                        self,
10016                        value: &str,
10017                    ) -> std::result::Result<GeneratedField, E>
10018                    where
10019                        E: serde::de::Error,
10020                    {
10021                        match value {
10022                            "name" => Ok(GeneratedField::Name),
10023                            _ => Ok(GeneratedField::__SkipField__),
10024                        }
10025                    }
10026                }
10027                deserializer.deserialize_identifier(GeneratedVisitor)
10028            }
10029        }
10030        struct GeneratedVisitor;
10031        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10032            type Value = GetRouteTableAssociationRequest;
10033            fn expecting(
10034                &self,
10035                formatter: &mut std::fmt::Formatter<'_>,
10036            ) -> std::fmt::Result {
10037                formatter
10038                    .write_str(
10039                        "struct origincloud.network.v1beta1.GetRouteTableAssociationRequest",
10040                    )
10041            }
10042            fn visit_map<V>(
10043                self,
10044                mut map_: V,
10045            ) -> std::result::Result<GetRouteTableAssociationRequest, V::Error>
10046            where
10047                V: serde::de::MapAccess<'de>,
10048            {
10049                let mut name__ = None;
10050                while let Some(k) = map_.next_key()? {
10051                    match k {
10052                        GeneratedField::Name => {
10053                            if name__.is_some() {
10054                                return Err(serde::de::Error::duplicate_field("name"));
10055                            }
10056                            name__ = Some(map_.next_value()?);
10057                        }
10058                        GeneratedField::__SkipField__ => {
10059                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10060                        }
10061                    }
10062                }
10063                Ok(GetRouteTableAssociationRequest {
10064                    name: name__.unwrap_or_default(),
10065                })
10066            }
10067        }
10068        deserializer
10069            .deserialize_struct(
10070                "origincloud.network.v1beta1.GetRouteTableAssociationRequest",
10071                FIELDS,
10072                GeneratedVisitor,
10073            )
10074    }
10075}
10076impl serde::Serialize for GetRouteTableRequest {
10077    #[allow(deprecated)]
10078    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10079    where
10080        S: serde::Serializer,
10081    {
10082        use serde::ser::SerializeStruct;
10083        let mut len = 0;
10084        if !self.name.is_empty() {
10085            len += 1;
10086        }
10087        let mut struct_ser = serializer
10088            .serialize_struct("origincloud.network.v1beta1.GetRouteTableRequest", len)?;
10089        if !self.name.is_empty() {
10090            struct_ser.serialize_field("name", &self.name)?;
10091        }
10092        struct_ser.end()
10093    }
10094}
10095impl<'de> serde::Deserialize<'de> for GetRouteTableRequest {
10096    #[allow(deprecated)]
10097    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10098    where
10099        D: serde::Deserializer<'de>,
10100    {
10101        const FIELDS: &[&str] = &["name"];
10102        #[allow(clippy::enum_variant_names)]
10103        enum GeneratedField {
10104            Name,
10105            __SkipField__,
10106        }
10107        impl<'de> serde::Deserialize<'de> for GeneratedField {
10108            fn deserialize<D>(
10109                deserializer: D,
10110            ) -> std::result::Result<GeneratedField, D::Error>
10111            where
10112                D: serde::Deserializer<'de>,
10113            {
10114                struct GeneratedVisitor;
10115                impl serde::de::Visitor<'_> for GeneratedVisitor {
10116                    type Value = GeneratedField;
10117                    fn expecting(
10118                        &self,
10119                        formatter: &mut std::fmt::Formatter<'_>,
10120                    ) -> std::fmt::Result {
10121                        write!(formatter, "expected one of: {:?}", & FIELDS)
10122                    }
10123                    #[allow(unused_variables)]
10124                    fn visit_str<E>(
10125                        self,
10126                        value: &str,
10127                    ) -> std::result::Result<GeneratedField, E>
10128                    where
10129                        E: serde::de::Error,
10130                    {
10131                        match value {
10132                            "name" => Ok(GeneratedField::Name),
10133                            _ => Ok(GeneratedField::__SkipField__),
10134                        }
10135                    }
10136                }
10137                deserializer.deserialize_identifier(GeneratedVisitor)
10138            }
10139        }
10140        struct GeneratedVisitor;
10141        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10142            type Value = GetRouteTableRequest;
10143            fn expecting(
10144                &self,
10145                formatter: &mut std::fmt::Formatter<'_>,
10146            ) -> std::fmt::Result {
10147                formatter
10148                    .write_str("struct origincloud.network.v1beta1.GetRouteTableRequest")
10149            }
10150            fn visit_map<V>(
10151                self,
10152                mut map_: V,
10153            ) -> std::result::Result<GetRouteTableRequest, V::Error>
10154            where
10155                V: serde::de::MapAccess<'de>,
10156            {
10157                let mut name__ = None;
10158                while let Some(k) = map_.next_key()? {
10159                    match k {
10160                        GeneratedField::Name => {
10161                            if name__.is_some() {
10162                                return Err(serde::de::Error::duplicate_field("name"));
10163                            }
10164                            name__ = Some(map_.next_value()?);
10165                        }
10166                        GeneratedField::__SkipField__ => {
10167                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10168                        }
10169                    }
10170                }
10171                Ok(GetRouteTableRequest {
10172                    name: name__.unwrap_or_default(),
10173                })
10174            }
10175        }
10176        deserializer
10177            .deserialize_struct(
10178                "origincloud.network.v1beta1.GetRouteTableRequest",
10179                FIELDS,
10180                GeneratedVisitor,
10181            )
10182    }
10183}
10184impl serde::Serialize for GetSecurityGroupAssociationRequest {
10185    #[allow(deprecated)]
10186    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10187    where
10188        S: serde::Serializer,
10189    {
10190        use serde::ser::SerializeStruct;
10191        let mut len = 0;
10192        if !self.name.is_empty() {
10193            len += 1;
10194        }
10195        let mut struct_ser = serializer
10196            .serialize_struct(
10197                "origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10198                len,
10199            )?;
10200        if !self.name.is_empty() {
10201            struct_ser.serialize_field("name", &self.name)?;
10202        }
10203        struct_ser.end()
10204    }
10205}
10206impl<'de> serde::Deserialize<'de> for GetSecurityGroupAssociationRequest {
10207    #[allow(deprecated)]
10208    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10209    where
10210        D: serde::Deserializer<'de>,
10211    {
10212        const FIELDS: &[&str] = &["name"];
10213        #[allow(clippy::enum_variant_names)]
10214        enum GeneratedField {
10215            Name,
10216            __SkipField__,
10217        }
10218        impl<'de> serde::Deserialize<'de> for GeneratedField {
10219            fn deserialize<D>(
10220                deserializer: D,
10221            ) -> std::result::Result<GeneratedField, D::Error>
10222            where
10223                D: serde::Deserializer<'de>,
10224            {
10225                struct GeneratedVisitor;
10226                impl serde::de::Visitor<'_> for GeneratedVisitor {
10227                    type Value = GeneratedField;
10228                    fn expecting(
10229                        &self,
10230                        formatter: &mut std::fmt::Formatter<'_>,
10231                    ) -> std::fmt::Result {
10232                        write!(formatter, "expected one of: {:?}", & FIELDS)
10233                    }
10234                    #[allow(unused_variables)]
10235                    fn visit_str<E>(
10236                        self,
10237                        value: &str,
10238                    ) -> std::result::Result<GeneratedField, E>
10239                    where
10240                        E: serde::de::Error,
10241                    {
10242                        match value {
10243                            "name" => Ok(GeneratedField::Name),
10244                            _ => Ok(GeneratedField::__SkipField__),
10245                        }
10246                    }
10247                }
10248                deserializer.deserialize_identifier(GeneratedVisitor)
10249            }
10250        }
10251        struct GeneratedVisitor;
10252        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10253            type Value = GetSecurityGroupAssociationRequest;
10254            fn expecting(
10255                &self,
10256                formatter: &mut std::fmt::Formatter<'_>,
10257            ) -> std::fmt::Result {
10258                formatter
10259                    .write_str(
10260                        "struct origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10261                    )
10262            }
10263            fn visit_map<V>(
10264                self,
10265                mut map_: V,
10266            ) -> std::result::Result<GetSecurityGroupAssociationRequest, V::Error>
10267            where
10268                V: serde::de::MapAccess<'de>,
10269            {
10270                let mut name__ = None;
10271                while let Some(k) = map_.next_key()? {
10272                    match k {
10273                        GeneratedField::Name => {
10274                            if name__.is_some() {
10275                                return Err(serde::de::Error::duplicate_field("name"));
10276                            }
10277                            name__ = Some(map_.next_value()?);
10278                        }
10279                        GeneratedField::__SkipField__ => {
10280                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10281                        }
10282                    }
10283                }
10284                Ok(GetSecurityGroupAssociationRequest {
10285                    name: name__.unwrap_or_default(),
10286                })
10287            }
10288        }
10289        deserializer
10290            .deserialize_struct(
10291                "origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10292                FIELDS,
10293                GeneratedVisitor,
10294            )
10295    }
10296}
10297impl serde::Serialize for GetSecurityGroupRequest {
10298    #[allow(deprecated)]
10299    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10300    where
10301        S: serde::Serializer,
10302    {
10303        use serde::ser::SerializeStruct;
10304        let mut len = 0;
10305        if !self.name.is_empty() {
10306            len += 1;
10307        }
10308        let mut struct_ser = serializer
10309            .serialize_struct(
10310                "origincloud.network.v1beta1.GetSecurityGroupRequest",
10311                len,
10312            )?;
10313        if !self.name.is_empty() {
10314            struct_ser.serialize_field("name", &self.name)?;
10315        }
10316        struct_ser.end()
10317    }
10318}
10319impl<'de> serde::Deserialize<'de> for GetSecurityGroupRequest {
10320    #[allow(deprecated)]
10321    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10322    where
10323        D: serde::Deserializer<'de>,
10324    {
10325        const FIELDS: &[&str] = &["name"];
10326        #[allow(clippy::enum_variant_names)]
10327        enum GeneratedField {
10328            Name,
10329            __SkipField__,
10330        }
10331        impl<'de> serde::Deserialize<'de> for GeneratedField {
10332            fn deserialize<D>(
10333                deserializer: D,
10334            ) -> std::result::Result<GeneratedField, D::Error>
10335            where
10336                D: serde::Deserializer<'de>,
10337            {
10338                struct GeneratedVisitor;
10339                impl serde::de::Visitor<'_> for GeneratedVisitor {
10340                    type Value = GeneratedField;
10341                    fn expecting(
10342                        &self,
10343                        formatter: &mut std::fmt::Formatter<'_>,
10344                    ) -> std::fmt::Result {
10345                        write!(formatter, "expected one of: {:?}", & FIELDS)
10346                    }
10347                    #[allow(unused_variables)]
10348                    fn visit_str<E>(
10349                        self,
10350                        value: &str,
10351                    ) -> std::result::Result<GeneratedField, E>
10352                    where
10353                        E: serde::de::Error,
10354                    {
10355                        match value {
10356                            "name" => Ok(GeneratedField::Name),
10357                            _ => Ok(GeneratedField::__SkipField__),
10358                        }
10359                    }
10360                }
10361                deserializer.deserialize_identifier(GeneratedVisitor)
10362            }
10363        }
10364        struct GeneratedVisitor;
10365        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10366            type Value = GetSecurityGroupRequest;
10367            fn expecting(
10368                &self,
10369                formatter: &mut std::fmt::Formatter<'_>,
10370            ) -> std::fmt::Result {
10371                formatter
10372                    .write_str(
10373                        "struct origincloud.network.v1beta1.GetSecurityGroupRequest",
10374                    )
10375            }
10376            fn visit_map<V>(
10377                self,
10378                mut map_: V,
10379            ) -> std::result::Result<GetSecurityGroupRequest, V::Error>
10380            where
10381                V: serde::de::MapAccess<'de>,
10382            {
10383                let mut name__ = None;
10384                while let Some(k) = map_.next_key()? {
10385                    match k {
10386                        GeneratedField::Name => {
10387                            if name__.is_some() {
10388                                return Err(serde::de::Error::duplicate_field("name"));
10389                            }
10390                            name__ = Some(map_.next_value()?);
10391                        }
10392                        GeneratedField::__SkipField__ => {
10393                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10394                        }
10395                    }
10396                }
10397                Ok(GetSecurityGroupRequest {
10398                    name: name__.unwrap_or_default(),
10399                })
10400            }
10401        }
10402        deserializer
10403            .deserialize_struct(
10404                "origincloud.network.v1beta1.GetSecurityGroupRequest",
10405                FIELDS,
10406                GeneratedVisitor,
10407            )
10408    }
10409}
10410impl serde::Serialize for GetSecurityGroupRuleRequest {
10411    #[allow(deprecated)]
10412    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10413    where
10414        S: serde::Serializer,
10415    {
10416        use serde::ser::SerializeStruct;
10417        let mut len = 0;
10418        if !self.name.is_empty() {
10419            len += 1;
10420        }
10421        let mut struct_ser = serializer
10422            .serialize_struct(
10423                "origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10424                len,
10425            )?;
10426        if !self.name.is_empty() {
10427            struct_ser.serialize_field("name", &self.name)?;
10428        }
10429        struct_ser.end()
10430    }
10431}
10432impl<'de> serde::Deserialize<'de> for GetSecurityGroupRuleRequest {
10433    #[allow(deprecated)]
10434    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10435    where
10436        D: serde::Deserializer<'de>,
10437    {
10438        const FIELDS: &[&str] = &["name"];
10439        #[allow(clippy::enum_variant_names)]
10440        enum GeneratedField {
10441            Name,
10442            __SkipField__,
10443        }
10444        impl<'de> serde::Deserialize<'de> for GeneratedField {
10445            fn deserialize<D>(
10446                deserializer: D,
10447            ) -> std::result::Result<GeneratedField, D::Error>
10448            where
10449                D: serde::Deserializer<'de>,
10450            {
10451                struct GeneratedVisitor;
10452                impl serde::de::Visitor<'_> for GeneratedVisitor {
10453                    type Value = GeneratedField;
10454                    fn expecting(
10455                        &self,
10456                        formatter: &mut std::fmt::Formatter<'_>,
10457                    ) -> std::fmt::Result {
10458                        write!(formatter, "expected one of: {:?}", & FIELDS)
10459                    }
10460                    #[allow(unused_variables)]
10461                    fn visit_str<E>(
10462                        self,
10463                        value: &str,
10464                    ) -> std::result::Result<GeneratedField, E>
10465                    where
10466                        E: serde::de::Error,
10467                    {
10468                        match value {
10469                            "name" => Ok(GeneratedField::Name),
10470                            _ => Ok(GeneratedField::__SkipField__),
10471                        }
10472                    }
10473                }
10474                deserializer.deserialize_identifier(GeneratedVisitor)
10475            }
10476        }
10477        struct GeneratedVisitor;
10478        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10479            type Value = GetSecurityGroupRuleRequest;
10480            fn expecting(
10481                &self,
10482                formatter: &mut std::fmt::Formatter<'_>,
10483            ) -> std::fmt::Result {
10484                formatter
10485                    .write_str(
10486                        "struct origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10487                    )
10488            }
10489            fn visit_map<V>(
10490                self,
10491                mut map_: V,
10492            ) -> std::result::Result<GetSecurityGroupRuleRequest, V::Error>
10493            where
10494                V: serde::de::MapAccess<'de>,
10495            {
10496                let mut name__ = None;
10497                while let Some(k) = map_.next_key()? {
10498                    match k {
10499                        GeneratedField::Name => {
10500                            if name__.is_some() {
10501                                return Err(serde::de::Error::duplicate_field("name"));
10502                            }
10503                            name__ = Some(map_.next_value()?);
10504                        }
10505                        GeneratedField::__SkipField__ => {
10506                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10507                        }
10508                    }
10509                }
10510                Ok(GetSecurityGroupRuleRequest {
10511                    name: name__.unwrap_or_default(),
10512                })
10513            }
10514        }
10515        deserializer
10516            .deserialize_struct(
10517                "origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10518                FIELDS,
10519                GeneratedVisitor,
10520            )
10521    }
10522}
10523impl serde::Serialize for GetSubnetRequest {
10524    #[allow(deprecated)]
10525    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10526    where
10527        S: serde::Serializer,
10528    {
10529        use serde::ser::SerializeStruct;
10530        let mut len = 0;
10531        if !self.name.is_empty() {
10532            len += 1;
10533        }
10534        let mut struct_ser = serializer
10535            .serialize_struct("origincloud.network.v1beta1.GetSubnetRequest", len)?;
10536        if !self.name.is_empty() {
10537            struct_ser.serialize_field("name", &self.name)?;
10538        }
10539        struct_ser.end()
10540    }
10541}
10542impl<'de> serde::Deserialize<'de> for GetSubnetRequest {
10543    #[allow(deprecated)]
10544    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10545    where
10546        D: serde::Deserializer<'de>,
10547    {
10548        const FIELDS: &[&str] = &["name"];
10549        #[allow(clippy::enum_variant_names)]
10550        enum GeneratedField {
10551            Name,
10552            __SkipField__,
10553        }
10554        impl<'de> serde::Deserialize<'de> for GeneratedField {
10555            fn deserialize<D>(
10556                deserializer: D,
10557            ) -> std::result::Result<GeneratedField, D::Error>
10558            where
10559                D: serde::Deserializer<'de>,
10560            {
10561                struct GeneratedVisitor;
10562                impl serde::de::Visitor<'_> for GeneratedVisitor {
10563                    type Value = GeneratedField;
10564                    fn expecting(
10565                        &self,
10566                        formatter: &mut std::fmt::Formatter<'_>,
10567                    ) -> std::fmt::Result {
10568                        write!(formatter, "expected one of: {:?}", & FIELDS)
10569                    }
10570                    #[allow(unused_variables)]
10571                    fn visit_str<E>(
10572                        self,
10573                        value: &str,
10574                    ) -> std::result::Result<GeneratedField, E>
10575                    where
10576                        E: serde::de::Error,
10577                    {
10578                        match value {
10579                            "name" => Ok(GeneratedField::Name),
10580                            _ => Ok(GeneratedField::__SkipField__),
10581                        }
10582                    }
10583                }
10584                deserializer.deserialize_identifier(GeneratedVisitor)
10585            }
10586        }
10587        struct GeneratedVisitor;
10588        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10589            type Value = GetSubnetRequest;
10590            fn expecting(
10591                &self,
10592                formatter: &mut std::fmt::Formatter<'_>,
10593            ) -> std::fmt::Result {
10594                formatter
10595                    .write_str("struct origincloud.network.v1beta1.GetSubnetRequest")
10596            }
10597            fn visit_map<V>(
10598                self,
10599                mut map_: V,
10600            ) -> std::result::Result<GetSubnetRequest, V::Error>
10601            where
10602                V: serde::de::MapAccess<'de>,
10603            {
10604                let mut name__ = None;
10605                while let Some(k) = map_.next_key()? {
10606                    match k {
10607                        GeneratedField::Name => {
10608                            if name__.is_some() {
10609                                return Err(serde::de::Error::duplicate_field("name"));
10610                            }
10611                            name__ = Some(map_.next_value()?);
10612                        }
10613                        GeneratedField::__SkipField__ => {
10614                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10615                        }
10616                    }
10617                }
10618                Ok(GetSubnetRequest {
10619                    name: name__.unwrap_or_default(),
10620                })
10621            }
10622        }
10623        deserializer
10624            .deserialize_struct(
10625                "origincloud.network.v1beta1.GetSubnetRequest",
10626                FIELDS,
10627                GeneratedVisitor,
10628            )
10629    }
10630}
10631impl serde::Serialize for GetVpcRequest {
10632    #[allow(deprecated)]
10633    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10634    where
10635        S: serde::Serializer,
10636    {
10637        use serde::ser::SerializeStruct;
10638        let mut len = 0;
10639        if !self.name.is_empty() {
10640            len += 1;
10641        }
10642        let mut struct_ser = serializer
10643            .serialize_struct("origincloud.network.v1beta1.GetVpcRequest", len)?;
10644        if !self.name.is_empty() {
10645            struct_ser.serialize_field("name", &self.name)?;
10646        }
10647        struct_ser.end()
10648    }
10649}
10650impl<'de> serde::Deserialize<'de> for GetVpcRequest {
10651    #[allow(deprecated)]
10652    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10653    where
10654        D: serde::Deserializer<'de>,
10655    {
10656        const FIELDS: &[&str] = &["name"];
10657        #[allow(clippy::enum_variant_names)]
10658        enum GeneratedField {
10659            Name,
10660            __SkipField__,
10661        }
10662        impl<'de> serde::Deserialize<'de> for GeneratedField {
10663            fn deserialize<D>(
10664                deserializer: D,
10665            ) -> std::result::Result<GeneratedField, D::Error>
10666            where
10667                D: serde::Deserializer<'de>,
10668            {
10669                struct GeneratedVisitor;
10670                impl serde::de::Visitor<'_> for GeneratedVisitor {
10671                    type Value = GeneratedField;
10672                    fn expecting(
10673                        &self,
10674                        formatter: &mut std::fmt::Formatter<'_>,
10675                    ) -> std::fmt::Result {
10676                        write!(formatter, "expected one of: {:?}", & FIELDS)
10677                    }
10678                    #[allow(unused_variables)]
10679                    fn visit_str<E>(
10680                        self,
10681                        value: &str,
10682                    ) -> std::result::Result<GeneratedField, E>
10683                    where
10684                        E: serde::de::Error,
10685                    {
10686                        match value {
10687                            "name" => Ok(GeneratedField::Name),
10688                            _ => Ok(GeneratedField::__SkipField__),
10689                        }
10690                    }
10691                }
10692                deserializer.deserialize_identifier(GeneratedVisitor)
10693            }
10694        }
10695        struct GeneratedVisitor;
10696        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10697            type Value = GetVpcRequest;
10698            fn expecting(
10699                &self,
10700                formatter: &mut std::fmt::Formatter<'_>,
10701            ) -> std::fmt::Result {
10702                formatter.write_str("struct origincloud.network.v1beta1.GetVpcRequest")
10703            }
10704            fn visit_map<V>(
10705                self,
10706                mut map_: V,
10707            ) -> std::result::Result<GetVpcRequest, V::Error>
10708            where
10709                V: serde::de::MapAccess<'de>,
10710            {
10711                let mut name__ = None;
10712                while let Some(k) = map_.next_key()? {
10713                    match k {
10714                        GeneratedField::Name => {
10715                            if name__.is_some() {
10716                                return Err(serde::de::Error::duplicate_field("name"));
10717                            }
10718                            name__ = Some(map_.next_value()?);
10719                        }
10720                        GeneratedField::__SkipField__ => {
10721                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10722                        }
10723                    }
10724                }
10725                Ok(GetVpcRequest {
10726                    name: name__.unwrap_or_default(),
10727                })
10728            }
10729        }
10730        deserializer
10731            .deserialize_struct(
10732                "origincloud.network.v1beta1.GetVpcRequest",
10733                FIELDS,
10734                GeneratedVisitor,
10735            )
10736    }
10737}
10738impl serde::Serialize for InternetGateway {
10739    #[allow(deprecated)]
10740    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10741    where
10742        S: serde::Serializer,
10743    {
10744        use serde::ser::SerializeStruct;
10745        let mut len = 0;
10746        if !self.name.is_empty() {
10747            len += 1;
10748        }
10749        if !self.urn.is_empty() {
10750            len += 1;
10751        }
10752        if !self.vpc.is_empty() {
10753            len += 1;
10754        }
10755        if self.create_time.is_some() {
10756            len += 1;
10757        }
10758        if !self.creator.is_empty() {
10759            len += 1;
10760        }
10761        if !self.tags.is_empty() {
10762            len += 1;
10763        }
10764        let mut struct_ser = serializer
10765            .serialize_struct("origincloud.network.v1beta1.InternetGateway", len)?;
10766        if !self.name.is_empty() {
10767            struct_ser.serialize_field("name", &self.name)?;
10768        }
10769        if !self.urn.is_empty() {
10770            struct_ser.serialize_field("urn", &self.urn)?;
10771        }
10772        if !self.vpc.is_empty() {
10773            struct_ser.serialize_field("vpc", &self.vpc)?;
10774        }
10775        if let Some(v) = self.create_time.as_ref() {
10776            struct_ser.serialize_field("createTime", v)?;
10777        }
10778        if !self.creator.is_empty() {
10779            struct_ser.serialize_field("creator", &self.creator)?;
10780        }
10781        if !self.tags.is_empty() {
10782            struct_ser.serialize_field("tags", &self.tags)?;
10783        }
10784        struct_ser.end()
10785    }
10786}
10787impl<'de> serde::Deserialize<'de> for InternetGateway {
10788    #[allow(deprecated)]
10789    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10790    where
10791        D: serde::Deserializer<'de>,
10792    {
10793        const FIELDS: &[&str] = &[
10794            "name",
10795            "urn",
10796            "vpc",
10797            "create_time",
10798            "createTime",
10799            "creator",
10800            "tags",
10801        ];
10802        #[allow(clippy::enum_variant_names)]
10803        enum GeneratedField {
10804            Name,
10805            Urn,
10806            Vpc,
10807            CreateTime,
10808            Creator,
10809            Tags,
10810            __SkipField__,
10811        }
10812        impl<'de> serde::Deserialize<'de> for GeneratedField {
10813            fn deserialize<D>(
10814                deserializer: D,
10815            ) -> std::result::Result<GeneratedField, D::Error>
10816            where
10817                D: serde::Deserializer<'de>,
10818            {
10819                struct GeneratedVisitor;
10820                impl serde::de::Visitor<'_> for GeneratedVisitor {
10821                    type Value = GeneratedField;
10822                    fn expecting(
10823                        &self,
10824                        formatter: &mut std::fmt::Formatter<'_>,
10825                    ) -> std::fmt::Result {
10826                        write!(formatter, "expected one of: {:?}", & FIELDS)
10827                    }
10828                    #[allow(unused_variables)]
10829                    fn visit_str<E>(
10830                        self,
10831                        value: &str,
10832                    ) -> std::result::Result<GeneratedField, E>
10833                    where
10834                        E: serde::de::Error,
10835                    {
10836                        match value {
10837                            "name" => Ok(GeneratedField::Name),
10838                            "urn" => Ok(GeneratedField::Urn),
10839                            "vpc" => Ok(GeneratedField::Vpc),
10840                            "createTime" | "create_time" => {
10841                                Ok(GeneratedField::CreateTime)
10842                            }
10843                            "creator" => Ok(GeneratedField::Creator),
10844                            "tags" => Ok(GeneratedField::Tags),
10845                            _ => Ok(GeneratedField::__SkipField__),
10846                        }
10847                    }
10848                }
10849                deserializer.deserialize_identifier(GeneratedVisitor)
10850            }
10851        }
10852        struct GeneratedVisitor;
10853        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10854            type Value = InternetGateway;
10855            fn expecting(
10856                &self,
10857                formatter: &mut std::fmt::Formatter<'_>,
10858            ) -> std::fmt::Result {
10859                formatter.write_str("struct origincloud.network.v1beta1.InternetGateway")
10860            }
10861            fn visit_map<V>(
10862                self,
10863                mut map_: V,
10864            ) -> std::result::Result<InternetGateway, V::Error>
10865            where
10866                V: serde::de::MapAccess<'de>,
10867            {
10868                let mut name__ = None;
10869                let mut urn__ = None;
10870                let mut vpc__ = None;
10871                let mut create_time__ = None;
10872                let mut creator__ = None;
10873                let mut tags__ = None;
10874                while let Some(k) = map_.next_key()? {
10875                    match k {
10876                        GeneratedField::Name => {
10877                            if name__.is_some() {
10878                                return Err(serde::de::Error::duplicate_field("name"));
10879                            }
10880                            name__ = Some(map_.next_value()?);
10881                        }
10882                        GeneratedField::Urn => {
10883                            if urn__.is_some() {
10884                                return Err(serde::de::Error::duplicate_field("urn"));
10885                            }
10886                            urn__ = Some(map_.next_value()?);
10887                        }
10888                        GeneratedField::Vpc => {
10889                            if vpc__.is_some() {
10890                                return Err(serde::de::Error::duplicate_field("vpc"));
10891                            }
10892                            vpc__ = Some(map_.next_value()?);
10893                        }
10894                        GeneratedField::CreateTime => {
10895                            if create_time__.is_some() {
10896                                return Err(serde::de::Error::duplicate_field("createTime"));
10897                            }
10898                            create_time__ = map_.next_value()?;
10899                        }
10900                        GeneratedField::Creator => {
10901                            if creator__.is_some() {
10902                                return Err(serde::de::Error::duplicate_field("creator"));
10903                            }
10904                            creator__ = Some(map_.next_value()?);
10905                        }
10906                        GeneratedField::Tags => {
10907                            if tags__.is_some() {
10908                                return Err(serde::de::Error::duplicate_field("tags"));
10909                            }
10910                            tags__ = Some(
10911                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
10912                            );
10913                        }
10914                        GeneratedField::__SkipField__ => {
10915                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10916                        }
10917                    }
10918                }
10919                Ok(InternetGateway {
10920                    name: name__.unwrap_or_default(),
10921                    urn: urn__.unwrap_or_default(),
10922                    vpc: vpc__.unwrap_or_default(),
10923                    create_time: create_time__,
10924                    creator: creator__.unwrap_or_default(),
10925                    tags: tags__.unwrap_or_default(),
10926                })
10927            }
10928        }
10929        deserializer
10930            .deserialize_struct(
10931                "origincloud.network.v1beta1.InternetGateway",
10932                FIELDS,
10933                GeneratedVisitor,
10934            )
10935    }
10936}
10937impl serde::Serialize for ListAclAssociationsRequest {
10938    #[allow(deprecated)]
10939    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10940    where
10941        S: serde::Serializer,
10942    {
10943        use serde::ser::SerializeStruct;
10944        let mut len = 0;
10945        if !self.parent.is_empty() {
10946            len += 1;
10947        }
10948        if self.page_size != 0 {
10949            len += 1;
10950        }
10951        if !self.page_token.is_empty() {
10952            len += 1;
10953        }
10954        let mut struct_ser = serializer
10955            .serialize_struct(
10956                "origincloud.network.v1beta1.ListAclAssociationsRequest",
10957                len,
10958            )?;
10959        if !self.parent.is_empty() {
10960            struct_ser.serialize_field("parent", &self.parent)?;
10961        }
10962        if self.page_size != 0 {
10963            struct_ser.serialize_field("pageSize", &self.page_size)?;
10964        }
10965        if !self.page_token.is_empty() {
10966            struct_ser.serialize_field("pageToken", &self.page_token)?;
10967        }
10968        struct_ser.end()
10969    }
10970}
10971impl<'de> serde::Deserialize<'de> for ListAclAssociationsRequest {
10972    #[allow(deprecated)]
10973    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10974    where
10975        D: serde::Deserializer<'de>,
10976    {
10977        const FIELDS: &[&str] = &[
10978            "parent",
10979            "page_size",
10980            "pageSize",
10981            "page_token",
10982            "pageToken",
10983        ];
10984        #[allow(clippy::enum_variant_names)]
10985        enum GeneratedField {
10986            Parent,
10987            PageSize,
10988            PageToken,
10989            __SkipField__,
10990        }
10991        impl<'de> serde::Deserialize<'de> for GeneratedField {
10992            fn deserialize<D>(
10993                deserializer: D,
10994            ) -> std::result::Result<GeneratedField, D::Error>
10995            where
10996                D: serde::Deserializer<'de>,
10997            {
10998                struct GeneratedVisitor;
10999                impl serde::de::Visitor<'_> for GeneratedVisitor {
11000                    type Value = GeneratedField;
11001                    fn expecting(
11002                        &self,
11003                        formatter: &mut std::fmt::Formatter<'_>,
11004                    ) -> std::fmt::Result {
11005                        write!(formatter, "expected one of: {:?}", & FIELDS)
11006                    }
11007                    #[allow(unused_variables)]
11008                    fn visit_str<E>(
11009                        self,
11010                        value: &str,
11011                    ) -> std::result::Result<GeneratedField, E>
11012                    where
11013                        E: serde::de::Error,
11014                    {
11015                        match value {
11016                            "parent" => Ok(GeneratedField::Parent),
11017                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11018                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11019                            _ => Ok(GeneratedField::__SkipField__),
11020                        }
11021                    }
11022                }
11023                deserializer.deserialize_identifier(GeneratedVisitor)
11024            }
11025        }
11026        struct GeneratedVisitor;
11027        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11028            type Value = ListAclAssociationsRequest;
11029            fn expecting(
11030                &self,
11031                formatter: &mut std::fmt::Formatter<'_>,
11032            ) -> std::fmt::Result {
11033                formatter
11034                    .write_str(
11035                        "struct origincloud.network.v1beta1.ListAclAssociationsRequest",
11036                    )
11037            }
11038            fn visit_map<V>(
11039                self,
11040                mut map_: V,
11041            ) -> std::result::Result<ListAclAssociationsRequest, V::Error>
11042            where
11043                V: serde::de::MapAccess<'de>,
11044            {
11045                let mut parent__ = None;
11046                let mut page_size__ = None;
11047                let mut page_token__ = None;
11048                while let Some(k) = map_.next_key()? {
11049                    match k {
11050                        GeneratedField::Parent => {
11051                            if parent__.is_some() {
11052                                return Err(serde::de::Error::duplicate_field("parent"));
11053                            }
11054                            parent__ = Some(map_.next_value()?);
11055                        }
11056                        GeneratedField::PageSize => {
11057                            if page_size__.is_some() {
11058                                return Err(serde::de::Error::duplicate_field("pageSize"));
11059                            }
11060                            page_size__ = Some(
11061                                map_
11062                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11063                                    .0,
11064                            );
11065                        }
11066                        GeneratedField::PageToken => {
11067                            if page_token__.is_some() {
11068                                return Err(serde::de::Error::duplicate_field("pageToken"));
11069                            }
11070                            page_token__ = Some(map_.next_value()?);
11071                        }
11072                        GeneratedField::__SkipField__ => {
11073                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11074                        }
11075                    }
11076                }
11077                Ok(ListAclAssociationsRequest {
11078                    parent: parent__.unwrap_or_default(),
11079                    page_size: page_size__.unwrap_or_default(),
11080                    page_token: page_token__.unwrap_or_default(),
11081                })
11082            }
11083        }
11084        deserializer
11085            .deserialize_struct(
11086                "origincloud.network.v1beta1.ListAclAssociationsRequest",
11087                FIELDS,
11088                GeneratedVisitor,
11089            )
11090    }
11091}
11092impl serde::Serialize for ListAclAssociationsResponse {
11093    #[allow(deprecated)]
11094    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11095    where
11096        S: serde::Serializer,
11097    {
11098        use serde::ser::SerializeStruct;
11099        let mut len = 0;
11100        if !self.acl_associations.is_empty() {
11101            len += 1;
11102        }
11103        if !self.next_page_token.is_empty() {
11104            len += 1;
11105        }
11106        let mut struct_ser = serializer
11107            .serialize_struct(
11108                "origincloud.network.v1beta1.ListAclAssociationsResponse",
11109                len,
11110            )?;
11111        if !self.acl_associations.is_empty() {
11112            struct_ser.serialize_field("aclAssociations", &self.acl_associations)?;
11113        }
11114        if !self.next_page_token.is_empty() {
11115            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11116        }
11117        struct_ser.end()
11118    }
11119}
11120impl<'de> serde::Deserialize<'de> for ListAclAssociationsResponse {
11121    #[allow(deprecated)]
11122    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11123    where
11124        D: serde::Deserializer<'de>,
11125    {
11126        const FIELDS: &[&str] = &[
11127            "acl_associations",
11128            "aclAssociations",
11129            "next_page_token",
11130            "nextPageToken",
11131        ];
11132        #[allow(clippy::enum_variant_names)]
11133        enum GeneratedField {
11134            AclAssociations,
11135            NextPageToken,
11136            __SkipField__,
11137        }
11138        impl<'de> serde::Deserialize<'de> for GeneratedField {
11139            fn deserialize<D>(
11140                deserializer: D,
11141            ) -> std::result::Result<GeneratedField, D::Error>
11142            where
11143                D: serde::Deserializer<'de>,
11144            {
11145                struct GeneratedVisitor;
11146                impl serde::de::Visitor<'_> for GeneratedVisitor {
11147                    type Value = GeneratedField;
11148                    fn expecting(
11149                        &self,
11150                        formatter: &mut std::fmt::Formatter<'_>,
11151                    ) -> std::fmt::Result {
11152                        write!(formatter, "expected one of: {:?}", & FIELDS)
11153                    }
11154                    #[allow(unused_variables)]
11155                    fn visit_str<E>(
11156                        self,
11157                        value: &str,
11158                    ) -> std::result::Result<GeneratedField, E>
11159                    where
11160                        E: serde::de::Error,
11161                    {
11162                        match value {
11163                            "aclAssociations" | "acl_associations" => {
11164                                Ok(GeneratedField::AclAssociations)
11165                            }
11166                            "nextPageToken" | "next_page_token" => {
11167                                Ok(GeneratedField::NextPageToken)
11168                            }
11169                            _ => Ok(GeneratedField::__SkipField__),
11170                        }
11171                    }
11172                }
11173                deserializer.deserialize_identifier(GeneratedVisitor)
11174            }
11175        }
11176        struct GeneratedVisitor;
11177        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11178            type Value = ListAclAssociationsResponse;
11179            fn expecting(
11180                &self,
11181                formatter: &mut std::fmt::Formatter<'_>,
11182            ) -> std::fmt::Result {
11183                formatter
11184                    .write_str(
11185                        "struct origincloud.network.v1beta1.ListAclAssociationsResponse",
11186                    )
11187            }
11188            fn visit_map<V>(
11189                self,
11190                mut map_: V,
11191            ) -> std::result::Result<ListAclAssociationsResponse, V::Error>
11192            where
11193                V: serde::de::MapAccess<'de>,
11194            {
11195                let mut acl_associations__ = None;
11196                let mut next_page_token__ = None;
11197                while let Some(k) = map_.next_key()? {
11198                    match k {
11199                        GeneratedField::AclAssociations => {
11200                            if acl_associations__.is_some() {
11201                                return Err(
11202                                    serde::de::Error::duplicate_field("aclAssociations"),
11203                                );
11204                            }
11205                            acl_associations__ = Some(map_.next_value()?);
11206                        }
11207                        GeneratedField::NextPageToken => {
11208                            if next_page_token__.is_some() {
11209                                return Err(
11210                                    serde::de::Error::duplicate_field("nextPageToken"),
11211                                );
11212                            }
11213                            next_page_token__ = Some(map_.next_value()?);
11214                        }
11215                        GeneratedField::__SkipField__ => {
11216                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11217                        }
11218                    }
11219                }
11220                Ok(ListAclAssociationsResponse {
11221                    acl_associations: acl_associations__.unwrap_or_default(),
11222                    next_page_token: next_page_token__.unwrap_or_default(),
11223                })
11224            }
11225        }
11226        deserializer
11227            .deserialize_struct(
11228                "origincloud.network.v1beta1.ListAclAssociationsResponse",
11229                FIELDS,
11230                GeneratedVisitor,
11231            )
11232    }
11233}
11234impl serde::Serialize for ListAclRulesRequest {
11235    #[allow(deprecated)]
11236    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11237    where
11238        S: serde::Serializer,
11239    {
11240        use serde::ser::SerializeStruct;
11241        let mut len = 0;
11242        if !self.parent.is_empty() {
11243            len += 1;
11244        }
11245        if self.page_size != 0 {
11246            len += 1;
11247        }
11248        if !self.page_token.is_empty() {
11249            len += 1;
11250        }
11251        let mut struct_ser = serializer
11252            .serialize_struct("origincloud.network.v1beta1.ListAclRulesRequest", len)?;
11253        if !self.parent.is_empty() {
11254            struct_ser.serialize_field("parent", &self.parent)?;
11255        }
11256        if self.page_size != 0 {
11257            struct_ser.serialize_field("pageSize", &self.page_size)?;
11258        }
11259        if !self.page_token.is_empty() {
11260            struct_ser.serialize_field("pageToken", &self.page_token)?;
11261        }
11262        struct_ser.end()
11263    }
11264}
11265impl<'de> serde::Deserialize<'de> for ListAclRulesRequest {
11266    #[allow(deprecated)]
11267    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11268    where
11269        D: serde::Deserializer<'de>,
11270    {
11271        const FIELDS: &[&str] = &[
11272            "parent",
11273            "page_size",
11274            "pageSize",
11275            "page_token",
11276            "pageToken",
11277        ];
11278        #[allow(clippy::enum_variant_names)]
11279        enum GeneratedField {
11280            Parent,
11281            PageSize,
11282            PageToken,
11283            __SkipField__,
11284        }
11285        impl<'de> serde::Deserialize<'de> for GeneratedField {
11286            fn deserialize<D>(
11287                deserializer: D,
11288            ) -> std::result::Result<GeneratedField, D::Error>
11289            where
11290                D: serde::Deserializer<'de>,
11291            {
11292                struct GeneratedVisitor;
11293                impl serde::de::Visitor<'_> for GeneratedVisitor {
11294                    type Value = GeneratedField;
11295                    fn expecting(
11296                        &self,
11297                        formatter: &mut std::fmt::Formatter<'_>,
11298                    ) -> std::fmt::Result {
11299                        write!(formatter, "expected one of: {:?}", & FIELDS)
11300                    }
11301                    #[allow(unused_variables)]
11302                    fn visit_str<E>(
11303                        self,
11304                        value: &str,
11305                    ) -> std::result::Result<GeneratedField, E>
11306                    where
11307                        E: serde::de::Error,
11308                    {
11309                        match value {
11310                            "parent" => Ok(GeneratedField::Parent),
11311                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11312                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11313                            _ => Ok(GeneratedField::__SkipField__),
11314                        }
11315                    }
11316                }
11317                deserializer.deserialize_identifier(GeneratedVisitor)
11318            }
11319        }
11320        struct GeneratedVisitor;
11321        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11322            type Value = ListAclRulesRequest;
11323            fn expecting(
11324                &self,
11325                formatter: &mut std::fmt::Formatter<'_>,
11326            ) -> std::fmt::Result {
11327                formatter
11328                    .write_str("struct origincloud.network.v1beta1.ListAclRulesRequest")
11329            }
11330            fn visit_map<V>(
11331                self,
11332                mut map_: V,
11333            ) -> std::result::Result<ListAclRulesRequest, V::Error>
11334            where
11335                V: serde::de::MapAccess<'de>,
11336            {
11337                let mut parent__ = None;
11338                let mut page_size__ = None;
11339                let mut page_token__ = None;
11340                while let Some(k) = map_.next_key()? {
11341                    match k {
11342                        GeneratedField::Parent => {
11343                            if parent__.is_some() {
11344                                return Err(serde::de::Error::duplicate_field("parent"));
11345                            }
11346                            parent__ = Some(map_.next_value()?);
11347                        }
11348                        GeneratedField::PageSize => {
11349                            if page_size__.is_some() {
11350                                return Err(serde::de::Error::duplicate_field("pageSize"));
11351                            }
11352                            page_size__ = Some(
11353                                map_
11354                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11355                                    .0,
11356                            );
11357                        }
11358                        GeneratedField::PageToken => {
11359                            if page_token__.is_some() {
11360                                return Err(serde::de::Error::duplicate_field("pageToken"));
11361                            }
11362                            page_token__ = Some(map_.next_value()?);
11363                        }
11364                        GeneratedField::__SkipField__ => {
11365                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11366                        }
11367                    }
11368                }
11369                Ok(ListAclRulesRequest {
11370                    parent: parent__.unwrap_or_default(),
11371                    page_size: page_size__.unwrap_or_default(),
11372                    page_token: page_token__.unwrap_or_default(),
11373                })
11374            }
11375        }
11376        deserializer
11377            .deserialize_struct(
11378                "origincloud.network.v1beta1.ListAclRulesRequest",
11379                FIELDS,
11380                GeneratedVisitor,
11381            )
11382    }
11383}
11384impl serde::Serialize for ListAclRulesResponse {
11385    #[allow(deprecated)]
11386    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11387    where
11388        S: serde::Serializer,
11389    {
11390        use serde::ser::SerializeStruct;
11391        let mut len = 0;
11392        if !self.acl_rules.is_empty() {
11393            len += 1;
11394        }
11395        if !self.next_page_token.is_empty() {
11396            len += 1;
11397        }
11398        let mut struct_ser = serializer
11399            .serialize_struct("origincloud.network.v1beta1.ListAclRulesResponse", len)?;
11400        if !self.acl_rules.is_empty() {
11401            struct_ser.serialize_field("aclRules", &self.acl_rules)?;
11402        }
11403        if !self.next_page_token.is_empty() {
11404            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11405        }
11406        struct_ser.end()
11407    }
11408}
11409impl<'de> serde::Deserialize<'de> for ListAclRulesResponse {
11410    #[allow(deprecated)]
11411    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11412    where
11413        D: serde::Deserializer<'de>,
11414    {
11415        const FIELDS: &[&str] = &[
11416            "acl_rules",
11417            "aclRules",
11418            "next_page_token",
11419            "nextPageToken",
11420        ];
11421        #[allow(clippy::enum_variant_names)]
11422        enum GeneratedField {
11423            AclRules,
11424            NextPageToken,
11425            __SkipField__,
11426        }
11427        impl<'de> serde::Deserialize<'de> for GeneratedField {
11428            fn deserialize<D>(
11429                deserializer: D,
11430            ) -> std::result::Result<GeneratedField, D::Error>
11431            where
11432                D: serde::Deserializer<'de>,
11433            {
11434                struct GeneratedVisitor;
11435                impl serde::de::Visitor<'_> for GeneratedVisitor {
11436                    type Value = GeneratedField;
11437                    fn expecting(
11438                        &self,
11439                        formatter: &mut std::fmt::Formatter<'_>,
11440                    ) -> std::fmt::Result {
11441                        write!(formatter, "expected one of: {:?}", & FIELDS)
11442                    }
11443                    #[allow(unused_variables)]
11444                    fn visit_str<E>(
11445                        self,
11446                        value: &str,
11447                    ) -> std::result::Result<GeneratedField, E>
11448                    where
11449                        E: serde::de::Error,
11450                    {
11451                        match value {
11452                            "aclRules" | "acl_rules" => Ok(GeneratedField::AclRules),
11453                            "nextPageToken" | "next_page_token" => {
11454                                Ok(GeneratedField::NextPageToken)
11455                            }
11456                            _ => Ok(GeneratedField::__SkipField__),
11457                        }
11458                    }
11459                }
11460                deserializer.deserialize_identifier(GeneratedVisitor)
11461            }
11462        }
11463        struct GeneratedVisitor;
11464        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11465            type Value = ListAclRulesResponse;
11466            fn expecting(
11467                &self,
11468                formatter: &mut std::fmt::Formatter<'_>,
11469            ) -> std::fmt::Result {
11470                formatter
11471                    .write_str("struct origincloud.network.v1beta1.ListAclRulesResponse")
11472            }
11473            fn visit_map<V>(
11474                self,
11475                mut map_: V,
11476            ) -> std::result::Result<ListAclRulesResponse, V::Error>
11477            where
11478                V: serde::de::MapAccess<'de>,
11479            {
11480                let mut acl_rules__ = None;
11481                let mut next_page_token__ = None;
11482                while let Some(k) = map_.next_key()? {
11483                    match k {
11484                        GeneratedField::AclRules => {
11485                            if acl_rules__.is_some() {
11486                                return Err(serde::de::Error::duplicate_field("aclRules"));
11487                            }
11488                            acl_rules__ = Some(map_.next_value()?);
11489                        }
11490                        GeneratedField::NextPageToken => {
11491                            if next_page_token__.is_some() {
11492                                return Err(
11493                                    serde::de::Error::duplicate_field("nextPageToken"),
11494                                );
11495                            }
11496                            next_page_token__ = Some(map_.next_value()?);
11497                        }
11498                        GeneratedField::__SkipField__ => {
11499                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11500                        }
11501                    }
11502                }
11503                Ok(ListAclRulesResponse {
11504                    acl_rules: acl_rules__.unwrap_or_default(),
11505                    next_page_token: next_page_token__.unwrap_or_default(),
11506                })
11507            }
11508        }
11509        deserializer
11510            .deserialize_struct(
11511                "origincloud.network.v1beta1.ListAclRulesResponse",
11512                FIELDS,
11513                GeneratedVisitor,
11514            )
11515    }
11516}
11517impl serde::Serialize for ListAclsRequest {
11518    #[allow(deprecated)]
11519    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11520    where
11521        S: serde::Serializer,
11522    {
11523        use serde::ser::SerializeStruct;
11524        let mut len = 0;
11525        if !self.parent.is_empty() {
11526            len += 1;
11527        }
11528        if self.page_size != 0 {
11529            len += 1;
11530        }
11531        if !self.page_token.is_empty() {
11532            len += 1;
11533        }
11534        if !self.vpc.is_empty() {
11535            len += 1;
11536        }
11537        let mut struct_ser = serializer
11538            .serialize_struct("origincloud.network.v1beta1.ListAclsRequest", len)?;
11539        if !self.parent.is_empty() {
11540            struct_ser.serialize_field("parent", &self.parent)?;
11541        }
11542        if self.page_size != 0 {
11543            struct_ser.serialize_field("pageSize", &self.page_size)?;
11544        }
11545        if !self.page_token.is_empty() {
11546            struct_ser.serialize_field("pageToken", &self.page_token)?;
11547        }
11548        if !self.vpc.is_empty() {
11549            struct_ser.serialize_field("vpc", &self.vpc)?;
11550        }
11551        struct_ser.end()
11552    }
11553}
11554impl<'de> serde::Deserialize<'de> for ListAclsRequest {
11555    #[allow(deprecated)]
11556    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11557    where
11558        D: serde::Deserializer<'de>,
11559    {
11560        const FIELDS: &[&str] = &[
11561            "parent",
11562            "page_size",
11563            "pageSize",
11564            "page_token",
11565            "pageToken",
11566            "vpc",
11567        ];
11568        #[allow(clippy::enum_variant_names)]
11569        enum GeneratedField {
11570            Parent,
11571            PageSize,
11572            PageToken,
11573            Vpc,
11574            __SkipField__,
11575        }
11576        impl<'de> serde::Deserialize<'de> for GeneratedField {
11577            fn deserialize<D>(
11578                deserializer: D,
11579            ) -> std::result::Result<GeneratedField, D::Error>
11580            where
11581                D: serde::Deserializer<'de>,
11582            {
11583                struct GeneratedVisitor;
11584                impl serde::de::Visitor<'_> for GeneratedVisitor {
11585                    type Value = GeneratedField;
11586                    fn expecting(
11587                        &self,
11588                        formatter: &mut std::fmt::Formatter<'_>,
11589                    ) -> std::fmt::Result {
11590                        write!(formatter, "expected one of: {:?}", & FIELDS)
11591                    }
11592                    #[allow(unused_variables)]
11593                    fn visit_str<E>(
11594                        self,
11595                        value: &str,
11596                    ) -> std::result::Result<GeneratedField, E>
11597                    where
11598                        E: serde::de::Error,
11599                    {
11600                        match value {
11601                            "parent" => Ok(GeneratedField::Parent),
11602                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11603                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11604                            "vpc" => Ok(GeneratedField::Vpc),
11605                            _ => Ok(GeneratedField::__SkipField__),
11606                        }
11607                    }
11608                }
11609                deserializer.deserialize_identifier(GeneratedVisitor)
11610            }
11611        }
11612        struct GeneratedVisitor;
11613        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11614            type Value = ListAclsRequest;
11615            fn expecting(
11616                &self,
11617                formatter: &mut std::fmt::Formatter<'_>,
11618            ) -> std::fmt::Result {
11619                formatter.write_str("struct origincloud.network.v1beta1.ListAclsRequest")
11620            }
11621            fn visit_map<V>(
11622                self,
11623                mut map_: V,
11624            ) -> std::result::Result<ListAclsRequest, V::Error>
11625            where
11626                V: serde::de::MapAccess<'de>,
11627            {
11628                let mut parent__ = None;
11629                let mut page_size__ = None;
11630                let mut page_token__ = None;
11631                let mut vpc__ = None;
11632                while let Some(k) = map_.next_key()? {
11633                    match k {
11634                        GeneratedField::Parent => {
11635                            if parent__.is_some() {
11636                                return Err(serde::de::Error::duplicate_field("parent"));
11637                            }
11638                            parent__ = Some(map_.next_value()?);
11639                        }
11640                        GeneratedField::PageSize => {
11641                            if page_size__.is_some() {
11642                                return Err(serde::de::Error::duplicate_field("pageSize"));
11643                            }
11644                            page_size__ = Some(
11645                                map_
11646                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11647                                    .0,
11648                            );
11649                        }
11650                        GeneratedField::PageToken => {
11651                            if page_token__.is_some() {
11652                                return Err(serde::de::Error::duplicate_field("pageToken"));
11653                            }
11654                            page_token__ = Some(map_.next_value()?);
11655                        }
11656                        GeneratedField::Vpc => {
11657                            if vpc__.is_some() {
11658                                return Err(serde::de::Error::duplicate_field("vpc"));
11659                            }
11660                            vpc__ = Some(map_.next_value()?);
11661                        }
11662                        GeneratedField::__SkipField__ => {
11663                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11664                        }
11665                    }
11666                }
11667                Ok(ListAclsRequest {
11668                    parent: parent__.unwrap_or_default(),
11669                    page_size: page_size__.unwrap_or_default(),
11670                    page_token: page_token__.unwrap_or_default(),
11671                    vpc: vpc__.unwrap_or_default(),
11672                })
11673            }
11674        }
11675        deserializer
11676            .deserialize_struct(
11677                "origincloud.network.v1beta1.ListAclsRequest",
11678                FIELDS,
11679                GeneratedVisitor,
11680            )
11681    }
11682}
11683impl serde::Serialize for ListAclsResponse {
11684    #[allow(deprecated)]
11685    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11686    where
11687        S: serde::Serializer,
11688    {
11689        use serde::ser::SerializeStruct;
11690        let mut len = 0;
11691        if !self.acls.is_empty() {
11692            len += 1;
11693        }
11694        if !self.next_page_token.is_empty() {
11695            len += 1;
11696        }
11697        let mut struct_ser = serializer
11698            .serialize_struct("origincloud.network.v1beta1.ListAclsResponse", len)?;
11699        if !self.acls.is_empty() {
11700            struct_ser.serialize_field("acls", &self.acls)?;
11701        }
11702        if !self.next_page_token.is_empty() {
11703            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11704        }
11705        struct_ser.end()
11706    }
11707}
11708impl<'de> serde::Deserialize<'de> for ListAclsResponse {
11709    #[allow(deprecated)]
11710    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11711    where
11712        D: serde::Deserializer<'de>,
11713    {
11714        const FIELDS: &[&str] = &["acls", "next_page_token", "nextPageToken"];
11715        #[allow(clippy::enum_variant_names)]
11716        enum GeneratedField {
11717            Acls,
11718            NextPageToken,
11719            __SkipField__,
11720        }
11721        impl<'de> serde::Deserialize<'de> for GeneratedField {
11722            fn deserialize<D>(
11723                deserializer: D,
11724            ) -> std::result::Result<GeneratedField, D::Error>
11725            where
11726                D: serde::Deserializer<'de>,
11727            {
11728                struct GeneratedVisitor;
11729                impl serde::de::Visitor<'_> for GeneratedVisitor {
11730                    type Value = GeneratedField;
11731                    fn expecting(
11732                        &self,
11733                        formatter: &mut std::fmt::Formatter<'_>,
11734                    ) -> std::fmt::Result {
11735                        write!(formatter, "expected one of: {:?}", & FIELDS)
11736                    }
11737                    #[allow(unused_variables)]
11738                    fn visit_str<E>(
11739                        self,
11740                        value: &str,
11741                    ) -> std::result::Result<GeneratedField, E>
11742                    where
11743                        E: serde::de::Error,
11744                    {
11745                        match value {
11746                            "acls" => Ok(GeneratedField::Acls),
11747                            "nextPageToken" | "next_page_token" => {
11748                                Ok(GeneratedField::NextPageToken)
11749                            }
11750                            _ => Ok(GeneratedField::__SkipField__),
11751                        }
11752                    }
11753                }
11754                deserializer.deserialize_identifier(GeneratedVisitor)
11755            }
11756        }
11757        struct GeneratedVisitor;
11758        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11759            type Value = ListAclsResponse;
11760            fn expecting(
11761                &self,
11762                formatter: &mut std::fmt::Formatter<'_>,
11763            ) -> std::fmt::Result {
11764                formatter
11765                    .write_str("struct origincloud.network.v1beta1.ListAclsResponse")
11766            }
11767            fn visit_map<V>(
11768                self,
11769                mut map_: V,
11770            ) -> std::result::Result<ListAclsResponse, V::Error>
11771            where
11772                V: serde::de::MapAccess<'de>,
11773            {
11774                let mut acls__ = None;
11775                let mut next_page_token__ = None;
11776                while let Some(k) = map_.next_key()? {
11777                    match k {
11778                        GeneratedField::Acls => {
11779                            if acls__.is_some() {
11780                                return Err(serde::de::Error::duplicate_field("acls"));
11781                            }
11782                            acls__ = Some(map_.next_value()?);
11783                        }
11784                        GeneratedField::NextPageToken => {
11785                            if next_page_token__.is_some() {
11786                                return Err(
11787                                    serde::de::Error::duplicate_field("nextPageToken"),
11788                                );
11789                            }
11790                            next_page_token__ = Some(map_.next_value()?);
11791                        }
11792                        GeneratedField::__SkipField__ => {
11793                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11794                        }
11795                    }
11796                }
11797                Ok(ListAclsResponse {
11798                    acls: acls__.unwrap_or_default(),
11799                    next_page_token: next_page_token__.unwrap_or_default(),
11800                })
11801            }
11802        }
11803        deserializer
11804            .deserialize_struct(
11805                "origincloud.network.v1beta1.ListAclsResponse",
11806                FIELDS,
11807                GeneratedVisitor,
11808            )
11809    }
11810}
11811impl serde::Serialize for ListDnsPoliciesRequest {
11812    #[allow(deprecated)]
11813    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11814    where
11815        S: serde::Serializer,
11816    {
11817        use serde::ser::SerializeStruct;
11818        let mut len = 0;
11819        if !self.parent.is_empty() {
11820            len += 1;
11821        }
11822        if self.page_size != 0 {
11823            len += 1;
11824        }
11825        if !self.page_token.is_empty() {
11826            len += 1;
11827        }
11828        let mut struct_ser = serializer
11829            .serialize_struct(
11830                "origincloud.network.v1beta1.ListDnsPoliciesRequest",
11831                len,
11832            )?;
11833        if !self.parent.is_empty() {
11834            struct_ser.serialize_field("parent", &self.parent)?;
11835        }
11836        if self.page_size != 0 {
11837            struct_ser.serialize_field("pageSize", &self.page_size)?;
11838        }
11839        if !self.page_token.is_empty() {
11840            struct_ser.serialize_field("pageToken", &self.page_token)?;
11841        }
11842        struct_ser.end()
11843    }
11844}
11845impl<'de> serde::Deserialize<'de> for ListDnsPoliciesRequest {
11846    #[allow(deprecated)]
11847    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11848    where
11849        D: serde::Deserializer<'de>,
11850    {
11851        const FIELDS: &[&str] = &[
11852            "parent",
11853            "page_size",
11854            "pageSize",
11855            "page_token",
11856            "pageToken",
11857        ];
11858        #[allow(clippy::enum_variant_names)]
11859        enum GeneratedField {
11860            Parent,
11861            PageSize,
11862            PageToken,
11863            __SkipField__,
11864        }
11865        impl<'de> serde::Deserialize<'de> for GeneratedField {
11866            fn deserialize<D>(
11867                deserializer: D,
11868            ) -> std::result::Result<GeneratedField, D::Error>
11869            where
11870                D: serde::Deserializer<'de>,
11871            {
11872                struct GeneratedVisitor;
11873                impl serde::de::Visitor<'_> for GeneratedVisitor {
11874                    type Value = GeneratedField;
11875                    fn expecting(
11876                        &self,
11877                        formatter: &mut std::fmt::Formatter<'_>,
11878                    ) -> std::fmt::Result {
11879                        write!(formatter, "expected one of: {:?}", & FIELDS)
11880                    }
11881                    #[allow(unused_variables)]
11882                    fn visit_str<E>(
11883                        self,
11884                        value: &str,
11885                    ) -> std::result::Result<GeneratedField, E>
11886                    where
11887                        E: serde::de::Error,
11888                    {
11889                        match value {
11890                            "parent" => Ok(GeneratedField::Parent),
11891                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11892                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11893                            _ => Ok(GeneratedField::__SkipField__),
11894                        }
11895                    }
11896                }
11897                deserializer.deserialize_identifier(GeneratedVisitor)
11898            }
11899        }
11900        struct GeneratedVisitor;
11901        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11902            type Value = ListDnsPoliciesRequest;
11903            fn expecting(
11904                &self,
11905                formatter: &mut std::fmt::Formatter<'_>,
11906            ) -> std::fmt::Result {
11907                formatter
11908                    .write_str(
11909                        "struct origincloud.network.v1beta1.ListDnsPoliciesRequest",
11910                    )
11911            }
11912            fn visit_map<V>(
11913                self,
11914                mut map_: V,
11915            ) -> std::result::Result<ListDnsPoliciesRequest, V::Error>
11916            where
11917                V: serde::de::MapAccess<'de>,
11918            {
11919                let mut parent__ = None;
11920                let mut page_size__ = None;
11921                let mut page_token__ = None;
11922                while let Some(k) = map_.next_key()? {
11923                    match k {
11924                        GeneratedField::Parent => {
11925                            if parent__.is_some() {
11926                                return Err(serde::de::Error::duplicate_field("parent"));
11927                            }
11928                            parent__ = Some(map_.next_value()?);
11929                        }
11930                        GeneratedField::PageSize => {
11931                            if page_size__.is_some() {
11932                                return Err(serde::de::Error::duplicate_field("pageSize"));
11933                            }
11934                            page_size__ = Some(
11935                                map_
11936                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11937                                    .0,
11938                            );
11939                        }
11940                        GeneratedField::PageToken => {
11941                            if page_token__.is_some() {
11942                                return Err(serde::de::Error::duplicate_field("pageToken"));
11943                            }
11944                            page_token__ = Some(map_.next_value()?);
11945                        }
11946                        GeneratedField::__SkipField__ => {
11947                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11948                        }
11949                    }
11950                }
11951                Ok(ListDnsPoliciesRequest {
11952                    parent: parent__.unwrap_or_default(),
11953                    page_size: page_size__.unwrap_or_default(),
11954                    page_token: page_token__.unwrap_or_default(),
11955                })
11956            }
11957        }
11958        deserializer
11959            .deserialize_struct(
11960                "origincloud.network.v1beta1.ListDnsPoliciesRequest",
11961                FIELDS,
11962                GeneratedVisitor,
11963            )
11964    }
11965}
11966impl serde::Serialize for ListDnsPoliciesResponse {
11967    #[allow(deprecated)]
11968    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11969    where
11970        S: serde::Serializer,
11971    {
11972        use serde::ser::SerializeStruct;
11973        let mut len = 0;
11974        if !self.dns_policies.is_empty() {
11975            len += 1;
11976        }
11977        if !self.next_page_token.is_empty() {
11978            len += 1;
11979        }
11980        let mut struct_ser = serializer
11981            .serialize_struct(
11982                "origincloud.network.v1beta1.ListDnsPoliciesResponse",
11983                len,
11984            )?;
11985        if !self.dns_policies.is_empty() {
11986            struct_ser.serialize_field("dnsPolicies", &self.dns_policies)?;
11987        }
11988        if !self.next_page_token.is_empty() {
11989            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11990        }
11991        struct_ser.end()
11992    }
11993}
11994impl<'de> serde::Deserialize<'de> for ListDnsPoliciesResponse {
11995    #[allow(deprecated)]
11996    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11997    where
11998        D: serde::Deserializer<'de>,
11999    {
12000        const FIELDS: &[&str] = &[
12001            "dns_policies",
12002            "dnsPolicies",
12003            "next_page_token",
12004            "nextPageToken",
12005        ];
12006        #[allow(clippy::enum_variant_names)]
12007        enum GeneratedField {
12008            DnsPolicies,
12009            NextPageToken,
12010            __SkipField__,
12011        }
12012        impl<'de> serde::Deserialize<'de> for GeneratedField {
12013            fn deserialize<D>(
12014                deserializer: D,
12015            ) -> std::result::Result<GeneratedField, D::Error>
12016            where
12017                D: serde::Deserializer<'de>,
12018            {
12019                struct GeneratedVisitor;
12020                impl serde::de::Visitor<'_> for GeneratedVisitor {
12021                    type Value = GeneratedField;
12022                    fn expecting(
12023                        &self,
12024                        formatter: &mut std::fmt::Formatter<'_>,
12025                    ) -> std::fmt::Result {
12026                        write!(formatter, "expected one of: {:?}", & FIELDS)
12027                    }
12028                    #[allow(unused_variables)]
12029                    fn visit_str<E>(
12030                        self,
12031                        value: &str,
12032                    ) -> std::result::Result<GeneratedField, E>
12033                    where
12034                        E: serde::de::Error,
12035                    {
12036                        match value {
12037                            "dnsPolicies" | "dns_policies" => {
12038                                Ok(GeneratedField::DnsPolicies)
12039                            }
12040                            "nextPageToken" | "next_page_token" => {
12041                                Ok(GeneratedField::NextPageToken)
12042                            }
12043                            _ => Ok(GeneratedField::__SkipField__),
12044                        }
12045                    }
12046                }
12047                deserializer.deserialize_identifier(GeneratedVisitor)
12048            }
12049        }
12050        struct GeneratedVisitor;
12051        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12052            type Value = ListDnsPoliciesResponse;
12053            fn expecting(
12054                &self,
12055                formatter: &mut std::fmt::Formatter<'_>,
12056            ) -> std::fmt::Result {
12057                formatter
12058                    .write_str(
12059                        "struct origincloud.network.v1beta1.ListDnsPoliciesResponse",
12060                    )
12061            }
12062            fn visit_map<V>(
12063                self,
12064                mut map_: V,
12065            ) -> std::result::Result<ListDnsPoliciesResponse, V::Error>
12066            where
12067                V: serde::de::MapAccess<'de>,
12068            {
12069                let mut dns_policies__ = None;
12070                let mut next_page_token__ = None;
12071                while let Some(k) = map_.next_key()? {
12072                    match k {
12073                        GeneratedField::DnsPolicies => {
12074                            if dns_policies__.is_some() {
12075                                return Err(
12076                                    serde::de::Error::duplicate_field("dnsPolicies"),
12077                                );
12078                            }
12079                            dns_policies__ = Some(map_.next_value()?);
12080                        }
12081                        GeneratedField::NextPageToken => {
12082                            if next_page_token__.is_some() {
12083                                return Err(
12084                                    serde::de::Error::duplicate_field("nextPageToken"),
12085                                );
12086                            }
12087                            next_page_token__ = Some(map_.next_value()?);
12088                        }
12089                        GeneratedField::__SkipField__ => {
12090                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12091                        }
12092                    }
12093                }
12094                Ok(ListDnsPoliciesResponse {
12095                    dns_policies: dns_policies__.unwrap_or_default(),
12096                    next_page_token: next_page_token__.unwrap_or_default(),
12097                })
12098            }
12099        }
12100        deserializer
12101            .deserialize_struct(
12102                "origincloud.network.v1beta1.ListDnsPoliciesResponse",
12103                FIELDS,
12104                GeneratedVisitor,
12105            )
12106    }
12107}
12108impl serde::Serialize for ListDnsPolicyAssociationsRequest {
12109    #[allow(deprecated)]
12110    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12111    where
12112        S: serde::Serializer,
12113    {
12114        use serde::ser::SerializeStruct;
12115        let mut len = 0;
12116        if !self.parent.is_empty() {
12117            len += 1;
12118        }
12119        if self.page_size != 0 {
12120            len += 1;
12121        }
12122        if !self.page_token.is_empty() {
12123            len += 1;
12124        }
12125        let mut struct_ser = serializer
12126            .serialize_struct(
12127                "origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12128                len,
12129            )?;
12130        if !self.parent.is_empty() {
12131            struct_ser.serialize_field("parent", &self.parent)?;
12132        }
12133        if self.page_size != 0 {
12134            struct_ser.serialize_field("pageSize", &self.page_size)?;
12135        }
12136        if !self.page_token.is_empty() {
12137            struct_ser.serialize_field("pageToken", &self.page_token)?;
12138        }
12139        struct_ser.end()
12140    }
12141}
12142impl<'de> serde::Deserialize<'de> for ListDnsPolicyAssociationsRequest {
12143    #[allow(deprecated)]
12144    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12145    where
12146        D: serde::Deserializer<'de>,
12147    {
12148        const FIELDS: &[&str] = &[
12149            "parent",
12150            "page_size",
12151            "pageSize",
12152            "page_token",
12153            "pageToken",
12154        ];
12155        #[allow(clippy::enum_variant_names)]
12156        enum GeneratedField {
12157            Parent,
12158            PageSize,
12159            PageToken,
12160            __SkipField__,
12161        }
12162        impl<'de> serde::Deserialize<'de> for GeneratedField {
12163            fn deserialize<D>(
12164                deserializer: D,
12165            ) -> std::result::Result<GeneratedField, D::Error>
12166            where
12167                D: serde::Deserializer<'de>,
12168            {
12169                struct GeneratedVisitor;
12170                impl serde::de::Visitor<'_> for GeneratedVisitor {
12171                    type Value = GeneratedField;
12172                    fn expecting(
12173                        &self,
12174                        formatter: &mut std::fmt::Formatter<'_>,
12175                    ) -> std::fmt::Result {
12176                        write!(formatter, "expected one of: {:?}", & FIELDS)
12177                    }
12178                    #[allow(unused_variables)]
12179                    fn visit_str<E>(
12180                        self,
12181                        value: &str,
12182                    ) -> std::result::Result<GeneratedField, E>
12183                    where
12184                        E: serde::de::Error,
12185                    {
12186                        match value {
12187                            "parent" => Ok(GeneratedField::Parent),
12188                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12189                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12190                            _ => Ok(GeneratedField::__SkipField__),
12191                        }
12192                    }
12193                }
12194                deserializer.deserialize_identifier(GeneratedVisitor)
12195            }
12196        }
12197        struct GeneratedVisitor;
12198        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12199            type Value = ListDnsPolicyAssociationsRequest;
12200            fn expecting(
12201                &self,
12202                formatter: &mut std::fmt::Formatter<'_>,
12203            ) -> std::fmt::Result {
12204                formatter
12205                    .write_str(
12206                        "struct origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12207                    )
12208            }
12209            fn visit_map<V>(
12210                self,
12211                mut map_: V,
12212            ) -> std::result::Result<ListDnsPolicyAssociationsRequest, V::Error>
12213            where
12214                V: serde::de::MapAccess<'de>,
12215            {
12216                let mut parent__ = None;
12217                let mut page_size__ = None;
12218                let mut page_token__ = None;
12219                while let Some(k) = map_.next_key()? {
12220                    match k {
12221                        GeneratedField::Parent => {
12222                            if parent__.is_some() {
12223                                return Err(serde::de::Error::duplicate_field("parent"));
12224                            }
12225                            parent__ = Some(map_.next_value()?);
12226                        }
12227                        GeneratedField::PageSize => {
12228                            if page_size__.is_some() {
12229                                return Err(serde::de::Error::duplicate_field("pageSize"));
12230                            }
12231                            page_size__ = Some(
12232                                map_
12233                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12234                                    .0,
12235                            );
12236                        }
12237                        GeneratedField::PageToken => {
12238                            if page_token__.is_some() {
12239                                return Err(serde::de::Error::duplicate_field("pageToken"));
12240                            }
12241                            page_token__ = Some(map_.next_value()?);
12242                        }
12243                        GeneratedField::__SkipField__ => {
12244                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12245                        }
12246                    }
12247                }
12248                Ok(ListDnsPolicyAssociationsRequest {
12249                    parent: parent__.unwrap_or_default(),
12250                    page_size: page_size__.unwrap_or_default(),
12251                    page_token: page_token__.unwrap_or_default(),
12252                })
12253            }
12254        }
12255        deserializer
12256            .deserialize_struct(
12257                "origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12258                FIELDS,
12259                GeneratedVisitor,
12260            )
12261    }
12262}
12263impl serde::Serialize for ListDnsPolicyAssociationsResponse {
12264    #[allow(deprecated)]
12265    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12266    where
12267        S: serde::Serializer,
12268    {
12269        use serde::ser::SerializeStruct;
12270        let mut len = 0;
12271        if !self.dns_policy_associations.is_empty() {
12272            len += 1;
12273        }
12274        if !self.next_page_token.is_empty() {
12275            len += 1;
12276        }
12277        let mut struct_ser = serializer
12278            .serialize_struct(
12279                "origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12280                len,
12281            )?;
12282        if !self.dns_policy_associations.is_empty() {
12283            struct_ser
12284                .serialize_field(
12285                    "dnsPolicyAssociations",
12286                    &self.dns_policy_associations,
12287                )?;
12288        }
12289        if !self.next_page_token.is_empty() {
12290            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12291        }
12292        struct_ser.end()
12293    }
12294}
12295impl<'de> serde::Deserialize<'de> for ListDnsPolicyAssociationsResponse {
12296    #[allow(deprecated)]
12297    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12298    where
12299        D: serde::Deserializer<'de>,
12300    {
12301        const FIELDS: &[&str] = &[
12302            "dns_policy_associations",
12303            "dnsPolicyAssociations",
12304            "next_page_token",
12305            "nextPageToken",
12306        ];
12307        #[allow(clippy::enum_variant_names)]
12308        enum GeneratedField {
12309            DnsPolicyAssociations,
12310            NextPageToken,
12311            __SkipField__,
12312        }
12313        impl<'de> serde::Deserialize<'de> for GeneratedField {
12314            fn deserialize<D>(
12315                deserializer: D,
12316            ) -> std::result::Result<GeneratedField, D::Error>
12317            where
12318                D: serde::Deserializer<'de>,
12319            {
12320                struct GeneratedVisitor;
12321                impl serde::de::Visitor<'_> for GeneratedVisitor {
12322                    type Value = GeneratedField;
12323                    fn expecting(
12324                        &self,
12325                        formatter: &mut std::fmt::Formatter<'_>,
12326                    ) -> std::fmt::Result {
12327                        write!(formatter, "expected one of: {:?}", & FIELDS)
12328                    }
12329                    #[allow(unused_variables)]
12330                    fn visit_str<E>(
12331                        self,
12332                        value: &str,
12333                    ) -> std::result::Result<GeneratedField, E>
12334                    where
12335                        E: serde::de::Error,
12336                    {
12337                        match value {
12338                            "dnsPolicyAssociations" | "dns_policy_associations" => {
12339                                Ok(GeneratedField::DnsPolicyAssociations)
12340                            }
12341                            "nextPageToken" | "next_page_token" => {
12342                                Ok(GeneratedField::NextPageToken)
12343                            }
12344                            _ => Ok(GeneratedField::__SkipField__),
12345                        }
12346                    }
12347                }
12348                deserializer.deserialize_identifier(GeneratedVisitor)
12349            }
12350        }
12351        struct GeneratedVisitor;
12352        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12353            type Value = ListDnsPolicyAssociationsResponse;
12354            fn expecting(
12355                &self,
12356                formatter: &mut std::fmt::Formatter<'_>,
12357            ) -> std::fmt::Result {
12358                formatter
12359                    .write_str(
12360                        "struct origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12361                    )
12362            }
12363            fn visit_map<V>(
12364                self,
12365                mut map_: V,
12366            ) -> std::result::Result<ListDnsPolicyAssociationsResponse, V::Error>
12367            where
12368                V: serde::de::MapAccess<'de>,
12369            {
12370                let mut dns_policy_associations__ = None;
12371                let mut next_page_token__ = None;
12372                while let Some(k) = map_.next_key()? {
12373                    match k {
12374                        GeneratedField::DnsPolicyAssociations => {
12375                            if dns_policy_associations__.is_some() {
12376                                return Err(
12377                                    serde::de::Error::duplicate_field("dnsPolicyAssociations"),
12378                                );
12379                            }
12380                            dns_policy_associations__ = Some(map_.next_value()?);
12381                        }
12382                        GeneratedField::NextPageToken => {
12383                            if next_page_token__.is_some() {
12384                                return Err(
12385                                    serde::de::Error::duplicate_field("nextPageToken"),
12386                                );
12387                            }
12388                            next_page_token__ = Some(map_.next_value()?);
12389                        }
12390                        GeneratedField::__SkipField__ => {
12391                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12392                        }
12393                    }
12394                }
12395                Ok(ListDnsPolicyAssociationsResponse {
12396                    dns_policy_associations: dns_policy_associations__
12397                        .unwrap_or_default(),
12398                    next_page_token: next_page_token__.unwrap_or_default(),
12399                })
12400            }
12401        }
12402        deserializer
12403            .deserialize_struct(
12404                "origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12405                FIELDS,
12406                GeneratedVisitor,
12407            )
12408    }
12409}
12410impl serde::Serialize for ListFloatingIpAssociationsRequest {
12411    #[allow(deprecated)]
12412    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12413    where
12414        S: serde::Serializer,
12415    {
12416        use serde::ser::SerializeStruct;
12417        let mut len = 0;
12418        if !self.parent.is_empty() {
12419            len += 1;
12420        }
12421        if self.page_size != 0 {
12422            len += 1;
12423        }
12424        if !self.page_token.is_empty() {
12425            len += 1;
12426        }
12427        let mut struct_ser = serializer
12428            .serialize_struct(
12429                "origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12430                len,
12431            )?;
12432        if !self.parent.is_empty() {
12433            struct_ser.serialize_field("parent", &self.parent)?;
12434        }
12435        if self.page_size != 0 {
12436            struct_ser.serialize_field("pageSize", &self.page_size)?;
12437        }
12438        if !self.page_token.is_empty() {
12439            struct_ser.serialize_field("pageToken", &self.page_token)?;
12440        }
12441        struct_ser.end()
12442    }
12443}
12444impl<'de> serde::Deserialize<'de> for ListFloatingIpAssociationsRequest {
12445    #[allow(deprecated)]
12446    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12447    where
12448        D: serde::Deserializer<'de>,
12449    {
12450        const FIELDS: &[&str] = &[
12451            "parent",
12452            "page_size",
12453            "pageSize",
12454            "page_token",
12455            "pageToken",
12456        ];
12457        #[allow(clippy::enum_variant_names)]
12458        enum GeneratedField {
12459            Parent,
12460            PageSize,
12461            PageToken,
12462            __SkipField__,
12463        }
12464        impl<'de> serde::Deserialize<'de> for GeneratedField {
12465            fn deserialize<D>(
12466                deserializer: D,
12467            ) -> std::result::Result<GeneratedField, D::Error>
12468            where
12469                D: serde::Deserializer<'de>,
12470            {
12471                struct GeneratedVisitor;
12472                impl serde::de::Visitor<'_> for GeneratedVisitor {
12473                    type Value = GeneratedField;
12474                    fn expecting(
12475                        &self,
12476                        formatter: &mut std::fmt::Formatter<'_>,
12477                    ) -> std::fmt::Result {
12478                        write!(formatter, "expected one of: {:?}", & FIELDS)
12479                    }
12480                    #[allow(unused_variables)]
12481                    fn visit_str<E>(
12482                        self,
12483                        value: &str,
12484                    ) -> std::result::Result<GeneratedField, E>
12485                    where
12486                        E: serde::de::Error,
12487                    {
12488                        match value {
12489                            "parent" => Ok(GeneratedField::Parent),
12490                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12491                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12492                            _ => Ok(GeneratedField::__SkipField__),
12493                        }
12494                    }
12495                }
12496                deserializer.deserialize_identifier(GeneratedVisitor)
12497            }
12498        }
12499        struct GeneratedVisitor;
12500        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12501            type Value = ListFloatingIpAssociationsRequest;
12502            fn expecting(
12503                &self,
12504                formatter: &mut std::fmt::Formatter<'_>,
12505            ) -> std::fmt::Result {
12506                formatter
12507                    .write_str(
12508                        "struct origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12509                    )
12510            }
12511            fn visit_map<V>(
12512                self,
12513                mut map_: V,
12514            ) -> std::result::Result<ListFloatingIpAssociationsRequest, V::Error>
12515            where
12516                V: serde::de::MapAccess<'de>,
12517            {
12518                let mut parent__ = None;
12519                let mut page_size__ = None;
12520                let mut page_token__ = None;
12521                while let Some(k) = map_.next_key()? {
12522                    match k {
12523                        GeneratedField::Parent => {
12524                            if parent__.is_some() {
12525                                return Err(serde::de::Error::duplicate_field("parent"));
12526                            }
12527                            parent__ = Some(map_.next_value()?);
12528                        }
12529                        GeneratedField::PageSize => {
12530                            if page_size__.is_some() {
12531                                return Err(serde::de::Error::duplicate_field("pageSize"));
12532                            }
12533                            page_size__ = Some(
12534                                map_
12535                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12536                                    .0,
12537                            );
12538                        }
12539                        GeneratedField::PageToken => {
12540                            if page_token__.is_some() {
12541                                return Err(serde::de::Error::duplicate_field("pageToken"));
12542                            }
12543                            page_token__ = Some(map_.next_value()?);
12544                        }
12545                        GeneratedField::__SkipField__ => {
12546                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12547                        }
12548                    }
12549                }
12550                Ok(ListFloatingIpAssociationsRequest {
12551                    parent: parent__.unwrap_or_default(),
12552                    page_size: page_size__.unwrap_or_default(),
12553                    page_token: page_token__.unwrap_or_default(),
12554                })
12555            }
12556        }
12557        deserializer
12558            .deserialize_struct(
12559                "origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12560                FIELDS,
12561                GeneratedVisitor,
12562            )
12563    }
12564}
12565impl serde::Serialize for ListFloatingIpAssociationsResponse {
12566    #[allow(deprecated)]
12567    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12568    where
12569        S: serde::Serializer,
12570    {
12571        use serde::ser::SerializeStruct;
12572        let mut len = 0;
12573        if !self.floating_ip_associations.is_empty() {
12574            len += 1;
12575        }
12576        if !self.next_page_token.is_empty() {
12577            len += 1;
12578        }
12579        let mut struct_ser = serializer
12580            .serialize_struct(
12581                "origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12582                len,
12583            )?;
12584        if !self.floating_ip_associations.is_empty() {
12585            struct_ser
12586                .serialize_field(
12587                    "floatingIpAssociations",
12588                    &self.floating_ip_associations,
12589                )?;
12590        }
12591        if !self.next_page_token.is_empty() {
12592            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12593        }
12594        struct_ser.end()
12595    }
12596}
12597impl<'de> serde::Deserialize<'de> for ListFloatingIpAssociationsResponse {
12598    #[allow(deprecated)]
12599    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12600    where
12601        D: serde::Deserializer<'de>,
12602    {
12603        const FIELDS: &[&str] = &[
12604            "floating_ip_associations",
12605            "floatingIpAssociations",
12606            "next_page_token",
12607            "nextPageToken",
12608        ];
12609        #[allow(clippy::enum_variant_names)]
12610        enum GeneratedField {
12611            FloatingIpAssociations,
12612            NextPageToken,
12613            __SkipField__,
12614        }
12615        impl<'de> serde::Deserialize<'de> for GeneratedField {
12616            fn deserialize<D>(
12617                deserializer: D,
12618            ) -> std::result::Result<GeneratedField, D::Error>
12619            where
12620                D: serde::Deserializer<'de>,
12621            {
12622                struct GeneratedVisitor;
12623                impl serde::de::Visitor<'_> for GeneratedVisitor {
12624                    type Value = GeneratedField;
12625                    fn expecting(
12626                        &self,
12627                        formatter: &mut std::fmt::Formatter<'_>,
12628                    ) -> std::fmt::Result {
12629                        write!(formatter, "expected one of: {:?}", & FIELDS)
12630                    }
12631                    #[allow(unused_variables)]
12632                    fn visit_str<E>(
12633                        self,
12634                        value: &str,
12635                    ) -> std::result::Result<GeneratedField, E>
12636                    where
12637                        E: serde::de::Error,
12638                    {
12639                        match value {
12640                            "floatingIpAssociations" | "floating_ip_associations" => {
12641                                Ok(GeneratedField::FloatingIpAssociations)
12642                            }
12643                            "nextPageToken" | "next_page_token" => {
12644                                Ok(GeneratedField::NextPageToken)
12645                            }
12646                            _ => Ok(GeneratedField::__SkipField__),
12647                        }
12648                    }
12649                }
12650                deserializer.deserialize_identifier(GeneratedVisitor)
12651            }
12652        }
12653        struct GeneratedVisitor;
12654        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12655            type Value = ListFloatingIpAssociationsResponse;
12656            fn expecting(
12657                &self,
12658                formatter: &mut std::fmt::Formatter<'_>,
12659            ) -> std::fmt::Result {
12660                formatter
12661                    .write_str(
12662                        "struct origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12663                    )
12664            }
12665            fn visit_map<V>(
12666                self,
12667                mut map_: V,
12668            ) -> std::result::Result<ListFloatingIpAssociationsResponse, V::Error>
12669            where
12670                V: serde::de::MapAccess<'de>,
12671            {
12672                let mut floating_ip_associations__ = None;
12673                let mut next_page_token__ = None;
12674                while let Some(k) = map_.next_key()? {
12675                    match k {
12676                        GeneratedField::FloatingIpAssociations => {
12677                            if floating_ip_associations__.is_some() {
12678                                return Err(
12679                                    serde::de::Error::duplicate_field("floatingIpAssociations"),
12680                                );
12681                            }
12682                            floating_ip_associations__ = Some(map_.next_value()?);
12683                        }
12684                        GeneratedField::NextPageToken => {
12685                            if next_page_token__.is_some() {
12686                                return Err(
12687                                    serde::de::Error::duplicate_field("nextPageToken"),
12688                                );
12689                            }
12690                            next_page_token__ = Some(map_.next_value()?);
12691                        }
12692                        GeneratedField::__SkipField__ => {
12693                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12694                        }
12695                    }
12696                }
12697                Ok(ListFloatingIpAssociationsResponse {
12698                    floating_ip_associations: floating_ip_associations__
12699                        .unwrap_or_default(),
12700                    next_page_token: next_page_token__.unwrap_or_default(),
12701                })
12702            }
12703        }
12704        deserializer
12705            .deserialize_struct(
12706                "origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12707                FIELDS,
12708                GeneratedVisitor,
12709            )
12710    }
12711}
12712impl serde::Serialize for ListFloatingIpsRequest {
12713    #[allow(deprecated)]
12714    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12715    where
12716        S: serde::Serializer,
12717    {
12718        use serde::ser::SerializeStruct;
12719        let mut len = 0;
12720        if !self.parent.is_empty() {
12721            len += 1;
12722        }
12723        if self.page_size != 0 {
12724            len += 1;
12725        }
12726        if !self.page_token.is_empty() {
12727            len += 1;
12728        }
12729        let mut struct_ser = serializer
12730            .serialize_struct(
12731                "origincloud.network.v1beta1.ListFloatingIpsRequest",
12732                len,
12733            )?;
12734        if !self.parent.is_empty() {
12735            struct_ser.serialize_field("parent", &self.parent)?;
12736        }
12737        if self.page_size != 0 {
12738            struct_ser.serialize_field("pageSize", &self.page_size)?;
12739        }
12740        if !self.page_token.is_empty() {
12741            struct_ser.serialize_field("pageToken", &self.page_token)?;
12742        }
12743        struct_ser.end()
12744    }
12745}
12746impl<'de> serde::Deserialize<'de> for ListFloatingIpsRequest {
12747    #[allow(deprecated)]
12748    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12749    where
12750        D: serde::Deserializer<'de>,
12751    {
12752        const FIELDS: &[&str] = &[
12753            "parent",
12754            "page_size",
12755            "pageSize",
12756            "page_token",
12757            "pageToken",
12758        ];
12759        #[allow(clippy::enum_variant_names)]
12760        enum GeneratedField {
12761            Parent,
12762            PageSize,
12763            PageToken,
12764            __SkipField__,
12765        }
12766        impl<'de> serde::Deserialize<'de> for GeneratedField {
12767            fn deserialize<D>(
12768                deserializer: D,
12769            ) -> std::result::Result<GeneratedField, D::Error>
12770            where
12771                D: serde::Deserializer<'de>,
12772            {
12773                struct GeneratedVisitor;
12774                impl serde::de::Visitor<'_> for GeneratedVisitor {
12775                    type Value = GeneratedField;
12776                    fn expecting(
12777                        &self,
12778                        formatter: &mut std::fmt::Formatter<'_>,
12779                    ) -> std::fmt::Result {
12780                        write!(formatter, "expected one of: {:?}", & FIELDS)
12781                    }
12782                    #[allow(unused_variables)]
12783                    fn visit_str<E>(
12784                        self,
12785                        value: &str,
12786                    ) -> std::result::Result<GeneratedField, E>
12787                    where
12788                        E: serde::de::Error,
12789                    {
12790                        match value {
12791                            "parent" => Ok(GeneratedField::Parent),
12792                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12793                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12794                            _ => Ok(GeneratedField::__SkipField__),
12795                        }
12796                    }
12797                }
12798                deserializer.deserialize_identifier(GeneratedVisitor)
12799            }
12800        }
12801        struct GeneratedVisitor;
12802        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12803            type Value = ListFloatingIpsRequest;
12804            fn expecting(
12805                &self,
12806                formatter: &mut std::fmt::Formatter<'_>,
12807            ) -> std::fmt::Result {
12808                formatter
12809                    .write_str(
12810                        "struct origincloud.network.v1beta1.ListFloatingIpsRequest",
12811                    )
12812            }
12813            fn visit_map<V>(
12814                self,
12815                mut map_: V,
12816            ) -> std::result::Result<ListFloatingIpsRequest, V::Error>
12817            where
12818                V: serde::de::MapAccess<'de>,
12819            {
12820                let mut parent__ = None;
12821                let mut page_size__ = None;
12822                let mut page_token__ = None;
12823                while let Some(k) = map_.next_key()? {
12824                    match k {
12825                        GeneratedField::Parent => {
12826                            if parent__.is_some() {
12827                                return Err(serde::de::Error::duplicate_field("parent"));
12828                            }
12829                            parent__ = Some(map_.next_value()?);
12830                        }
12831                        GeneratedField::PageSize => {
12832                            if page_size__.is_some() {
12833                                return Err(serde::de::Error::duplicate_field("pageSize"));
12834                            }
12835                            page_size__ = Some(
12836                                map_
12837                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12838                                    .0,
12839                            );
12840                        }
12841                        GeneratedField::PageToken => {
12842                            if page_token__.is_some() {
12843                                return Err(serde::de::Error::duplicate_field("pageToken"));
12844                            }
12845                            page_token__ = Some(map_.next_value()?);
12846                        }
12847                        GeneratedField::__SkipField__ => {
12848                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12849                        }
12850                    }
12851                }
12852                Ok(ListFloatingIpsRequest {
12853                    parent: parent__.unwrap_or_default(),
12854                    page_size: page_size__.unwrap_or_default(),
12855                    page_token: page_token__.unwrap_or_default(),
12856                })
12857            }
12858        }
12859        deserializer
12860            .deserialize_struct(
12861                "origincloud.network.v1beta1.ListFloatingIpsRequest",
12862                FIELDS,
12863                GeneratedVisitor,
12864            )
12865    }
12866}
12867impl serde::Serialize for ListFloatingIpsResponse {
12868    #[allow(deprecated)]
12869    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12870    where
12871        S: serde::Serializer,
12872    {
12873        use serde::ser::SerializeStruct;
12874        let mut len = 0;
12875        if !self.floating_ips.is_empty() {
12876            len += 1;
12877        }
12878        if !self.next_page_token.is_empty() {
12879            len += 1;
12880        }
12881        let mut struct_ser = serializer
12882            .serialize_struct(
12883                "origincloud.network.v1beta1.ListFloatingIpsResponse",
12884                len,
12885            )?;
12886        if !self.floating_ips.is_empty() {
12887            struct_ser.serialize_field("floatingIps", &self.floating_ips)?;
12888        }
12889        if !self.next_page_token.is_empty() {
12890            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12891        }
12892        struct_ser.end()
12893    }
12894}
12895impl<'de> serde::Deserialize<'de> for ListFloatingIpsResponse {
12896    #[allow(deprecated)]
12897    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12898    where
12899        D: serde::Deserializer<'de>,
12900    {
12901        const FIELDS: &[&str] = &[
12902            "floating_ips",
12903            "floatingIps",
12904            "next_page_token",
12905            "nextPageToken",
12906        ];
12907        #[allow(clippy::enum_variant_names)]
12908        enum GeneratedField {
12909            FloatingIps,
12910            NextPageToken,
12911            __SkipField__,
12912        }
12913        impl<'de> serde::Deserialize<'de> for GeneratedField {
12914            fn deserialize<D>(
12915                deserializer: D,
12916            ) -> std::result::Result<GeneratedField, D::Error>
12917            where
12918                D: serde::Deserializer<'de>,
12919            {
12920                struct GeneratedVisitor;
12921                impl serde::de::Visitor<'_> for GeneratedVisitor {
12922                    type Value = GeneratedField;
12923                    fn expecting(
12924                        &self,
12925                        formatter: &mut std::fmt::Formatter<'_>,
12926                    ) -> std::fmt::Result {
12927                        write!(formatter, "expected one of: {:?}", & FIELDS)
12928                    }
12929                    #[allow(unused_variables)]
12930                    fn visit_str<E>(
12931                        self,
12932                        value: &str,
12933                    ) -> std::result::Result<GeneratedField, E>
12934                    where
12935                        E: serde::de::Error,
12936                    {
12937                        match value {
12938                            "floatingIps" | "floating_ips" => {
12939                                Ok(GeneratedField::FloatingIps)
12940                            }
12941                            "nextPageToken" | "next_page_token" => {
12942                                Ok(GeneratedField::NextPageToken)
12943                            }
12944                            _ => Ok(GeneratedField::__SkipField__),
12945                        }
12946                    }
12947                }
12948                deserializer.deserialize_identifier(GeneratedVisitor)
12949            }
12950        }
12951        struct GeneratedVisitor;
12952        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12953            type Value = ListFloatingIpsResponse;
12954            fn expecting(
12955                &self,
12956                formatter: &mut std::fmt::Formatter<'_>,
12957            ) -> std::fmt::Result {
12958                formatter
12959                    .write_str(
12960                        "struct origincloud.network.v1beta1.ListFloatingIpsResponse",
12961                    )
12962            }
12963            fn visit_map<V>(
12964                self,
12965                mut map_: V,
12966            ) -> std::result::Result<ListFloatingIpsResponse, V::Error>
12967            where
12968                V: serde::de::MapAccess<'de>,
12969            {
12970                let mut floating_ips__ = None;
12971                let mut next_page_token__ = None;
12972                while let Some(k) = map_.next_key()? {
12973                    match k {
12974                        GeneratedField::FloatingIps => {
12975                            if floating_ips__.is_some() {
12976                                return Err(
12977                                    serde::de::Error::duplicate_field("floatingIps"),
12978                                );
12979                            }
12980                            floating_ips__ = Some(map_.next_value()?);
12981                        }
12982                        GeneratedField::NextPageToken => {
12983                            if next_page_token__.is_some() {
12984                                return Err(
12985                                    serde::de::Error::duplicate_field("nextPageToken"),
12986                                );
12987                            }
12988                            next_page_token__ = Some(map_.next_value()?);
12989                        }
12990                        GeneratedField::__SkipField__ => {
12991                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12992                        }
12993                    }
12994                }
12995                Ok(ListFloatingIpsResponse {
12996                    floating_ips: floating_ips__.unwrap_or_default(),
12997                    next_page_token: next_page_token__.unwrap_or_default(),
12998                })
12999            }
13000        }
13001        deserializer
13002            .deserialize_struct(
13003                "origincloud.network.v1beta1.ListFloatingIpsResponse",
13004                FIELDS,
13005                GeneratedVisitor,
13006            )
13007    }
13008}
13009impl serde::Serialize for ListInternetGatewaysRequest {
13010    #[allow(deprecated)]
13011    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13012    where
13013        S: serde::Serializer,
13014    {
13015        use serde::ser::SerializeStruct;
13016        let mut len = 0;
13017        if !self.parent.is_empty() {
13018            len += 1;
13019        }
13020        if self.page_size != 0 {
13021            len += 1;
13022        }
13023        if !self.page_token.is_empty() {
13024            len += 1;
13025        }
13026        if !self.vpc.is_empty() {
13027            len += 1;
13028        }
13029        let mut struct_ser = serializer
13030            .serialize_struct(
13031                "origincloud.network.v1beta1.ListInternetGatewaysRequest",
13032                len,
13033            )?;
13034        if !self.parent.is_empty() {
13035            struct_ser.serialize_field("parent", &self.parent)?;
13036        }
13037        if self.page_size != 0 {
13038            struct_ser.serialize_field("pageSize", &self.page_size)?;
13039        }
13040        if !self.page_token.is_empty() {
13041            struct_ser.serialize_field("pageToken", &self.page_token)?;
13042        }
13043        if !self.vpc.is_empty() {
13044            struct_ser.serialize_field("vpc", &self.vpc)?;
13045        }
13046        struct_ser.end()
13047    }
13048}
13049impl<'de> serde::Deserialize<'de> for ListInternetGatewaysRequest {
13050    #[allow(deprecated)]
13051    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13052    where
13053        D: serde::Deserializer<'de>,
13054    {
13055        const FIELDS: &[&str] = &[
13056            "parent",
13057            "page_size",
13058            "pageSize",
13059            "page_token",
13060            "pageToken",
13061            "vpc",
13062        ];
13063        #[allow(clippy::enum_variant_names)]
13064        enum GeneratedField {
13065            Parent,
13066            PageSize,
13067            PageToken,
13068            Vpc,
13069            __SkipField__,
13070        }
13071        impl<'de> serde::Deserialize<'de> for GeneratedField {
13072            fn deserialize<D>(
13073                deserializer: D,
13074            ) -> std::result::Result<GeneratedField, D::Error>
13075            where
13076                D: serde::Deserializer<'de>,
13077            {
13078                struct GeneratedVisitor;
13079                impl serde::de::Visitor<'_> for GeneratedVisitor {
13080                    type Value = GeneratedField;
13081                    fn expecting(
13082                        &self,
13083                        formatter: &mut std::fmt::Formatter<'_>,
13084                    ) -> std::fmt::Result {
13085                        write!(formatter, "expected one of: {:?}", & FIELDS)
13086                    }
13087                    #[allow(unused_variables)]
13088                    fn visit_str<E>(
13089                        self,
13090                        value: &str,
13091                    ) -> std::result::Result<GeneratedField, E>
13092                    where
13093                        E: serde::de::Error,
13094                    {
13095                        match value {
13096                            "parent" => Ok(GeneratedField::Parent),
13097                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13098                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13099                            "vpc" => Ok(GeneratedField::Vpc),
13100                            _ => Ok(GeneratedField::__SkipField__),
13101                        }
13102                    }
13103                }
13104                deserializer.deserialize_identifier(GeneratedVisitor)
13105            }
13106        }
13107        struct GeneratedVisitor;
13108        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13109            type Value = ListInternetGatewaysRequest;
13110            fn expecting(
13111                &self,
13112                formatter: &mut std::fmt::Formatter<'_>,
13113            ) -> std::fmt::Result {
13114                formatter
13115                    .write_str(
13116                        "struct origincloud.network.v1beta1.ListInternetGatewaysRequest",
13117                    )
13118            }
13119            fn visit_map<V>(
13120                self,
13121                mut map_: V,
13122            ) -> std::result::Result<ListInternetGatewaysRequest, V::Error>
13123            where
13124                V: serde::de::MapAccess<'de>,
13125            {
13126                let mut parent__ = None;
13127                let mut page_size__ = None;
13128                let mut page_token__ = None;
13129                let mut vpc__ = None;
13130                while let Some(k) = map_.next_key()? {
13131                    match k {
13132                        GeneratedField::Parent => {
13133                            if parent__.is_some() {
13134                                return Err(serde::de::Error::duplicate_field("parent"));
13135                            }
13136                            parent__ = Some(map_.next_value()?);
13137                        }
13138                        GeneratedField::PageSize => {
13139                            if page_size__.is_some() {
13140                                return Err(serde::de::Error::duplicate_field("pageSize"));
13141                            }
13142                            page_size__ = Some(
13143                                map_
13144                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13145                                    .0,
13146                            );
13147                        }
13148                        GeneratedField::PageToken => {
13149                            if page_token__.is_some() {
13150                                return Err(serde::de::Error::duplicate_field("pageToken"));
13151                            }
13152                            page_token__ = Some(map_.next_value()?);
13153                        }
13154                        GeneratedField::Vpc => {
13155                            if vpc__.is_some() {
13156                                return Err(serde::de::Error::duplicate_field("vpc"));
13157                            }
13158                            vpc__ = Some(map_.next_value()?);
13159                        }
13160                        GeneratedField::__SkipField__ => {
13161                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13162                        }
13163                    }
13164                }
13165                Ok(ListInternetGatewaysRequest {
13166                    parent: parent__.unwrap_or_default(),
13167                    page_size: page_size__.unwrap_or_default(),
13168                    page_token: page_token__.unwrap_or_default(),
13169                    vpc: vpc__.unwrap_or_default(),
13170                })
13171            }
13172        }
13173        deserializer
13174            .deserialize_struct(
13175                "origincloud.network.v1beta1.ListInternetGatewaysRequest",
13176                FIELDS,
13177                GeneratedVisitor,
13178            )
13179    }
13180}
13181impl serde::Serialize for ListInternetGatewaysResponse {
13182    #[allow(deprecated)]
13183    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13184    where
13185        S: serde::Serializer,
13186    {
13187        use serde::ser::SerializeStruct;
13188        let mut len = 0;
13189        if !self.internet_gateways.is_empty() {
13190            len += 1;
13191        }
13192        if !self.next_page_token.is_empty() {
13193            len += 1;
13194        }
13195        let mut struct_ser = serializer
13196            .serialize_struct(
13197                "origincloud.network.v1beta1.ListInternetGatewaysResponse",
13198                len,
13199            )?;
13200        if !self.internet_gateways.is_empty() {
13201            struct_ser.serialize_field("internetGateways", &self.internet_gateways)?;
13202        }
13203        if !self.next_page_token.is_empty() {
13204            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13205        }
13206        struct_ser.end()
13207    }
13208}
13209impl<'de> serde::Deserialize<'de> for ListInternetGatewaysResponse {
13210    #[allow(deprecated)]
13211    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13212    where
13213        D: serde::Deserializer<'de>,
13214    {
13215        const FIELDS: &[&str] = &[
13216            "internet_gateways",
13217            "internetGateways",
13218            "next_page_token",
13219            "nextPageToken",
13220        ];
13221        #[allow(clippy::enum_variant_names)]
13222        enum GeneratedField {
13223            InternetGateways,
13224            NextPageToken,
13225            __SkipField__,
13226        }
13227        impl<'de> serde::Deserialize<'de> for GeneratedField {
13228            fn deserialize<D>(
13229                deserializer: D,
13230            ) -> std::result::Result<GeneratedField, D::Error>
13231            where
13232                D: serde::Deserializer<'de>,
13233            {
13234                struct GeneratedVisitor;
13235                impl serde::de::Visitor<'_> for GeneratedVisitor {
13236                    type Value = GeneratedField;
13237                    fn expecting(
13238                        &self,
13239                        formatter: &mut std::fmt::Formatter<'_>,
13240                    ) -> std::fmt::Result {
13241                        write!(formatter, "expected one of: {:?}", & FIELDS)
13242                    }
13243                    #[allow(unused_variables)]
13244                    fn visit_str<E>(
13245                        self,
13246                        value: &str,
13247                    ) -> std::result::Result<GeneratedField, E>
13248                    where
13249                        E: serde::de::Error,
13250                    {
13251                        match value {
13252                            "internetGateways" | "internet_gateways" => {
13253                                Ok(GeneratedField::InternetGateways)
13254                            }
13255                            "nextPageToken" | "next_page_token" => {
13256                                Ok(GeneratedField::NextPageToken)
13257                            }
13258                            _ => Ok(GeneratedField::__SkipField__),
13259                        }
13260                    }
13261                }
13262                deserializer.deserialize_identifier(GeneratedVisitor)
13263            }
13264        }
13265        struct GeneratedVisitor;
13266        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13267            type Value = ListInternetGatewaysResponse;
13268            fn expecting(
13269                &self,
13270                formatter: &mut std::fmt::Formatter<'_>,
13271            ) -> std::fmt::Result {
13272                formatter
13273                    .write_str(
13274                        "struct origincloud.network.v1beta1.ListInternetGatewaysResponse",
13275                    )
13276            }
13277            fn visit_map<V>(
13278                self,
13279                mut map_: V,
13280            ) -> std::result::Result<ListInternetGatewaysResponse, V::Error>
13281            where
13282                V: serde::de::MapAccess<'de>,
13283            {
13284                let mut internet_gateways__ = None;
13285                let mut next_page_token__ = None;
13286                while let Some(k) = map_.next_key()? {
13287                    match k {
13288                        GeneratedField::InternetGateways => {
13289                            if internet_gateways__.is_some() {
13290                                return Err(
13291                                    serde::de::Error::duplicate_field("internetGateways"),
13292                                );
13293                            }
13294                            internet_gateways__ = Some(map_.next_value()?);
13295                        }
13296                        GeneratedField::NextPageToken => {
13297                            if next_page_token__.is_some() {
13298                                return Err(
13299                                    serde::de::Error::duplicate_field("nextPageToken"),
13300                                );
13301                            }
13302                            next_page_token__ = Some(map_.next_value()?);
13303                        }
13304                        GeneratedField::__SkipField__ => {
13305                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13306                        }
13307                    }
13308                }
13309                Ok(ListInternetGatewaysResponse {
13310                    internet_gateways: internet_gateways__.unwrap_or_default(),
13311                    next_page_token: next_page_token__.unwrap_or_default(),
13312                })
13313            }
13314        }
13315        deserializer
13316            .deserialize_struct(
13317                "origincloud.network.v1beta1.ListInternetGatewaysResponse",
13318                FIELDS,
13319                GeneratedVisitor,
13320            )
13321    }
13322}
13323impl serde::Serialize for ListNatGatewaysRequest {
13324    #[allow(deprecated)]
13325    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13326    where
13327        S: serde::Serializer,
13328    {
13329        use serde::ser::SerializeStruct;
13330        let mut len = 0;
13331        if !self.parent.is_empty() {
13332            len += 1;
13333        }
13334        if self.page_size != 0 {
13335            len += 1;
13336        }
13337        if !self.page_token.is_empty() {
13338            len += 1;
13339        }
13340        let mut struct_ser = serializer
13341            .serialize_struct(
13342                "origincloud.network.v1beta1.ListNatGatewaysRequest",
13343                len,
13344            )?;
13345        if !self.parent.is_empty() {
13346            struct_ser.serialize_field("parent", &self.parent)?;
13347        }
13348        if self.page_size != 0 {
13349            struct_ser.serialize_field("pageSize", &self.page_size)?;
13350        }
13351        if !self.page_token.is_empty() {
13352            struct_ser.serialize_field("pageToken", &self.page_token)?;
13353        }
13354        struct_ser.end()
13355    }
13356}
13357impl<'de> serde::Deserialize<'de> for ListNatGatewaysRequest {
13358    #[allow(deprecated)]
13359    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13360    where
13361        D: serde::Deserializer<'de>,
13362    {
13363        const FIELDS: &[&str] = &[
13364            "parent",
13365            "page_size",
13366            "pageSize",
13367            "page_token",
13368            "pageToken",
13369        ];
13370        #[allow(clippy::enum_variant_names)]
13371        enum GeneratedField {
13372            Parent,
13373            PageSize,
13374            PageToken,
13375            __SkipField__,
13376        }
13377        impl<'de> serde::Deserialize<'de> for GeneratedField {
13378            fn deserialize<D>(
13379                deserializer: D,
13380            ) -> std::result::Result<GeneratedField, D::Error>
13381            where
13382                D: serde::Deserializer<'de>,
13383            {
13384                struct GeneratedVisitor;
13385                impl serde::de::Visitor<'_> for GeneratedVisitor {
13386                    type Value = GeneratedField;
13387                    fn expecting(
13388                        &self,
13389                        formatter: &mut std::fmt::Formatter<'_>,
13390                    ) -> std::fmt::Result {
13391                        write!(formatter, "expected one of: {:?}", & FIELDS)
13392                    }
13393                    #[allow(unused_variables)]
13394                    fn visit_str<E>(
13395                        self,
13396                        value: &str,
13397                    ) -> std::result::Result<GeneratedField, E>
13398                    where
13399                        E: serde::de::Error,
13400                    {
13401                        match value {
13402                            "parent" => Ok(GeneratedField::Parent),
13403                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13404                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13405                            _ => Ok(GeneratedField::__SkipField__),
13406                        }
13407                    }
13408                }
13409                deserializer.deserialize_identifier(GeneratedVisitor)
13410            }
13411        }
13412        struct GeneratedVisitor;
13413        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13414            type Value = ListNatGatewaysRequest;
13415            fn expecting(
13416                &self,
13417                formatter: &mut std::fmt::Formatter<'_>,
13418            ) -> std::fmt::Result {
13419                formatter
13420                    .write_str(
13421                        "struct origincloud.network.v1beta1.ListNatGatewaysRequest",
13422                    )
13423            }
13424            fn visit_map<V>(
13425                self,
13426                mut map_: V,
13427            ) -> std::result::Result<ListNatGatewaysRequest, V::Error>
13428            where
13429                V: serde::de::MapAccess<'de>,
13430            {
13431                let mut parent__ = None;
13432                let mut page_size__ = None;
13433                let mut page_token__ = None;
13434                while let Some(k) = map_.next_key()? {
13435                    match k {
13436                        GeneratedField::Parent => {
13437                            if parent__.is_some() {
13438                                return Err(serde::de::Error::duplicate_field("parent"));
13439                            }
13440                            parent__ = Some(map_.next_value()?);
13441                        }
13442                        GeneratedField::PageSize => {
13443                            if page_size__.is_some() {
13444                                return Err(serde::de::Error::duplicate_field("pageSize"));
13445                            }
13446                            page_size__ = Some(
13447                                map_
13448                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13449                                    .0,
13450                            );
13451                        }
13452                        GeneratedField::PageToken => {
13453                            if page_token__.is_some() {
13454                                return Err(serde::de::Error::duplicate_field("pageToken"));
13455                            }
13456                            page_token__ = Some(map_.next_value()?);
13457                        }
13458                        GeneratedField::__SkipField__ => {
13459                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13460                        }
13461                    }
13462                }
13463                Ok(ListNatGatewaysRequest {
13464                    parent: parent__.unwrap_or_default(),
13465                    page_size: page_size__.unwrap_or_default(),
13466                    page_token: page_token__.unwrap_or_default(),
13467                })
13468            }
13469        }
13470        deserializer
13471            .deserialize_struct(
13472                "origincloud.network.v1beta1.ListNatGatewaysRequest",
13473                FIELDS,
13474                GeneratedVisitor,
13475            )
13476    }
13477}
13478impl serde::Serialize for ListNatGatewaysResponse {
13479    #[allow(deprecated)]
13480    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13481    where
13482        S: serde::Serializer,
13483    {
13484        use serde::ser::SerializeStruct;
13485        let mut len = 0;
13486        if !self.nat_gateways.is_empty() {
13487            len += 1;
13488        }
13489        if !self.next_page_token.is_empty() {
13490            len += 1;
13491        }
13492        let mut struct_ser = serializer
13493            .serialize_struct(
13494                "origincloud.network.v1beta1.ListNatGatewaysResponse",
13495                len,
13496            )?;
13497        if !self.nat_gateways.is_empty() {
13498            struct_ser.serialize_field("natGateways", &self.nat_gateways)?;
13499        }
13500        if !self.next_page_token.is_empty() {
13501            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13502        }
13503        struct_ser.end()
13504    }
13505}
13506impl<'de> serde::Deserialize<'de> for ListNatGatewaysResponse {
13507    #[allow(deprecated)]
13508    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13509    where
13510        D: serde::Deserializer<'de>,
13511    {
13512        const FIELDS: &[&str] = &[
13513            "nat_gateways",
13514            "natGateways",
13515            "next_page_token",
13516            "nextPageToken",
13517        ];
13518        #[allow(clippy::enum_variant_names)]
13519        enum GeneratedField {
13520            NatGateways,
13521            NextPageToken,
13522            __SkipField__,
13523        }
13524        impl<'de> serde::Deserialize<'de> for GeneratedField {
13525            fn deserialize<D>(
13526                deserializer: D,
13527            ) -> std::result::Result<GeneratedField, D::Error>
13528            where
13529                D: serde::Deserializer<'de>,
13530            {
13531                struct GeneratedVisitor;
13532                impl serde::de::Visitor<'_> for GeneratedVisitor {
13533                    type Value = GeneratedField;
13534                    fn expecting(
13535                        &self,
13536                        formatter: &mut std::fmt::Formatter<'_>,
13537                    ) -> std::fmt::Result {
13538                        write!(formatter, "expected one of: {:?}", & FIELDS)
13539                    }
13540                    #[allow(unused_variables)]
13541                    fn visit_str<E>(
13542                        self,
13543                        value: &str,
13544                    ) -> std::result::Result<GeneratedField, E>
13545                    where
13546                        E: serde::de::Error,
13547                    {
13548                        match value {
13549                            "natGateways" | "nat_gateways" => {
13550                                Ok(GeneratedField::NatGateways)
13551                            }
13552                            "nextPageToken" | "next_page_token" => {
13553                                Ok(GeneratedField::NextPageToken)
13554                            }
13555                            _ => Ok(GeneratedField::__SkipField__),
13556                        }
13557                    }
13558                }
13559                deserializer.deserialize_identifier(GeneratedVisitor)
13560            }
13561        }
13562        struct GeneratedVisitor;
13563        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13564            type Value = ListNatGatewaysResponse;
13565            fn expecting(
13566                &self,
13567                formatter: &mut std::fmt::Formatter<'_>,
13568            ) -> std::fmt::Result {
13569                formatter
13570                    .write_str(
13571                        "struct origincloud.network.v1beta1.ListNatGatewaysResponse",
13572                    )
13573            }
13574            fn visit_map<V>(
13575                self,
13576                mut map_: V,
13577            ) -> std::result::Result<ListNatGatewaysResponse, V::Error>
13578            where
13579                V: serde::de::MapAccess<'de>,
13580            {
13581                let mut nat_gateways__ = None;
13582                let mut next_page_token__ = None;
13583                while let Some(k) = map_.next_key()? {
13584                    match k {
13585                        GeneratedField::NatGateways => {
13586                            if nat_gateways__.is_some() {
13587                                return Err(
13588                                    serde::de::Error::duplicate_field("natGateways"),
13589                                );
13590                            }
13591                            nat_gateways__ = Some(map_.next_value()?);
13592                        }
13593                        GeneratedField::NextPageToken => {
13594                            if next_page_token__.is_some() {
13595                                return Err(
13596                                    serde::de::Error::duplicate_field("nextPageToken"),
13597                                );
13598                            }
13599                            next_page_token__ = Some(map_.next_value()?);
13600                        }
13601                        GeneratedField::__SkipField__ => {
13602                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13603                        }
13604                    }
13605                }
13606                Ok(ListNatGatewaysResponse {
13607                    nat_gateways: nat_gateways__.unwrap_or_default(),
13608                    next_page_token: next_page_token__.unwrap_or_default(),
13609                })
13610            }
13611        }
13612        deserializer
13613            .deserialize_struct(
13614                "origincloud.network.v1beta1.ListNatGatewaysResponse",
13615                FIELDS,
13616                GeneratedVisitor,
13617            )
13618    }
13619}
13620impl serde::Serialize for ListNetworkInterfacesRequest {
13621    #[allow(deprecated)]
13622    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13623    where
13624        S: serde::Serializer,
13625    {
13626        use serde::ser::SerializeStruct;
13627        let mut len = 0;
13628        if !self.parent.is_empty() {
13629            len += 1;
13630        }
13631        if self.page_size != 0 {
13632            len += 1;
13633        }
13634        if !self.page_token.is_empty() {
13635            len += 1;
13636        }
13637        if !self.subnet.is_empty() {
13638            len += 1;
13639        }
13640        let mut struct_ser = serializer
13641            .serialize_struct(
13642                "origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13643                len,
13644            )?;
13645        if !self.parent.is_empty() {
13646            struct_ser.serialize_field("parent", &self.parent)?;
13647        }
13648        if self.page_size != 0 {
13649            struct_ser.serialize_field("pageSize", &self.page_size)?;
13650        }
13651        if !self.page_token.is_empty() {
13652            struct_ser.serialize_field("pageToken", &self.page_token)?;
13653        }
13654        if !self.subnet.is_empty() {
13655            struct_ser.serialize_field("subnet", &self.subnet)?;
13656        }
13657        struct_ser.end()
13658    }
13659}
13660impl<'de> serde::Deserialize<'de> for ListNetworkInterfacesRequest {
13661    #[allow(deprecated)]
13662    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13663    where
13664        D: serde::Deserializer<'de>,
13665    {
13666        const FIELDS: &[&str] = &[
13667            "parent",
13668            "page_size",
13669            "pageSize",
13670            "page_token",
13671            "pageToken",
13672            "subnet",
13673        ];
13674        #[allow(clippy::enum_variant_names)]
13675        enum GeneratedField {
13676            Parent,
13677            PageSize,
13678            PageToken,
13679            Subnet,
13680            __SkipField__,
13681        }
13682        impl<'de> serde::Deserialize<'de> for GeneratedField {
13683            fn deserialize<D>(
13684                deserializer: D,
13685            ) -> std::result::Result<GeneratedField, D::Error>
13686            where
13687                D: serde::Deserializer<'de>,
13688            {
13689                struct GeneratedVisitor;
13690                impl serde::de::Visitor<'_> for GeneratedVisitor {
13691                    type Value = GeneratedField;
13692                    fn expecting(
13693                        &self,
13694                        formatter: &mut std::fmt::Formatter<'_>,
13695                    ) -> std::fmt::Result {
13696                        write!(formatter, "expected one of: {:?}", & FIELDS)
13697                    }
13698                    #[allow(unused_variables)]
13699                    fn visit_str<E>(
13700                        self,
13701                        value: &str,
13702                    ) -> std::result::Result<GeneratedField, E>
13703                    where
13704                        E: serde::de::Error,
13705                    {
13706                        match value {
13707                            "parent" => Ok(GeneratedField::Parent),
13708                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13709                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13710                            "subnet" => Ok(GeneratedField::Subnet),
13711                            _ => Ok(GeneratedField::__SkipField__),
13712                        }
13713                    }
13714                }
13715                deserializer.deserialize_identifier(GeneratedVisitor)
13716            }
13717        }
13718        struct GeneratedVisitor;
13719        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13720            type Value = ListNetworkInterfacesRequest;
13721            fn expecting(
13722                &self,
13723                formatter: &mut std::fmt::Formatter<'_>,
13724            ) -> std::fmt::Result {
13725                formatter
13726                    .write_str(
13727                        "struct origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13728                    )
13729            }
13730            fn visit_map<V>(
13731                self,
13732                mut map_: V,
13733            ) -> std::result::Result<ListNetworkInterfacesRequest, V::Error>
13734            where
13735                V: serde::de::MapAccess<'de>,
13736            {
13737                let mut parent__ = None;
13738                let mut page_size__ = None;
13739                let mut page_token__ = None;
13740                let mut subnet__ = None;
13741                while let Some(k) = map_.next_key()? {
13742                    match k {
13743                        GeneratedField::Parent => {
13744                            if parent__.is_some() {
13745                                return Err(serde::de::Error::duplicate_field("parent"));
13746                            }
13747                            parent__ = Some(map_.next_value()?);
13748                        }
13749                        GeneratedField::PageSize => {
13750                            if page_size__.is_some() {
13751                                return Err(serde::de::Error::duplicate_field("pageSize"));
13752                            }
13753                            page_size__ = Some(
13754                                map_
13755                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13756                                    .0,
13757                            );
13758                        }
13759                        GeneratedField::PageToken => {
13760                            if page_token__.is_some() {
13761                                return Err(serde::de::Error::duplicate_field("pageToken"));
13762                            }
13763                            page_token__ = Some(map_.next_value()?);
13764                        }
13765                        GeneratedField::Subnet => {
13766                            if subnet__.is_some() {
13767                                return Err(serde::de::Error::duplicate_field("subnet"));
13768                            }
13769                            subnet__ = Some(map_.next_value()?);
13770                        }
13771                        GeneratedField::__SkipField__ => {
13772                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13773                        }
13774                    }
13775                }
13776                Ok(ListNetworkInterfacesRequest {
13777                    parent: parent__.unwrap_or_default(),
13778                    page_size: page_size__.unwrap_or_default(),
13779                    page_token: page_token__.unwrap_or_default(),
13780                    subnet: subnet__.unwrap_or_default(),
13781                })
13782            }
13783        }
13784        deserializer
13785            .deserialize_struct(
13786                "origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13787                FIELDS,
13788                GeneratedVisitor,
13789            )
13790    }
13791}
13792impl serde::Serialize for ListNetworkInterfacesResponse {
13793    #[allow(deprecated)]
13794    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13795    where
13796        S: serde::Serializer,
13797    {
13798        use serde::ser::SerializeStruct;
13799        let mut len = 0;
13800        if !self.network_interfaces.is_empty() {
13801            len += 1;
13802        }
13803        if !self.next_page_token.is_empty() {
13804            len += 1;
13805        }
13806        let mut struct_ser = serializer
13807            .serialize_struct(
13808                "origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13809                len,
13810            )?;
13811        if !self.network_interfaces.is_empty() {
13812            struct_ser.serialize_field("networkInterfaces", &self.network_interfaces)?;
13813        }
13814        if !self.next_page_token.is_empty() {
13815            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13816        }
13817        struct_ser.end()
13818    }
13819}
13820impl<'de> serde::Deserialize<'de> for ListNetworkInterfacesResponse {
13821    #[allow(deprecated)]
13822    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13823    where
13824        D: serde::Deserializer<'de>,
13825    {
13826        const FIELDS: &[&str] = &[
13827            "network_interfaces",
13828            "networkInterfaces",
13829            "next_page_token",
13830            "nextPageToken",
13831        ];
13832        #[allow(clippy::enum_variant_names)]
13833        enum GeneratedField {
13834            NetworkInterfaces,
13835            NextPageToken,
13836            __SkipField__,
13837        }
13838        impl<'de> serde::Deserialize<'de> for GeneratedField {
13839            fn deserialize<D>(
13840                deserializer: D,
13841            ) -> std::result::Result<GeneratedField, D::Error>
13842            where
13843                D: serde::Deserializer<'de>,
13844            {
13845                struct GeneratedVisitor;
13846                impl serde::de::Visitor<'_> for GeneratedVisitor {
13847                    type Value = GeneratedField;
13848                    fn expecting(
13849                        &self,
13850                        formatter: &mut std::fmt::Formatter<'_>,
13851                    ) -> std::fmt::Result {
13852                        write!(formatter, "expected one of: {:?}", & FIELDS)
13853                    }
13854                    #[allow(unused_variables)]
13855                    fn visit_str<E>(
13856                        self,
13857                        value: &str,
13858                    ) -> std::result::Result<GeneratedField, E>
13859                    where
13860                        E: serde::de::Error,
13861                    {
13862                        match value {
13863                            "networkInterfaces" | "network_interfaces" => {
13864                                Ok(GeneratedField::NetworkInterfaces)
13865                            }
13866                            "nextPageToken" | "next_page_token" => {
13867                                Ok(GeneratedField::NextPageToken)
13868                            }
13869                            _ => Ok(GeneratedField::__SkipField__),
13870                        }
13871                    }
13872                }
13873                deserializer.deserialize_identifier(GeneratedVisitor)
13874            }
13875        }
13876        struct GeneratedVisitor;
13877        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13878            type Value = ListNetworkInterfacesResponse;
13879            fn expecting(
13880                &self,
13881                formatter: &mut std::fmt::Formatter<'_>,
13882            ) -> std::fmt::Result {
13883                formatter
13884                    .write_str(
13885                        "struct origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13886                    )
13887            }
13888            fn visit_map<V>(
13889                self,
13890                mut map_: V,
13891            ) -> std::result::Result<ListNetworkInterfacesResponse, V::Error>
13892            where
13893                V: serde::de::MapAccess<'de>,
13894            {
13895                let mut network_interfaces__ = None;
13896                let mut next_page_token__ = None;
13897                while let Some(k) = map_.next_key()? {
13898                    match k {
13899                        GeneratedField::NetworkInterfaces => {
13900                            if network_interfaces__.is_some() {
13901                                return Err(
13902                                    serde::de::Error::duplicate_field("networkInterfaces"),
13903                                );
13904                            }
13905                            network_interfaces__ = Some(map_.next_value()?);
13906                        }
13907                        GeneratedField::NextPageToken => {
13908                            if next_page_token__.is_some() {
13909                                return Err(
13910                                    serde::de::Error::duplicate_field("nextPageToken"),
13911                                );
13912                            }
13913                            next_page_token__ = Some(map_.next_value()?);
13914                        }
13915                        GeneratedField::__SkipField__ => {
13916                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13917                        }
13918                    }
13919                }
13920                Ok(ListNetworkInterfacesResponse {
13921                    network_interfaces: network_interfaces__.unwrap_or_default(),
13922                    next_page_token: next_page_token__.unwrap_or_default(),
13923                })
13924            }
13925        }
13926        deserializer
13927            .deserialize_struct(
13928                "origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13929                FIELDS,
13930                GeneratedVisitor,
13931            )
13932    }
13933}
13934impl serde::Serialize for ListRouteTableAssociationsRequest {
13935    #[allow(deprecated)]
13936    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13937    where
13938        S: serde::Serializer,
13939    {
13940        use serde::ser::SerializeStruct;
13941        let mut len = 0;
13942        if !self.parent.is_empty() {
13943            len += 1;
13944        }
13945        if self.page_size != 0 {
13946            len += 1;
13947        }
13948        if !self.page_token.is_empty() {
13949            len += 1;
13950        }
13951        let mut struct_ser = serializer
13952            .serialize_struct(
13953                "origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
13954                len,
13955            )?;
13956        if !self.parent.is_empty() {
13957            struct_ser.serialize_field("parent", &self.parent)?;
13958        }
13959        if self.page_size != 0 {
13960            struct_ser.serialize_field("pageSize", &self.page_size)?;
13961        }
13962        if !self.page_token.is_empty() {
13963            struct_ser.serialize_field("pageToken", &self.page_token)?;
13964        }
13965        struct_ser.end()
13966    }
13967}
13968impl<'de> serde::Deserialize<'de> for ListRouteTableAssociationsRequest {
13969    #[allow(deprecated)]
13970    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13971    where
13972        D: serde::Deserializer<'de>,
13973    {
13974        const FIELDS: &[&str] = &[
13975            "parent",
13976            "page_size",
13977            "pageSize",
13978            "page_token",
13979            "pageToken",
13980        ];
13981        #[allow(clippy::enum_variant_names)]
13982        enum GeneratedField {
13983            Parent,
13984            PageSize,
13985            PageToken,
13986            __SkipField__,
13987        }
13988        impl<'de> serde::Deserialize<'de> for GeneratedField {
13989            fn deserialize<D>(
13990                deserializer: D,
13991            ) -> std::result::Result<GeneratedField, D::Error>
13992            where
13993                D: serde::Deserializer<'de>,
13994            {
13995                struct GeneratedVisitor;
13996                impl serde::de::Visitor<'_> for GeneratedVisitor {
13997                    type Value = GeneratedField;
13998                    fn expecting(
13999                        &self,
14000                        formatter: &mut std::fmt::Formatter<'_>,
14001                    ) -> std::fmt::Result {
14002                        write!(formatter, "expected one of: {:?}", & FIELDS)
14003                    }
14004                    #[allow(unused_variables)]
14005                    fn visit_str<E>(
14006                        self,
14007                        value: &str,
14008                    ) -> std::result::Result<GeneratedField, E>
14009                    where
14010                        E: serde::de::Error,
14011                    {
14012                        match value {
14013                            "parent" => Ok(GeneratedField::Parent),
14014                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14015                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14016                            _ => Ok(GeneratedField::__SkipField__),
14017                        }
14018                    }
14019                }
14020                deserializer.deserialize_identifier(GeneratedVisitor)
14021            }
14022        }
14023        struct GeneratedVisitor;
14024        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14025            type Value = ListRouteTableAssociationsRequest;
14026            fn expecting(
14027                &self,
14028                formatter: &mut std::fmt::Formatter<'_>,
14029            ) -> std::fmt::Result {
14030                formatter
14031                    .write_str(
14032                        "struct origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
14033                    )
14034            }
14035            fn visit_map<V>(
14036                self,
14037                mut map_: V,
14038            ) -> std::result::Result<ListRouteTableAssociationsRequest, V::Error>
14039            where
14040                V: serde::de::MapAccess<'de>,
14041            {
14042                let mut parent__ = None;
14043                let mut page_size__ = None;
14044                let mut page_token__ = None;
14045                while let Some(k) = map_.next_key()? {
14046                    match k {
14047                        GeneratedField::Parent => {
14048                            if parent__.is_some() {
14049                                return Err(serde::de::Error::duplicate_field("parent"));
14050                            }
14051                            parent__ = Some(map_.next_value()?);
14052                        }
14053                        GeneratedField::PageSize => {
14054                            if page_size__.is_some() {
14055                                return Err(serde::de::Error::duplicate_field("pageSize"));
14056                            }
14057                            page_size__ = Some(
14058                                map_
14059                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14060                                    .0,
14061                            );
14062                        }
14063                        GeneratedField::PageToken => {
14064                            if page_token__.is_some() {
14065                                return Err(serde::de::Error::duplicate_field("pageToken"));
14066                            }
14067                            page_token__ = Some(map_.next_value()?);
14068                        }
14069                        GeneratedField::__SkipField__ => {
14070                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14071                        }
14072                    }
14073                }
14074                Ok(ListRouteTableAssociationsRequest {
14075                    parent: parent__.unwrap_or_default(),
14076                    page_size: page_size__.unwrap_or_default(),
14077                    page_token: page_token__.unwrap_or_default(),
14078                })
14079            }
14080        }
14081        deserializer
14082            .deserialize_struct(
14083                "origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
14084                FIELDS,
14085                GeneratedVisitor,
14086            )
14087    }
14088}
14089impl serde::Serialize for ListRouteTableAssociationsResponse {
14090    #[allow(deprecated)]
14091    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14092    where
14093        S: serde::Serializer,
14094    {
14095        use serde::ser::SerializeStruct;
14096        let mut len = 0;
14097        if !self.route_table_associations.is_empty() {
14098            len += 1;
14099        }
14100        if !self.next_page_token.is_empty() {
14101            len += 1;
14102        }
14103        let mut struct_ser = serializer
14104            .serialize_struct(
14105                "origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14106                len,
14107            )?;
14108        if !self.route_table_associations.is_empty() {
14109            struct_ser
14110                .serialize_field(
14111                    "routeTableAssociations",
14112                    &self.route_table_associations,
14113                )?;
14114        }
14115        if !self.next_page_token.is_empty() {
14116            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14117        }
14118        struct_ser.end()
14119    }
14120}
14121impl<'de> serde::Deserialize<'de> for ListRouteTableAssociationsResponse {
14122    #[allow(deprecated)]
14123    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14124    where
14125        D: serde::Deserializer<'de>,
14126    {
14127        const FIELDS: &[&str] = &[
14128            "route_table_associations",
14129            "routeTableAssociations",
14130            "next_page_token",
14131            "nextPageToken",
14132        ];
14133        #[allow(clippy::enum_variant_names)]
14134        enum GeneratedField {
14135            RouteTableAssociations,
14136            NextPageToken,
14137            __SkipField__,
14138        }
14139        impl<'de> serde::Deserialize<'de> for GeneratedField {
14140            fn deserialize<D>(
14141                deserializer: D,
14142            ) -> std::result::Result<GeneratedField, D::Error>
14143            where
14144                D: serde::Deserializer<'de>,
14145            {
14146                struct GeneratedVisitor;
14147                impl serde::de::Visitor<'_> for GeneratedVisitor {
14148                    type Value = GeneratedField;
14149                    fn expecting(
14150                        &self,
14151                        formatter: &mut std::fmt::Formatter<'_>,
14152                    ) -> std::fmt::Result {
14153                        write!(formatter, "expected one of: {:?}", & FIELDS)
14154                    }
14155                    #[allow(unused_variables)]
14156                    fn visit_str<E>(
14157                        self,
14158                        value: &str,
14159                    ) -> std::result::Result<GeneratedField, E>
14160                    where
14161                        E: serde::de::Error,
14162                    {
14163                        match value {
14164                            "routeTableAssociations" | "route_table_associations" => {
14165                                Ok(GeneratedField::RouteTableAssociations)
14166                            }
14167                            "nextPageToken" | "next_page_token" => {
14168                                Ok(GeneratedField::NextPageToken)
14169                            }
14170                            _ => Ok(GeneratedField::__SkipField__),
14171                        }
14172                    }
14173                }
14174                deserializer.deserialize_identifier(GeneratedVisitor)
14175            }
14176        }
14177        struct GeneratedVisitor;
14178        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14179            type Value = ListRouteTableAssociationsResponse;
14180            fn expecting(
14181                &self,
14182                formatter: &mut std::fmt::Formatter<'_>,
14183            ) -> std::fmt::Result {
14184                formatter
14185                    .write_str(
14186                        "struct origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14187                    )
14188            }
14189            fn visit_map<V>(
14190                self,
14191                mut map_: V,
14192            ) -> std::result::Result<ListRouteTableAssociationsResponse, V::Error>
14193            where
14194                V: serde::de::MapAccess<'de>,
14195            {
14196                let mut route_table_associations__ = None;
14197                let mut next_page_token__ = None;
14198                while let Some(k) = map_.next_key()? {
14199                    match k {
14200                        GeneratedField::RouteTableAssociations => {
14201                            if route_table_associations__.is_some() {
14202                                return Err(
14203                                    serde::de::Error::duplicate_field("routeTableAssociations"),
14204                                );
14205                            }
14206                            route_table_associations__ = Some(map_.next_value()?);
14207                        }
14208                        GeneratedField::NextPageToken => {
14209                            if next_page_token__.is_some() {
14210                                return Err(
14211                                    serde::de::Error::duplicate_field("nextPageToken"),
14212                                );
14213                            }
14214                            next_page_token__ = Some(map_.next_value()?);
14215                        }
14216                        GeneratedField::__SkipField__ => {
14217                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14218                        }
14219                    }
14220                }
14221                Ok(ListRouteTableAssociationsResponse {
14222                    route_table_associations: route_table_associations__
14223                        .unwrap_or_default(),
14224                    next_page_token: next_page_token__.unwrap_or_default(),
14225                })
14226            }
14227        }
14228        deserializer
14229            .deserialize_struct(
14230                "origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14231                FIELDS,
14232                GeneratedVisitor,
14233            )
14234    }
14235}
14236impl serde::Serialize for ListRouteTablesRequest {
14237    #[allow(deprecated)]
14238    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14239    where
14240        S: serde::Serializer,
14241    {
14242        use serde::ser::SerializeStruct;
14243        let mut len = 0;
14244        if !self.parent.is_empty() {
14245            len += 1;
14246        }
14247        if self.page_size != 0 {
14248            len += 1;
14249        }
14250        if !self.page_token.is_empty() {
14251            len += 1;
14252        }
14253        if !self.vpc.is_empty() {
14254            len += 1;
14255        }
14256        let mut struct_ser = serializer
14257            .serialize_struct(
14258                "origincloud.network.v1beta1.ListRouteTablesRequest",
14259                len,
14260            )?;
14261        if !self.parent.is_empty() {
14262            struct_ser.serialize_field("parent", &self.parent)?;
14263        }
14264        if self.page_size != 0 {
14265            struct_ser.serialize_field("pageSize", &self.page_size)?;
14266        }
14267        if !self.page_token.is_empty() {
14268            struct_ser.serialize_field("pageToken", &self.page_token)?;
14269        }
14270        if !self.vpc.is_empty() {
14271            struct_ser.serialize_field("vpc", &self.vpc)?;
14272        }
14273        struct_ser.end()
14274    }
14275}
14276impl<'de> serde::Deserialize<'de> for ListRouteTablesRequest {
14277    #[allow(deprecated)]
14278    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14279    where
14280        D: serde::Deserializer<'de>,
14281    {
14282        const FIELDS: &[&str] = &[
14283            "parent",
14284            "page_size",
14285            "pageSize",
14286            "page_token",
14287            "pageToken",
14288            "vpc",
14289        ];
14290        #[allow(clippy::enum_variant_names)]
14291        enum GeneratedField {
14292            Parent,
14293            PageSize,
14294            PageToken,
14295            Vpc,
14296            __SkipField__,
14297        }
14298        impl<'de> serde::Deserialize<'de> for GeneratedField {
14299            fn deserialize<D>(
14300                deserializer: D,
14301            ) -> std::result::Result<GeneratedField, D::Error>
14302            where
14303                D: serde::Deserializer<'de>,
14304            {
14305                struct GeneratedVisitor;
14306                impl serde::de::Visitor<'_> for GeneratedVisitor {
14307                    type Value = GeneratedField;
14308                    fn expecting(
14309                        &self,
14310                        formatter: &mut std::fmt::Formatter<'_>,
14311                    ) -> std::fmt::Result {
14312                        write!(formatter, "expected one of: {:?}", & FIELDS)
14313                    }
14314                    #[allow(unused_variables)]
14315                    fn visit_str<E>(
14316                        self,
14317                        value: &str,
14318                    ) -> std::result::Result<GeneratedField, E>
14319                    where
14320                        E: serde::de::Error,
14321                    {
14322                        match value {
14323                            "parent" => Ok(GeneratedField::Parent),
14324                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14325                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14326                            "vpc" => Ok(GeneratedField::Vpc),
14327                            _ => Ok(GeneratedField::__SkipField__),
14328                        }
14329                    }
14330                }
14331                deserializer.deserialize_identifier(GeneratedVisitor)
14332            }
14333        }
14334        struct GeneratedVisitor;
14335        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14336            type Value = ListRouteTablesRequest;
14337            fn expecting(
14338                &self,
14339                formatter: &mut std::fmt::Formatter<'_>,
14340            ) -> std::fmt::Result {
14341                formatter
14342                    .write_str(
14343                        "struct origincloud.network.v1beta1.ListRouteTablesRequest",
14344                    )
14345            }
14346            fn visit_map<V>(
14347                self,
14348                mut map_: V,
14349            ) -> std::result::Result<ListRouteTablesRequest, V::Error>
14350            where
14351                V: serde::de::MapAccess<'de>,
14352            {
14353                let mut parent__ = None;
14354                let mut page_size__ = None;
14355                let mut page_token__ = None;
14356                let mut vpc__ = None;
14357                while let Some(k) = map_.next_key()? {
14358                    match k {
14359                        GeneratedField::Parent => {
14360                            if parent__.is_some() {
14361                                return Err(serde::de::Error::duplicate_field("parent"));
14362                            }
14363                            parent__ = Some(map_.next_value()?);
14364                        }
14365                        GeneratedField::PageSize => {
14366                            if page_size__.is_some() {
14367                                return Err(serde::de::Error::duplicate_field("pageSize"));
14368                            }
14369                            page_size__ = Some(
14370                                map_
14371                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14372                                    .0,
14373                            );
14374                        }
14375                        GeneratedField::PageToken => {
14376                            if page_token__.is_some() {
14377                                return Err(serde::de::Error::duplicate_field("pageToken"));
14378                            }
14379                            page_token__ = Some(map_.next_value()?);
14380                        }
14381                        GeneratedField::Vpc => {
14382                            if vpc__.is_some() {
14383                                return Err(serde::de::Error::duplicate_field("vpc"));
14384                            }
14385                            vpc__ = Some(map_.next_value()?);
14386                        }
14387                        GeneratedField::__SkipField__ => {
14388                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14389                        }
14390                    }
14391                }
14392                Ok(ListRouteTablesRequest {
14393                    parent: parent__.unwrap_or_default(),
14394                    page_size: page_size__.unwrap_or_default(),
14395                    page_token: page_token__.unwrap_or_default(),
14396                    vpc: vpc__.unwrap_or_default(),
14397                })
14398            }
14399        }
14400        deserializer
14401            .deserialize_struct(
14402                "origincloud.network.v1beta1.ListRouteTablesRequest",
14403                FIELDS,
14404                GeneratedVisitor,
14405            )
14406    }
14407}
14408impl serde::Serialize for ListRouteTablesResponse {
14409    #[allow(deprecated)]
14410    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14411    where
14412        S: serde::Serializer,
14413    {
14414        use serde::ser::SerializeStruct;
14415        let mut len = 0;
14416        if !self.route_tables.is_empty() {
14417            len += 1;
14418        }
14419        if !self.next_page_token.is_empty() {
14420            len += 1;
14421        }
14422        let mut struct_ser = serializer
14423            .serialize_struct(
14424                "origincloud.network.v1beta1.ListRouteTablesResponse",
14425                len,
14426            )?;
14427        if !self.route_tables.is_empty() {
14428            struct_ser.serialize_field("routeTables", &self.route_tables)?;
14429        }
14430        if !self.next_page_token.is_empty() {
14431            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14432        }
14433        struct_ser.end()
14434    }
14435}
14436impl<'de> serde::Deserialize<'de> for ListRouteTablesResponse {
14437    #[allow(deprecated)]
14438    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14439    where
14440        D: serde::Deserializer<'de>,
14441    {
14442        const FIELDS: &[&str] = &[
14443            "route_tables",
14444            "routeTables",
14445            "next_page_token",
14446            "nextPageToken",
14447        ];
14448        #[allow(clippy::enum_variant_names)]
14449        enum GeneratedField {
14450            RouteTables,
14451            NextPageToken,
14452            __SkipField__,
14453        }
14454        impl<'de> serde::Deserialize<'de> for GeneratedField {
14455            fn deserialize<D>(
14456                deserializer: D,
14457            ) -> std::result::Result<GeneratedField, D::Error>
14458            where
14459                D: serde::Deserializer<'de>,
14460            {
14461                struct GeneratedVisitor;
14462                impl serde::de::Visitor<'_> for GeneratedVisitor {
14463                    type Value = GeneratedField;
14464                    fn expecting(
14465                        &self,
14466                        formatter: &mut std::fmt::Formatter<'_>,
14467                    ) -> std::fmt::Result {
14468                        write!(formatter, "expected one of: {:?}", & FIELDS)
14469                    }
14470                    #[allow(unused_variables)]
14471                    fn visit_str<E>(
14472                        self,
14473                        value: &str,
14474                    ) -> std::result::Result<GeneratedField, E>
14475                    where
14476                        E: serde::de::Error,
14477                    {
14478                        match value {
14479                            "routeTables" | "route_tables" => {
14480                                Ok(GeneratedField::RouteTables)
14481                            }
14482                            "nextPageToken" | "next_page_token" => {
14483                                Ok(GeneratedField::NextPageToken)
14484                            }
14485                            _ => Ok(GeneratedField::__SkipField__),
14486                        }
14487                    }
14488                }
14489                deserializer.deserialize_identifier(GeneratedVisitor)
14490            }
14491        }
14492        struct GeneratedVisitor;
14493        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14494            type Value = ListRouteTablesResponse;
14495            fn expecting(
14496                &self,
14497                formatter: &mut std::fmt::Formatter<'_>,
14498            ) -> std::fmt::Result {
14499                formatter
14500                    .write_str(
14501                        "struct origincloud.network.v1beta1.ListRouteTablesResponse",
14502                    )
14503            }
14504            fn visit_map<V>(
14505                self,
14506                mut map_: V,
14507            ) -> std::result::Result<ListRouteTablesResponse, V::Error>
14508            where
14509                V: serde::de::MapAccess<'de>,
14510            {
14511                let mut route_tables__ = None;
14512                let mut next_page_token__ = None;
14513                while let Some(k) = map_.next_key()? {
14514                    match k {
14515                        GeneratedField::RouteTables => {
14516                            if route_tables__.is_some() {
14517                                return Err(
14518                                    serde::de::Error::duplicate_field("routeTables"),
14519                                );
14520                            }
14521                            route_tables__ = Some(map_.next_value()?);
14522                        }
14523                        GeneratedField::NextPageToken => {
14524                            if next_page_token__.is_some() {
14525                                return Err(
14526                                    serde::de::Error::duplicate_field("nextPageToken"),
14527                                );
14528                            }
14529                            next_page_token__ = Some(map_.next_value()?);
14530                        }
14531                        GeneratedField::__SkipField__ => {
14532                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14533                        }
14534                    }
14535                }
14536                Ok(ListRouteTablesResponse {
14537                    route_tables: route_tables__.unwrap_or_default(),
14538                    next_page_token: next_page_token__.unwrap_or_default(),
14539                })
14540            }
14541        }
14542        deserializer
14543            .deserialize_struct(
14544                "origincloud.network.v1beta1.ListRouteTablesResponse",
14545                FIELDS,
14546                GeneratedVisitor,
14547            )
14548    }
14549}
14550impl serde::Serialize for ListRoutesRequest {
14551    #[allow(deprecated)]
14552    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14553    where
14554        S: serde::Serializer,
14555    {
14556        use serde::ser::SerializeStruct;
14557        let mut len = 0;
14558        if !self.parent.is_empty() {
14559            len += 1;
14560        }
14561        if self.page_size != 0 {
14562            len += 1;
14563        }
14564        if !self.page_token.is_empty() {
14565            len += 1;
14566        }
14567        let mut struct_ser = serializer
14568            .serialize_struct("origincloud.network.v1beta1.ListRoutesRequest", len)?;
14569        if !self.parent.is_empty() {
14570            struct_ser.serialize_field("parent", &self.parent)?;
14571        }
14572        if self.page_size != 0 {
14573            struct_ser.serialize_field("pageSize", &self.page_size)?;
14574        }
14575        if !self.page_token.is_empty() {
14576            struct_ser.serialize_field("pageToken", &self.page_token)?;
14577        }
14578        struct_ser.end()
14579    }
14580}
14581impl<'de> serde::Deserialize<'de> for ListRoutesRequest {
14582    #[allow(deprecated)]
14583    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14584    where
14585        D: serde::Deserializer<'de>,
14586    {
14587        const FIELDS: &[&str] = &[
14588            "parent",
14589            "page_size",
14590            "pageSize",
14591            "page_token",
14592            "pageToken",
14593        ];
14594        #[allow(clippy::enum_variant_names)]
14595        enum GeneratedField {
14596            Parent,
14597            PageSize,
14598            PageToken,
14599            __SkipField__,
14600        }
14601        impl<'de> serde::Deserialize<'de> for GeneratedField {
14602            fn deserialize<D>(
14603                deserializer: D,
14604            ) -> std::result::Result<GeneratedField, D::Error>
14605            where
14606                D: serde::Deserializer<'de>,
14607            {
14608                struct GeneratedVisitor;
14609                impl serde::de::Visitor<'_> for GeneratedVisitor {
14610                    type Value = GeneratedField;
14611                    fn expecting(
14612                        &self,
14613                        formatter: &mut std::fmt::Formatter<'_>,
14614                    ) -> std::fmt::Result {
14615                        write!(formatter, "expected one of: {:?}", & FIELDS)
14616                    }
14617                    #[allow(unused_variables)]
14618                    fn visit_str<E>(
14619                        self,
14620                        value: &str,
14621                    ) -> std::result::Result<GeneratedField, E>
14622                    where
14623                        E: serde::de::Error,
14624                    {
14625                        match value {
14626                            "parent" => Ok(GeneratedField::Parent),
14627                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14628                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14629                            _ => Ok(GeneratedField::__SkipField__),
14630                        }
14631                    }
14632                }
14633                deserializer.deserialize_identifier(GeneratedVisitor)
14634            }
14635        }
14636        struct GeneratedVisitor;
14637        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14638            type Value = ListRoutesRequest;
14639            fn expecting(
14640                &self,
14641                formatter: &mut std::fmt::Formatter<'_>,
14642            ) -> std::fmt::Result {
14643                formatter
14644                    .write_str("struct origincloud.network.v1beta1.ListRoutesRequest")
14645            }
14646            fn visit_map<V>(
14647                self,
14648                mut map_: V,
14649            ) -> std::result::Result<ListRoutesRequest, V::Error>
14650            where
14651                V: serde::de::MapAccess<'de>,
14652            {
14653                let mut parent__ = None;
14654                let mut page_size__ = None;
14655                let mut page_token__ = None;
14656                while let Some(k) = map_.next_key()? {
14657                    match k {
14658                        GeneratedField::Parent => {
14659                            if parent__.is_some() {
14660                                return Err(serde::de::Error::duplicate_field("parent"));
14661                            }
14662                            parent__ = Some(map_.next_value()?);
14663                        }
14664                        GeneratedField::PageSize => {
14665                            if page_size__.is_some() {
14666                                return Err(serde::de::Error::duplicate_field("pageSize"));
14667                            }
14668                            page_size__ = Some(
14669                                map_
14670                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14671                                    .0,
14672                            );
14673                        }
14674                        GeneratedField::PageToken => {
14675                            if page_token__.is_some() {
14676                                return Err(serde::de::Error::duplicate_field("pageToken"));
14677                            }
14678                            page_token__ = Some(map_.next_value()?);
14679                        }
14680                        GeneratedField::__SkipField__ => {
14681                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14682                        }
14683                    }
14684                }
14685                Ok(ListRoutesRequest {
14686                    parent: parent__.unwrap_or_default(),
14687                    page_size: page_size__.unwrap_or_default(),
14688                    page_token: page_token__.unwrap_or_default(),
14689                })
14690            }
14691        }
14692        deserializer
14693            .deserialize_struct(
14694                "origincloud.network.v1beta1.ListRoutesRequest",
14695                FIELDS,
14696                GeneratedVisitor,
14697            )
14698    }
14699}
14700impl serde::Serialize for ListRoutesResponse {
14701    #[allow(deprecated)]
14702    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14703    where
14704        S: serde::Serializer,
14705    {
14706        use serde::ser::SerializeStruct;
14707        let mut len = 0;
14708        if !self.routes.is_empty() {
14709            len += 1;
14710        }
14711        if !self.next_page_token.is_empty() {
14712            len += 1;
14713        }
14714        let mut struct_ser = serializer
14715            .serialize_struct("origincloud.network.v1beta1.ListRoutesResponse", len)?;
14716        if !self.routes.is_empty() {
14717            struct_ser.serialize_field("routes", &self.routes)?;
14718        }
14719        if !self.next_page_token.is_empty() {
14720            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14721        }
14722        struct_ser.end()
14723    }
14724}
14725impl<'de> serde::Deserialize<'de> for ListRoutesResponse {
14726    #[allow(deprecated)]
14727    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14728    where
14729        D: serde::Deserializer<'de>,
14730    {
14731        const FIELDS: &[&str] = &["routes", "next_page_token", "nextPageToken"];
14732        #[allow(clippy::enum_variant_names)]
14733        enum GeneratedField {
14734            Routes,
14735            NextPageToken,
14736            __SkipField__,
14737        }
14738        impl<'de> serde::Deserialize<'de> for GeneratedField {
14739            fn deserialize<D>(
14740                deserializer: D,
14741            ) -> std::result::Result<GeneratedField, D::Error>
14742            where
14743                D: serde::Deserializer<'de>,
14744            {
14745                struct GeneratedVisitor;
14746                impl serde::de::Visitor<'_> for GeneratedVisitor {
14747                    type Value = GeneratedField;
14748                    fn expecting(
14749                        &self,
14750                        formatter: &mut std::fmt::Formatter<'_>,
14751                    ) -> std::fmt::Result {
14752                        write!(formatter, "expected one of: {:?}", & FIELDS)
14753                    }
14754                    #[allow(unused_variables)]
14755                    fn visit_str<E>(
14756                        self,
14757                        value: &str,
14758                    ) -> std::result::Result<GeneratedField, E>
14759                    where
14760                        E: serde::de::Error,
14761                    {
14762                        match value {
14763                            "routes" => Ok(GeneratedField::Routes),
14764                            "nextPageToken" | "next_page_token" => {
14765                                Ok(GeneratedField::NextPageToken)
14766                            }
14767                            _ => Ok(GeneratedField::__SkipField__),
14768                        }
14769                    }
14770                }
14771                deserializer.deserialize_identifier(GeneratedVisitor)
14772            }
14773        }
14774        struct GeneratedVisitor;
14775        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14776            type Value = ListRoutesResponse;
14777            fn expecting(
14778                &self,
14779                formatter: &mut std::fmt::Formatter<'_>,
14780            ) -> std::fmt::Result {
14781                formatter
14782                    .write_str("struct origincloud.network.v1beta1.ListRoutesResponse")
14783            }
14784            fn visit_map<V>(
14785                self,
14786                mut map_: V,
14787            ) -> std::result::Result<ListRoutesResponse, V::Error>
14788            where
14789                V: serde::de::MapAccess<'de>,
14790            {
14791                let mut routes__ = None;
14792                let mut next_page_token__ = None;
14793                while let Some(k) = map_.next_key()? {
14794                    match k {
14795                        GeneratedField::Routes => {
14796                            if routes__.is_some() {
14797                                return Err(serde::de::Error::duplicate_field("routes"));
14798                            }
14799                            routes__ = Some(map_.next_value()?);
14800                        }
14801                        GeneratedField::NextPageToken => {
14802                            if next_page_token__.is_some() {
14803                                return Err(
14804                                    serde::de::Error::duplicate_field("nextPageToken"),
14805                                );
14806                            }
14807                            next_page_token__ = Some(map_.next_value()?);
14808                        }
14809                        GeneratedField::__SkipField__ => {
14810                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14811                        }
14812                    }
14813                }
14814                Ok(ListRoutesResponse {
14815                    routes: routes__.unwrap_or_default(),
14816                    next_page_token: next_page_token__.unwrap_or_default(),
14817                })
14818            }
14819        }
14820        deserializer
14821            .deserialize_struct(
14822                "origincloud.network.v1beta1.ListRoutesResponse",
14823                FIELDS,
14824                GeneratedVisitor,
14825            )
14826    }
14827}
14828impl serde::Serialize for ListSecurityGroupAssociationsRequest {
14829    #[allow(deprecated)]
14830    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14831    where
14832        S: serde::Serializer,
14833    {
14834        use serde::ser::SerializeStruct;
14835        let mut len = 0;
14836        if !self.parent.is_empty() {
14837            len += 1;
14838        }
14839        if self.page_size != 0 {
14840            len += 1;
14841        }
14842        if !self.page_token.is_empty() {
14843            len += 1;
14844        }
14845        let mut struct_ser = serializer
14846            .serialize_struct(
14847                "origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14848                len,
14849            )?;
14850        if !self.parent.is_empty() {
14851            struct_ser.serialize_field("parent", &self.parent)?;
14852        }
14853        if self.page_size != 0 {
14854            struct_ser.serialize_field("pageSize", &self.page_size)?;
14855        }
14856        if !self.page_token.is_empty() {
14857            struct_ser.serialize_field("pageToken", &self.page_token)?;
14858        }
14859        struct_ser.end()
14860    }
14861}
14862impl<'de> serde::Deserialize<'de> for ListSecurityGroupAssociationsRequest {
14863    #[allow(deprecated)]
14864    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14865    where
14866        D: serde::Deserializer<'de>,
14867    {
14868        const FIELDS: &[&str] = &[
14869            "parent",
14870            "page_size",
14871            "pageSize",
14872            "page_token",
14873            "pageToken",
14874        ];
14875        #[allow(clippy::enum_variant_names)]
14876        enum GeneratedField {
14877            Parent,
14878            PageSize,
14879            PageToken,
14880            __SkipField__,
14881        }
14882        impl<'de> serde::Deserialize<'de> for GeneratedField {
14883            fn deserialize<D>(
14884                deserializer: D,
14885            ) -> std::result::Result<GeneratedField, D::Error>
14886            where
14887                D: serde::Deserializer<'de>,
14888            {
14889                struct GeneratedVisitor;
14890                impl serde::de::Visitor<'_> for GeneratedVisitor {
14891                    type Value = GeneratedField;
14892                    fn expecting(
14893                        &self,
14894                        formatter: &mut std::fmt::Formatter<'_>,
14895                    ) -> std::fmt::Result {
14896                        write!(formatter, "expected one of: {:?}", & FIELDS)
14897                    }
14898                    #[allow(unused_variables)]
14899                    fn visit_str<E>(
14900                        self,
14901                        value: &str,
14902                    ) -> std::result::Result<GeneratedField, E>
14903                    where
14904                        E: serde::de::Error,
14905                    {
14906                        match value {
14907                            "parent" => Ok(GeneratedField::Parent),
14908                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14909                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14910                            _ => Ok(GeneratedField::__SkipField__),
14911                        }
14912                    }
14913                }
14914                deserializer.deserialize_identifier(GeneratedVisitor)
14915            }
14916        }
14917        struct GeneratedVisitor;
14918        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14919            type Value = ListSecurityGroupAssociationsRequest;
14920            fn expecting(
14921                &self,
14922                formatter: &mut std::fmt::Formatter<'_>,
14923            ) -> std::fmt::Result {
14924                formatter
14925                    .write_str(
14926                        "struct origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14927                    )
14928            }
14929            fn visit_map<V>(
14930                self,
14931                mut map_: V,
14932            ) -> std::result::Result<ListSecurityGroupAssociationsRequest, V::Error>
14933            where
14934                V: serde::de::MapAccess<'de>,
14935            {
14936                let mut parent__ = None;
14937                let mut page_size__ = None;
14938                let mut page_token__ = None;
14939                while let Some(k) = map_.next_key()? {
14940                    match k {
14941                        GeneratedField::Parent => {
14942                            if parent__.is_some() {
14943                                return Err(serde::de::Error::duplicate_field("parent"));
14944                            }
14945                            parent__ = Some(map_.next_value()?);
14946                        }
14947                        GeneratedField::PageSize => {
14948                            if page_size__.is_some() {
14949                                return Err(serde::de::Error::duplicate_field("pageSize"));
14950                            }
14951                            page_size__ = Some(
14952                                map_
14953                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14954                                    .0,
14955                            );
14956                        }
14957                        GeneratedField::PageToken => {
14958                            if page_token__.is_some() {
14959                                return Err(serde::de::Error::duplicate_field("pageToken"));
14960                            }
14961                            page_token__ = Some(map_.next_value()?);
14962                        }
14963                        GeneratedField::__SkipField__ => {
14964                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14965                        }
14966                    }
14967                }
14968                Ok(ListSecurityGroupAssociationsRequest {
14969                    parent: parent__.unwrap_or_default(),
14970                    page_size: page_size__.unwrap_or_default(),
14971                    page_token: page_token__.unwrap_or_default(),
14972                })
14973            }
14974        }
14975        deserializer
14976            .deserialize_struct(
14977                "origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14978                FIELDS,
14979                GeneratedVisitor,
14980            )
14981    }
14982}
14983impl serde::Serialize for ListSecurityGroupAssociationsResponse {
14984    #[allow(deprecated)]
14985    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14986    where
14987        S: serde::Serializer,
14988    {
14989        use serde::ser::SerializeStruct;
14990        let mut len = 0;
14991        if !self.security_group_associations.is_empty() {
14992            len += 1;
14993        }
14994        if !self.next_page_token.is_empty() {
14995            len += 1;
14996        }
14997        let mut struct_ser = serializer
14998            .serialize_struct(
14999                "origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15000                len,
15001            )?;
15002        if !self.security_group_associations.is_empty() {
15003            struct_ser
15004                .serialize_field(
15005                    "securityGroupAssociations",
15006                    &self.security_group_associations,
15007                )?;
15008        }
15009        if !self.next_page_token.is_empty() {
15010            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15011        }
15012        struct_ser.end()
15013    }
15014}
15015impl<'de> serde::Deserialize<'de> for ListSecurityGroupAssociationsResponse {
15016    #[allow(deprecated)]
15017    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15018    where
15019        D: serde::Deserializer<'de>,
15020    {
15021        const FIELDS: &[&str] = &[
15022            "security_group_associations",
15023            "securityGroupAssociations",
15024            "next_page_token",
15025            "nextPageToken",
15026        ];
15027        #[allow(clippy::enum_variant_names)]
15028        enum GeneratedField {
15029            SecurityGroupAssociations,
15030            NextPageToken,
15031            __SkipField__,
15032        }
15033        impl<'de> serde::Deserialize<'de> for GeneratedField {
15034            fn deserialize<D>(
15035                deserializer: D,
15036            ) -> std::result::Result<GeneratedField, D::Error>
15037            where
15038                D: serde::Deserializer<'de>,
15039            {
15040                struct GeneratedVisitor;
15041                impl serde::de::Visitor<'_> for GeneratedVisitor {
15042                    type Value = GeneratedField;
15043                    fn expecting(
15044                        &self,
15045                        formatter: &mut std::fmt::Formatter<'_>,
15046                    ) -> std::fmt::Result {
15047                        write!(formatter, "expected one of: {:?}", & FIELDS)
15048                    }
15049                    #[allow(unused_variables)]
15050                    fn visit_str<E>(
15051                        self,
15052                        value: &str,
15053                    ) -> std::result::Result<GeneratedField, E>
15054                    where
15055                        E: serde::de::Error,
15056                    {
15057                        match value {
15058                            "securityGroupAssociations"
15059                            | "security_group_associations" => {
15060                                Ok(GeneratedField::SecurityGroupAssociations)
15061                            }
15062                            "nextPageToken" | "next_page_token" => {
15063                                Ok(GeneratedField::NextPageToken)
15064                            }
15065                            _ => Ok(GeneratedField::__SkipField__),
15066                        }
15067                    }
15068                }
15069                deserializer.deserialize_identifier(GeneratedVisitor)
15070            }
15071        }
15072        struct GeneratedVisitor;
15073        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15074            type Value = ListSecurityGroupAssociationsResponse;
15075            fn expecting(
15076                &self,
15077                formatter: &mut std::fmt::Formatter<'_>,
15078            ) -> std::fmt::Result {
15079                formatter
15080                    .write_str(
15081                        "struct origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15082                    )
15083            }
15084            fn visit_map<V>(
15085                self,
15086                mut map_: V,
15087            ) -> std::result::Result<ListSecurityGroupAssociationsResponse, V::Error>
15088            where
15089                V: serde::de::MapAccess<'de>,
15090            {
15091                let mut security_group_associations__ = None;
15092                let mut next_page_token__ = None;
15093                while let Some(k) = map_.next_key()? {
15094                    match k {
15095                        GeneratedField::SecurityGroupAssociations => {
15096                            if security_group_associations__.is_some() {
15097                                return Err(
15098                                    serde::de::Error::duplicate_field(
15099                                        "securityGroupAssociations",
15100                                    ),
15101                                );
15102                            }
15103                            security_group_associations__ = Some(map_.next_value()?);
15104                        }
15105                        GeneratedField::NextPageToken => {
15106                            if next_page_token__.is_some() {
15107                                return Err(
15108                                    serde::de::Error::duplicate_field("nextPageToken"),
15109                                );
15110                            }
15111                            next_page_token__ = Some(map_.next_value()?);
15112                        }
15113                        GeneratedField::__SkipField__ => {
15114                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15115                        }
15116                    }
15117                }
15118                Ok(ListSecurityGroupAssociationsResponse {
15119                    security_group_associations: security_group_associations__
15120                        .unwrap_or_default(),
15121                    next_page_token: next_page_token__.unwrap_or_default(),
15122                })
15123            }
15124        }
15125        deserializer
15126            .deserialize_struct(
15127                "origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15128                FIELDS,
15129                GeneratedVisitor,
15130            )
15131    }
15132}
15133impl serde::Serialize for ListSecurityGroupRulesRequest {
15134    #[allow(deprecated)]
15135    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15136    where
15137        S: serde::Serializer,
15138    {
15139        use serde::ser::SerializeStruct;
15140        let mut len = 0;
15141        if !self.parent.is_empty() {
15142            len += 1;
15143        }
15144        if self.page_size != 0 {
15145            len += 1;
15146        }
15147        if !self.page_token.is_empty() {
15148            len += 1;
15149        }
15150        let mut struct_ser = serializer
15151            .serialize_struct(
15152                "origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15153                len,
15154            )?;
15155        if !self.parent.is_empty() {
15156            struct_ser.serialize_field("parent", &self.parent)?;
15157        }
15158        if self.page_size != 0 {
15159            struct_ser.serialize_field("pageSize", &self.page_size)?;
15160        }
15161        if !self.page_token.is_empty() {
15162            struct_ser.serialize_field("pageToken", &self.page_token)?;
15163        }
15164        struct_ser.end()
15165    }
15166}
15167impl<'de> serde::Deserialize<'de> for ListSecurityGroupRulesRequest {
15168    #[allow(deprecated)]
15169    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15170    where
15171        D: serde::Deserializer<'de>,
15172    {
15173        const FIELDS: &[&str] = &[
15174            "parent",
15175            "page_size",
15176            "pageSize",
15177            "page_token",
15178            "pageToken",
15179        ];
15180        #[allow(clippy::enum_variant_names)]
15181        enum GeneratedField {
15182            Parent,
15183            PageSize,
15184            PageToken,
15185            __SkipField__,
15186        }
15187        impl<'de> serde::Deserialize<'de> for GeneratedField {
15188            fn deserialize<D>(
15189                deserializer: D,
15190            ) -> std::result::Result<GeneratedField, D::Error>
15191            where
15192                D: serde::Deserializer<'de>,
15193            {
15194                struct GeneratedVisitor;
15195                impl serde::de::Visitor<'_> for GeneratedVisitor {
15196                    type Value = GeneratedField;
15197                    fn expecting(
15198                        &self,
15199                        formatter: &mut std::fmt::Formatter<'_>,
15200                    ) -> std::fmt::Result {
15201                        write!(formatter, "expected one of: {:?}", & FIELDS)
15202                    }
15203                    #[allow(unused_variables)]
15204                    fn visit_str<E>(
15205                        self,
15206                        value: &str,
15207                    ) -> std::result::Result<GeneratedField, E>
15208                    where
15209                        E: serde::de::Error,
15210                    {
15211                        match value {
15212                            "parent" => Ok(GeneratedField::Parent),
15213                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15214                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15215                            _ => Ok(GeneratedField::__SkipField__),
15216                        }
15217                    }
15218                }
15219                deserializer.deserialize_identifier(GeneratedVisitor)
15220            }
15221        }
15222        struct GeneratedVisitor;
15223        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15224            type Value = ListSecurityGroupRulesRequest;
15225            fn expecting(
15226                &self,
15227                formatter: &mut std::fmt::Formatter<'_>,
15228            ) -> std::fmt::Result {
15229                formatter
15230                    .write_str(
15231                        "struct origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15232                    )
15233            }
15234            fn visit_map<V>(
15235                self,
15236                mut map_: V,
15237            ) -> std::result::Result<ListSecurityGroupRulesRequest, V::Error>
15238            where
15239                V: serde::de::MapAccess<'de>,
15240            {
15241                let mut parent__ = None;
15242                let mut page_size__ = None;
15243                let mut page_token__ = None;
15244                while let Some(k) = map_.next_key()? {
15245                    match k {
15246                        GeneratedField::Parent => {
15247                            if parent__.is_some() {
15248                                return Err(serde::de::Error::duplicate_field("parent"));
15249                            }
15250                            parent__ = Some(map_.next_value()?);
15251                        }
15252                        GeneratedField::PageSize => {
15253                            if page_size__.is_some() {
15254                                return Err(serde::de::Error::duplicate_field("pageSize"));
15255                            }
15256                            page_size__ = Some(
15257                                map_
15258                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15259                                    .0,
15260                            );
15261                        }
15262                        GeneratedField::PageToken => {
15263                            if page_token__.is_some() {
15264                                return Err(serde::de::Error::duplicate_field("pageToken"));
15265                            }
15266                            page_token__ = Some(map_.next_value()?);
15267                        }
15268                        GeneratedField::__SkipField__ => {
15269                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15270                        }
15271                    }
15272                }
15273                Ok(ListSecurityGroupRulesRequest {
15274                    parent: parent__.unwrap_or_default(),
15275                    page_size: page_size__.unwrap_or_default(),
15276                    page_token: page_token__.unwrap_or_default(),
15277                })
15278            }
15279        }
15280        deserializer
15281            .deserialize_struct(
15282                "origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15283                FIELDS,
15284                GeneratedVisitor,
15285            )
15286    }
15287}
15288impl serde::Serialize for ListSecurityGroupRulesResponse {
15289    #[allow(deprecated)]
15290    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15291    where
15292        S: serde::Serializer,
15293    {
15294        use serde::ser::SerializeStruct;
15295        let mut len = 0;
15296        if !self.security_group_rules.is_empty() {
15297            len += 1;
15298        }
15299        if !self.next_page_token.is_empty() {
15300            len += 1;
15301        }
15302        let mut struct_ser = serializer
15303            .serialize_struct(
15304                "origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15305                len,
15306            )?;
15307        if !self.security_group_rules.is_empty() {
15308            struct_ser
15309                .serialize_field("securityGroupRules", &self.security_group_rules)?;
15310        }
15311        if !self.next_page_token.is_empty() {
15312            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15313        }
15314        struct_ser.end()
15315    }
15316}
15317impl<'de> serde::Deserialize<'de> for ListSecurityGroupRulesResponse {
15318    #[allow(deprecated)]
15319    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15320    where
15321        D: serde::Deserializer<'de>,
15322    {
15323        const FIELDS: &[&str] = &[
15324            "security_group_rules",
15325            "securityGroupRules",
15326            "next_page_token",
15327            "nextPageToken",
15328        ];
15329        #[allow(clippy::enum_variant_names)]
15330        enum GeneratedField {
15331            SecurityGroupRules,
15332            NextPageToken,
15333            __SkipField__,
15334        }
15335        impl<'de> serde::Deserialize<'de> for GeneratedField {
15336            fn deserialize<D>(
15337                deserializer: D,
15338            ) -> std::result::Result<GeneratedField, D::Error>
15339            where
15340                D: serde::Deserializer<'de>,
15341            {
15342                struct GeneratedVisitor;
15343                impl serde::de::Visitor<'_> for GeneratedVisitor {
15344                    type Value = GeneratedField;
15345                    fn expecting(
15346                        &self,
15347                        formatter: &mut std::fmt::Formatter<'_>,
15348                    ) -> std::fmt::Result {
15349                        write!(formatter, "expected one of: {:?}", & FIELDS)
15350                    }
15351                    #[allow(unused_variables)]
15352                    fn visit_str<E>(
15353                        self,
15354                        value: &str,
15355                    ) -> std::result::Result<GeneratedField, E>
15356                    where
15357                        E: serde::de::Error,
15358                    {
15359                        match value {
15360                            "securityGroupRules" | "security_group_rules" => {
15361                                Ok(GeneratedField::SecurityGroupRules)
15362                            }
15363                            "nextPageToken" | "next_page_token" => {
15364                                Ok(GeneratedField::NextPageToken)
15365                            }
15366                            _ => Ok(GeneratedField::__SkipField__),
15367                        }
15368                    }
15369                }
15370                deserializer.deserialize_identifier(GeneratedVisitor)
15371            }
15372        }
15373        struct GeneratedVisitor;
15374        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15375            type Value = ListSecurityGroupRulesResponse;
15376            fn expecting(
15377                &self,
15378                formatter: &mut std::fmt::Formatter<'_>,
15379            ) -> std::fmt::Result {
15380                formatter
15381                    .write_str(
15382                        "struct origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15383                    )
15384            }
15385            fn visit_map<V>(
15386                self,
15387                mut map_: V,
15388            ) -> std::result::Result<ListSecurityGroupRulesResponse, V::Error>
15389            where
15390                V: serde::de::MapAccess<'de>,
15391            {
15392                let mut security_group_rules__ = None;
15393                let mut next_page_token__ = None;
15394                while let Some(k) = map_.next_key()? {
15395                    match k {
15396                        GeneratedField::SecurityGroupRules => {
15397                            if security_group_rules__.is_some() {
15398                                return Err(
15399                                    serde::de::Error::duplicate_field("securityGroupRules"),
15400                                );
15401                            }
15402                            security_group_rules__ = Some(map_.next_value()?);
15403                        }
15404                        GeneratedField::NextPageToken => {
15405                            if next_page_token__.is_some() {
15406                                return Err(
15407                                    serde::de::Error::duplicate_field("nextPageToken"),
15408                                );
15409                            }
15410                            next_page_token__ = Some(map_.next_value()?);
15411                        }
15412                        GeneratedField::__SkipField__ => {
15413                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15414                        }
15415                    }
15416                }
15417                Ok(ListSecurityGroupRulesResponse {
15418                    security_group_rules: security_group_rules__.unwrap_or_default(),
15419                    next_page_token: next_page_token__.unwrap_or_default(),
15420                })
15421            }
15422        }
15423        deserializer
15424            .deserialize_struct(
15425                "origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15426                FIELDS,
15427                GeneratedVisitor,
15428            )
15429    }
15430}
15431impl serde::Serialize for ListSecurityGroupsRequest {
15432    #[allow(deprecated)]
15433    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15434    where
15435        S: serde::Serializer,
15436    {
15437        use serde::ser::SerializeStruct;
15438        let mut len = 0;
15439        if !self.parent.is_empty() {
15440            len += 1;
15441        }
15442        if self.page_size != 0 {
15443            len += 1;
15444        }
15445        if !self.page_token.is_empty() {
15446            len += 1;
15447        }
15448        if !self.vpc.is_empty() {
15449            len += 1;
15450        }
15451        let mut struct_ser = serializer
15452            .serialize_struct(
15453                "origincloud.network.v1beta1.ListSecurityGroupsRequest",
15454                len,
15455            )?;
15456        if !self.parent.is_empty() {
15457            struct_ser.serialize_field("parent", &self.parent)?;
15458        }
15459        if self.page_size != 0 {
15460            struct_ser.serialize_field("pageSize", &self.page_size)?;
15461        }
15462        if !self.page_token.is_empty() {
15463            struct_ser.serialize_field("pageToken", &self.page_token)?;
15464        }
15465        if !self.vpc.is_empty() {
15466            struct_ser.serialize_field("vpc", &self.vpc)?;
15467        }
15468        struct_ser.end()
15469    }
15470}
15471impl<'de> serde::Deserialize<'de> for ListSecurityGroupsRequest {
15472    #[allow(deprecated)]
15473    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15474    where
15475        D: serde::Deserializer<'de>,
15476    {
15477        const FIELDS: &[&str] = &[
15478            "parent",
15479            "page_size",
15480            "pageSize",
15481            "page_token",
15482            "pageToken",
15483            "vpc",
15484        ];
15485        #[allow(clippy::enum_variant_names)]
15486        enum GeneratedField {
15487            Parent,
15488            PageSize,
15489            PageToken,
15490            Vpc,
15491            __SkipField__,
15492        }
15493        impl<'de> serde::Deserialize<'de> for GeneratedField {
15494            fn deserialize<D>(
15495                deserializer: D,
15496            ) -> std::result::Result<GeneratedField, D::Error>
15497            where
15498                D: serde::Deserializer<'de>,
15499            {
15500                struct GeneratedVisitor;
15501                impl serde::de::Visitor<'_> for GeneratedVisitor {
15502                    type Value = GeneratedField;
15503                    fn expecting(
15504                        &self,
15505                        formatter: &mut std::fmt::Formatter<'_>,
15506                    ) -> std::fmt::Result {
15507                        write!(formatter, "expected one of: {:?}", & FIELDS)
15508                    }
15509                    #[allow(unused_variables)]
15510                    fn visit_str<E>(
15511                        self,
15512                        value: &str,
15513                    ) -> std::result::Result<GeneratedField, E>
15514                    where
15515                        E: serde::de::Error,
15516                    {
15517                        match value {
15518                            "parent" => Ok(GeneratedField::Parent),
15519                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15520                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15521                            "vpc" => Ok(GeneratedField::Vpc),
15522                            _ => Ok(GeneratedField::__SkipField__),
15523                        }
15524                    }
15525                }
15526                deserializer.deserialize_identifier(GeneratedVisitor)
15527            }
15528        }
15529        struct GeneratedVisitor;
15530        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15531            type Value = ListSecurityGroupsRequest;
15532            fn expecting(
15533                &self,
15534                formatter: &mut std::fmt::Formatter<'_>,
15535            ) -> std::fmt::Result {
15536                formatter
15537                    .write_str(
15538                        "struct origincloud.network.v1beta1.ListSecurityGroupsRequest",
15539                    )
15540            }
15541            fn visit_map<V>(
15542                self,
15543                mut map_: V,
15544            ) -> std::result::Result<ListSecurityGroupsRequest, V::Error>
15545            where
15546                V: serde::de::MapAccess<'de>,
15547            {
15548                let mut parent__ = None;
15549                let mut page_size__ = None;
15550                let mut page_token__ = None;
15551                let mut vpc__ = None;
15552                while let Some(k) = map_.next_key()? {
15553                    match k {
15554                        GeneratedField::Parent => {
15555                            if parent__.is_some() {
15556                                return Err(serde::de::Error::duplicate_field("parent"));
15557                            }
15558                            parent__ = Some(map_.next_value()?);
15559                        }
15560                        GeneratedField::PageSize => {
15561                            if page_size__.is_some() {
15562                                return Err(serde::de::Error::duplicate_field("pageSize"));
15563                            }
15564                            page_size__ = Some(
15565                                map_
15566                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15567                                    .0,
15568                            );
15569                        }
15570                        GeneratedField::PageToken => {
15571                            if page_token__.is_some() {
15572                                return Err(serde::de::Error::duplicate_field("pageToken"));
15573                            }
15574                            page_token__ = Some(map_.next_value()?);
15575                        }
15576                        GeneratedField::Vpc => {
15577                            if vpc__.is_some() {
15578                                return Err(serde::de::Error::duplicate_field("vpc"));
15579                            }
15580                            vpc__ = Some(map_.next_value()?);
15581                        }
15582                        GeneratedField::__SkipField__ => {
15583                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15584                        }
15585                    }
15586                }
15587                Ok(ListSecurityGroupsRequest {
15588                    parent: parent__.unwrap_or_default(),
15589                    page_size: page_size__.unwrap_or_default(),
15590                    page_token: page_token__.unwrap_or_default(),
15591                    vpc: vpc__.unwrap_or_default(),
15592                })
15593            }
15594        }
15595        deserializer
15596            .deserialize_struct(
15597                "origincloud.network.v1beta1.ListSecurityGroupsRequest",
15598                FIELDS,
15599                GeneratedVisitor,
15600            )
15601    }
15602}
15603impl serde::Serialize for ListSecurityGroupsResponse {
15604    #[allow(deprecated)]
15605    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15606    where
15607        S: serde::Serializer,
15608    {
15609        use serde::ser::SerializeStruct;
15610        let mut len = 0;
15611        if !self.security_groups.is_empty() {
15612            len += 1;
15613        }
15614        if !self.next_page_token.is_empty() {
15615            len += 1;
15616        }
15617        let mut struct_ser = serializer
15618            .serialize_struct(
15619                "origincloud.network.v1beta1.ListSecurityGroupsResponse",
15620                len,
15621            )?;
15622        if !self.security_groups.is_empty() {
15623            struct_ser.serialize_field("securityGroups", &self.security_groups)?;
15624        }
15625        if !self.next_page_token.is_empty() {
15626            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15627        }
15628        struct_ser.end()
15629    }
15630}
15631impl<'de> serde::Deserialize<'de> for ListSecurityGroupsResponse {
15632    #[allow(deprecated)]
15633    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15634    where
15635        D: serde::Deserializer<'de>,
15636    {
15637        const FIELDS: &[&str] = &[
15638            "security_groups",
15639            "securityGroups",
15640            "next_page_token",
15641            "nextPageToken",
15642        ];
15643        #[allow(clippy::enum_variant_names)]
15644        enum GeneratedField {
15645            SecurityGroups,
15646            NextPageToken,
15647            __SkipField__,
15648        }
15649        impl<'de> serde::Deserialize<'de> for GeneratedField {
15650            fn deserialize<D>(
15651                deserializer: D,
15652            ) -> std::result::Result<GeneratedField, D::Error>
15653            where
15654                D: serde::Deserializer<'de>,
15655            {
15656                struct GeneratedVisitor;
15657                impl serde::de::Visitor<'_> for GeneratedVisitor {
15658                    type Value = GeneratedField;
15659                    fn expecting(
15660                        &self,
15661                        formatter: &mut std::fmt::Formatter<'_>,
15662                    ) -> std::fmt::Result {
15663                        write!(formatter, "expected one of: {:?}", & FIELDS)
15664                    }
15665                    #[allow(unused_variables)]
15666                    fn visit_str<E>(
15667                        self,
15668                        value: &str,
15669                    ) -> std::result::Result<GeneratedField, E>
15670                    where
15671                        E: serde::de::Error,
15672                    {
15673                        match value {
15674                            "securityGroups" | "security_groups" => {
15675                                Ok(GeneratedField::SecurityGroups)
15676                            }
15677                            "nextPageToken" | "next_page_token" => {
15678                                Ok(GeneratedField::NextPageToken)
15679                            }
15680                            _ => Ok(GeneratedField::__SkipField__),
15681                        }
15682                    }
15683                }
15684                deserializer.deserialize_identifier(GeneratedVisitor)
15685            }
15686        }
15687        struct GeneratedVisitor;
15688        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15689            type Value = ListSecurityGroupsResponse;
15690            fn expecting(
15691                &self,
15692                formatter: &mut std::fmt::Formatter<'_>,
15693            ) -> std::fmt::Result {
15694                formatter
15695                    .write_str(
15696                        "struct origincloud.network.v1beta1.ListSecurityGroupsResponse",
15697                    )
15698            }
15699            fn visit_map<V>(
15700                self,
15701                mut map_: V,
15702            ) -> std::result::Result<ListSecurityGroupsResponse, V::Error>
15703            where
15704                V: serde::de::MapAccess<'de>,
15705            {
15706                let mut security_groups__ = None;
15707                let mut next_page_token__ = None;
15708                while let Some(k) = map_.next_key()? {
15709                    match k {
15710                        GeneratedField::SecurityGroups => {
15711                            if security_groups__.is_some() {
15712                                return Err(
15713                                    serde::de::Error::duplicate_field("securityGroups"),
15714                                );
15715                            }
15716                            security_groups__ = Some(map_.next_value()?);
15717                        }
15718                        GeneratedField::NextPageToken => {
15719                            if next_page_token__.is_some() {
15720                                return Err(
15721                                    serde::de::Error::duplicate_field("nextPageToken"),
15722                                );
15723                            }
15724                            next_page_token__ = Some(map_.next_value()?);
15725                        }
15726                        GeneratedField::__SkipField__ => {
15727                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15728                        }
15729                    }
15730                }
15731                Ok(ListSecurityGroupsResponse {
15732                    security_groups: security_groups__.unwrap_or_default(),
15733                    next_page_token: next_page_token__.unwrap_or_default(),
15734                })
15735            }
15736        }
15737        deserializer
15738            .deserialize_struct(
15739                "origincloud.network.v1beta1.ListSecurityGroupsResponse",
15740                FIELDS,
15741                GeneratedVisitor,
15742            )
15743    }
15744}
15745impl serde::Serialize for ListSubnetsRequest {
15746    #[allow(deprecated)]
15747    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15748    where
15749        S: serde::Serializer,
15750    {
15751        use serde::ser::SerializeStruct;
15752        let mut len = 0;
15753        if !self.parent.is_empty() {
15754            len += 1;
15755        }
15756        if self.page_size != 0 {
15757            len += 1;
15758        }
15759        if !self.page_token.is_empty() {
15760            len += 1;
15761        }
15762        if !self.vpc.is_empty() {
15763            len += 1;
15764        }
15765        let mut struct_ser = serializer
15766            .serialize_struct("origincloud.network.v1beta1.ListSubnetsRequest", len)?;
15767        if !self.parent.is_empty() {
15768            struct_ser.serialize_field("parent", &self.parent)?;
15769        }
15770        if self.page_size != 0 {
15771            struct_ser.serialize_field("pageSize", &self.page_size)?;
15772        }
15773        if !self.page_token.is_empty() {
15774            struct_ser.serialize_field("pageToken", &self.page_token)?;
15775        }
15776        if !self.vpc.is_empty() {
15777            struct_ser.serialize_field("vpc", &self.vpc)?;
15778        }
15779        struct_ser.end()
15780    }
15781}
15782impl<'de> serde::Deserialize<'de> for ListSubnetsRequest {
15783    #[allow(deprecated)]
15784    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15785    where
15786        D: serde::Deserializer<'de>,
15787    {
15788        const FIELDS: &[&str] = &[
15789            "parent",
15790            "page_size",
15791            "pageSize",
15792            "page_token",
15793            "pageToken",
15794            "vpc",
15795        ];
15796        #[allow(clippy::enum_variant_names)]
15797        enum GeneratedField {
15798            Parent,
15799            PageSize,
15800            PageToken,
15801            Vpc,
15802            __SkipField__,
15803        }
15804        impl<'de> serde::Deserialize<'de> for GeneratedField {
15805            fn deserialize<D>(
15806                deserializer: D,
15807            ) -> std::result::Result<GeneratedField, D::Error>
15808            where
15809                D: serde::Deserializer<'de>,
15810            {
15811                struct GeneratedVisitor;
15812                impl serde::de::Visitor<'_> for GeneratedVisitor {
15813                    type Value = GeneratedField;
15814                    fn expecting(
15815                        &self,
15816                        formatter: &mut std::fmt::Formatter<'_>,
15817                    ) -> std::fmt::Result {
15818                        write!(formatter, "expected one of: {:?}", & FIELDS)
15819                    }
15820                    #[allow(unused_variables)]
15821                    fn visit_str<E>(
15822                        self,
15823                        value: &str,
15824                    ) -> std::result::Result<GeneratedField, E>
15825                    where
15826                        E: serde::de::Error,
15827                    {
15828                        match value {
15829                            "parent" => Ok(GeneratedField::Parent),
15830                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15831                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15832                            "vpc" => Ok(GeneratedField::Vpc),
15833                            _ => Ok(GeneratedField::__SkipField__),
15834                        }
15835                    }
15836                }
15837                deserializer.deserialize_identifier(GeneratedVisitor)
15838            }
15839        }
15840        struct GeneratedVisitor;
15841        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15842            type Value = ListSubnetsRequest;
15843            fn expecting(
15844                &self,
15845                formatter: &mut std::fmt::Formatter<'_>,
15846            ) -> std::fmt::Result {
15847                formatter
15848                    .write_str("struct origincloud.network.v1beta1.ListSubnetsRequest")
15849            }
15850            fn visit_map<V>(
15851                self,
15852                mut map_: V,
15853            ) -> std::result::Result<ListSubnetsRequest, V::Error>
15854            where
15855                V: serde::de::MapAccess<'de>,
15856            {
15857                let mut parent__ = None;
15858                let mut page_size__ = None;
15859                let mut page_token__ = None;
15860                let mut vpc__ = None;
15861                while let Some(k) = map_.next_key()? {
15862                    match k {
15863                        GeneratedField::Parent => {
15864                            if parent__.is_some() {
15865                                return Err(serde::de::Error::duplicate_field("parent"));
15866                            }
15867                            parent__ = Some(map_.next_value()?);
15868                        }
15869                        GeneratedField::PageSize => {
15870                            if page_size__.is_some() {
15871                                return Err(serde::de::Error::duplicate_field("pageSize"));
15872                            }
15873                            page_size__ = Some(
15874                                map_
15875                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15876                                    .0,
15877                            );
15878                        }
15879                        GeneratedField::PageToken => {
15880                            if page_token__.is_some() {
15881                                return Err(serde::de::Error::duplicate_field("pageToken"));
15882                            }
15883                            page_token__ = Some(map_.next_value()?);
15884                        }
15885                        GeneratedField::Vpc => {
15886                            if vpc__.is_some() {
15887                                return Err(serde::de::Error::duplicate_field("vpc"));
15888                            }
15889                            vpc__ = Some(map_.next_value()?);
15890                        }
15891                        GeneratedField::__SkipField__ => {
15892                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15893                        }
15894                    }
15895                }
15896                Ok(ListSubnetsRequest {
15897                    parent: parent__.unwrap_or_default(),
15898                    page_size: page_size__.unwrap_or_default(),
15899                    page_token: page_token__.unwrap_or_default(),
15900                    vpc: vpc__.unwrap_or_default(),
15901                })
15902            }
15903        }
15904        deserializer
15905            .deserialize_struct(
15906                "origincloud.network.v1beta1.ListSubnetsRequest",
15907                FIELDS,
15908                GeneratedVisitor,
15909            )
15910    }
15911}
15912impl serde::Serialize for ListSubnetsResponse {
15913    #[allow(deprecated)]
15914    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15915    where
15916        S: serde::Serializer,
15917    {
15918        use serde::ser::SerializeStruct;
15919        let mut len = 0;
15920        if !self.subnets.is_empty() {
15921            len += 1;
15922        }
15923        if !self.next_page_token.is_empty() {
15924            len += 1;
15925        }
15926        let mut struct_ser = serializer
15927            .serialize_struct("origincloud.network.v1beta1.ListSubnetsResponse", len)?;
15928        if !self.subnets.is_empty() {
15929            struct_ser.serialize_field("subnets", &self.subnets)?;
15930        }
15931        if !self.next_page_token.is_empty() {
15932            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15933        }
15934        struct_ser.end()
15935    }
15936}
15937impl<'de> serde::Deserialize<'de> for ListSubnetsResponse {
15938    #[allow(deprecated)]
15939    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15940    where
15941        D: serde::Deserializer<'de>,
15942    {
15943        const FIELDS: &[&str] = &["subnets", "next_page_token", "nextPageToken"];
15944        #[allow(clippy::enum_variant_names)]
15945        enum GeneratedField {
15946            Subnets,
15947            NextPageToken,
15948            __SkipField__,
15949        }
15950        impl<'de> serde::Deserialize<'de> for GeneratedField {
15951            fn deserialize<D>(
15952                deserializer: D,
15953            ) -> std::result::Result<GeneratedField, D::Error>
15954            where
15955                D: serde::Deserializer<'de>,
15956            {
15957                struct GeneratedVisitor;
15958                impl serde::de::Visitor<'_> for GeneratedVisitor {
15959                    type Value = GeneratedField;
15960                    fn expecting(
15961                        &self,
15962                        formatter: &mut std::fmt::Formatter<'_>,
15963                    ) -> std::fmt::Result {
15964                        write!(formatter, "expected one of: {:?}", & FIELDS)
15965                    }
15966                    #[allow(unused_variables)]
15967                    fn visit_str<E>(
15968                        self,
15969                        value: &str,
15970                    ) -> std::result::Result<GeneratedField, E>
15971                    where
15972                        E: serde::de::Error,
15973                    {
15974                        match value {
15975                            "subnets" => Ok(GeneratedField::Subnets),
15976                            "nextPageToken" | "next_page_token" => {
15977                                Ok(GeneratedField::NextPageToken)
15978                            }
15979                            _ => Ok(GeneratedField::__SkipField__),
15980                        }
15981                    }
15982                }
15983                deserializer.deserialize_identifier(GeneratedVisitor)
15984            }
15985        }
15986        struct GeneratedVisitor;
15987        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15988            type Value = ListSubnetsResponse;
15989            fn expecting(
15990                &self,
15991                formatter: &mut std::fmt::Formatter<'_>,
15992            ) -> std::fmt::Result {
15993                formatter
15994                    .write_str("struct origincloud.network.v1beta1.ListSubnetsResponse")
15995            }
15996            fn visit_map<V>(
15997                self,
15998                mut map_: V,
15999            ) -> std::result::Result<ListSubnetsResponse, V::Error>
16000            where
16001                V: serde::de::MapAccess<'de>,
16002            {
16003                let mut subnets__ = None;
16004                let mut next_page_token__ = None;
16005                while let Some(k) = map_.next_key()? {
16006                    match k {
16007                        GeneratedField::Subnets => {
16008                            if subnets__.is_some() {
16009                                return Err(serde::de::Error::duplicate_field("subnets"));
16010                            }
16011                            subnets__ = Some(map_.next_value()?);
16012                        }
16013                        GeneratedField::NextPageToken => {
16014                            if next_page_token__.is_some() {
16015                                return Err(
16016                                    serde::de::Error::duplicate_field("nextPageToken"),
16017                                );
16018                            }
16019                            next_page_token__ = Some(map_.next_value()?);
16020                        }
16021                        GeneratedField::__SkipField__ => {
16022                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16023                        }
16024                    }
16025                }
16026                Ok(ListSubnetsResponse {
16027                    subnets: subnets__.unwrap_or_default(),
16028                    next_page_token: next_page_token__.unwrap_or_default(),
16029                })
16030            }
16031        }
16032        deserializer
16033            .deserialize_struct(
16034                "origincloud.network.v1beta1.ListSubnetsResponse",
16035                FIELDS,
16036                GeneratedVisitor,
16037            )
16038    }
16039}
16040impl serde::Serialize for ListVpcsRequest {
16041    #[allow(deprecated)]
16042    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16043    where
16044        S: serde::Serializer,
16045    {
16046        use serde::ser::SerializeStruct;
16047        let mut len = 0;
16048        if !self.parent.is_empty() {
16049            len += 1;
16050        }
16051        if self.page_size != 0 {
16052            len += 1;
16053        }
16054        if !self.page_token.is_empty() {
16055            len += 1;
16056        }
16057        let mut struct_ser = serializer
16058            .serialize_struct("origincloud.network.v1beta1.ListVpcsRequest", len)?;
16059        if !self.parent.is_empty() {
16060            struct_ser.serialize_field("parent", &self.parent)?;
16061        }
16062        if self.page_size != 0 {
16063            struct_ser.serialize_field("pageSize", &self.page_size)?;
16064        }
16065        if !self.page_token.is_empty() {
16066            struct_ser.serialize_field("pageToken", &self.page_token)?;
16067        }
16068        struct_ser.end()
16069    }
16070}
16071impl<'de> serde::Deserialize<'de> for ListVpcsRequest {
16072    #[allow(deprecated)]
16073    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16074    where
16075        D: serde::Deserializer<'de>,
16076    {
16077        const FIELDS: &[&str] = &[
16078            "parent",
16079            "page_size",
16080            "pageSize",
16081            "page_token",
16082            "pageToken",
16083        ];
16084        #[allow(clippy::enum_variant_names)]
16085        enum GeneratedField {
16086            Parent,
16087            PageSize,
16088            PageToken,
16089            __SkipField__,
16090        }
16091        impl<'de> serde::Deserialize<'de> for GeneratedField {
16092            fn deserialize<D>(
16093                deserializer: D,
16094            ) -> std::result::Result<GeneratedField, D::Error>
16095            where
16096                D: serde::Deserializer<'de>,
16097            {
16098                struct GeneratedVisitor;
16099                impl serde::de::Visitor<'_> for GeneratedVisitor {
16100                    type Value = GeneratedField;
16101                    fn expecting(
16102                        &self,
16103                        formatter: &mut std::fmt::Formatter<'_>,
16104                    ) -> std::fmt::Result {
16105                        write!(formatter, "expected one of: {:?}", & FIELDS)
16106                    }
16107                    #[allow(unused_variables)]
16108                    fn visit_str<E>(
16109                        self,
16110                        value: &str,
16111                    ) -> std::result::Result<GeneratedField, E>
16112                    where
16113                        E: serde::de::Error,
16114                    {
16115                        match value {
16116                            "parent" => Ok(GeneratedField::Parent),
16117                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
16118                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
16119                            _ => Ok(GeneratedField::__SkipField__),
16120                        }
16121                    }
16122                }
16123                deserializer.deserialize_identifier(GeneratedVisitor)
16124            }
16125        }
16126        struct GeneratedVisitor;
16127        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16128            type Value = ListVpcsRequest;
16129            fn expecting(
16130                &self,
16131                formatter: &mut std::fmt::Formatter<'_>,
16132            ) -> std::fmt::Result {
16133                formatter.write_str("struct origincloud.network.v1beta1.ListVpcsRequest")
16134            }
16135            fn visit_map<V>(
16136                self,
16137                mut map_: V,
16138            ) -> std::result::Result<ListVpcsRequest, V::Error>
16139            where
16140                V: serde::de::MapAccess<'de>,
16141            {
16142                let mut parent__ = None;
16143                let mut page_size__ = None;
16144                let mut page_token__ = None;
16145                while let Some(k) = map_.next_key()? {
16146                    match k {
16147                        GeneratedField::Parent => {
16148                            if parent__.is_some() {
16149                                return Err(serde::de::Error::duplicate_field("parent"));
16150                            }
16151                            parent__ = Some(map_.next_value()?);
16152                        }
16153                        GeneratedField::PageSize => {
16154                            if page_size__.is_some() {
16155                                return Err(serde::de::Error::duplicate_field("pageSize"));
16156                            }
16157                            page_size__ = Some(
16158                                map_
16159                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
16160                                    .0,
16161                            );
16162                        }
16163                        GeneratedField::PageToken => {
16164                            if page_token__.is_some() {
16165                                return Err(serde::de::Error::duplicate_field("pageToken"));
16166                            }
16167                            page_token__ = Some(map_.next_value()?);
16168                        }
16169                        GeneratedField::__SkipField__ => {
16170                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16171                        }
16172                    }
16173                }
16174                Ok(ListVpcsRequest {
16175                    parent: parent__.unwrap_or_default(),
16176                    page_size: page_size__.unwrap_or_default(),
16177                    page_token: page_token__.unwrap_or_default(),
16178                })
16179            }
16180        }
16181        deserializer
16182            .deserialize_struct(
16183                "origincloud.network.v1beta1.ListVpcsRequest",
16184                FIELDS,
16185                GeneratedVisitor,
16186            )
16187    }
16188}
16189impl serde::Serialize for ListVpcsResponse {
16190    #[allow(deprecated)]
16191    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16192    where
16193        S: serde::Serializer,
16194    {
16195        use serde::ser::SerializeStruct;
16196        let mut len = 0;
16197        if !self.vpcs.is_empty() {
16198            len += 1;
16199        }
16200        if !self.next_page_token.is_empty() {
16201            len += 1;
16202        }
16203        let mut struct_ser = serializer
16204            .serialize_struct("origincloud.network.v1beta1.ListVpcsResponse", len)?;
16205        if !self.vpcs.is_empty() {
16206            struct_ser.serialize_field("vpcs", &self.vpcs)?;
16207        }
16208        if !self.next_page_token.is_empty() {
16209            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
16210        }
16211        struct_ser.end()
16212    }
16213}
16214impl<'de> serde::Deserialize<'de> for ListVpcsResponse {
16215    #[allow(deprecated)]
16216    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16217    where
16218        D: serde::Deserializer<'de>,
16219    {
16220        const FIELDS: &[&str] = &["vpcs", "next_page_token", "nextPageToken"];
16221        #[allow(clippy::enum_variant_names)]
16222        enum GeneratedField {
16223            Vpcs,
16224            NextPageToken,
16225            __SkipField__,
16226        }
16227        impl<'de> serde::Deserialize<'de> for GeneratedField {
16228            fn deserialize<D>(
16229                deserializer: D,
16230            ) -> std::result::Result<GeneratedField, D::Error>
16231            where
16232                D: serde::Deserializer<'de>,
16233            {
16234                struct GeneratedVisitor;
16235                impl serde::de::Visitor<'_> for GeneratedVisitor {
16236                    type Value = GeneratedField;
16237                    fn expecting(
16238                        &self,
16239                        formatter: &mut std::fmt::Formatter<'_>,
16240                    ) -> std::fmt::Result {
16241                        write!(formatter, "expected one of: {:?}", & FIELDS)
16242                    }
16243                    #[allow(unused_variables)]
16244                    fn visit_str<E>(
16245                        self,
16246                        value: &str,
16247                    ) -> std::result::Result<GeneratedField, E>
16248                    where
16249                        E: serde::de::Error,
16250                    {
16251                        match value {
16252                            "vpcs" => Ok(GeneratedField::Vpcs),
16253                            "nextPageToken" | "next_page_token" => {
16254                                Ok(GeneratedField::NextPageToken)
16255                            }
16256                            _ => Ok(GeneratedField::__SkipField__),
16257                        }
16258                    }
16259                }
16260                deserializer.deserialize_identifier(GeneratedVisitor)
16261            }
16262        }
16263        struct GeneratedVisitor;
16264        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16265            type Value = ListVpcsResponse;
16266            fn expecting(
16267                &self,
16268                formatter: &mut std::fmt::Formatter<'_>,
16269            ) -> std::fmt::Result {
16270                formatter
16271                    .write_str("struct origincloud.network.v1beta1.ListVpcsResponse")
16272            }
16273            fn visit_map<V>(
16274                self,
16275                mut map_: V,
16276            ) -> std::result::Result<ListVpcsResponse, V::Error>
16277            where
16278                V: serde::de::MapAccess<'de>,
16279            {
16280                let mut vpcs__ = None;
16281                let mut next_page_token__ = None;
16282                while let Some(k) = map_.next_key()? {
16283                    match k {
16284                        GeneratedField::Vpcs => {
16285                            if vpcs__.is_some() {
16286                                return Err(serde::de::Error::duplicate_field("vpcs"));
16287                            }
16288                            vpcs__ = Some(map_.next_value()?);
16289                        }
16290                        GeneratedField::NextPageToken => {
16291                            if next_page_token__.is_some() {
16292                                return Err(
16293                                    serde::de::Error::duplicate_field("nextPageToken"),
16294                                );
16295                            }
16296                            next_page_token__ = Some(map_.next_value()?);
16297                        }
16298                        GeneratedField::__SkipField__ => {
16299                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16300                        }
16301                    }
16302                }
16303                Ok(ListVpcsResponse {
16304                    vpcs: vpcs__.unwrap_or_default(),
16305                    next_page_token: next_page_token__.unwrap_or_default(),
16306                })
16307            }
16308        }
16309        deserializer
16310            .deserialize_struct(
16311                "origincloud.network.v1beta1.ListVpcsResponse",
16312                FIELDS,
16313                GeneratedVisitor,
16314            )
16315    }
16316}
16317impl serde::Serialize for NatGateway {
16318    #[allow(deprecated)]
16319    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16320    where
16321        S: serde::Serializer,
16322    {
16323        use serde::ser::SerializeStruct;
16324        let mut len = 0;
16325        if !self.name.is_empty() {
16326            len += 1;
16327        }
16328        if !self.urn.is_empty() {
16329            len += 1;
16330        }
16331        if !self.subnet.is_empty() {
16332            len += 1;
16333        }
16334        if !self.floating_ip.is_empty() {
16335            len += 1;
16336        }
16337        if !self.vpc.is_empty() {
16338            len += 1;
16339        }
16340        if self.create_time.is_some() {
16341            len += 1;
16342        }
16343        if !self.creator.is_empty() {
16344            len += 1;
16345        }
16346        if !self.tags.is_empty() {
16347            len += 1;
16348        }
16349        let mut struct_ser = serializer
16350            .serialize_struct("origincloud.network.v1beta1.NatGateway", len)?;
16351        if !self.name.is_empty() {
16352            struct_ser.serialize_field("name", &self.name)?;
16353        }
16354        if !self.urn.is_empty() {
16355            struct_ser.serialize_field("urn", &self.urn)?;
16356        }
16357        if !self.subnet.is_empty() {
16358            struct_ser.serialize_field("subnet", &self.subnet)?;
16359        }
16360        if !self.floating_ip.is_empty() {
16361            struct_ser.serialize_field("floatingIp", &self.floating_ip)?;
16362        }
16363        if !self.vpc.is_empty() {
16364            struct_ser.serialize_field("vpc", &self.vpc)?;
16365        }
16366        if let Some(v) = self.create_time.as_ref() {
16367            struct_ser.serialize_field("createTime", v)?;
16368        }
16369        if !self.creator.is_empty() {
16370            struct_ser.serialize_field("creator", &self.creator)?;
16371        }
16372        if !self.tags.is_empty() {
16373            struct_ser.serialize_field("tags", &self.tags)?;
16374        }
16375        struct_ser.end()
16376    }
16377}
16378impl<'de> serde::Deserialize<'de> for NatGateway {
16379    #[allow(deprecated)]
16380    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16381    where
16382        D: serde::Deserializer<'de>,
16383    {
16384        const FIELDS: &[&str] = &[
16385            "name",
16386            "urn",
16387            "subnet",
16388            "floating_ip",
16389            "floatingIp",
16390            "vpc",
16391            "create_time",
16392            "createTime",
16393            "creator",
16394            "tags",
16395        ];
16396        #[allow(clippy::enum_variant_names)]
16397        enum GeneratedField {
16398            Name,
16399            Urn,
16400            Subnet,
16401            FloatingIp,
16402            Vpc,
16403            CreateTime,
16404            Creator,
16405            Tags,
16406            __SkipField__,
16407        }
16408        impl<'de> serde::Deserialize<'de> for GeneratedField {
16409            fn deserialize<D>(
16410                deserializer: D,
16411            ) -> std::result::Result<GeneratedField, D::Error>
16412            where
16413                D: serde::Deserializer<'de>,
16414            {
16415                struct GeneratedVisitor;
16416                impl serde::de::Visitor<'_> for GeneratedVisitor {
16417                    type Value = GeneratedField;
16418                    fn expecting(
16419                        &self,
16420                        formatter: &mut std::fmt::Formatter<'_>,
16421                    ) -> std::fmt::Result {
16422                        write!(formatter, "expected one of: {:?}", & FIELDS)
16423                    }
16424                    #[allow(unused_variables)]
16425                    fn visit_str<E>(
16426                        self,
16427                        value: &str,
16428                    ) -> std::result::Result<GeneratedField, E>
16429                    where
16430                        E: serde::de::Error,
16431                    {
16432                        match value {
16433                            "name" => Ok(GeneratedField::Name),
16434                            "urn" => Ok(GeneratedField::Urn),
16435                            "subnet" => Ok(GeneratedField::Subnet),
16436                            "floatingIp" | "floating_ip" => {
16437                                Ok(GeneratedField::FloatingIp)
16438                            }
16439                            "vpc" => Ok(GeneratedField::Vpc),
16440                            "createTime" | "create_time" => {
16441                                Ok(GeneratedField::CreateTime)
16442                            }
16443                            "creator" => Ok(GeneratedField::Creator),
16444                            "tags" => Ok(GeneratedField::Tags),
16445                            _ => Ok(GeneratedField::__SkipField__),
16446                        }
16447                    }
16448                }
16449                deserializer.deserialize_identifier(GeneratedVisitor)
16450            }
16451        }
16452        struct GeneratedVisitor;
16453        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16454            type Value = NatGateway;
16455            fn expecting(
16456                &self,
16457                formatter: &mut std::fmt::Formatter<'_>,
16458            ) -> std::fmt::Result {
16459                formatter.write_str("struct origincloud.network.v1beta1.NatGateway")
16460            }
16461            fn visit_map<V>(
16462                self,
16463                mut map_: V,
16464            ) -> std::result::Result<NatGateway, V::Error>
16465            where
16466                V: serde::de::MapAccess<'de>,
16467            {
16468                let mut name__ = None;
16469                let mut urn__ = None;
16470                let mut subnet__ = None;
16471                let mut floating_ip__ = None;
16472                let mut vpc__ = None;
16473                let mut create_time__ = None;
16474                let mut creator__ = None;
16475                let mut tags__ = None;
16476                while let Some(k) = map_.next_key()? {
16477                    match k {
16478                        GeneratedField::Name => {
16479                            if name__.is_some() {
16480                                return Err(serde::de::Error::duplicate_field("name"));
16481                            }
16482                            name__ = Some(map_.next_value()?);
16483                        }
16484                        GeneratedField::Urn => {
16485                            if urn__.is_some() {
16486                                return Err(serde::de::Error::duplicate_field("urn"));
16487                            }
16488                            urn__ = Some(map_.next_value()?);
16489                        }
16490                        GeneratedField::Subnet => {
16491                            if subnet__.is_some() {
16492                                return Err(serde::de::Error::duplicate_field("subnet"));
16493                            }
16494                            subnet__ = Some(map_.next_value()?);
16495                        }
16496                        GeneratedField::FloatingIp => {
16497                            if floating_ip__.is_some() {
16498                                return Err(serde::de::Error::duplicate_field("floatingIp"));
16499                            }
16500                            floating_ip__ = Some(map_.next_value()?);
16501                        }
16502                        GeneratedField::Vpc => {
16503                            if vpc__.is_some() {
16504                                return Err(serde::de::Error::duplicate_field("vpc"));
16505                            }
16506                            vpc__ = Some(map_.next_value()?);
16507                        }
16508                        GeneratedField::CreateTime => {
16509                            if create_time__.is_some() {
16510                                return Err(serde::de::Error::duplicate_field("createTime"));
16511                            }
16512                            create_time__ = map_.next_value()?;
16513                        }
16514                        GeneratedField::Creator => {
16515                            if creator__.is_some() {
16516                                return Err(serde::de::Error::duplicate_field("creator"));
16517                            }
16518                            creator__ = Some(map_.next_value()?);
16519                        }
16520                        GeneratedField::Tags => {
16521                            if tags__.is_some() {
16522                                return Err(serde::de::Error::duplicate_field("tags"));
16523                            }
16524                            tags__ = Some(
16525                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
16526                            );
16527                        }
16528                        GeneratedField::__SkipField__ => {
16529                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16530                        }
16531                    }
16532                }
16533                Ok(NatGateway {
16534                    name: name__.unwrap_or_default(),
16535                    urn: urn__.unwrap_or_default(),
16536                    subnet: subnet__.unwrap_or_default(),
16537                    floating_ip: floating_ip__.unwrap_or_default(),
16538                    vpc: vpc__.unwrap_or_default(),
16539                    create_time: create_time__,
16540                    creator: creator__.unwrap_or_default(),
16541                    tags: tags__.unwrap_or_default(),
16542                })
16543            }
16544        }
16545        deserializer
16546            .deserialize_struct(
16547                "origincloud.network.v1beta1.NatGateway",
16548                FIELDS,
16549                GeneratedVisitor,
16550            )
16551    }
16552}
16553impl serde::Serialize for NetworkInterface {
16554    #[allow(deprecated)]
16555    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16556    where
16557        S: serde::Serializer,
16558    {
16559        use serde::ser::SerializeStruct;
16560        let mut len = 0;
16561        if !self.name.is_empty() {
16562            len += 1;
16563        }
16564        if !self.urn.is_empty() {
16565            len += 1;
16566        }
16567        if !self.subnet.is_empty() {
16568            len += 1;
16569        }
16570        if !self.security_groups.is_empty() {
16571            len += 1;
16572        }
16573        if self.source_address_check.is_some() {
16574            len += 1;
16575        }
16576        if !self.ipv4_address.is_empty() {
16577            len += 1;
16578        }
16579        if !self.ipv6_address.is_empty() {
16580            len += 1;
16581        }
16582        if self.state != 0 {
16583            len += 1;
16584        }
16585        if !self.instance.is_empty() {
16586            len += 1;
16587        }
16588        if self.create_time.is_some() {
16589            len += 1;
16590        }
16591        if !self.creator.is_empty() {
16592            len += 1;
16593        }
16594        if !self.tags.is_empty() {
16595            len += 1;
16596        }
16597        let mut struct_ser = serializer
16598            .serialize_struct("origincloud.network.v1beta1.NetworkInterface", len)?;
16599        if !self.name.is_empty() {
16600            struct_ser.serialize_field("name", &self.name)?;
16601        }
16602        if !self.urn.is_empty() {
16603            struct_ser.serialize_field("urn", &self.urn)?;
16604        }
16605        if !self.subnet.is_empty() {
16606            struct_ser.serialize_field("subnet", &self.subnet)?;
16607        }
16608        if !self.security_groups.is_empty() {
16609            struct_ser.serialize_field("securityGroups", &self.security_groups)?;
16610        }
16611        if let Some(v) = self.source_address_check.as_ref() {
16612            struct_ser.serialize_field("sourceAddressCheck", v)?;
16613        }
16614        if !self.ipv4_address.is_empty() {
16615            struct_ser.serialize_field("ipv4Address", &self.ipv4_address)?;
16616        }
16617        if !self.ipv6_address.is_empty() {
16618            struct_ser.serialize_field("ipv6Address", &self.ipv6_address)?;
16619        }
16620        if self.state != 0 {
16621            let v = network_interface::State::try_from(self.state)
16622                .map_err(|_| serde::ser::Error::custom(
16623                    format!("Invalid variant {}", self.state),
16624                ))?;
16625            struct_ser.serialize_field("state", &v)?;
16626        }
16627        if !self.instance.is_empty() {
16628            struct_ser.serialize_field("instance", &self.instance)?;
16629        }
16630        if let Some(v) = self.create_time.as_ref() {
16631            struct_ser.serialize_field("createTime", v)?;
16632        }
16633        if !self.creator.is_empty() {
16634            struct_ser.serialize_field("creator", &self.creator)?;
16635        }
16636        if !self.tags.is_empty() {
16637            struct_ser.serialize_field("tags", &self.tags)?;
16638        }
16639        struct_ser.end()
16640    }
16641}
16642impl<'de> serde::Deserialize<'de> for NetworkInterface {
16643    #[allow(deprecated)]
16644    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16645    where
16646        D: serde::Deserializer<'de>,
16647    {
16648        const FIELDS: &[&str] = &[
16649            "name",
16650            "urn",
16651            "subnet",
16652            "security_groups",
16653            "securityGroups",
16654            "source_address_check",
16655            "sourceAddressCheck",
16656            "ipv4_address",
16657            "ipv4Address",
16658            "ipv6_address",
16659            "ipv6Address",
16660            "state",
16661            "instance",
16662            "create_time",
16663            "createTime",
16664            "creator",
16665            "tags",
16666        ];
16667        #[allow(clippy::enum_variant_names)]
16668        enum GeneratedField {
16669            Name,
16670            Urn,
16671            Subnet,
16672            SecurityGroups,
16673            SourceAddressCheck,
16674            Ipv4Address,
16675            Ipv6Address,
16676            State,
16677            Instance,
16678            CreateTime,
16679            Creator,
16680            Tags,
16681            __SkipField__,
16682        }
16683        impl<'de> serde::Deserialize<'de> for GeneratedField {
16684            fn deserialize<D>(
16685                deserializer: D,
16686            ) -> std::result::Result<GeneratedField, D::Error>
16687            where
16688                D: serde::Deserializer<'de>,
16689            {
16690                struct GeneratedVisitor;
16691                impl serde::de::Visitor<'_> for GeneratedVisitor {
16692                    type Value = GeneratedField;
16693                    fn expecting(
16694                        &self,
16695                        formatter: &mut std::fmt::Formatter<'_>,
16696                    ) -> std::fmt::Result {
16697                        write!(formatter, "expected one of: {:?}", & FIELDS)
16698                    }
16699                    #[allow(unused_variables)]
16700                    fn visit_str<E>(
16701                        self,
16702                        value: &str,
16703                    ) -> std::result::Result<GeneratedField, E>
16704                    where
16705                        E: serde::de::Error,
16706                    {
16707                        match value {
16708                            "name" => Ok(GeneratedField::Name),
16709                            "urn" => Ok(GeneratedField::Urn),
16710                            "subnet" => Ok(GeneratedField::Subnet),
16711                            "securityGroups" | "security_groups" => {
16712                                Ok(GeneratedField::SecurityGroups)
16713                            }
16714                            "sourceAddressCheck" | "source_address_check" => {
16715                                Ok(GeneratedField::SourceAddressCheck)
16716                            }
16717                            "ipv4Address" | "ipv4_address" => {
16718                                Ok(GeneratedField::Ipv4Address)
16719                            }
16720                            "ipv6Address" | "ipv6_address" => {
16721                                Ok(GeneratedField::Ipv6Address)
16722                            }
16723                            "state" => Ok(GeneratedField::State),
16724                            "instance" => Ok(GeneratedField::Instance),
16725                            "createTime" | "create_time" => {
16726                                Ok(GeneratedField::CreateTime)
16727                            }
16728                            "creator" => Ok(GeneratedField::Creator),
16729                            "tags" => Ok(GeneratedField::Tags),
16730                            _ => Ok(GeneratedField::__SkipField__),
16731                        }
16732                    }
16733                }
16734                deserializer.deserialize_identifier(GeneratedVisitor)
16735            }
16736        }
16737        struct GeneratedVisitor;
16738        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16739            type Value = NetworkInterface;
16740            fn expecting(
16741                &self,
16742                formatter: &mut std::fmt::Formatter<'_>,
16743            ) -> std::fmt::Result {
16744                formatter
16745                    .write_str("struct origincloud.network.v1beta1.NetworkInterface")
16746            }
16747            fn visit_map<V>(
16748                self,
16749                mut map_: V,
16750            ) -> std::result::Result<NetworkInterface, V::Error>
16751            where
16752                V: serde::de::MapAccess<'de>,
16753            {
16754                let mut name__ = None;
16755                let mut urn__ = None;
16756                let mut subnet__ = None;
16757                let mut security_groups__ = None;
16758                let mut source_address_check__ = None;
16759                let mut ipv4_address__ = None;
16760                let mut ipv6_address__ = None;
16761                let mut state__ = None;
16762                let mut instance__ = None;
16763                let mut create_time__ = None;
16764                let mut creator__ = None;
16765                let mut tags__ = None;
16766                while let Some(k) = map_.next_key()? {
16767                    match k {
16768                        GeneratedField::Name => {
16769                            if name__.is_some() {
16770                                return Err(serde::de::Error::duplicate_field("name"));
16771                            }
16772                            name__ = Some(map_.next_value()?);
16773                        }
16774                        GeneratedField::Urn => {
16775                            if urn__.is_some() {
16776                                return Err(serde::de::Error::duplicate_field("urn"));
16777                            }
16778                            urn__ = Some(map_.next_value()?);
16779                        }
16780                        GeneratedField::Subnet => {
16781                            if subnet__.is_some() {
16782                                return Err(serde::de::Error::duplicate_field("subnet"));
16783                            }
16784                            subnet__ = Some(map_.next_value()?);
16785                        }
16786                        GeneratedField::SecurityGroups => {
16787                            if security_groups__.is_some() {
16788                                return Err(
16789                                    serde::de::Error::duplicate_field("securityGroups"),
16790                                );
16791                            }
16792                            security_groups__ = Some(map_.next_value()?);
16793                        }
16794                        GeneratedField::SourceAddressCheck => {
16795                            if source_address_check__.is_some() {
16796                                return Err(
16797                                    serde::de::Error::duplicate_field("sourceAddressCheck"),
16798                                );
16799                            }
16800                            source_address_check__ = map_.next_value()?;
16801                        }
16802                        GeneratedField::Ipv4Address => {
16803                            if ipv4_address__.is_some() {
16804                                return Err(
16805                                    serde::de::Error::duplicate_field("ipv4Address"),
16806                                );
16807                            }
16808                            ipv4_address__ = Some(map_.next_value()?);
16809                        }
16810                        GeneratedField::Ipv6Address => {
16811                            if ipv6_address__.is_some() {
16812                                return Err(
16813                                    serde::de::Error::duplicate_field("ipv6Address"),
16814                                );
16815                            }
16816                            ipv6_address__ = Some(map_.next_value()?);
16817                        }
16818                        GeneratedField::State => {
16819                            if state__.is_some() {
16820                                return Err(serde::de::Error::duplicate_field("state"));
16821                            }
16822                            state__ = Some(
16823                                map_.next_value::<network_interface::State>()? as i32,
16824                            );
16825                        }
16826                        GeneratedField::Instance => {
16827                            if instance__.is_some() {
16828                                return Err(serde::de::Error::duplicate_field("instance"));
16829                            }
16830                            instance__ = Some(map_.next_value()?);
16831                        }
16832                        GeneratedField::CreateTime => {
16833                            if create_time__.is_some() {
16834                                return Err(serde::de::Error::duplicate_field("createTime"));
16835                            }
16836                            create_time__ = map_.next_value()?;
16837                        }
16838                        GeneratedField::Creator => {
16839                            if creator__.is_some() {
16840                                return Err(serde::de::Error::duplicate_field("creator"));
16841                            }
16842                            creator__ = Some(map_.next_value()?);
16843                        }
16844                        GeneratedField::Tags => {
16845                            if tags__.is_some() {
16846                                return Err(serde::de::Error::duplicate_field("tags"));
16847                            }
16848                            tags__ = Some(
16849                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
16850                            );
16851                        }
16852                        GeneratedField::__SkipField__ => {
16853                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16854                        }
16855                    }
16856                }
16857                Ok(NetworkInterface {
16858                    name: name__.unwrap_or_default(),
16859                    urn: urn__.unwrap_or_default(),
16860                    subnet: subnet__.unwrap_or_default(),
16861                    security_groups: security_groups__.unwrap_or_default(),
16862                    source_address_check: source_address_check__,
16863                    ipv4_address: ipv4_address__.unwrap_or_default(),
16864                    ipv6_address: ipv6_address__.unwrap_or_default(),
16865                    state: state__.unwrap_or_default(),
16866                    instance: instance__.unwrap_or_default(),
16867                    create_time: create_time__,
16868                    creator: creator__.unwrap_or_default(),
16869                    tags: tags__.unwrap_or_default(),
16870                })
16871            }
16872        }
16873        deserializer
16874            .deserialize_struct(
16875                "origincloud.network.v1beta1.NetworkInterface",
16876                FIELDS,
16877                GeneratedVisitor,
16878            )
16879    }
16880}
16881impl serde::Serialize for network_interface::State {
16882    #[allow(deprecated)]
16883    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16884    where
16885        S: serde::Serializer,
16886    {
16887        let variant = match self {
16888            Self::Unspecified => "STATE_UNSPECIFIED",
16889            Self::Available => "AVAILABLE",
16890            Self::Attached => "ATTACHED",
16891        };
16892        serializer.serialize_str(variant)
16893    }
16894}
16895impl<'de> serde::Deserialize<'de> for network_interface::State {
16896    #[allow(deprecated)]
16897    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16898    where
16899        D: serde::Deserializer<'de>,
16900    {
16901        const FIELDS: &[&str] = &["STATE_UNSPECIFIED", "AVAILABLE", "ATTACHED"];
16902        struct GeneratedVisitor;
16903        impl serde::de::Visitor<'_> for GeneratedVisitor {
16904            type Value = network_interface::State;
16905            fn expecting(
16906                &self,
16907                formatter: &mut std::fmt::Formatter<'_>,
16908            ) -> std::fmt::Result {
16909                write!(formatter, "expected one of: {:?}", & FIELDS)
16910            }
16911            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
16912            where
16913                E: serde::de::Error,
16914            {
16915                i32::try_from(v)
16916                    .ok()
16917                    .and_then(|x| {
16918                        x
16919                            .try_into()
16920                            .ok()
16921                            .or_else(|| Some(network_interface::State::default()))
16922                    })
16923                    .ok_or_else(|| {
16924                        serde::de::Error::invalid_value(
16925                            serde::de::Unexpected::Signed(v),
16926                            &self,
16927                        )
16928                    })
16929            }
16930            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
16931            where
16932                E: serde::de::Error,
16933            {
16934                i32::try_from(v)
16935                    .ok()
16936                    .and_then(|x| {
16937                        x
16938                            .try_into()
16939                            .ok()
16940                            .or_else(|| Some(network_interface::State::default()))
16941                    })
16942                    .ok_or_else(|| {
16943                        serde::de::Error::invalid_value(
16944                            serde::de::Unexpected::Unsigned(v),
16945                            &self,
16946                        )
16947                    })
16948            }
16949            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
16950            where
16951                E: serde::de::Error,
16952            {
16953                match value {
16954                    "STATE_UNSPECIFIED" => Ok(network_interface::State::Unspecified),
16955                    "AVAILABLE" => Ok(network_interface::State::Available),
16956                    "ATTACHED" => Ok(network_interface::State::Attached),
16957                    _ => Ok(network_interface::State::default()),
16958                }
16959            }
16960        }
16961        deserializer.deserialize_any(GeneratedVisitor)
16962    }
16963}
16964impl serde::Serialize for Route {
16965    #[allow(deprecated)]
16966    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16967    where
16968        S: serde::Serializer,
16969    {
16970        use serde::ser::SerializeStruct;
16971        let mut len = 0;
16972        if !self.name.is_empty() {
16973            len += 1;
16974        }
16975        if !self.destination.is_empty() {
16976            len += 1;
16977        }
16978        if !self.internet_gateway.is_empty() {
16979            len += 1;
16980        }
16981        if !self.nat_gateway.is_empty() {
16982            len += 1;
16983        }
16984        let mut struct_ser = serializer
16985            .serialize_struct("origincloud.network.v1beta1.Route", len)?;
16986        if !self.name.is_empty() {
16987            struct_ser.serialize_field("name", &self.name)?;
16988        }
16989        if !self.destination.is_empty() {
16990            struct_ser.serialize_field("destination", &self.destination)?;
16991        }
16992        if !self.internet_gateway.is_empty() {
16993            struct_ser.serialize_field("internetGateway", &self.internet_gateway)?;
16994        }
16995        if !self.nat_gateway.is_empty() {
16996            struct_ser.serialize_field("natGateway", &self.nat_gateway)?;
16997        }
16998        struct_ser.end()
16999    }
17000}
17001impl<'de> serde::Deserialize<'de> for Route {
17002    #[allow(deprecated)]
17003    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17004    where
17005        D: serde::Deserializer<'de>,
17006    {
17007        const FIELDS: &[&str] = &[
17008            "name",
17009            "destination",
17010            "internet_gateway",
17011            "internetGateway",
17012            "nat_gateway",
17013            "natGateway",
17014        ];
17015        #[allow(clippy::enum_variant_names)]
17016        enum GeneratedField {
17017            Name,
17018            Destination,
17019            InternetGateway,
17020            NatGateway,
17021            __SkipField__,
17022        }
17023        impl<'de> serde::Deserialize<'de> for GeneratedField {
17024            fn deserialize<D>(
17025                deserializer: D,
17026            ) -> std::result::Result<GeneratedField, D::Error>
17027            where
17028                D: serde::Deserializer<'de>,
17029            {
17030                struct GeneratedVisitor;
17031                impl serde::de::Visitor<'_> for GeneratedVisitor {
17032                    type Value = GeneratedField;
17033                    fn expecting(
17034                        &self,
17035                        formatter: &mut std::fmt::Formatter<'_>,
17036                    ) -> std::fmt::Result {
17037                        write!(formatter, "expected one of: {:?}", & FIELDS)
17038                    }
17039                    #[allow(unused_variables)]
17040                    fn visit_str<E>(
17041                        self,
17042                        value: &str,
17043                    ) -> std::result::Result<GeneratedField, E>
17044                    where
17045                        E: serde::de::Error,
17046                    {
17047                        match value {
17048                            "name" => Ok(GeneratedField::Name),
17049                            "destination" => Ok(GeneratedField::Destination),
17050                            "internetGateway" | "internet_gateway" => {
17051                                Ok(GeneratedField::InternetGateway)
17052                            }
17053                            "natGateway" | "nat_gateway" => {
17054                                Ok(GeneratedField::NatGateway)
17055                            }
17056                            _ => Ok(GeneratedField::__SkipField__),
17057                        }
17058                    }
17059                }
17060                deserializer.deserialize_identifier(GeneratedVisitor)
17061            }
17062        }
17063        struct GeneratedVisitor;
17064        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17065            type Value = Route;
17066            fn expecting(
17067                &self,
17068                formatter: &mut std::fmt::Formatter<'_>,
17069            ) -> std::fmt::Result {
17070                formatter.write_str("struct origincloud.network.v1beta1.Route")
17071            }
17072            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Route, V::Error>
17073            where
17074                V: serde::de::MapAccess<'de>,
17075            {
17076                let mut name__ = None;
17077                let mut destination__ = None;
17078                let mut internet_gateway__ = None;
17079                let mut nat_gateway__ = None;
17080                while let Some(k) = map_.next_key()? {
17081                    match k {
17082                        GeneratedField::Name => {
17083                            if name__.is_some() {
17084                                return Err(serde::de::Error::duplicate_field("name"));
17085                            }
17086                            name__ = Some(map_.next_value()?);
17087                        }
17088                        GeneratedField::Destination => {
17089                            if destination__.is_some() {
17090                                return Err(
17091                                    serde::de::Error::duplicate_field("destination"),
17092                                );
17093                            }
17094                            destination__ = Some(map_.next_value()?);
17095                        }
17096                        GeneratedField::InternetGateway => {
17097                            if internet_gateway__.is_some() {
17098                                return Err(
17099                                    serde::de::Error::duplicate_field("internetGateway"),
17100                                );
17101                            }
17102                            internet_gateway__ = Some(map_.next_value()?);
17103                        }
17104                        GeneratedField::NatGateway => {
17105                            if nat_gateway__.is_some() {
17106                                return Err(serde::de::Error::duplicate_field("natGateway"));
17107                            }
17108                            nat_gateway__ = Some(map_.next_value()?);
17109                        }
17110                        GeneratedField::__SkipField__ => {
17111                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17112                        }
17113                    }
17114                }
17115                Ok(Route {
17116                    name: name__.unwrap_or_default(),
17117                    destination: destination__.unwrap_or_default(),
17118                    internet_gateway: internet_gateway__.unwrap_or_default(),
17119                    nat_gateway: nat_gateway__.unwrap_or_default(),
17120                })
17121            }
17122        }
17123        deserializer
17124            .deserialize_struct(
17125                "origincloud.network.v1beta1.Route",
17126                FIELDS,
17127                GeneratedVisitor,
17128            )
17129    }
17130}
17131impl serde::Serialize for RouteTable {
17132    #[allow(deprecated)]
17133    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17134    where
17135        S: serde::Serializer,
17136    {
17137        use serde::ser::SerializeStruct;
17138        let mut len = 0;
17139        if !self.name.is_empty() {
17140            len += 1;
17141        }
17142        if !self.urn.is_empty() {
17143            len += 1;
17144        }
17145        if !self.vpc.is_empty() {
17146            len += 1;
17147        }
17148        if self.main {
17149            len += 1;
17150        }
17151        if !self.local_routes.is_empty() {
17152            len += 1;
17153        }
17154        if self.create_time.is_some() {
17155            len += 1;
17156        }
17157        if !self.creator.is_empty() {
17158            len += 1;
17159        }
17160        if !self.tags.is_empty() {
17161            len += 1;
17162        }
17163        let mut struct_ser = serializer
17164            .serialize_struct("origincloud.network.v1beta1.RouteTable", len)?;
17165        if !self.name.is_empty() {
17166            struct_ser.serialize_field("name", &self.name)?;
17167        }
17168        if !self.urn.is_empty() {
17169            struct_ser.serialize_field("urn", &self.urn)?;
17170        }
17171        if !self.vpc.is_empty() {
17172            struct_ser.serialize_field("vpc", &self.vpc)?;
17173        }
17174        if self.main {
17175            struct_ser.serialize_field("main", &self.main)?;
17176        }
17177        if !self.local_routes.is_empty() {
17178            struct_ser.serialize_field("localRoutes", &self.local_routes)?;
17179        }
17180        if let Some(v) = self.create_time.as_ref() {
17181            struct_ser.serialize_field("createTime", v)?;
17182        }
17183        if !self.creator.is_empty() {
17184            struct_ser.serialize_field("creator", &self.creator)?;
17185        }
17186        if !self.tags.is_empty() {
17187            struct_ser.serialize_field("tags", &self.tags)?;
17188        }
17189        struct_ser.end()
17190    }
17191}
17192impl<'de> serde::Deserialize<'de> for RouteTable {
17193    #[allow(deprecated)]
17194    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17195    where
17196        D: serde::Deserializer<'de>,
17197    {
17198        const FIELDS: &[&str] = &[
17199            "name",
17200            "urn",
17201            "vpc",
17202            "main",
17203            "local_routes",
17204            "localRoutes",
17205            "create_time",
17206            "createTime",
17207            "creator",
17208            "tags",
17209        ];
17210        #[allow(clippy::enum_variant_names)]
17211        enum GeneratedField {
17212            Name,
17213            Urn,
17214            Vpc,
17215            Main,
17216            LocalRoutes,
17217            CreateTime,
17218            Creator,
17219            Tags,
17220            __SkipField__,
17221        }
17222        impl<'de> serde::Deserialize<'de> for GeneratedField {
17223            fn deserialize<D>(
17224                deserializer: D,
17225            ) -> std::result::Result<GeneratedField, D::Error>
17226            where
17227                D: serde::Deserializer<'de>,
17228            {
17229                struct GeneratedVisitor;
17230                impl serde::de::Visitor<'_> for GeneratedVisitor {
17231                    type Value = GeneratedField;
17232                    fn expecting(
17233                        &self,
17234                        formatter: &mut std::fmt::Formatter<'_>,
17235                    ) -> std::fmt::Result {
17236                        write!(formatter, "expected one of: {:?}", & FIELDS)
17237                    }
17238                    #[allow(unused_variables)]
17239                    fn visit_str<E>(
17240                        self,
17241                        value: &str,
17242                    ) -> std::result::Result<GeneratedField, E>
17243                    where
17244                        E: serde::de::Error,
17245                    {
17246                        match value {
17247                            "name" => Ok(GeneratedField::Name),
17248                            "urn" => Ok(GeneratedField::Urn),
17249                            "vpc" => Ok(GeneratedField::Vpc),
17250                            "main" => Ok(GeneratedField::Main),
17251                            "localRoutes" | "local_routes" => {
17252                                Ok(GeneratedField::LocalRoutes)
17253                            }
17254                            "createTime" | "create_time" => {
17255                                Ok(GeneratedField::CreateTime)
17256                            }
17257                            "creator" => Ok(GeneratedField::Creator),
17258                            "tags" => Ok(GeneratedField::Tags),
17259                            _ => Ok(GeneratedField::__SkipField__),
17260                        }
17261                    }
17262                }
17263                deserializer.deserialize_identifier(GeneratedVisitor)
17264            }
17265        }
17266        struct GeneratedVisitor;
17267        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17268            type Value = RouteTable;
17269            fn expecting(
17270                &self,
17271                formatter: &mut std::fmt::Formatter<'_>,
17272            ) -> std::fmt::Result {
17273                formatter.write_str("struct origincloud.network.v1beta1.RouteTable")
17274            }
17275            fn visit_map<V>(
17276                self,
17277                mut map_: V,
17278            ) -> std::result::Result<RouteTable, V::Error>
17279            where
17280                V: serde::de::MapAccess<'de>,
17281            {
17282                let mut name__ = None;
17283                let mut urn__ = None;
17284                let mut vpc__ = None;
17285                let mut main__ = None;
17286                let mut local_routes__ = None;
17287                let mut create_time__ = None;
17288                let mut creator__ = None;
17289                let mut tags__ = None;
17290                while let Some(k) = map_.next_key()? {
17291                    match k {
17292                        GeneratedField::Name => {
17293                            if name__.is_some() {
17294                                return Err(serde::de::Error::duplicate_field("name"));
17295                            }
17296                            name__ = Some(map_.next_value()?);
17297                        }
17298                        GeneratedField::Urn => {
17299                            if urn__.is_some() {
17300                                return Err(serde::de::Error::duplicate_field("urn"));
17301                            }
17302                            urn__ = Some(map_.next_value()?);
17303                        }
17304                        GeneratedField::Vpc => {
17305                            if vpc__.is_some() {
17306                                return Err(serde::de::Error::duplicate_field("vpc"));
17307                            }
17308                            vpc__ = Some(map_.next_value()?);
17309                        }
17310                        GeneratedField::Main => {
17311                            if main__.is_some() {
17312                                return Err(serde::de::Error::duplicate_field("main"));
17313                            }
17314                            main__ = Some(map_.next_value()?);
17315                        }
17316                        GeneratedField::LocalRoutes => {
17317                            if local_routes__.is_some() {
17318                                return Err(
17319                                    serde::de::Error::duplicate_field("localRoutes"),
17320                                );
17321                            }
17322                            local_routes__ = Some(map_.next_value()?);
17323                        }
17324                        GeneratedField::CreateTime => {
17325                            if create_time__.is_some() {
17326                                return Err(serde::de::Error::duplicate_field("createTime"));
17327                            }
17328                            create_time__ = map_.next_value()?;
17329                        }
17330                        GeneratedField::Creator => {
17331                            if creator__.is_some() {
17332                                return Err(serde::de::Error::duplicate_field("creator"));
17333                            }
17334                            creator__ = Some(map_.next_value()?);
17335                        }
17336                        GeneratedField::Tags => {
17337                            if tags__.is_some() {
17338                                return Err(serde::de::Error::duplicate_field("tags"));
17339                            }
17340                            tags__ = Some(
17341                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
17342                            );
17343                        }
17344                        GeneratedField::__SkipField__ => {
17345                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17346                        }
17347                    }
17348                }
17349                Ok(RouteTable {
17350                    name: name__.unwrap_or_default(),
17351                    urn: urn__.unwrap_or_default(),
17352                    vpc: vpc__.unwrap_or_default(),
17353                    main: main__.unwrap_or_default(),
17354                    local_routes: local_routes__.unwrap_or_default(),
17355                    create_time: create_time__,
17356                    creator: creator__.unwrap_or_default(),
17357                    tags: tags__.unwrap_or_default(),
17358                })
17359            }
17360        }
17361        deserializer
17362            .deserialize_struct(
17363                "origincloud.network.v1beta1.RouteTable",
17364                FIELDS,
17365                GeneratedVisitor,
17366            )
17367    }
17368}
17369impl serde::Serialize for RouteTableAssociation {
17370    #[allow(deprecated)]
17371    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17372    where
17373        S: serde::Serializer,
17374    {
17375        use serde::ser::SerializeStruct;
17376        let mut len = 0;
17377        if !self.name.is_empty() {
17378            len += 1;
17379        }
17380        if !self.route_table.is_empty() {
17381            len += 1;
17382        }
17383        let mut struct_ser = serializer
17384            .serialize_struct("origincloud.network.v1beta1.RouteTableAssociation", len)?;
17385        if !self.name.is_empty() {
17386            struct_ser.serialize_field("name", &self.name)?;
17387        }
17388        if !self.route_table.is_empty() {
17389            struct_ser.serialize_field("routeTable", &self.route_table)?;
17390        }
17391        struct_ser.end()
17392    }
17393}
17394impl<'de> serde::Deserialize<'de> for RouteTableAssociation {
17395    #[allow(deprecated)]
17396    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17397    where
17398        D: serde::Deserializer<'de>,
17399    {
17400        const FIELDS: &[&str] = &["name", "route_table", "routeTable"];
17401        #[allow(clippy::enum_variant_names)]
17402        enum GeneratedField {
17403            Name,
17404            RouteTable,
17405            __SkipField__,
17406        }
17407        impl<'de> serde::Deserialize<'de> for GeneratedField {
17408            fn deserialize<D>(
17409                deserializer: D,
17410            ) -> std::result::Result<GeneratedField, D::Error>
17411            where
17412                D: serde::Deserializer<'de>,
17413            {
17414                struct GeneratedVisitor;
17415                impl serde::de::Visitor<'_> for GeneratedVisitor {
17416                    type Value = GeneratedField;
17417                    fn expecting(
17418                        &self,
17419                        formatter: &mut std::fmt::Formatter<'_>,
17420                    ) -> std::fmt::Result {
17421                        write!(formatter, "expected one of: {:?}", & FIELDS)
17422                    }
17423                    #[allow(unused_variables)]
17424                    fn visit_str<E>(
17425                        self,
17426                        value: &str,
17427                    ) -> std::result::Result<GeneratedField, E>
17428                    where
17429                        E: serde::de::Error,
17430                    {
17431                        match value {
17432                            "name" => Ok(GeneratedField::Name),
17433                            "routeTable" | "route_table" => {
17434                                Ok(GeneratedField::RouteTable)
17435                            }
17436                            _ => Ok(GeneratedField::__SkipField__),
17437                        }
17438                    }
17439                }
17440                deserializer.deserialize_identifier(GeneratedVisitor)
17441            }
17442        }
17443        struct GeneratedVisitor;
17444        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17445            type Value = RouteTableAssociation;
17446            fn expecting(
17447                &self,
17448                formatter: &mut std::fmt::Formatter<'_>,
17449            ) -> std::fmt::Result {
17450                formatter
17451                    .write_str(
17452                        "struct origincloud.network.v1beta1.RouteTableAssociation",
17453                    )
17454            }
17455            fn visit_map<V>(
17456                self,
17457                mut map_: V,
17458            ) -> std::result::Result<RouteTableAssociation, V::Error>
17459            where
17460                V: serde::de::MapAccess<'de>,
17461            {
17462                let mut name__ = None;
17463                let mut route_table__ = None;
17464                while let Some(k) = map_.next_key()? {
17465                    match k {
17466                        GeneratedField::Name => {
17467                            if name__.is_some() {
17468                                return Err(serde::de::Error::duplicate_field("name"));
17469                            }
17470                            name__ = Some(map_.next_value()?);
17471                        }
17472                        GeneratedField::RouteTable => {
17473                            if route_table__.is_some() {
17474                                return Err(serde::de::Error::duplicate_field("routeTable"));
17475                            }
17476                            route_table__ = Some(map_.next_value()?);
17477                        }
17478                        GeneratedField::__SkipField__ => {
17479                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17480                        }
17481                    }
17482                }
17483                Ok(RouteTableAssociation {
17484                    name: name__.unwrap_or_default(),
17485                    route_table: route_table__.unwrap_or_default(),
17486                })
17487            }
17488        }
17489        deserializer
17490            .deserialize_struct(
17491                "origincloud.network.v1beta1.RouteTableAssociation",
17492                FIELDS,
17493                GeneratedVisitor,
17494            )
17495    }
17496}
17497impl serde::Serialize for SecurityGroup {
17498    #[allow(deprecated)]
17499    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17500    where
17501        S: serde::Serializer,
17502    {
17503        use serde::ser::SerializeStruct;
17504        let mut len = 0;
17505        if !self.name.is_empty() {
17506            len += 1;
17507        }
17508        if !self.urn.is_empty() {
17509            len += 1;
17510        }
17511        if !self.vpc.is_empty() {
17512            len += 1;
17513        }
17514        if self.vpc_default {
17515            len += 1;
17516        }
17517        if self.create_time.is_some() {
17518            len += 1;
17519        }
17520        if !self.creator.is_empty() {
17521            len += 1;
17522        }
17523        if !self.tags.is_empty() {
17524            len += 1;
17525        }
17526        let mut struct_ser = serializer
17527            .serialize_struct("origincloud.network.v1beta1.SecurityGroup", len)?;
17528        if !self.name.is_empty() {
17529            struct_ser.serialize_field("name", &self.name)?;
17530        }
17531        if !self.urn.is_empty() {
17532            struct_ser.serialize_field("urn", &self.urn)?;
17533        }
17534        if !self.vpc.is_empty() {
17535            struct_ser.serialize_field("vpc", &self.vpc)?;
17536        }
17537        if self.vpc_default {
17538            struct_ser.serialize_field("vpcDefault", &self.vpc_default)?;
17539        }
17540        if let Some(v) = self.create_time.as_ref() {
17541            struct_ser.serialize_field("createTime", v)?;
17542        }
17543        if !self.creator.is_empty() {
17544            struct_ser.serialize_field("creator", &self.creator)?;
17545        }
17546        if !self.tags.is_empty() {
17547            struct_ser.serialize_field("tags", &self.tags)?;
17548        }
17549        struct_ser.end()
17550    }
17551}
17552impl<'de> serde::Deserialize<'de> for SecurityGroup {
17553    #[allow(deprecated)]
17554    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17555    where
17556        D: serde::Deserializer<'de>,
17557    {
17558        const FIELDS: &[&str] = &[
17559            "name",
17560            "urn",
17561            "vpc",
17562            "vpc_default",
17563            "vpcDefault",
17564            "create_time",
17565            "createTime",
17566            "creator",
17567            "tags",
17568        ];
17569        #[allow(clippy::enum_variant_names)]
17570        enum GeneratedField {
17571            Name,
17572            Urn,
17573            Vpc,
17574            VpcDefault,
17575            CreateTime,
17576            Creator,
17577            Tags,
17578            __SkipField__,
17579        }
17580        impl<'de> serde::Deserialize<'de> for GeneratedField {
17581            fn deserialize<D>(
17582                deserializer: D,
17583            ) -> std::result::Result<GeneratedField, D::Error>
17584            where
17585                D: serde::Deserializer<'de>,
17586            {
17587                struct GeneratedVisitor;
17588                impl serde::de::Visitor<'_> for GeneratedVisitor {
17589                    type Value = GeneratedField;
17590                    fn expecting(
17591                        &self,
17592                        formatter: &mut std::fmt::Formatter<'_>,
17593                    ) -> std::fmt::Result {
17594                        write!(formatter, "expected one of: {:?}", & FIELDS)
17595                    }
17596                    #[allow(unused_variables)]
17597                    fn visit_str<E>(
17598                        self,
17599                        value: &str,
17600                    ) -> std::result::Result<GeneratedField, E>
17601                    where
17602                        E: serde::de::Error,
17603                    {
17604                        match value {
17605                            "name" => Ok(GeneratedField::Name),
17606                            "urn" => Ok(GeneratedField::Urn),
17607                            "vpc" => Ok(GeneratedField::Vpc),
17608                            "vpcDefault" | "vpc_default" => {
17609                                Ok(GeneratedField::VpcDefault)
17610                            }
17611                            "createTime" | "create_time" => {
17612                                Ok(GeneratedField::CreateTime)
17613                            }
17614                            "creator" => Ok(GeneratedField::Creator),
17615                            "tags" => Ok(GeneratedField::Tags),
17616                            _ => Ok(GeneratedField::__SkipField__),
17617                        }
17618                    }
17619                }
17620                deserializer.deserialize_identifier(GeneratedVisitor)
17621            }
17622        }
17623        struct GeneratedVisitor;
17624        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17625            type Value = SecurityGroup;
17626            fn expecting(
17627                &self,
17628                formatter: &mut std::fmt::Formatter<'_>,
17629            ) -> std::fmt::Result {
17630                formatter.write_str("struct origincloud.network.v1beta1.SecurityGroup")
17631            }
17632            fn visit_map<V>(
17633                self,
17634                mut map_: V,
17635            ) -> std::result::Result<SecurityGroup, V::Error>
17636            where
17637                V: serde::de::MapAccess<'de>,
17638            {
17639                let mut name__ = None;
17640                let mut urn__ = None;
17641                let mut vpc__ = None;
17642                let mut vpc_default__ = None;
17643                let mut create_time__ = None;
17644                let mut creator__ = None;
17645                let mut tags__ = None;
17646                while let Some(k) = map_.next_key()? {
17647                    match k {
17648                        GeneratedField::Name => {
17649                            if name__.is_some() {
17650                                return Err(serde::de::Error::duplicate_field("name"));
17651                            }
17652                            name__ = Some(map_.next_value()?);
17653                        }
17654                        GeneratedField::Urn => {
17655                            if urn__.is_some() {
17656                                return Err(serde::de::Error::duplicate_field("urn"));
17657                            }
17658                            urn__ = Some(map_.next_value()?);
17659                        }
17660                        GeneratedField::Vpc => {
17661                            if vpc__.is_some() {
17662                                return Err(serde::de::Error::duplicate_field("vpc"));
17663                            }
17664                            vpc__ = Some(map_.next_value()?);
17665                        }
17666                        GeneratedField::VpcDefault => {
17667                            if vpc_default__.is_some() {
17668                                return Err(serde::de::Error::duplicate_field("vpcDefault"));
17669                            }
17670                            vpc_default__ = Some(map_.next_value()?);
17671                        }
17672                        GeneratedField::CreateTime => {
17673                            if create_time__.is_some() {
17674                                return Err(serde::de::Error::duplicate_field("createTime"));
17675                            }
17676                            create_time__ = map_.next_value()?;
17677                        }
17678                        GeneratedField::Creator => {
17679                            if creator__.is_some() {
17680                                return Err(serde::de::Error::duplicate_field("creator"));
17681                            }
17682                            creator__ = Some(map_.next_value()?);
17683                        }
17684                        GeneratedField::Tags => {
17685                            if tags__.is_some() {
17686                                return Err(serde::de::Error::duplicate_field("tags"));
17687                            }
17688                            tags__ = Some(
17689                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
17690                            );
17691                        }
17692                        GeneratedField::__SkipField__ => {
17693                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17694                        }
17695                    }
17696                }
17697                Ok(SecurityGroup {
17698                    name: name__.unwrap_or_default(),
17699                    urn: urn__.unwrap_or_default(),
17700                    vpc: vpc__.unwrap_or_default(),
17701                    vpc_default: vpc_default__.unwrap_or_default(),
17702                    create_time: create_time__,
17703                    creator: creator__.unwrap_or_default(),
17704                    tags: tags__.unwrap_or_default(),
17705                })
17706            }
17707        }
17708        deserializer
17709            .deserialize_struct(
17710                "origincloud.network.v1beta1.SecurityGroup",
17711                FIELDS,
17712                GeneratedVisitor,
17713            )
17714    }
17715}
17716impl serde::Serialize for SecurityGroupAssociation {
17717    #[allow(deprecated)]
17718    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17719    where
17720        S: serde::Serializer,
17721    {
17722        use serde::ser::SerializeStruct;
17723        let mut len = 0;
17724        if !self.name.is_empty() {
17725            len += 1;
17726        }
17727        if !self.security_group.is_empty() {
17728            len += 1;
17729        }
17730        let mut struct_ser = serializer
17731            .serialize_struct(
17732                "origincloud.network.v1beta1.SecurityGroupAssociation",
17733                len,
17734            )?;
17735        if !self.name.is_empty() {
17736            struct_ser.serialize_field("name", &self.name)?;
17737        }
17738        if !self.security_group.is_empty() {
17739            struct_ser.serialize_field("securityGroup", &self.security_group)?;
17740        }
17741        struct_ser.end()
17742    }
17743}
17744impl<'de> serde::Deserialize<'de> for SecurityGroupAssociation {
17745    #[allow(deprecated)]
17746    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17747    where
17748        D: serde::Deserializer<'de>,
17749    {
17750        const FIELDS: &[&str] = &["name", "security_group", "securityGroup"];
17751        #[allow(clippy::enum_variant_names)]
17752        enum GeneratedField {
17753            Name,
17754            SecurityGroup,
17755            __SkipField__,
17756        }
17757        impl<'de> serde::Deserialize<'de> for GeneratedField {
17758            fn deserialize<D>(
17759                deserializer: D,
17760            ) -> std::result::Result<GeneratedField, D::Error>
17761            where
17762                D: serde::Deserializer<'de>,
17763            {
17764                struct GeneratedVisitor;
17765                impl serde::de::Visitor<'_> for GeneratedVisitor {
17766                    type Value = GeneratedField;
17767                    fn expecting(
17768                        &self,
17769                        formatter: &mut std::fmt::Formatter<'_>,
17770                    ) -> std::fmt::Result {
17771                        write!(formatter, "expected one of: {:?}", & FIELDS)
17772                    }
17773                    #[allow(unused_variables)]
17774                    fn visit_str<E>(
17775                        self,
17776                        value: &str,
17777                    ) -> std::result::Result<GeneratedField, E>
17778                    where
17779                        E: serde::de::Error,
17780                    {
17781                        match value {
17782                            "name" => Ok(GeneratedField::Name),
17783                            "securityGroup" | "security_group" => {
17784                                Ok(GeneratedField::SecurityGroup)
17785                            }
17786                            _ => Ok(GeneratedField::__SkipField__),
17787                        }
17788                    }
17789                }
17790                deserializer.deserialize_identifier(GeneratedVisitor)
17791            }
17792        }
17793        struct GeneratedVisitor;
17794        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17795            type Value = SecurityGroupAssociation;
17796            fn expecting(
17797                &self,
17798                formatter: &mut std::fmt::Formatter<'_>,
17799            ) -> std::fmt::Result {
17800                formatter
17801                    .write_str(
17802                        "struct origincloud.network.v1beta1.SecurityGroupAssociation",
17803                    )
17804            }
17805            fn visit_map<V>(
17806                self,
17807                mut map_: V,
17808            ) -> std::result::Result<SecurityGroupAssociation, V::Error>
17809            where
17810                V: serde::de::MapAccess<'de>,
17811            {
17812                let mut name__ = None;
17813                let mut security_group__ = None;
17814                while let Some(k) = map_.next_key()? {
17815                    match k {
17816                        GeneratedField::Name => {
17817                            if name__.is_some() {
17818                                return Err(serde::de::Error::duplicate_field("name"));
17819                            }
17820                            name__ = Some(map_.next_value()?);
17821                        }
17822                        GeneratedField::SecurityGroup => {
17823                            if security_group__.is_some() {
17824                                return Err(
17825                                    serde::de::Error::duplicate_field("securityGroup"),
17826                                );
17827                            }
17828                            security_group__ = Some(map_.next_value()?);
17829                        }
17830                        GeneratedField::__SkipField__ => {
17831                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17832                        }
17833                    }
17834                }
17835                Ok(SecurityGroupAssociation {
17836                    name: name__.unwrap_or_default(),
17837                    security_group: security_group__.unwrap_or_default(),
17838                })
17839            }
17840        }
17841        deserializer
17842            .deserialize_struct(
17843                "origincloud.network.v1beta1.SecurityGroupAssociation",
17844                FIELDS,
17845                GeneratedVisitor,
17846            )
17847    }
17848}
17849impl serde::Serialize for SecurityGroupRule {
17850    #[allow(deprecated)]
17851    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17852    where
17853        S: serde::Serializer,
17854    {
17855        use serde::ser::SerializeStruct;
17856        let mut len = 0;
17857        if !self.name.is_empty() {
17858            len += 1;
17859        }
17860        if self.direction != 0 {
17861            len += 1;
17862        }
17863        if self.protocol != 0 {
17864            len += 1;
17865        }
17866        if self.first_port != 0 {
17867            len += 1;
17868        }
17869        if self.last_port != 0 {
17870            len += 1;
17871        }
17872        if !self.cidr_block.is_empty() {
17873            len += 1;
17874        }
17875        if !self.peer_security_group.is_empty() {
17876            len += 1;
17877        }
17878        if self.same_group {
17879            len += 1;
17880        }
17881        if !self.description.is_empty() {
17882            len += 1;
17883        }
17884        let mut struct_ser = serializer
17885            .serialize_struct("origincloud.network.v1beta1.SecurityGroupRule", len)?;
17886        if !self.name.is_empty() {
17887            struct_ser.serialize_field("name", &self.name)?;
17888        }
17889        if self.direction != 0 {
17890            let v = security_group_rule::Direction::try_from(self.direction)
17891                .map_err(|_| serde::ser::Error::custom(
17892                    format!("Invalid variant {}", self.direction),
17893                ))?;
17894            struct_ser.serialize_field("direction", &v)?;
17895        }
17896        if self.protocol != 0 {
17897            let v = security_group_rule::Protocol::try_from(self.protocol)
17898                .map_err(|_| serde::ser::Error::custom(
17899                    format!("Invalid variant {}", self.protocol),
17900                ))?;
17901            struct_ser.serialize_field("protocol", &v)?;
17902        }
17903        if self.first_port != 0 {
17904            struct_ser.serialize_field("firstPort", &self.first_port)?;
17905        }
17906        if self.last_port != 0 {
17907            struct_ser.serialize_field("lastPort", &self.last_port)?;
17908        }
17909        if !self.cidr_block.is_empty() {
17910            struct_ser.serialize_field("cidrBlock", &self.cidr_block)?;
17911        }
17912        if !self.peer_security_group.is_empty() {
17913            struct_ser.serialize_field("peerSecurityGroup", &self.peer_security_group)?;
17914        }
17915        if self.same_group {
17916            struct_ser.serialize_field("sameGroup", &self.same_group)?;
17917        }
17918        if !self.description.is_empty() {
17919            struct_ser.serialize_field("description", &self.description)?;
17920        }
17921        struct_ser.end()
17922    }
17923}
17924impl<'de> serde::Deserialize<'de> for SecurityGroupRule {
17925    #[allow(deprecated)]
17926    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17927    where
17928        D: serde::Deserializer<'de>,
17929    {
17930        const FIELDS: &[&str] = &[
17931            "name",
17932            "direction",
17933            "protocol",
17934            "first_port",
17935            "firstPort",
17936            "last_port",
17937            "lastPort",
17938            "cidr_block",
17939            "cidrBlock",
17940            "peer_security_group",
17941            "peerSecurityGroup",
17942            "same_group",
17943            "sameGroup",
17944            "description",
17945        ];
17946        #[allow(clippy::enum_variant_names)]
17947        enum GeneratedField {
17948            Name,
17949            Direction,
17950            Protocol,
17951            FirstPort,
17952            LastPort,
17953            CidrBlock,
17954            PeerSecurityGroup,
17955            SameGroup,
17956            Description,
17957            __SkipField__,
17958        }
17959        impl<'de> serde::Deserialize<'de> for GeneratedField {
17960            fn deserialize<D>(
17961                deserializer: D,
17962            ) -> std::result::Result<GeneratedField, D::Error>
17963            where
17964                D: serde::Deserializer<'de>,
17965            {
17966                struct GeneratedVisitor;
17967                impl serde::de::Visitor<'_> for GeneratedVisitor {
17968                    type Value = GeneratedField;
17969                    fn expecting(
17970                        &self,
17971                        formatter: &mut std::fmt::Formatter<'_>,
17972                    ) -> std::fmt::Result {
17973                        write!(formatter, "expected one of: {:?}", & FIELDS)
17974                    }
17975                    #[allow(unused_variables)]
17976                    fn visit_str<E>(
17977                        self,
17978                        value: &str,
17979                    ) -> std::result::Result<GeneratedField, E>
17980                    where
17981                        E: serde::de::Error,
17982                    {
17983                        match value {
17984                            "name" => Ok(GeneratedField::Name),
17985                            "direction" => Ok(GeneratedField::Direction),
17986                            "protocol" => Ok(GeneratedField::Protocol),
17987                            "firstPort" | "first_port" => Ok(GeneratedField::FirstPort),
17988                            "lastPort" | "last_port" => Ok(GeneratedField::LastPort),
17989                            "cidrBlock" | "cidr_block" => Ok(GeneratedField::CidrBlock),
17990                            "peerSecurityGroup" | "peer_security_group" => {
17991                                Ok(GeneratedField::PeerSecurityGroup)
17992                            }
17993                            "sameGroup" | "same_group" => Ok(GeneratedField::SameGroup),
17994                            "description" => Ok(GeneratedField::Description),
17995                            _ => Ok(GeneratedField::__SkipField__),
17996                        }
17997                    }
17998                }
17999                deserializer.deserialize_identifier(GeneratedVisitor)
18000            }
18001        }
18002        struct GeneratedVisitor;
18003        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18004            type Value = SecurityGroupRule;
18005            fn expecting(
18006                &self,
18007                formatter: &mut std::fmt::Formatter<'_>,
18008            ) -> std::fmt::Result {
18009                formatter
18010                    .write_str("struct origincloud.network.v1beta1.SecurityGroupRule")
18011            }
18012            fn visit_map<V>(
18013                self,
18014                mut map_: V,
18015            ) -> std::result::Result<SecurityGroupRule, V::Error>
18016            where
18017                V: serde::de::MapAccess<'de>,
18018            {
18019                let mut name__ = None;
18020                let mut direction__ = None;
18021                let mut protocol__ = None;
18022                let mut first_port__ = None;
18023                let mut last_port__ = None;
18024                let mut cidr_block__ = None;
18025                let mut peer_security_group__ = None;
18026                let mut same_group__ = None;
18027                let mut description__ = None;
18028                while let Some(k) = map_.next_key()? {
18029                    match k {
18030                        GeneratedField::Name => {
18031                            if name__.is_some() {
18032                                return Err(serde::de::Error::duplicate_field("name"));
18033                            }
18034                            name__ = Some(map_.next_value()?);
18035                        }
18036                        GeneratedField::Direction => {
18037                            if direction__.is_some() {
18038                                return Err(serde::de::Error::duplicate_field("direction"));
18039                            }
18040                            direction__ = Some(
18041                                map_.next_value::<security_group_rule::Direction>()? as i32,
18042                            );
18043                        }
18044                        GeneratedField::Protocol => {
18045                            if protocol__.is_some() {
18046                                return Err(serde::de::Error::duplicate_field("protocol"));
18047                            }
18048                            protocol__ = Some(
18049                                map_.next_value::<security_group_rule::Protocol>()? as i32,
18050                            );
18051                        }
18052                        GeneratedField::FirstPort => {
18053                            if first_port__.is_some() {
18054                                return Err(serde::de::Error::duplicate_field("firstPort"));
18055                            }
18056                            first_port__ = Some(
18057                                map_
18058                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18059                                    .0,
18060                            );
18061                        }
18062                        GeneratedField::LastPort => {
18063                            if last_port__.is_some() {
18064                                return Err(serde::de::Error::duplicate_field("lastPort"));
18065                            }
18066                            last_port__ = Some(
18067                                map_
18068                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18069                                    .0,
18070                            );
18071                        }
18072                        GeneratedField::CidrBlock => {
18073                            if cidr_block__.is_some() {
18074                                return Err(serde::de::Error::duplicate_field("cidrBlock"));
18075                            }
18076                            cidr_block__ = Some(map_.next_value()?);
18077                        }
18078                        GeneratedField::PeerSecurityGroup => {
18079                            if peer_security_group__.is_some() {
18080                                return Err(
18081                                    serde::de::Error::duplicate_field("peerSecurityGroup"),
18082                                );
18083                            }
18084                            peer_security_group__ = Some(map_.next_value()?);
18085                        }
18086                        GeneratedField::SameGroup => {
18087                            if same_group__.is_some() {
18088                                return Err(serde::de::Error::duplicate_field("sameGroup"));
18089                            }
18090                            same_group__ = Some(map_.next_value()?);
18091                        }
18092                        GeneratedField::Description => {
18093                            if description__.is_some() {
18094                                return Err(
18095                                    serde::de::Error::duplicate_field("description"),
18096                                );
18097                            }
18098                            description__ = Some(map_.next_value()?);
18099                        }
18100                        GeneratedField::__SkipField__ => {
18101                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18102                        }
18103                    }
18104                }
18105                Ok(SecurityGroupRule {
18106                    name: name__.unwrap_or_default(),
18107                    direction: direction__.unwrap_or_default(),
18108                    protocol: protocol__.unwrap_or_default(),
18109                    first_port: first_port__.unwrap_or_default(),
18110                    last_port: last_port__.unwrap_or_default(),
18111                    cidr_block: cidr_block__.unwrap_or_default(),
18112                    peer_security_group: peer_security_group__.unwrap_or_default(),
18113                    same_group: same_group__.unwrap_or_default(),
18114                    description: description__.unwrap_or_default(),
18115                })
18116            }
18117        }
18118        deserializer
18119            .deserialize_struct(
18120                "origincloud.network.v1beta1.SecurityGroupRule",
18121                FIELDS,
18122                GeneratedVisitor,
18123            )
18124    }
18125}
18126impl serde::Serialize for security_group_rule::Direction {
18127    #[allow(deprecated)]
18128    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18129    where
18130        S: serde::Serializer,
18131    {
18132        let variant = match self {
18133            Self::Unspecified => "DIRECTION_UNSPECIFIED",
18134            Self::Ingress => "INGRESS",
18135            Self::Egress => "EGRESS",
18136        };
18137        serializer.serialize_str(variant)
18138    }
18139}
18140impl<'de> serde::Deserialize<'de> for security_group_rule::Direction {
18141    #[allow(deprecated)]
18142    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18143    where
18144        D: serde::Deserializer<'de>,
18145    {
18146        const FIELDS: &[&str] = &["DIRECTION_UNSPECIFIED", "INGRESS", "EGRESS"];
18147        struct GeneratedVisitor;
18148        impl serde::de::Visitor<'_> for GeneratedVisitor {
18149            type Value = security_group_rule::Direction;
18150            fn expecting(
18151                &self,
18152                formatter: &mut std::fmt::Formatter<'_>,
18153            ) -> std::fmt::Result {
18154                write!(formatter, "expected one of: {:?}", & FIELDS)
18155            }
18156            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
18157            where
18158                E: serde::de::Error,
18159            {
18160                i32::try_from(v)
18161                    .ok()
18162                    .and_then(|x| {
18163                        x
18164                            .try_into()
18165                            .ok()
18166                            .or_else(|| Some(security_group_rule::Direction::default()))
18167                    })
18168                    .ok_or_else(|| {
18169                        serde::de::Error::invalid_value(
18170                            serde::de::Unexpected::Signed(v),
18171                            &self,
18172                        )
18173                    })
18174            }
18175            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
18176            where
18177                E: serde::de::Error,
18178            {
18179                i32::try_from(v)
18180                    .ok()
18181                    .and_then(|x| {
18182                        x
18183                            .try_into()
18184                            .ok()
18185                            .or_else(|| Some(security_group_rule::Direction::default()))
18186                    })
18187                    .ok_or_else(|| {
18188                        serde::de::Error::invalid_value(
18189                            serde::de::Unexpected::Unsigned(v),
18190                            &self,
18191                        )
18192                    })
18193            }
18194            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18195            where
18196                E: serde::de::Error,
18197            {
18198                match value {
18199                    "DIRECTION_UNSPECIFIED" => {
18200                        Ok(security_group_rule::Direction::Unspecified)
18201                    }
18202                    "INGRESS" => Ok(security_group_rule::Direction::Ingress),
18203                    "EGRESS" => Ok(security_group_rule::Direction::Egress),
18204                    _ => Ok(security_group_rule::Direction::default()),
18205                }
18206            }
18207        }
18208        deserializer.deserialize_any(GeneratedVisitor)
18209    }
18210}
18211impl serde::Serialize for security_group_rule::Protocol {
18212    #[allow(deprecated)]
18213    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18214    where
18215        S: serde::Serializer,
18216    {
18217        let variant = match self {
18218            Self::Unspecified => "PROTOCOL_UNSPECIFIED",
18219            Self::All => "ALL",
18220            Self::Tcp => "TCP",
18221            Self::Udp => "UDP",
18222            Self::Icmp => "ICMP",
18223        };
18224        serializer.serialize_str(variant)
18225    }
18226}
18227impl<'de> serde::Deserialize<'de> for security_group_rule::Protocol {
18228    #[allow(deprecated)]
18229    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18230    where
18231        D: serde::Deserializer<'de>,
18232    {
18233        const FIELDS: &[&str] = &["PROTOCOL_UNSPECIFIED", "ALL", "TCP", "UDP", "ICMP"];
18234        struct GeneratedVisitor;
18235        impl serde::de::Visitor<'_> for GeneratedVisitor {
18236            type Value = security_group_rule::Protocol;
18237            fn expecting(
18238                &self,
18239                formatter: &mut std::fmt::Formatter<'_>,
18240            ) -> std::fmt::Result {
18241                write!(formatter, "expected one of: {:?}", & FIELDS)
18242            }
18243            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
18244            where
18245                E: serde::de::Error,
18246            {
18247                i32::try_from(v)
18248                    .ok()
18249                    .and_then(|x| {
18250                        x
18251                            .try_into()
18252                            .ok()
18253                            .or_else(|| Some(security_group_rule::Protocol::default()))
18254                    })
18255                    .ok_or_else(|| {
18256                        serde::de::Error::invalid_value(
18257                            serde::de::Unexpected::Signed(v),
18258                            &self,
18259                        )
18260                    })
18261            }
18262            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
18263            where
18264                E: serde::de::Error,
18265            {
18266                i32::try_from(v)
18267                    .ok()
18268                    .and_then(|x| {
18269                        x
18270                            .try_into()
18271                            .ok()
18272                            .or_else(|| Some(security_group_rule::Protocol::default()))
18273                    })
18274                    .ok_or_else(|| {
18275                        serde::de::Error::invalid_value(
18276                            serde::de::Unexpected::Unsigned(v),
18277                            &self,
18278                        )
18279                    })
18280            }
18281            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18282            where
18283                E: serde::de::Error,
18284            {
18285                match value {
18286                    "PROTOCOL_UNSPECIFIED" => {
18287                        Ok(security_group_rule::Protocol::Unspecified)
18288                    }
18289                    "ALL" => Ok(security_group_rule::Protocol::All),
18290                    "TCP" => Ok(security_group_rule::Protocol::Tcp),
18291                    "UDP" => Ok(security_group_rule::Protocol::Udp),
18292                    "ICMP" => Ok(security_group_rule::Protocol::Icmp),
18293                    _ => Ok(security_group_rule::Protocol::default()),
18294                }
18295            }
18296        }
18297        deserializer.deserialize_any(GeneratedVisitor)
18298    }
18299}
18300impl serde::Serialize for SetDefaultDnsPolicyRequest {
18301    #[allow(deprecated)]
18302    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18303    where
18304        S: serde::Serializer,
18305    {
18306        use serde::ser::SerializeStruct;
18307        let mut len = 0;
18308        if !self.name.is_empty() {
18309            len += 1;
18310        }
18311        if !self.request_id.is_empty() {
18312            len += 1;
18313        }
18314        let mut struct_ser = serializer
18315            .serialize_struct(
18316                "origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18317                len,
18318            )?;
18319        if !self.name.is_empty() {
18320            struct_ser.serialize_field("name", &self.name)?;
18321        }
18322        if !self.request_id.is_empty() {
18323            struct_ser.serialize_field("requestId", &self.request_id)?;
18324        }
18325        struct_ser.end()
18326    }
18327}
18328impl<'de> serde::Deserialize<'de> for SetDefaultDnsPolicyRequest {
18329    #[allow(deprecated)]
18330    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18331    where
18332        D: serde::Deserializer<'de>,
18333    {
18334        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
18335        #[allow(clippy::enum_variant_names)]
18336        enum GeneratedField {
18337            Name,
18338            RequestId,
18339            __SkipField__,
18340        }
18341        impl<'de> serde::Deserialize<'de> for GeneratedField {
18342            fn deserialize<D>(
18343                deserializer: D,
18344            ) -> std::result::Result<GeneratedField, D::Error>
18345            where
18346                D: serde::Deserializer<'de>,
18347            {
18348                struct GeneratedVisitor;
18349                impl serde::de::Visitor<'_> for GeneratedVisitor {
18350                    type Value = GeneratedField;
18351                    fn expecting(
18352                        &self,
18353                        formatter: &mut std::fmt::Formatter<'_>,
18354                    ) -> std::fmt::Result {
18355                        write!(formatter, "expected one of: {:?}", & FIELDS)
18356                    }
18357                    #[allow(unused_variables)]
18358                    fn visit_str<E>(
18359                        self,
18360                        value: &str,
18361                    ) -> std::result::Result<GeneratedField, E>
18362                    where
18363                        E: serde::de::Error,
18364                    {
18365                        match value {
18366                            "name" => Ok(GeneratedField::Name),
18367                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
18368                            _ => Ok(GeneratedField::__SkipField__),
18369                        }
18370                    }
18371                }
18372                deserializer.deserialize_identifier(GeneratedVisitor)
18373            }
18374        }
18375        struct GeneratedVisitor;
18376        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18377            type Value = SetDefaultDnsPolicyRequest;
18378            fn expecting(
18379                &self,
18380                formatter: &mut std::fmt::Formatter<'_>,
18381            ) -> std::fmt::Result {
18382                formatter
18383                    .write_str(
18384                        "struct origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18385                    )
18386            }
18387            fn visit_map<V>(
18388                self,
18389                mut map_: V,
18390            ) -> std::result::Result<SetDefaultDnsPolicyRequest, V::Error>
18391            where
18392                V: serde::de::MapAccess<'de>,
18393            {
18394                let mut name__ = None;
18395                let mut request_id__ = None;
18396                while let Some(k) = map_.next_key()? {
18397                    match k {
18398                        GeneratedField::Name => {
18399                            if name__.is_some() {
18400                                return Err(serde::de::Error::duplicate_field("name"));
18401                            }
18402                            name__ = Some(map_.next_value()?);
18403                        }
18404                        GeneratedField::RequestId => {
18405                            if request_id__.is_some() {
18406                                return Err(serde::de::Error::duplicate_field("requestId"));
18407                            }
18408                            request_id__ = Some(map_.next_value()?);
18409                        }
18410                        GeneratedField::__SkipField__ => {
18411                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18412                        }
18413                    }
18414                }
18415                Ok(SetDefaultDnsPolicyRequest {
18416                    name: name__.unwrap_or_default(),
18417                    request_id: request_id__.unwrap_or_default(),
18418                })
18419            }
18420        }
18421        deserializer
18422            .deserialize_struct(
18423                "origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18424                FIELDS,
18425                GeneratedVisitor,
18426            )
18427    }
18428}
18429impl serde::Serialize for Subnet {
18430    #[allow(deprecated)]
18431    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18432    where
18433        S: serde::Serializer,
18434    {
18435        use serde::ser::SerializeStruct;
18436        let mut len = 0;
18437        if !self.name.is_empty() {
18438            len += 1;
18439        }
18440        if !self.urn.is_empty() {
18441            len += 1;
18442        }
18443        if !self.vpc.is_empty() {
18444            len += 1;
18445        }
18446        if !self.route_table.is_empty() {
18447            len += 1;
18448        }
18449        if !self.acl.is_empty() {
18450            len += 1;
18451        }
18452        if self.auto_assign_public_ip {
18453            len += 1;
18454        }
18455        if !self.ipv4_cidr_block.is_empty() {
18456            len += 1;
18457        }
18458        if !self.ipv6_cidr_block.is_empty() {
18459            len += 1;
18460        }
18461        if !self.ipv4_gateway.is_empty() {
18462            len += 1;
18463        }
18464        if !self.ipv6_gateway.is_empty() {
18465            len += 1;
18466        }
18467        if !self.ipv4_dns_servers.is_empty() {
18468            len += 1;
18469        }
18470        if !self.ipv6_dns_servers.is_empty() {
18471            len += 1;
18472        }
18473        if self.available_ipv4_address_count != 0 {
18474            len += 1;
18475        }
18476        if self.create_time.is_some() {
18477            len += 1;
18478        }
18479        if !self.creator.is_empty() {
18480            len += 1;
18481        }
18482        if !self.tags.is_empty() {
18483            len += 1;
18484        }
18485        let mut struct_ser = serializer
18486            .serialize_struct("origincloud.network.v1beta1.Subnet", len)?;
18487        if !self.name.is_empty() {
18488            struct_ser.serialize_field("name", &self.name)?;
18489        }
18490        if !self.urn.is_empty() {
18491            struct_ser.serialize_field("urn", &self.urn)?;
18492        }
18493        if !self.vpc.is_empty() {
18494            struct_ser.serialize_field("vpc", &self.vpc)?;
18495        }
18496        if !self.route_table.is_empty() {
18497            struct_ser.serialize_field("routeTable", &self.route_table)?;
18498        }
18499        if !self.acl.is_empty() {
18500            struct_ser.serialize_field("acl", &self.acl)?;
18501        }
18502        if self.auto_assign_public_ip {
18503            struct_ser
18504                .serialize_field("autoAssignPublicIp", &self.auto_assign_public_ip)?;
18505        }
18506        if !self.ipv4_cidr_block.is_empty() {
18507            struct_ser.serialize_field("ipv4CidrBlock", &self.ipv4_cidr_block)?;
18508        }
18509        if !self.ipv6_cidr_block.is_empty() {
18510            struct_ser.serialize_field("ipv6CidrBlock", &self.ipv6_cidr_block)?;
18511        }
18512        if !self.ipv4_gateway.is_empty() {
18513            struct_ser.serialize_field("ipv4Gateway", &self.ipv4_gateway)?;
18514        }
18515        if !self.ipv6_gateway.is_empty() {
18516            struct_ser.serialize_field("ipv6Gateway", &self.ipv6_gateway)?;
18517        }
18518        if !self.ipv4_dns_servers.is_empty() {
18519            struct_ser.serialize_field("ipv4DnsServers", &self.ipv4_dns_servers)?;
18520        }
18521        if !self.ipv6_dns_servers.is_empty() {
18522            struct_ser.serialize_field("ipv6DnsServers", &self.ipv6_dns_servers)?;
18523        }
18524        if self.available_ipv4_address_count != 0 {
18525            #[allow(clippy::needless_borrow)]
18526            #[allow(clippy::needless_borrows_for_generic_args)]
18527            struct_ser
18528                .serialize_field(
18529                    "availableIpv4AddressCount",
18530                    ToString::to_string(&self.available_ipv4_address_count).as_str(),
18531                )?;
18532        }
18533        if let Some(v) = self.create_time.as_ref() {
18534            struct_ser.serialize_field("createTime", v)?;
18535        }
18536        if !self.creator.is_empty() {
18537            struct_ser.serialize_field("creator", &self.creator)?;
18538        }
18539        if !self.tags.is_empty() {
18540            struct_ser.serialize_field("tags", &self.tags)?;
18541        }
18542        struct_ser.end()
18543    }
18544}
18545impl<'de> serde::Deserialize<'de> for Subnet {
18546    #[allow(deprecated)]
18547    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18548    where
18549        D: serde::Deserializer<'de>,
18550    {
18551        const FIELDS: &[&str] = &[
18552            "name",
18553            "urn",
18554            "vpc",
18555            "route_table",
18556            "routeTable",
18557            "acl",
18558            "auto_assign_public_ip",
18559            "autoAssignPublicIp",
18560            "ipv4_cidr_block",
18561            "ipv4CidrBlock",
18562            "ipv6_cidr_block",
18563            "ipv6CidrBlock",
18564            "ipv4_gateway",
18565            "ipv4Gateway",
18566            "ipv6_gateway",
18567            "ipv6Gateway",
18568            "ipv4_dns_servers",
18569            "ipv4DnsServers",
18570            "ipv6_dns_servers",
18571            "ipv6DnsServers",
18572            "available_ipv4_address_count",
18573            "availableIpv4AddressCount",
18574            "create_time",
18575            "createTime",
18576            "creator",
18577            "tags",
18578        ];
18579        #[allow(clippy::enum_variant_names)]
18580        enum GeneratedField {
18581            Name,
18582            Urn,
18583            Vpc,
18584            RouteTable,
18585            Acl,
18586            AutoAssignPublicIp,
18587            Ipv4CidrBlock,
18588            Ipv6CidrBlock,
18589            Ipv4Gateway,
18590            Ipv6Gateway,
18591            Ipv4DnsServers,
18592            Ipv6DnsServers,
18593            AvailableIpv4AddressCount,
18594            CreateTime,
18595            Creator,
18596            Tags,
18597            __SkipField__,
18598        }
18599        impl<'de> serde::Deserialize<'de> for GeneratedField {
18600            fn deserialize<D>(
18601                deserializer: D,
18602            ) -> std::result::Result<GeneratedField, D::Error>
18603            where
18604                D: serde::Deserializer<'de>,
18605            {
18606                struct GeneratedVisitor;
18607                impl serde::de::Visitor<'_> for GeneratedVisitor {
18608                    type Value = GeneratedField;
18609                    fn expecting(
18610                        &self,
18611                        formatter: &mut std::fmt::Formatter<'_>,
18612                    ) -> std::fmt::Result {
18613                        write!(formatter, "expected one of: {:?}", & FIELDS)
18614                    }
18615                    #[allow(unused_variables)]
18616                    fn visit_str<E>(
18617                        self,
18618                        value: &str,
18619                    ) -> std::result::Result<GeneratedField, E>
18620                    where
18621                        E: serde::de::Error,
18622                    {
18623                        match value {
18624                            "name" => Ok(GeneratedField::Name),
18625                            "urn" => Ok(GeneratedField::Urn),
18626                            "vpc" => Ok(GeneratedField::Vpc),
18627                            "routeTable" | "route_table" => {
18628                                Ok(GeneratedField::RouteTable)
18629                            }
18630                            "acl" => Ok(GeneratedField::Acl),
18631                            "autoAssignPublicIp" | "auto_assign_public_ip" => {
18632                                Ok(GeneratedField::AutoAssignPublicIp)
18633                            }
18634                            "ipv4CidrBlock" | "ipv4_cidr_block" => {
18635                                Ok(GeneratedField::Ipv4CidrBlock)
18636                            }
18637                            "ipv6CidrBlock" | "ipv6_cidr_block" => {
18638                                Ok(GeneratedField::Ipv6CidrBlock)
18639                            }
18640                            "ipv4Gateway" | "ipv4_gateway" => {
18641                                Ok(GeneratedField::Ipv4Gateway)
18642                            }
18643                            "ipv6Gateway" | "ipv6_gateway" => {
18644                                Ok(GeneratedField::Ipv6Gateway)
18645                            }
18646                            "ipv4DnsServers" | "ipv4_dns_servers" => {
18647                                Ok(GeneratedField::Ipv4DnsServers)
18648                            }
18649                            "ipv6DnsServers" | "ipv6_dns_servers" => {
18650                                Ok(GeneratedField::Ipv6DnsServers)
18651                            }
18652                            "availableIpv4AddressCount"
18653                            | "available_ipv4_address_count" => {
18654                                Ok(GeneratedField::AvailableIpv4AddressCount)
18655                            }
18656                            "createTime" | "create_time" => {
18657                                Ok(GeneratedField::CreateTime)
18658                            }
18659                            "creator" => Ok(GeneratedField::Creator),
18660                            "tags" => Ok(GeneratedField::Tags),
18661                            _ => Ok(GeneratedField::__SkipField__),
18662                        }
18663                    }
18664                }
18665                deserializer.deserialize_identifier(GeneratedVisitor)
18666            }
18667        }
18668        struct GeneratedVisitor;
18669        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18670            type Value = Subnet;
18671            fn expecting(
18672                &self,
18673                formatter: &mut std::fmt::Formatter<'_>,
18674            ) -> std::fmt::Result {
18675                formatter.write_str("struct origincloud.network.v1beta1.Subnet")
18676            }
18677            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Subnet, V::Error>
18678            where
18679                V: serde::de::MapAccess<'de>,
18680            {
18681                let mut name__ = None;
18682                let mut urn__ = None;
18683                let mut vpc__ = None;
18684                let mut route_table__ = None;
18685                let mut acl__ = None;
18686                let mut auto_assign_public_ip__ = None;
18687                let mut ipv4_cidr_block__ = None;
18688                let mut ipv6_cidr_block__ = None;
18689                let mut ipv4_gateway__ = None;
18690                let mut ipv6_gateway__ = None;
18691                let mut ipv4_dns_servers__ = None;
18692                let mut ipv6_dns_servers__ = None;
18693                let mut available_ipv4_address_count__ = None;
18694                let mut create_time__ = None;
18695                let mut creator__ = None;
18696                let mut tags__ = None;
18697                while let Some(k) = map_.next_key()? {
18698                    match k {
18699                        GeneratedField::Name => {
18700                            if name__.is_some() {
18701                                return Err(serde::de::Error::duplicate_field("name"));
18702                            }
18703                            name__ = Some(map_.next_value()?);
18704                        }
18705                        GeneratedField::Urn => {
18706                            if urn__.is_some() {
18707                                return Err(serde::de::Error::duplicate_field("urn"));
18708                            }
18709                            urn__ = Some(map_.next_value()?);
18710                        }
18711                        GeneratedField::Vpc => {
18712                            if vpc__.is_some() {
18713                                return Err(serde::de::Error::duplicate_field("vpc"));
18714                            }
18715                            vpc__ = Some(map_.next_value()?);
18716                        }
18717                        GeneratedField::RouteTable => {
18718                            if route_table__.is_some() {
18719                                return Err(serde::de::Error::duplicate_field("routeTable"));
18720                            }
18721                            route_table__ = Some(map_.next_value()?);
18722                        }
18723                        GeneratedField::Acl => {
18724                            if acl__.is_some() {
18725                                return Err(serde::de::Error::duplicate_field("acl"));
18726                            }
18727                            acl__ = Some(map_.next_value()?);
18728                        }
18729                        GeneratedField::AutoAssignPublicIp => {
18730                            if auto_assign_public_ip__.is_some() {
18731                                return Err(
18732                                    serde::de::Error::duplicate_field("autoAssignPublicIp"),
18733                                );
18734                            }
18735                            auto_assign_public_ip__ = Some(map_.next_value()?);
18736                        }
18737                        GeneratedField::Ipv4CidrBlock => {
18738                            if ipv4_cidr_block__.is_some() {
18739                                return Err(
18740                                    serde::de::Error::duplicate_field("ipv4CidrBlock"),
18741                                );
18742                            }
18743                            ipv4_cidr_block__ = Some(map_.next_value()?);
18744                        }
18745                        GeneratedField::Ipv6CidrBlock => {
18746                            if ipv6_cidr_block__.is_some() {
18747                                return Err(
18748                                    serde::de::Error::duplicate_field("ipv6CidrBlock"),
18749                                );
18750                            }
18751                            ipv6_cidr_block__ = Some(map_.next_value()?);
18752                        }
18753                        GeneratedField::Ipv4Gateway => {
18754                            if ipv4_gateway__.is_some() {
18755                                return Err(
18756                                    serde::de::Error::duplicate_field("ipv4Gateway"),
18757                                );
18758                            }
18759                            ipv4_gateway__ = Some(map_.next_value()?);
18760                        }
18761                        GeneratedField::Ipv6Gateway => {
18762                            if ipv6_gateway__.is_some() {
18763                                return Err(
18764                                    serde::de::Error::duplicate_field("ipv6Gateway"),
18765                                );
18766                            }
18767                            ipv6_gateway__ = Some(map_.next_value()?);
18768                        }
18769                        GeneratedField::Ipv4DnsServers => {
18770                            if ipv4_dns_servers__.is_some() {
18771                                return Err(
18772                                    serde::de::Error::duplicate_field("ipv4DnsServers"),
18773                                );
18774                            }
18775                            ipv4_dns_servers__ = Some(map_.next_value()?);
18776                        }
18777                        GeneratedField::Ipv6DnsServers => {
18778                            if ipv6_dns_servers__.is_some() {
18779                                return Err(
18780                                    serde::de::Error::duplicate_field("ipv6DnsServers"),
18781                                );
18782                            }
18783                            ipv6_dns_servers__ = Some(map_.next_value()?);
18784                        }
18785                        GeneratedField::AvailableIpv4AddressCount => {
18786                            if available_ipv4_address_count__.is_some() {
18787                                return Err(
18788                                    serde::de::Error::duplicate_field(
18789                                        "availableIpv4AddressCount",
18790                                    ),
18791                                );
18792                            }
18793                            available_ipv4_address_count__ = Some(
18794                                map_
18795                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18796                                    .0,
18797                            );
18798                        }
18799                        GeneratedField::CreateTime => {
18800                            if create_time__.is_some() {
18801                                return Err(serde::de::Error::duplicate_field("createTime"));
18802                            }
18803                            create_time__ = map_.next_value()?;
18804                        }
18805                        GeneratedField::Creator => {
18806                            if creator__.is_some() {
18807                                return Err(serde::de::Error::duplicate_field("creator"));
18808                            }
18809                            creator__ = Some(map_.next_value()?);
18810                        }
18811                        GeneratedField::Tags => {
18812                            if tags__.is_some() {
18813                                return Err(serde::de::Error::duplicate_field("tags"));
18814                            }
18815                            tags__ = Some(
18816                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
18817                            );
18818                        }
18819                        GeneratedField::__SkipField__ => {
18820                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18821                        }
18822                    }
18823                }
18824                Ok(Subnet {
18825                    name: name__.unwrap_or_default(),
18826                    urn: urn__.unwrap_or_default(),
18827                    vpc: vpc__.unwrap_or_default(),
18828                    route_table: route_table__.unwrap_or_default(),
18829                    acl: acl__.unwrap_or_default(),
18830                    auto_assign_public_ip: auto_assign_public_ip__.unwrap_or_default(),
18831                    ipv4_cidr_block: ipv4_cidr_block__.unwrap_or_default(),
18832                    ipv6_cidr_block: ipv6_cidr_block__.unwrap_or_default(),
18833                    ipv4_gateway: ipv4_gateway__.unwrap_or_default(),
18834                    ipv6_gateway: ipv6_gateway__.unwrap_or_default(),
18835                    ipv4_dns_servers: ipv4_dns_servers__.unwrap_or_default(),
18836                    ipv6_dns_servers: ipv6_dns_servers__.unwrap_or_default(),
18837                    available_ipv4_address_count: available_ipv4_address_count__
18838                        .unwrap_or_default(),
18839                    create_time: create_time__,
18840                    creator: creator__.unwrap_or_default(),
18841                    tags: tags__.unwrap_or_default(),
18842                })
18843            }
18844        }
18845        deserializer
18846            .deserialize_struct(
18847                "origincloud.network.v1beta1.Subnet",
18848                FIELDS,
18849                GeneratedVisitor,
18850            )
18851    }
18852}
18853impl serde::Serialize for UpdateAclRequest {
18854    #[allow(deprecated)]
18855    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18856    where
18857        S: serde::Serializer,
18858    {
18859        use serde::ser::SerializeStruct;
18860        let mut len = 0;
18861        if self.acl.is_some() {
18862            len += 1;
18863        }
18864        if self.update_mask.is_some() {
18865            len += 1;
18866        }
18867        if !self.request_id.is_empty() {
18868            len += 1;
18869        }
18870        let mut struct_ser = serializer
18871            .serialize_struct("origincloud.network.v1beta1.UpdateAclRequest", len)?;
18872        if let Some(v) = self.acl.as_ref() {
18873            struct_ser.serialize_field("acl", v)?;
18874        }
18875        if let Some(v) = self.update_mask.as_ref() {
18876            struct_ser.serialize_field("updateMask", v)?;
18877        }
18878        if !self.request_id.is_empty() {
18879            struct_ser.serialize_field("requestId", &self.request_id)?;
18880        }
18881        struct_ser.end()
18882    }
18883}
18884impl<'de> serde::Deserialize<'de> for UpdateAclRequest {
18885    #[allow(deprecated)]
18886    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18887    where
18888        D: serde::Deserializer<'de>,
18889    {
18890        const FIELDS: &[&str] = &[
18891            "acl",
18892            "update_mask",
18893            "updateMask",
18894            "request_id",
18895            "requestId",
18896        ];
18897        #[allow(clippy::enum_variant_names)]
18898        enum GeneratedField {
18899            Acl,
18900            UpdateMask,
18901            RequestId,
18902            __SkipField__,
18903        }
18904        impl<'de> serde::Deserialize<'de> for GeneratedField {
18905            fn deserialize<D>(
18906                deserializer: D,
18907            ) -> std::result::Result<GeneratedField, D::Error>
18908            where
18909                D: serde::Deserializer<'de>,
18910            {
18911                struct GeneratedVisitor;
18912                impl serde::de::Visitor<'_> for GeneratedVisitor {
18913                    type Value = GeneratedField;
18914                    fn expecting(
18915                        &self,
18916                        formatter: &mut std::fmt::Formatter<'_>,
18917                    ) -> std::fmt::Result {
18918                        write!(formatter, "expected one of: {:?}", & FIELDS)
18919                    }
18920                    #[allow(unused_variables)]
18921                    fn visit_str<E>(
18922                        self,
18923                        value: &str,
18924                    ) -> std::result::Result<GeneratedField, E>
18925                    where
18926                        E: serde::de::Error,
18927                    {
18928                        match value {
18929                            "acl" => Ok(GeneratedField::Acl),
18930                            "updateMask" | "update_mask" => {
18931                                Ok(GeneratedField::UpdateMask)
18932                            }
18933                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
18934                            _ => Ok(GeneratedField::__SkipField__),
18935                        }
18936                    }
18937                }
18938                deserializer.deserialize_identifier(GeneratedVisitor)
18939            }
18940        }
18941        struct GeneratedVisitor;
18942        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18943            type Value = UpdateAclRequest;
18944            fn expecting(
18945                &self,
18946                formatter: &mut std::fmt::Formatter<'_>,
18947            ) -> std::fmt::Result {
18948                formatter
18949                    .write_str("struct origincloud.network.v1beta1.UpdateAclRequest")
18950            }
18951            fn visit_map<V>(
18952                self,
18953                mut map_: V,
18954            ) -> std::result::Result<UpdateAclRequest, V::Error>
18955            where
18956                V: serde::de::MapAccess<'de>,
18957            {
18958                let mut acl__ = None;
18959                let mut update_mask__ = None;
18960                let mut request_id__ = None;
18961                while let Some(k) = map_.next_key()? {
18962                    match k {
18963                        GeneratedField::Acl => {
18964                            if acl__.is_some() {
18965                                return Err(serde::de::Error::duplicate_field("acl"));
18966                            }
18967                            acl__ = map_.next_value()?;
18968                        }
18969                        GeneratedField::UpdateMask => {
18970                            if update_mask__.is_some() {
18971                                return Err(serde::de::Error::duplicate_field("updateMask"));
18972                            }
18973                            update_mask__ = map_.next_value()?;
18974                        }
18975                        GeneratedField::RequestId => {
18976                            if request_id__.is_some() {
18977                                return Err(serde::de::Error::duplicate_field("requestId"));
18978                            }
18979                            request_id__ = Some(map_.next_value()?);
18980                        }
18981                        GeneratedField::__SkipField__ => {
18982                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18983                        }
18984                    }
18985                }
18986                Ok(UpdateAclRequest {
18987                    acl: acl__,
18988                    update_mask: update_mask__,
18989                    request_id: request_id__.unwrap_or_default(),
18990                })
18991            }
18992        }
18993        deserializer
18994            .deserialize_struct(
18995                "origincloud.network.v1beta1.UpdateAclRequest",
18996                FIELDS,
18997                GeneratedVisitor,
18998            )
18999    }
19000}
19001impl serde::Serialize for UpdateDnsPolicyRequest {
19002    #[allow(deprecated)]
19003    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19004    where
19005        S: serde::Serializer,
19006    {
19007        use serde::ser::SerializeStruct;
19008        let mut len = 0;
19009        if self.dns_policy.is_some() {
19010            len += 1;
19011        }
19012        if self.update_mask.is_some() {
19013            len += 1;
19014        }
19015        if !self.request_id.is_empty() {
19016            len += 1;
19017        }
19018        let mut struct_ser = serializer
19019            .serialize_struct(
19020                "origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19021                len,
19022            )?;
19023        if let Some(v) = self.dns_policy.as_ref() {
19024            struct_ser.serialize_field("dnsPolicy", v)?;
19025        }
19026        if let Some(v) = self.update_mask.as_ref() {
19027            struct_ser.serialize_field("updateMask", v)?;
19028        }
19029        if !self.request_id.is_empty() {
19030            struct_ser.serialize_field("requestId", &self.request_id)?;
19031        }
19032        struct_ser.end()
19033    }
19034}
19035impl<'de> serde::Deserialize<'de> for UpdateDnsPolicyRequest {
19036    #[allow(deprecated)]
19037    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19038    where
19039        D: serde::Deserializer<'de>,
19040    {
19041        const FIELDS: &[&str] = &[
19042            "dns_policy",
19043            "dnsPolicy",
19044            "update_mask",
19045            "updateMask",
19046            "request_id",
19047            "requestId",
19048        ];
19049        #[allow(clippy::enum_variant_names)]
19050        enum GeneratedField {
19051            DnsPolicy,
19052            UpdateMask,
19053            RequestId,
19054            __SkipField__,
19055        }
19056        impl<'de> serde::Deserialize<'de> for GeneratedField {
19057            fn deserialize<D>(
19058                deserializer: D,
19059            ) -> std::result::Result<GeneratedField, D::Error>
19060            where
19061                D: serde::Deserializer<'de>,
19062            {
19063                struct GeneratedVisitor;
19064                impl serde::de::Visitor<'_> for GeneratedVisitor {
19065                    type Value = GeneratedField;
19066                    fn expecting(
19067                        &self,
19068                        formatter: &mut std::fmt::Formatter<'_>,
19069                    ) -> std::fmt::Result {
19070                        write!(formatter, "expected one of: {:?}", & FIELDS)
19071                    }
19072                    #[allow(unused_variables)]
19073                    fn visit_str<E>(
19074                        self,
19075                        value: &str,
19076                    ) -> std::result::Result<GeneratedField, E>
19077                    where
19078                        E: serde::de::Error,
19079                    {
19080                        match value {
19081                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
19082                            "updateMask" | "update_mask" => {
19083                                Ok(GeneratedField::UpdateMask)
19084                            }
19085                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19086                            _ => Ok(GeneratedField::__SkipField__),
19087                        }
19088                    }
19089                }
19090                deserializer.deserialize_identifier(GeneratedVisitor)
19091            }
19092        }
19093        struct GeneratedVisitor;
19094        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19095            type Value = UpdateDnsPolicyRequest;
19096            fn expecting(
19097                &self,
19098                formatter: &mut std::fmt::Formatter<'_>,
19099            ) -> std::fmt::Result {
19100                formatter
19101                    .write_str(
19102                        "struct origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19103                    )
19104            }
19105            fn visit_map<V>(
19106                self,
19107                mut map_: V,
19108            ) -> std::result::Result<UpdateDnsPolicyRequest, V::Error>
19109            where
19110                V: serde::de::MapAccess<'de>,
19111            {
19112                let mut dns_policy__ = None;
19113                let mut update_mask__ = None;
19114                let mut request_id__ = None;
19115                while let Some(k) = map_.next_key()? {
19116                    match k {
19117                        GeneratedField::DnsPolicy => {
19118                            if dns_policy__.is_some() {
19119                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
19120                            }
19121                            dns_policy__ = map_.next_value()?;
19122                        }
19123                        GeneratedField::UpdateMask => {
19124                            if update_mask__.is_some() {
19125                                return Err(serde::de::Error::duplicate_field("updateMask"));
19126                            }
19127                            update_mask__ = map_.next_value()?;
19128                        }
19129                        GeneratedField::RequestId => {
19130                            if request_id__.is_some() {
19131                                return Err(serde::de::Error::duplicate_field("requestId"));
19132                            }
19133                            request_id__ = Some(map_.next_value()?);
19134                        }
19135                        GeneratedField::__SkipField__ => {
19136                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19137                        }
19138                    }
19139                }
19140                Ok(UpdateDnsPolicyRequest {
19141                    dns_policy: dns_policy__,
19142                    update_mask: update_mask__,
19143                    request_id: request_id__.unwrap_or_default(),
19144                })
19145            }
19146        }
19147        deserializer
19148            .deserialize_struct(
19149                "origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19150                FIELDS,
19151                GeneratedVisitor,
19152            )
19153    }
19154}
19155impl serde::Serialize for UpdateFloatingIpRequest {
19156    #[allow(deprecated)]
19157    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19158    where
19159        S: serde::Serializer,
19160    {
19161        use serde::ser::SerializeStruct;
19162        let mut len = 0;
19163        if self.floating_ip.is_some() {
19164            len += 1;
19165        }
19166        if self.update_mask.is_some() {
19167            len += 1;
19168        }
19169        if !self.request_id.is_empty() {
19170            len += 1;
19171        }
19172        let mut struct_ser = serializer
19173            .serialize_struct(
19174                "origincloud.network.v1beta1.UpdateFloatingIpRequest",
19175                len,
19176            )?;
19177        if let Some(v) = self.floating_ip.as_ref() {
19178            struct_ser.serialize_field("floatingIp", v)?;
19179        }
19180        if let Some(v) = self.update_mask.as_ref() {
19181            struct_ser.serialize_field("updateMask", v)?;
19182        }
19183        if !self.request_id.is_empty() {
19184            struct_ser.serialize_field("requestId", &self.request_id)?;
19185        }
19186        struct_ser.end()
19187    }
19188}
19189impl<'de> serde::Deserialize<'de> for UpdateFloatingIpRequest {
19190    #[allow(deprecated)]
19191    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19192    where
19193        D: serde::Deserializer<'de>,
19194    {
19195        const FIELDS: &[&str] = &[
19196            "floating_ip",
19197            "floatingIp",
19198            "update_mask",
19199            "updateMask",
19200            "request_id",
19201            "requestId",
19202        ];
19203        #[allow(clippy::enum_variant_names)]
19204        enum GeneratedField {
19205            FloatingIp,
19206            UpdateMask,
19207            RequestId,
19208            __SkipField__,
19209        }
19210        impl<'de> serde::Deserialize<'de> for GeneratedField {
19211            fn deserialize<D>(
19212                deserializer: D,
19213            ) -> std::result::Result<GeneratedField, D::Error>
19214            where
19215                D: serde::Deserializer<'de>,
19216            {
19217                struct GeneratedVisitor;
19218                impl serde::de::Visitor<'_> for GeneratedVisitor {
19219                    type Value = GeneratedField;
19220                    fn expecting(
19221                        &self,
19222                        formatter: &mut std::fmt::Formatter<'_>,
19223                    ) -> std::fmt::Result {
19224                        write!(formatter, "expected one of: {:?}", & FIELDS)
19225                    }
19226                    #[allow(unused_variables)]
19227                    fn visit_str<E>(
19228                        self,
19229                        value: &str,
19230                    ) -> std::result::Result<GeneratedField, E>
19231                    where
19232                        E: serde::de::Error,
19233                    {
19234                        match value {
19235                            "floatingIp" | "floating_ip" => {
19236                                Ok(GeneratedField::FloatingIp)
19237                            }
19238                            "updateMask" | "update_mask" => {
19239                                Ok(GeneratedField::UpdateMask)
19240                            }
19241                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19242                            _ => Ok(GeneratedField::__SkipField__),
19243                        }
19244                    }
19245                }
19246                deserializer.deserialize_identifier(GeneratedVisitor)
19247            }
19248        }
19249        struct GeneratedVisitor;
19250        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19251            type Value = UpdateFloatingIpRequest;
19252            fn expecting(
19253                &self,
19254                formatter: &mut std::fmt::Formatter<'_>,
19255            ) -> std::fmt::Result {
19256                formatter
19257                    .write_str(
19258                        "struct origincloud.network.v1beta1.UpdateFloatingIpRequest",
19259                    )
19260            }
19261            fn visit_map<V>(
19262                self,
19263                mut map_: V,
19264            ) -> std::result::Result<UpdateFloatingIpRequest, V::Error>
19265            where
19266                V: serde::de::MapAccess<'de>,
19267            {
19268                let mut floating_ip__ = None;
19269                let mut update_mask__ = None;
19270                let mut request_id__ = None;
19271                while let Some(k) = map_.next_key()? {
19272                    match k {
19273                        GeneratedField::FloatingIp => {
19274                            if floating_ip__.is_some() {
19275                                return Err(serde::de::Error::duplicate_field("floatingIp"));
19276                            }
19277                            floating_ip__ = map_.next_value()?;
19278                        }
19279                        GeneratedField::UpdateMask => {
19280                            if update_mask__.is_some() {
19281                                return Err(serde::de::Error::duplicate_field("updateMask"));
19282                            }
19283                            update_mask__ = map_.next_value()?;
19284                        }
19285                        GeneratedField::RequestId => {
19286                            if request_id__.is_some() {
19287                                return Err(serde::de::Error::duplicate_field("requestId"));
19288                            }
19289                            request_id__ = Some(map_.next_value()?);
19290                        }
19291                        GeneratedField::__SkipField__ => {
19292                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19293                        }
19294                    }
19295                }
19296                Ok(UpdateFloatingIpRequest {
19297                    floating_ip: floating_ip__,
19298                    update_mask: update_mask__,
19299                    request_id: request_id__.unwrap_or_default(),
19300                })
19301            }
19302        }
19303        deserializer
19304            .deserialize_struct(
19305                "origincloud.network.v1beta1.UpdateFloatingIpRequest",
19306                FIELDS,
19307                GeneratedVisitor,
19308            )
19309    }
19310}
19311impl serde::Serialize for UpdateInternetGatewayRequest {
19312    #[allow(deprecated)]
19313    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19314    where
19315        S: serde::Serializer,
19316    {
19317        use serde::ser::SerializeStruct;
19318        let mut len = 0;
19319        if self.internet_gateway.is_some() {
19320            len += 1;
19321        }
19322        if self.update_mask.is_some() {
19323            len += 1;
19324        }
19325        if !self.request_id.is_empty() {
19326            len += 1;
19327        }
19328        let mut struct_ser = serializer
19329            .serialize_struct(
19330                "origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19331                len,
19332            )?;
19333        if let Some(v) = self.internet_gateway.as_ref() {
19334            struct_ser.serialize_field("internetGateway", v)?;
19335        }
19336        if let Some(v) = self.update_mask.as_ref() {
19337            struct_ser.serialize_field("updateMask", v)?;
19338        }
19339        if !self.request_id.is_empty() {
19340            struct_ser.serialize_field("requestId", &self.request_id)?;
19341        }
19342        struct_ser.end()
19343    }
19344}
19345impl<'de> serde::Deserialize<'de> for UpdateInternetGatewayRequest {
19346    #[allow(deprecated)]
19347    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19348    where
19349        D: serde::Deserializer<'de>,
19350    {
19351        const FIELDS: &[&str] = &[
19352            "internet_gateway",
19353            "internetGateway",
19354            "update_mask",
19355            "updateMask",
19356            "request_id",
19357            "requestId",
19358        ];
19359        #[allow(clippy::enum_variant_names)]
19360        enum GeneratedField {
19361            InternetGateway,
19362            UpdateMask,
19363            RequestId,
19364            __SkipField__,
19365        }
19366        impl<'de> serde::Deserialize<'de> for GeneratedField {
19367            fn deserialize<D>(
19368                deserializer: D,
19369            ) -> std::result::Result<GeneratedField, D::Error>
19370            where
19371                D: serde::Deserializer<'de>,
19372            {
19373                struct GeneratedVisitor;
19374                impl serde::de::Visitor<'_> for GeneratedVisitor {
19375                    type Value = GeneratedField;
19376                    fn expecting(
19377                        &self,
19378                        formatter: &mut std::fmt::Formatter<'_>,
19379                    ) -> std::fmt::Result {
19380                        write!(formatter, "expected one of: {:?}", & FIELDS)
19381                    }
19382                    #[allow(unused_variables)]
19383                    fn visit_str<E>(
19384                        self,
19385                        value: &str,
19386                    ) -> std::result::Result<GeneratedField, E>
19387                    where
19388                        E: serde::de::Error,
19389                    {
19390                        match value {
19391                            "internetGateway" | "internet_gateway" => {
19392                                Ok(GeneratedField::InternetGateway)
19393                            }
19394                            "updateMask" | "update_mask" => {
19395                                Ok(GeneratedField::UpdateMask)
19396                            }
19397                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19398                            _ => Ok(GeneratedField::__SkipField__),
19399                        }
19400                    }
19401                }
19402                deserializer.deserialize_identifier(GeneratedVisitor)
19403            }
19404        }
19405        struct GeneratedVisitor;
19406        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19407            type Value = UpdateInternetGatewayRequest;
19408            fn expecting(
19409                &self,
19410                formatter: &mut std::fmt::Formatter<'_>,
19411            ) -> std::fmt::Result {
19412                formatter
19413                    .write_str(
19414                        "struct origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19415                    )
19416            }
19417            fn visit_map<V>(
19418                self,
19419                mut map_: V,
19420            ) -> std::result::Result<UpdateInternetGatewayRequest, V::Error>
19421            where
19422                V: serde::de::MapAccess<'de>,
19423            {
19424                let mut internet_gateway__ = None;
19425                let mut update_mask__ = None;
19426                let mut request_id__ = None;
19427                while let Some(k) = map_.next_key()? {
19428                    match k {
19429                        GeneratedField::InternetGateway => {
19430                            if internet_gateway__.is_some() {
19431                                return Err(
19432                                    serde::de::Error::duplicate_field("internetGateway"),
19433                                );
19434                            }
19435                            internet_gateway__ = map_.next_value()?;
19436                        }
19437                        GeneratedField::UpdateMask => {
19438                            if update_mask__.is_some() {
19439                                return Err(serde::de::Error::duplicate_field("updateMask"));
19440                            }
19441                            update_mask__ = map_.next_value()?;
19442                        }
19443                        GeneratedField::RequestId => {
19444                            if request_id__.is_some() {
19445                                return Err(serde::de::Error::duplicate_field("requestId"));
19446                            }
19447                            request_id__ = Some(map_.next_value()?);
19448                        }
19449                        GeneratedField::__SkipField__ => {
19450                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19451                        }
19452                    }
19453                }
19454                Ok(UpdateInternetGatewayRequest {
19455                    internet_gateway: internet_gateway__,
19456                    update_mask: update_mask__,
19457                    request_id: request_id__.unwrap_or_default(),
19458                })
19459            }
19460        }
19461        deserializer
19462            .deserialize_struct(
19463                "origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19464                FIELDS,
19465                GeneratedVisitor,
19466            )
19467    }
19468}
19469impl serde::Serialize for UpdateNatGatewayRequest {
19470    #[allow(deprecated)]
19471    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19472    where
19473        S: serde::Serializer,
19474    {
19475        use serde::ser::SerializeStruct;
19476        let mut len = 0;
19477        if self.nat_gateway.is_some() {
19478            len += 1;
19479        }
19480        if self.update_mask.is_some() {
19481            len += 1;
19482        }
19483        if !self.request_id.is_empty() {
19484            len += 1;
19485        }
19486        let mut struct_ser = serializer
19487            .serialize_struct(
19488                "origincloud.network.v1beta1.UpdateNatGatewayRequest",
19489                len,
19490            )?;
19491        if let Some(v) = self.nat_gateway.as_ref() {
19492            struct_ser.serialize_field("natGateway", v)?;
19493        }
19494        if let Some(v) = self.update_mask.as_ref() {
19495            struct_ser.serialize_field("updateMask", v)?;
19496        }
19497        if !self.request_id.is_empty() {
19498            struct_ser.serialize_field("requestId", &self.request_id)?;
19499        }
19500        struct_ser.end()
19501    }
19502}
19503impl<'de> serde::Deserialize<'de> for UpdateNatGatewayRequest {
19504    #[allow(deprecated)]
19505    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19506    where
19507        D: serde::Deserializer<'de>,
19508    {
19509        const FIELDS: &[&str] = &[
19510            "nat_gateway",
19511            "natGateway",
19512            "update_mask",
19513            "updateMask",
19514            "request_id",
19515            "requestId",
19516        ];
19517        #[allow(clippy::enum_variant_names)]
19518        enum GeneratedField {
19519            NatGateway,
19520            UpdateMask,
19521            RequestId,
19522            __SkipField__,
19523        }
19524        impl<'de> serde::Deserialize<'de> for GeneratedField {
19525            fn deserialize<D>(
19526                deserializer: D,
19527            ) -> std::result::Result<GeneratedField, D::Error>
19528            where
19529                D: serde::Deserializer<'de>,
19530            {
19531                struct GeneratedVisitor;
19532                impl serde::de::Visitor<'_> for GeneratedVisitor {
19533                    type Value = GeneratedField;
19534                    fn expecting(
19535                        &self,
19536                        formatter: &mut std::fmt::Formatter<'_>,
19537                    ) -> std::fmt::Result {
19538                        write!(formatter, "expected one of: {:?}", & FIELDS)
19539                    }
19540                    #[allow(unused_variables)]
19541                    fn visit_str<E>(
19542                        self,
19543                        value: &str,
19544                    ) -> std::result::Result<GeneratedField, E>
19545                    where
19546                        E: serde::de::Error,
19547                    {
19548                        match value {
19549                            "natGateway" | "nat_gateway" => {
19550                                Ok(GeneratedField::NatGateway)
19551                            }
19552                            "updateMask" | "update_mask" => {
19553                                Ok(GeneratedField::UpdateMask)
19554                            }
19555                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19556                            _ => Ok(GeneratedField::__SkipField__),
19557                        }
19558                    }
19559                }
19560                deserializer.deserialize_identifier(GeneratedVisitor)
19561            }
19562        }
19563        struct GeneratedVisitor;
19564        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19565            type Value = UpdateNatGatewayRequest;
19566            fn expecting(
19567                &self,
19568                formatter: &mut std::fmt::Formatter<'_>,
19569            ) -> std::fmt::Result {
19570                formatter
19571                    .write_str(
19572                        "struct origincloud.network.v1beta1.UpdateNatGatewayRequest",
19573                    )
19574            }
19575            fn visit_map<V>(
19576                self,
19577                mut map_: V,
19578            ) -> std::result::Result<UpdateNatGatewayRequest, V::Error>
19579            where
19580                V: serde::de::MapAccess<'de>,
19581            {
19582                let mut nat_gateway__ = None;
19583                let mut update_mask__ = None;
19584                let mut request_id__ = None;
19585                while let Some(k) = map_.next_key()? {
19586                    match k {
19587                        GeneratedField::NatGateway => {
19588                            if nat_gateway__.is_some() {
19589                                return Err(serde::de::Error::duplicate_field("natGateway"));
19590                            }
19591                            nat_gateway__ = map_.next_value()?;
19592                        }
19593                        GeneratedField::UpdateMask => {
19594                            if update_mask__.is_some() {
19595                                return Err(serde::de::Error::duplicate_field("updateMask"));
19596                            }
19597                            update_mask__ = map_.next_value()?;
19598                        }
19599                        GeneratedField::RequestId => {
19600                            if request_id__.is_some() {
19601                                return Err(serde::de::Error::duplicate_field("requestId"));
19602                            }
19603                            request_id__ = Some(map_.next_value()?);
19604                        }
19605                        GeneratedField::__SkipField__ => {
19606                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19607                        }
19608                    }
19609                }
19610                Ok(UpdateNatGatewayRequest {
19611                    nat_gateway: nat_gateway__,
19612                    update_mask: update_mask__,
19613                    request_id: request_id__.unwrap_or_default(),
19614                })
19615            }
19616        }
19617        deserializer
19618            .deserialize_struct(
19619                "origincloud.network.v1beta1.UpdateNatGatewayRequest",
19620                FIELDS,
19621                GeneratedVisitor,
19622            )
19623    }
19624}
19625impl serde::Serialize for UpdateNetworkInterfaceRequest {
19626    #[allow(deprecated)]
19627    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19628    where
19629        S: serde::Serializer,
19630    {
19631        use serde::ser::SerializeStruct;
19632        let mut len = 0;
19633        if self.network_interface.is_some() {
19634            len += 1;
19635        }
19636        if self.update_mask.is_some() {
19637            len += 1;
19638        }
19639        if !self.request_id.is_empty() {
19640            len += 1;
19641        }
19642        let mut struct_ser = serializer
19643            .serialize_struct(
19644                "origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19645                len,
19646            )?;
19647        if let Some(v) = self.network_interface.as_ref() {
19648            struct_ser.serialize_field("networkInterface", v)?;
19649        }
19650        if let Some(v) = self.update_mask.as_ref() {
19651            struct_ser.serialize_field("updateMask", v)?;
19652        }
19653        if !self.request_id.is_empty() {
19654            struct_ser.serialize_field("requestId", &self.request_id)?;
19655        }
19656        struct_ser.end()
19657    }
19658}
19659impl<'de> serde::Deserialize<'de> for UpdateNetworkInterfaceRequest {
19660    #[allow(deprecated)]
19661    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19662    where
19663        D: serde::Deserializer<'de>,
19664    {
19665        const FIELDS: &[&str] = &[
19666            "network_interface",
19667            "networkInterface",
19668            "update_mask",
19669            "updateMask",
19670            "request_id",
19671            "requestId",
19672        ];
19673        #[allow(clippy::enum_variant_names)]
19674        enum GeneratedField {
19675            NetworkInterface,
19676            UpdateMask,
19677            RequestId,
19678            __SkipField__,
19679        }
19680        impl<'de> serde::Deserialize<'de> for GeneratedField {
19681            fn deserialize<D>(
19682                deserializer: D,
19683            ) -> std::result::Result<GeneratedField, D::Error>
19684            where
19685                D: serde::Deserializer<'de>,
19686            {
19687                struct GeneratedVisitor;
19688                impl serde::de::Visitor<'_> for GeneratedVisitor {
19689                    type Value = GeneratedField;
19690                    fn expecting(
19691                        &self,
19692                        formatter: &mut std::fmt::Formatter<'_>,
19693                    ) -> std::fmt::Result {
19694                        write!(formatter, "expected one of: {:?}", & FIELDS)
19695                    }
19696                    #[allow(unused_variables)]
19697                    fn visit_str<E>(
19698                        self,
19699                        value: &str,
19700                    ) -> std::result::Result<GeneratedField, E>
19701                    where
19702                        E: serde::de::Error,
19703                    {
19704                        match value {
19705                            "networkInterface" | "network_interface" => {
19706                                Ok(GeneratedField::NetworkInterface)
19707                            }
19708                            "updateMask" | "update_mask" => {
19709                                Ok(GeneratedField::UpdateMask)
19710                            }
19711                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19712                            _ => Ok(GeneratedField::__SkipField__),
19713                        }
19714                    }
19715                }
19716                deserializer.deserialize_identifier(GeneratedVisitor)
19717            }
19718        }
19719        struct GeneratedVisitor;
19720        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19721            type Value = UpdateNetworkInterfaceRequest;
19722            fn expecting(
19723                &self,
19724                formatter: &mut std::fmt::Formatter<'_>,
19725            ) -> std::fmt::Result {
19726                formatter
19727                    .write_str(
19728                        "struct origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19729                    )
19730            }
19731            fn visit_map<V>(
19732                self,
19733                mut map_: V,
19734            ) -> std::result::Result<UpdateNetworkInterfaceRequest, V::Error>
19735            where
19736                V: serde::de::MapAccess<'de>,
19737            {
19738                let mut network_interface__ = None;
19739                let mut update_mask__ = None;
19740                let mut request_id__ = None;
19741                while let Some(k) = map_.next_key()? {
19742                    match k {
19743                        GeneratedField::NetworkInterface => {
19744                            if network_interface__.is_some() {
19745                                return Err(
19746                                    serde::de::Error::duplicate_field("networkInterface"),
19747                                );
19748                            }
19749                            network_interface__ = map_.next_value()?;
19750                        }
19751                        GeneratedField::UpdateMask => {
19752                            if update_mask__.is_some() {
19753                                return Err(serde::de::Error::duplicate_field("updateMask"));
19754                            }
19755                            update_mask__ = map_.next_value()?;
19756                        }
19757                        GeneratedField::RequestId => {
19758                            if request_id__.is_some() {
19759                                return Err(serde::de::Error::duplicate_field("requestId"));
19760                            }
19761                            request_id__ = Some(map_.next_value()?);
19762                        }
19763                        GeneratedField::__SkipField__ => {
19764                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19765                        }
19766                    }
19767                }
19768                Ok(UpdateNetworkInterfaceRequest {
19769                    network_interface: network_interface__,
19770                    update_mask: update_mask__,
19771                    request_id: request_id__.unwrap_or_default(),
19772                })
19773            }
19774        }
19775        deserializer
19776            .deserialize_struct(
19777                "origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19778                FIELDS,
19779                GeneratedVisitor,
19780            )
19781    }
19782}
19783impl serde::Serialize for UpdateRouteTableRequest {
19784    #[allow(deprecated)]
19785    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19786    where
19787        S: serde::Serializer,
19788    {
19789        use serde::ser::SerializeStruct;
19790        let mut len = 0;
19791        if self.route_table.is_some() {
19792            len += 1;
19793        }
19794        if self.update_mask.is_some() {
19795            len += 1;
19796        }
19797        if !self.request_id.is_empty() {
19798            len += 1;
19799        }
19800        let mut struct_ser = serializer
19801            .serialize_struct(
19802                "origincloud.network.v1beta1.UpdateRouteTableRequest",
19803                len,
19804            )?;
19805        if let Some(v) = self.route_table.as_ref() {
19806            struct_ser.serialize_field("routeTable", v)?;
19807        }
19808        if let Some(v) = self.update_mask.as_ref() {
19809            struct_ser.serialize_field("updateMask", v)?;
19810        }
19811        if !self.request_id.is_empty() {
19812            struct_ser.serialize_field("requestId", &self.request_id)?;
19813        }
19814        struct_ser.end()
19815    }
19816}
19817impl<'de> serde::Deserialize<'de> for UpdateRouteTableRequest {
19818    #[allow(deprecated)]
19819    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19820    where
19821        D: serde::Deserializer<'de>,
19822    {
19823        const FIELDS: &[&str] = &[
19824            "route_table",
19825            "routeTable",
19826            "update_mask",
19827            "updateMask",
19828            "request_id",
19829            "requestId",
19830        ];
19831        #[allow(clippy::enum_variant_names)]
19832        enum GeneratedField {
19833            RouteTable,
19834            UpdateMask,
19835            RequestId,
19836            __SkipField__,
19837        }
19838        impl<'de> serde::Deserialize<'de> for GeneratedField {
19839            fn deserialize<D>(
19840                deserializer: D,
19841            ) -> std::result::Result<GeneratedField, D::Error>
19842            where
19843                D: serde::Deserializer<'de>,
19844            {
19845                struct GeneratedVisitor;
19846                impl serde::de::Visitor<'_> for GeneratedVisitor {
19847                    type Value = GeneratedField;
19848                    fn expecting(
19849                        &self,
19850                        formatter: &mut std::fmt::Formatter<'_>,
19851                    ) -> std::fmt::Result {
19852                        write!(formatter, "expected one of: {:?}", & FIELDS)
19853                    }
19854                    #[allow(unused_variables)]
19855                    fn visit_str<E>(
19856                        self,
19857                        value: &str,
19858                    ) -> std::result::Result<GeneratedField, E>
19859                    where
19860                        E: serde::de::Error,
19861                    {
19862                        match value {
19863                            "routeTable" | "route_table" => {
19864                                Ok(GeneratedField::RouteTable)
19865                            }
19866                            "updateMask" | "update_mask" => {
19867                                Ok(GeneratedField::UpdateMask)
19868                            }
19869                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19870                            _ => Ok(GeneratedField::__SkipField__),
19871                        }
19872                    }
19873                }
19874                deserializer.deserialize_identifier(GeneratedVisitor)
19875            }
19876        }
19877        struct GeneratedVisitor;
19878        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19879            type Value = UpdateRouteTableRequest;
19880            fn expecting(
19881                &self,
19882                formatter: &mut std::fmt::Formatter<'_>,
19883            ) -> std::fmt::Result {
19884                formatter
19885                    .write_str(
19886                        "struct origincloud.network.v1beta1.UpdateRouteTableRequest",
19887                    )
19888            }
19889            fn visit_map<V>(
19890                self,
19891                mut map_: V,
19892            ) -> std::result::Result<UpdateRouteTableRequest, V::Error>
19893            where
19894                V: serde::de::MapAccess<'de>,
19895            {
19896                let mut route_table__ = None;
19897                let mut update_mask__ = None;
19898                let mut request_id__ = None;
19899                while let Some(k) = map_.next_key()? {
19900                    match k {
19901                        GeneratedField::RouteTable => {
19902                            if route_table__.is_some() {
19903                                return Err(serde::de::Error::duplicate_field("routeTable"));
19904                            }
19905                            route_table__ = map_.next_value()?;
19906                        }
19907                        GeneratedField::UpdateMask => {
19908                            if update_mask__.is_some() {
19909                                return Err(serde::de::Error::duplicate_field("updateMask"));
19910                            }
19911                            update_mask__ = map_.next_value()?;
19912                        }
19913                        GeneratedField::RequestId => {
19914                            if request_id__.is_some() {
19915                                return Err(serde::de::Error::duplicate_field("requestId"));
19916                            }
19917                            request_id__ = Some(map_.next_value()?);
19918                        }
19919                        GeneratedField::__SkipField__ => {
19920                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19921                        }
19922                    }
19923                }
19924                Ok(UpdateRouteTableRequest {
19925                    route_table: route_table__,
19926                    update_mask: update_mask__,
19927                    request_id: request_id__.unwrap_or_default(),
19928                })
19929            }
19930        }
19931        deserializer
19932            .deserialize_struct(
19933                "origincloud.network.v1beta1.UpdateRouteTableRequest",
19934                FIELDS,
19935                GeneratedVisitor,
19936            )
19937    }
19938}
19939impl serde::Serialize for UpdateSecurityGroupRequest {
19940    #[allow(deprecated)]
19941    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19942    where
19943        S: serde::Serializer,
19944    {
19945        use serde::ser::SerializeStruct;
19946        let mut len = 0;
19947        if self.security_group.is_some() {
19948            len += 1;
19949        }
19950        if self.update_mask.is_some() {
19951            len += 1;
19952        }
19953        if !self.request_id.is_empty() {
19954            len += 1;
19955        }
19956        let mut struct_ser = serializer
19957            .serialize_struct(
19958                "origincloud.network.v1beta1.UpdateSecurityGroupRequest",
19959                len,
19960            )?;
19961        if let Some(v) = self.security_group.as_ref() {
19962            struct_ser.serialize_field("securityGroup", v)?;
19963        }
19964        if let Some(v) = self.update_mask.as_ref() {
19965            struct_ser.serialize_field("updateMask", v)?;
19966        }
19967        if !self.request_id.is_empty() {
19968            struct_ser.serialize_field("requestId", &self.request_id)?;
19969        }
19970        struct_ser.end()
19971    }
19972}
19973impl<'de> serde::Deserialize<'de> for UpdateSecurityGroupRequest {
19974    #[allow(deprecated)]
19975    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19976    where
19977        D: serde::Deserializer<'de>,
19978    {
19979        const FIELDS: &[&str] = &[
19980            "security_group",
19981            "securityGroup",
19982            "update_mask",
19983            "updateMask",
19984            "request_id",
19985            "requestId",
19986        ];
19987        #[allow(clippy::enum_variant_names)]
19988        enum GeneratedField {
19989            SecurityGroup,
19990            UpdateMask,
19991            RequestId,
19992            __SkipField__,
19993        }
19994        impl<'de> serde::Deserialize<'de> for GeneratedField {
19995            fn deserialize<D>(
19996                deserializer: D,
19997            ) -> std::result::Result<GeneratedField, D::Error>
19998            where
19999                D: serde::Deserializer<'de>,
20000            {
20001                struct GeneratedVisitor;
20002                impl serde::de::Visitor<'_> for GeneratedVisitor {
20003                    type Value = GeneratedField;
20004                    fn expecting(
20005                        &self,
20006                        formatter: &mut std::fmt::Formatter<'_>,
20007                    ) -> std::fmt::Result {
20008                        write!(formatter, "expected one of: {:?}", & FIELDS)
20009                    }
20010                    #[allow(unused_variables)]
20011                    fn visit_str<E>(
20012                        self,
20013                        value: &str,
20014                    ) -> std::result::Result<GeneratedField, E>
20015                    where
20016                        E: serde::de::Error,
20017                    {
20018                        match value {
20019                            "securityGroup" | "security_group" => {
20020                                Ok(GeneratedField::SecurityGroup)
20021                            }
20022                            "updateMask" | "update_mask" => {
20023                                Ok(GeneratedField::UpdateMask)
20024                            }
20025                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20026                            _ => Ok(GeneratedField::__SkipField__),
20027                        }
20028                    }
20029                }
20030                deserializer.deserialize_identifier(GeneratedVisitor)
20031            }
20032        }
20033        struct GeneratedVisitor;
20034        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20035            type Value = UpdateSecurityGroupRequest;
20036            fn expecting(
20037                &self,
20038                formatter: &mut std::fmt::Formatter<'_>,
20039            ) -> std::fmt::Result {
20040                formatter
20041                    .write_str(
20042                        "struct origincloud.network.v1beta1.UpdateSecurityGroupRequest",
20043                    )
20044            }
20045            fn visit_map<V>(
20046                self,
20047                mut map_: V,
20048            ) -> std::result::Result<UpdateSecurityGroupRequest, V::Error>
20049            where
20050                V: serde::de::MapAccess<'de>,
20051            {
20052                let mut security_group__ = None;
20053                let mut update_mask__ = None;
20054                let mut request_id__ = None;
20055                while let Some(k) = map_.next_key()? {
20056                    match k {
20057                        GeneratedField::SecurityGroup => {
20058                            if security_group__.is_some() {
20059                                return Err(
20060                                    serde::de::Error::duplicate_field("securityGroup"),
20061                                );
20062                            }
20063                            security_group__ = map_.next_value()?;
20064                        }
20065                        GeneratedField::UpdateMask => {
20066                            if update_mask__.is_some() {
20067                                return Err(serde::de::Error::duplicate_field("updateMask"));
20068                            }
20069                            update_mask__ = map_.next_value()?;
20070                        }
20071                        GeneratedField::RequestId => {
20072                            if request_id__.is_some() {
20073                                return Err(serde::de::Error::duplicate_field("requestId"));
20074                            }
20075                            request_id__ = Some(map_.next_value()?);
20076                        }
20077                        GeneratedField::__SkipField__ => {
20078                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20079                        }
20080                    }
20081                }
20082                Ok(UpdateSecurityGroupRequest {
20083                    security_group: security_group__,
20084                    update_mask: update_mask__,
20085                    request_id: request_id__.unwrap_or_default(),
20086                })
20087            }
20088        }
20089        deserializer
20090            .deserialize_struct(
20091                "origincloud.network.v1beta1.UpdateSecurityGroupRequest",
20092                FIELDS,
20093                GeneratedVisitor,
20094            )
20095    }
20096}
20097impl serde::Serialize for UpdateSubnetRequest {
20098    #[allow(deprecated)]
20099    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20100    where
20101        S: serde::Serializer,
20102    {
20103        use serde::ser::SerializeStruct;
20104        let mut len = 0;
20105        if self.subnet.is_some() {
20106            len += 1;
20107        }
20108        if self.update_mask.is_some() {
20109            len += 1;
20110        }
20111        if !self.request_id.is_empty() {
20112            len += 1;
20113        }
20114        let mut struct_ser = serializer
20115            .serialize_struct("origincloud.network.v1beta1.UpdateSubnetRequest", len)?;
20116        if let Some(v) = self.subnet.as_ref() {
20117            struct_ser.serialize_field("subnet", v)?;
20118        }
20119        if let Some(v) = self.update_mask.as_ref() {
20120            struct_ser.serialize_field("updateMask", v)?;
20121        }
20122        if !self.request_id.is_empty() {
20123            struct_ser.serialize_field("requestId", &self.request_id)?;
20124        }
20125        struct_ser.end()
20126    }
20127}
20128impl<'de> serde::Deserialize<'de> for UpdateSubnetRequest {
20129    #[allow(deprecated)]
20130    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20131    where
20132        D: serde::Deserializer<'de>,
20133    {
20134        const FIELDS: &[&str] = &[
20135            "subnet",
20136            "update_mask",
20137            "updateMask",
20138            "request_id",
20139            "requestId",
20140        ];
20141        #[allow(clippy::enum_variant_names)]
20142        enum GeneratedField {
20143            Subnet,
20144            UpdateMask,
20145            RequestId,
20146            __SkipField__,
20147        }
20148        impl<'de> serde::Deserialize<'de> for GeneratedField {
20149            fn deserialize<D>(
20150                deserializer: D,
20151            ) -> std::result::Result<GeneratedField, D::Error>
20152            where
20153                D: serde::Deserializer<'de>,
20154            {
20155                struct GeneratedVisitor;
20156                impl serde::de::Visitor<'_> for GeneratedVisitor {
20157                    type Value = GeneratedField;
20158                    fn expecting(
20159                        &self,
20160                        formatter: &mut std::fmt::Formatter<'_>,
20161                    ) -> std::fmt::Result {
20162                        write!(formatter, "expected one of: {:?}", & FIELDS)
20163                    }
20164                    #[allow(unused_variables)]
20165                    fn visit_str<E>(
20166                        self,
20167                        value: &str,
20168                    ) -> std::result::Result<GeneratedField, E>
20169                    where
20170                        E: serde::de::Error,
20171                    {
20172                        match value {
20173                            "subnet" => Ok(GeneratedField::Subnet),
20174                            "updateMask" | "update_mask" => {
20175                                Ok(GeneratedField::UpdateMask)
20176                            }
20177                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20178                            _ => Ok(GeneratedField::__SkipField__),
20179                        }
20180                    }
20181                }
20182                deserializer.deserialize_identifier(GeneratedVisitor)
20183            }
20184        }
20185        struct GeneratedVisitor;
20186        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20187            type Value = UpdateSubnetRequest;
20188            fn expecting(
20189                &self,
20190                formatter: &mut std::fmt::Formatter<'_>,
20191            ) -> std::fmt::Result {
20192                formatter
20193                    .write_str("struct origincloud.network.v1beta1.UpdateSubnetRequest")
20194            }
20195            fn visit_map<V>(
20196                self,
20197                mut map_: V,
20198            ) -> std::result::Result<UpdateSubnetRequest, V::Error>
20199            where
20200                V: serde::de::MapAccess<'de>,
20201            {
20202                let mut subnet__ = None;
20203                let mut update_mask__ = None;
20204                let mut request_id__ = None;
20205                while let Some(k) = map_.next_key()? {
20206                    match k {
20207                        GeneratedField::Subnet => {
20208                            if subnet__.is_some() {
20209                                return Err(serde::de::Error::duplicate_field("subnet"));
20210                            }
20211                            subnet__ = map_.next_value()?;
20212                        }
20213                        GeneratedField::UpdateMask => {
20214                            if update_mask__.is_some() {
20215                                return Err(serde::de::Error::duplicate_field("updateMask"));
20216                            }
20217                            update_mask__ = map_.next_value()?;
20218                        }
20219                        GeneratedField::RequestId => {
20220                            if request_id__.is_some() {
20221                                return Err(serde::de::Error::duplicate_field("requestId"));
20222                            }
20223                            request_id__ = Some(map_.next_value()?);
20224                        }
20225                        GeneratedField::__SkipField__ => {
20226                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20227                        }
20228                    }
20229                }
20230                Ok(UpdateSubnetRequest {
20231                    subnet: subnet__,
20232                    update_mask: update_mask__,
20233                    request_id: request_id__.unwrap_or_default(),
20234                })
20235            }
20236        }
20237        deserializer
20238            .deserialize_struct(
20239                "origincloud.network.v1beta1.UpdateSubnetRequest",
20240                FIELDS,
20241                GeneratedVisitor,
20242            )
20243    }
20244}
20245impl serde::Serialize for UpdateVpcRequest {
20246    #[allow(deprecated)]
20247    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20248    where
20249        S: serde::Serializer,
20250    {
20251        use serde::ser::SerializeStruct;
20252        let mut len = 0;
20253        if self.vpc.is_some() {
20254            len += 1;
20255        }
20256        if self.update_mask.is_some() {
20257            len += 1;
20258        }
20259        if !self.request_id.is_empty() {
20260            len += 1;
20261        }
20262        let mut struct_ser = serializer
20263            .serialize_struct("origincloud.network.v1beta1.UpdateVpcRequest", len)?;
20264        if let Some(v) = self.vpc.as_ref() {
20265            struct_ser.serialize_field("vpc", v)?;
20266        }
20267        if let Some(v) = self.update_mask.as_ref() {
20268            struct_ser.serialize_field("updateMask", v)?;
20269        }
20270        if !self.request_id.is_empty() {
20271            struct_ser.serialize_field("requestId", &self.request_id)?;
20272        }
20273        struct_ser.end()
20274    }
20275}
20276impl<'de> serde::Deserialize<'de> for UpdateVpcRequest {
20277    #[allow(deprecated)]
20278    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20279    where
20280        D: serde::Deserializer<'de>,
20281    {
20282        const FIELDS: &[&str] = &[
20283            "vpc",
20284            "update_mask",
20285            "updateMask",
20286            "request_id",
20287            "requestId",
20288        ];
20289        #[allow(clippy::enum_variant_names)]
20290        enum GeneratedField {
20291            Vpc,
20292            UpdateMask,
20293            RequestId,
20294            __SkipField__,
20295        }
20296        impl<'de> serde::Deserialize<'de> for GeneratedField {
20297            fn deserialize<D>(
20298                deserializer: D,
20299            ) -> std::result::Result<GeneratedField, D::Error>
20300            where
20301                D: serde::Deserializer<'de>,
20302            {
20303                struct GeneratedVisitor;
20304                impl serde::de::Visitor<'_> for GeneratedVisitor {
20305                    type Value = GeneratedField;
20306                    fn expecting(
20307                        &self,
20308                        formatter: &mut std::fmt::Formatter<'_>,
20309                    ) -> std::fmt::Result {
20310                        write!(formatter, "expected one of: {:?}", & FIELDS)
20311                    }
20312                    #[allow(unused_variables)]
20313                    fn visit_str<E>(
20314                        self,
20315                        value: &str,
20316                    ) -> std::result::Result<GeneratedField, E>
20317                    where
20318                        E: serde::de::Error,
20319                    {
20320                        match value {
20321                            "vpc" => Ok(GeneratedField::Vpc),
20322                            "updateMask" | "update_mask" => {
20323                                Ok(GeneratedField::UpdateMask)
20324                            }
20325                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20326                            _ => Ok(GeneratedField::__SkipField__),
20327                        }
20328                    }
20329                }
20330                deserializer.deserialize_identifier(GeneratedVisitor)
20331            }
20332        }
20333        struct GeneratedVisitor;
20334        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20335            type Value = UpdateVpcRequest;
20336            fn expecting(
20337                &self,
20338                formatter: &mut std::fmt::Formatter<'_>,
20339            ) -> std::fmt::Result {
20340                formatter
20341                    .write_str("struct origincloud.network.v1beta1.UpdateVpcRequest")
20342            }
20343            fn visit_map<V>(
20344                self,
20345                mut map_: V,
20346            ) -> std::result::Result<UpdateVpcRequest, V::Error>
20347            where
20348                V: serde::de::MapAccess<'de>,
20349            {
20350                let mut vpc__ = None;
20351                let mut update_mask__ = None;
20352                let mut request_id__ = None;
20353                while let Some(k) = map_.next_key()? {
20354                    match k {
20355                        GeneratedField::Vpc => {
20356                            if vpc__.is_some() {
20357                                return Err(serde::de::Error::duplicate_field("vpc"));
20358                            }
20359                            vpc__ = map_.next_value()?;
20360                        }
20361                        GeneratedField::UpdateMask => {
20362                            if update_mask__.is_some() {
20363                                return Err(serde::de::Error::duplicate_field("updateMask"));
20364                            }
20365                            update_mask__ = map_.next_value()?;
20366                        }
20367                        GeneratedField::RequestId => {
20368                            if request_id__.is_some() {
20369                                return Err(serde::de::Error::duplicate_field("requestId"));
20370                            }
20371                            request_id__ = Some(map_.next_value()?);
20372                        }
20373                        GeneratedField::__SkipField__ => {
20374                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20375                        }
20376                    }
20377                }
20378                Ok(UpdateVpcRequest {
20379                    vpc: vpc__,
20380                    update_mask: update_mask__,
20381                    request_id: request_id__.unwrap_or_default(),
20382                })
20383            }
20384        }
20385        deserializer
20386            .deserialize_struct(
20387                "origincloud.network.v1beta1.UpdateVpcRequest",
20388                FIELDS,
20389                GeneratedVisitor,
20390            )
20391    }
20392}
20393impl serde::Serialize for Vpc {
20394    #[allow(deprecated)]
20395    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20396    where
20397        S: serde::Serializer,
20398    {
20399        use serde::ser::SerializeStruct;
20400        let mut len = 0;
20401        if !self.name.is_empty() {
20402            len += 1;
20403        }
20404        if !self.urn.is_empty() {
20405            len += 1;
20406        }
20407        if !self.ipv4_cidr_block.is_empty() {
20408            len += 1;
20409        }
20410        if !self.ipv6_cidr_block.is_empty() {
20411            len += 1;
20412        }
20413        if self.subnet_ipv4_prefix_length != 0 {
20414            len += 1;
20415        }
20416        if self.available_subnet_count != 0 {
20417            len += 1;
20418        }
20419        if !self.dns_policy.is_empty() {
20420            len += 1;
20421        }
20422        if !self.internet_gateway.is_empty() {
20423            len += 1;
20424        }
20425        if self.project_default {
20426            len += 1;
20427        }
20428        if self.create_time.is_some() {
20429            len += 1;
20430        }
20431        if !self.creator.is_empty() {
20432            len += 1;
20433        }
20434        if !self.tags.is_empty() {
20435            len += 1;
20436        }
20437        let mut struct_ser = serializer
20438            .serialize_struct("origincloud.network.v1beta1.Vpc", len)?;
20439        if !self.name.is_empty() {
20440            struct_ser.serialize_field("name", &self.name)?;
20441        }
20442        if !self.urn.is_empty() {
20443            struct_ser.serialize_field("urn", &self.urn)?;
20444        }
20445        if !self.ipv4_cidr_block.is_empty() {
20446            struct_ser.serialize_field("ipv4CidrBlock", &self.ipv4_cidr_block)?;
20447        }
20448        if !self.ipv6_cidr_block.is_empty() {
20449            struct_ser.serialize_field("ipv6CidrBlock", &self.ipv6_cidr_block)?;
20450        }
20451        if self.subnet_ipv4_prefix_length != 0 {
20452            struct_ser
20453                .serialize_field(
20454                    "subnetIpv4PrefixLength",
20455                    &self.subnet_ipv4_prefix_length,
20456                )?;
20457        }
20458        if self.available_subnet_count != 0 {
20459            struct_ser
20460                .serialize_field("availableSubnetCount", &self.available_subnet_count)?;
20461        }
20462        if !self.dns_policy.is_empty() {
20463            struct_ser.serialize_field("dnsPolicy", &self.dns_policy)?;
20464        }
20465        if !self.internet_gateway.is_empty() {
20466            struct_ser.serialize_field("internetGateway", &self.internet_gateway)?;
20467        }
20468        if self.project_default {
20469            struct_ser.serialize_field("projectDefault", &self.project_default)?;
20470        }
20471        if let Some(v) = self.create_time.as_ref() {
20472            struct_ser.serialize_field("createTime", v)?;
20473        }
20474        if !self.creator.is_empty() {
20475            struct_ser.serialize_field("creator", &self.creator)?;
20476        }
20477        if !self.tags.is_empty() {
20478            struct_ser.serialize_field("tags", &self.tags)?;
20479        }
20480        struct_ser.end()
20481    }
20482}
20483impl<'de> serde::Deserialize<'de> for Vpc {
20484    #[allow(deprecated)]
20485    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20486    where
20487        D: serde::Deserializer<'de>,
20488    {
20489        const FIELDS: &[&str] = &[
20490            "name",
20491            "urn",
20492            "ipv4_cidr_block",
20493            "ipv4CidrBlock",
20494            "ipv6_cidr_block",
20495            "ipv6CidrBlock",
20496            "subnet_ipv4_prefix_length",
20497            "subnetIpv4PrefixLength",
20498            "available_subnet_count",
20499            "availableSubnetCount",
20500            "dns_policy",
20501            "dnsPolicy",
20502            "internet_gateway",
20503            "internetGateway",
20504            "project_default",
20505            "projectDefault",
20506            "create_time",
20507            "createTime",
20508            "creator",
20509            "tags",
20510        ];
20511        #[allow(clippy::enum_variant_names)]
20512        enum GeneratedField {
20513            Name,
20514            Urn,
20515            Ipv4CidrBlock,
20516            Ipv6CidrBlock,
20517            SubnetIpv4PrefixLength,
20518            AvailableSubnetCount,
20519            DnsPolicy,
20520            InternetGateway,
20521            ProjectDefault,
20522            CreateTime,
20523            Creator,
20524            Tags,
20525            __SkipField__,
20526        }
20527        impl<'de> serde::Deserialize<'de> for GeneratedField {
20528            fn deserialize<D>(
20529                deserializer: D,
20530            ) -> std::result::Result<GeneratedField, D::Error>
20531            where
20532                D: serde::Deserializer<'de>,
20533            {
20534                struct GeneratedVisitor;
20535                impl serde::de::Visitor<'_> for GeneratedVisitor {
20536                    type Value = GeneratedField;
20537                    fn expecting(
20538                        &self,
20539                        formatter: &mut std::fmt::Formatter<'_>,
20540                    ) -> std::fmt::Result {
20541                        write!(formatter, "expected one of: {:?}", & FIELDS)
20542                    }
20543                    #[allow(unused_variables)]
20544                    fn visit_str<E>(
20545                        self,
20546                        value: &str,
20547                    ) -> std::result::Result<GeneratedField, E>
20548                    where
20549                        E: serde::de::Error,
20550                    {
20551                        match value {
20552                            "name" => Ok(GeneratedField::Name),
20553                            "urn" => Ok(GeneratedField::Urn),
20554                            "ipv4CidrBlock" | "ipv4_cidr_block" => {
20555                                Ok(GeneratedField::Ipv4CidrBlock)
20556                            }
20557                            "ipv6CidrBlock" | "ipv6_cidr_block" => {
20558                                Ok(GeneratedField::Ipv6CidrBlock)
20559                            }
20560                            "subnetIpv4PrefixLength" | "subnet_ipv4_prefix_length" => {
20561                                Ok(GeneratedField::SubnetIpv4PrefixLength)
20562                            }
20563                            "availableSubnetCount" | "available_subnet_count" => {
20564                                Ok(GeneratedField::AvailableSubnetCount)
20565                            }
20566                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
20567                            "internetGateway" | "internet_gateway" => {
20568                                Ok(GeneratedField::InternetGateway)
20569                            }
20570                            "projectDefault" | "project_default" => {
20571                                Ok(GeneratedField::ProjectDefault)
20572                            }
20573                            "createTime" | "create_time" => {
20574                                Ok(GeneratedField::CreateTime)
20575                            }
20576                            "creator" => Ok(GeneratedField::Creator),
20577                            "tags" => Ok(GeneratedField::Tags),
20578                            _ => Ok(GeneratedField::__SkipField__),
20579                        }
20580                    }
20581                }
20582                deserializer.deserialize_identifier(GeneratedVisitor)
20583            }
20584        }
20585        struct GeneratedVisitor;
20586        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20587            type Value = Vpc;
20588            fn expecting(
20589                &self,
20590                formatter: &mut std::fmt::Formatter<'_>,
20591            ) -> std::fmt::Result {
20592                formatter.write_str("struct origincloud.network.v1beta1.Vpc")
20593            }
20594            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Vpc, V::Error>
20595            where
20596                V: serde::de::MapAccess<'de>,
20597            {
20598                let mut name__ = None;
20599                let mut urn__ = None;
20600                let mut ipv4_cidr_block__ = None;
20601                let mut ipv6_cidr_block__ = None;
20602                let mut subnet_ipv4_prefix_length__ = None;
20603                let mut available_subnet_count__ = None;
20604                let mut dns_policy__ = None;
20605                let mut internet_gateway__ = None;
20606                let mut project_default__ = None;
20607                let mut create_time__ = None;
20608                let mut creator__ = None;
20609                let mut tags__ = None;
20610                while let Some(k) = map_.next_key()? {
20611                    match k {
20612                        GeneratedField::Name => {
20613                            if name__.is_some() {
20614                                return Err(serde::de::Error::duplicate_field("name"));
20615                            }
20616                            name__ = Some(map_.next_value()?);
20617                        }
20618                        GeneratedField::Urn => {
20619                            if urn__.is_some() {
20620                                return Err(serde::de::Error::duplicate_field("urn"));
20621                            }
20622                            urn__ = Some(map_.next_value()?);
20623                        }
20624                        GeneratedField::Ipv4CidrBlock => {
20625                            if ipv4_cidr_block__.is_some() {
20626                                return Err(
20627                                    serde::de::Error::duplicate_field("ipv4CidrBlock"),
20628                                );
20629                            }
20630                            ipv4_cidr_block__ = Some(map_.next_value()?);
20631                        }
20632                        GeneratedField::Ipv6CidrBlock => {
20633                            if ipv6_cidr_block__.is_some() {
20634                                return Err(
20635                                    serde::de::Error::duplicate_field("ipv6CidrBlock"),
20636                                );
20637                            }
20638                            ipv6_cidr_block__ = Some(map_.next_value()?);
20639                        }
20640                        GeneratedField::SubnetIpv4PrefixLength => {
20641                            if subnet_ipv4_prefix_length__.is_some() {
20642                                return Err(
20643                                    serde::de::Error::duplicate_field("subnetIpv4PrefixLength"),
20644                                );
20645                            }
20646                            subnet_ipv4_prefix_length__ = Some(
20647                                map_
20648                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
20649                                    .0,
20650                            );
20651                        }
20652                        GeneratedField::AvailableSubnetCount => {
20653                            if available_subnet_count__.is_some() {
20654                                return Err(
20655                                    serde::de::Error::duplicate_field("availableSubnetCount"),
20656                                );
20657                            }
20658                            available_subnet_count__ = Some(
20659                                map_
20660                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
20661                                    .0,
20662                            );
20663                        }
20664                        GeneratedField::DnsPolicy => {
20665                            if dns_policy__.is_some() {
20666                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
20667                            }
20668                            dns_policy__ = Some(map_.next_value()?);
20669                        }
20670                        GeneratedField::InternetGateway => {
20671                            if internet_gateway__.is_some() {
20672                                return Err(
20673                                    serde::de::Error::duplicate_field("internetGateway"),
20674                                );
20675                            }
20676                            internet_gateway__ = Some(map_.next_value()?);
20677                        }
20678                        GeneratedField::ProjectDefault => {
20679                            if project_default__.is_some() {
20680                                return Err(
20681                                    serde::de::Error::duplicate_field("projectDefault"),
20682                                );
20683                            }
20684                            project_default__ = Some(map_.next_value()?);
20685                        }
20686                        GeneratedField::CreateTime => {
20687                            if create_time__.is_some() {
20688                                return Err(serde::de::Error::duplicate_field("createTime"));
20689                            }
20690                            create_time__ = map_.next_value()?;
20691                        }
20692                        GeneratedField::Creator => {
20693                            if creator__.is_some() {
20694                                return Err(serde::de::Error::duplicate_field("creator"));
20695                            }
20696                            creator__ = Some(map_.next_value()?);
20697                        }
20698                        GeneratedField::Tags => {
20699                            if tags__.is_some() {
20700                                return Err(serde::de::Error::duplicate_field("tags"));
20701                            }
20702                            tags__ = Some(
20703                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
20704                            );
20705                        }
20706                        GeneratedField::__SkipField__ => {
20707                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20708                        }
20709                    }
20710                }
20711                Ok(Vpc {
20712                    name: name__.unwrap_or_default(),
20713                    urn: urn__.unwrap_or_default(),
20714                    ipv4_cidr_block: ipv4_cidr_block__.unwrap_or_default(),
20715                    ipv6_cidr_block: ipv6_cidr_block__.unwrap_or_default(),
20716                    subnet_ipv4_prefix_length: subnet_ipv4_prefix_length__
20717                        .unwrap_or_default(),
20718                    available_subnet_count: available_subnet_count__.unwrap_or_default(),
20719                    dns_policy: dns_policy__.unwrap_or_default(),
20720                    internet_gateway: internet_gateway__.unwrap_or_default(),
20721                    project_default: project_default__.unwrap_or_default(),
20722                    create_time: create_time__,
20723                    creator: creator__.unwrap_or_default(),
20724                    tags: tags__.unwrap_or_default(),
20725                })
20726            }
20727        }
20728        deserializer
20729            .deserialize_struct(
20730                "origincloud.network.v1beta1.Vpc",
20731                FIELDS,
20732                GeneratedVisitor,
20733            )
20734    }
20735}
20736/// Calls `AclService`.
20737///
20738/// ACLs: stateless filters at the edge of a subnet. An ACL holds rules
20739/// (`AclRuleService`), and applies to the subnets that an ACL association
20740/// names it for (`AclAssociationService`). Each packet entering or leaving
20741/// such a subnet meets the rules of its direction in `priority` order; the
20742/// first that matches accepts or drops it, and a packet no rule matches is
20743/// dropped.
20744#[derive(Clone, Debug)]
20745pub struct AclClient {
20746    service: ::origincloud_core::Service,
20747}
20748impl AclClient {
20749    /// Returns a client of `AclService` that sends its calls through `client`.
20750    pub fn new(client: &::origincloud_core::Client) -> Self {
20751        Self {
20752            service: client.service("network", true),
20753        }
20754    }
20755    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
20756    pub fn service(&self) -> &::origincloud_core::Service {
20757        &self.service
20758    }
20759    /// Returns an ACL.
20760    pub async fn get_acl(
20761        &self,
20762        request: GetAclRequest,
20763    ) -> ::core::result::Result<Acl, ::origincloud_core::Error> {
20764        let p0 = ::origincloud_core::path_value(
20765            "name",
20766            &request.name,
20767            "projects/*/regions/*/acls/*",
20768        )?;
20769        let query = ::origincloud_core::query(&request, &["name"])?;
20770        let call = ::origincloud_core::Request::new(
20771                ::origincloud_core::Method::GET,
20772                format!("/v1beta1/{p0}"),
20773            )
20774            .with_query(query)
20775            .idempotent();
20776        self.service.call(call).await
20777    }
20778    /// Lists the ACLs in a region, oldest first.
20779    pub async fn list_acls(
20780        &self,
20781        request: ListAclsRequest,
20782    ) -> ::core::result::Result<ListAclsResponse, ::origincloud_core::Error> {
20783        let p0 = ::origincloud_core::path_value(
20784            "parent",
20785            &request.parent,
20786            "projects/*/regions/*",
20787        )?;
20788        let query = ::origincloud_core::query(&request, &["parent"])?;
20789        let call = ::origincloud_core::Request::new(
20790                ::origincloud_core::Method::GET,
20791                format!("/v1beta1/{p0}/acls"),
20792            )
20793            .with_query(query)
20794            .idempotent();
20795        self.service.call(call).await
20796    }
20797    /// Returns everything [`list_acls`](Self::list_acls) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
20798    pub fn all_acls(&self, request: ListAclsRequest) -> ::origincloud_core::Pages<Acl> {
20799        let client = self.clone();
20800        ::origincloud_core::Pages::new(
20801            request,
20802            move |request: ListAclsRequest| {
20803                let client = client.clone();
20804                async move {
20805                    let page = client.list_acls(request).await?;
20806                    Ok((page.acls, page.next_page_token))
20807                }
20808            },
20809            |request: &mut ListAclsRequest, token: ::std::string::String| {
20810                request.page_token = token;
20811            },
20812        )
20813    }
20814    /// Creates an ACL in a VPC, with no rules: it drops everything until
20815    /// rules are added. The operation is done once the ACL is recorded.
20816    ///
20817    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Acl`] once the change is done.
20818    pub async fn create_acl(
20819        &self,
20820        mut request: CreateAclRequest,
20821    ) -> ::core::result::Result<
20822        ::origincloud_core::Operation<Acl>,
20823        ::origincloud_core::Error,
20824    > {
20825        if request.request_id.is_empty() {
20826            request.request_id = ::origincloud_core::new_request_id();
20827        }
20828        let p0 = ::origincloud_core::path_value(
20829            "parent",
20830            &request.parent,
20831            "projects/*/regions/*",
20832        )?;
20833        let body = ::origincloud_core::json_body(
20834            request.acl.as_ref().unwrap_or(&::core::default::Default::default()),
20835        )?;
20836        let query = ::origincloud_core::query(&request, &["parent", "acl"])?;
20837        let call = ::origincloud_core::Request::new(
20838                ::origincloud_core::Method::POST,
20839                format!("/v1beta1/{p0}/acls"),
20840            )
20841            .with_body(body)
20842            .with_query(query)
20843            .idempotent();
20844        let operation = self.service.call(call).await?;
20845        Ok(
20846            ::origincloud_core::Operation::new(
20847                self.service.clone(),
20848                operation,
20849                "origincloud.network.v1beta1.Acl",
20850            ),
20851        )
20852    }
20853    /// Changes an ACL's tags. The operation is done once the change is
20854    /// recorded.
20855    ///
20856    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Acl`] once the change is done.
20857    pub async fn update_acl(
20858        &self,
20859        mut request: UpdateAclRequest,
20860    ) -> ::core::result::Result<
20861        ::origincloud_core::Operation<Acl>,
20862        ::origincloud_core::Error,
20863    > {
20864        if request.request_id.is_empty() {
20865            request.request_id = ::origincloud_core::new_request_id();
20866        }
20867        let p0 = ::origincloud_core::path_value(
20868            "acl.name",
20869            request.acl.as_ref().map_or("", |m| m.name.as_str()),
20870            "projects/*/regions/*/acls/*",
20871        )?;
20872        let body = ::origincloud_core::json_body(
20873            request.acl.as_ref().unwrap_or(&::core::default::Default::default()),
20874        )?;
20875        let query = ::origincloud_core::query(&request, &["acl.name", "acl"])?;
20876        let call = ::origincloud_core::Request::new(
20877                ::origincloud_core::Method::PATCH,
20878                format!("/v1beta1/{p0}"),
20879            )
20880            .with_body(body)
20881            .with_query(query)
20882            .idempotent();
20883        let operation = self.service.call(call).await?;
20884        Ok(
20885            ::origincloud_core::Operation::new(
20886                self.service.clone(),
20887                operation,
20888                "origincloud.network.v1beta1.Acl",
20889            ),
20890        )
20891    }
20892    /// Deletes an ACL with its rules. Refused for an ACL the platform created
20893    /// with its VPC, which goes with the VPC, and while an ACL association
20894    /// names it. The operation is done once the change is recorded; the
20895    /// network applies it within seconds.
20896    ///
20897    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
20898    pub async fn delete_acl(
20899        &self,
20900        mut request: DeleteAclRequest,
20901    ) -> ::core::result::Result<
20902        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
20903        ::origincloud_core::Error,
20904    > {
20905        if request.request_id.is_empty() {
20906            request.request_id = ::origincloud_core::new_request_id();
20907        }
20908        let p0 = ::origincloud_core::path_value(
20909            "name",
20910            &request.name,
20911            "projects/*/regions/*/acls/*",
20912        )?;
20913        let query = ::origincloud_core::query(&request, &["name"])?;
20914        let call = ::origincloud_core::Request::new(
20915                ::origincloud_core::Method::DELETE,
20916                format!("/v1beta1/{p0}"),
20917            )
20918            .with_query(query)
20919            .idempotent();
20920        let operation = self.service.call(call).await?;
20921        Ok(
20922            ::origincloud_core::Operation::new(
20923                self.service.clone(),
20924                operation,
20925                "google.protobuf.Empty",
20926            ),
20927        )
20928    }
20929}
20930/// Calls `AclAssociationService`.
20931///
20932/// ACL associations: which ACL filters a subnet's traffic at its edge. A
20933/// subnet has at most one; without one, nothing is filtered at its edge (see
20934/// the subnet's `acl`). An association's id is the id of the ACL it names, so
20935/// a client that knows the subnet and the ACL names the association without
20936/// listing. To move a subnet to another ACL, delete its association and
20937/// create another.
20938#[derive(Clone, Debug)]
20939pub struct AclAssociationClient {
20940    service: ::origincloud_core::Service,
20941}
20942impl AclAssociationClient {
20943    /// Returns a client of `AclAssociationService` that sends its calls through `client`.
20944    pub fn new(client: &::origincloud_core::Client) -> Self {
20945        Self {
20946            service: client.service("network", true),
20947        }
20948    }
20949    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
20950    pub fn service(&self) -> &::origincloud_core::Service {
20951        &self.service
20952    }
20953    /// Returns an ACL association.
20954    pub async fn get_acl_association(
20955        &self,
20956        request: GetAclAssociationRequest,
20957    ) -> ::core::result::Result<AclAssociation, ::origincloud_core::Error> {
20958        let p0 = ::origincloud_core::path_value(
20959            "name",
20960            &request.name,
20961            "projects/*/zones/*/subnets/*/aclAssociations/*",
20962        )?;
20963        let query = ::origincloud_core::query(&request, &["name"])?;
20964        let call = ::origincloud_core::Request::new(
20965                ::origincloud_core::Method::GET,
20966                format!("/v1beta1/{p0}"),
20967            )
20968            .with_query(query)
20969            .idempotent();
20970        self.service.call(call).await
20971    }
20972    /// Lists a subnet's ACL associations: none or one.
20973    pub async fn list_acl_associations(
20974        &self,
20975        request: ListAclAssociationsRequest,
20976    ) -> ::core::result::Result<ListAclAssociationsResponse, ::origincloud_core::Error> {
20977        let p0 = ::origincloud_core::path_value(
20978            "parent",
20979            &request.parent,
20980            "projects/*/zones/*/subnets/*",
20981        )?;
20982        let query = ::origincloud_core::query(&request, &["parent"])?;
20983        let call = ::origincloud_core::Request::new(
20984                ::origincloud_core::Method::GET,
20985                format!("/v1beta1/{p0}/aclAssociations"),
20986            )
20987            .with_query(query)
20988            .idempotent();
20989        self.service.call(call).await
20990    }
20991    /// Returns everything [`list_acl_associations`](Self::list_acl_associations) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
20992    pub fn all_acl_associations(
20993        &self,
20994        request: ListAclAssociationsRequest,
20995    ) -> ::origincloud_core::Pages<AclAssociation> {
20996        let client = self.clone();
20997        ::origincloud_core::Pages::new(
20998            request,
20999            move |request: ListAclAssociationsRequest| {
21000                let client = client.clone();
21001                async move {
21002                    let page = client.list_acl_associations(request).await?;
21003                    Ok((page.acl_associations, page.next_page_token))
21004                }
21005            },
21006            |request: &mut ListAclAssociationsRequest, token: ::std::string::String| {
21007                request.page_token = token;
21008            },
21009        )
21010    }
21011    /// Associates an ACL with a subnet. Refused with `FAILED_PRECONDITION`
21012    /// when the subnet has an ACL association. The operation is done once the
21013    /// change is recorded; the network applies it within seconds.
21014    ///
21015    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`AclAssociation`] once the change is done.
21016    pub async fn create_acl_association(
21017        &self,
21018        mut request: CreateAclAssociationRequest,
21019    ) -> ::core::result::Result<
21020        ::origincloud_core::Operation<AclAssociation>,
21021        ::origincloud_core::Error,
21022    > {
21023        if request.request_id.is_empty() {
21024            request.request_id = ::origincloud_core::new_request_id();
21025        }
21026        let p0 = ::origincloud_core::path_value(
21027            "parent",
21028            &request.parent,
21029            "projects/*/zones/*/subnets/*",
21030        )?;
21031        let body = ::origincloud_core::json_body(
21032            request
21033                .acl_association
21034                .as_ref()
21035                .unwrap_or(&::core::default::Default::default()),
21036        )?;
21037        let query = ::origincloud_core::query(&request, &["parent", "aclAssociation"])?;
21038        let call = ::origincloud_core::Request::new(
21039                ::origincloud_core::Method::POST,
21040                format!("/v1beta1/{p0}/aclAssociations"),
21041            )
21042            .with_body(body)
21043            .with_query(query)
21044            .idempotent();
21045        let operation = self.service.call(call).await?;
21046        Ok(
21047            ::origincloud_core::Operation::new(
21048                self.service.clone(),
21049                operation,
21050                "origincloud.network.v1beta1.AclAssociation",
21051            ),
21052        )
21053    }
21054    /// Removes a subnet's ACL association: nothing is filtered at its edge any
21055    /// more, and its interfaces' security groups still apply. The operation is
21056    /// done once the change is recorded; the network applies it within seconds.
21057    ///
21058    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21059    pub async fn delete_acl_association(
21060        &self,
21061        mut request: DeleteAclAssociationRequest,
21062    ) -> ::core::result::Result<
21063        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21064        ::origincloud_core::Error,
21065    > {
21066        if request.request_id.is_empty() {
21067            request.request_id = ::origincloud_core::new_request_id();
21068        }
21069        let p0 = ::origincloud_core::path_value(
21070            "name",
21071            &request.name,
21072            "projects/*/zones/*/subnets/*/aclAssociations/*",
21073        )?;
21074        let query = ::origincloud_core::query(&request, &["name"])?;
21075        let call = ::origincloud_core::Request::new(
21076                ::origincloud_core::Method::DELETE,
21077                format!("/v1beta1/{p0}"),
21078            )
21079            .with_query(query)
21080            .idempotent();
21081        let operation = self.service.call(call).await?;
21082        Ok(
21083            ::origincloud_core::Operation::new(
21084                self.service.clone(),
21085                operation,
21086                "google.protobuf.Empty",
21087            ),
21088        )
21089    }
21090}
21091/// Calls `AclRuleService`.
21092///
21093/// ACL rules: what an ACL accepts or drops, each rule in its place in one
21094/// direction. A rule is immutable: it is created and deleted, never changed,
21095/// so to change one, delete it and create its replacement. A direction
21096/// holds one rule per `priority`, so a replacement at the same priority can
21097/// only be created once the old rule is deleted: between the two, neither
21098/// rule applies. A replacement at a free priority can be created first.
21099#[derive(Clone, Debug)]
21100pub struct AclRuleClient {
21101    service: ::origincloud_core::Service,
21102}
21103impl AclRuleClient {
21104    /// Returns a client of `AclRuleService` that sends its calls through `client`.
21105    pub fn new(client: &::origincloud_core::Client) -> Self {
21106        Self {
21107            service: client.service("network", true),
21108        }
21109    }
21110    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21111    pub fn service(&self) -> &::origincloud_core::Service {
21112        &self.service
21113    }
21114    /// Returns an ACL rule.
21115    pub async fn get_acl_rule(
21116        &self,
21117        request: GetAclRuleRequest,
21118    ) -> ::core::result::Result<AclRule, ::origincloud_core::Error> {
21119        let p0 = ::origincloud_core::path_value(
21120            "name",
21121            &request.name,
21122            "projects/*/regions/*/acls/*/rules/*",
21123        )?;
21124        let query = ::origincloud_core::query(&request, &["name"])?;
21125        let call = ::origincloud_core::Request::new(
21126                ::origincloud_core::Method::GET,
21127                format!("/v1beta1/{p0}"),
21128            )
21129            .with_query(query)
21130            .idempotent();
21131        self.service.call(call).await
21132    }
21133    /// Lists an ACL's rules of both directions, oldest first.
21134    pub async fn list_acl_rules(
21135        &self,
21136        request: ListAclRulesRequest,
21137    ) -> ::core::result::Result<ListAclRulesResponse, ::origincloud_core::Error> {
21138        let p0 = ::origincloud_core::path_value(
21139            "parent",
21140            &request.parent,
21141            "projects/*/regions/*/acls/*",
21142        )?;
21143        let query = ::origincloud_core::query(&request, &["parent"])?;
21144        let call = ::origincloud_core::Request::new(
21145                ::origincloud_core::Method::GET,
21146                format!("/v1beta1/{p0}/rules"),
21147            )
21148            .with_query(query)
21149            .idempotent();
21150        self.service.call(call).await
21151    }
21152    /// Returns everything [`list_acl_rules`](Self::list_acl_rules) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
21153    pub fn all_acl_rules(
21154        &self,
21155        request: ListAclRulesRequest,
21156    ) -> ::origincloud_core::Pages<AclRule> {
21157        let client = self.clone();
21158        ::origincloud_core::Pages::new(
21159            request,
21160            move |request: ListAclRulesRequest| {
21161                let client = client.clone();
21162                async move {
21163                    let page = client.list_acl_rules(request).await?;
21164                    Ok((page.acl_rules, page.next_page_token))
21165                }
21166            },
21167            |request: &mut ListAclRulesRequest, token: ::std::string::String| {
21168                request.page_token = token;
21169            },
21170        )
21171    }
21172    /// Adds a rule to an ACL. Refused with `FAILED_PRECONDITION` when a rule
21173    /// of the same direction has the same `priority`. An ACL holds at most 40
21174    /// rules by default, both directions together, as the quota sets. The
21175    /// operation is done once the change is recorded; the network applies it
21176    /// within seconds.
21177    ///
21178    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`AclRule`] once the change is done.
21179    pub async fn create_acl_rule(
21180        &self,
21181        mut request: CreateAclRuleRequest,
21182    ) -> ::core::result::Result<
21183        ::origincloud_core::Operation<AclRule>,
21184        ::origincloud_core::Error,
21185    > {
21186        if request.request_id.is_empty() {
21187            request.request_id = ::origincloud_core::new_request_id();
21188        }
21189        let p0 = ::origincloud_core::path_value(
21190            "parent",
21191            &request.parent,
21192            "projects/*/regions/*/acls/*",
21193        )?;
21194        let body = ::origincloud_core::json_body(
21195            request.acl_rule.as_ref().unwrap_or(&::core::default::Default::default()),
21196        )?;
21197        let query = ::origincloud_core::query(&request, &["parent", "aclRule"])?;
21198        let call = ::origincloud_core::Request::new(
21199                ::origincloud_core::Method::POST,
21200                format!("/v1beta1/{p0}/rules"),
21201            )
21202            .with_body(body)
21203            .with_query(query)
21204            .idempotent();
21205        let operation = self.service.call(call).await?;
21206        Ok(
21207            ::origincloud_core::Operation::new(
21208                self.service.clone(),
21209                operation,
21210                "origincloud.network.v1beta1.AclRule",
21211            ),
21212        )
21213    }
21214    /// Removes a rule from its ACL. The operation is done once the change is
21215    /// recorded; the network applies it within seconds.
21216    ///
21217    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21218    pub async fn delete_acl_rule(
21219        &self,
21220        mut request: DeleteAclRuleRequest,
21221    ) -> ::core::result::Result<
21222        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21223        ::origincloud_core::Error,
21224    > {
21225        if request.request_id.is_empty() {
21226            request.request_id = ::origincloud_core::new_request_id();
21227        }
21228        let p0 = ::origincloud_core::path_value(
21229            "name",
21230            &request.name,
21231            "projects/*/regions/*/acls/*/rules/*",
21232        )?;
21233        let query = ::origincloud_core::query(&request, &["name"])?;
21234        let call = ::origincloud_core::Request::new(
21235                ::origincloud_core::Method::DELETE,
21236                format!("/v1beta1/{p0}"),
21237            )
21238            .with_query(query)
21239            .idempotent();
21240        let operation = self.service.call(call).await?;
21241        Ok(
21242            ::origincloud_core::Operation::new(
21243                self.service.clone(),
21244                operation,
21245                "google.protobuf.Empty",
21246            ),
21247        )
21248    }
21249}
21250/// Calls `DnsPolicyService`.
21251///
21252/// DNS policies: how a VPC's resolver answers names it isn't authoritative
21253/// for. A VPC relays through the policy its DNS policy association names
21254/// (`DnsPolicyAssociationService`), or else through the project's default
21255/// policy in its region.
21256#[derive(Clone, Debug)]
21257pub struct DnsPolicyClient {
21258    service: ::origincloud_core::Service,
21259}
21260impl DnsPolicyClient {
21261    /// Returns a client of `DnsPolicyService` that sends its calls through `client`.
21262    pub fn new(client: &::origincloud_core::Client) -> Self {
21263        Self {
21264            service: client.service("network", true),
21265        }
21266    }
21267    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21268    pub fn service(&self) -> &::origincloud_core::Service {
21269        &self.service
21270    }
21271    /// Returns a DNS policy.
21272    pub async fn get_dns_policy(
21273        &self,
21274        request: GetDnsPolicyRequest,
21275    ) -> ::core::result::Result<DnsPolicy, ::origincloud_core::Error> {
21276        let p0 = ::origincloud_core::path_value(
21277            "name",
21278            &request.name,
21279            "projects/*/regions/*/dnsPolicies/*",
21280        )?;
21281        let query = ::origincloud_core::query(&request, &["name"])?;
21282        let call = ::origincloud_core::Request::new(
21283                ::origincloud_core::Method::GET,
21284                format!("/v1beta1/{p0}"),
21285            )
21286            .with_query(query)
21287            .idempotent();
21288        self.service.call(call).await
21289    }
21290    /// Lists the DNS policies in a region, oldest first, the project's
21291    /// default included.
21292    pub async fn list_dns_policies(
21293        &self,
21294        request: ListDnsPoliciesRequest,
21295    ) -> ::core::result::Result<ListDnsPoliciesResponse, ::origincloud_core::Error> {
21296        let p0 = ::origincloud_core::path_value(
21297            "parent",
21298            &request.parent,
21299            "projects/*/regions/*",
21300        )?;
21301        let query = ::origincloud_core::query(&request, &["parent"])?;
21302        let call = ::origincloud_core::Request::new(
21303                ::origincloud_core::Method::GET,
21304                format!("/v1beta1/{p0}/dnsPolicies"),
21305            )
21306            .with_query(query)
21307            .idempotent();
21308        self.service.call(call).await
21309    }
21310    /// Returns everything [`list_dns_policies`](Self::list_dns_policies) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
21311    pub fn all_dns_policies(
21312        &self,
21313        request: ListDnsPoliciesRequest,
21314    ) -> ::origincloud_core::Pages<DnsPolicy> {
21315        let client = self.clone();
21316        ::origincloud_core::Pages::new(
21317            request,
21318            move |request: ListDnsPoliciesRequest| {
21319                let client = client.clone();
21320                async move {
21321                    let page = client.list_dns_policies(request).await?;
21322                    Ok((page.dns_policies, page.next_page_token))
21323                }
21324            },
21325            |request: &mut ListDnsPoliciesRequest, token: ::std::string::String| {
21326                request.page_token = token;
21327            },
21328        )
21329    }
21330    /// Creates a DNS policy. It isn't the default: associate it with a VPC,
21331    /// or make it the default with `SetDefaultDnsPolicy`. The operation is
21332    /// done once the DNS policy is recorded.
21333    ///
21334    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21335    pub async fn create_dns_policy(
21336        &self,
21337        mut request: CreateDnsPolicyRequest,
21338    ) -> ::core::result::Result<
21339        ::origincloud_core::Operation<DnsPolicy>,
21340        ::origincloud_core::Error,
21341    > {
21342        if request.request_id.is_empty() {
21343            request.request_id = ::origincloud_core::new_request_id();
21344        }
21345        let p0 = ::origincloud_core::path_value(
21346            "parent",
21347            &request.parent,
21348            "projects/*/regions/*",
21349        )?;
21350        let body = ::origincloud_core::json_body(
21351            request.dns_policy.as_ref().unwrap_or(&::core::default::Default::default()),
21352        )?;
21353        let query = ::origincloud_core::query(&request, &["parent", "dnsPolicy"])?;
21354        let call = ::origincloud_core::Request::new(
21355                ::origincloud_core::Method::POST,
21356                format!("/v1beta1/{p0}/dnsPolicies"),
21357            )
21358            .with_body(body)
21359            .with_query(query)
21360            .idempotent();
21361        let operation = self.service.call(call).await?;
21362        Ok(
21363            ::origincloud_core::Operation::new(
21364                self.service.clone(),
21365                operation,
21366                "origincloud.network.v1beta1.DnsPolicy",
21367            ),
21368        )
21369    }
21370    /// Changes a DNS policy's relay settings or tags. The operation is done
21371    /// once the change is recorded; the resolvers of every VPC relaying
21372    /// through the policy apply it within seconds.
21373    ///
21374    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21375    pub async fn update_dns_policy(
21376        &self,
21377        mut request: UpdateDnsPolicyRequest,
21378    ) -> ::core::result::Result<
21379        ::origincloud_core::Operation<DnsPolicy>,
21380        ::origincloud_core::Error,
21381    > {
21382        if request.request_id.is_empty() {
21383            request.request_id = ::origincloud_core::new_request_id();
21384        }
21385        let p0 = ::origincloud_core::path_value(
21386            "dnsPolicy.name",
21387            request.dns_policy.as_ref().map_or("", |m| m.name.as_str()),
21388            "projects/*/regions/*/dnsPolicies/*",
21389        )?;
21390        let body = ::origincloud_core::json_body(
21391            request.dns_policy.as_ref().unwrap_or(&::core::default::Default::default()),
21392        )?;
21393        let query = ::origincloud_core::query(
21394            &request,
21395            &["dnsPolicy.name", "dnsPolicy"],
21396        )?;
21397        let call = ::origincloud_core::Request::new(
21398                ::origincloud_core::Method::PATCH,
21399                format!("/v1beta1/{p0}"),
21400            )
21401            .with_body(body)
21402            .with_query(query)
21403            .idempotent();
21404        let operation = self.service.call(call).await?;
21405        Ok(
21406            ::origincloud_core::Operation::new(
21407                self.service.clone(),
21408                operation,
21409                "origincloud.network.v1beta1.DnsPolicy",
21410            ),
21411        )
21412    }
21413    /// Deletes a DNS policy. Refused for the project's default policy and
21414    /// while a DNS policy association names it. The operation is done once
21415    /// the change is recorded.
21416    ///
21417    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21418    pub async fn delete_dns_policy(
21419        &self,
21420        mut request: DeleteDnsPolicyRequest,
21421    ) -> ::core::result::Result<
21422        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21423        ::origincloud_core::Error,
21424    > {
21425        if request.request_id.is_empty() {
21426            request.request_id = ::origincloud_core::new_request_id();
21427        }
21428        let p0 = ::origincloud_core::path_value(
21429            "name",
21430            &request.name,
21431            "projects/*/regions/*/dnsPolicies/*",
21432        )?;
21433        let query = ::origincloud_core::query(&request, &["name"])?;
21434        let call = ::origincloud_core::Request::new(
21435                ::origincloud_core::Method::DELETE,
21436                format!("/v1beta1/{p0}"),
21437            )
21438            .with_query(query)
21439            .idempotent();
21440        let operation = self.service.call(call).await?;
21441        Ok(
21442            ::origincloud_core::Operation::new(
21443                self.service.clone(),
21444                operation,
21445                "google.protobuf.Empty",
21446            ),
21447        )
21448    }
21449    /// Makes a DNS policy the project's default in its region, in place of
21450    /// the one before. Every VPC of the region without a DNS policy
21451    /// association relays through it from then on. Making the default the
21452    /// default changes nothing. The operation is done once the change is
21453    /// recorded; the resolvers apply it within seconds.
21454    ///
21455    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21456    pub async fn set_default_dns_policy(
21457        &self,
21458        mut request: SetDefaultDnsPolicyRequest,
21459    ) -> ::core::result::Result<
21460        ::origincloud_core::Operation<DnsPolicy>,
21461        ::origincloud_core::Error,
21462    > {
21463        if request.request_id.is_empty() {
21464            request.request_id = ::origincloud_core::new_request_id();
21465        }
21466        let p0 = ::origincloud_core::path_value(
21467            "name",
21468            &request.name,
21469            "projects/*/regions/*/dnsPolicies/*",
21470        )?;
21471        let body = ::origincloud_core::json_body(&request)?;
21472        let call = ::origincloud_core::Request::new(
21473                ::origincloud_core::Method::POST,
21474                format!("/v1beta1/{p0}:setDefault"),
21475            )
21476            .with_body(body)
21477            .idempotent();
21478        let operation = self.service.call(call).await?;
21479        Ok(
21480            ::origincloud_core::Operation::new(
21481                self.service.clone(),
21482                operation,
21483                "origincloud.network.v1beta1.DnsPolicy",
21484            ),
21485        )
21486    }
21487}
21488/// Calls `DnsPolicyAssociationService`.
21489///
21490/// DNS policy associations: which DNS policy a VPC's resolver relays through.
21491/// A VPC has at most one; without one, it relays through the project's
21492/// default DNS policy in its region (see the VPC's `dns_policy`). An
21493/// association's id is the id of the DNS policy it names, so a client that
21494/// knows the VPC and the policy names the association without listing. To
21495/// move a VPC to another policy, delete its association and create another.
21496#[derive(Clone, Debug)]
21497pub struct DnsPolicyAssociationClient {
21498    service: ::origincloud_core::Service,
21499}
21500impl DnsPolicyAssociationClient {
21501    /// Returns a client of `DnsPolicyAssociationService` that sends its calls through `client`.
21502    pub fn new(client: &::origincloud_core::Client) -> Self {
21503        Self {
21504            service: client.service("network", true),
21505        }
21506    }
21507    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21508    pub fn service(&self) -> &::origincloud_core::Service {
21509        &self.service
21510    }
21511    /// Returns a DNS policy association.
21512    pub async fn get_dns_policy_association(
21513        &self,
21514        request: GetDnsPolicyAssociationRequest,
21515    ) -> ::core::result::Result<DnsPolicyAssociation, ::origincloud_core::Error> {
21516        let p0 = ::origincloud_core::path_value(
21517            "name",
21518            &request.name,
21519            "projects/*/regions/*/vpcs/*/dnsPolicyAssociations/*",
21520        )?;
21521        let query = ::origincloud_core::query(&request, &["name"])?;
21522        let call = ::origincloud_core::Request::new(
21523                ::origincloud_core::Method::GET,
21524                format!("/v1beta1/{p0}"),
21525            )
21526            .with_query(query)
21527            .idempotent();
21528        self.service.call(call).await
21529    }
21530    /// Lists a VPC's DNS policy associations: none or one.
21531    pub async fn list_dns_policy_associations(
21532        &self,
21533        request: ListDnsPolicyAssociationsRequest,
21534    ) -> ::core::result::Result<
21535        ListDnsPolicyAssociationsResponse,
21536        ::origincloud_core::Error,
21537    > {
21538        let p0 = ::origincloud_core::path_value(
21539            "parent",
21540            &request.parent,
21541            "projects/*/regions/*/vpcs/*",
21542        )?;
21543        let query = ::origincloud_core::query(&request, &["parent"])?;
21544        let call = ::origincloud_core::Request::new(
21545                ::origincloud_core::Method::GET,
21546                format!("/v1beta1/{p0}/dnsPolicyAssociations"),
21547            )
21548            .with_query(query)
21549            .idempotent();
21550        self.service.call(call).await
21551    }
21552    /// Returns everything [`list_dns_policy_associations`](Self::list_dns_policy_associations) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
21553    pub fn all_dns_policy_associations(
21554        &self,
21555        request: ListDnsPolicyAssociationsRequest,
21556    ) -> ::origincloud_core::Pages<DnsPolicyAssociation> {
21557        let client = self.clone();
21558        ::origincloud_core::Pages::new(
21559            request,
21560            move |request: ListDnsPolicyAssociationsRequest| {
21561                let client = client.clone();
21562                async move {
21563                    let page = client.list_dns_policy_associations(request).await?;
21564                    Ok((page.dns_policy_associations, page.next_page_token))
21565                }
21566            },
21567            |
21568                request: &mut ListDnsPolicyAssociationsRequest,
21569                token: ::std::string::String|
21570            request.page_token = token,
21571        )
21572    }
21573    /// Associates a DNS policy with a VPC. Refused with `FAILED_PRECONDITION`
21574    /// when the VPC has a DNS policy association. The operation is done once
21575    /// the change is recorded; the VPC's resolver applies it within seconds.
21576    ///
21577    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicyAssociation`] once the change is done.
21578    pub async fn create_dns_policy_association(
21579        &self,
21580        mut request: CreateDnsPolicyAssociationRequest,
21581    ) -> ::core::result::Result<
21582        ::origincloud_core::Operation<DnsPolicyAssociation>,
21583        ::origincloud_core::Error,
21584    > {
21585        if request.request_id.is_empty() {
21586            request.request_id = ::origincloud_core::new_request_id();
21587        }
21588        let p0 = ::origincloud_core::path_value(
21589            "parent",
21590            &request.parent,
21591            "projects/*/regions/*/vpcs/*",
21592        )?;
21593        let body = ::origincloud_core::json_body(
21594            request
21595                .dns_policy_association
21596                .as_ref()
21597                .unwrap_or(&::core::default::Default::default()),
21598        )?;
21599        let query = ::origincloud_core::query(
21600            &request,
21601            &["parent", "dnsPolicyAssociation"],
21602        )?;
21603        let call = ::origincloud_core::Request::new(
21604                ::origincloud_core::Method::POST,
21605                format!("/v1beta1/{p0}/dnsPolicyAssociations"),
21606            )
21607            .with_body(body)
21608            .with_query(query)
21609            .idempotent();
21610        let operation = self.service.call(call).await?;
21611        Ok(
21612            ::origincloud_core::Operation::new(
21613                self.service.clone(),
21614                operation,
21615                "origincloud.network.v1beta1.DnsPolicyAssociation",
21616            ),
21617        )
21618    }
21619    /// Removes a VPC's DNS policy association: the VPC relays through the
21620    /// project's default DNS policy in its region again. The operation is done
21621    /// once the change is recorded; the VPC's resolver applies it within
21622    /// seconds.
21623    ///
21624    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21625    pub async fn delete_dns_policy_association(
21626        &self,
21627        mut request: DeleteDnsPolicyAssociationRequest,
21628    ) -> ::core::result::Result<
21629        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21630        ::origincloud_core::Error,
21631    > {
21632        if request.request_id.is_empty() {
21633            request.request_id = ::origincloud_core::new_request_id();
21634        }
21635        let p0 = ::origincloud_core::path_value(
21636            "name",
21637            &request.name,
21638            "projects/*/regions/*/vpcs/*/dnsPolicyAssociations/*",
21639        )?;
21640        let query = ::origincloud_core::query(&request, &["name"])?;
21641        let call = ::origincloud_core::Request::new(
21642                ::origincloud_core::Method::DELETE,
21643                format!("/v1beta1/{p0}"),
21644            )
21645            .with_query(query)
21646            .idempotent();
21647        let operation = self.service.call(call).await?;
21648        Ok(
21649            ::origincloud_core::Operation::new(
21650                self.service.clone(),
21651                operation,
21652                "google.protobuf.Empty",
21653            ),
21654        )
21655    }
21656}
21657/// Calls `FloatingIpService`.
21658///
21659/// Floating IPs: public IPv4 addresses of your own in one zone, kept until
21660/// released. Associated with a network interface
21661/// (`FloatingIpAssociationService`), the address reaches the interface's
21662/// private IPv4 address both ways (static 1:1 NAT). The interface's subnet
21663/// reaches, and is reached from, the internet over IPv4 only if its own
21664/// route table has the IPv4 default route (see the subnet's `route_table`).
21665#[derive(Clone, Debug)]
21666pub struct FloatingIpClient {
21667    service: ::origincloud_core::Service,
21668}
21669impl FloatingIpClient {
21670    /// Returns a client of `FloatingIpService` that sends its calls through `client`.
21671    pub fn new(client: &::origincloud_core::Client) -> Self {
21672        Self {
21673            service: client.service("network", true),
21674        }
21675    }
21676    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21677    pub fn service(&self) -> &::origincloud_core::Service {
21678        &self.service
21679    }
21680    /// Returns a floating IP.
21681    pub async fn get_floating_ip(
21682        &self,
21683        request: GetFloatingIpRequest,
21684    ) -> ::core::result::Result<FloatingIp, ::origincloud_core::Error> {
21685        let p0 = ::origincloud_core::path_value(
21686            "name",
21687            &request.name,
21688            "projects/*/zones/*/floatingIps/*",
21689        )?;
21690        let query = ::origincloud_core::query(&request, &["name"])?;
21691        let call = ::origincloud_core::Request::new(
21692                ::origincloud_core::Method::GET,
21693                format!("/v1beta1/{p0}"),
21694            )
21695            .with_query(query)
21696            .idempotent();
21697        self.service.call(call).await
21698    }
21699    /// Lists the floating IPs in a zone, oldest first, those the platform
21700    /// assigned at launch included.
21701    pub async fn list_floating_ips(
21702        &self,
21703        request: ListFloatingIpsRequest,
21704    ) -> ::core::result::Result<ListFloatingIpsResponse, ::origincloud_core::Error> {
21705        let p0 = ::origincloud_core::path_value(
21706            "parent",
21707            &request.parent,
21708            "projects/*/zones/*",
21709        )?;
21710        let query = ::origincloud_core::query(&request, &["parent"])?;
21711        let call = ::origincloud_core::Request::new(
21712                ::origincloud_core::Method::GET,
21713                format!("/v1beta1/{p0}/floatingIps"),
21714            )
21715            .with_query(query)
21716            .idempotent();
21717        self.service.call(call).await
21718    }
21719    /// Returns everything [`list_floating_ips`](Self::list_floating_ips) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
21720    pub fn all_floating_ips(
21721        &self,
21722        request: ListFloatingIpsRequest,
21723    ) -> ::origincloud_core::Pages<FloatingIp> {
21724        let client = self.clone();
21725        ::origincloud_core::Pages::new(
21726            request,
21727            move |request: ListFloatingIpsRequest| {
21728                let client = client.clone();
21729                async move {
21730                    let page = client.list_floating_ips(request).await?;
21731                    Ok((page.floating_ips, page.next_page_token))
21732                }
21733            },
21734            |request: &mut ListFloatingIpsRequest, token: ::std::string::String| {
21735                request.page_token = token;
21736            },
21737        )
21738    }
21739    /// Allocates a floating IP from the zone's public addresses, associated
21740    /// with nothing. The operation is done once the address is recorded as
21741    /// yours.
21742    ///
21743    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIp`] once the change is done.
21744    pub async fn create_floating_ip(
21745        &self,
21746        mut request: CreateFloatingIpRequest,
21747    ) -> ::core::result::Result<
21748        ::origincloud_core::Operation<FloatingIp>,
21749        ::origincloud_core::Error,
21750    > {
21751        if request.request_id.is_empty() {
21752            request.request_id = ::origincloud_core::new_request_id();
21753        }
21754        let p0 = ::origincloud_core::path_value(
21755            "parent",
21756            &request.parent,
21757            "projects/*/zones/*",
21758        )?;
21759        let body = ::origincloud_core::json_body(
21760            request.floating_ip.as_ref().unwrap_or(&::core::default::Default::default()),
21761        )?;
21762        let query = ::origincloud_core::query(&request, &["parent", "floatingIp"])?;
21763        let call = ::origincloud_core::Request::new(
21764                ::origincloud_core::Method::POST,
21765                format!("/v1beta1/{p0}/floatingIps"),
21766            )
21767            .with_body(body)
21768            .with_query(query)
21769            .idempotent();
21770        let operation = self.service.call(call).await?;
21771        Ok(
21772            ::origincloud_core::Operation::new(
21773                self.service.clone(),
21774                operation,
21775                "origincloud.network.v1beta1.FloatingIp",
21776            ),
21777        )
21778    }
21779    /// Changes a floating IP's tags. The operation is done once the change is
21780    /// recorded.
21781    ///
21782    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIp`] once the change is done.
21783    pub async fn update_floating_ip(
21784        &self,
21785        mut request: UpdateFloatingIpRequest,
21786    ) -> ::core::result::Result<
21787        ::origincloud_core::Operation<FloatingIp>,
21788        ::origincloud_core::Error,
21789    > {
21790        if request.request_id.is_empty() {
21791            request.request_id = ::origincloud_core::new_request_id();
21792        }
21793        let p0 = ::origincloud_core::path_value(
21794            "floatingIp.name",
21795            request.floating_ip.as_ref().map_or("", |m| m.name.as_str()),
21796            "projects/*/zones/*/floatingIps/*",
21797        )?;
21798        let body = ::origincloud_core::json_body(
21799            request.floating_ip.as_ref().unwrap_or(&::core::default::Default::default()),
21800        )?;
21801        let query = ::origincloud_core::query(
21802            &request,
21803            &["floatingIp.name", "floatingIp"],
21804        )?;
21805        let call = ::origincloud_core::Request::new(
21806                ::origincloud_core::Method::PATCH,
21807                format!("/v1beta1/{p0}"),
21808            )
21809            .with_body(body)
21810            .with_query(query)
21811            .idempotent();
21812        let operation = self.service.call(call).await?;
21813        Ok(
21814            ::origincloud_core::Operation::new(
21815                self.service.clone(),
21816                operation,
21817                "origincloud.network.v1beta1.FloatingIp",
21818            ),
21819        )
21820    }
21821    /// Releases a floating IP: its address goes back to the zone. Refused
21822    /// while it is associated with a network interface or a NAT gateway uses
21823    /// it. The operation is done once the change is recorded.
21824    ///
21825    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21826    pub async fn delete_floating_ip(
21827        &self,
21828        mut request: DeleteFloatingIpRequest,
21829    ) -> ::core::result::Result<
21830        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21831        ::origincloud_core::Error,
21832    > {
21833        if request.request_id.is_empty() {
21834            request.request_id = ::origincloud_core::new_request_id();
21835        }
21836        let p0 = ::origincloud_core::path_value(
21837            "name",
21838            &request.name,
21839            "projects/*/zones/*/floatingIps/*",
21840        )?;
21841        let query = ::origincloud_core::query(&request, &["name"])?;
21842        let call = ::origincloud_core::Request::new(
21843                ::origincloud_core::Method::DELETE,
21844                format!("/v1beta1/{p0}"),
21845            )
21846            .with_query(query)
21847            .idempotent();
21848        let operation = self.service.call(call).await?;
21849        Ok(
21850            ::origincloud_core::Operation::new(
21851                self.service.clone(),
21852                operation,
21853                "google.protobuf.Empty",
21854            ),
21855        )
21856    }
21857}
21858/// Calls `FloatingIpAssociationService`.
21859///
21860/// Floating IP associations: which network interface a floating IP reaches. A
21861/// floating IP has at most one (see the floating IP's `network_interface`).
21862/// An association's id is the id of the network interface it names, so a
21863/// client that knows the floating IP and the interface names the association
21864/// without listing. To move an address to another interface, delete its
21865/// association and create another.
21866#[derive(Clone, Debug)]
21867pub struct FloatingIpAssociationClient {
21868    service: ::origincloud_core::Service,
21869}
21870impl FloatingIpAssociationClient {
21871    /// Returns a client of `FloatingIpAssociationService` that sends its calls through `client`.
21872    pub fn new(client: &::origincloud_core::Client) -> Self {
21873        Self {
21874            service: client.service("network", true),
21875        }
21876    }
21877    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21878    pub fn service(&self) -> &::origincloud_core::Service {
21879        &self.service
21880    }
21881    /// Returns a floating IP association.
21882    pub async fn get_floating_ip_association(
21883        &self,
21884        request: GetFloatingIpAssociationRequest,
21885    ) -> ::core::result::Result<FloatingIpAssociation, ::origincloud_core::Error> {
21886        let p0 = ::origincloud_core::path_value(
21887            "name",
21888            &request.name,
21889            "projects/*/zones/*/floatingIps/*/associations/*",
21890        )?;
21891        let query = ::origincloud_core::query(&request, &["name"])?;
21892        let call = ::origincloud_core::Request::new(
21893                ::origincloud_core::Method::GET,
21894                format!("/v1beta1/{p0}"),
21895            )
21896            .with_query(query)
21897            .idempotent();
21898        self.service.call(call).await
21899    }
21900    /// Lists a floating IP's associations: none or one.
21901    pub async fn list_floating_ip_associations(
21902        &self,
21903        request: ListFloatingIpAssociationsRequest,
21904    ) -> ::core::result::Result<
21905        ListFloatingIpAssociationsResponse,
21906        ::origincloud_core::Error,
21907    > {
21908        let p0 = ::origincloud_core::path_value(
21909            "parent",
21910            &request.parent,
21911            "projects/*/zones/*/floatingIps/*",
21912        )?;
21913        let query = ::origincloud_core::query(&request, &["parent"])?;
21914        let call = ::origincloud_core::Request::new(
21915                ::origincloud_core::Method::GET,
21916                format!("/v1beta1/{p0}/associations"),
21917            )
21918            .with_query(query)
21919            .idempotent();
21920        self.service.call(call).await
21921    }
21922    /// Returns everything [`list_floating_ip_associations`](Self::list_floating_ip_associations) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
21923    pub fn all_floating_ip_associations(
21924        &self,
21925        request: ListFloatingIpAssociationsRequest,
21926    ) -> ::origincloud_core::Pages<FloatingIpAssociation> {
21927        let client = self.clone();
21928        ::origincloud_core::Pages::new(
21929            request,
21930            move |request: ListFloatingIpAssociationsRequest| {
21931                let client = client.clone();
21932                async move {
21933                    let page = client.list_floating_ip_associations(request).await?;
21934                    Ok((page.floating_ip_associations, page.next_page_token))
21935                }
21936            },
21937            |
21938                request: &mut ListFloatingIpAssociationsRequest,
21939                token: ::std::string::String|
21940            request.page_token = token,
21941        )
21942    }
21943    /// Associates a floating IP with a network interface. Refused with
21944    /// `FAILED_PRECONDITION` when the floating IP has an association, and
21945    /// while the address backs a NAT gateway. The operation is done once the
21946    /// change is recorded; the network applies it within seconds.
21947    ///
21948    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIpAssociation`] once the change is done.
21949    pub async fn create_floating_ip_association(
21950        &self,
21951        mut request: CreateFloatingIpAssociationRequest,
21952    ) -> ::core::result::Result<
21953        ::origincloud_core::Operation<FloatingIpAssociation>,
21954        ::origincloud_core::Error,
21955    > {
21956        if request.request_id.is_empty() {
21957            request.request_id = ::origincloud_core::new_request_id();
21958        }
21959        let p0 = ::origincloud_core::path_value(
21960            "parent",
21961            &request.parent,
21962            "projects/*/zones/*/floatingIps/*",
21963        )?;
21964        let body = ::origincloud_core::json_body(
21965            request
21966                .floating_ip_association
21967                .as_ref()
21968                .unwrap_or(&::core::default::Default::default()),
21969        )?;
21970        let query = ::origincloud_core::query(
21971            &request,
21972            &["parent", "floatingIpAssociation"],
21973        )?;
21974        let call = ::origincloud_core::Request::new(
21975                ::origincloud_core::Method::POST,
21976                format!("/v1beta1/{p0}/associations"),
21977            )
21978            .with_body(body)
21979            .with_query(query)
21980            .idempotent();
21981        let operation = self.service.call(call).await?;
21982        Ok(
21983            ::origincloud_core::Operation::new(
21984                self.service.clone(),
21985                operation,
21986                "origincloud.network.v1beta1.FloatingIpAssociation",
21987            ),
21988        )
21989    }
21990    /// Removes a floating IP's association: the address reaches nothing, and
21991    /// stays allocated. Refused for an address the platform assigned at
21992    /// launch (`auto_assigned`), which is released with its network interface.
21993    /// The operation is done once the change is recorded; the network applies
21994    /// it within seconds.
21995    ///
21996    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21997    pub async fn delete_floating_ip_association(
21998        &self,
21999        mut request: DeleteFloatingIpAssociationRequest,
22000    ) -> ::core::result::Result<
22001        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22002        ::origincloud_core::Error,
22003    > {
22004        if request.request_id.is_empty() {
22005            request.request_id = ::origincloud_core::new_request_id();
22006        }
22007        let p0 = ::origincloud_core::path_value(
22008            "name",
22009            &request.name,
22010            "projects/*/zones/*/floatingIps/*/associations/*",
22011        )?;
22012        let query = ::origincloud_core::query(&request, &["name"])?;
22013        let call = ::origincloud_core::Request::new(
22014                ::origincloud_core::Method::DELETE,
22015                format!("/v1beta1/{p0}"),
22016            )
22017            .with_query(query)
22018            .idempotent();
22019        let operation = self.service.call(call).await?;
22020        Ok(
22021            ::origincloud_core::Operation::new(
22022                self.service.clone(),
22023                operation,
22024                "google.protobuf.Empty",
22025            ),
22026        )
22027    }
22028}
22029/// Calls `InternetGatewayService`.
22030///
22031/// Internet gateways: a VPC's way to and from the internet, for its
22032/// instances' floating IPs and IPv6 addresses and for its NAT gateways. A VPC
22033/// has at most one, and a subnet reaches it through a route that targets it:
22034/// a subnet reaches, and is reached from, the internet for an address family
22035/// only if its own route table has that family's default route.
22036#[derive(Clone, Debug)]
22037pub struct InternetGatewayClient {
22038    service: ::origincloud_core::Service,
22039}
22040impl InternetGatewayClient {
22041    /// Returns a client of `InternetGatewayService` that sends its calls through `client`.
22042    pub fn new(client: &::origincloud_core::Client) -> Self {
22043        Self {
22044            service: client.service("network", true),
22045        }
22046    }
22047    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22048    pub fn service(&self) -> &::origincloud_core::Service {
22049        &self.service
22050    }
22051    /// Returns an internet gateway.
22052    pub async fn get_internet_gateway(
22053        &self,
22054        request: GetInternetGatewayRequest,
22055    ) -> ::core::result::Result<InternetGateway, ::origincloud_core::Error> {
22056        let p0 = ::origincloud_core::path_value(
22057            "name",
22058            &request.name,
22059            "projects/*/regions/*/internetGateways/*",
22060        )?;
22061        let query = ::origincloud_core::query(&request, &["name"])?;
22062        let call = ::origincloud_core::Request::new(
22063                ::origincloud_core::Method::GET,
22064                format!("/v1beta1/{p0}"),
22065            )
22066            .with_query(query)
22067            .idempotent();
22068        self.service.call(call).await
22069    }
22070    /// Lists the internet gateways in a region, oldest first.
22071    pub async fn list_internet_gateways(
22072        &self,
22073        request: ListInternetGatewaysRequest,
22074    ) -> ::core::result::Result<
22075        ListInternetGatewaysResponse,
22076        ::origincloud_core::Error,
22077    > {
22078        let p0 = ::origincloud_core::path_value(
22079            "parent",
22080            &request.parent,
22081            "projects/*/regions/*",
22082        )?;
22083        let query = ::origincloud_core::query(&request, &["parent"])?;
22084        let call = ::origincloud_core::Request::new(
22085                ::origincloud_core::Method::GET,
22086                format!("/v1beta1/{p0}/internetGateways"),
22087            )
22088            .with_query(query)
22089            .idempotent();
22090        self.service.call(call).await
22091    }
22092    /// Returns everything [`list_internet_gateways`](Self::list_internet_gateways) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
22093    pub fn all_internet_gateways(
22094        &self,
22095        request: ListInternetGatewaysRequest,
22096    ) -> ::origincloud_core::Pages<InternetGateway> {
22097        let client = self.clone();
22098        ::origincloud_core::Pages::new(
22099            request,
22100            move |request: ListInternetGatewaysRequest| {
22101                let client = client.clone();
22102                async move {
22103                    let page = client.list_internet_gateways(request).await?;
22104                    Ok((page.internet_gateways, page.next_page_token))
22105                }
22106            },
22107            |request: &mut ListInternetGatewaysRequest, token: ::std::string::String| {
22108                request.page_token = token;
22109            },
22110        )
22111    }
22112    /// Creates a VPC's internet gateway. Refused with `FAILED_PRECONDITION`
22113    /// when the VPC has one. The operation is done once the change is recorded;
22114    /// the network applies it within seconds.
22115    ///
22116    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`InternetGateway`] once the change is done.
22117    pub async fn create_internet_gateway(
22118        &self,
22119        mut request: CreateInternetGatewayRequest,
22120    ) -> ::core::result::Result<
22121        ::origincloud_core::Operation<InternetGateway>,
22122        ::origincloud_core::Error,
22123    > {
22124        if request.request_id.is_empty() {
22125            request.request_id = ::origincloud_core::new_request_id();
22126        }
22127        let p0 = ::origincloud_core::path_value(
22128            "parent",
22129            &request.parent,
22130            "projects/*/regions/*",
22131        )?;
22132        let body = ::origincloud_core::json_body(
22133            request
22134                .internet_gateway
22135                .as_ref()
22136                .unwrap_or(&::core::default::Default::default()),
22137        )?;
22138        let query = ::origincloud_core::query(&request, &["parent", "internetGateway"])?;
22139        let call = ::origincloud_core::Request::new(
22140                ::origincloud_core::Method::POST,
22141                format!("/v1beta1/{p0}/internetGateways"),
22142            )
22143            .with_body(body)
22144            .with_query(query)
22145            .idempotent();
22146        let operation = self.service.call(call).await?;
22147        Ok(
22148            ::origincloud_core::Operation::new(
22149                self.service.clone(),
22150                operation,
22151                "origincloud.network.v1beta1.InternetGateway",
22152            ),
22153        )
22154    }
22155    /// Changes an internet gateway's tags. The operation is done once the
22156    /// change is recorded.
22157    ///
22158    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`InternetGateway`] once the change is done.
22159    pub async fn update_internet_gateway(
22160        &self,
22161        mut request: UpdateInternetGatewayRequest,
22162    ) -> ::core::result::Result<
22163        ::origincloud_core::Operation<InternetGateway>,
22164        ::origincloud_core::Error,
22165    > {
22166        if request.request_id.is_empty() {
22167            request.request_id = ::origincloud_core::new_request_id();
22168        }
22169        let p0 = ::origincloud_core::path_value(
22170            "internetGateway.name",
22171            request.internet_gateway.as_ref().map_or("", |m| m.name.as_str()),
22172            "projects/*/regions/*/internetGateways/*",
22173        )?;
22174        let body = ::origincloud_core::json_body(
22175            request
22176                .internet_gateway
22177                .as_ref()
22178                .unwrap_or(&::core::default::Default::default()),
22179        )?;
22180        let query = ::origincloud_core::query(
22181            &request,
22182            &["internetGateway.name", "internetGateway"],
22183        )?;
22184        let call = ::origincloud_core::Request::new(
22185                ::origincloud_core::Method::PATCH,
22186                format!("/v1beta1/{p0}"),
22187            )
22188            .with_body(body)
22189            .with_query(query)
22190            .idempotent();
22191        let operation = self.service.call(call).await?;
22192        Ok(
22193            ::origincloud_core::Operation::new(
22194                self.service.clone(),
22195                operation,
22196                "origincloud.network.v1beta1.InternetGateway",
22197            ),
22198        )
22199    }
22200    /// Deletes an internet gateway, which cuts the VPC off from the internet.
22201    /// Refused while a route targets it. The operation is done once the
22202    /// change is recorded; the network applies it within seconds.
22203    ///
22204    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22205    pub async fn delete_internet_gateway(
22206        &self,
22207        mut request: DeleteInternetGatewayRequest,
22208    ) -> ::core::result::Result<
22209        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22210        ::origincloud_core::Error,
22211    > {
22212        if request.request_id.is_empty() {
22213            request.request_id = ::origincloud_core::new_request_id();
22214        }
22215        let p0 = ::origincloud_core::path_value(
22216            "name",
22217            &request.name,
22218            "projects/*/regions/*/internetGateways/*",
22219        )?;
22220        let query = ::origincloud_core::query(&request, &["name"])?;
22221        let call = ::origincloud_core::Request::new(
22222                ::origincloud_core::Method::DELETE,
22223                format!("/v1beta1/{p0}"),
22224            )
22225            .with_query(query)
22226            .idempotent();
22227        let operation = self.service.call(call).await?;
22228        Ok(
22229            ::origincloud_core::Operation::new(
22230                self.service.clone(),
22231                operation,
22232                "google.protobuf.Empty",
22233            ),
22234        )
22235    }
22236}
22237/// Calls `NatGatewayService`.
22238///
22239/// NAT gateways: shared IPv4 egress for instances without a floating IP of
22240/// their own. Instances in a subnet whose route table sends the IPv4 default
22241/// route to a NAT gateway reach the internet as the gateway's floating IP,
22242/// and can't be reached from it.
22243#[derive(Clone, Debug)]
22244pub struct NatGatewayClient {
22245    service: ::origincloud_core::Service,
22246}
22247impl NatGatewayClient {
22248    /// Returns a client of `NatGatewayService` that sends its calls through `client`.
22249    pub fn new(client: &::origincloud_core::Client) -> Self {
22250        Self {
22251            service: client.service("network", true),
22252        }
22253    }
22254    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22255    pub fn service(&self) -> &::origincloud_core::Service {
22256        &self.service
22257    }
22258    /// Returns a NAT gateway.
22259    pub async fn get_nat_gateway(
22260        &self,
22261        request: GetNatGatewayRequest,
22262    ) -> ::core::result::Result<NatGateway, ::origincloud_core::Error> {
22263        let p0 = ::origincloud_core::path_value(
22264            "name",
22265            &request.name,
22266            "projects/*/zones/*/natGateways/*",
22267        )?;
22268        let query = ::origincloud_core::query(&request, &["name"])?;
22269        let call = ::origincloud_core::Request::new(
22270                ::origincloud_core::Method::GET,
22271                format!("/v1beta1/{p0}"),
22272            )
22273            .with_query(query)
22274            .idempotent();
22275        self.service.call(call).await
22276    }
22277    /// Lists the NAT gateways in a zone, oldest first.
22278    pub async fn list_nat_gateways(
22279        &self,
22280        request: ListNatGatewaysRequest,
22281    ) -> ::core::result::Result<ListNatGatewaysResponse, ::origincloud_core::Error> {
22282        let p0 = ::origincloud_core::path_value(
22283            "parent",
22284            &request.parent,
22285            "projects/*/zones/*",
22286        )?;
22287        let query = ::origincloud_core::query(&request, &["parent"])?;
22288        let call = ::origincloud_core::Request::new(
22289                ::origincloud_core::Method::GET,
22290                format!("/v1beta1/{p0}/natGateways"),
22291            )
22292            .with_query(query)
22293            .idempotent();
22294        self.service.call(call).await
22295    }
22296    /// Returns everything [`list_nat_gateways`](Self::list_nat_gateways) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
22297    pub fn all_nat_gateways(
22298        &self,
22299        request: ListNatGatewaysRequest,
22300    ) -> ::origincloud_core::Pages<NatGateway> {
22301        let client = self.clone();
22302        ::origincloud_core::Pages::new(
22303            request,
22304            move |request: ListNatGatewaysRequest| {
22305                let client = client.clone();
22306                async move {
22307                    let page = client.list_nat_gateways(request).await?;
22308                    Ok((page.nat_gateways, page.next_page_token))
22309                }
22310            },
22311            |request: &mut ListNatGatewaysRequest, token: ::std::string::String| {
22312                request.page_token = token;
22313            },
22314        )
22315    }
22316    /// Creates a NAT gateway in a public subnet, one whose route table sends
22317    /// the IPv4 default route to an internet gateway, with a floating IP that
22318    /// has no association and backs no other NAT gateway. The operation is
22319    /// done once the change is recorded; the network applies it within
22320    /// seconds.
22321    ///
22322    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NatGateway`] once the change is done.
22323    pub async fn create_nat_gateway(
22324        &self,
22325        mut request: CreateNatGatewayRequest,
22326    ) -> ::core::result::Result<
22327        ::origincloud_core::Operation<NatGateway>,
22328        ::origincloud_core::Error,
22329    > {
22330        if request.request_id.is_empty() {
22331            request.request_id = ::origincloud_core::new_request_id();
22332        }
22333        let p0 = ::origincloud_core::path_value(
22334            "parent",
22335            &request.parent,
22336            "projects/*/zones/*",
22337        )?;
22338        let body = ::origincloud_core::json_body(
22339            request.nat_gateway.as_ref().unwrap_or(&::core::default::Default::default()),
22340        )?;
22341        let query = ::origincloud_core::query(&request, &["parent", "natGateway"])?;
22342        let call = ::origincloud_core::Request::new(
22343                ::origincloud_core::Method::POST,
22344                format!("/v1beta1/{p0}/natGateways"),
22345            )
22346            .with_body(body)
22347            .with_query(query)
22348            .idempotent();
22349        let operation = self.service.call(call).await?;
22350        Ok(
22351            ::origincloud_core::Operation::new(
22352                self.service.clone(),
22353                operation,
22354                "origincloud.network.v1beta1.NatGateway",
22355            ),
22356        )
22357    }
22358    /// Changes a NAT gateway's tags. The operation is done once the change is
22359    /// recorded.
22360    ///
22361    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NatGateway`] once the change is done.
22362    pub async fn update_nat_gateway(
22363        &self,
22364        mut request: UpdateNatGatewayRequest,
22365    ) -> ::core::result::Result<
22366        ::origincloud_core::Operation<NatGateway>,
22367        ::origincloud_core::Error,
22368    > {
22369        if request.request_id.is_empty() {
22370            request.request_id = ::origincloud_core::new_request_id();
22371        }
22372        let p0 = ::origincloud_core::path_value(
22373            "natGateway.name",
22374            request.nat_gateway.as_ref().map_or("", |m| m.name.as_str()),
22375            "projects/*/zones/*/natGateways/*",
22376        )?;
22377        let body = ::origincloud_core::json_body(
22378            request.nat_gateway.as_ref().unwrap_or(&::core::default::Default::default()),
22379        )?;
22380        let query = ::origincloud_core::query(
22381            &request,
22382            &["natGateway.name", "natGateway"],
22383        )?;
22384        let call = ::origincloud_core::Request::new(
22385                ::origincloud_core::Method::PATCH,
22386                format!("/v1beta1/{p0}"),
22387            )
22388            .with_body(body)
22389            .with_query(query)
22390            .idempotent();
22391        let operation = self.service.call(call).await?;
22392        Ok(
22393            ::origincloud_core::Operation::new(
22394                self.service.clone(),
22395                operation,
22396                "origincloud.network.v1beta1.NatGateway",
22397            ),
22398        )
22399    }
22400    /// Deletes a NAT gateway. Its floating IP stays allocated. Refused while
22401    /// a route targets it. The operation is done once the change is recorded;
22402    /// the network applies it within seconds.
22403    ///
22404    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22405    pub async fn delete_nat_gateway(
22406        &self,
22407        mut request: DeleteNatGatewayRequest,
22408    ) -> ::core::result::Result<
22409        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22410        ::origincloud_core::Error,
22411    > {
22412        if request.request_id.is_empty() {
22413            request.request_id = ::origincloud_core::new_request_id();
22414        }
22415        let p0 = ::origincloud_core::path_value(
22416            "name",
22417            &request.name,
22418            "projects/*/zones/*/natGateways/*",
22419        )?;
22420        let query = ::origincloud_core::query(&request, &["name"])?;
22421        let call = ::origincloud_core::Request::new(
22422                ::origincloud_core::Method::DELETE,
22423                format!("/v1beta1/{p0}"),
22424            )
22425            .with_query(query)
22426            .idempotent();
22427        let operation = self.service.call(call).await?;
22428        Ok(
22429            ::origincloud_core::Operation::new(
22430                self.service.clone(),
22431                operation,
22432                "google.protobuf.Empty",
22433            ),
22434        )
22435    }
22436}
22437/// Calls `NetworkInterfaceService`.
22438///
22439/// Network interfaces: private IPv4 and IPv6 addresses in a subnet, with the
22440/// security groups that filter their traffic. Launching an instance attaches
22441/// existing interfaces, which are created here first; an interface starts
22442/// closed until security group associations open it.
22443#[derive(Clone, Debug)]
22444pub struct NetworkInterfaceClient {
22445    service: ::origincloud_core::Service,
22446}
22447impl NetworkInterfaceClient {
22448    /// Returns a client of `NetworkInterfaceService` that sends its calls through `client`.
22449    pub fn new(client: &::origincloud_core::Client) -> Self {
22450        Self {
22451            service: client.service("network", true),
22452        }
22453    }
22454    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22455    pub fn service(&self) -> &::origincloud_core::Service {
22456        &self.service
22457    }
22458    /// Returns a network interface.
22459    pub async fn get_network_interface(
22460        &self,
22461        request: GetNetworkInterfaceRequest,
22462    ) -> ::core::result::Result<NetworkInterface, ::origincloud_core::Error> {
22463        let p0 = ::origincloud_core::path_value(
22464            "name",
22465            &request.name,
22466            "projects/*/zones/*/networkInterfaces/*",
22467        )?;
22468        let query = ::origincloud_core::query(&request, &["name"])?;
22469        let call = ::origincloud_core::Request::new(
22470                ::origincloud_core::Method::GET,
22471                format!("/v1beta1/{p0}"),
22472            )
22473            .with_query(query)
22474            .idempotent();
22475        self.service.call(call).await
22476    }
22477    /// Lists the network interfaces in a zone, oldest first.
22478    pub async fn list_network_interfaces(
22479        &self,
22480        request: ListNetworkInterfacesRequest,
22481    ) -> ::core::result::Result<
22482        ListNetworkInterfacesResponse,
22483        ::origincloud_core::Error,
22484    > {
22485        let p0 = ::origincloud_core::path_value(
22486            "parent",
22487            &request.parent,
22488            "projects/*/zones/*",
22489        )?;
22490        let query = ::origincloud_core::query(&request, &["parent"])?;
22491        let call = ::origincloud_core::Request::new(
22492                ::origincloud_core::Method::GET,
22493                format!("/v1beta1/{p0}/networkInterfaces"),
22494            )
22495            .with_query(query)
22496            .idempotent();
22497        self.service.call(call).await
22498    }
22499    /// Returns everything [`list_network_interfaces`](Self::list_network_interfaces) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
22500    pub fn all_network_interfaces(
22501        &self,
22502        request: ListNetworkInterfacesRequest,
22503    ) -> ::origincloud_core::Pages<NetworkInterface> {
22504        let client = self.clone();
22505        ::origincloud_core::Pages::new(
22506            request,
22507            move |request: ListNetworkInterfacesRequest| {
22508                let client = client.clone();
22509                async move {
22510                    let page = client.list_network_interfaces(request).await?;
22511                    Ok((page.network_interfaces, page.next_page_token))
22512                }
22513            },
22514            |request: &mut ListNetworkInterfacesRequest, token: ::std::string::String| {
22515                request.page_token = token;
22516            },
22517        )
22518    }
22519    /// Creates an unattached network interface with the next free addresses
22520    /// of its subnet and no security group: it admits and sends nothing until
22521    /// a security group association opens it. The operation is done once the
22522    /// change is recorded; the network applies it within seconds.
22523    ///
22524    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NetworkInterface`] once the change is done.
22525    pub async fn create_network_interface(
22526        &self,
22527        mut request: CreateNetworkInterfaceRequest,
22528    ) -> ::core::result::Result<
22529        ::origincloud_core::Operation<NetworkInterface>,
22530        ::origincloud_core::Error,
22531    > {
22532        if request.request_id.is_empty() {
22533            request.request_id = ::origincloud_core::new_request_id();
22534        }
22535        let p0 = ::origincloud_core::path_value(
22536            "parent",
22537            &request.parent,
22538            "projects/*/zones/*",
22539        )?;
22540        let body = ::origincloud_core::json_body(
22541            request
22542                .network_interface
22543                .as_ref()
22544                .unwrap_or(&::core::default::Default::default()),
22545        )?;
22546        let query = ::origincloud_core::query(
22547            &request,
22548            &["parent", "networkInterface"],
22549        )?;
22550        let call = ::origincloud_core::Request::new(
22551                ::origincloud_core::Method::POST,
22552                format!("/v1beta1/{p0}/networkInterfaces"),
22553            )
22554            .with_body(body)
22555            .with_query(query)
22556            .idempotent();
22557        let operation = self.service.call(call).await?;
22558        Ok(
22559            ::origincloud_core::Operation::new(
22560                self.service.clone(),
22561                operation,
22562                "origincloud.network.v1beta1.NetworkInterface",
22563            ),
22564        )
22565    }
22566    /// Changes a network interface's source-address check or tags, also while
22567    /// it is attached. The operation is done once the change is recorded; the
22568    /// network applies it within seconds.
22569    ///
22570    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NetworkInterface`] once the change is done.
22571    pub async fn update_network_interface(
22572        &self,
22573        mut request: UpdateNetworkInterfaceRequest,
22574    ) -> ::core::result::Result<
22575        ::origincloud_core::Operation<NetworkInterface>,
22576        ::origincloud_core::Error,
22577    > {
22578        if request.request_id.is_empty() {
22579            request.request_id = ::origincloud_core::new_request_id();
22580        }
22581        let p0 = ::origincloud_core::path_value(
22582            "networkInterface.name",
22583            request.network_interface.as_ref().map_or("", |m| m.name.as_str()),
22584            "projects/*/zones/*/networkInterfaces/*",
22585        )?;
22586        let body = ::origincloud_core::json_body(
22587            request
22588                .network_interface
22589                .as_ref()
22590                .unwrap_or(&::core::default::Default::default()),
22591        )?;
22592        let query = ::origincloud_core::query(
22593            &request,
22594            &["networkInterface.name", "networkInterface"],
22595        )?;
22596        let call = ::origincloud_core::Request::new(
22597                ::origincloud_core::Method::PATCH,
22598                format!("/v1beta1/{p0}"),
22599            )
22600            .with_body(body)
22601            .with_query(query)
22602            .idempotent();
22603        let operation = self.service.call(call).await?;
22604        Ok(
22605            ::origincloud_core::Operation::new(
22606                self.service.clone(),
22607                operation,
22608                "origincloud.network.v1beta1.NetworkInterface",
22609            ),
22610        )
22611    }
22612    /// Deletes a network interface with its security group associations.
22613    /// Refused while it is attached to an instance or a floating IP is
22614    /// associated with it. The operation is done once the change is
22615    /// recorded; the network applies it within seconds.
22616    ///
22617    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22618    pub async fn delete_network_interface(
22619        &self,
22620        mut request: DeleteNetworkInterfaceRequest,
22621    ) -> ::core::result::Result<
22622        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22623        ::origincloud_core::Error,
22624    > {
22625        if request.request_id.is_empty() {
22626            request.request_id = ::origincloud_core::new_request_id();
22627        }
22628        let p0 = ::origincloud_core::path_value(
22629            "name",
22630            &request.name,
22631            "projects/*/zones/*/networkInterfaces/*",
22632        )?;
22633        let query = ::origincloud_core::query(&request, &["name"])?;
22634        let call = ::origincloud_core::Request::new(
22635                ::origincloud_core::Method::DELETE,
22636                format!("/v1beta1/{p0}"),
22637            )
22638            .with_query(query)
22639            .idempotent();
22640        let operation = self.service.call(call).await?;
22641        Ok(
22642            ::origincloud_core::Operation::new(
22643                self.service.clone(),
22644                operation,
22645                "google.protobuf.Empty",
22646            ),
22647        )
22648    }
22649}
22650/// Calls `RouteService`.
22651///
22652/// Routes: where a route table sends traffic to a destination outside the
22653/// VPC. A route is immutable: it is created and deleted, never changed, so to
22654/// change one, delete it and create its replacement. A table has at most one
22655/// route per destination, so the replacement can only be created once the old
22656/// route is deleted: between the two, the table has no route to that
22657/// destination.
22658#[derive(Clone, Debug)]
22659pub struct RouteClient {
22660    service: ::origincloud_core::Service,
22661}
22662impl RouteClient {
22663    /// Returns a client of `RouteService` that sends its calls through `client`.
22664    pub fn new(client: &::origincloud_core::Client) -> Self {
22665        Self {
22666            service: client.service("network", true),
22667        }
22668    }
22669    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22670    pub fn service(&self) -> &::origincloud_core::Service {
22671        &self.service
22672    }
22673    /// Returns a route.
22674    pub async fn get_route(
22675        &self,
22676        request: GetRouteRequest,
22677    ) -> ::core::result::Result<Route, ::origincloud_core::Error> {
22678        let p0 = ::origincloud_core::path_value(
22679            "name",
22680            &request.name,
22681            "projects/*/regions/*/routeTables/*/routes/*",
22682        )?;
22683        let query = ::origincloud_core::query(&request, &["name"])?;
22684        let call = ::origincloud_core::Request::new(
22685                ::origincloud_core::Method::GET,
22686                format!("/v1beta1/{p0}"),
22687            )
22688            .with_query(query)
22689            .idempotent();
22690        self.service.call(call).await
22691    }
22692    /// Lists a route table's routes, oldest first. Its local routes aren't
22693    /// listed: they are the table's `local_routes`.
22694    pub async fn list_routes(
22695        &self,
22696        request: ListRoutesRequest,
22697    ) -> ::core::result::Result<ListRoutesResponse, ::origincloud_core::Error> {
22698        let p0 = ::origincloud_core::path_value(
22699            "parent",
22700            &request.parent,
22701            "projects/*/regions/*/routeTables/*",
22702        )?;
22703        let query = ::origincloud_core::query(&request, &["parent"])?;
22704        let call = ::origincloud_core::Request::new(
22705                ::origincloud_core::Method::GET,
22706                format!("/v1beta1/{p0}/routes"),
22707            )
22708            .with_query(query)
22709            .idempotent();
22710        self.service.call(call).await
22711    }
22712    /// Returns everything [`list_routes`](Self::list_routes) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
22713    pub fn all_routes(
22714        &self,
22715        request: ListRoutesRequest,
22716    ) -> ::origincloud_core::Pages<Route> {
22717        let client = self.clone();
22718        ::origincloud_core::Pages::new(
22719            request,
22720            move |request: ListRoutesRequest| {
22721                let client = client.clone();
22722                async move {
22723                    let page = client.list_routes(request).await?;
22724                    Ok((page.routes, page.next_page_token))
22725                }
22726            },
22727            |request: &mut ListRoutesRequest, token: ::std::string::String| {
22728                request.page_token = token;
22729            },
22730        )
22731    }
22732    /// Adds a route to a route table. Refused with `FAILED_PRECONDITION` when
22733    /// the table has a route to the same destination. The operation is done
22734    /// once the change is recorded; the network applies it within seconds.
22735    ///
22736    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Route`] once the change is done.
22737    pub async fn create_route(
22738        &self,
22739        mut request: CreateRouteRequest,
22740    ) -> ::core::result::Result<
22741        ::origincloud_core::Operation<Route>,
22742        ::origincloud_core::Error,
22743    > {
22744        if request.request_id.is_empty() {
22745            request.request_id = ::origincloud_core::new_request_id();
22746        }
22747        let p0 = ::origincloud_core::path_value(
22748            "parent",
22749            &request.parent,
22750            "projects/*/regions/*/routeTables/*",
22751        )?;
22752        let body = ::origincloud_core::json_body(
22753            request.route.as_ref().unwrap_or(&::core::default::Default::default()),
22754        )?;
22755        let query = ::origincloud_core::query(&request, &["parent", "route"])?;
22756        let call = ::origincloud_core::Request::new(
22757                ::origincloud_core::Method::POST,
22758                format!("/v1beta1/{p0}/routes"),
22759            )
22760            .with_body(body)
22761            .with_query(query)
22762            .idempotent();
22763        let operation = self.service.call(call).await?;
22764        Ok(
22765            ::origincloud_core::Operation::new(
22766                self.service.clone(),
22767                operation,
22768                "origincloud.network.v1beta1.Route",
22769            ),
22770        )
22771    }
22772    /// Removes a route from its route table. The operation is done once the
22773    /// change is recorded; the network applies it within seconds.
22774    ///
22775    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22776    pub async fn delete_route(
22777        &self,
22778        mut request: DeleteRouteRequest,
22779    ) -> ::core::result::Result<
22780        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22781        ::origincloud_core::Error,
22782    > {
22783        if request.request_id.is_empty() {
22784            request.request_id = ::origincloud_core::new_request_id();
22785        }
22786        let p0 = ::origincloud_core::path_value(
22787            "name",
22788            &request.name,
22789            "projects/*/regions/*/routeTables/*/routes/*",
22790        )?;
22791        let query = ::origincloud_core::query(&request, &["name"])?;
22792        let call = ::origincloud_core::Request::new(
22793                ::origincloud_core::Method::DELETE,
22794                format!("/v1beta1/{p0}"),
22795            )
22796            .with_query(query)
22797            .idempotent();
22798        let operation = self.service.call(call).await?;
22799        Ok(
22800            ::origincloud_core::Operation::new(
22801                self.service.clone(),
22802                operation,
22803                "google.protobuf.Empty",
22804            ),
22805        )
22806    }
22807}
22808/// Calls `RouteTableService`.
22809///
22810/// Route tables: where a subnet's traffic leaves the VPC. A table holds
22811/// routes (`RouteService`), and applies to the subnets that a route table
22812/// association names it for (`RouteTableAssociationService`).
22813#[derive(Clone, Debug)]
22814pub struct RouteTableClient {
22815    service: ::origincloud_core::Service,
22816}
22817impl RouteTableClient {
22818    /// Returns a client of `RouteTableService` that sends its calls through `client`.
22819    pub fn new(client: &::origincloud_core::Client) -> Self {
22820        Self {
22821            service: client.service("network", true),
22822        }
22823    }
22824    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22825    pub fn service(&self) -> &::origincloud_core::Service {
22826        &self.service
22827    }
22828    /// Returns a route table.
22829    pub async fn get_route_table(
22830        &self,
22831        request: GetRouteTableRequest,
22832    ) -> ::core::result::Result<RouteTable, ::origincloud_core::Error> {
22833        let p0 = ::origincloud_core::path_value(
22834            "name",
22835            &request.name,
22836            "projects/*/regions/*/routeTables/*",
22837        )?;
22838        let query = ::origincloud_core::query(&request, &["name"])?;
22839        let call = ::origincloud_core::Request::new(
22840                ::origincloud_core::Method::GET,
22841                format!("/v1beta1/{p0}"),
22842            )
22843            .with_query(query)
22844            .idempotent();
22845        self.service.call(call).await
22846    }
22847    /// Lists the route tables in a region, oldest first.
22848    pub async fn list_route_tables(
22849        &self,
22850        request: ListRouteTablesRequest,
22851    ) -> ::core::result::Result<ListRouteTablesResponse, ::origincloud_core::Error> {
22852        let p0 = ::origincloud_core::path_value(
22853            "parent",
22854            &request.parent,
22855            "projects/*/regions/*",
22856        )?;
22857        let query = ::origincloud_core::query(&request, &["parent"])?;
22858        let call = ::origincloud_core::Request::new(
22859                ::origincloud_core::Method::GET,
22860                format!("/v1beta1/{p0}/routeTables"),
22861            )
22862            .with_query(query)
22863            .idempotent();
22864        self.service.call(call).await
22865    }
22866    /// Returns everything [`list_route_tables`](Self::list_route_tables) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
22867    pub fn all_route_tables(
22868        &self,
22869        request: ListRouteTablesRequest,
22870    ) -> ::origincloud_core::Pages<RouteTable> {
22871        let client = self.clone();
22872        ::origincloud_core::Pages::new(
22873            request,
22874            move |request: ListRouteTablesRequest| {
22875                let client = client.clone();
22876                async move {
22877                    let page = client.list_route_tables(request).await?;
22878                    Ok((page.route_tables, page.next_page_token))
22879                }
22880            },
22881            |request: &mut ListRouteTablesRequest, token: ::std::string::String| {
22882                request.page_token = token;
22883            },
22884        )
22885    }
22886    /// Creates a route table in a VPC, with the VPC's local routes and no
22887    /// other. The operation is done once the route table is recorded.
22888    ///
22889    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTable`] once the change is done.
22890    pub async fn create_route_table(
22891        &self,
22892        mut request: CreateRouteTableRequest,
22893    ) -> ::core::result::Result<
22894        ::origincloud_core::Operation<RouteTable>,
22895        ::origincloud_core::Error,
22896    > {
22897        if request.request_id.is_empty() {
22898            request.request_id = ::origincloud_core::new_request_id();
22899        }
22900        let p0 = ::origincloud_core::path_value(
22901            "parent",
22902            &request.parent,
22903            "projects/*/regions/*",
22904        )?;
22905        let body = ::origincloud_core::json_body(
22906            request.route_table.as_ref().unwrap_or(&::core::default::Default::default()),
22907        )?;
22908        let query = ::origincloud_core::query(&request, &["parent", "routeTable"])?;
22909        let call = ::origincloud_core::Request::new(
22910                ::origincloud_core::Method::POST,
22911                format!("/v1beta1/{p0}/routeTables"),
22912            )
22913            .with_body(body)
22914            .with_query(query)
22915            .idempotent();
22916        let operation = self.service.call(call).await?;
22917        Ok(
22918            ::origincloud_core::Operation::new(
22919                self.service.clone(),
22920                operation,
22921                "origincloud.network.v1beta1.RouteTable",
22922            ),
22923        )
22924    }
22925    /// Changes a route table's tags. The operation is done once the change is
22926    /// recorded.
22927    ///
22928    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTable`] once the change is done.
22929    pub async fn update_route_table(
22930        &self,
22931        mut request: UpdateRouteTableRequest,
22932    ) -> ::core::result::Result<
22933        ::origincloud_core::Operation<RouteTable>,
22934        ::origincloud_core::Error,
22935    > {
22936        if request.request_id.is_empty() {
22937            request.request_id = ::origincloud_core::new_request_id();
22938        }
22939        let p0 = ::origincloud_core::path_value(
22940            "routeTable.name",
22941            request.route_table.as_ref().map_or("", |m| m.name.as_str()),
22942            "projects/*/regions/*/routeTables/*",
22943        )?;
22944        let body = ::origincloud_core::json_body(
22945            request.route_table.as_ref().unwrap_or(&::core::default::Default::default()),
22946        )?;
22947        let query = ::origincloud_core::query(
22948            &request,
22949            &["routeTable.name", "routeTable"],
22950        )?;
22951        let call = ::origincloud_core::Request::new(
22952                ::origincloud_core::Method::PATCH,
22953                format!("/v1beta1/{p0}"),
22954            )
22955            .with_body(body)
22956            .with_query(query)
22957            .idempotent();
22958        let operation = self.service.call(call).await?;
22959        Ok(
22960            ::origincloud_core::Operation::new(
22961                self.service.clone(),
22962                operation,
22963                "origincloud.network.v1beta1.RouteTable",
22964            ),
22965        )
22966    }
22967    /// Deletes a route table with its routes. Refused for a main route table,
22968    /// which goes with its VPC, and while a route table association names
22969    /// the table. The operation is done once the change is recorded; the
22970    /// network applies it within seconds.
22971    ///
22972    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22973    pub async fn delete_route_table(
22974        &self,
22975        mut request: DeleteRouteTableRequest,
22976    ) -> ::core::result::Result<
22977        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22978        ::origincloud_core::Error,
22979    > {
22980        if request.request_id.is_empty() {
22981            request.request_id = ::origincloud_core::new_request_id();
22982        }
22983        let p0 = ::origincloud_core::path_value(
22984            "name",
22985            &request.name,
22986            "projects/*/regions/*/routeTables/*",
22987        )?;
22988        let query = ::origincloud_core::query(&request, &["name"])?;
22989        let call = ::origincloud_core::Request::new(
22990                ::origincloud_core::Method::DELETE,
22991                format!("/v1beta1/{p0}"),
22992            )
22993            .with_query(query)
22994            .idempotent();
22995        let operation = self.service.call(call).await?;
22996        Ok(
22997            ::origincloud_core::Operation::new(
22998                self.service.clone(),
22999                operation,
23000                "google.protobuf.Empty",
23001            ),
23002        )
23003    }
23004}
23005/// Calls `RouteTableAssociationService`.
23006///
23007/// Route table associations: which route table a subnet uses. A subnet has at
23008/// most one. A subnet reaches, and is reached from, the internet for an
23009/// address family only if its own route table has that family's default
23010/// route; a subnet with no route table has no route out of its VPC and isn't
23011/// reachable from the internet (see the subnet's `route_table`). An
23012/// association's id is the id of the route table it names, so a client that
23013/// knows the subnet and the table names the association without listing. To
23014/// move a subnet to another table, delete its association and create
23015/// another.
23016#[derive(Clone, Debug)]
23017pub struct RouteTableAssociationClient {
23018    service: ::origincloud_core::Service,
23019}
23020impl RouteTableAssociationClient {
23021    /// Returns a client of `RouteTableAssociationService` that sends its calls through `client`.
23022    pub fn new(client: &::origincloud_core::Client) -> Self {
23023        Self {
23024            service: client.service("network", true),
23025        }
23026    }
23027    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23028    pub fn service(&self) -> &::origincloud_core::Service {
23029        &self.service
23030    }
23031    /// Returns a route table association.
23032    pub async fn get_route_table_association(
23033        &self,
23034        request: GetRouteTableAssociationRequest,
23035    ) -> ::core::result::Result<RouteTableAssociation, ::origincloud_core::Error> {
23036        let p0 = ::origincloud_core::path_value(
23037            "name",
23038            &request.name,
23039            "projects/*/zones/*/subnets/*/routeTableAssociations/*",
23040        )?;
23041        let query = ::origincloud_core::query(&request, &["name"])?;
23042        let call = ::origincloud_core::Request::new(
23043                ::origincloud_core::Method::GET,
23044                format!("/v1beta1/{p0}"),
23045            )
23046            .with_query(query)
23047            .idempotent();
23048        self.service.call(call).await
23049    }
23050    /// Lists a subnet's route table associations: none or one.
23051    pub async fn list_route_table_associations(
23052        &self,
23053        request: ListRouteTableAssociationsRequest,
23054    ) -> ::core::result::Result<
23055        ListRouteTableAssociationsResponse,
23056        ::origincloud_core::Error,
23057    > {
23058        let p0 = ::origincloud_core::path_value(
23059            "parent",
23060            &request.parent,
23061            "projects/*/zones/*/subnets/*",
23062        )?;
23063        let query = ::origincloud_core::query(&request, &["parent"])?;
23064        let call = ::origincloud_core::Request::new(
23065                ::origincloud_core::Method::GET,
23066                format!("/v1beta1/{p0}/routeTableAssociations"),
23067            )
23068            .with_query(query)
23069            .idempotent();
23070        self.service.call(call).await
23071    }
23072    /// Returns everything [`list_route_table_associations`](Self::list_route_table_associations) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
23073    pub fn all_route_table_associations(
23074        &self,
23075        request: ListRouteTableAssociationsRequest,
23076    ) -> ::origincloud_core::Pages<RouteTableAssociation> {
23077        let client = self.clone();
23078        ::origincloud_core::Pages::new(
23079            request,
23080            move |request: ListRouteTableAssociationsRequest| {
23081                let client = client.clone();
23082                async move {
23083                    let page = client.list_route_table_associations(request).await?;
23084                    Ok((page.route_table_associations, page.next_page_token))
23085                }
23086            },
23087            |
23088                request: &mut ListRouteTableAssociationsRequest,
23089                token: ::std::string::String|
23090            request.page_token = token,
23091        )
23092    }
23093    /// Associates a route table with a subnet. Refused with
23094    /// `FAILED_PRECONDITION` when the subnet has a route table association. The operation is done
23095    /// once the change is recorded; the network applies it within seconds.
23096    ///
23097    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTableAssociation`] once the change is done.
23098    pub async fn create_route_table_association(
23099        &self,
23100        mut request: CreateRouteTableAssociationRequest,
23101    ) -> ::core::result::Result<
23102        ::origincloud_core::Operation<RouteTableAssociation>,
23103        ::origincloud_core::Error,
23104    > {
23105        if request.request_id.is_empty() {
23106            request.request_id = ::origincloud_core::new_request_id();
23107        }
23108        let p0 = ::origincloud_core::path_value(
23109            "parent",
23110            &request.parent,
23111            "projects/*/zones/*/subnets/*",
23112        )?;
23113        let body = ::origincloud_core::json_body(
23114            request
23115                .route_table_association
23116                .as_ref()
23117                .unwrap_or(&::core::default::Default::default()),
23118        )?;
23119        let query = ::origincloud_core::query(
23120            &request,
23121            &["parent", "routeTableAssociation"],
23122        )?;
23123        let call = ::origincloud_core::Request::new(
23124                ::origincloud_core::Method::POST,
23125                format!("/v1beta1/{p0}/routeTableAssociations"),
23126            )
23127            .with_body(body)
23128            .with_query(query)
23129            .idempotent();
23130        let operation = self.service.call(call).await?;
23131        Ok(
23132            ::origincloud_core::Operation::new(
23133                self.service.clone(),
23134                operation,
23135                "origincloud.network.v1beta1.RouteTableAssociation",
23136            ),
23137        )
23138    }
23139    /// Removes a subnet's route table association. The subnet then has no
23140    /// route out of its VPC and isn't reachable from the internet. The
23141    /// operation is done once the change is recorded; the network applies it
23142    /// within seconds.
23143    ///
23144    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23145    pub async fn delete_route_table_association(
23146        &self,
23147        mut request: DeleteRouteTableAssociationRequest,
23148    ) -> ::core::result::Result<
23149        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23150        ::origincloud_core::Error,
23151    > {
23152        if request.request_id.is_empty() {
23153            request.request_id = ::origincloud_core::new_request_id();
23154        }
23155        let p0 = ::origincloud_core::path_value(
23156            "name",
23157            &request.name,
23158            "projects/*/zones/*/subnets/*/routeTableAssociations/*",
23159        )?;
23160        let query = ::origincloud_core::query(&request, &["name"])?;
23161        let call = ::origincloud_core::Request::new(
23162                ::origincloud_core::Method::DELETE,
23163                format!("/v1beta1/{p0}"),
23164            )
23165            .with_query(query)
23166            .idempotent();
23167        let operation = self.service.call(call).await?;
23168        Ok(
23169            ::origincloud_core::Operation::new(
23170                self.service.clone(),
23171                operation,
23172                "google.protobuf.Empty",
23173            ),
23174        )
23175    }
23176}
23177/// Calls `SecurityGroupService`.
23178///
23179/// Security groups: stateful filters on network interfaces. A group holds
23180/// rules (`SecurityGroupRuleService`), and applies to the interfaces that a
23181/// security group association names it for
23182/// (`SecurityGroupAssociationService`). An interface admits the traffic any
23183/// of its groups allows, and the replies to what it sends; everything else
23184/// is dropped.
23185#[derive(Clone, Debug)]
23186pub struct SecurityGroupClient {
23187    service: ::origincloud_core::Service,
23188}
23189impl SecurityGroupClient {
23190    /// Returns a client of `SecurityGroupService` that sends its calls through `client`.
23191    pub fn new(client: &::origincloud_core::Client) -> Self {
23192        Self {
23193            service: client.service("network", true),
23194        }
23195    }
23196    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23197    pub fn service(&self) -> &::origincloud_core::Service {
23198        &self.service
23199    }
23200    /// Returns a security group.
23201    pub async fn get_security_group(
23202        &self,
23203        request: GetSecurityGroupRequest,
23204    ) -> ::core::result::Result<SecurityGroup, ::origincloud_core::Error> {
23205        let p0 = ::origincloud_core::path_value(
23206            "name",
23207            &request.name,
23208            "projects/*/regions/*/securityGroups/*",
23209        )?;
23210        let query = ::origincloud_core::query(&request, &["name"])?;
23211        let call = ::origincloud_core::Request::new(
23212                ::origincloud_core::Method::GET,
23213                format!("/v1beta1/{p0}"),
23214            )
23215            .with_query(query)
23216            .idempotent();
23217        self.service.call(call).await
23218    }
23219    /// Lists the security groups in a region, oldest first.
23220    pub async fn list_security_groups(
23221        &self,
23222        request: ListSecurityGroupsRequest,
23223    ) -> ::core::result::Result<ListSecurityGroupsResponse, ::origincloud_core::Error> {
23224        let p0 = ::origincloud_core::path_value(
23225            "parent",
23226            &request.parent,
23227            "projects/*/regions/*",
23228        )?;
23229        let query = ::origincloud_core::query(&request, &["parent"])?;
23230        let call = ::origincloud_core::Request::new(
23231                ::origincloud_core::Method::GET,
23232                format!("/v1beta1/{p0}/securityGroups"),
23233            )
23234            .with_query(query)
23235            .idempotent();
23236        self.service.call(call).await
23237    }
23238    /// Returns everything [`list_security_groups`](Self::list_security_groups) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
23239    pub fn all_security_groups(
23240        &self,
23241        request: ListSecurityGroupsRequest,
23242    ) -> ::origincloud_core::Pages<SecurityGroup> {
23243        let client = self.clone();
23244        ::origincloud_core::Pages::new(
23245            request,
23246            move |request: ListSecurityGroupsRequest| {
23247                let client = client.clone();
23248                async move {
23249                    let page = client.list_security_groups(request).await?;
23250                    Ok((page.security_groups, page.next_page_token))
23251                }
23252            },
23253            |request: &mut ListSecurityGroupsRequest, token: ::std::string::String| {
23254                request.page_token = token;
23255            },
23256        )
23257    }
23258    /// Creates a security group in a VPC, with no rules: it allows nothing
23259    /// until rules are added. The operation is done once the security group
23260    /// is recorded.
23261    ///
23262    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroup`] once the change is done.
23263    pub async fn create_security_group(
23264        &self,
23265        mut request: CreateSecurityGroupRequest,
23266    ) -> ::core::result::Result<
23267        ::origincloud_core::Operation<SecurityGroup>,
23268        ::origincloud_core::Error,
23269    > {
23270        if request.request_id.is_empty() {
23271            request.request_id = ::origincloud_core::new_request_id();
23272        }
23273        let p0 = ::origincloud_core::path_value(
23274            "parent",
23275            &request.parent,
23276            "projects/*/regions/*",
23277        )?;
23278        let body = ::origincloud_core::json_body(
23279            request
23280                .security_group
23281                .as_ref()
23282                .unwrap_or(&::core::default::Default::default()),
23283        )?;
23284        let query = ::origincloud_core::query(&request, &["parent", "securityGroup"])?;
23285        let call = ::origincloud_core::Request::new(
23286                ::origincloud_core::Method::POST,
23287                format!("/v1beta1/{p0}/securityGroups"),
23288            )
23289            .with_body(body)
23290            .with_query(query)
23291            .idempotent();
23292        let operation = self.service.call(call).await?;
23293        Ok(
23294            ::origincloud_core::Operation::new(
23295                self.service.clone(),
23296                operation,
23297                "origincloud.network.v1beta1.SecurityGroup",
23298            ),
23299        )
23300    }
23301    /// Changes a security group's tags. The operation is done once the change
23302    /// is recorded.
23303    ///
23304    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroup`] once the change is done.
23305    pub async fn update_security_group(
23306        &self,
23307        mut request: UpdateSecurityGroupRequest,
23308    ) -> ::core::result::Result<
23309        ::origincloud_core::Operation<SecurityGroup>,
23310        ::origincloud_core::Error,
23311    > {
23312        if request.request_id.is_empty() {
23313            request.request_id = ::origincloud_core::new_request_id();
23314        }
23315        let p0 = ::origincloud_core::path_value(
23316            "securityGroup.name",
23317            request.security_group.as_ref().map_or("", |m| m.name.as_str()),
23318            "projects/*/regions/*/securityGroups/*",
23319        )?;
23320        let body = ::origincloud_core::json_body(
23321            request
23322                .security_group
23323                .as_ref()
23324                .unwrap_or(&::core::default::Default::default()),
23325        )?;
23326        let query = ::origincloud_core::query(
23327            &request,
23328            &["securityGroup.name", "securityGroup"],
23329        )?;
23330        let call = ::origincloud_core::Request::new(
23331                ::origincloud_core::Method::PATCH,
23332                format!("/v1beta1/{p0}"),
23333            )
23334            .with_body(body)
23335            .with_query(query)
23336            .idempotent();
23337        let operation = self.service.call(call).await?;
23338        Ok(
23339            ::origincloud_core::Operation::new(
23340                self.service.clone(),
23341                operation,
23342                "origincloud.network.v1beta1.SecurityGroup",
23343            ),
23344        )
23345    }
23346    /// Deletes a security group with its rules. Refused for a group the
23347    /// platform created with its VPC, which goes with the VPC, and while a
23348    /// security group association names it. The operation is done once the
23349    /// change is recorded; the network applies it within seconds.
23350    ///
23351    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23352    pub async fn delete_security_group(
23353        &self,
23354        mut request: DeleteSecurityGroupRequest,
23355    ) -> ::core::result::Result<
23356        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23357        ::origincloud_core::Error,
23358    > {
23359        if request.request_id.is_empty() {
23360            request.request_id = ::origincloud_core::new_request_id();
23361        }
23362        let p0 = ::origincloud_core::path_value(
23363            "name",
23364            &request.name,
23365            "projects/*/regions/*/securityGroups/*",
23366        )?;
23367        let query = ::origincloud_core::query(&request, &["name"])?;
23368        let call = ::origincloud_core::Request::new(
23369                ::origincloud_core::Method::DELETE,
23370                format!("/v1beta1/{p0}"),
23371            )
23372            .with_query(query)
23373            .idempotent();
23374        let operation = self.service.call(call).await?;
23375        Ok(
23376            ::origincloud_core::Operation::new(
23377                self.service.clone(),
23378                operation,
23379                "google.protobuf.Empty",
23380            ),
23381        )
23382    }
23383}
23384/// Calls `SecurityGroupAssociationService`.
23385///
23386/// Security group associations: which security groups filter a network
23387/// interface's traffic. An interface can have many, and admits the traffic
23388/// any of them allows; without one, it is closed (see the interface's
23389/// `security_groups`). An association's id is the id of the security group it
23390/// names, so a client that knows the interface and the group names the
23391/// association without listing.
23392#[derive(Clone, Debug)]
23393pub struct SecurityGroupAssociationClient {
23394    service: ::origincloud_core::Service,
23395}
23396impl SecurityGroupAssociationClient {
23397    /// Returns a client of `SecurityGroupAssociationService` that sends its calls through `client`.
23398    pub fn new(client: &::origincloud_core::Client) -> Self {
23399        Self {
23400            service: client.service("network", true),
23401        }
23402    }
23403    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23404    pub fn service(&self) -> &::origincloud_core::Service {
23405        &self.service
23406    }
23407    /// Returns a security group association.
23408    pub async fn get_security_group_association(
23409        &self,
23410        request: GetSecurityGroupAssociationRequest,
23411    ) -> ::core::result::Result<SecurityGroupAssociation, ::origincloud_core::Error> {
23412        let p0 = ::origincloud_core::path_value(
23413            "name",
23414            &request.name,
23415            "projects/*/zones/*/networkInterfaces/*/securityGroupAssociations/*",
23416        )?;
23417        let query = ::origincloud_core::query(&request, &["name"])?;
23418        let call = ::origincloud_core::Request::new(
23419                ::origincloud_core::Method::GET,
23420                format!("/v1beta1/{p0}"),
23421            )
23422            .with_query(query)
23423            .idempotent();
23424        self.service.call(call).await
23425    }
23426    /// Lists a network interface's security group associations, oldest first.
23427    pub async fn list_security_group_associations(
23428        &self,
23429        request: ListSecurityGroupAssociationsRequest,
23430    ) -> ::core::result::Result<
23431        ListSecurityGroupAssociationsResponse,
23432        ::origincloud_core::Error,
23433    > {
23434        let p0 = ::origincloud_core::path_value(
23435            "parent",
23436            &request.parent,
23437            "projects/*/zones/*/networkInterfaces/*",
23438        )?;
23439        let query = ::origincloud_core::query(&request, &["parent"])?;
23440        let call = ::origincloud_core::Request::new(
23441                ::origincloud_core::Method::GET,
23442                format!("/v1beta1/{p0}/securityGroupAssociations"),
23443            )
23444            .with_query(query)
23445            .idempotent();
23446        self.service.call(call).await
23447    }
23448    /// Returns everything [`list_security_group_associations`](Self::list_security_group_associations) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
23449    pub fn all_security_group_associations(
23450        &self,
23451        request: ListSecurityGroupAssociationsRequest,
23452    ) -> ::origincloud_core::Pages<SecurityGroupAssociation> {
23453        let client = self.clone();
23454        ::origincloud_core::Pages::new(
23455            request,
23456            move |request: ListSecurityGroupAssociationsRequest| {
23457                let client = client.clone();
23458                async move {
23459                    let page = client.list_security_group_associations(request).await?;
23460                    Ok((page.security_group_associations, page.next_page_token))
23461                }
23462            },
23463            |
23464                request: &mut ListSecurityGroupAssociationsRequest,
23465                token: ::std::string::String|
23466            request.page_token = token,
23467        )
23468    }
23469    /// Associates a security group with a network interface, also while it is
23470    /// attached. Refused with `FAILED_PRECONDITION` when the interface is
23471    /// associated with that group. The operation is done once the change is recorded; the
23472    /// network applies it within seconds.
23473    ///
23474    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroupAssociation`] once the change is done.
23475    pub async fn create_security_group_association(
23476        &self,
23477        mut request: CreateSecurityGroupAssociationRequest,
23478    ) -> ::core::result::Result<
23479        ::origincloud_core::Operation<SecurityGroupAssociation>,
23480        ::origincloud_core::Error,
23481    > {
23482        if request.request_id.is_empty() {
23483            request.request_id = ::origincloud_core::new_request_id();
23484        }
23485        let p0 = ::origincloud_core::path_value(
23486            "parent",
23487            &request.parent,
23488            "projects/*/zones/*/networkInterfaces/*",
23489        )?;
23490        let body = ::origincloud_core::json_body(
23491            request
23492                .security_group_association
23493                .as_ref()
23494                .unwrap_or(&::core::default::Default::default()),
23495        )?;
23496        let query = ::origincloud_core::query(
23497            &request,
23498            &["parent", "securityGroupAssociation"],
23499        )?;
23500        let call = ::origincloud_core::Request::new(
23501                ::origincloud_core::Method::POST,
23502                format!("/v1beta1/{p0}/securityGroupAssociations"),
23503            )
23504            .with_body(body)
23505            .with_query(query)
23506            .idempotent();
23507        let operation = self.service.call(call).await?;
23508        Ok(
23509            ::origincloud_core::Operation::new(
23510                self.service.clone(),
23511                operation,
23512                "origincloud.network.v1beta1.SecurityGroupAssociation",
23513            ),
23514        )
23515    }
23516    /// Removes a security group from a network interface. Without any, the
23517    /// interface admits and sends nothing except replies to its own traffic and
23518    /// address resolution. The operation is done once the change is recorded;
23519    /// the network applies it within seconds.
23520    ///
23521    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23522    pub async fn delete_security_group_association(
23523        &self,
23524        mut request: DeleteSecurityGroupAssociationRequest,
23525    ) -> ::core::result::Result<
23526        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23527        ::origincloud_core::Error,
23528    > {
23529        if request.request_id.is_empty() {
23530            request.request_id = ::origincloud_core::new_request_id();
23531        }
23532        let p0 = ::origincloud_core::path_value(
23533            "name",
23534            &request.name,
23535            "projects/*/zones/*/networkInterfaces/*/securityGroupAssociations/*",
23536        )?;
23537        let query = ::origincloud_core::query(&request, &["name"])?;
23538        let call = ::origincloud_core::Request::new(
23539                ::origincloud_core::Method::DELETE,
23540                format!("/v1beta1/{p0}"),
23541            )
23542            .with_query(query)
23543            .idempotent();
23544        let operation = self.service.call(call).await?;
23545        Ok(
23546            ::origincloud_core::Operation::new(
23547                self.service.clone(),
23548                operation,
23549                "google.protobuf.Empty",
23550            ),
23551        )
23552    }
23553}
23554/// Calls `SecurityGroupRuleService`.
23555///
23556/// Security group rules: the traffic a security group allows, each rule to
23557/// or from one peer. Rules only allow, so their order doesn't matter. A rule
23558/// is immutable: it is created and deleted, never changed, so to change one,
23559/// delete it and create its replacement. Creating the replacement first
23560/// leaves no window in which neither rule allows the traffic.
23561#[derive(Clone, Debug)]
23562pub struct SecurityGroupRuleClient {
23563    service: ::origincloud_core::Service,
23564}
23565impl SecurityGroupRuleClient {
23566    /// Returns a client of `SecurityGroupRuleService` that sends its calls through `client`.
23567    pub fn new(client: &::origincloud_core::Client) -> Self {
23568        Self {
23569            service: client.service("network", true),
23570        }
23571    }
23572    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23573    pub fn service(&self) -> &::origincloud_core::Service {
23574        &self.service
23575    }
23576    /// Returns a security group rule.
23577    pub async fn get_security_group_rule(
23578        &self,
23579        request: GetSecurityGroupRuleRequest,
23580    ) -> ::core::result::Result<SecurityGroupRule, ::origincloud_core::Error> {
23581        let p0 = ::origincloud_core::path_value(
23582            "name",
23583            &request.name,
23584            "projects/*/regions/*/securityGroups/*/rules/*",
23585        )?;
23586        let query = ::origincloud_core::query(&request, &["name"])?;
23587        let call = ::origincloud_core::Request::new(
23588                ::origincloud_core::Method::GET,
23589                format!("/v1beta1/{p0}"),
23590            )
23591            .with_query(query)
23592            .idempotent();
23593        self.service.call(call).await
23594    }
23595    /// Lists a security group's rules of both directions, oldest first.
23596    pub async fn list_security_group_rules(
23597        &self,
23598        request: ListSecurityGroupRulesRequest,
23599    ) -> ::core::result::Result<
23600        ListSecurityGroupRulesResponse,
23601        ::origincloud_core::Error,
23602    > {
23603        let p0 = ::origincloud_core::path_value(
23604            "parent",
23605            &request.parent,
23606            "projects/*/regions/*/securityGroups/*",
23607        )?;
23608        let query = ::origincloud_core::query(&request, &["parent"])?;
23609        let call = ::origincloud_core::Request::new(
23610                ::origincloud_core::Method::GET,
23611                format!("/v1beta1/{p0}/rules"),
23612            )
23613            .with_query(query)
23614            .idempotent();
23615        self.service.call(call).await
23616    }
23617    /// Returns everything [`list_security_group_rules`](Self::list_security_group_rules) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
23618    pub fn all_security_group_rules(
23619        &self,
23620        request: ListSecurityGroupRulesRequest,
23621    ) -> ::origincloud_core::Pages<SecurityGroupRule> {
23622        let client = self.clone();
23623        ::origincloud_core::Pages::new(
23624            request,
23625            move |request: ListSecurityGroupRulesRequest| {
23626                let client = client.clone();
23627                async move {
23628                    let page = client.list_security_group_rules(request).await?;
23629                    Ok((page.security_group_rules, page.next_page_token))
23630                }
23631            },
23632            |request: &mut ListSecurityGroupRulesRequest, token: ::std::string::String| {
23633                request.page_token = token;
23634            },
23635        )
23636    }
23637    /// Adds a rule to a security group. A rule identical to one the group
23638    /// has in every field, `description` included, is refused with
23639    /// `FAILED_PRECONDITION`. A group holds at most 120 rules by default, both
23640    /// directions together, as the quota sets. The operation is done once the
23641    /// change is recorded; the network applies it within seconds.
23642    ///
23643    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroupRule`] once the change is done.
23644    pub async fn create_security_group_rule(
23645        &self,
23646        mut request: CreateSecurityGroupRuleRequest,
23647    ) -> ::core::result::Result<
23648        ::origincloud_core::Operation<SecurityGroupRule>,
23649        ::origincloud_core::Error,
23650    > {
23651        if request.request_id.is_empty() {
23652            request.request_id = ::origincloud_core::new_request_id();
23653        }
23654        let p0 = ::origincloud_core::path_value(
23655            "parent",
23656            &request.parent,
23657            "projects/*/regions/*/securityGroups/*",
23658        )?;
23659        let body = ::origincloud_core::json_body(
23660            request
23661                .security_group_rule
23662                .as_ref()
23663                .unwrap_or(&::core::default::Default::default()),
23664        )?;
23665        let query = ::origincloud_core::query(
23666            &request,
23667            &["parent", "securityGroupRule"],
23668        )?;
23669        let call = ::origincloud_core::Request::new(
23670                ::origincloud_core::Method::POST,
23671                format!("/v1beta1/{p0}/rules"),
23672            )
23673            .with_body(body)
23674            .with_query(query)
23675            .idempotent();
23676        let operation = self.service.call(call).await?;
23677        Ok(
23678            ::origincloud_core::Operation::new(
23679                self.service.clone(),
23680                operation,
23681                "origincloud.network.v1beta1.SecurityGroupRule",
23682            ),
23683        )
23684    }
23685    /// Removes a rule from its security group. The operation is done once the
23686    /// change is recorded; the network applies it within seconds.
23687    ///
23688    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23689    pub async fn delete_security_group_rule(
23690        &self,
23691        mut request: DeleteSecurityGroupRuleRequest,
23692    ) -> ::core::result::Result<
23693        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23694        ::origincloud_core::Error,
23695    > {
23696        if request.request_id.is_empty() {
23697            request.request_id = ::origincloud_core::new_request_id();
23698        }
23699        let p0 = ::origincloud_core::path_value(
23700            "name",
23701            &request.name,
23702            "projects/*/regions/*/securityGroups/*/rules/*",
23703        )?;
23704        let query = ::origincloud_core::query(&request, &["name"])?;
23705        let call = ::origincloud_core::Request::new(
23706                ::origincloud_core::Method::DELETE,
23707                format!("/v1beta1/{p0}"),
23708            )
23709            .with_query(query)
23710            .idempotent();
23711        let operation = self.service.call(call).await?;
23712        Ok(
23713            ::origincloud_core::Operation::new(
23714                self.service.clone(),
23715                operation,
23716                "google.protobuf.Empty",
23717            ),
23718        )
23719    }
23720}
23721/// Calls `SubnetService`.
23722///
23723/// Subnets: the part of a VPC in one zone. Network interfaces get their
23724/// private addresses from a subnet. Its route table association decides
23725/// where its traffic goes, and its ACL association what crosses its edge.
23726#[derive(Clone, Debug)]
23727pub struct SubnetClient {
23728    service: ::origincloud_core::Service,
23729}
23730impl SubnetClient {
23731    /// Returns a client of `SubnetService` that sends its calls through `client`.
23732    pub fn new(client: &::origincloud_core::Client) -> Self {
23733        Self {
23734            service: client.service("network", true),
23735        }
23736    }
23737    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23738    pub fn service(&self) -> &::origincloud_core::Service {
23739        &self.service
23740    }
23741    /// Returns a subnet.
23742    pub async fn get_subnet(
23743        &self,
23744        request: GetSubnetRequest,
23745    ) -> ::core::result::Result<Subnet, ::origincloud_core::Error> {
23746        let p0 = ::origincloud_core::path_value(
23747            "name",
23748            &request.name,
23749            "projects/*/zones/*/subnets/*",
23750        )?;
23751        let query = ::origincloud_core::query(&request, &["name"])?;
23752        let call = ::origincloud_core::Request::new(
23753                ::origincloud_core::Method::GET,
23754                format!("/v1beta1/{p0}"),
23755            )
23756            .with_query(query)
23757            .idempotent();
23758        self.service.call(call).await
23759    }
23760    /// Lists the subnets in a zone, oldest first. For every zone's subnets,
23761    /// list the zones whose `services` name `network` with the location
23762    /// service (`location.origincloudapis.eu`), then each zone's subnets.
23763    pub async fn list_subnets(
23764        &self,
23765        request: ListSubnetsRequest,
23766    ) -> ::core::result::Result<ListSubnetsResponse, ::origincloud_core::Error> {
23767        let p0 = ::origincloud_core::path_value(
23768            "parent",
23769            &request.parent,
23770            "projects/*/zones/*",
23771        )?;
23772        let query = ::origincloud_core::query(&request, &["parent"])?;
23773        let call = ::origincloud_core::Request::new(
23774                ::origincloud_core::Method::GET,
23775                format!("/v1beta1/{p0}/subnets"),
23776            )
23777            .with_query(query)
23778            .idempotent();
23779        self.service.call(call).await
23780    }
23781    /// Returns everything [`list_subnets`](Self::list_subnets) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
23782    pub fn all_subnets(
23783        &self,
23784        request: ListSubnetsRequest,
23785    ) -> ::origincloud_core::Pages<Subnet> {
23786        let client = self.clone();
23787        ::origincloud_core::Pages::new(
23788            request,
23789            move |request: ListSubnetsRequest| {
23790                let client = client.clone();
23791                async move {
23792                    let page = client.list_subnets(request).await?;
23793                    Ok((page.subnets, page.next_page_token))
23794                }
23795            },
23796            |request: &mut ListSubnetsRequest, token: ::std::string::String| {
23797                request.page_token = token;
23798            },
23799        )
23800    }
23801    /// Creates a subnet in a VPC, with the next free IPv4 and IPv6 ranges of
23802    /// the VPC's address space, and no route table or ACL association. The
23803    /// operation is done once the change is recorded; the network applies it
23804    /// within seconds.
23805    ///
23806    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Subnet`] once the change is done.
23807    pub async fn create_subnet(
23808        &self,
23809        mut request: CreateSubnetRequest,
23810    ) -> ::core::result::Result<
23811        ::origincloud_core::Operation<Subnet>,
23812        ::origincloud_core::Error,
23813    > {
23814        if request.request_id.is_empty() {
23815            request.request_id = ::origincloud_core::new_request_id();
23816        }
23817        let p0 = ::origincloud_core::path_value(
23818            "parent",
23819            &request.parent,
23820            "projects/*/zones/*",
23821        )?;
23822        let body = ::origincloud_core::json_body(
23823            request.subnet.as_ref().unwrap_or(&::core::default::Default::default()),
23824        )?;
23825        let query = ::origincloud_core::query(&request, &["parent", "subnet"])?;
23826        let call = ::origincloud_core::Request::new(
23827                ::origincloud_core::Method::POST,
23828                format!("/v1beta1/{p0}/subnets"),
23829            )
23830            .with_body(body)
23831            .with_query(query)
23832            .idempotent();
23833        let operation = self.service.call(call).await?;
23834        Ok(
23835            ::origincloud_core::Operation::new(
23836                self.service.clone(),
23837                operation,
23838                "origincloud.network.v1beta1.Subnet",
23839            ),
23840        )
23841    }
23842    /// Changes a subnet's public address assignment or tags.
23843    /// `auto_assign_public_ip` applies to launches afterwards that create
23844    /// their interface. The operation is done once the change is recorded.
23845    ///
23846    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Subnet`] once the change is done.
23847    pub async fn update_subnet(
23848        &self,
23849        mut request: UpdateSubnetRequest,
23850    ) -> ::core::result::Result<
23851        ::origincloud_core::Operation<Subnet>,
23852        ::origincloud_core::Error,
23853    > {
23854        if request.request_id.is_empty() {
23855            request.request_id = ::origincloud_core::new_request_id();
23856        }
23857        let p0 = ::origincloud_core::path_value(
23858            "subnet.name",
23859            request.subnet.as_ref().map_or("", |m| m.name.as_str()),
23860            "projects/*/zones/*/subnets/*",
23861        )?;
23862        let body = ::origincloud_core::json_body(
23863            request.subnet.as_ref().unwrap_or(&::core::default::Default::default()),
23864        )?;
23865        let query = ::origincloud_core::query(&request, &["subnet.name", "subnet"])?;
23866        let call = ::origincloud_core::Request::new(
23867                ::origincloud_core::Method::PATCH,
23868                format!("/v1beta1/{p0}"),
23869            )
23870            .with_body(body)
23871            .with_query(query)
23872            .idempotent();
23873        let operation = self.service.call(call).await?;
23874        Ok(
23875            ::origincloud_core::Operation::new(
23876                self.service.clone(),
23877                operation,
23878                "origincloud.network.v1beta1.Subnet",
23879            ),
23880        )
23881    }
23882    /// Deletes a subnet with its route table and ACL associations and its
23883    /// unattached network interfaces. Refused while an interface in it is
23884    /// attached or a NAT gateway lives in it. The operation is done once the
23885    /// change is recorded; the network applies it within seconds.
23886    ///
23887    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23888    pub async fn delete_subnet(
23889        &self,
23890        mut request: DeleteSubnetRequest,
23891    ) -> ::core::result::Result<
23892        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23893        ::origincloud_core::Error,
23894    > {
23895        if request.request_id.is_empty() {
23896            request.request_id = ::origincloud_core::new_request_id();
23897        }
23898        let p0 = ::origincloud_core::path_value(
23899            "name",
23900            &request.name,
23901            "projects/*/zones/*/subnets/*",
23902        )?;
23903        let query = ::origincloud_core::query(&request, &["name"])?;
23904        let call = ::origincloud_core::Request::new(
23905                ::origincloud_core::Method::DELETE,
23906                format!("/v1beta1/{p0}"),
23907            )
23908            .with_query(query)
23909            .idempotent();
23910        let operation = self.service.call(call).await?;
23911        Ok(
23912            ::origincloud_core::Operation::new(
23913                self.service.clone(),
23914                operation,
23915                "google.protobuf.Empty",
23916            ),
23917        )
23918    }
23919}
23920/// Calls `VpcService`.
23921///
23922/// VPCs: private networks in a region, each with its own IPv4 and IPv6
23923/// address space, isolated from every other VPC. A VPC is created empty: its
23924/// subnets, security groups, ACLs, route tables and internet gateway are
23925/// created on their own.
23926#[derive(Clone, Debug)]
23927pub struct VpcClient {
23928    service: ::origincloud_core::Service,
23929}
23930impl VpcClient {
23931    /// Returns a client of `VpcService` that sends its calls through `client`.
23932    pub fn new(client: &::origincloud_core::Client) -> Self {
23933        Self {
23934            service: client.service("network", true),
23935        }
23936    }
23937    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23938    pub fn service(&self) -> &::origincloud_core::Service {
23939        &self.service
23940    }
23941    /// Returns a VPC.
23942    pub async fn get_vpc(
23943        &self,
23944        request: GetVpcRequest,
23945    ) -> ::core::result::Result<Vpc, ::origincloud_core::Error> {
23946        let p0 = ::origincloud_core::path_value(
23947            "name",
23948            &request.name,
23949            "projects/*/regions/*/vpcs/*",
23950        )?;
23951        let query = ::origincloud_core::query(&request, &["name"])?;
23952        let call = ::origincloud_core::Request::new(
23953                ::origincloud_core::Method::GET,
23954                format!("/v1beta1/{p0}"),
23955            )
23956            .with_query(query)
23957            .idempotent();
23958        self.service.call(call).await
23959    }
23960    /// Lists the VPCs in a region, oldest first.
23961    pub async fn list_vpcs(
23962        &self,
23963        request: ListVpcsRequest,
23964    ) -> ::core::result::Result<ListVpcsResponse, ::origincloud_core::Error> {
23965        let p0 = ::origincloud_core::path_value(
23966            "parent",
23967            &request.parent,
23968            "projects/*/regions/*",
23969        )?;
23970        let query = ::origincloud_core::query(&request, &["parent"])?;
23971        let call = ::origincloud_core::Request::new(
23972                ::origincloud_core::Method::GET,
23973                format!("/v1beta1/{p0}/vpcs"),
23974            )
23975            .with_query(query)
23976            .idempotent();
23977        self.service.call(call).await
23978    }
23979    /// Returns everything [`list_vpcs`](Self::list_vpcs) lists from `request`'s page on, fetching the next page as the stream reaches it. A page that fails ends the stream with its error.
23980    pub fn all_vpcs(&self, request: ListVpcsRequest) -> ::origincloud_core::Pages<Vpc> {
23981        let client = self.clone();
23982        ::origincloud_core::Pages::new(
23983            request,
23984            move |request: ListVpcsRequest| {
23985                let client = client.clone();
23986                async move {
23987                    let page = client.list_vpcs(request).await?;
23988                    Ok((page.vpcs, page.next_page_token))
23989                }
23990            },
23991            |request: &mut ListVpcsRequest, token: ::std::string::String| {
23992                request.page_token = token;
23993            },
23994        )
23995    }
23996    /// Creates an empty VPC: no subnets, security groups, ACLs, route tables
23997    /// or internet gateway. It relays DNS through the project's default DNS
23998    /// policy in its region until a DNS policy association names another. The
23999    /// operation is done once the VPC is recorded.
24000    ///
24001    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Vpc`] once the change is done.
24002    pub async fn create_vpc(
24003        &self,
24004        mut request: CreateVpcRequest,
24005    ) -> ::core::result::Result<
24006        ::origincloud_core::Operation<Vpc>,
24007        ::origincloud_core::Error,
24008    > {
24009        if request.request_id.is_empty() {
24010            request.request_id = ::origincloud_core::new_request_id();
24011        }
24012        let p0 = ::origincloud_core::path_value(
24013            "parent",
24014            &request.parent,
24015            "projects/*/regions/*",
24016        )?;
24017        let body = ::origincloud_core::json_body(
24018            request.vpc.as_ref().unwrap_or(&::core::default::Default::default()),
24019        )?;
24020        let query = ::origincloud_core::query(&request, &["parent", "vpc"])?;
24021        let call = ::origincloud_core::Request::new(
24022                ::origincloud_core::Method::POST,
24023                format!("/v1beta1/{p0}/vpcs"),
24024            )
24025            .with_body(body)
24026            .with_query(query)
24027            .idempotent();
24028        let operation = self.service.call(call).await?;
24029        Ok(
24030            ::origincloud_core::Operation::new(
24031                self.service.clone(),
24032                operation,
24033                "origincloud.network.v1beta1.Vpc",
24034            ),
24035        )
24036    }
24037    /// Changes a VPC's tags. The operation is done once the change is
24038    /// recorded.
24039    ///
24040    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Vpc`] once the change is done.
24041    pub async fn update_vpc(
24042        &self,
24043        mut request: UpdateVpcRequest,
24044    ) -> ::core::result::Result<
24045        ::origincloud_core::Operation<Vpc>,
24046        ::origincloud_core::Error,
24047    > {
24048        if request.request_id.is_empty() {
24049            request.request_id = ::origincloud_core::new_request_id();
24050        }
24051        let p0 = ::origincloud_core::path_value(
24052            "vpc.name",
24053            request.vpc.as_ref().map_or("", |m| m.name.as_str()),
24054            "projects/*/regions/*/vpcs/*",
24055        )?;
24056        let body = ::origincloud_core::json_body(
24057            request.vpc.as_ref().unwrap_or(&::core::default::Default::default()),
24058        )?;
24059        let query = ::origincloud_core::query(&request, &["vpc.name", "vpc"])?;
24060        let call = ::origincloud_core::Request::new(
24061                ::origincloud_core::Method::PATCH,
24062                format!("/v1beta1/{p0}"),
24063            )
24064            .with_body(body)
24065            .with_query(query)
24066            .idempotent();
24067        let operation = self.service.call(call).await?;
24068        Ok(
24069            ::origincloud_core::Operation::new(
24070                self.service.clone(),
24071                operation,
24072                "origincloud.network.v1beta1.Vpc",
24073            ),
24074        )
24075    }
24076    /// Deletes a VPC with its DNS policy association. Refused with
24077    /// `FAILED_PRECONDITION` while the VPC has subnets, security groups,
24078    /// ACLs, route tables or an internet gateway, except those the platform
24079    /// created with it, which are deleted with it. The operation is done once
24080    /// the change is recorded; the network applies it within seconds.
24081    ///
24082    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
24083    pub async fn delete_vpc(
24084        &self,
24085        mut request: DeleteVpcRequest,
24086    ) -> ::core::result::Result<
24087        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
24088        ::origincloud_core::Error,
24089    > {
24090        if request.request_id.is_empty() {
24091            request.request_id = ::origincloud_core::new_request_id();
24092        }
24093        let p0 = ::origincloud_core::path_value(
24094            "name",
24095            &request.name,
24096            "projects/*/regions/*/vpcs/*",
24097        )?;
24098        let query = ::origincloud_core::query(&request, &["name"])?;
24099        let call = ::origincloud_core::Request::new(
24100                ::origincloud_core::Method::DELETE,
24101                format!("/v1beta1/{p0}"),
24102            )
24103            .with_query(query)
24104            .idempotent();
24105        let operation = self.service.call(call).await?;
24106        Ok(
24107            ::origincloud_core::Operation::new(
24108                self.service.clone(),
24109                operation,
24110                "google.protobuf.Empty",
24111            ),
24112        )
24113    }
24114}