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 released when its instance is terminated.
647    #[prost(bool, tag = "6")]
648    pub auto_assigned: bool,
649    /// When the floating IP was created.
650    #[prost(message, optional, tag = "7")]
651    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
652    /// The principal that created the floating IP, such as `user:<id>` or
653    /// `service_account:<id>`; empty for one the platform created.
654    #[prost(string, tag = "8")]
655    pub creator: ::prost::alloc::string::String,
656    /// Labels of your own, at most 50. The `origin:name` tag is the name the
657    /// console shows.
658    #[prost(btree_map = "string, string", tag = "9")]
659    pub tags: ::prost::alloc::collections::BTreeMap<
660        ::prost::alloc::string::String,
661        ::prost::alloc::string::String,
662    >,
663}
664/// The request for GetFloatingIp.
665#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
666pub struct GetFloatingIpRequest {
667    /// The floating IP to return.
668    #[prost(string, tag = "1")]
669    pub name: ::prost::alloc::string::String,
670}
671/// The request for ListFloatingIps.
672#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
673pub struct ListFloatingIpsRequest {
674    /// The zone whose floating IPs to list, `projects/{project}/zones/{zone}`.
675    #[prost(string, tag = "1")]
676    pub parent: ::prost::alloc::string::String,
677    /// The most floating IPs to return; the server clamps it, and 0 means
678    /// its default.
679    #[prost(int32, tag = "2")]
680    pub page_size: i32,
681    /// A previous response's `next_page_token`, for the page after it.
682    #[prost(string, tag = "3")]
683    pub page_token: ::prost::alloc::string::String,
684}
685/// The response for ListFloatingIps.
686#[derive(Clone, PartialEq, ::prost::Message)]
687pub struct ListFloatingIpsResponse {
688    /// The floating IPs on this page.
689    #[prost(message, repeated, tag = "1")]
690    pub floating_ips: ::prost::alloc::vec::Vec<FloatingIp>,
691    /// The token for the next page; empty on the last one.
692    #[prost(string, tag = "2")]
693    pub next_page_token: ::prost::alloc::string::String,
694}
695/// The request for CreateFloatingIp.
696#[derive(Clone, PartialEq, ::prost::Message)]
697pub struct CreateFloatingIpRequest {
698    /// The zone to allocate the floating IP in,
699    /// `projects/{project}/zones/{zone}`.
700    #[prost(string, tag = "1")]
701    pub parent: ::prost::alloc::string::String,
702    /// The floating IP to allocate: optionally its tags.
703    #[prost(message, optional, tag = "2")]
704    pub floating_ip: ::core::option::Option<FloatingIp>,
705    /// A UUID; a repeat with the same id returns the first request's
706    /// operation instead of allocating a second floating IP.
707    #[prost(string, tag = "3")]
708    pub request_id: ::prost::alloc::string::String,
709}
710/// The request for UpdateFloatingIp.
711#[derive(Clone, PartialEq, ::prost::Message)]
712pub struct UpdateFloatingIpRequest {
713    /// The floating IP, by its name, with the fields to change.
714    #[prost(message, optional, tag = "1")]
715    pub floating_ip: ::core::option::Option<FloatingIp>,
716    /// The fields to change: `tags`, or `*`.
717    #[prost(message, optional, tag = "2")]
718    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
719    /// A UUID; a repeat with the same id returns the first request's
720    /// operation instead of changing the floating IP again.
721    #[prost(string, tag = "3")]
722    pub request_id: ::prost::alloc::string::String,
723}
724/// The request for DeleteFloatingIp.
725#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
726pub struct DeleteFloatingIpRequest {
727    /// The floating IP to release.
728    #[prost(string, tag = "1")]
729    pub name: ::prost::alloc::string::String,
730    /// A UUID; a repeat with the same id returns the first request's
731    /// operation.
732    #[prost(string, tag = "2")]
733    pub request_id: ::prost::alloc::string::String,
734}
735/// The network interface a floating IP reaches.
736#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
737pub struct FloatingIpAssociation {
738    /// The association's resource name. Its last segment is the network
739    /// interface's id.
740    #[prost(string, tag = "1")]
741    pub name: ::prost::alloc::string::String,
742    /// The network interface the address reaches, in the floating IP's project
743    /// and zone.
744    #[prost(string, tag = "2")]
745    pub network_interface: ::prost::alloc::string::String,
746    /// The interface's private IPv4 address the public one translates to.
747    #[prost(string, tag = "3")]
748    pub private_address: ::prost::alloc::string::String,
749}
750/// The request for GetFloatingIpAssociation.
751#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
752pub struct GetFloatingIpAssociationRequest {
753    /// The association to return.
754    #[prost(string, tag = "1")]
755    pub name: ::prost::alloc::string::String,
756}
757/// The request for ListFloatingIpAssociations.
758#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
759pub struct ListFloatingIpAssociationsRequest {
760    /// The floating IP whose association to list,
761    /// `projects/{project}/zones/{zone}/floatingIps/{floating_ip}`.
762    #[prost(string, tag = "1")]
763    pub parent: ::prost::alloc::string::String,
764    /// The most associations to return; the server clamps it, and 0 means
765    /// its default.
766    #[prost(int32, tag = "2")]
767    pub page_size: i32,
768    /// A previous response's `next_page_token`, for the page after it.
769    #[prost(string, tag = "3")]
770    pub page_token: ::prost::alloc::string::String,
771}
772/// The response for ListFloatingIpAssociations.
773#[derive(Clone, PartialEq, ::prost::Message)]
774pub struct ListFloatingIpAssociationsResponse {
775    /// The associations on this page.
776    #[prost(message, repeated, tag = "1")]
777    pub floating_ip_associations: ::prost::alloc::vec::Vec<FloatingIpAssociation>,
778    /// The token for the next page; empty on the last one.
779    #[prost(string, tag = "2")]
780    pub next_page_token: ::prost::alloc::string::String,
781}
782/// The request for CreateFloatingIpAssociation.
783#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
784pub struct CreateFloatingIpAssociationRequest {
785    /// The floating IP to associate,
786    /// `projects/{project}/zones/{zone}/floatingIps/{floating_ip}`.
787    #[prost(string, tag = "1")]
788    pub parent: ::prost::alloc::string::String,
789    /// The association to create: its network interface.
790    #[prost(message, optional, tag = "2")]
791    pub floating_ip_association: ::core::option::Option<FloatingIpAssociation>,
792    /// A UUID; a repeat with the same id returns the first request's
793    /// operation.
794    #[prost(string, tag = "3")]
795    pub request_id: ::prost::alloc::string::String,
796}
797/// The request for DeleteFloatingIpAssociation.
798#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
799pub struct DeleteFloatingIpAssociationRequest {
800    /// The association to remove.
801    #[prost(string, tag = "1")]
802    pub name: ::prost::alloc::string::String,
803    /// A UUID; a repeat with the same id returns the first request's
804    /// operation.
805    #[prost(string, tag = "2")]
806    pub request_id: ::prost::alloc::string::String,
807}
808/// A VPC's way to and from the internet.
809#[derive(Clone, PartialEq, ::prost::Message)]
810pub struct InternetGateway {
811    /// The gateway's resource name.
812    #[prost(string, tag = "1")]
813    pub name: ::prost::alloc::string::String,
814    /// The gateway's URN, the identifier access policies and the audit log
815    /// use.
816    #[prost(string, tag = "2")]
817    pub urn: ::prost::alloc::string::String,
818    /// The VPC the gateway connects, in the same project and region.
819    #[prost(string, tag = "3")]
820    pub vpc: ::prost::alloc::string::String,
821    /// When the internet gateway was created.
822    #[prost(message, optional, tag = "4")]
823    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
824    /// The principal that created the internet gateway, such as `user:<id>`
825    /// or `service_account:<id>`; empty for one the platform created.
826    #[prost(string, tag = "5")]
827    pub creator: ::prost::alloc::string::String,
828    /// Labels of your own, at most 50. The `origin:name` tag is the name the
829    /// console shows.
830    #[prost(btree_map = "string, string", tag = "6")]
831    pub tags: ::prost::alloc::collections::BTreeMap<
832        ::prost::alloc::string::String,
833        ::prost::alloc::string::String,
834    >,
835}
836/// The request for GetInternetGateway.
837#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
838pub struct GetInternetGatewayRequest {
839    /// The internet gateway to return.
840    #[prost(string, tag = "1")]
841    pub name: ::prost::alloc::string::String,
842}
843/// The request for ListInternetGateways.
844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
845pub struct ListInternetGatewaysRequest {
846    /// The region whose internet gateways to list,
847    /// `projects/{project}/regions/{region}`.
848    #[prost(string, tag = "1")]
849    pub parent: ::prost::alloc::string::String,
850    /// The most internet gateways to return; the server clamps it, and 0
851    /// means its default.
852    #[prost(int32, tag = "2")]
853    pub page_size: i32,
854    /// A previous response's `next_page_token`, for the page after it.
855    #[prost(string, tag = "3")]
856    pub page_token: ::prost::alloc::string::String,
857    /// Only the gateway of this VPC, when set.
858    #[prost(string, tag = "4")]
859    pub vpc: ::prost::alloc::string::String,
860}
861/// The response for ListInternetGateways.
862#[derive(Clone, PartialEq, ::prost::Message)]
863pub struct ListInternetGatewaysResponse {
864    /// The internet gateways on this page.
865    #[prost(message, repeated, tag = "1")]
866    pub internet_gateways: ::prost::alloc::vec::Vec<InternetGateway>,
867    /// The token for the next page; empty on the last one.
868    #[prost(string, tag = "2")]
869    pub next_page_token: ::prost::alloc::string::String,
870}
871/// The request for CreateInternetGateway.
872#[derive(Clone, PartialEq, ::prost::Message)]
873pub struct CreateInternetGatewayRequest {
874    /// The region to create the internet gateway in,
875    /// `projects/{project}/regions/{region}`.
876    #[prost(string, tag = "1")]
877    pub parent: ::prost::alloc::string::String,
878    /// The gateway to create: its VPC, and optionally its tags.
879    #[prost(message, optional, tag = "2")]
880    pub internet_gateway: ::core::option::Option<InternetGateway>,
881    /// A UUID; a repeat with the same id returns the first request's
882    /// operation instead of creating a second internet gateway.
883    #[prost(string, tag = "3")]
884    pub request_id: ::prost::alloc::string::String,
885}
886/// The request for UpdateInternetGateway.
887#[derive(Clone, PartialEq, ::prost::Message)]
888pub struct UpdateInternetGatewayRequest {
889    /// The internet gateway, by its name, with the fields to change.
890    #[prost(message, optional, tag = "1")]
891    pub internet_gateway: ::core::option::Option<InternetGateway>,
892    /// The fields to change: `tags`, or `*`.
893    #[prost(message, optional, tag = "2")]
894    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
895    /// A UUID; a repeat with the same id returns the first request's
896    /// operation instead of changing the internet gateway again.
897    #[prost(string, tag = "3")]
898    pub request_id: ::prost::alloc::string::String,
899}
900/// The request for DeleteInternetGateway.
901#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
902pub struct DeleteInternetGatewayRequest {
903    /// The internet gateway to delete.
904    #[prost(string, tag = "1")]
905    pub name: ::prost::alloc::string::String,
906    /// A UUID; a repeat with the same id returns the first request's
907    /// operation.
908    #[prost(string, tag = "2")]
909    pub request_id: ::prost::alloc::string::String,
910}
911/// Shared IPv4 egress through one floating IP.
912#[derive(Clone, PartialEq, ::prost::Message)]
913pub struct NatGateway {
914    /// The gateway's resource name.
915    #[prost(string, tag = "1")]
916    pub name: ::prost::alloc::string::String,
917    /// The gateway's URN, the identifier access policies and the audit log
918    /// use.
919    #[prost(string, tag = "2")]
920    pub urn: ::prost::alloc::string::String,
921    /// The public subnet the gateway lives in, in the same project and zone.
922    #[prost(string, tag = "3")]
923    pub subnet: ::prost::alloc::string::String,
924    /// The floating IP instances behind the gateway appear as, in the same
925    /// project and zone. It stays allocated when the gateway is deleted.
926    #[prost(string, tag = "4")]
927    pub floating_ip: ::prost::alloc::string::String,
928    /// The subnet's VPC.
929    #[prost(string, tag = "5")]
930    pub vpc: ::prost::alloc::string::String,
931    /// When the NAT gateway was created.
932    #[prost(message, optional, tag = "6")]
933    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
934    /// The principal that created the NAT gateway, such as `user:<id>` or
935    /// `service_account:<id>`; empty for one the platform created.
936    #[prost(string, tag = "7")]
937    pub creator: ::prost::alloc::string::String,
938    /// Labels of your own, at most 50. The `origin:name` tag is the name the
939    /// console shows.
940    #[prost(btree_map = "string, string", tag = "8")]
941    pub tags: ::prost::alloc::collections::BTreeMap<
942        ::prost::alloc::string::String,
943        ::prost::alloc::string::String,
944    >,
945}
946/// The request for GetNatGateway.
947#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
948pub struct GetNatGatewayRequest {
949    /// The NAT gateway to return.
950    #[prost(string, tag = "1")]
951    pub name: ::prost::alloc::string::String,
952}
953/// The request for ListNatGateways.
954#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
955pub struct ListNatGatewaysRequest {
956    /// The zone whose NAT gateways to list, `projects/{project}/zones/{zone}`.
957    #[prost(string, tag = "1")]
958    pub parent: ::prost::alloc::string::String,
959    /// The most NAT gateways to return; the server clamps it, and 0 means its
960    /// default.
961    #[prost(int32, tag = "2")]
962    pub page_size: i32,
963    /// A previous response's `next_page_token`, for the page after it.
964    #[prost(string, tag = "3")]
965    pub page_token: ::prost::alloc::string::String,
966}
967/// The response for ListNatGateways.
968#[derive(Clone, PartialEq, ::prost::Message)]
969pub struct ListNatGatewaysResponse {
970    /// The NAT gateways on this page.
971    #[prost(message, repeated, tag = "1")]
972    pub nat_gateways: ::prost::alloc::vec::Vec<NatGateway>,
973    /// The token for the next page; empty on the last one.
974    #[prost(string, tag = "2")]
975    pub next_page_token: ::prost::alloc::string::String,
976}
977/// The request for CreateNatGateway.
978#[derive(Clone, PartialEq, ::prost::Message)]
979pub struct CreateNatGatewayRequest {
980    /// The zone to create the NAT gateway in, `projects/{project}/zones/{zone}`.
981    #[prost(string, tag = "1")]
982    pub parent: ::prost::alloc::string::String,
983    /// The gateway to create: its subnet and floating IP, and optionally its
984    /// tags.
985    #[prost(message, optional, tag = "2")]
986    pub nat_gateway: ::core::option::Option<NatGateway>,
987    /// A UUID; a repeat with the same id returns the first request's
988    /// operation instead of creating a second NAT gateway.
989    #[prost(string, tag = "3")]
990    pub request_id: ::prost::alloc::string::String,
991}
992/// The request for UpdateNatGateway.
993#[derive(Clone, PartialEq, ::prost::Message)]
994pub struct UpdateNatGatewayRequest {
995    /// The NAT gateway, by its name, with the fields to change.
996    #[prost(message, optional, tag = "1")]
997    pub nat_gateway: ::core::option::Option<NatGateway>,
998    /// The fields to change: `tags`, or `*`.
999    #[prost(message, optional, tag = "2")]
1000    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1001    /// A UUID; a repeat with the same id returns the first request's
1002    /// operation instead of changing the NAT gateway again.
1003    #[prost(string, tag = "3")]
1004    pub request_id: ::prost::alloc::string::String,
1005}
1006/// The request for DeleteNatGateway.
1007#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1008pub struct DeleteNatGatewayRequest {
1009    /// The NAT gateway to delete.
1010    #[prost(string, tag = "1")]
1011    pub name: ::prost::alloc::string::String,
1012    /// A UUID; a repeat with the same id returns the first request's
1013    /// operation.
1014    #[prost(string, tag = "2")]
1015    pub request_id: ::prost::alloc::string::String,
1016}
1017/// A network interface: private addresses in one subnet, filtered by security
1018/// groups.
1019#[derive(Clone, PartialEq, ::prost::Message)]
1020pub struct NetworkInterface {
1021    /// The interface's resource name.
1022    #[prost(string, tag = "1")]
1023    pub name: ::prost::alloc::string::String,
1024    /// The interface's URN, the identifier access policies and the audit log
1025    /// use.
1026    #[prost(string, tag = "2")]
1027    pub urn: ::prost::alloc::string::String,
1028    /// The subnet the interface has its addresses in, in the same project
1029    /// and zone.
1030    #[prost(string, tag = "3")]
1031    pub subnet: ::prost::alloc::string::String,
1032    /// The security groups that filter the interface's traffic, as its
1033    /// security group associations (each a `SecurityGroupAssociation`) set
1034    /// them. The interface admits the traffic any of them allows. With none,
1035    /// it admits and sends nothing except replies to its own traffic and
1036    /// address resolution (ARP and IPv6 neighbor discovery): it is closed.
1037    #[prost(string, repeated, tag = "4")]
1038    pub security_groups: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1039    /// Whether a packet the instance sends must carry the interface's own
1040    /// MAC and IP address as its source; `true` when left unset. Turn it off
1041    /// for an instance that forwards traffic for other addresses, such as a
1042    /// router, a NAT instance or a shared virtual IP.
1043    #[prost(bool, optional, tag = "5")]
1044    pub source_address_check: ::core::option::Option<bool>,
1045    /// The interface's private IPv4 address.
1046    #[prost(string, tag = "6")]
1047    pub ipv4_address: ::prost::alloc::string::String,
1048    /// The interface's IPv6 address.
1049    #[prost(string, tag = "7")]
1050    pub ipv6_address: ::prost::alloc::string::String,
1051    /// Whether the interface is in use.
1052    #[prost(enumeration = "network_interface::State", tag = "8")]
1053    pub state: i32,
1054    /// The instance the interface is attached to; empty while it is
1055    /// `network_interface::State::Available`. An instance attaches interfaces when it is launched.
1056    #[prost(string, tag = "9")]
1057    pub instance: ::prost::alloc::string::String,
1058    /// When the network interface was created.
1059    #[prost(message, optional, tag = "10")]
1060    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1061    /// The principal that created the network interface, such as `user:<id>`
1062    /// or `service_account:<id>`; empty for one the platform created.
1063    #[prost(string, tag = "11")]
1064    pub creator: ::prost::alloc::string::String,
1065    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1066    /// console shows.
1067    #[prost(btree_map = "string, string", tag = "12")]
1068    pub tags: ::prost::alloc::collections::BTreeMap<
1069        ::prost::alloc::string::String,
1070        ::prost::alloc::string::String,
1071    >,
1072}
1073/// Nested message and enum types in `NetworkInterface`.
1074pub mod network_interface {
1075    /// Whether an interface is in use.
1076    #[derive(
1077        Clone,
1078        Copy,
1079        Debug,
1080        PartialEq,
1081        Eq,
1082        Hash,
1083        PartialOrd,
1084        Ord,
1085        ::prost::Enumeration
1086    )]
1087    #[repr(i32)]
1088    pub enum State {
1089        /// Not set.
1090        Unspecified = 0,
1091        /// Not attached to anything.
1092        Available = 1,
1093        /// Attached; `instance` names what to.
1094        Attached = 2,
1095    }
1096    impl State {
1097        /// String value of the enum field names used in the ProtoBuf definition.
1098        ///
1099        /// The values are not transformed in any way and thus are considered stable
1100        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1101        pub fn as_str_name(&self) -> &'static str {
1102            match self {
1103                Self::Unspecified => "STATE_UNSPECIFIED",
1104                Self::Available => "AVAILABLE",
1105                Self::Attached => "ATTACHED",
1106            }
1107        }
1108        /// Creates an enum from field names used in the ProtoBuf definition.
1109        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1110            match value {
1111                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1112                "AVAILABLE" => Some(Self::Available),
1113                "ATTACHED" => Some(Self::Attached),
1114                _ => None,
1115            }
1116        }
1117    }
1118}
1119/// The request for GetNetworkInterface.
1120#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1121pub struct GetNetworkInterfaceRequest {
1122    /// The network interface to return.
1123    #[prost(string, tag = "1")]
1124    pub name: ::prost::alloc::string::String,
1125}
1126/// The request for ListNetworkInterfaces.
1127#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1128pub struct ListNetworkInterfacesRequest {
1129    /// The zone whose network interfaces to list,
1130    /// `projects/{project}/zones/{zone}`.
1131    #[prost(string, tag = "1")]
1132    pub parent: ::prost::alloc::string::String,
1133    /// The most network interfaces to return; the server clamps it, and 0
1134    /// means its default.
1135    #[prost(int32, tag = "2")]
1136    pub page_size: i32,
1137    /// A previous response's `next_page_token`, for the page after it.
1138    #[prost(string, tag = "3")]
1139    pub page_token: ::prost::alloc::string::String,
1140    /// Only the interfaces in this subnet, when set.
1141    #[prost(string, tag = "4")]
1142    pub subnet: ::prost::alloc::string::String,
1143}
1144/// The response for ListNetworkInterfaces.
1145#[derive(Clone, PartialEq, ::prost::Message)]
1146pub struct ListNetworkInterfacesResponse {
1147    /// The network interfaces on this page.
1148    #[prost(message, repeated, tag = "1")]
1149    pub network_interfaces: ::prost::alloc::vec::Vec<NetworkInterface>,
1150    /// The token for the next page; empty on the last one.
1151    #[prost(string, tag = "2")]
1152    pub next_page_token: ::prost::alloc::string::String,
1153}
1154/// The request for CreateNetworkInterface.
1155#[derive(Clone, PartialEq, ::prost::Message)]
1156pub struct CreateNetworkInterfaceRequest {
1157    /// The zone to create the network interface in,
1158    /// `projects/{project}/zones/{zone}`.
1159    #[prost(string, tag = "1")]
1160    pub parent: ::prost::alloc::string::String,
1161    /// The interface to create: its subnet, and optionally its source-address
1162    /// check and tags.
1163    #[prost(message, optional, tag = "2")]
1164    pub network_interface: ::core::option::Option<NetworkInterface>,
1165    /// A UUID; a repeat with the same id returns the first request's
1166    /// operation instead of creating a second network interface.
1167    #[prost(string, tag = "3")]
1168    pub request_id: ::prost::alloc::string::String,
1169}
1170/// The request for UpdateNetworkInterface.
1171#[derive(Clone, PartialEq, ::prost::Message)]
1172pub struct UpdateNetworkInterfaceRequest {
1173    /// The network interface, by its name, with the fields to change.
1174    #[prost(message, optional, tag = "1")]
1175    pub network_interface: ::core::option::Option<NetworkInterface>,
1176    /// The fields to change: `source_address_check`, `tags`, or both. `*` is
1177    /// both.
1178    #[prost(message, optional, tag = "2")]
1179    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1180    /// A UUID; a repeat with the same id returns the first request's
1181    /// operation instead of changing the network interface again.
1182    #[prost(string, tag = "3")]
1183    pub request_id: ::prost::alloc::string::String,
1184}
1185/// The request for DeleteNetworkInterface.
1186#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1187pub struct DeleteNetworkInterfaceRequest {
1188    /// The network interface to delete.
1189    #[prost(string, tag = "1")]
1190    pub name: ::prost::alloc::string::String,
1191    /// A UUID; a repeat with the same id returns the first request's
1192    /// operation.
1193    #[prost(string, tag = "2")]
1194    pub request_id: ::prost::alloc::string::String,
1195}
1196/// A route: traffic to `destination` leaves through one gateway. Set exactly
1197/// one of `internet_gateway` and `nat_gateway`.
1198#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1199pub struct Route {
1200    /// The route's resource name.
1201    #[prost(string, tag = "1")]
1202    pub name: ::prost::alloc::string::String,
1203    /// The destination: the IPv4 default route, written with an all-zero
1204    /// address and prefix length 0, or the IPv6 one, `::/0`. A route table
1205    /// decides only where traffic to the internet goes.
1206    #[prost(string, tag = "2")]
1207    pub destination: ::prost::alloc::string::String,
1208    /// The internet gateway of the table's VPC to send the traffic to.
1209    #[prost(string, tag = "3")]
1210    pub internet_gateway: ::prost::alloc::string::String,
1211    /// The NAT gateway in the table's VPC to send the traffic to, for the
1212    /// IPv4 default route only: a NAT gateway translates IPv4 only. Named in
1213    /// the gateway's own zone; a name with another zone is refused with
1214    /// `INVALID_ARGUMENT`.
1215    #[prost(string, tag = "4")]
1216    pub nat_gateway: ::prost::alloc::string::String,
1217}
1218/// The request for GetRoute.
1219#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1220pub struct GetRouteRequest {
1221    /// The route to return.
1222    #[prost(string, tag = "1")]
1223    pub name: ::prost::alloc::string::String,
1224}
1225/// The request for ListRoutes.
1226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1227pub struct ListRoutesRequest {
1228    /// The route table whose routes to list,
1229    /// `projects/{project}/regions/{region}/routeTables/{route_table}`.
1230    #[prost(string, tag = "1")]
1231    pub parent: ::prost::alloc::string::String,
1232    /// The most routes to return; the server clamps it, and 0 means its
1233    /// default.
1234    #[prost(int32, tag = "2")]
1235    pub page_size: i32,
1236    /// A previous response's `next_page_token`, for the page after it.
1237    #[prost(string, tag = "3")]
1238    pub page_token: ::prost::alloc::string::String,
1239}
1240/// The response for ListRoutes.
1241#[derive(Clone, PartialEq, ::prost::Message)]
1242pub struct ListRoutesResponse {
1243    /// The routes on this page.
1244    #[prost(message, repeated, tag = "1")]
1245    pub routes: ::prost::alloc::vec::Vec<Route>,
1246    /// The token for the next page; empty on the last one.
1247    #[prost(string, tag = "2")]
1248    pub next_page_token: ::prost::alloc::string::String,
1249}
1250/// The request for CreateRoute.
1251#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1252pub struct CreateRouteRequest {
1253    /// The route table to add the route to,
1254    /// `projects/{project}/regions/{region}/routeTables/{route_table}`.
1255    #[prost(string, tag = "1")]
1256    pub parent: ::prost::alloc::string::String,
1257    /// The route to add: its destination and its gateway.
1258    #[prost(message, optional, tag = "2")]
1259    pub route: ::core::option::Option<Route>,
1260    /// A UUID; a repeat with the same id returns the first request's
1261    /// operation instead of adding the route again.
1262    #[prost(string, tag = "3")]
1263    pub request_id: ::prost::alloc::string::String,
1264}
1265/// The request for DeleteRoute.
1266#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1267pub struct DeleteRouteRequest {
1268    /// The route to remove.
1269    #[prost(string, tag = "1")]
1270    pub name: ::prost::alloc::string::String,
1271    /// A UUID; a repeat with the same id returns the first request's
1272    /// operation.
1273    #[prost(string, tag = "2")]
1274    pub request_id: ::prost::alloc::string::String,
1275}
1276/// Routes out of a VPC for the subnets associated with the table.
1277#[derive(Clone, PartialEq, ::prost::Message)]
1278pub struct RouteTable {
1279    /// The route table's resource name.
1280    #[prost(string, tag = "1")]
1281    pub name: ::prost::alloc::string::String,
1282    /// The route table's URN, the identifier access policies and the audit
1283    /// log use.
1284    #[prost(string, tag = "2")]
1285    pub urn: ::prost::alloc::string::String,
1286    /// The VPC the table routes for, in the same project and region.
1287    #[prost(string, tag = "3")]
1288    pub vpc: ::prost::alloc::string::String,
1289    /// Whether the platform created the table with the VPC, as its main route
1290    /// table. Only the project's default VPC has such resources. It can't be
1291    /// deleted, and goes with its VPC. Like any other table, it routes only
1292    /// for the subnets a route table association names it for.
1293    #[prost(bool, tag = "4")]
1294    pub main: bool,
1295    /// The VPC's own ranges, which every table reaches directly. Traffic
1296    /// within the VPC never needs a route.
1297    #[prost(string, repeated, tag = "5")]
1298    pub local_routes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1299    /// When the route table was created.
1300    #[prost(message, optional, tag = "6")]
1301    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1302    /// The principal that created the route table, such as `user:<id>` or
1303    /// `service_account:<id>`; empty for one the platform created.
1304    #[prost(string, tag = "7")]
1305    pub creator: ::prost::alloc::string::String,
1306    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1307    /// console shows.
1308    #[prost(btree_map = "string, string", tag = "8")]
1309    pub tags: ::prost::alloc::collections::BTreeMap<
1310        ::prost::alloc::string::String,
1311        ::prost::alloc::string::String,
1312    >,
1313}
1314/// The request for GetRouteTable.
1315#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1316pub struct GetRouteTableRequest {
1317    /// The route table to return.
1318    #[prost(string, tag = "1")]
1319    pub name: ::prost::alloc::string::String,
1320}
1321/// The request for ListRouteTables.
1322#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1323pub struct ListRouteTablesRequest {
1324    /// The region whose route tables to list,
1325    /// `projects/{project}/regions/{region}`.
1326    #[prost(string, tag = "1")]
1327    pub parent: ::prost::alloc::string::String,
1328    /// The most route tables to return; the server clamps it, and 0 means
1329    /// its default.
1330    #[prost(int32, tag = "2")]
1331    pub page_size: i32,
1332    /// A previous response's `next_page_token`, for the page after it.
1333    #[prost(string, tag = "3")]
1334    pub page_token: ::prost::alloc::string::String,
1335    /// Only the route tables of this VPC, when set.
1336    #[prost(string, tag = "4")]
1337    pub vpc: ::prost::alloc::string::String,
1338}
1339/// The response for ListRouteTables.
1340#[derive(Clone, PartialEq, ::prost::Message)]
1341pub struct ListRouteTablesResponse {
1342    /// The route tables on this page.
1343    #[prost(message, repeated, tag = "1")]
1344    pub route_tables: ::prost::alloc::vec::Vec<RouteTable>,
1345    /// The token for the next page; empty on the last one.
1346    #[prost(string, tag = "2")]
1347    pub next_page_token: ::prost::alloc::string::String,
1348}
1349/// The request for CreateRouteTable.
1350#[derive(Clone, PartialEq, ::prost::Message)]
1351pub struct CreateRouteTableRequest {
1352    /// The region to create the route table in,
1353    /// `projects/{project}/regions/{region}`.
1354    #[prost(string, tag = "1")]
1355    pub parent: ::prost::alloc::string::String,
1356    /// The route table to create: its VPC, and optionally its tags.
1357    #[prost(message, optional, tag = "2")]
1358    pub route_table: ::core::option::Option<RouteTable>,
1359    /// A UUID; a repeat with the same id returns the first request's
1360    /// operation instead of creating a second route table.
1361    #[prost(string, tag = "3")]
1362    pub request_id: ::prost::alloc::string::String,
1363}
1364/// The request for UpdateRouteTable.
1365#[derive(Clone, PartialEq, ::prost::Message)]
1366pub struct UpdateRouteTableRequest {
1367    /// The route table, by its name, with the fields to change.
1368    #[prost(message, optional, tag = "1")]
1369    pub route_table: ::core::option::Option<RouteTable>,
1370    /// The fields to change: `tags`, or `*`.
1371    #[prost(message, optional, tag = "2")]
1372    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1373    /// A UUID; a repeat with the same id returns the first request's
1374    /// operation instead of changing the route table again.
1375    #[prost(string, tag = "3")]
1376    pub request_id: ::prost::alloc::string::String,
1377}
1378/// The request for DeleteRouteTable.
1379#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1380pub struct DeleteRouteTableRequest {
1381    /// The route table to delete.
1382    #[prost(string, tag = "1")]
1383    pub name: ::prost::alloc::string::String,
1384    /// A UUID; a repeat with the same id returns the first request's
1385    /// operation.
1386    #[prost(string, tag = "2")]
1387    pub request_id: ::prost::alloc::string::String,
1388}
1389/// The route table a subnet uses.
1390#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1391pub struct RouteTableAssociation {
1392    /// The association's resource name. Its last segment is the route
1393    /// table's id.
1394    #[prost(string, tag = "1")]
1395    pub name: ::prost::alloc::string::String,
1396    /// The route table the subnet uses, in the subnet's VPC.
1397    #[prost(string, tag = "2")]
1398    pub route_table: ::prost::alloc::string::String,
1399}
1400/// The request for GetRouteTableAssociation.
1401#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1402pub struct GetRouteTableAssociationRequest {
1403    /// The association to return.
1404    #[prost(string, tag = "1")]
1405    pub name: ::prost::alloc::string::String,
1406}
1407/// The request for ListRouteTableAssociations.
1408#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1409pub struct ListRouteTableAssociationsRequest {
1410    /// The subnet whose association to list,
1411    /// `projects/{project}/zones/{zone}/subnets/{subnet}`.
1412    #[prost(string, tag = "1")]
1413    pub parent: ::prost::alloc::string::String,
1414    /// The most associations to return; the server clamps it, and 0 means
1415    /// its default.
1416    #[prost(int32, tag = "2")]
1417    pub page_size: i32,
1418    /// A previous response's `next_page_token`, for the page after it.
1419    #[prost(string, tag = "3")]
1420    pub page_token: ::prost::alloc::string::String,
1421}
1422/// The response for ListRouteTableAssociations.
1423#[derive(Clone, PartialEq, ::prost::Message)]
1424pub struct ListRouteTableAssociationsResponse {
1425    /// The associations on this page.
1426    #[prost(message, repeated, tag = "1")]
1427    pub route_table_associations: ::prost::alloc::vec::Vec<RouteTableAssociation>,
1428    /// The token for the next page; empty on the last one.
1429    #[prost(string, tag = "2")]
1430    pub next_page_token: ::prost::alloc::string::String,
1431}
1432/// The request for CreateRouteTableAssociation.
1433#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1434pub struct CreateRouteTableAssociationRequest {
1435    /// The subnet to associate the route table with,
1436    /// `projects/{project}/zones/{zone}/subnets/{subnet}`.
1437    #[prost(string, tag = "1")]
1438    pub parent: ::prost::alloc::string::String,
1439    /// The association to create: its route table.
1440    #[prost(message, optional, tag = "2")]
1441    pub route_table_association: ::core::option::Option<RouteTableAssociation>,
1442    /// A UUID; a repeat with the same id returns the first request's
1443    /// operation.
1444    #[prost(string, tag = "3")]
1445    pub request_id: ::prost::alloc::string::String,
1446}
1447/// The request for DeleteRouteTableAssociation.
1448#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1449pub struct DeleteRouteTableAssociationRequest {
1450    /// The association to remove.
1451    #[prost(string, tag = "1")]
1452    pub name: ::prost::alloc::string::String,
1453    /// A UUID; a repeat with the same id returns the first request's
1454    /// operation.
1455    #[prost(string, tag = "2")]
1456    pub request_id: ::prost::alloc::string::String,
1457}
1458/// Rules that allow traffic to and from the network interfaces associated
1459/// with the group.
1460#[derive(Clone, PartialEq, ::prost::Message)]
1461pub struct SecurityGroup {
1462    /// The group's resource name.
1463    #[prost(string, tag = "1")]
1464    pub name: ::prost::alloc::string::String,
1465    /// The group's URN, the identifier access policies and the audit log use.
1466    #[prost(string, tag = "2")]
1467    pub urn: ::prost::alloc::string::String,
1468    /// The VPC the group belongs to, in the same project and region.
1469    #[prost(string, tag = "3")]
1470    pub vpc: ::prost::alloc::string::String,
1471    /// Whether the platform created the group with the VPC. Only the
1472    /// project's default VPC has such resources. It can't be deleted, and
1473    /// goes with its VPC.
1474    #[prost(bool, tag = "4")]
1475    pub vpc_default: bool,
1476    /// When the security group was created.
1477    #[prost(message, optional, tag = "5")]
1478    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1479    /// The principal that created the security group, such as `user:<id>` or
1480    /// `service_account:<id>`; empty for one the platform created.
1481    #[prost(string, tag = "6")]
1482    pub creator: ::prost::alloc::string::String,
1483    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1484    /// console shows.
1485    #[prost(btree_map = "string, string", tag = "7")]
1486    pub tags: ::prost::alloc::collections::BTreeMap<
1487        ::prost::alloc::string::String,
1488        ::prost::alloc::string::String,
1489    >,
1490}
1491/// The request for GetSecurityGroup.
1492#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1493pub struct GetSecurityGroupRequest {
1494    /// The security group to return.
1495    #[prost(string, tag = "1")]
1496    pub name: ::prost::alloc::string::String,
1497}
1498/// The request for ListSecurityGroups.
1499#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1500pub struct ListSecurityGroupsRequest {
1501    /// The region whose security groups to list,
1502    /// `projects/{project}/regions/{region}`.
1503    #[prost(string, tag = "1")]
1504    pub parent: ::prost::alloc::string::String,
1505    /// The most security groups to return; the server clamps it, and 0
1506    /// means its default.
1507    #[prost(int32, tag = "2")]
1508    pub page_size: i32,
1509    /// A previous response's `next_page_token`, for the page after it.
1510    #[prost(string, tag = "3")]
1511    pub page_token: ::prost::alloc::string::String,
1512    /// Only the groups of this VPC, when set.
1513    #[prost(string, tag = "4")]
1514    pub vpc: ::prost::alloc::string::String,
1515}
1516/// The response for ListSecurityGroups.
1517#[derive(Clone, PartialEq, ::prost::Message)]
1518pub struct ListSecurityGroupsResponse {
1519    /// The security groups on this page.
1520    #[prost(message, repeated, tag = "1")]
1521    pub security_groups: ::prost::alloc::vec::Vec<SecurityGroup>,
1522    /// The token for the next page; empty on the last one.
1523    #[prost(string, tag = "2")]
1524    pub next_page_token: ::prost::alloc::string::String,
1525}
1526/// The request for CreateSecurityGroup.
1527#[derive(Clone, PartialEq, ::prost::Message)]
1528pub struct CreateSecurityGroupRequest {
1529    /// The region to create the security group in,
1530    /// `projects/{project}/regions/{region}`.
1531    #[prost(string, tag = "1")]
1532    pub parent: ::prost::alloc::string::String,
1533    /// The group to create: its VPC, and optionally its tags.
1534    #[prost(message, optional, tag = "2")]
1535    pub security_group: ::core::option::Option<SecurityGroup>,
1536    /// A UUID; a repeat with the same id returns the first request's
1537    /// operation instead of creating a second security group.
1538    #[prost(string, tag = "3")]
1539    pub request_id: ::prost::alloc::string::String,
1540}
1541/// The request for UpdateSecurityGroup.
1542#[derive(Clone, PartialEq, ::prost::Message)]
1543pub struct UpdateSecurityGroupRequest {
1544    /// The security group, by its name, with the fields to change.
1545    #[prost(message, optional, tag = "1")]
1546    pub security_group: ::core::option::Option<SecurityGroup>,
1547    /// The fields to change: `tags`, or `*`.
1548    #[prost(message, optional, tag = "2")]
1549    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1550    /// A UUID; a repeat with the same id returns the first request's
1551    /// operation instead of changing the security group again.
1552    #[prost(string, tag = "3")]
1553    pub request_id: ::prost::alloc::string::String,
1554}
1555/// The request for DeleteSecurityGroup.
1556#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1557pub struct DeleteSecurityGroupRequest {
1558    /// The security group to delete.
1559    #[prost(string, tag = "1")]
1560    pub name: ::prost::alloc::string::String,
1561    /// A UUID; a repeat with the same id returns the first request's
1562    /// operation.
1563    #[prost(string, tag = "2")]
1564    pub request_id: ::prost::alloc::string::String,
1565}
1566/// A security group that filters a network interface's traffic.
1567#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1568pub struct SecurityGroupAssociation {
1569    /// The association's resource name. Its last segment is the security
1570    /// group's id.
1571    #[prost(string, tag = "1")]
1572    pub name: ::prost::alloc::string::String,
1573    /// The security group, in the interface's VPC.
1574    #[prost(string, tag = "2")]
1575    pub security_group: ::prost::alloc::string::String,
1576}
1577/// The request for GetSecurityGroupAssociation.
1578#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1579pub struct GetSecurityGroupAssociationRequest {
1580    /// The association to return.
1581    #[prost(string, tag = "1")]
1582    pub name: ::prost::alloc::string::String,
1583}
1584/// The request for ListSecurityGroupAssociations.
1585#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1586pub struct ListSecurityGroupAssociationsRequest {
1587    /// The network interface whose associations to list,
1588    /// `projects/{project}/zones/{zone}/networkInterfaces/{network_interface}`.
1589    #[prost(string, tag = "1")]
1590    pub parent: ::prost::alloc::string::String,
1591    /// The most associations to return; the server clamps it, and 0 means
1592    /// its default.
1593    #[prost(int32, tag = "2")]
1594    pub page_size: i32,
1595    /// A previous response's `next_page_token`, for the page after it.
1596    #[prost(string, tag = "3")]
1597    pub page_token: ::prost::alloc::string::String,
1598}
1599/// The response for ListSecurityGroupAssociations.
1600#[derive(Clone, PartialEq, ::prost::Message)]
1601pub struct ListSecurityGroupAssociationsResponse {
1602    /// The associations on this page.
1603    #[prost(message, repeated, tag = "1")]
1604    pub security_group_associations: ::prost::alloc::vec::Vec<SecurityGroupAssociation>,
1605    /// The token for the next page; empty on the last one.
1606    #[prost(string, tag = "2")]
1607    pub next_page_token: ::prost::alloc::string::String,
1608}
1609/// The request for CreateSecurityGroupAssociation.
1610#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1611pub struct CreateSecurityGroupAssociationRequest {
1612    /// The network interface to associate the security group with,
1613    /// `projects/{project}/zones/{zone}/networkInterfaces/{network_interface}`.
1614    #[prost(string, tag = "1")]
1615    pub parent: ::prost::alloc::string::String,
1616    /// The association to create: its security group.
1617    #[prost(message, optional, tag = "2")]
1618    pub security_group_association: ::core::option::Option<SecurityGroupAssociation>,
1619    /// A UUID; a repeat with the same id returns the first request's
1620    /// operation.
1621    #[prost(string, tag = "3")]
1622    pub request_id: ::prost::alloc::string::String,
1623}
1624/// The request for DeleteSecurityGroupAssociation.
1625#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1626pub struct DeleteSecurityGroupAssociationRequest {
1627    /// The association to remove.
1628    #[prost(string, tag = "1")]
1629    pub name: ::prost::alloc::string::String,
1630    /// A UUID; a repeat with the same id returns the first request's
1631    /// operation.
1632    #[prost(string, tag = "2")]
1633    pub request_id: ::prost::alloc::string::String,
1634}
1635/// A security group rule: the traffic it allows in one direction, to or from
1636/// one peer. Set exactly one of `cidr_block`, `peer_security_group` and
1637/// `same_group`.
1638#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1639pub struct SecurityGroupRule {
1640    /// The rule's resource name.
1641    #[prost(string, tag = "1")]
1642    pub name: ::prost::alloc::string::String,
1643    /// Which traffic the rule applies to.
1644    #[prost(enumeration = "security_group_rule::Direction", tag = "2")]
1645    pub direction: i32,
1646    /// The traffic the rule allows.
1647    #[prost(enumeration = "security_group_rule::Protocol", tag = "3")]
1648    pub protocol: i32,
1649    /// The first port the rule matches, for `security_group_rule::Protocol::Tcp` and `security_group_rule::Protocol::Udp`. Each set of
1650    /// ports has one spelling, and the rule reads back in it: `first_port` 0
1651    /// and `last_port` 0 match every port, a `last_port` of 0 the single port
1652    /// `first_port`, and a `first_port` below `last_port` the range between
1653    /// them. Any other spelling of a set is refused with `INVALID_ARGUMENT`
1654    /// naming the one to use: `first_port` 22 and `last_port` 22 is
1655    /// `first_port` 22 and `last_port` 0, and 0 or 1 to 65535 is 0 and 0.
1656    #[prost(int32, tag = "4")]
1657    pub first_port: i32,
1658    /// The last port the rule matches, above `first_port`; 0 for the single
1659    /// port `first_port`, or with `first_port` 0 for every port.
1660    #[prost(int32, tag = "5")]
1661    pub last_port: i32,
1662    /// The peer as an address range: where admitted traffic comes from, or
1663    /// where sent traffic goes to.
1664    #[prost(string, tag = "6")]
1665    pub cidr_block: ::prost::alloc::string::String,
1666    /// The peer as another security group of the same VPC: its members'
1667    /// addresses. The rule's own group is refused here with
1668    /// `INVALID_ARGUMENT`: it is `same_group`.
1669    #[prost(string, tag = "7")]
1670    pub peer_security_group: ::prost::alloc::string::String,
1671    /// The peer as the rule's own group's members.
1672    #[prost(bool, tag = "8")]
1673    pub same_group: bool,
1674    /// What the rule is for.
1675    #[prost(string, tag = "9")]
1676    pub description: ::prost::alloc::string::String,
1677}
1678/// Nested message and enum types in `SecurityGroupRule`.
1679pub mod security_group_rule {
1680    /// Which traffic a rule applies to.
1681    #[derive(
1682        Clone,
1683        Copy,
1684        Debug,
1685        PartialEq,
1686        Eq,
1687        Hash,
1688        PartialOrd,
1689        Ord,
1690        ::prost::Enumeration
1691    )]
1692    #[repr(i32)]
1693    pub enum Direction {
1694        /// Not set.
1695        Unspecified = 0,
1696        /// Traffic an interface in the group admits.
1697        Ingress = 1,
1698        /// Traffic an interface in the group sends.
1699        Egress = 2,
1700    }
1701    impl Direction {
1702        /// String value of the enum field names used in the ProtoBuf definition.
1703        ///
1704        /// The values are not transformed in any way and thus are considered stable
1705        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1706        pub fn as_str_name(&self) -> &'static str {
1707            match self {
1708                Self::Unspecified => "DIRECTION_UNSPECIFIED",
1709                Self::Ingress => "INGRESS",
1710                Self::Egress => "EGRESS",
1711            }
1712        }
1713        /// Creates an enum from field names used in the ProtoBuf definition.
1714        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1715            match value {
1716                "DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
1717                "INGRESS" => Some(Self::Ingress),
1718                "EGRESS" => Some(Self::Egress),
1719                _ => None,
1720            }
1721        }
1722    }
1723    /// The traffic a rule matches.
1724    #[derive(
1725        Clone,
1726        Copy,
1727        Debug,
1728        PartialEq,
1729        Eq,
1730        Hash,
1731        PartialOrd,
1732        Ord,
1733        ::prost::Enumeration
1734    )]
1735    #[repr(i32)]
1736    pub enum Protocol {
1737        /// Not set.
1738        Unspecified = 0,
1739        /// Every protocol; ports don't apply.
1740        All = 1,
1741        /// TCP.
1742        Tcp = 2,
1743        /// UDP.
1744        Udp = 3,
1745        /// ICMP to and from IPv4 ranges, ICMPv6 to and from IPv6 ranges, every
1746        /// type and code; ports don't apply.
1747        Icmp = 4,
1748    }
1749    impl Protocol {
1750        /// String value of the enum field names used in the ProtoBuf definition.
1751        ///
1752        /// The values are not transformed in any way and thus are considered stable
1753        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1754        pub fn as_str_name(&self) -> &'static str {
1755            match self {
1756                Self::Unspecified => "PROTOCOL_UNSPECIFIED",
1757                Self::All => "ALL",
1758                Self::Tcp => "TCP",
1759                Self::Udp => "UDP",
1760                Self::Icmp => "ICMP",
1761            }
1762        }
1763        /// Creates an enum from field names used in the ProtoBuf definition.
1764        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1765            match value {
1766                "PROTOCOL_UNSPECIFIED" => Some(Self::Unspecified),
1767                "ALL" => Some(Self::All),
1768                "TCP" => Some(Self::Tcp),
1769                "UDP" => Some(Self::Udp),
1770                "ICMP" => Some(Self::Icmp),
1771                _ => None,
1772            }
1773        }
1774    }
1775}
1776/// The request for GetSecurityGroupRule.
1777#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1778pub struct GetSecurityGroupRuleRequest {
1779    /// The rule to return.
1780    #[prost(string, tag = "1")]
1781    pub name: ::prost::alloc::string::String,
1782}
1783/// The request for ListSecurityGroupRules.
1784#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1785pub struct ListSecurityGroupRulesRequest {
1786    /// The security group whose rules to list,
1787    /// `projects/{project}/regions/{region}/securityGroups/{security_group}`.
1788    #[prost(string, tag = "1")]
1789    pub parent: ::prost::alloc::string::String,
1790    /// The most rules to return; the server clamps it, and 0 means its
1791    /// default.
1792    #[prost(int32, tag = "2")]
1793    pub page_size: i32,
1794    /// A previous response's `next_page_token`, for the page after it.
1795    #[prost(string, tag = "3")]
1796    pub page_token: ::prost::alloc::string::String,
1797}
1798/// The response for ListSecurityGroupRules.
1799#[derive(Clone, PartialEq, ::prost::Message)]
1800pub struct ListSecurityGroupRulesResponse {
1801    /// The rules on this page.
1802    #[prost(message, repeated, tag = "1")]
1803    pub security_group_rules: ::prost::alloc::vec::Vec<SecurityGroupRule>,
1804    /// The token for the next page; empty on the last one.
1805    #[prost(string, tag = "2")]
1806    pub next_page_token: ::prost::alloc::string::String,
1807}
1808/// The request for CreateSecurityGroupRule.
1809#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1810pub struct CreateSecurityGroupRuleRequest {
1811    /// The security group to add the rule to,
1812    /// `projects/{project}/regions/{region}/securityGroups/{security_group}`.
1813    #[prost(string, tag = "1")]
1814    pub parent: ::prost::alloc::string::String,
1815    /// The rule to add.
1816    #[prost(message, optional, tag = "2")]
1817    pub security_group_rule: ::core::option::Option<SecurityGroupRule>,
1818    /// A UUID; a repeat with the same id returns the first request's
1819    /// operation instead of adding the rule again.
1820    #[prost(string, tag = "3")]
1821    pub request_id: ::prost::alloc::string::String,
1822}
1823/// The request for DeleteSecurityGroupRule.
1824#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1825pub struct DeleteSecurityGroupRuleRequest {
1826    /// The rule to remove.
1827    #[prost(string, tag = "1")]
1828    pub name: ::prost::alloc::string::String,
1829    /// A UUID; a repeat with the same id returns the first request's
1830    /// operation.
1831    #[prost(string, tag = "2")]
1832    pub request_id: ::prost::alloc::string::String,
1833}
1834/// The part of a VPC in one zone, with its own address ranges.
1835#[derive(Clone, PartialEq, ::prost::Message)]
1836pub struct Subnet {
1837    /// The subnet's resource name.
1838    #[prost(string, tag = "1")]
1839    pub name: ::prost::alloc::string::String,
1840    /// The subnet's URN, the identifier access policies and the audit log
1841    /// use.
1842    #[prost(string, tag = "2")]
1843    pub urn: ::prost::alloc::string::String,
1844    /// The VPC the subnet is part of, in the same project and in the zone's
1845    /// region. For now a VPC lives in one zone of its region: a subnet in
1846    /// another zone is refused with `FAILED_PRECONDITION`.
1847    #[prost(string, tag = "3")]
1848    pub vpc: ::prost::alloc::string::String,
1849    /// The route table that decides where the subnet's traffic goes, as the
1850    /// subnet's route table association (a `RouteTableAssociation`) sets it.
1851    /// Empty while it has none: the subnet then has no route out of its VPC
1852    /// and counts as a subnet whose route table has no default route. Internet
1853    /// access is decided per VPC and address family, from the route tables of
1854    /// all its subnets (a `Route` with that family's default destination).
1855    #[prost(string, tag = "4")]
1856    pub route_table: ::prost::alloc::string::String,
1857    /// The ACL that filters traffic in and out of the subnet, as the subnet's
1858    /// ACL association (an `AclAssociation`) sets it. Empty while it has
1859    /// none: nothing is filtered at the subnet's edge, and its interfaces'
1860    /// security groups still apply.
1861    #[prost(string, tag = "5")]
1862    pub acl: ::prost::alloc::string::String,
1863    /// Whether a launch that creates its network interface in the subnet,
1864    /// as the GraphQL API's `launchInstance` does, gives that interface a
1865    /// floating IP of its own, released when the instance is terminated.
1866    /// `CreateInstance` takes existing interfaces, so an instance it launches
1867    /// gets none: create a floating IP and a floating IP association for its
1868    /// interface instead.
1869    #[prost(bool, tag = "6")]
1870    pub auto_assign_public_ip: bool,
1871    /// The subnet's IPv4 range.
1872    #[prost(string, tag = "7")]
1873    pub ipv4_cidr_block: ::prost::alloc::string::String,
1874    /// The subnet's IPv6 range, a `/72`.
1875    #[prost(string, tag = "8")]
1876    pub ipv6_cidr_block: ::prost::alloc::string::String,
1877    /// The IPv4 address of the subnet's router.
1878    #[prost(string, tag = "9")]
1879    pub ipv4_gateway: ::prost::alloc::string::String,
1880    /// The IPv6 address of the subnet's router.
1881    #[prost(string, tag = "10")]
1882    pub ipv6_gateway: ::prost::alloc::string::String,
1883    /// The DNS servers instances in the subnet use over IPv4.
1884    #[prost(string, repeated, tag = "11")]
1885    pub ipv4_dns_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1886    /// The DNS servers instances in the subnet use over IPv6.
1887    #[prost(string, repeated, tag = "12")]
1888    pub ipv6_dns_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1889    /// How many IPv4 addresses in the subnet are free for interfaces.
1890    #[prost(int64, tag = "13")]
1891    pub available_ipv4_address_count: i64,
1892    /// When the subnet was created.
1893    #[prost(message, optional, tag = "14")]
1894    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1895    /// The principal that created the subnet, such as `user:<id>` or
1896    /// `service_account:<id>`; empty for one the platform created.
1897    #[prost(string, tag = "15")]
1898    pub creator: ::prost::alloc::string::String,
1899    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1900    /// console shows.
1901    #[prost(btree_map = "string, string", tag = "16")]
1902    pub tags: ::prost::alloc::collections::BTreeMap<
1903        ::prost::alloc::string::String,
1904        ::prost::alloc::string::String,
1905    >,
1906}
1907/// The request for GetSubnet.
1908#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1909pub struct GetSubnetRequest {
1910    /// The subnet to return.
1911    #[prost(string, tag = "1")]
1912    pub name: ::prost::alloc::string::String,
1913}
1914/// The request for ListSubnets.
1915#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1916pub struct ListSubnetsRequest {
1917    /// The zone whose subnets to list, `projects/{project}/zones/{zone}`.
1918    #[prost(string, tag = "1")]
1919    pub parent: ::prost::alloc::string::String,
1920    /// The most subnets to return; the server clamps it, and 0 means its
1921    /// default.
1922    #[prost(int32, tag = "2")]
1923    pub page_size: i32,
1924    /// A previous response's `next_page_token`, for the page after it.
1925    #[prost(string, tag = "3")]
1926    pub page_token: ::prost::alloc::string::String,
1927    /// Only the subnets of this VPC, when set.
1928    #[prost(string, tag = "4")]
1929    pub vpc: ::prost::alloc::string::String,
1930}
1931/// The response for ListSubnets.
1932#[derive(Clone, PartialEq, ::prost::Message)]
1933pub struct ListSubnetsResponse {
1934    /// The subnets on this page.
1935    #[prost(message, repeated, tag = "1")]
1936    pub subnets: ::prost::alloc::vec::Vec<Subnet>,
1937    /// The token for the next page; empty on the last one.
1938    #[prost(string, tag = "2")]
1939    pub next_page_token: ::prost::alloc::string::String,
1940}
1941/// The request for CreateSubnet.
1942#[derive(Clone, PartialEq, ::prost::Message)]
1943pub struct CreateSubnetRequest {
1944    /// The zone to create the subnet in, `projects/{project}/zones/{zone}`.
1945    #[prost(string, tag = "1")]
1946    pub parent: ::prost::alloc::string::String,
1947    /// The subnet to create: its VPC, and optionally its public address
1948    /// assignment and tags.
1949    #[prost(message, optional, tag = "2")]
1950    pub subnet: ::core::option::Option<Subnet>,
1951    /// A UUID; a repeat with the same id returns the first request's
1952    /// operation instead of creating a second subnet.
1953    #[prost(string, tag = "3")]
1954    pub request_id: ::prost::alloc::string::String,
1955}
1956/// The request for UpdateSubnet.
1957#[derive(Clone, PartialEq, ::prost::Message)]
1958pub struct UpdateSubnetRequest {
1959    /// The subnet, by its name, with the fields to change.
1960    #[prost(message, optional, tag = "1")]
1961    pub subnet: ::core::option::Option<Subnet>,
1962    /// The fields to change: `auto_assign_public_ip`, `tags`, or both. `*`
1963    /// is both.
1964    #[prost(message, optional, tag = "2")]
1965    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1966    /// A UUID; a repeat with the same id returns the first request's
1967    /// operation instead of changing the subnet again.
1968    #[prost(string, tag = "3")]
1969    pub request_id: ::prost::alloc::string::String,
1970}
1971/// The request for DeleteSubnet.
1972#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1973pub struct DeleteSubnetRequest {
1974    /// The subnet to delete.
1975    #[prost(string, tag = "1")]
1976    pub name: ::prost::alloc::string::String,
1977    /// A UUID; a repeat with the same id returns the first request's
1978    /// operation.
1979    #[prost(string, tag = "2")]
1980    pub request_id: ::prost::alloc::string::String,
1981}
1982/// A private network in one region.
1983#[derive(Clone, PartialEq, ::prost::Message)]
1984pub struct Vpc {
1985    /// The VPC's resource name.
1986    #[prost(string, tag = "1")]
1987    pub name: ::prost::alloc::string::String,
1988    /// The VPC's URN, the identifier access policies and the audit log use.
1989    #[prost(string, tag = "2")]
1990    pub urn: ::prost::alloc::string::String,
1991    /// The private IPv4 range (RFC 1918), from `/16` to `/28`. A free `/16`
1992    /// of the `172.16` private block when left empty. Subnets are carved from
1993    /// it in equal sizes.
1994    #[prost(string, tag = "3")]
1995    pub ipv4_cidr_block: ::prost::alloc::string::String,
1996    /// The IPv6 range the platform assigned, a `/56`. Each subnet gets a
1997    /// `/72` of it.
1998    #[prost(string, tag = "4")]
1999    pub ipv6_cidr_block: ::prost::alloc::string::String,
2000    /// The prefix length of every subnet's IPv4 range.
2001    #[prost(int32, tag = "5")]
2002    pub subnet_ipv4_prefix_length: i32,
2003    /// How many more subnets the VPC's address space holds.
2004    #[prost(int32, tag = "6")]
2005    pub available_subnet_count: i32,
2006    /// The DNS policy the VPC's resolver relays through, as the VPC's DNS
2007    /// policy association (a `DnsPolicyAssociation`) sets it. Empty while it
2008    /// has none: the VPC then relays through the project's default DNS policy
2009    /// in its region.
2010    #[prost(string, tag = "7")]
2011    pub dns_policy: ::prost::alloc::string::String,
2012    /// The VPC's internet gateway; empty while it has none.
2013    #[prost(string, tag = "8")]
2014    pub internet_gateway: ::prost::alloc::string::String,
2015    /// Whether this is the project's default VPC. Unlike a VPC you create, the
2016    /// platform creates it with defaults: an internet gateway, and a security
2017    /// group, an ACL and a main route table marked as created with the VPC
2018    /// (`vpc_default` on the group and the ACL, `main` on the route table).
2019    #[prost(bool, tag = "9")]
2020    pub project_default: bool,
2021    /// When the VPC was created.
2022    #[prost(message, optional, tag = "10")]
2023    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
2024    /// The principal that created the VPC, such as `user:<id>` or
2025    /// `service_account:<id>`; empty for one the platform created.
2026    #[prost(string, tag = "11")]
2027    pub creator: ::prost::alloc::string::String,
2028    /// Labels of your own, at most 50. The `origin:name` tag is the name the
2029    /// console shows.
2030    #[prost(btree_map = "string, string", tag = "12")]
2031    pub tags: ::prost::alloc::collections::BTreeMap<
2032        ::prost::alloc::string::String,
2033        ::prost::alloc::string::String,
2034    >,
2035}
2036/// The request for GetVpc.
2037#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2038pub struct GetVpcRequest {
2039    /// The VPC to return.
2040    #[prost(string, tag = "1")]
2041    pub name: ::prost::alloc::string::String,
2042}
2043/// The request for ListVpcs.
2044#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2045pub struct ListVpcsRequest {
2046    /// The region whose VPCs to list, `projects/{project}/regions/{region}`.
2047    #[prost(string, tag = "1")]
2048    pub parent: ::prost::alloc::string::String,
2049    /// The most VPCs to return; the server clamps it, and 0 means its
2050    /// default.
2051    #[prost(int32, tag = "2")]
2052    pub page_size: i32,
2053    /// A previous response's `next_page_token`, for the page after it.
2054    #[prost(string, tag = "3")]
2055    pub page_token: ::prost::alloc::string::String,
2056}
2057/// The response for ListVpcs.
2058#[derive(Clone, PartialEq, ::prost::Message)]
2059pub struct ListVpcsResponse {
2060    /// The VPCs on this page.
2061    #[prost(message, repeated, tag = "1")]
2062    pub vpcs: ::prost::alloc::vec::Vec<Vpc>,
2063    /// The token for the next page; empty on the last one.
2064    #[prost(string, tag = "2")]
2065    pub next_page_token: ::prost::alloc::string::String,
2066}
2067/// The request for CreateVpc.
2068#[derive(Clone, PartialEq, ::prost::Message)]
2069pub struct CreateVpcRequest {
2070    /// The region to create the VPC in, `projects/{project}/regions/{region}`.
2071    #[prost(string, tag = "1")]
2072    pub parent: ::prost::alloc::string::String,
2073    /// The VPC to create: optionally its IPv4 range and tags.
2074    #[prost(message, optional, tag = "2")]
2075    pub vpc: ::core::option::Option<Vpc>,
2076    /// A UUID; a repeat with the same id returns the first request's
2077    /// operation instead of creating a second VPC.
2078    #[prost(string, tag = "3")]
2079    pub request_id: ::prost::alloc::string::String,
2080}
2081/// The request for UpdateVpc.
2082#[derive(Clone, PartialEq, ::prost::Message)]
2083pub struct UpdateVpcRequest {
2084    /// The VPC, by its name, with the fields to change.
2085    #[prost(message, optional, tag = "1")]
2086    pub vpc: ::core::option::Option<Vpc>,
2087    /// The fields to change: `tags`, or `*`.
2088    #[prost(message, optional, tag = "2")]
2089    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
2090    /// A UUID; a repeat with the same id returns the first request's
2091    /// operation instead of changing the VPC again.
2092    #[prost(string, tag = "3")]
2093    pub request_id: ::prost::alloc::string::String,
2094}
2095/// The request for DeleteVpc.
2096#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2097pub struct DeleteVpcRequest {
2098    /// The VPC to delete.
2099    #[prost(string, tag = "1")]
2100    pub name: ::prost::alloc::string::String,
2101    /// A UUID; a repeat with the same id returns the first request's
2102    /// operation.
2103    #[prost(string, tag = "2")]
2104    pub request_id: ::prost::alloc::string::String,
2105}
2106impl serde::Serialize for Acl {
2107    #[allow(deprecated)]
2108    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2109    where
2110        S: serde::Serializer,
2111    {
2112        use serde::ser::SerializeStruct;
2113        let mut len = 0;
2114        if !self.name.is_empty() {
2115            len += 1;
2116        }
2117        if !self.urn.is_empty() {
2118            len += 1;
2119        }
2120        if !self.vpc.is_empty() {
2121            len += 1;
2122        }
2123        if self.vpc_default {
2124            len += 1;
2125        }
2126        if self.create_time.is_some() {
2127            len += 1;
2128        }
2129        if !self.creator.is_empty() {
2130            len += 1;
2131        }
2132        if !self.tags.is_empty() {
2133            len += 1;
2134        }
2135        let mut struct_ser = serializer
2136            .serialize_struct("origincloud.network.v1beta1.Acl", len)?;
2137        if !self.name.is_empty() {
2138            struct_ser.serialize_field("name", &self.name)?;
2139        }
2140        if !self.urn.is_empty() {
2141            struct_ser.serialize_field("urn", &self.urn)?;
2142        }
2143        if !self.vpc.is_empty() {
2144            struct_ser.serialize_field("vpc", &self.vpc)?;
2145        }
2146        if self.vpc_default {
2147            struct_ser.serialize_field("vpcDefault", &self.vpc_default)?;
2148        }
2149        if let Some(v) = self.create_time.as_ref() {
2150            struct_ser.serialize_field("createTime", v)?;
2151        }
2152        if !self.creator.is_empty() {
2153            struct_ser.serialize_field("creator", &self.creator)?;
2154        }
2155        if !self.tags.is_empty() {
2156            struct_ser.serialize_field("tags", &self.tags)?;
2157        }
2158        struct_ser.end()
2159    }
2160}
2161impl<'de> serde::Deserialize<'de> for Acl {
2162    #[allow(deprecated)]
2163    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2164    where
2165        D: serde::Deserializer<'de>,
2166    {
2167        const FIELDS: &[&str] = &[
2168            "name",
2169            "urn",
2170            "vpc",
2171            "vpc_default",
2172            "vpcDefault",
2173            "create_time",
2174            "createTime",
2175            "creator",
2176            "tags",
2177        ];
2178        #[allow(clippy::enum_variant_names)]
2179        enum GeneratedField {
2180            Name,
2181            Urn,
2182            Vpc,
2183            VpcDefault,
2184            CreateTime,
2185            Creator,
2186            Tags,
2187            __SkipField__,
2188        }
2189        impl<'de> serde::Deserialize<'de> for GeneratedField {
2190            fn deserialize<D>(
2191                deserializer: D,
2192            ) -> std::result::Result<GeneratedField, D::Error>
2193            where
2194                D: serde::Deserializer<'de>,
2195            {
2196                struct GeneratedVisitor;
2197                impl serde::de::Visitor<'_> for GeneratedVisitor {
2198                    type Value = GeneratedField;
2199                    fn expecting(
2200                        &self,
2201                        formatter: &mut std::fmt::Formatter<'_>,
2202                    ) -> std::fmt::Result {
2203                        write!(formatter, "expected one of: {:?}", & FIELDS)
2204                    }
2205                    #[allow(unused_variables)]
2206                    fn visit_str<E>(
2207                        self,
2208                        value: &str,
2209                    ) -> std::result::Result<GeneratedField, E>
2210                    where
2211                        E: serde::de::Error,
2212                    {
2213                        match value {
2214                            "name" => Ok(GeneratedField::Name),
2215                            "urn" => Ok(GeneratedField::Urn),
2216                            "vpc" => Ok(GeneratedField::Vpc),
2217                            "vpcDefault" | "vpc_default" => {
2218                                Ok(GeneratedField::VpcDefault)
2219                            }
2220                            "createTime" | "create_time" => {
2221                                Ok(GeneratedField::CreateTime)
2222                            }
2223                            "creator" => Ok(GeneratedField::Creator),
2224                            "tags" => Ok(GeneratedField::Tags),
2225                            _ => Ok(GeneratedField::__SkipField__),
2226                        }
2227                    }
2228                }
2229                deserializer.deserialize_identifier(GeneratedVisitor)
2230            }
2231        }
2232        struct GeneratedVisitor;
2233        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2234            type Value = Acl;
2235            fn expecting(
2236                &self,
2237                formatter: &mut std::fmt::Formatter<'_>,
2238            ) -> std::fmt::Result {
2239                formatter.write_str("struct origincloud.network.v1beta1.Acl")
2240            }
2241            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Acl, V::Error>
2242            where
2243                V: serde::de::MapAccess<'de>,
2244            {
2245                let mut name__ = None;
2246                let mut urn__ = None;
2247                let mut vpc__ = None;
2248                let mut vpc_default__ = None;
2249                let mut create_time__ = None;
2250                let mut creator__ = None;
2251                let mut tags__ = None;
2252                while let Some(k) = map_.next_key()? {
2253                    match k {
2254                        GeneratedField::Name => {
2255                            if name__.is_some() {
2256                                return Err(serde::de::Error::duplicate_field("name"));
2257                            }
2258                            name__ = Some(map_.next_value()?);
2259                        }
2260                        GeneratedField::Urn => {
2261                            if urn__.is_some() {
2262                                return Err(serde::de::Error::duplicate_field("urn"));
2263                            }
2264                            urn__ = Some(map_.next_value()?);
2265                        }
2266                        GeneratedField::Vpc => {
2267                            if vpc__.is_some() {
2268                                return Err(serde::de::Error::duplicate_field("vpc"));
2269                            }
2270                            vpc__ = Some(map_.next_value()?);
2271                        }
2272                        GeneratedField::VpcDefault => {
2273                            if vpc_default__.is_some() {
2274                                return Err(serde::de::Error::duplicate_field("vpcDefault"));
2275                            }
2276                            vpc_default__ = Some(map_.next_value()?);
2277                        }
2278                        GeneratedField::CreateTime => {
2279                            if create_time__.is_some() {
2280                                return Err(serde::de::Error::duplicate_field("createTime"));
2281                            }
2282                            create_time__ = map_.next_value()?;
2283                        }
2284                        GeneratedField::Creator => {
2285                            if creator__.is_some() {
2286                                return Err(serde::de::Error::duplicate_field("creator"));
2287                            }
2288                            creator__ = Some(map_.next_value()?);
2289                        }
2290                        GeneratedField::Tags => {
2291                            if tags__.is_some() {
2292                                return Err(serde::de::Error::duplicate_field("tags"));
2293                            }
2294                            tags__ = Some(
2295                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
2296                            );
2297                        }
2298                        GeneratedField::__SkipField__ => {
2299                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2300                        }
2301                    }
2302                }
2303                Ok(Acl {
2304                    name: name__.unwrap_or_default(),
2305                    urn: urn__.unwrap_or_default(),
2306                    vpc: vpc__.unwrap_or_default(),
2307                    vpc_default: vpc_default__.unwrap_or_default(),
2308                    create_time: create_time__,
2309                    creator: creator__.unwrap_or_default(),
2310                    tags: tags__.unwrap_or_default(),
2311                })
2312            }
2313        }
2314        deserializer
2315            .deserialize_struct(
2316                "origincloud.network.v1beta1.Acl",
2317                FIELDS,
2318                GeneratedVisitor,
2319            )
2320    }
2321}
2322impl serde::Serialize for AclAssociation {
2323    #[allow(deprecated)]
2324    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2325    where
2326        S: serde::Serializer,
2327    {
2328        use serde::ser::SerializeStruct;
2329        let mut len = 0;
2330        if !self.name.is_empty() {
2331            len += 1;
2332        }
2333        if !self.acl.is_empty() {
2334            len += 1;
2335        }
2336        let mut struct_ser = serializer
2337            .serialize_struct("origincloud.network.v1beta1.AclAssociation", len)?;
2338        if !self.name.is_empty() {
2339            struct_ser.serialize_field("name", &self.name)?;
2340        }
2341        if !self.acl.is_empty() {
2342            struct_ser.serialize_field("acl", &self.acl)?;
2343        }
2344        struct_ser.end()
2345    }
2346}
2347impl<'de> serde::Deserialize<'de> for AclAssociation {
2348    #[allow(deprecated)]
2349    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2350    where
2351        D: serde::Deserializer<'de>,
2352    {
2353        const FIELDS: &[&str] = &["name", "acl"];
2354        #[allow(clippy::enum_variant_names)]
2355        enum GeneratedField {
2356            Name,
2357            Acl,
2358            __SkipField__,
2359        }
2360        impl<'de> serde::Deserialize<'de> for GeneratedField {
2361            fn deserialize<D>(
2362                deserializer: D,
2363            ) -> std::result::Result<GeneratedField, D::Error>
2364            where
2365                D: serde::Deserializer<'de>,
2366            {
2367                struct GeneratedVisitor;
2368                impl serde::de::Visitor<'_> for GeneratedVisitor {
2369                    type Value = GeneratedField;
2370                    fn expecting(
2371                        &self,
2372                        formatter: &mut std::fmt::Formatter<'_>,
2373                    ) -> std::fmt::Result {
2374                        write!(formatter, "expected one of: {:?}", & FIELDS)
2375                    }
2376                    #[allow(unused_variables)]
2377                    fn visit_str<E>(
2378                        self,
2379                        value: &str,
2380                    ) -> std::result::Result<GeneratedField, E>
2381                    where
2382                        E: serde::de::Error,
2383                    {
2384                        match value {
2385                            "name" => Ok(GeneratedField::Name),
2386                            "acl" => Ok(GeneratedField::Acl),
2387                            _ => Ok(GeneratedField::__SkipField__),
2388                        }
2389                    }
2390                }
2391                deserializer.deserialize_identifier(GeneratedVisitor)
2392            }
2393        }
2394        struct GeneratedVisitor;
2395        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2396            type Value = AclAssociation;
2397            fn expecting(
2398                &self,
2399                formatter: &mut std::fmt::Formatter<'_>,
2400            ) -> std::fmt::Result {
2401                formatter.write_str("struct origincloud.network.v1beta1.AclAssociation")
2402            }
2403            fn visit_map<V>(
2404                self,
2405                mut map_: V,
2406            ) -> std::result::Result<AclAssociation, V::Error>
2407            where
2408                V: serde::de::MapAccess<'de>,
2409            {
2410                let mut name__ = None;
2411                let mut acl__ = None;
2412                while let Some(k) = map_.next_key()? {
2413                    match k {
2414                        GeneratedField::Name => {
2415                            if name__.is_some() {
2416                                return Err(serde::de::Error::duplicate_field("name"));
2417                            }
2418                            name__ = Some(map_.next_value()?);
2419                        }
2420                        GeneratedField::Acl => {
2421                            if acl__.is_some() {
2422                                return Err(serde::de::Error::duplicate_field("acl"));
2423                            }
2424                            acl__ = Some(map_.next_value()?);
2425                        }
2426                        GeneratedField::__SkipField__ => {
2427                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2428                        }
2429                    }
2430                }
2431                Ok(AclAssociation {
2432                    name: name__.unwrap_or_default(),
2433                    acl: acl__.unwrap_or_default(),
2434                })
2435            }
2436        }
2437        deserializer
2438            .deserialize_struct(
2439                "origincloud.network.v1beta1.AclAssociation",
2440                FIELDS,
2441                GeneratedVisitor,
2442            )
2443    }
2444}
2445impl serde::Serialize for AclRule {
2446    #[allow(deprecated)]
2447    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2448    where
2449        S: serde::Serializer,
2450    {
2451        use serde::ser::SerializeStruct;
2452        let mut len = 0;
2453        if !self.name.is_empty() {
2454            len += 1;
2455        }
2456        if self.direction != 0 {
2457            len += 1;
2458        }
2459        if self.priority != 0 {
2460            len += 1;
2461        }
2462        if self.protocol != 0 {
2463            len += 1;
2464        }
2465        if self.first_port != 0 {
2466            len += 1;
2467        }
2468        if self.last_port != 0 {
2469            len += 1;
2470        }
2471        if !self.cidr_block.is_empty() {
2472            len += 1;
2473        }
2474        if self.action != 0 {
2475            len += 1;
2476        }
2477        let mut struct_ser = serializer
2478            .serialize_struct("origincloud.network.v1beta1.AclRule", len)?;
2479        if !self.name.is_empty() {
2480            struct_ser.serialize_field("name", &self.name)?;
2481        }
2482        if self.direction != 0 {
2483            let v = acl_rule::Direction::try_from(self.direction)
2484                .map_err(|_| serde::ser::Error::custom(
2485                    format!("Invalid variant {}", self.direction),
2486                ))?;
2487            struct_ser.serialize_field("direction", &v)?;
2488        }
2489        if self.priority != 0 {
2490            struct_ser.serialize_field("priority", &self.priority)?;
2491        }
2492        if self.protocol != 0 {
2493            let v = acl_rule::Protocol::try_from(self.protocol)
2494                .map_err(|_| serde::ser::Error::custom(
2495                    format!("Invalid variant {}", self.protocol),
2496                ))?;
2497            struct_ser.serialize_field("protocol", &v)?;
2498        }
2499        if self.first_port != 0 {
2500            struct_ser.serialize_field("firstPort", &self.first_port)?;
2501        }
2502        if self.last_port != 0 {
2503            struct_ser.serialize_field("lastPort", &self.last_port)?;
2504        }
2505        if !self.cidr_block.is_empty() {
2506            struct_ser.serialize_field("cidrBlock", &self.cidr_block)?;
2507        }
2508        if self.action != 0 {
2509            let v = acl_rule::Action::try_from(self.action)
2510                .map_err(|_| serde::ser::Error::custom(
2511                    format!("Invalid variant {}", self.action),
2512                ))?;
2513            struct_ser.serialize_field("action", &v)?;
2514        }
2515        struct_ser.end()
2516    }
2517}
2518impl<'de> serde::Deserialize<'de> for AclRule {
2519    #[allow(deprecated)]
2520    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2521    where
2522        D: serde::Deserializer<'de>,
2523    {
2524        const FIELDS: &[&str] = &[
2525            "name",
2526            "direction",
2527            "priority",
2528            "protocol",
2529            "first_port",
2530            "firstPort",
2531            "last_port",
2532            "lastPort",
2533            "cidr_block",
2534            "cidrBlock",
2535            "action",
2536        ];
2537        #[allow(clippy::enum_variant_names)]
2538        enum GeneratedField {
2539            Name,
2540            Direction,
2541            Priority,
2542            Protocol,
2543            FirstPort,
2544            LastPort,
2545            CidrBlock,
2546            Action,
2547            __SkipField__,
2548        }
2549        impl<'de> serde::Deserialize<'de> for GeneratedField {
2550            fn deserialize<D>(
2551                deserializer: D,
2552            ) -> std::result::Result<GeneratedField, D::Error>
2553            where
2554                D: serde::Deserializer<'de>,
2555            {
2556                struct GeneratedVisitor;
2557                impl serde::de::Visitor<'_> for GeneratedVisitor {
2558                    type Value = GeneratedField;
2559                    fn expecting(
2560                        &self,
2561                        formatter: &mut std::fmt::Formatter<'_>,
2562                    ) -> std::fmt::Result {
2563                        write!(formatter, "expected one of: {:?}", & FIELDS)
2564                    }
2565                    #[allow(unused_variables)]
2566                    fn visit_str<E>(
2567                        self,
2568                        value: &str,
2569                    ) -> std::result::Result<GeneratedField, E>
2570                    where
2571                        E: serde::de::Error,
2572                    {
2573                        match value {
2574                            "name" => Ok(GeneratedField::Name),
2575                            "direction" => Ok(GeneratedField::Direction),
2576                            "priority" => Ok(GeneratedField::Priority),
2577                            "protocol" => Ok(GeneratedField::Protocol),
2578                            "firstPort" | "first_port" => Ok(GeneratedField::FirstPort),
2579                            "lastPort" | "last_port" => Ok(GeneratedField::LastPort),
2580                            "cidrBlock" | "cidr_block" => Ok(GeneratedField::CidrBlock),
2581                            "action" => Ok(GeneratedField::Action),
2582                            _ => Ok(GeneratedField::__SkipField__),
2583                        }
2584                    }
2585                }
2586                deserializer.deserialize_identifier(GeneratedVisitor)
2587            }
2588        }
2589        struct GeneratedVisitor;
2590        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2591            type Value = AclRule;
2592            fn expecting(
2593                &self,
2594                formatter: &mut std::fmt::Formatter<'_>,
2595            ) -> std::fmt::Result {
2596                formatter.write_str("struct origincloud.network.v1beta1.AclRule")
2597            }
2598            fn visit_map<V>(self, mut map_: V) -> std::result::Result<AclRule, V::Error>
2599            where
2600                V: serde::de::MapAccess<'de>,
2601            {
2602                let mut name__ = None;
2603                let mut direction__ = None;
2604                let mut priority__ = None;
2605                let mut protocol__ = None;
2606                let mut first_port__ = None;
2607                let mut last_port__ = None;
2608                let mut cidr_block__ = None;
2609                let mut action__ = None;
2610                while let Some(k) = map_.next_key()? {
2611                    match k {
2612                        GeneratedField::Name => {
2613                            if name__.is_some() {
2614                                return Err(serde::de::Error::duplicate_field("name"));
2615                            }
2616                            name__ = Some(map_.next_value()?);
2617                        }
2618                        GeneratedField::Direction => {
2619                            if direction__.is_some() {
2620                                return Err(serde::de::Error::duplicate_field("direction"));
2621                            }
2622                            direction__ = Some(
2623                                map_.next_value::<acl_rule::Direction>()? as i32,
2624                            );
2625                        }
2626                        GeneratedField::Priority => {
2627                            if priority__.is_some() {
2628                                return Err(serde::de::Error::duplicate_field("priority"));
2629                            }
2630                            priority__ = Some(
2631                                map_
2632                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2633                                    .0,
2634                            );
2635                        }
2636                        GeneratedField::Protocol => {
2637                            if protocol__.is_some() {
2638                                return Err(serde::de::Error::duplicate_field("protocol"));
2639                            }
2640                            protocol__ = Some(
2641                                map_.next_value::<acl_rule::Protocol>()? as i32,
2642                            );
2643                        }
2644                        GeneratedField::FirstPort => {
2645                            if first_port__.is_some() {
2646                                return Err(serde::de::Error::duplicate_field("firstPort"));
2647                            }
2648                            first_port__ = Some(
2649                                map_
2650                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2651                                    .0,
2652                            );
2653                        }
2654                        GeneratedField::LastPort => {
2655                            if last_port__.is_some() {
2656                                return Err(serde::de::Error::duplicate_field("lastPort"));
2657                            }
2658                            last_port__ = Some(
2659                                map_
2660                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2661                                    .0,
2662                            );
2663                        }
2664                        GeneratedField::CidrBlock => {
2665                            if cidr_block__.is_some() {
2666                                return Err(serde::de::Error::duplicate_field("cidrBlock"));
2667                            }
2668                            cidr_block__ = Some(map_.next_value()?);
2669                        }
2670                        GeneratedField::Action => {
2671                            if action__.is_some() {
2672                                return Err(serde::de::Error::duplicate_field("action"));
2673                            }
2674                            action__ = Some(
2675                                map_.next_value::<acl_rule::Action>()? as i32,
2676                            );
2677                        }
2678                        GeneratedField::__SkipField__ => {
2679                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2680                        }
2681                    }
2682                }
2683                Ok(AclRule {
2684                    name: name__.unwrap_or_default(),
2685                    direction: direction__.unwrap_or_default(),
2686                    priority: priority__.unwrap_or_default(),
2687                    protocol: protocol__.unwrap_or_default(),
2688                    first_port: first_port__.unwrap_or_default(),
2689                    last_port: last_port__.unwrap_or_default(),
2690                    cidr_block: cidr_block__.unwrap_or_default(),
2691                    action: action__.unwrap_or_default(),
2692                })
2693            }
2694        }
2695        deserializer
2696            .deserialize_struct(
2697                "origincloud.network.v1beta1.AclRule",
2698                FIELDS,
2699                GeneratedVisitor,
2700            )
2701    }
2702}
2703impl serde::Serialize for acl_rule::Action {
2704    #[allow(deprecated)]
2705    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2706    where
2707        S: serde::Serializer,
2708    {
2709        let variant = match self {
2710            Self::Unspecified => "ACTION_UNSPECIFIED",
2711            Self::Accept => "ACCEPT",
2712            Self::Drop => "DROP",
2713        };
2714        serializer.serialize_str(variant)
2715    }
2716}
2717impl<'de> serde::Deserialize<'de> for acl_rule::Action {
2718    #[allow(deprecated)]
2719    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2720    where
2721        D: serde::Deserializer<'de>,
2722    {
2723        const FIELDS: &[&str] = &["ACTION_UNSPECIFIED", "ACCEPT", "DROP"];
2724        struct GeneratedVisitor;
2725        impl serde::de::Visitor<'_> for GeneratedVisitor {
2726            type Value = acl_rule::Action;
2727            fn expecting(
2728                &self,
2729                formatter: &mut std::fmt::Formatter<'_>,
2730            ) -> std::fmt::Result {
2731                write!(formatter, "expected one of: {:?}", & FIELDS)
2732            }
2733            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2734            where
2735                E: serde::de::Error,
2736            {
2737                i32::try_from(v)
2738                    .ok()
2739                    .and_then(|x| {
2740                        x.try_into().ok().or_else(|| Some(acl_rule::Action::default()))
2741                    })
2742                    .ok_or_else(|| {
2743                        serde::de::Error::invalid_value(
2744                            serde::de::Unexpected::Signed(v),
2745                            &self,
2746                        )
2747                    })
2748            }
2749            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2750            where
2751                E: serde::de::Error,
2752            {
2753                i32::try_from(v)
2754                    .ok()
2755                    .and_then(|x| {
2756                        x.try_into().ok().or_else(|| Some(acl_rule::Action::default()))
2757                    })
2758                    .ok_or_else(|| {
2759                        serde::de::Error::invalid_value(
2760                            serde::de::Unexpected::Unsigned(v),
2761                            &self,
2762                        )
2763                    })
2764            }
2765            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2766            where
2767                E: serde::de::Error,
2768            {
2769                match value {
2770                    "ACTION_UNSPECIFIED" => Ok(acl_rule::Action::Unspecified),
2771                    "ACCEPT" => Ok(acl_rule::Action::Accept),
2772                    "DROP" => Ok(acl_rule::Action::Drop),
2773                    _ => Ok(acl_rule::Action::default()),
2774                }
2775            }
2776        }
2777        deserializer.deserialize_any(GeneratedVisitor)
2778    }
2779}
2780impl serde::Serialize for acl_rule::Direction {
2781    #[allow(deprecated)]
2782    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2783    where
2784        S: serde::Serializer,
2785    {
2786        let variant = match self {
2787            Self::Unspecified => "DIRECTION_UNSPECIFIED",
2788            Self::Ingress => "INGRESS",
2789            Self::Egress => "EGRESS",
2790        };
2791        serializer.serialize_str(variant)
2792    }
2793}
2794impl<'de> serde::Deserialize<'de> for acl_rule::Direction {
2795    #[allow(deprecated)]
2796    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2797    where
2798        D: serde::Deserializer<'de>,
2799    {
2800        const FIELDS: &[&str] = &["DIRECTION_UNSPECIFIED", "INGRESS", "EGRESS"];
2801        struct GeneratedVisitor;
2802        impl serde::de::Visitor<'_> for GeneratedVisitor {
2803            type Value = acl_rule::Direction;
2804            fn expecting(
2805                &self,
2806                formatter: &mut std::fmt::Formatter<'_>,
2807            ) -> std::fmt::Result {
2808                write!(formatter, "expected one of: {:?}", & FIELDS)
2809            }
2810            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2811            where
2812                E: serde::de::Error,
2813            {
2814                i32::try_from(v)
2815                    .ok()
2816                    .and_then(|x| {
2817                        x
2818                            .try_into()
2819                            .ok()
2820                            .or_else(|| Some(acl_rule::Direction::default()))
2821                    })
2822                    .ok_or_else(|| {
2823                        serde::de::Error::invalid_value(
2824                            serde::de::Unexpected::Signed(v),
2825                            &self,
2826                        )
2827                    })
2828            }
2829            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2830            where
2831                E: serde::de::Error,
2832            {
2833                i32::try_from(v)
2834                    .ok()
2835                    .and_then(|x| {
2836                        x
2837                            .try_into()
2838                            .ok()
2839                            .or_else(|| Some(acl_rule::Direction::default()))
2840                    })
2841                    .ok_or_else(|| {
2842                        serde::de::Error::invalid_value(
2843                            serde::de::Unexpected::Unsigned(v),
2844                            &self,
2845                        )
2846                    })
2847            }
2848            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2849            where
2850                E: serde::de::Error,
2851            {
2852                match value {
2853                    "DIRECTION_UNSPECIFIED" => Ok(acl_rule::Direction::Unspecified),
2854                    "INGRESS" => Ok(acl_rule::Direction::Ingress),
2855                    "EGRESS" => Ok(acl_rule::Direction::Egress),
2856                    _ => Ok(acl_rule::Direction::default()),
2857                }
2858            }
2859        }
2860        deserializer.deserialize_any(GeneratedVisitor)
2861    }
2862}
2863impl serde::Serialize for acl_rule::Protocol {
2864    #[allow(deprecated)]
2865    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2866    where
2867        S: serde::Serializer,
2868    {
2869        let variant = match self {
2870            Self::Unspecified => "PROTOCOL_UNSPECIFIED",
2871            Self::All => "ALL",
2872            Self::Tcp => "TCP",
2873            Self::Udp => "UDP",
2874            Self::Icmp => "ICMP",
2875        };
2876        serializer.serialize_str(variant)
2877    }
2878}
2879impl<'de> serde::Deserialize<'de> for acl_rule::Protocol {
2880    #[allow(deprecated)]
2881    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2882    where
2883        D: serde::Deserializer<'de>,
2884    {
2885        const FIELDS: &[&str] = &["PROTOCOL_UNSPECIFIED", "ALL", "TCP", "UDP", "ICMP"];
2886        struct GeneratedVisitor;
2887        impl serde::de::Visitor<'_> for GeneratedVisitor {
2888            type Value = acl_rule::Protocol;
2889            fn expecting(
2890                &self,
2891                formatter: &mut std::fmt::Formatter<'_>,
2892            ) -> std::fmt::Result {
2893                write!(formatter, "expected one of: {:?}", & FIELDS)
2894            }
2895            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2896            where
2897                E: serde::de::Error,
2898            {
2899                i32::try_from(v)
2900                    .ok()
2901                    .and_then(|x| {
2902                        x.try_into().ok().or_else(|| Some(acl_rule::Protocol::default()))
2903                    })
2904                    .ok_or_else(|| {
2905                        serde::de::Error::invalid_value(
2906                            serde::de::Unexpected::Signed(v),
2907                            &self,
2908                        )
2909                    })
2910            }
2911            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2912            where
2913                E: serde::de::Error,
2914            {
2915                i32::try_from(v)
2916                    .ok()
2917                    .and_then(|x| {
2918                        x.try_into().ok().or_else(|| Some(acl_rule::Protocol::default()))
2919                    })
2920                    .ok_or_else(|| {
2921                        serde::de::Error::invalid_value(
2922                            serde::de::Unexpected::Unsigned(v),
2923                            &self,
2924                        )
2925                    })
2926            }
2927            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2928            where
2929                E: serde::de::Error,
2930            {
2931                match value {
2932                    "PROTOCOL_UNSPECIFIED" => Ok(acl_rule::Protocol::Unspecified),
2933                    "ALL" => Ok(acl_rule::Protocol::All),
2934                    "TCP" => Ok(acl_rule::Protocol::Tcp),
2935                    "UDP" => Ok(acl_rule::Protocol::Udp),
2936                    "ICMP" => Ok(acl_rule::Protocol::Icmp),
2937                    _ => Ok(acl_rule::Protocol::default()),
2938                }
2939            }
2940        }
2941        deserializer.deserialize_any(GeneratedVisitor)
2942    }
2943}
2944impl serde::Serialize for CreateAclAssociationRequest {
2945    #[allow(deprecated)]
2946    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2947    where
2948        S: serde::Serializer,
2949    {
2950        use serde::ser::SerializeStruct;
2951        let mut len = 0;
2952        if !self.parent.is_empty() {
2953            len += 1;
2954        }
2955        if self.acl_association.is_some() {
2956            len += 1;
2957        }
2958        if !self.request_id.is_empty() {
2959            len += 1;
2960        }
2961        let mut struct_ser = serializer
2962            .serialize_struct(
2963                "origincloud.network.v1beta1.CreateAclAssociationRequest",
2964                len,
2965            )?;
2966        if !self.parent.is_empty() {
2967            struct_ser.serialize_field("parent", &self.parent)?;
2968        }
2969        if let Some(v) = self.acl_association.as_ref() {
2970            struct_ser.serialize_field("aclAssociation", v)?;
2971        }
2972        if !self.request_id.is_empty() {
2973            struct_ser.serialize_field("requestId", &self.request_id)?;
2974        }
2975        struct_ser.end()
2976    }
2977}
2978impl<'de> serde::Deserialize<'de> for CreateAclAssociationRequest {
2979    #[allow(deprecated)]
2980    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2981    where
2982        D: serde::Deserializer<'de>,
2983    {
2984        const FIELDS: &[&str] = &[
2985            "parent",
2986            "acl_association",
2987            "aclAssociation",
2988            "request_id",
2989            "requestId",
2990        ];
2991        #[allow(clippy::enum_variant_names)]
2992        enum GeneratedField {
2993            Parent,
2994            AclAssociation,
2995            RequestId,
2996            __SkipField__,
2997        }
2998        impl<'de> serde::Deserialize<'de> for GeneratedField {
2999            fn deserialize<D>(
3000                deserializer: D,
3001            ) -> std::result::Result<GeneratedField, D::Error>
3002            where
3003                D: serde::Deserializer<'de>,
3004            {
3005                struct GeneratedVisitor;
3006                impl serde::de::Visitor<'_> for GeneratedVisitor {
3007                    type Value = GeneratedField;
3008                    fn expecting(
3009                        &self,
3010                        formatter: &mut std::fmt::Formatter<'_>,
3011                    ) -> std::fmt::Result {
3012                        write!(formatter, "expected one of: {:?}", & FIELDS)
3013                    }
3014                    #[allow(unused_variables)]
3015                    fn visit_str<E>(
3016                        self,
3017                        value: &str,
3018                    ) -> std::result::Result<GeneratedField, E>
3019                    where
3020                        E: serde::de::Error,
3021                    {
3022                        match value {
3023                            "parent" => Ok(GeneratedField::Parent),
3024                            "aclAssociation" | "acl_association" => {
3025                                Ok(GeneratedField::AclAssociation)
3026                            }
3027                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3028                            _ => Ok(GeneratedField::__SkipField__),
3029                        }
3030                    }
3031                }
3032                deserializer.deserialize_identifier(GeneratedVisitor)
3033            }
3034        }
3035        struct GeneratedVisitor;
3036        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3037            type Value = CreateAclAssociationRequest;
3038            fn expecting(
3039                &self,
3040                formatter: &mut std::fmt::Formatter<'_>,
3041            ) -> std::fmt::Result {
3042                formatter
3043                    .write_str(
3044                        "struct origincloud.network.v1beta1.CreateAclAssociationRequest",
3045                    )
3046            }
3047            fn visit_map<V>(
3048                self,
3049                mut map_: V,
3050            ) -> std::result::Result<CreateAclAssociationRequest, V::Error>
3051            where
3052                V: serde::de::MapAccess<'de>,
3053            {
3054                let mut parent__ = None;
3055                let mut acl_association__ = None;
3056                let mut request_id__ = None;
3057                while let Some(k) = map_.next_key()? {
3058                    match k {
3059                        GeneratedField::Parent => {
3060                            if parent__.is_some() {
3061                                return Err(serde::de::Error::duplicate_field("parent"));
3062                            }
3063                            parent__ = Some(map_.next_value()?);
3064                        }
3065                        GeneratedField::AclAssociation => {
3066                            if acl_association__.is_some() {
3067                                return Err(
3068                                    serde::de::Error::duplicate_field("aclAssociation"),
3069                                );
3070                            }
3071                            acl_association__ = map_.next_value()?;
3072                        }
3073                        GeneratedField::RequestId => {
3074                            if request_id__.is_some() {
3075                                return Err(serde::de::Error::duplicate_field("requestId"));
3076                            }
3077                            request_id__ = Some(map_.next_value()?);
3078                        }
3079                        GeneratedField::__SkipField__ => {
3080                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3081                        }
3082                    }
3083                }
3084                Ok(CreateAclAssociationRequest {
3085                    parent: parent__.unwrap_or_default(),
3086                    acl_association: acl_association__,
3087                    request_id: request_id__.unwrap_or_default(),
3088                })
3089            }
3090        }
3091        deserializer
3092            .deserialize_struct(
3093                "origincloud.network.v1beta1.CreateAclAssociationRequest",
3094                FIELDS,
3095                GeneratedVisitor,
3096            )
3097    }
3098}
3099impl serde::Serialize for CreateAclRequest {
3100    #[allow(deprecated)]
3101    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3102    where
3103        S: serde::Serializer,
3104    {
3105        use serde::ser::SerializeStruct;
3106        let mut len = 0;
3107        if !self.parent.is_empty() {
3108            len += 1;
3109        }
3110        if self.acl.is_some() {
3111            len += 1;
3112        }
3113        if !self.request_id.is_empty() {
3114            len += 1;
3115        }
3116        let mut struct_ser = serializer
3117            .serialize_struct("origincloud.network.v1beta1.CreateAclRequest", len)?;
3118        if !self.parent.is_empty() {
3119            struct_ser.serialize_field("parent", &self.parent)?;
3120        }
3121        if let Some(v) = self.acl.as_ref() {
3122            struct_ser.serialize_field("acl", v)?;
3123        }
3124        if !self.request_id.is_empty() {
3125            struct_ser.serialize_field("requestId", &self.request_id)?;
3126        }
3127        struct_ser.end()
3128    }
3129}
3130impl<'de> serde::Deserialize<'de> for CreateAclRequest {
3131    #[allow(deprecated)]
3132    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3133    where
3134        D: serde::Deserializer<'de>,
3135    {
3136        const FIELDS: &[&str] = &["parent", "acl", "request_id", "requestId"];
3137        #[allow(clippy::enum_variant_names)]
3138        enum GeneratedField {
3139            Parent,
3140            Acl,
3141            RequestId,
3142            __SkipField__,
3143        }
3144        impl<'de> serde::Deserialize<'de> for GeneratedField {
3145            fn deserialize<D>(
3146                deserializer: D,
3147            ) -> std::result::Result<GeneratedField, D::Error>
3148            where
3149                D: serde::Deserializer<'de>,
3150            {
3151                struct GeneratedVisitor;
3152                impl serde::de::Visitor<'_> for GeneratedVisitor {
3153                    type Value = GeneratedField;
3154                    fn expecting(
3155                        &self,
3156                        formatter: &mut std::fmt::Formatter<'_>,
3157                    ) -> std::fmt::Result {
3158                        write!(formatter, "expected one of: {:?}", & FIELDS)
3159                    }
3160                    #[allow(unused_variables)]
3161                    fn visit_str<E>(
3162                        self,
3163                        value: &str,
3164                    ) -> std::result::Result<GeneratedField, E>
3165                    where
3166                        E: serde::de::Error,
3167                    {
3168                        match value {
3169                            "parent" => Ok(GeneratedField::Parent),
3170                            "acl" => Ok(GeneratedField::Acl),
3171                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3172                            _ => Ok(GeneratedField::__SkipField__),
3173                        }
3174                    }
3175                }
3176                deserializer.deserialize_identifier(GeneratedVisitor)
3177            }
3178        }
3179        struct GeneratedVisitor;
3180        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3181            type Value = CreateAclRequest;
3182            fn expecting(
3183                &self,
3184                formatter: &mut std::fmt::Formatter<'_>,
3185            ) -> std::fmt::Result {
3186                formatter
3187                    .write_str("struct origincloud.network.v1beta1.CreateAclRequest")
3188            }
3189            fn visit_map<V>(
3190                self,
3191                mut map_: V,
3192            ) -> std::result::Result<CreateAclRequest, V::Error>
3193            where
3194                V: serde::de::MapAccess<'de>,
3195            {
3196                let mut parent__ = None;
3197                let mut acl__ = None;
3198                let mut request_id__ = None;
3199                while let Some(k) = map_.next_key()? {
3200                    match k {
3201                        GeneratedField::Parent => {
3202                            if parent__.is_some() {
3203                                return Err(serde::de::Error::duplicate_field("parent"));
3204                            }
3205                            parent__ = Some(map_.next_value()?);
3206                        }
3207                        GeneratedField::Acl => {
3208                            if acl__.is_some() {
3209                                return Err(serde::de::Error::duplicate_field("acl"));
3210                            }
3211                            acl__ = map_.next_value()?;
3212                        }
3213                        GeneratedField::RequestId => {
3214                            if request_id__.is_some() {
3215                                return Err(serde::de::Error::duplicate_field("requestId"));
3216                            }
3217                            request_id__ = Some(map_.next_value()?);
3218                        }
3219                        GeneratedField::__SkipField__ => {
3220                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3221                        }
3222                    }
3223                }
3224                Ok(CreateAclRequest {
3225                    parent: parent__.unwrap_or_default(),
3226                    acl: acl__,
3227                    request_id: request_id__.unwrap_or_default(),
3228                })
3229            }
3230        }
3231        deserializer
3232            .deserialize_struct(
3233                "origincloud.network.v1beta1.CreateAclRequest",
3234                FIELDS,
3235                GeneratedVisitor,
3236            )
3237    }
3238}
3239impl serde::Serialize for CreateAclRuleRequest {
3240    #[allow(deprecated)]
3241    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3242    where
3243        S: serde::Serializer,
3244    {
3245        use serde::ser::SerializeStruct;
3246        let mut len = 0;
3247        if !self.parent.is_empty() {
3248            len += 1;
3249        }
3250        if self.acl_rule.is_some() {
3251            len += 1;
3252        }
3253        if !self.request_id.is_empty() {
3254            len += 1;
3255        }
3256        let mut struct_ser = serializer
3257            .serialize_struct("origincloud.network.v1beta1.CreateAclRuleRequest", len)?;
3258        if !self.parent.is_empty() {
3259            struct_ser.serialize_field("parent", &self.parent)?;
3260        }
3261        if let Some(v) = self.acl_rule.as_ref() {
3262            struct_ser.serialize_field("aclRule", v)?;
3263        }
3264        if !self.request_id.is_empty() {
3265            struct_ser.serialize_field("requestId", &self.request_id)?;
3266        }
3267        struct_ser.end()
3268    }
3269}
3270impl<'de> serde::Deserialize<'de> for CreateAclRuleRequest {
3271    #[allow(deprecated)]
3272    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3273    where
3274        D: serde::Deserializer<'de>,
3275    {
3276        const FIELDS: &[&str] = &[
3277            "parent",
3278            "acl_rule",
3279            "aclRule",
3280            "request_id",
3281            "requestId",
3282        ];
3283        #[allow(clippy::enum_variant_names)]
3284        enum GeneratedField {
3285            Parent,
3286            AclRule,
3287            RequestId,
3288            __SkipField__,
3289        }
3290        impl<'de> serde::Deserialize<'de> for GeneratedField {
3291            fn deserialize<D>(
3292                deserializer: D,
3293            ) -> std::result::Result<GeneratedField, D::Error>
3294            where
3295                D: serde::Deserializer<'de>,
3296            {
3297                struct GeneratedVisitor;
3298                impl serde::de::Visitor<'_> for GeneratedVisitor {
3299                    type Value = GeneratedField;
3300                    fn expecting(
3301                        &self,
3302                        formatter: &mut std::fmt::Formatter<'_>,
3303                    ) -> std::fmt::Result {
3304                        write!(formatter, "expected one of: {:?}", & FIELDS)
3305                    }
3306                    #[allow(unused_variables)]
3307                    fn visit_str<E>(
3308                        self,
3309                        value: &str,
3310                    ) -> std::result::Result<GeneratedField, E>
3311                    where
3312                        E: serde::de::Error,
3313                    {
3314                        match value {
3315                            "parent" => Ok(GeneratedField::Parent),
3316                            "aclRule" | "acl_rule" => Ok(GeneratedField::AclRule),
3317                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3318                            _ => Ok(GeneratedField::__SkipField__),
3319                        }
3320                    }
3321                }
3322                deserializer.deserialize_identifier(GeneratedVisitor)
3323            }
3324        }
3325        struct GeneratedVisitor;
3326        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3327            type Value = CreateAclRuleRequest;
3328            fn expecting(
3329                &self,
3330                formatter: &mut std::fmt::Formatter<'_>,
3331            ) -> std::fmt::Result {
3332                formatter
3333                    .write_str("struct origincloud.network.v1beta1.CreateAclRuleRequest")
3334            }
3335            fn visit_map<V>(
3336                self,
3337                mut map_: V,
3338            ) -> std::result::Result<CreateAclRuleRequest, V::Error>
3339            where
3340                V: serde::de::MapAccess<'de>,
3341            {
3342                let mut parent__ = None;
3343                let mut acl_rule__ = None;
3344                let mut request_id__ = None;
3345                while let Some(k) = map_.next_key()? {
3346                    match k {
3347                        GeneratedField::Parent => {
3348                            if parent__.is_some() {
3349                                return Err(serde::de::Error::duplicate_field("parent"));
3350                            }
3351                            parent__ = Some(map_.next_value()?);
3352                        }
3353                        GeneratedField::AclRule => {
3354                            if acl_rule__.is_some() {
3355                                return Err(serde::de::Error::duplicate_field("aclRule"));
3356                            }
3357                            acl_rule__ = map_.next_value()?;
3358                        }
3359                        GeneratedField::RequestId => {
3360                            if request_id__.is_some() {
3361                                return Err(serde::de::Error::duplicate_field("requestId"));
3362                            }
3363                            request_id__ = Some(map_.next_value()?);
3364                        }
3365                        GeneratedField::__SkipField__ => {
3366                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3367                        }
3368                    }
3369                }
3370                Ok(CreateAclRuleRequest {
3371                    parent: parent__.unwrap_or_default(),
3372                    acl_rule: acl_rule__,
3373                    request_id: request_id__.unwrap_or_default(),
3374                })
3375            }
3376        }
3377        deserializer
3378            .deserialize_struct(
3379                "origincloud.network.v1beta1.CreateAclRuleRequest",
3380                FIELDS,
3381                GeneratedVisitor,
3382            )
3383    }
3384}
3385impl serde::Serialize for CreateDnsPolicyAssociationRequest {
3386    #[allow(deprecated)]
3387    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3388    where
3389        S: serde::Serializer,
3390    {
3391        use serde::ser::SerializeStruct;
3392        let mut len = 0;
3393        if !self.parent.is_empty() {
3394            len += 1;
3395        }
3396        if self.dns_policy_association.is_some() {
3397            len += 1;
3398        }
3399        if !self.request_id.is_empty() {
3400            len += 1;
3401        }
3402        let mut struct_ser = serializer
3403            .serialize_struct(
3404                "origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3405                len,
3406            )?;
3407        if !self.parent.is_empty() {
3408            struct_ser.serialize_field("parent", &self.parent)?;
3409        }
3410        if let Some(v) = self.dns_policy_association.as_ref() {
3411            struct_ser.serialize_field("dnsPolicyAssociation", v)?;
3412        }
3413        if !self.request_id.is_empty() {
3414            struct_ser.serialize_field("requestId", &self.request_id)?;
3415        }
3416        struct_ser.end()
3417    }
3418}
3419impl<'de> serde::Deserialize<'de> for CreateDnsPolicyAssociationRequest {
3420    #[allow(deprecated)]
3421    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3422    where
3423        D: serde::Deserializer<'de>,
3424    {
3425        const FIELDS: &[&str] = &[
3426            "parent",
3427            "dns_policy_association",
3428            "dnsPolicyAssociation",
3429            "request_id",
3430            "requestId",
3431        ];
3432        #[allow(clippy::enum_variant_names)]
3433        enum GeneratedField {
3434            Parent,
3435            DnsPolicyAssociation,
3436            RequestId,
3437            __SkipField__,
3438        }
3439        impl<'de> serde::Deserialize<'de> for GeneratedField {
3440            fn deserialize<D>(
3441                deserializer: D,
3442            ) -> std::result::Result<GeneratedField, D::Error>
3443            where
3444                D: serde::Deserializer<'de>,
3445            {
3446                struct GeneratedVisitor;
3447                impl serde::de::Visitor<'_> for GeneratedVisitor {
3448                    type Value = GeneratedField;
3449                    fn expecting(
3450                        &self,
3451                        formatter: &mut std::fmt::Formatter<'_>,
3452                    ) -> std::fmt::Result {
3453                        write!(formatter, "expected one of: {:?}", & FIELDS)
3454                    }
3455                    #[allow(unused_variables)]
3456                    fn visit_str<E>(
3457                        self,
3458                        value: &str,
3459                    ) -> std::result::Result<GeneratedField, E>
3460                    where
3461                        E: serde::de::Error,
3462                    {
3463                        match value {
3464                            "parent" => Ok(GeneratedField::Parent),
3465                            "dnsPolicyAssociation" | "dns_policy_association" => {
3466                                Ok(GeneratedField::DnsPolicyAssociation)
3467                            }
3468                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3469                            _ => Ok(GeneratedField::__SkipField__),
3470                        }
3471                    }
3472                }
3473                deserializer.deserialize_identifier(GeneratedVisitor)
3474            }
3475        }
3476        struct GeneratedVisitor;
3477        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3478            type Value = CreateDnsPolicyAssociationRequest;
3479            fn expecting(
3480                &self,
3481                formatter: &mut std::fmt::Formatter<'_>,
3482            ) -> std::fmt::Result {
3483                formatter
3484                    .write_str(
3485                        "struct origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3486                    )
3487            }
3488            fn visit_map<V>(
3489                self,
3490                mut map_: V,
3491            ) -> std::result::Result<CreateDnsPolicyAssociationRequest, V::Error>
3492            where
3493                V: serde::de::MapAccess<'de>,
3494            {
3495                let mut parent__ = None;
3496                let mut dns_policy_association__ = None;
3497                let mut request_id__ = None;
3498                while let Some(k) = map_.next_key()? {
3499                    match k {
3500                        GeneratedField::Parent => {
3501                            if parent__.is_some() {
3502                                return Err(serde::de::Error::duplicate_field("parent"));
3503                            }
3504                            parent__ = Some(map_.next_value()?);
3505                        }
3506                        GeneratedField::DnsPolicyAssociation => {
3507                            if dns_policy_association__.is_some() {
3508                                return Err(
3509                                    serde::de::Error::duplicate_field("dnsPolicyAssociation"),
3510                                );
3511                            }
3512                            dns_policy_association__ = map_.next_value()?;
3513                        }
3514                        GeneratedField::RequestId => {
3515                            if request_id__.is_some() {
3516                                return Err(serde::de::Error::duplicate_field("requestId"));
3517                            }
3518                            request_id__ = Some(map_.next_value()?);
3519                        }
3520                        GeneratedField::__SkipField__ => {
3521                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3522                        }
3523                    }
3524                }
3525                Ok(CreateDnsPolicyAssociationRequest {
3526                    parent: parent__.unwrap_or_default(),
3527                    dns_policy_association: dns_policy_association__,
3528                    request_id: request_id__.unwrap_or_default(),
3529                })
3530            }
3531        }
3532        deserializer
3533            .deserialize_struct(
3534                "origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3535                FIELDS,
3536                GeneratedVisitor,
3537            )
3538    }
3539}
3540impl serde::Serialize for CreateDnsPolicyRequest {
3541    #[allow(deprecated)]
3542    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3543    where
3544        S: serde::Serializer,
3545    {
3546        use serde::ser::SerializeStruct;
3547        let mut len = 0;
3548        if !self.parent.is_empty() {
3549            len += 1;
3550        }
3551        if self.dns_policy.is_some() {
3552            len += 1;
3553        }
3554        if !self.request_id.is_empty() {
3555            len += 1;
3556        }
3557        let mut struct_ser = serializer
3558            .serialize_struct(
3559                "origincloud.network.v1beta1.CreateDnsPolicyRequest",
3560                len,
3561            )?;
3562        if !self.parent.is_empty() {
3563            struct_ser.serialize_field("parent", &self.parent)?;
3564        }
3565        if let Some(v) = self.dns_policy.as_ref() {
3566            struct_ser.serialize_field("dnsPolicy", v)?;
3567        }
3568        if !self.request_id.is_empty() {
3569            struct_ser.serialize_field("requestId", &self.request_id)?;
3570        }
3571        struct_ser.end()
3572    }
3573}
3574impl<'de> serde::Deserialize<'de> for CreateDnsPolicyRequest {
3575    #[allow(deprecated)]
3576    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3577    where
3578        D: serde::Deserializer<'de>,
3579    {
3580        const FIELDS: &[&str] = &[
3581            "parent",
3582            "dns_policy",
3583            "dnsPolicy",
3584            "request_id",
3585            "requestId",
3586        ];
3587        #[allow(clippy::enum_variant_names)]
3588        enum GeneratedField {
3589            Parent,
3590            DnsPolicy,
3591            RequestId,
3592            __SkipField__,
3593        }
3594        impl<'de> serde::Deserialize<'de> for GeneratedField {
3595            fn deserialize<D>(
3596                deserializer: D,
3597            ) -> std::result::Result<GeneratedField, D::Error>
3598            where
3599                D: serde::Deserializer<'de>,
3600            {
3601                struct GeneratedVisitor;
3602                impl serde::de::Visitor<'_> for GeneratedVisitor {
3603                    type Value = GeneratedField;
3604                    fn expecting(
3605                        &self,
3606                        formatter: &mut std::fmt::Formatter<'_>,
3607                    ) -> std::fmt::Result {
3608                        write!(formatter, "expected one of: {:?}", & FIELDS)
3609                    }
3610                    #[allow(unused_variables)]
3611                    fn visit_str<E>(
3612                        self,
3613                        value: &str,
3614                    ) -> std::result::Result<GeneratedField, E>
3615                    where
3616                        E: serde::de::Error,
3617                    {
3618                        match value {
3619                            "parent" => Ok(GeneratedField::Parent),
3620                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
3621                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3622                            _ => Ok(GeneratedField::__SkipField__),
3623                        }
3624                    }
3625                }
3626                deserializer.deserialize_identifier(GeneratedVisitor)
3627            }
3628        }
3629        struct GeneratedVisitor;
3630        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3631            type Value = CreateDnsPolicyRequest;
3632            fn expecting(
3633                &self,
3634                formatter: &mut std::fmt::Formatter<'_>,
3635            ) -> std::fmt::Result {
3636                formatter
3637                    .write_str(
3638                        "struct origincloud.network.v1beta1.CreateDnsPolicyRequest",
3639                    )
3640            }
3641            fn visit_map<V>(
3642                self,
3643                mut map_: V,
3644            ) -> std::result::Result<CreateDnsPolicyRequest, V::Error>
3645            where
3646                V: serde::de::MapAccess<'de>,
3647            {
3648                let mut parent__ = None;
3649                let mut dns_policy__ = None;
3650                let mut request_id__ = None;
3651                while let Some(k) = map_.next_key()? {
3652                    match k {
3653                        GeneratedField::Parent => {
3654                            if parent__.is_some() {
3655                                return Err(serde::de::Error::duplicate_field("parent"));
3656                            }
3657                            parent__ = Some(map_.next_value()?);
3658                        }
3659                        GeneratedField::DnsPolicy => {
3660                            if dns_policy__.is_some() {
3661                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
3662                            }
3663                            dns_policy__ = map_.next_value()?;
3664                        }
3665                        GeneratedField::RequestId => {
3666                            if request_id__.is_some() {
3667                                return Err(serde::de::Error::duplicate_field("requestId"));
3668                            }
3669                            request_id__ = Some(map_.next_value()?);
3670                        }
3671                        GeneratedField::__SkipField__ => {
3672                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3673                        }
3674                    }
3675                }
3676                Ok(CreateDnsPolicyRequest {
3677                    parent: parent__.unwrap_or_default(),
3678                    dns_policy: dns_policy__,
3679                    request_id: request_id__.unwrap_or_default(),
3680                })
3681            }
3682        }
3683        deserializer
3684            .deserialize_struct(
3685                "origincloud.network.v1beta1.CreateDnsPolicyRequest",
3686                FIELDS,
3687                GeneratedVisitor,
3688            )
3689    }
3690}
3691impl serde::Serialize for CreateFloatingIpAssociationRequest {
3692    #[allow(deprecated)]
3693    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3694    where
3695        S: serde::Serializer,
3696    {
3697        use serde::ser::SerializeStruct;
3698        let mut len = 0;
3699        if !self.parent.is_empty() {
3700            len += 1;
3701        }
3702        if self.floating_ip_association.is_some() {
3703            len += 1;
3704        }
3705        if !self.request_id.is_empty() {
3706            len += 1;
3707        }
3708        let mut struct_ser = serializer
3709            .serialize_struct(
3710                "origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3711                len,
3712            )?;
3713        if !self.parent.is_empty() {
3714            struct_ser.serialize_field("parent", &self.parent)?;
3715        }
3716        if let Some(v) = self.floating_ip_association.as_ref() {
3717            struct_ser.serialize_field("floatingIpAssociation", v)?;
3718        }
3719        if !self.request_id.is_empty() {
3720            struct_ser.serialize_field("requestId", &self.request_id)?;
3721        }
3722        struct_ser.end()
3723    }
3724}
3725impl<'de> serde::Deserialize<'de> for CreateFloatingIpAssociationRequest {
3726    #[allow(deprecated)]
3727    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3728    where
3729        D: serde::Deserializer<'de>,
3730    {
3731        const FIELDS: &[&str] = &[
3732            "parent",
3733            "floating_ip_association",
3734            "floatingIpAssociation",
3735            "request_id",
3736            "requestId",
3737        ];
3738        #[allow(clippy::enum_variant_names)]
3739        enum GeneratedField {
3740            Parent,
3741            FloatingIpAssociation,
3742            RequestId,
3743            __SkipField__,
3744        }
3745        impl<'de> serde::Deserialize<'de> for GeneratedField {
3746            fn deserialize<D>(
3747                deserializer: D,
3748            ) -> std::result::Result<GeneratedField, D::Error>
3749            where
3750                D: serde::Deserializer<'de>,
3751            {
3752                struct GeneratedVisitor;
3753                impl serde::de::Visitor<'_> for GeneratedVisitor {
3754                    type Value = GeneratedField;
3755                    fn expecting(
3756                        &self,
3757                        formatter: &mut std::fmt::Formatter<'_>,
3758                    ) -> std::fmt::Result {
3759                        write!(formatter, "expected one of: {:?}", & FIELDS)
3760                    }
3761                    #[allow(unused_variables)]
3762                    fn visit_str<E>(
3763                        self,
3764                        value: &str,
3765                    ) -> std::result::Result<GeneratedField, E>
3766                    where
3767                        E: serde::de::Error,
3768                    {
3769                        match value {
3770                            "parent" => Ok(GeneratedField::Parent),
3771                            "floatingIpAssociation" | "floating_ip_association" => {
3772                                Ok(GeneratedField::FloatingIpAssociation)
3773                            }
3774                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3775                            _ => Ok(GeneratedField::__SkipField__),
3776                        }
3777                    }
3778                }
3779                deserializer.deserialize_identifier(GeneratedVisitor)
3780            }
3781        }
3782        struct GeneratedVisitor;
3783        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3784            type Value = CreateFloatingIpAssociationRequest;
3785            fn expecting(
3786                &self,
3787                formatter: &mut std::fmt::Formatter<'_>,
3788            ) -> std::fmt::Result {
3789                formatter
3790                    .write_str(
3791                        "struct origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3792                    )
3793            }
3794            fn visit_map<V>(
3795                self,
3796                mut map_: V,
3797            ) -> std::result::Result<CreateFloatingIpAssociationRequest, V::Error>
3798            where
3799                V: serde::de::MapAccess<'de>,
3800            {
3801                let mut parent__ = None;
3802                let mut floating_ip_association__ = None;
3803                let mut request_id__ = None;
3804                while let Some(k) = map_.next_key()? {
3805                    match k {
3806                        GeneratedField::Parent => {
3807                            if parent__.is_some() {
3808                                return Err(serde::de::Error::duplicate_field("parent"));
3809                            }
3810                            parent__ = Some(map_.next_value()?);
3811                        }
3812                        GeneratedField::FloatingIpAssociation => {
3813                            if floating_ip_association__.is_some() {
3814                                return Err(
3815                                    serde::de::Error::duplicate_field("floatingIpAssociation"),
3816                                );
3817                            }
3818                            floating_ip_association__ = map_.next_value()?;
3819                        }
3820                        GeneratedField::RequestId => {
3821                            if request_id__.is_some() {
3822                                return Err(serde::de::Error::duplicate_field("requestId"));
3823                            }
3824                            request_id__ = Some(map_.next_value()?);
3825                        }
3826                        GeneratedField::__SkipField__ => {
3827                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3828                        }
3829                    }
3830                }
3831                Ok(CreateFloatingIpAssociationRequest {
3832                    parent: parent__.unwrap_or_default(),
3833                    floating_ip_association: floating_ip_association__,
3834                    request_id: request_id__.unwrap_or_default(),
3835                })
3836            }
3837        }
3838        deserializer
3839            .deserialize_struct(
3840                "origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3841                FIELDS,
3842                GeneratedVisitor,
3843            )
3844    }
3845}
3846impl serde::Serialize for CreateFloatingIpRequest {
3847    #[allow(deprecated)]
3848    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3849    where
3850        S: serde::Serializer,
3851    {
3852        use serde::ser::SerializeStruct;
3853        let mut len = 0;
3854        if !self.parent.is_empty() {
3855            len += 1;
3856        }
3857        if self.floating_ip.is_some() {
3858            len += 1;
3859        }
3860        if !self.request_id.is_empty() {
3861            len += 1;
3862        }
3863        let mut struct_ser = serializer
3864            .serialize_struct(
3865                "origincloud.network.v1beta1.CreateFloatingIpRequest",
3866                len,
3867            )?;
3868        if !self.parent.is_empty() {
3869            struct_ser.serialize_field("parent", &self.parent)?;
3870        }
3871        if let Some(v) = self.floating_ip.as_ref() {
3872            struct_ser.serialize_field("floatingIp", v)?;
3873        }
3874        if !self.request_id.is_empty() {
3875            struct_ser.serialize_field("requestId", &self.request_id)?;
3876        }
3877        struct_ser.end()
3878    }
3879}
3880impl<'de> serde::Deserialize<'de> for CreateFloatingIpRequest {
3881    #[allow(deprecated)]
3882    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3883    where
3884        D: serde::Deserializer<'de>,
3885    {
3886        const FIELDS: &[&str] = &[
3887            "parent",
3888            "floating_ip",
3889            "floatingIp",
3890            "request_id",
3891            "requestId",
3892        ];
3893        #[allow(clippy::enum_variant_names)]
3894        enum GeneratedField {
3895            Parent,
3896            FloatingIp,
3897            RequestId,
3898            __SkipField__,
3899        }
3900        impl<'de> serde::Deserialize<'de> for GeneratedField {
3901            fn deserialize<D>(
3902                deserializer: D,
3903            ) -> std::result::Result<GeneratedField, D::Error>
3904            where
3905                D: serde::Deserializer<'de>,
3906            {
3907                struct GeneratedVisitor;
3908                impl serde::de::Visitor<'_> for GeneratedVisitor {
3909                    type Value = GeneratedField;
3910                    fn expecting(
3911                        &self,
3912                        formatter: &mut std::fmt::Formatter<'_>,
3913                    ) -> std::fmt::Result {
3914                        write!(formatter, "expected one of: {:?}", & FIELDS)
3915                    }
3916                    #[allow(unused_variables)]
3917                    fn visit_str<E>(
3918                        self,
3919                        value: &str,
3920                    ) -> std::result::Result<GeneratedField, E>
3921                    where
3922                        E: serde::de::Error,
3923                    {
3924                        match value {
3925                            "parent" => Ok(GeneratedField::Parent),
3926                            "floatingIp" | "floating_ip" => {
3927                                Ok(GeneratedField::FloatingIp)
3928                            }
3929                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3930                            _ => Ok(GeneratedField::__SkipField__),
3931                        }
3932                    }
3933                }
3934                deserializer.deserialize_identifier(GeneratedVisitor)
3935            }
3936        }
3937        struct GeneratedVisitor;
3938        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3939            type Value = CreateFloatingIpRequest;
3940            fn expecting(
3941                &self,
3942                formatter: &mut std::fmt::Formatter<'_>,
3943            ) -> std::fmt::Result {
3944                formatter
3945                    .write_str(
3946                        "struct origincloud.network.v1beta1.CreateFloatingIpRequest",
3947                    )
3948            }
3949            fn visit_map<V>(
3950                self,
3951                mut map_: V,
3952            ) -> std::result::Result<CreateFloatingIpRequest, V::Error>
3953            where
3954                V: serde::de::MapAccess<'de>,
3955            {
3956                let mut parent__ = None;
3957                let mut floating_ip__ = None;
3958                let mut request_id__ = None;
3959                while let Some(k) = map_.next_key()? {
3960                    match k {
3961                        GeneratedField::Parent => {
3962                            if parent__.is_some() {
3963                                return Err(serde::de::Error::duplicate_field("parent"));
3964                            }
3965                            parent__ = Some(map_.next_value()?);
3966                        }
3967                        GeneratedField::FloatingIp => {
3968                            if floating_ip__.is_some() {
3969                                return Err(serde::de::Error::duplicate_field("floatingIp"));
3970                            }
3971                            floating_ip__ = map_.next_value()?;
3972                        }
3973                        GeneratedField::RequestId => {
3974                            if request_id__.is_some() {
3975                                return Err(serde::de::Error::duplicate_field("requestId"));
3976                            }
3977                            request_id__ = Some(map_.next_value()?);
3978                        }
3979                        GeneratedField::__SkipField__ => {
3980                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3981                        }
3982                    }
3983                }
3984                Ok(CreateFloatingIpRequest {
3985                    parent: parent__.unwrap_or_default(),
3986                    floating_ip: floating_ip__,
3987                    request_id: request_id__.unwrap_or_default(),
3988                })
3989            }
3990        }
3991        deserializer
3992            .deserialize_struct(
3993                "origincloud.network.v1beta1.CreateFloatingIpRequest",
3994                FIELDS,
3995                GeneratedVisitor,
3996            )
3997    }
3998}
3999impl serde::Serialize for CreateInternetGatewayRequest {
4000    #[allow(deprecated)]
4001    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4002    where
4003        S: serde::Serializer,
4004    {
4005        use serde::ser::SerializeStruct;
4006        let mut len = 0;
4007        if !self.parent.is_empty() {
4008            len += 1;
4009        }
4010        if self.internet_gateway.is_some() {
4011            len += 1;
4012        }
4013        if !self.request_id.is_empty() {
4014            len += 1;
4015        }
4016        let mut struct_ser = serializer
4017            .serialize_struct(
4018                "origincloud.network.v1beta1.CreateInternetGatewayRequest",
4019                len,
4020            )?;
4021        if !self.parent.is_empty() {
4022            struct_ser.serialize_field("parent", &self.parent)?;
4023        }
4024        if let Some(v) = self.internet_gateway.as_ref() {
4025            struct_ser.serialize_field("internetGateway", v)?;
4026        }
4027        if !self.request_id.is_empty() {
4028            struct_ser.serialize_field("requestId", &self.request_id)?;
4029        }
4030        struct_ser.end()
4031    }
4032}
4033impl<'de> serde::Deserialize<'de> for CreateInternetGatewayRequest {
4034    #[allow(deprecated)]
4035    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4036    where
4037        D: serde::Deserializer<'de>,
4038    {
4039        const FIELDS: &[&str] = &[
4040            "parent",
4041            "internet_gateway",
4042            "internetGateway",
4043            "request_id",
4044            "requestId",
4045        ];
4046        #[allow(clippy::enum_variant_names)]
4047        enum GeneratedField {
4048            Parent,
4049            InternetGateway,
4050            RequestId,
4051            __SkipField__,
4052        }
4053        impl<'de> serde::Deserialize<'de> for GeneratedField {
4054            fn deserialize<D>(
4055                deserializer: D,
4056            ) -> std::result::Result<GeneratedField, D::Error>
4057            where
4058                D: serde::Deserializer<'de>,
4059            {
4060                struct GeneratedVisitor;
4061                impl serde::de::Visitor<'_> for GeneratedVisitor {
4062                    type Value = GeneratedField;
4063                    fn expecting(
4064                        &self,
4065                        formatter: &mut std::fmt::Formatter<'_>,
4066                    ) -> std::fmt::Result {
4067                        write!(formatter, "expected one of: {:?}", & FIELDS)
4068                    }
4069                    #[allow(unused_variables)]
4070                    fn visit_str<E>(
4071                        self,
4072                        value: &str,
4073                    ) -> std::result::Result<GeneratedField, E>
4074                    where
4075                        E: serde::de::Error,
4076                    {
4077                        match value {
4078                            "parent" => Ok(GeneratedField::Parent),
4079                            "internetGateway" | "internet_gateway" => {
4080                                Ok(GeneratedField::InternetGateway)
4081                            }
4082                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4083                            _ => Ok(GeneratedField::__SkipField__),
4084                        }
4085                    }
4086                }
4087                deserializer.deserialize_identifier(GeneratedVisitor)
4088            }
4089        }
4090        struct GeneratedVisitor;
4091        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4092            type Value = CreateInternetGatewayRequest;
4093            fn expecting(
4094                &self,
4095                formatter: &mut std::fmt::Formatter<'_>,
4096            ) -> std::fmt::Result {
4097                formatter
4098                    .write_str(
4099                        "struct origincloud.network.v1beta1.CreateInternetGatewayRequest",
4100                    )
4101            }
4102            fn visit_map<V>(
4103                self,
4104                mut map_: V,
4105            ) -> std::result::Result<CreateInternetGatewayRequest, V::Error>
4106            where
4107                V: serde::de::MapAccess<'de>,
4108            {
4109                let mut parent__ = None;
4110                let mut internet_gateway__ = None;
4111                let mut request_id__ = None;
4112                while let Some(k) = map_.next_key()? {
4113                    match k {
4114                        GeneratedField::Parent => {
4115                            if parent__.is_some() {
4116                                return Err(serde::de::Error::duplicate_field("parent"));
4117                            }
4118                            parent__ = Some(map_.next_value()?);
4119                        }
4120                        GeneratedField::InternetGateway => {
4121                            if internet_gateway__.is_some() {
4122                                return Err(
4123                                    serde::de::Error::duplicate_field("internetGateway"),
4124                                );
4125                            }
4126                            internet_gateway__ = map_.next_value()?;
4127                        }
4128                        GeneratedField::RequestId => {
4129                            if request_id__.is_some() {
4130                                return Err(serde::de::Error::duplicate_field("requestId"));
4131                            }
4132                            request_id__ = Some(map_.next_value()?);
4133                        }
4134                        GeneratedField::__SkipField__ => {
4135                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4136                        }
4137                    }
4138                }
4139                Ok(CreateInternetGatewayRequest {
4140                    parent: parent__.unwrap_or_default(),
4141                    internet_gateway: internet_gateway__,
4142                    request_id: request_id__.unwrap_or_default(),
4143                })
4144            }
4145        }
4146        deserializer
4147            .deserialize_struct(
4148                "origincloud.network.v1beta1.CreateInternetGatewayRequest",
4149                FIELDS,
4150                GeneratedVisitor,
4151            )
4152    }
4153}
4154impl serde::Serialize for CreateNatGatewayRequest {
4155    #[allow(deprecated)]
4156    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4157    where
4158        S: serde::Serializer,
4159    {
4160        use serde::ser::SerializeStruct;
4161        let mut len = 0;
4162        if !self.parent.is_empty() {
4163            len += 1;
4164        }
4165        if self.nat_gateway.is_some() {
4166            len += 1;
4167        }
4168        if !self.request_id.is_empty() {
4169            len += 1;
4170        }
4171        let mut struct_ser = serializer
4172            .serialize_struct(
4173                "origincloud.network.v1beta1.CreateNatGatewayRequest",
4174                len,
4175            )?;
4176        if !self.parent.is_empty() {
4177            struct_ser.serialize_field("parent", &self.parent)?;
4178        }
4179        if let Some(v) = self.nat_gateway.as_ref() {
4180            struct_ser.serialize_field("natGateway", v)?;
4181        }
4182        if !self.request_id.is_empty() {
4183            struct_ser.serialize_field("requestId", &self.request_id)?;
4184        }
4185        struct_ser.end()
4186    }
4187}
4188impl<'de> serde::Deserialize<'de> for CreateNatGatewayRequest {
4189    #[allow(deprecated)]
4190    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4191    where
4192        D: serde::Deserializer<'de>,
4193    {
4194        const FIELDS: &[&str] = &[
4195            "parent",
4196            "nat_gateway",
4197            "natGateway",
4198            "request_id",
4199            "requestId",
4200        ];
4201        #[allow(clippy::enum_variant_names)]
4202        enum GeneratedField {
4203            Parent,
4204            NatGateway,
4205            RequestId,
4206            __SkipField__,
4207        }
4208        impl<'de> serde::Deserialize<'de> for GeneratedField {
4209            fn deserialize<D>(
4210                deserializer: D,
4211            ) -> std::result::Result<GeneratedField, D::Error>
4212            where
4213                D: serde::Deserializer<'de>,
4214            {
4215                struct GeneratedVisitor;
4216                impl serde::de::Visitor<'_> for GeneratedVisitor {
4217                    type Value = GeneratedField;
4218                    fn expecting(
4219                        &self,
4220                        formatter: &mut std::fmt::Formatter<'_>,
4221                    ) -> std::fmt::Result {
4222                        write!(formatter, "expected one of: {:?}", & FIELDS)
4223                    }
4224                    #[allow(unused_variables)]
4225                    fn visit_str<E>(
4226                        self,
4227                        value: &str,
4228                    ) -> std::result::Result<GeneratedField, E>
4229                    where
4230                        E: serde::de::Error,
4231                    {
4232                        match value {
4233                            "parent" => Ok(GeneratedField::Parent),
4234                            "natGateway" | "nat_gateway" => {
4235                                Ok(GeneratedField::NatGateway)
4236                            }
4237                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4238                            _ => Ok(GeneratedField::__SkipField__),
4239                        }
4240                    }
4241                }
4242                deserializer.deserialize_identifier(GeneratedVisitor)
4243            }
4244        }
4245        struct GeneratedVisitor;
4246        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4247            type Value = CreateNatGatewayRequest;
4248            fn expecting(
4249                &self,
4250                formatter: &mut std::fmt::Formatter<'_>,
4251            ) -> std::fmt::Result {
4252                formatter
4253                    .write_str(
4254                        "struct origincloud.network.v1beta1.CreateNatGatewayRequest",
4255                    )
4256            }
4257            fn visit_map<V>(
4258                self,
4259                mut map_: V,
4260            ) -> std::result::Result<CreateNatGatewayRequest, V::Error>
4261            where
4262                V: serde::de::MapAccess<'de>,
4263            {
4264                let mut parent__ = None;
4265                let mut nat_gateway__ = None;
4266                let mut request_id__ = None;
4267                while let Some(k) = map_.next_key()? {
4268                    match k {
4269                        GeneratedField::Parent => {
4270                            if parent__.is_some() {
4271                                return Err(serde::de::Error::duplicate_field("parent"));
4272                            }
4273                            parent__ = Some(map_.next_value()?);
4274                        }
4275                        GeneratedField::NatGateway => {
4276                            if nat_gateway__.is_some() {
4277                                return Err(serde::de::Error::duplicate_field("natGateway"));
4278                            }
4279                            nat_gateway__ = map_.next_value()?;
4280                        }
4281                        GeneratedField::RequestId => {
4282                            if request_id__.is_some() {
4283                                return Err(serde::de::Error::duplicate_field("requestId"));
4284                            }
4285                            request_id__ = Some(map_.next_value()?);
4286                        }
4287                        GeneratedField::__SkipField__ => {
4288                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4289                        }
4290                    }
4291                }
4292                Ok(CreateNatGatewayRequest {
4293                    parent: parent__.unwrap_or_default(),
4294                    nat_gateway: nat_gateway__,
4295                    request_id: request_id__.unwrap_or_default(),
4296                })
4297            }
4298        }
4299        deserializer
4300            .deserialize_struct(
4301                "origincloud.network.v1beta1.CreateNatGatewayRequest",
4302                FIELDS,
4303                GeneratedVisitor,
4304            )
4305    }
4306}
4307impl serde::Serialize for CreateNetworkInterfaceRequest {
4308    #[allow(deprecated)]
4309    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4310    where
4311        S: serde::Serializer,
4312    {
4313        use serde::ser::SerializeStruct;
4314        let mut len = 0;
4315        if !self.parent.is_empty() {
4316            len += 1;
4317        }
4318        if self.network_interface.is_some() {
4319            len += 1;
4320        }
4321        if !self.request_id.is_empty() {
4322            len += 1;
4323        }
4324        let mut struct_ser = serializer
4325            .serialize_struct(
4326                "origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4327                len,
4328            )?;
4329        if !self.parent.is_empty() {
4330            struct_ser.serialize_field("parent", &self.parent)?;
4331        }
4332        if let Some(v) = self.network_interface.as_ref() {
4333            struct_ser.serialize_field("networkInterface", v)?;
4334        }
4335        if !self.request_id.is_empty() {
4336            struct_ser.serialize_field("requestId", &self.request_id)?;
4337        }
4338        struct_ser.end()
4339    }
4340}
4341impl<'de> serde::Deserialize<'de> for CreateNetworkInterfaceRequest {
4342    #[allow(deprecated)]
4343    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4344    where
4345        D: serde::Deserializer<'de>,
4346    {
4347        const FIELDS: &[&str] = &[
4348            "parent",
4349            "network_interface",
4350            "networkInterface",
4351            "request_id",
4352            "requestId",
4353        ];
4354        #[allow(clippy::enum_variant_names)]
4355        enum GeneratedField {
4356            Parent,
4357            NetworkInterface,
4358            RequestId,
4359            __SkipField__,
4360        }
4361        impl<'de> serde::Deserialize<'de> for GeneratedField {
4362            fn deserialize<D>(
4363                deserializer: D,
4364            ) -> std::result::Result<GeneratedField, D::Error>
4365            where
4366                D: serde::Deserializer<'de>,
4367            {
4368                struct GeneratedVisitor;
4369                impl serde::de::Visitor<'_> for GeneratedVisitor {
4370                    type Value = GeneratedField;
4371                    fn expecting(
4372                        &self,
4373                        formatter: &mut std::fmt::Formatter<'_>,
4374                    ) -> std::fmt::Result {
4375                        write!(formatter, "expected one of: {:?}", & FIELDS)
4376                    }
4377                    #[allow(unused_variables)]
4378                    fn visit_str<E>(
4379                        self,
4380                        value: &str,
4381                    ) -> std::result::Result<GeneratedField, E>
4382                    where
4383                        E: serde::de::Error,
4384                    {
4385                        match value {
4386                            "parent" => Ok(GeneratedField::Parent),
4387                            "networkInterface" | "network_interface" => {
4388                                Ok(GeneratedField::NetworkInterface)
4389                            }
4390                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4391                            _ => Ok(GeneratedField::__SkipField__),
4392                        }
4393                    }
4394                }
4395                deserializer.deserialize_identifier(GeneratedVisitor)
4396            }
4397        }
4398        struct GeneratedVisitor;
4399        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4400            type Value = CreateNetworkInterfaceRequest;
4401            fn expecting(
4402                &self,
4403                formatter: &mut std::fmt::Formatter<'_>,
4404            ) -> std::fmt::Result {
4405                formatter
4406                    .write_str(
4407                        "struct origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4408                    )
4409            }
4410            fn visit_map<V>(
4411                self,
4412                mut map_: V,
4413            ) -> std::result::Result<CreateNetworkInterfaceRequest, V::Error>
4414            where
4415                V: serde::de::MapAccess<'de>,
4416            {
4417                let mut parent__ = None;
4418                let mut network_interface__ = None;
4419                let mut request_id__ = None;
4420                while let Some(k) = map_.next_key()? {
4421                    match k {
4422                        GeneratedField::Parent => {
4423                            if parent__.is_some() {
4424                                return Err(serde::de::Error::duplicate_field("parent"));
4425                            }
4426                            parent__ = Some(map_.next_value()?);
4427                        }
4428                        GeneratedField::NetworkInterface => {
4429                            if network_interface__.is_some() {
4430                                return Err(
4431                                    serde::de::Error::duplicate_field("networkInterface"),
4432                                );
4433                            }
4434                            network_interface__ = map_.next_value()?;
4435                        }
4436                        GeneratedField::RequestId => {
4437                            if request_id__.is_some() {
4438                                return Err(serde::de::Error::duplicate_field("requestId"));
4439                            }
4440                            request_id__ = Some(map_.next_value()?);
4441                        }
4442                        GeneratedField::__SkipField__ => {
4443                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4444                        }
4445                    }
4446                }
4447                Ok(CreateNetworkInterfaceRequest {
4448                    parent: parent__.unwrap_or_default(),
4449                    network_interface: network_interface__,
4450                    request_id: request_id__.unwrap_or_default(),
4451                })
4452            }
4453        }
4454        deserializer
4455            .deserialize_struct(
4456                "origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4457                FIELDS,
4458                GeneratedVisitor,
4459            )
4460    }
4461}
4462impl serde::Serialize for CreateRouteRequest {
4463    #[allow(deprecated)]
4464    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4465    where
4466        S: serde::Serializer,
4467    {
4468        use serde::ser::SerializeStruct;
4469        let mut len = 0;
4470        if !self.parent.is_empty() {
4471            len += 1;
4472        }
4473        if self.route.is_some() {
4474            len += 1;
4475        }
4476        if !self.request_id.is_empty() {
4477            len += 1;
4478        }
4479        let mut struct_ser = serializer
4480            .serialize_struct("origincloud.network.v1beta1.CreateRouteRequest", len)?;
4481        if !self.parent.is_empty() {
4482            struct_ser.serialize_field("parent", &self.parent)?;
4483        }
4484        if let Some(v) = self.route.as_ref() {
4485            struct_ser.serialize_field("route", v)?;
4486        }
4487        if !self.request_id.is_empty() {
4488            struct_ser.serialize_field("requestId", &self.request_id)?;
4489        }
4490        struct_ser.end()
4491    }
4492}
4493impl<'de> serde::Deserialize<'de> for CreateRouteRequest {
4494    #[allow(deprecated)]
4495    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4496    where
4497        D: serde::Deserializer<'de>,
4498    {
4499        const FIELDS: &[&str] = &["parent", "route", "request_id", "requestId"];
4500        #[allow(clippy::enum_variant_names)]
4501        enum GeneratedField {
4502            Parent,
4503            Route,
4504            RequestId,
4505            __SkipField__,
4506        }
4507        impl<'de> serde::Deserialize<'de> for GeneratedField {
4508            fn deserialize<D>(
4509                deserializer: D,
4510            ) -> std::result::Result<GeneratedField, D::Error>
4511            where
4512                D: serde::Deserializer<'de>,
4513            {
4514                struct GeneratedVisitor;
4515                impl serde::de::Visitor<'_> for GeneratedVisitor {
4516                    type Value = GeneratedField;
4517                    fn expecting(
4518                        &self,
4519                        formatter: &mut std::fmt::Formatter<'_>,
4520                    ) -> std::fmt::Result {
4521                        write!(formatter, "expected one of: {:?}", & FIELDS)
4522                    }
4523                    #[allow(unused_variables)]
4524                    fn visit_str<E>(
4525                        self,
4526                        value: &str,
4527                    ) -> std::result::Result<GeneratedField, E>
4528                    where
4529                        E: serde::de::Error,
4530                    {
4531                        match value {
4532                            "parent" => Ok(GeneratedField::Parent),
4533                            "route" => Ok(GeneratedField::Route),
4534                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4535                            _ => Ok(GeneratedField::__SkipField__),
4536                        }
4537                    }
4538                }
4539                deserializer.deserialize_identifier(GeneratedVisitor)
4540            }
4541        }
4542        struct GeneratedVisitor;
4543        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4544            type Value = CreateRouteRequest;
4545            fn expecting(
4546                &self,
4547                formatter: &mut std::fmt::Formatter<'_>,
4548            ) -> std::fmt::Result {
4549                formatter
4550                    .write_str("struct origincloud.network.v1beta1.CreateRouteRequest")
4551            }
4552            fn visit_map<V>(
4553                self,
4554                mut map_: V,
4555            ) -> std::result::Result<CreateRouteRequest, V::Error>
4556            where
4557                V: serde::de::MapAccess<'de>,
4558            {
4559                let mut parent__ = None;
4560                let mut route__ = None;
4561                let mut request_id__ = None;
4562                while let Some(k) = map_.next_key()? {
4563                    match k {
4564                        GeneratedField::Parent => {
4565                            if parent__.is_some() {
4566                                return Err(serde::de::Error::duplicate_field("parent"));
4567                            }
4568                            parent__ = Some(map_.next_value()?);
4569                        }
4570                        GeneratedField::Route => {
4571                            if route__.is_some() {
4572                                return Err(serde::de::Error::duplicate_field("route"));
4573                            }
4574                            route__ = map_.next_value()?;
4575                        }
4576                        GeneratedField::RequestId => {
4577                            if request_id__.is_some() {
4578                                return Err(serde::de::Error::duplicate_field("requestId"));
4579                            }
4580                            request_id__ = Some(map_.next_value()?);
4581                        }
4582                        GeneratedField::__SkipField__ => {
4583                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4584                        }
4585                    }
4586                }
4587                Ok(CreateRouteRequest {
4588                    parent: parent__.unwrap_or_default(),
4589                    route: route__,
4590                    request_id: request_id__.unwrap_or_default(),
4591                })
4592            }
4593        }
4594        deserializer
4595            .deserialize_struct(
4596                "origincloud.network.v1beta1.CreateRouteRequest",
4597                FIELDS,
4598                GeneratedVisitor,
4599            )
4600    }
4601}
4602impl serde::Serialize for CreateRouteTableAssociationRequest {
4603    #[allow(deprecated)]
4604    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4605    where
4606        S: serde::Serializer,
4607    {
4608        use serde::ser::SerializeStruct;
4609        let mut len = 0;
4610        if !self.parent.is_empty() {
4611            len += 1;
4612        }
4613        if self.route_table_association.is_some() {
4614            len += 1;
4615        }
4616        if !self.request_id.is_empty() {
4617            len += 1;
4618        }
4619        let mut struct_ser = serializer
4620            .serialize_struct(
4621                "origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4622                len,
4623            )?;
4624        if !self.parent.is_empty() {
4625            struct_ser.serialize_field("parent", &self.parent)?;
4626        }
4627        if let Some(v) = self.route_table_association.as_ref() {
4628            struct_ser.serialize_field("routeTableAssociation", v)?;
4629        }
4630        if !self.request_id.is_empty() {
4631            struct_ser.serialize_field("requestId", &self.request_id)?;
4632        }
4633        struct_ser.end()
4634    }
4635}
4636impl<'de> serde::Deserialize<'de> for CreateRouteTableAssociationRequest {
4637    #[allow(deprecated)]
4638    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4639    where
4640        D: serde::Deserializer<'de>,
4641    {
4642        const FIELDS: &[&str] = &[
4643            "parent",
4644            "route_table_association",
4645            "routeTableAssociation",
4646            "request_id",
4647            "requestId",
4648        ];
4649        #[allow(clippy::enum_variant_names)]
4650        enum GeneratedField {
4651            Parent,
4652            RouteTableAssociation,
4653            RequestId,
4654            __SkipField__,
4655        }
4656        impl<'de> serde::Deserialize<'de> for GeneratedField {
4657            fn deserialize<D>(
4658                deserializer: D,
4659            ) -> std::result::Result<GeneratedField, D::Error>
4660            where
4661                D: serde::Deserializer<'de>,
4662            {
4663                struct GeneratedVisitor;
4664                impl serde::de::Visitor<'_> for GeneratedVisitor {
4665                    type Value = GeneratedField;
4666                    fn expecting(
4667                        &self,
4668                        formatter: &mut std::fmt::Formatter<'_>,
4669                    ) -> std::fmt::Result {
4670                        write!(formatter, "expected one of: {:?}", & FIELDS)
4671                    }
4672                    #[allow(unused_variables)]
4673                    fn visit_str<E>(
4674                        self,
4675                        value: &str,
4676                    ) -> std::result::Result<GeneratedField, E>
4677                    where
4678                        E: serde::de::Error,
4679                    {
4680                        match value {
4681                            "parent" => Ok(GeneratedField::Parent),
4682                            "routeTableAssociation" | "route_table_association" => {
4683                                Ok(GeneratedField::RouteTableAssociation)
4684                            }
4685                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4686                            _ => Ok(GeneratedField::__SkipField__),
4687                        }
4688                    }
4689                }
4690                deserializer.deserialize_identifier(GeneratedVisitor)
4691            }
4692        }
4693        struct GeneratedVisitor;
4694        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4695            type Value = CreateRouteTableAssociationRequest;
4696            fn expecting(
4697                &self,
4698                formatter: &mut std::fmt::Formatter<'_>,
4699            ) -> std::fmt::Result {
4700                formatter
4701                    .write_str(
4702                        "struct origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4703                    )
4704            }
4705            fn visit_map<V>(
4706                self,
4707                mut map_: V,
4708            ) -> std::result::Result<CreateRouteTableAssociationRequest, V::Error>
4709            where
4710                V: serde::de::MapAccess<'de>,
4711            {
4712                let mut parent__ = None;
4713                let mut route_table_association__ = None;
4714                let mut request_id__ = None;
4715                while let Some(k) = map_.next_key()? {
4716                    match k {
4717                        GeneratedField::Parent => {
4718                            if parent__.is_some() {
4719                                return Err(serde::de::Error::duplicate_field("parent"));
4720                            }
4721                            parent__ = Some(map_.next_value()?);
4722                        }
4723                        GeneratedField::RouteTableAssociation => {
4724                            if route_table_association__.is_some() {
4725                                return Err(
4726                                    serde::de::Error::duplicate_field("routeTableAssociation"),
4727                                );
4728                            }
4729                            route_table_association__ = map_.next_value()?;
4730                        }
4731                        GeneratedField::RequestId => {
4732                            if request_id__.is_some() {
4733                                return Err(serde::de::Error::duplicate_field("requestId"));
4734                            }
4735                            request_id__ = Some(map_.next_value()?);
4736                        }
4737                        GeneratedField::__SkipField__ => {
4738                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4739                        }
4740                    }
4741                }
4742                Ok(CreateRouteTableAssociationRequest {
4743                    parent: parent__.unwrap_or_default(),
4744                    route_table_association: route_table_association__,
4745                    request_id: request_id__.unwrap_or_default(),
4746                })
4747            }
4748        }
4749        deserializer
4750            .deserialize_struct(
4751                "origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4752                FIELDS,
4753                GeneratedVisitor,
4754            )
4755    }
4756}
4757impl serde::Serialize for CreateRouteTableRequest {
4758    #[allow(deprecated)]
4759    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4760    where
4761        S: serde::Serializer,
4762    {
4763        use serde::ser::SerializeStruct;
4764        let mut len = 0;
4765        if !self.parent.is_empty() {
4766            len += 1;
4767        }
4768        if self.route_table.is_some() {
4769            len += 1;
4770        }
4771        if !self.request_id.is_empty() {
4772            len += 1;
4773        }
4774        let mut struct_ser = serializer
4775            .serialize_struct(
4776                "origincloud.network.v1beta1.CreateRouteTableRequest",
4777                len,
4778            )?;
4779        if !self.parent.is_empty() {
4780            struct_ser.serialize_field("parent", &self.parent)?;
4781        }
4782        if let Some(v) = self.route_table.as_ref() {
4783            struct_ser.serialize_field("routeTable", v)?;
4784        }
4785        if !self.request_id.is_empty() {
4786            struct_ser.serialize_field("requestId", &self.request_id)?;
4787        }
4788        struct_ser.end()
4789    }
4790}
4791impl<'de> serde::Deserialize<'de> for CreateRouteTableRequest {
4792    #[allow(deprecated)]
4793    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4794    where
4795        D: serde::Deserializer<'de>,
4796    {
4797        const FIELDS: &[&str] = &[
4798            "parent",
4799            "route_table",
4800            "routeTable",
4801            "request_id",
4802            "requestId",
4803        ];
4804        #[allow(clippy::enum_variant_names)]
4805        enum GeneratedField {
4806            Parent,
4807            RouteTable,
4808            RequestId,
4809            __SkipField__,
4810        }
4811        impl<'de> serde::Deserialize<'de> for GeneratedField {
4812            fn deserialize<D>(
4813                deserializer: D,
4814            ) -> std::result::Result<GeneratedField, D::Error>
4815            where
4816                D: serde::Deserializer<'de>,
4817            {
4818                struct GeneratedVisitor;
4819                impl serde::de::Visitor<'_> for GeneratedVisitor {
4820                    type Value = GeneratedField;
4821                    fn expecting(
4822                        &self,
4823                        formatter: &mut std::fmt::Formatter<'_>,
4824                    ) -> std::fmt::Result {
4825                        write!(formatter, "expected one of: {:?}", & FIELDS)
4826                    }
4827                    #[allow(unused_variables)]
4828                    fn visit_str<E>(
4829                        self,
4830                        value: &str,
4831                    ) -> std::result::Result<GeneratedField, E>
4832                    where
4833                        E: serde::de::Error,
4834                    {
4835                        match value {
4836                            "parent" => Ok(GeneratedField::Parent),
4837                            "routeTable" | "route_table" => {
4838                                Ok(GeneratedField::RouteTable)
4839                            }
4840                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4841                            _ => Ok(GeneratedField::__SkipField__),
4842                        }
4843                    }
4844                }
4845                deserializer.deserialize_identifier(GeneratedVisitor)
4846            }
4847        }
4848        struct GeneratedVisitor;
4849        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4850            type Value = CreateRouteTableRequest;
4851            fn expecting(
4852                &self,
4853                formatter: &mut std::fmt::Formatter<'_>,
4854            ) -> std::fmt::Result {
4855                formatter
4856                    .write_str(
4857                        "struct origincloud.network.v1beta1.CreateRouteTableRequest",
4858                    )
4859            }
4860            fn visit_map<V>(
4861                self,
4862                mut map_: V,
4863            ) -> std::result::Result<CreateRouteTableRequest, V::Error>
4864            where
4865                V: serde::de::MapAccess<'de>,
4866            {
4867                let mut parent__ = None;
4868                let mut route_table__ = None;
4869                let mut request_id__ = None;
4870                while let Some(k) = map_.next_key()? {
4871                    match k {
4872                        GeneratedField::Parent => {
4873                            if parent__.is_some() {
4874                                return Err(serde::de::Error::duplicate_field("parent"));
4875                            }
4876                            parent__ = Some(map_.next_value()?);
4877                        }
4878                        GeneratedField::RouteTable => {
4879                            if route_table__.is_some() {
4880                                return Err(serde::de::Error::duplicate_field("routeTable"));
4881                            }
4882                            route_table__ = map_.next_value()?;
4883                        }
4884                        GeneratedField::RequestId => {
4885                            if request_id__.is_some() {
4886                                return Err(serde::de::Error::duplicate_field("requestId"));
4887                            }
4888                            request_id__ = Some(map_.next_value()?);
4889                        }
4890                        GeneratedField::__SkipField__ => {
4891                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4892                        }
4893                    }
4894                }
4895                Ok(CreateRouteTableRequest {
4896                    parent: parent__.unwrap_or_default(),
4897                    route_table: route_table__,
4898                    request_id: request_id__.unwrap_or_default(),
4899                })
4900            }
4901        }
4902        deserializer
4903            .deserialize_struct(
4904                "origincloud.network.v1beta1.CreateRouteTableRequest",
4905                FIELDS,
4906                GeneratedVisitor,
4907            )
4908    }
4909}
4910impl serde::Serialize for CreateSecurityGroupAssociationRequest {
4911    #[allow(deprecated)]
4912    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4913    where
4914        S: serde::Serializer,
4915    {
4916        use serde::ser::SerializeStruct;
4917        let mut len = 0;
4918        if !self.parent.is_empty() {
4919            len += 1;
4920        }
4921        if self.security_group_association.is_some() {
4922            len += 1;
4923        }
4924        if !self.request_id.is_empty() {
4925            len += 1;
4926        }
4927        let mut struct_ser = serializer
4928            .serialize_struct(
4929                "origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
4930                len,
4931            )?;
4932        if !self.parent.is_empty() {
4933            struct_ser.serialize_field("parent", &self.parent)?;
4934        }
4935        if let Some(v) = self.security_group_association.as_ref() {
4936            struct_ser.serialize_field("securityGroupAssociation", v)?;
4937        }
4938        if !self.request_id.is_empty() {
4939            struct_ser.serialize_field("requestId", &self.request_id)?;
4940        }
4941        struct_ser.end()
4942    }
4943}
4944impl<'de> serde::Deserialize<'de> for CreateSecurityGroupAssociationRequest {
4945    #[allow(deprecated)]
4946    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4947    where
4948        D: serde::Deserializer<'de>,
4949    {
4950        const FIELDS: &[&str] = &[
4951            "parent",
4952            "security_group_association",
4953            "securityGroupAssociation",
4954            "request_id",
4955            "requestId",
4956        ];
4957        #[allow(clippy::enum_variant_names)]
4958        enum GeneratedField {
4959            Parent,
4960            SecurityGroupAssociation,
4961            RequestId,
4962            __SkipField__,
4963        }
4964        impl<'de> serde::Deserialize<'de> for GeneratedField {
4965            fn deserialize<D>(
4966                deserializer: D,
4967            ) -> std::result::Result<GeneratedField, D::Error>
4968            where
4969                D: serde::Deserializer<'de>,
4970            {
4971                struct GeneratedVisitor;
4972                impl serde::de::Visitor<'_> for GeneratedVisitor {
4973                    type Value = GeneratedField;
4974                    fn expecting(
4975                        &self,
4976                        formatter: &mut std::fmt::Formatter<'_>,
4977                    ) -> std::fmt::Result {
4978                        write!(formatter, "expected one of: {:?}", & FIELDS)
4979                    }
4980                    #[allow(unused_variables)]
4981                    fn visit_str<E>(
4982                        self,
4983                        value: &str,
4984                    ) -> std::result::Result<GeneratedField, E>
4985                    where
4986                        E: serde::de::Error,
4987                    {
4988                        match value {
4989                            "parent" => Ok(GeneratedField::Parent),
4990                            "securityGroupAssociation" | "security_group_association" => {
4991                                Ok(GeneratedField::SecurityGroupAssociation)
4992                            }
4993                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4994                            _ => Ok(GeneratedField::__SkipField__),
4995                        }
4996                    }
4997                }
4998                deserializer.deserialize_identifier(GeneratedVisitor)
4999            }
5000        }
5001        struct GeneratedVisitor;
5002        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5003            type Value = CreateSecurityGroupAssociationRequest;
5004            fn expecting(
5005                &self,
5006                formatter: &mut std::fmt::Formatter<'_>,
5007            ) -> std::fmt::Result {
5008                formatter
5009                    .write_str(
5010                        "struct origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
5011                    )
5012            }
5013            fn visit_map<V>(
5014                self,
5015                mut map_: V,
5016            ) -> std::result::Result<CreateSecurityGroupAssociationRequest, V::Error>
5017            where
5018                V: serde::de::MapAccess<'de>,
5019            {
5020                let mut parent__ = None;
5021                let mut security_group_association__ = None;
5022                let mut request_id__ = None;
5023                while let Some(k) = map_.next_key()? {
5024                    match k {
5025                        GeneratedField::Parent => {
5026                            if parent__.is_some() {
5027                                return Err(serde::de::Error::duplicate_field("parent"));
5028                            }
5029                            parent__ = Some(map_.next_value()?);
5030                        }
5031                        GeneratedField::SecurityGroupAssociation => {
5032                            if security_group_association__.is_some() {
5033                                return Err(
5034                                    serde::de::Error::duplicate_field(
5035                                        "securityGroupAssociation",
5036                                    ),
5037                                );
5038                            }
5039                            security_group_association__ = map_.next_value()?;
5040                        }
5041                        GeneratedField::RequestId => {
5042                            if request_id__.is_some() {
5043                                return Err(serde::de::Error::duplicate_field("requestId"));
5044                            }
5045                            request_id__ = Some(map_.next_value()?);
5046                        }
5047                        GeneratedField::__SkipField__ => {
5048                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5049                        }
5050                    }
5051                }
5052                Ok(CreateSecurityGroupAssociationRequest {
5053                    parent: parent__.unwrap_or_default(),
5054                    security_group_association: security_group_association__,
5055                    request_id: request_id__.unwrap_or_default(),
5056                })
5057            }
5058        }
5059        deserializer
5060            .deserialize_struct(
5061                "origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
5062                FIELDS,
5063                GeneratedVisitor,
5064            )
5065    }
5066}
5067impl serde::Serialize for CreateSecurityGroupRequest {
5068    #[allow(deprecated)]
5069    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5070    where
5071        S: serde::Serializer,
5072    {
5073        use serde::ser::SerializeStruct;
5074        let mut len = 0;
5075        if !self.parent.is_empty() {
5076            len += 1;
5077        }
5078        if self.security_group.is_some() {
5079            len += 1;
5080        }
5081        if !self.request_id.is_empty() {
5082            len += 1;
5083        }
5084        let mut struct_ser = serializer
5085            .serialize_struct(
5086                "origincloud.network.v1beta1.CreateSecurityGroupRequest",
5087                len,
5088            )?;
5089        if !self.parent.is_empty() {
5090            struct_ser.serialize_field("parent", &self.parent)?;
5091        }
5092        if let Some(v) = self.security_group.as_ref() {
5093            struct_ser.serialize_field("securityGroup", v)?;
5094        }
5095        if !self.request_id.is_empty() {
5096            struct_ser.serialize_field("requestId", &self.request_id)?;
5097        }
5098        struct_ser.end()
5099    }
5100}
5101impl<'de> serde::Deserialize<'de> for CreateSecurityGroupRequest {
5102    #[allow(deprecated)]
5103    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5104    where
5105        D: serde::Deserializer<'de>,
5106    {
5107        const FIELDS: &[&str] = &[
5108            "parent",
5109            "security_group",
5110            "securityGroup",
5111            "request_id",
5112            "requestId",
5113        ];
5114        #[allow(clippy::enum_variant_names)]
5115        enum GeneratedField {
5116            Parent,
5117            SecurityGroup,
5118            RequestId,
5119            __SkipField__,
5120        }
5121        impl<'de> serde::Deserialize<'de> for GeneratedField {
5122            fn deserialize<D>(
5123                deserializer: D,
5124            ) -> std::result::Result<GeneratedField, D::Error>
5125            where
5126                D: serde::Deserializer<'de>,
5127            {
5128                struct GeneratedVisitor;
5129                impl serde::de::Visitor<'_> for GeneratedVisitor {
5130                    type Value = GeneratedField;
5131                    fn expecting(
5132                        &self,
5133                        formatter: &mut std::fmt::Formatter<'_>,
5134                    ) -> std::fmt::Result {
5135                        write!(formatter, "expected one of: {:?}", & FIELDS)
5136                    }
5137                    #[allow(unused_variables)]
5138                    fn visit_str<E>(
5139                        self,
5140                        value: &str,
5141                    ) -> std::result::Result<GeneratedField, E>
5142                    where
5143                        E: serde::de::Error,
5144                    {
5145                        match value {
5146                            "parent" => Ok(GeneratedField::Parent),
5147                            "securityGroup" | "security_group" => {
5148                                Ok(GeneratedField::SecurityGroup)
5149                            }
5150                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5151                            _ => Ok(GeneratedField::__SkipField__),
5152                        }
5153                    }
5154                }
5155                deserializer.deserialize_identifier(GeneratedVisitor)
5156            }
5157        }
5158        struct GeneratedVisitor;
5159        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5160            type Value = CreateSecurityGroupRequest;
5161            fn expecting(
5162                &self,
5163                formatter: &mut std::fmt::Formatter<'_>,
5164            ) -> std::fmt::Result {
5165                formatter
5166                    .write_str(
5167                        "struct origincloud.network.v1beta1.CreateSecurityGroupRequest",
5168                    )
5169            }
5170            fn visit_map<V>(
5171                self,
5172                mut map_: V,
5173            ) -> std::result::Result<CreateSecurityGroupRequest, V::Error>
5174            where
5175                V: serde::de::MapAccess<'de>,
5176            {
5177                let mut parent__ = None;
5178                let mut security_group__ = None;
5179                let mut request_id__ = None;
5180                while let Some(k) = map_.next_key()? {
5181                    match k {
5182                        GeneratedField::Parent => {
5183                            if parent__.is_some() {
5184                                return Err(serde::de::Error::duplicate_field("parent"));
5185                            }
5186                            parent__ = Some(map_.next_value()?);
5187                        }
5188                        GeneratedField::SecurityGroup => {
5189                            if security_group__.is_some() {
5190                                return Err(
5191                                    serde::de::Error::duplicate_field("securityGroup"),
5192                                );
5193                            }
5194                            security_group__ = map_.next_value()?;
5195                        }
5196                        GeneratedField::RequestId => {
5197                            if request_id__.is_some() {
5198                                return Err(serde::de::Error::duplicate_field("requestId"));
5199                            }
5200                            request_id__ = Some(map_.next_value()?);
5201                        }
5202                        GeneratedField::__SkipField__ => {
5203                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5204                        }
5205                    }
5206                }
5207                Ok(CreateSecurityGroupRequest {
5208                    parent: parent__.unwrap_or_default(),
5209                    security_group: security_group__,
5210                    request_id: request_id__.unwrap_or_default(),
5211                })
5212            }
5213        }
5214        deserializer
5215            .deserialize_struct(
5216                "origincloud.network.v1beta1.CreateSecurityGroupRequest",
5217                FIELDS,
5218                GeneratedVisitor,
5219            )
5220    }
5221}
5222impl serde::Serialize for CreateSecurityGroupRuleRequest {
5223    #[allow(deprecated)]
5224    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5225    where
5226        S: serde::Serializer,
5227    {
5228        use serde::ser::SerializeStruct;
5229        let mut len = 0;
5230        if !self.parent.is_empty() {
5231            len += 1;
5232        }
5233        if self.security_group_rule.is_some() {
5234            len += 1;
5235        }
5236        if !self.request_id.is_empty() {
5237            len += 1;
5238        }
5239        let mut struct_ser = serializer
5240            .serialize_struct(
5241                "origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5242                len,
5243            )?;
5244        if !self.parent.is_empty() {
5245            struct_ser.serialize_field("parent", &self.parent)?;
5246        }
5247        if let Some(v) = self.security_group_rule.as_ref() {
5248            struct_ser.serialize_field("securityGroupRule", v)?;
5249        }
5250        if !self.request_id.is_empty() {
5251            struct_ser.serialize_field("requestId", &self.request_id)?;
5252        }
5253        struct_ser.end()
5254    }
5255}
5256impl<'de> serde::Deserialize<'de> for CreateSecurityGroupRuleRequest {
5257    #[allow(deprecated)]
5258    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5259    where
5260        D: serde::Deserializer<'de>,
5261    {
5262        const FIELDS: &[&str] = &[
5263            "parent",
5264            "security_group_rule",
5265            "securityGroupRule",
5266            "request_id",
5267            "requestId",
5268        ];
5269        #[allow(clippy::enum_variant_names)]
5270        enum GeneratedField {
5271            Parent,
5272            SecurityGroupRule,
5273            RequestId,
5274            __SkipField__,
5275        }
5276        impl<'de> serde::Deserialize<'de> for GeneratedField {
5277            fn deserialize<D>(
5278                deserializer: D,
5279            ) -> std::result::Result<GeneratedField, D::Error>
5280            where
5281                D: serde::Deserializer<'de>,
5282            {
5283                struct GeneratedVisitor;
5284                impl serde::de::Visitor<'_> for GeneratedVisitor {
5285                    type Value = GeneratedField;
5286                    fn expecting(
5287                        &self,
5288                        formatter: &mut std::fmt::Formatter<'_>,
5289                    ) -> std::fmt::Result {
5290                        write!(formatter, "expected one of: {:?}", & FIELDS)
5291                    }
5292                    #[allow(unused_variables)]
5293                    fn visit_str<E>(
5294                        self,
5295                        value: &str,
5296                    ) -> std::result::Result<GeneratedField, E>
5297                    where
5298                        E: serde::de::Error,
5299                    {
5300                        match value {
5301                            "parent" => Ok(GeneratedField::Parent),
5302                            "securityGroupRule" | "security_group_rule" => {
5303                                Ok(GeneratedField::SecurityGroupRule)
5304                            }
5305                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5306                            _ => Ok(GeneratedField::__SkipField__),
5307                        }
5308                    }
5309                }
5310                deserializer.deserialize_identifier(GeneratedVisitor)
5311            }
5312        }
5313        struct GeneratedVisitor;
5314        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5315            type Value = CreateSecurityGroupRuleRequest;
5316            fn expecting(
5317                &self,
5318                formatter: &mut std::fmt::Formatter<'_>,
5319            ) -> std::fmt::Result {
5320                formatter
5321                    .write_str(
5322                        "struct origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5323                    )
5324            }
5325            fn visit_map<V>(
5326                self,
5327                mut map_: V,
5328            ) -> std::result::Result<CreateSecurityGroupRuleRequest, V::Error>
5329            where
5330                V: serde::de::MapAccess<'de>,
5331            {
5332                let mut parent__ = None;
5333                let mut security_group_rule__ = None;
5334                let mut request_id__ = None;
5335                while let Some(k) = map_.next_key()? {
5336                    match k {
5337                        GeneratedField::Parent => {
5338                            if parent__.is_some() {
5339                                return Err(serde::de::Error::duplicate_field("parent"));
5340                            }
5341                            parent__ = Some(map_.next_value()?);
5342                        }
5343                        GeneratedField::SecurityGroupRule => {
5344                            if security_group_rule__.is_some() {
5345                                return Err(
5346                                    serde::de::Error::duplicate_field("securityGroupRule"),
5347                                );
5348                            }
5349                            security_group_rule__ = map_.next_value()?;
5350                        }
5351                        GeneratedField::RequestId => {
5352                            if request_id__.is_some() {
5353                                return Err(serde::de::Error::duplicate_field("requestId"));
5354                            }
5355                            request_id__ = Some(map_.next_value()?);
5356                        }
5357                        GeneratedField::__SkipField__ => {
5358                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5359                        }
5360                    }
5361                }
5362                Ok(CreateSecurityGroupRuleRequest {
5363                    parent: parent__.unwrap_or_default(),
5364                    security_group_rule: security_group_rule__,
5365                    request_id: request_id__.unwrap_or_default(),
5366                })
5367            }
5368        }
5369        deserializer
5370            .deserialize_struct(
5371                "origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5372                FIELDS,
5373                GeneratedVisitor,
5374            )
5375    }
5376}
5377impl serde::Serialize for CreateSubnetRequest {
5378    #[allow(deprecated)]
5379    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5380    where
5381        S: serde::Serializer,
5382    {
5383        use serde::ser::SerializeStruct;
5384        let mut len = 0;
5385        if !self.parent.is_empty() {
5386            len += 1;
5387        }
5388        if self.subnet.is_some() {
5389            len += 1;
5390        }
5391        if !self.request_id.is_empty() {
5392            len += 1;
5393        }
5394        let mut struct_ser = serializer
5395            .serialize_struct("origincloud.network.v1beta1.CreateSubnetRequest", len)?;
5396        if !self.parent.is_empty() {
5397            struct_ser.serialize_field("parent", &self.parent)?;
5398        }
5399        if let Some(v) = self.subnet.as_ref() {
5400            struct_ser.serialize_field("subnet", v)?;
5401        }
5402        if !self.request_id.is_empty() {
5403            struct_ser.serialize_field("requestId", &self.request_id)?;
5404        }
5405        struct_ser.end()
5406    }
5407}
5408impl<'de> serde::Deserialize<'de> for CreateSubnetRequest {
5409    #[allow(deprecated)]
5410    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5411    where
5412        D: serde::Deserializer<'de>,
5413    {
5414        const FIELDS: &[&str] = &["parent", "subnet", "request_id", "requestId"];
5415        #[allow(clippy::enum_variant_names)]
5416        enum GeneratedField {
5417            Parent,
5418            Subnet,
5419            RequestId,
5420            __SkipField__,
5421        }
5422        impl<'de> serde::Deserialize<'de> for GeneratedField {
5423            fn deserialize<D>(
5424                deserializer: D,
5425            ) -> std::result::Result<GeneratedField, D::Error>
5426            where
5427                D: serde::Deserializer<'de>,
5428            {
5429                struct GeneratedVisitor;
5430                impl serde::de::Visitor<'_> for GeneratedVisitor {
5431                    type Value = GeneratedField;
5432                    fn expecting(
5433                        &self,
5434                        formatter: &mut std::fmt::Formatter<'_>,
5435                    ) -> std::fmt::Result {
5436                        write!(formatter, "expected one of: {:?}", & FIELDS)
5437                    }
5438                    #[allow(unused_variables)]
5439                    fn visit_str<E>(
5440                        self,
5441                        value: &str,
5442                    ) -> std::result::Result<GeneratedField, E>
5443                    where
5444                        E: serde::de::Error,
5445                    {
5446                        match value {
5447                            "parent" => Ok(GeneratedField::Parent),
5448                            "subnet" => Ok(GeneratedField::Subnet),
5449                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5450                            _ => Ok(GeneratedField::__SkipField__),
5451                        }
5452                    }
5453                }
5454                deserializer.deserialize_identifier(GeneratedVisitor)
5455            }
5456        }
5457        struct GeneratedVisitor;
5458        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5459            type Value = CreateSubnetRequest;
5460            fn expecting(
5461                &self,
5462                formatter: &mut std::fmt::Formatter<'_>,
5463            ) -> std::fmt::Result {
5464                formatter
5465                    .write_str("struct origincloud.network.v1beta1.CreateSubnetRequest")
5466            }
5467            fn visit_map<V>(
5468                self,
5469                mut map_: V,
5470            ) -> std::result::Result<CreateSubnetRequest, V::Error>
5471            where
5472                V: serde::de::MapAccess<'de>,
5473            {
5474                let mut parent__ = None;
5475                let mut subnet__ = None;
5476                let mut request_id__ = None;
5477                while let Some(k) = map_.next_key()? {
5478                    match k {
5479                        GeneratedField::Parent => {
5480                            if parent__.is_some() {
5481                                return Err(serde::de::Error::duplicate_field("parent"));
5482                            }
5483                            parent__ = Some(map_.next_value()?);
5484                        }
5485                        GeneratedField::Subnet => {
5486                            if subnet__.is_some() {
5487                                return Err(serde::de::Error::duplicate_field("subnet"));
5488                            }
5489                            subnet__ = map_.next_value()?;
5490                        }
5491                        GeneratedField::RequestId => {
5492                            if request_id__.is_some() {
5493                                return Err(serde::de::Error::duplicate_field("requestId"));
5494                            }
5495                            request_id__ = Some(map_.next_value()?);
5496                        }
5497                        GeneratedField::__SkipField__ => {
5498                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5499                        }
5500                    }
5501                }
5502                Ok(CreateSubnetRequest {
5503                    parent: parent__.unwrap_or_default(),
5504                    subnet: subnet__,
5505                    request_id: request_id__.unwrap_or_default(),
5506                })
5507            }
5508        }
5509        deserializer
5510            .deserialize_struct(
5511                "origincloud.network.v1beta1.CreateSubnetRequest",
5512                FIELDS,
5513                GeneratedVisitor,
5514            )
5515    }
5516}
5517impl serde::Serialize for CreateVpcRequest {
5518    #[allow(deprecated)]
5519    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5520    where
5521        S: serde::Serializer,
5522    {
5523        use serde::ser::SerializeStruct;
5524        let mut len = 0;
5525        if !self.parent.is_empty() {
5526            len += 1;
5527        }
5528        if self.vpc.is_some() {
5529            len += 1;
5530        }
5531        if !self.request_id.is_empty() {
5532            len += 1;
5533        }
5534        let mut struct_ser = serializer
5535            .serialize_struct("origincloud.network.v1beta1.CreateVpcRequest", len)?;
5536        if !self.parent.is_empty() {
5537            struct_ser.serialize_field("parent", &self.parent)?;
5538        }
5539        if let Some(v) = self.vpc.as_ref() {
5540            struct_ser.serialize_field("vpc", v)?;
5541        }
5542        if !self.request_id.is_empty() {
5543            struct_ser.serialize_field("requestId", &self.request_id)?;
5544        }
5545        struct_ser.end()
5546    }
5547}
5548impl<'de> serde::Deserialize<'de> for CreateVpcRequest {
5549    #[allow(deprecated)]
5550    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5551    where
5552        D: serde::Deserializer<'de>,
5553    {
5554        const FIELDS: &[&str] = &["parent", "vpc", "request_id", "requestId"];
5555        #[allow(clippy::enum_variant_names)]
5556        enum GeneratedField {
5557            Parent,
5558            Vpc,
5559            RequestId,
5560            __SkipField__,
5561        }
5562        impl<'de> serde::Deserialize<'de> for GeneratedField {
5563            fn deserialize<D>(
5564                deserializer: D,
5565            ) -> std::result::Result<GeneratedField, D::Error>
5566            where
5567                D: serde::Deserializer<'de>,
5568            {
5569                struct GeneratedVisitor;
5570                impl serde::de::Visitor<'_> for GeneratedVisitor {
5571                    type Value = GeneratedField;
5572                    fn expecting(
5573                        &self,
5574                        formatter: &mut std::fmt::Formatter<'_>,
5575                    ) -> std::fmt::Result {
5576                        write!(formatter, "expected one of: {:?}", & FIELDS)
5577                    }
5578                    #[allow(unused_variables)]
5579                    fn visit_str<E>(
5580                        self,
5581                        value: &str,
5582                    ) -> std::result::Result<GeneratedField, E>
5583                    where
5584                        E: serde::de::Error,
5585                    {
5586                        match value {
5587                            "parent" => Ok(GeneratedField::Parent),
5588                            "vpc" => Ok(GeneratedField::Vpc),
5589                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5590                            _ => Ok(GeneratedField::__SkipField__),
5591                        }
5592                    }
5593                }
5594                deserializer.deserialize_identifier(GeneratedVisitor)
5595            }
5596        }
5597        struct GeneratedVisitor;
5598        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5599            type Value = CreateVpcRequest;
5600            fn expecting(
5601                &self,
5602                formatter: &mut std::fmt::Formatter<'_>,
5603            ) -> std::fmt::Result {
5604                formatter
5605                    .write_str("struct origincloud.network.v1beta1.CreateVpcRequest")
5606            }
5607            fn visit_map<V>(
5608                self,
5609                mut map_: V,
5610            ) -> std::result::Result<CreateVpcRequest, V::Error>
5611            where
5612                V: serde::de::MapAccess<'de>,
5613            {
5614                let mut parent__ = None;
5615                let mut vpc__ = None;
5616                let mut request_id__ = None;
5617                while let Some(k) = map_.next_key()? {
5618                    match k {
5619                        GeneratedField::Parent => {
5620                            if parent__.is_some() {
5621                                return Err(serde::de::Error::duplicate_field("parent"));
5622                            }
5623                            parent__ = Some(map_.next_value()?);
5624                        }
5625                        GeneratedField::Vpc => {
5626                            if vpc__.is_some() {
5627                                return Err(serde::de::Error::duplicate_field("vpc"));
5628                            }
5629                            vpc__ = map_.next_value()?;
5630                        }
5631                        GeneratedField::RequestId => {
5632                            if request_id__.is_some() {
5633                                return Err(serde::de::Error::duplicate_field("requestId"));
5634                            }
5635                            request_id__ = Some(map_.next_value()?);
5636                        }
5637                        GeneratedField::__SkipField__ => {
5638                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5639                        }
5640                    }
5641                }
5642                Ok(CreateVpcRequest {
5643                    parent: parent__.unwrap_or_default(),
5644                    vpc: vpc__,
5645                    request_id: request_id__.unwrap_or_default(),
5646                })
5647            }
5648        }
5649        deserializer
5650            .deserialize_struct(
5651                "origincloud.network.v1beta1.CreateVpcRequest",
5652                FIELDS,
5653                GeneratedVisitor,
5654            )
5655    }
5656}
5657impl serde::Serialize for DeleteAclAssociationRequest {
5658    #[allow(deprecated)]
5659    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5660    where
5661        S: serde::Serializer,
5662    {
5663        use serde::ser::SerializeStruct;
5664        let mut len = 0;
5665        if !self.name.is_empty() {
5666            len += 1;
5667        }
5668        if !self.request_id.is_empty() {
5669            len += 1;
5670        }
5671        let mut struct_ser = serializer
5672            .serialize_struct(
5673                "origincloud.network.v1beta1.DeleteAclAssociationRequest",
5674                len,
5675            )?;
5676        if !self.name.is_empty() {
5677            struct_ser.serialize_field("name", &self.name)?;
5678        }
5679        if !self.request_id.is_empty() {
5680            struct_ser.serialize_field("requestId", &self.request_id)?;
5681        }
5682        struct_ser.end()
5683    }
5684}
5685impl<'de> serde::Deserialize<'de> for DeleteAclAssociationRequest {
5686    #[allow(deprecated)]
5687    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5688    where
5689        D: serde::Deserializer<'de>,
5690    {
5691        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5692        #[allow(clippy::enum_variant_names)]
5693        enum GeneratedField {
5694            Name,
5695            RequestId,
5696            __SkipField__,
5697        }
5698        impl<'de> serde::Deserialize<'de> for GeneratedField {
5699            fn deserialize<D>(
5700                deserializer: D,
5701            ) -> std::result::Result<GeneratedField, D::Error>
5702            where
5703                D: serde::Deserializer<'de>,
5704            {
5705                struct GeneratedVisitor;
5706                impl serde::de::Visitor<'_> for GeneratedVisitor {
5707                    type Value = GeneratedField;
5708                    fn expecting(
5709                        &self,
5710                        formatter: &mut std::fmt::Formatter<'_>,
5711                    ) -> std::fmt::Result {
5712                        write!(formatter, "expected one of: {:?}", & FIELDS)
5713                    }
5714                    #[allow(unused_variables)]
5715                    fn visit_str<E>(
5716                        self,
5717                        value: &str,
5718                    ) -> std::result::Result<GeneratedField, E>
5719                    where
5720                        E: serde::de::Error,
5721                    {
5722                        match value {
5723                            "name" => Ok(GeneratedField::Name),
5724                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5725                            _ => Ok(GeneratedField::__SkipField__),
5726                        }
5727                    }
5728                }
5729                deserializer.deserialize_identifier(GeneratedVisitor)
5730            }
5731        }
5732        struct GeneratedVisitor;
5733        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5734            type Value = DeleteAclAssociationRequest;
5735            fn expecting(
5736                &self,
5737                formatter: &mut std::fmt::Formatter<'_>,
5738            ) -> std::fmt::Result {
5739                formatter
5740                    .write_str(
5741                        "struct origincloud.network.v1beta1.DeleteAclAssociationRequest",
5742                    )
5743            }
5744            fn visit_map<V>(
5745                self,
5746                mut map_: V,
5747            ) -> std::result::Result<DeleteAclAssociationRequest, V::Error>
5748            where
5749                V: serde::de::MapAccess<'de>,
5750            {
5751                let mut name__ = None;
5752                let mut request_id__ = None;
5753                while let Some(k) = map_.next_key()? {
5754                    match k {
5755                        GeneratedField::Name => {
5756                            if name__.is_some() {
5757                                return Err(serde::de::Error::duplicate_field("name"));
5758                            }
5759                            name__ = Some(map_.next_value()?);
5760                        }
5761                        GeneratedField::RequestId => {
5762                            if request_id__.is_some() {
5763                                return Err(serde::de::Error::duplicate_field("requestId"));
5764                            }
5765                            request_id__ = Some(map_.next_value()?);
5766                        }
5767                        GeneratedField::__SkipField__ => {
5768                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5769                        }
5770                    }
5771                }
5772                Ok(DeleteAclAssociationRequest {
5773                    name: name__.unwrap_or_default(),
5774                    request_id: request_id__.unwrap_or_default(),
5775                })
5776            }
5777        }
5778        deserializer
5779            .deserialize_struct(
5780                "origincloud.network.v1beta1.DeleteAclAssociationRequest",
5781                FIELDS,
5782                GeneratedVisitor,
5783            )
5784    }
5785}
5786impl serde::Serialize for DeleteAclRequest {
5787    #[allow(deprecated)]
5788    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5789    where
5790        S: serde::Serializer,
5791    {
5792        use serde::ser::SerializeStruct;
5793        let mut len = 0;
5794        if !self.name.is_empty() {
5795            len += 1;
5796        }
5797        if !self.request_id.is_empty() {
5798            len += 1;
5799        }
5800        let mut struct_ser = serializer
5801            .serialize_struct("origincloud.network.v1beta1.DeleteAclRequest", len)?;
5802        if !self.name.is_empty() {
5803            struct_ser.serialize_field("name", &self.name)?;
5804        }
5805        if !self.request_id.is_empty() {
5806            struct_ser.serialize_field("requestId", &self.request_id)?;
5807        }
5808        struct_ser.end()
5809    }
5810}
5811impl<'de> serde::Deserialize<'de> for DeleteAclRequest {
5812    #[allow(deprecated)]
5813    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5814    where
5815        D: serde::Deserializer<'de>,
5816    {
5817        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5818        #[allow(clippy::enum_variant_names)]
5819        enum GeneratedField {
5820            Name,
5821            RequestId,
5822            __SkipField__,
5823        }
5824        impl<'de> serde::Deserialize<'de> for GeneratedField {
5825            fn deserialize<D>(
5826                deserializer: D,
5827            ) -> std::result::Result<GeneratedField, D::Error>
5828            where
5829                D: serde::Deserializer<'de>,
5830            {
5831                struct GeneratedVisitor;
5832                impl serde::de::Visitor<'_> for GeneratedVisitor {
5833                    type Value = GeneratedField;
5834                    fn expecting(
5835                        &self,
5836                        formatter: &mut std::fmt::Formatter<'_>,
5837                    ) -> std::fmt::Result {
5838                        write!(formatter, "expected one of: {:?}", & FIELDS)
5839                    }
5840                    #[allow(unused_variables)]
5841                    fn visit_str<E>(
5842                        self,
5843                        value: &str,
5844                    ) -> std::result::Result<GeneratedField, E>
5845                    where
5846                        E: serde::de::Error,
5847                    {
5848                        match value {
5849                            "name" => Ok(GeneratedField::Name),
5850                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5851                            _ => Ok(GeneratedField::__SkipField__),
5852                        }
5853                    }
5854                }
5855                deserializer.deserialize_identifier(GeneratedVisitor)
5856            }
5857        }
5858        struct GeneratedVisitor;
5859        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5860            type Value = DeleteAclRequest;
5861            fn expecting(
5862                &self,
5863                formatter: &mut std::fmt::Formatter<'_>,
5864            ) -> std::fmt::Result {
5865                formatter
5866                    .write_str("struct origincloud.network.v1beta1.DeleteAclRequest")
5867            }
5868            fn visit_map<V>(
5869                self,
5870                mut map_: V,
5871            ) -> std::result::Result<DeleteAclRequest, V::Error>
5872            where
5873                V: serde::de::MapAccess<'de>,
5874            {
5875                let mut name__ = None;
5876                let mut request_id__ = None;
5877                while let Some(k) = map_.next_key()? {
5878                    match k {
5879                        GeneratedField::Name => {
5880                            if name__.is_some() {
5881                                return Err(serde::de::Error::duplicate_field("name"));
5882                            }
5883                            name__ = Some(map_.next_value()?);
5884                        }
5885                        GeneratedField::RequestId => {
5886                            if request_id__.is_some() {
5887                                return Err(serde::de::Error::duplicate_field("requestId"));
5888                            }
5889                            request_id__ = Some(map_.next_value()?);
5890                        }
5891                        GeneratedField::__SkipField__ => {
5892                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5893                        }
5894                    }
5895                }
5896                Ok(DeleteAclRequest {
5897                    name: name__.unwrap_or_default(),
5898                    request_id: request_id__.unwrap_or_default(),
5899                })
5900            }
5901        }
5902        deserializer
5903            .deserialize_struct(
5904                "origincloud.network.v1beta1.DeleteAclRequest",
5905                FIELDS,
5906                GeneratedVisitor,
5907            )
5908    }
5909}
5910impl serde::Serialize for DeleteAclRuleRequest {
5911    #[allow(deprecated)]
5912    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5913    where
5914        S: serde::Serializer,
5915    {
5916        use serde::ser::SerializeStruct;
5917        let mut len = 0;
5918        if !self.name.is_empty() {
5919            len += 1;
5920        }
5921        if !self.request_id.is_empty() {
5922            len += 1;
5923        }
5924        let mut struct_ser = serializer
5925            .serialize_struct("origincloud.network.v1beta1.DeleteAclRuleRequest", len)?;
5926        if !self.name.is_empty() {
5927            struct_ser.serialize_field("name", &self.name)?;
5928        }
5929        if !self.request_id.is_empty() {
5930            struct_ser.serialize_field("requestId", &self.request_id)?;
5931        }
5932        struct_ser.end()
5933    }
5934}
5935impl<'de> serde::Deserialize<'de> for DeleteAclRuleRequest {
5936    #[allow(deprecated)]
5937    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5938    where
5939        D: serde::Deserializer<'de>,
5940    {
5941        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5942        #[allow(clippy::enum_variant_names)]
5943        enum GeneratedField {
5944            Name,
5945            RequestId,
5946            __SkipField__,
5947        }
5948        impl<'de> serde::Deserialize<'de> for GeneratedField {
5949            fn deserialize<D>(
5950                deserializer: D,
5951            ) -> std::result::Result<GeneratedField, D::Error>
5952            where
5953                D: serde::Deserializer<'de>,
5954            {
5955                struct GeneratedVisitor;
5956                impl serde::de::Visitor<'_> for GeneratedVisitor {
5957                    type Value = GeneratedField;
5958                    fn expecting(
5959                        &self,
5960                        formatter: &mut std::fmt::Formatter<'_>,
5961                    ) -> std::fmt::Result {
5962                        write!(formatter, "expected one of: {:?}", & FIELDS)
5963                    }
5964                    #[allow(unused_variables)]
5965                    fn visit_str<E>(
5966                        self,
5967                        value: &str,
5968                    ) -> std::result::Result<GeneratedField, E>
5969                    where
5970                        E: serde::de::Error,
5971                    {
5972                        match value {
5973                            "name" => Ok(GeneratedField::Name),
5974                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5975                            _ => Ok(GeneratedField::__SkipField__),
5976                        }
5977                    }
5978                }
5979                deserializer.deserialize_identifier(GeneratedVisitor)
5980            }
5981        }
5982        struct GeneratedVisitor;
5983        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5984            type Value = DeleteAclRuleRequest;
5985            fn expecting(
5986                &self,
5987                formatter: &mut std::fmt::Formatter<'_>,
5988            ) -> std::fmt::Result {
5989                formatter
5990                    .write_str("struct origincloud.network.v1beta1.DeleteAclRuleRequest")
5991            }
5992            fn visit_map<V>(
5993                self,
5994                mut map_: V,
5995            ) -> std::result::Result<DeleteAclRuleRequest, V::Error>
5996            where
5997                V: serde::de::MapAccess<'de>,
5998            {
5999                let mut name__ = None;
6000                let mut request_id__ = None;
6001                while let Some(k) = map_.next_key()? {
6002                    match k {
6003                        GeneratedField::Name => {
6004                            if name__.is_some() {
6005                                return Err(serde::de::Error::duplicate_field("name"));
6006                            }
6007                            name__ = Some(map_.next_value()?);
6008                        }
6009                        GeneratedField::RequestId => {
6010                            if request_id__.is_some() {
6011                                return Err(serde::de::Error::duplicate_field("requestId"));
6012                            }
6013                            request_id__ = Some(map_.next_value()?);
6014                        }
6015                        GeneratedField::__SkipField__ => {
6016                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6017                        }
6018                    }
6019                }
6020                Ok(DeleteAclRuleRequest {
6021                    name: name__.unwrap_or_default(),
6022                    request_id: request_id__.unwrap_or_default(),
6023                })
6024            }
6025        }
6026        deserializer
6027            .deserialize_struct(
6028                "origincloud.network.v1beta1.DeleteAclRuleRequest",
6029                FIELDS,
6030                GeneratedVisitor,
6031            )
6032    }
6033}
6034impl serde::Serialize for DeleteDnsPolicyAssociationRequest {
6035    #[allow(deprecated)]
6036    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6037    where
6038        S: serde::Serializer,
6039    {
6040        use serde::ser::SerializeStruct;
6041        let mut len = 0;
6042        if !self.name.is_empty() {
6043            len += 1;
6044        }
6045        if !self.request_id.is_empty() {
6046            len += 1;
6047        }
6048        let mut struct_ser = serializer
6049            .serialize_struct(
6050                "origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6051                len,
6052            )?;
6053        if !self.name.is_empty() {
6054            struct_ser.serialize_field("name", &self.name)?;
6055        }
6056        if !self.request_id.is_empty() {
6057            struct_ser.serialize_field("requestId", &self.request_id)?;
6058        }
6059        struct_ser.end()
6060    }
6061}
6062impl<'de> serde::Deserialize<'de> for DeleteDnsPolicyAssociationRequest {
6063    #[allow(deprecated)]
6064    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6065    where
6066        D: serde::Deserializer<'de>,
6067    {
6068        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6069        #[allow(clippy::enum_variant_names)]
6070        enum GeneratedField {
6071            Name,
6072            RequestId,
6073            __SkipField__,
6074        }
6075        impl<'de> serde::Deserialize<'de> for GeneratedField {
6076            fn deserialize<D>(
6077                deserializer: D,
6078            ) -> std::result::Result<GeneratedField, D::Error>
6079            where
6080                D: serde::Deserializer<'de>,
6081            {
6082                struct GeneratedVisitor;
6083                impl serde::de::Visitor<'_> for GeneratedVisitor {
6084                    type Value = GeneratedField;
6085                    fn expecting(
6086                        &self,
6087                        formatter: &mut std::fmt::Formatter<'_>,
6088                    ) -> std::fmt::Result {
6089                        write!(formatter, "expected one of: {:?}", & FIELDS)
6090                    }
6091                    #[allow(unused_variables)]
6092                    fn visit_str<E>(
6093                        self,
6094                        value: &str,
6095                    ) -> std::result::Result<GeneratedField, E>
6096                    where
6097                        E: serde::de::Error,
6098                    {
6099                        match value {
6100                            "name" => Ok(GeneratedField::Name),
6101                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6102                            _ => Ok(GeneratedField::__SkipField__),
6103                        }
6104                    }
6105                }
6106                deserializer.deserialize_identifier(GeneratedVisitor)
6107            }
6108        }
6109        struct GeneratedVisitor;
6110        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6111            type Value = DeleteDnsPolicyAssociationRequest;
6112            fn expecting(
6113                &self,
6114                formatter: &mut std::fmt::Formatter<'_>,
6115            ) -> std::fmt::Result {
6116                formatter
6117                    .write_str(
6118                        "struct origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6119                    )
6120            }
6121            fn visit_map<V>(
6122                self,
6123                mut map_: V,
6124            ) -> std::result::Result<DeleteDnsPolicyAssociationRequest, V::Error>
6125            where
6126                V: serde::de::MapAccess<'de>,
6127            {
6128                let mut name__ = None;
6129                let mut request_id__ = None;
6130                while let Some(k) = map_.next_key()? {
6131                    match k {
6132                        GeneratedField::Name => {
6133                            if name__.is_some() {
6134                                return Err(serde::de::Error::duplicate_field("name"));
6135                            }
6136                            name__ = Some(map_.next_value()?);
6137                        }
6138                        GeneratedField::RequestId => {
6139                            if request_id__.is_some() {
6140                                return Err(serde::de::Error::duplicate_field("requestId"));
6141                            }
6142                            request_id__ = Some(map_.next_value()?);
6143                        }
6144                        GeneratedField::__SkipField__ => {
6145                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6146                        }
6147                    }
6148                }
6149                Ok(DeleteDnsPolicyAssociationRequest {
6150                    name: name__.unwrap_or_default(),
6151                    request_id: request_id__.unwrap_or_default(),
6152                })
6153            }
6154        }
6155        deserializer
6156            .deserialize_struct(
6157                "origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6158                FIELDS,
6159                GeneratedVisitor,
6160            )
6161    }
6162}
6163impl serde::Serialize for DeleteDnsPolicyRequest {
6164    #[allow(deprecated)]
6165    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6166    where
6167        S: serde::Serializer,
6168    {
6169        use serde::ser::SerializeStruct;
6170        let mut len = 0;
6171        if !self.name.is_empty() {
6172            len += 1;
6173        }
6174        if !self.request_id.is_empty() {
6175            len += 1;
6176        }
6177        let mut struct_ser = serializer
6178            .serialize_struct(
6179                "origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6180                len,
6181            )?;
6182        if !self.name.is_empty() {
6183            struct_ser.serialize_field("name", &self.name)?;
6184        }
6185        if !self.request_id.is_empty() {
6186            struct_ser.serialize_field("requestId", &self.request_id)?;
6187        }
6188        struct_ser.end()
6189    }
6190}
6191impl<'de> serde::Deserialize<'de> for DeleteDnsPolicyRequest {
6192    #[allow(deprecated)]
6193    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6194    where
6195        D: serde::Deserializer<'de>,
6196    {
6197        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6198        #[allow(clippy::enum_variant_names)]
6199        enum GeneratedField {
6200            Name,
6201            RequestId,
6202            __SkipField__,
6203        }
6204        impl<'de> serde::Deserialize<'de> for GeneratedField {
6205            fn deserialize<D>(
6206                deserializer: D,
6207            ) -> std::result::Result<GeneratedField, D::Error>
6208            where
6209                D: serde::Deserializer<'de>,
6210            {
6211                struct GeneratedVisitor;
6212                impl serde::de::Visitor<'_> for GeneratedVisitor {
6213                    type Value = GeneratedField;
6214                    fn expecting(
6215                        &self,
6216                        formatter: &mut std::fmt::Formatter<'_>,
6217                    ) -> std::fmt::Result {
6218                        write!(formatter, "expected one of: {:?}", & FIELDS)
6219                    }
6220                    #[allow(unused_variables)]
6221                    fn visit_str<E>(
6222                        self,
6223                        value: &str,
6224                    ) -> std::result::Result<GeneratedField, E>
6225                    where
6226                        E: serde::de::Error,
6227                    {
6228                        match value {
6229                            "name" => Ok(GeneratedField::Name),
6230                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6231                            _ => Ok(GeneratedField::__SkipField__),
6232                        }
6233                    }
6234                }
6235                deserializer.deserialize_identifier(GeneratedVisitor)
6236            }
6237        }
6238        struct GeneratedVisitor;
6239        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6240            type Value = DeleteDnsPolicyRequest;
6241            fn expecting(
6242                &self,
6243                formatter: &mut std::fmt::Formatter<'_>,
6244            ) -> std::fmt::Result {
6245                formatter
6246                    .write_str(
6247                        "struct origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6248                    )
6249            }
6250            fn visit_map<V>(
6251                self,
6252                mut map_: V,
6253            ) -> std::result::Result<DeleteDnsPolicyRequest, V::Error>
6254            where
6255                V: serde::de::MapAccess<'de>,
6256            {
6257                let mut name__ = None;
6258                let mut request_id__ = None;
6259                while let Some(k) = map_.next_key()? {
6260                    match k {
6261                        GeneratedField::Name => {
6262                            if name__.is_some() {
6263                                return Err(serde::de::Error::duplicate_field("name"));
6264                            }
6265                            name__ = Some(map_.next_value()?);
6266                        }
6267                        GeneratedField::RequestId => {
6268                            if request_id__.is_some() {
6269                                return Err(serde::de::Error::duplicate_field("requestId"));
6270                            }
6271                            request_id__ = Some(map_.next_value()?);
6272                        }
6273                        GeneratedField::__SkipField__ => {
6274                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6275                        }
6276                    }
6277                }
6278                Ok(DeleteDnsPolicyRequest {
6279                    name: name__.unwrap_or_default(),
6280                    request_id: request_id__.unwrap_or_default(),
6281                })
6282            }
6283        }
6284        deserializer
6285            .deserialize_struct(
6286                "origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6287                FIELDS,
6288                GeneratedVisitor,
6289            )
6290    }
6291}
6292impl serde::Serialize for DeleteFloatingIpAssociationRequest {
6293    #[allow(deprecated)]
6294    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6295    where
6296        S: serde::Serializer,
6297    {
6298        use serde::ser::SerializeStruct;
6299        let mut len = 0;
6300        if !self.name.is_empty() {
6301            len += 1;
6302        }
6303        if !self.request_id.is_empty() {
6304            len += 1;
6305        }
6306        let mut struct_ser = serializer
6307            .serialize_struct(
6308                "origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6309                len,
6310            )?;
6311        if !self.name.is_empty() {
6312            struct_ser.serialize_field("name", &self.name)?;
6313        }
6314        if !self.request_id.is_empty() {
6315            struct_ser.serialize_field("requestId", &self.request_id)?;
6316        }
6317        struct_ser.end()
6318    }
6319}
6320impl<'de> serde::Deserialize<'de> for DeleteFloatingIpAssociationRequest {
6321    #[allow(deprecated)]
6322    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6323    where
6324        D: serde::Deserializer<'de>,
6325    {
6326        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6327        #[allow(clippy::enum_variant_names)]
6328        enum GeneratedField {
6329            Name,
6330            RequestId,
6331            __SkipField__,
6332        }
6333        impl<'de> serde::Deserialize<'de> for GeneratedField {
6334            fn deserialize<D>(
6335                deserializer: D,
6336            ) -> std::result::Result<GeneratedField, D::Error>
6337            where
6338                D: serde::Deserializer<'de>,
6339            {
6340                struct GeneratedVisitor;
6341                impl serde::de::Visitor<'_> for GeneratedVisitor {
6342                    type Value = GeneratedField;
6343                    fn expecting(
6344                        &self,
6345                        formatter: &mut std::fmt::Formatter<'_>,
6346                    ) -> std::fmt::Result {
6347                        write!(formatter, "expected one of: {:?}", & FIELDS)
6348                    }
6349                    #[allow(unused_variables)]
6350                    fn visit_str<E>(
6351                        self,
6352                        value: &str,
6353                    ) -> std::result::Result<GeneratedField, E>
6354                    where
6355                        E: serde::de::Error,
6356                    {
6357                        match value {
6358                            "name" => Ok(GeneratedField::Name),
6359                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6360                            _ => Ok(GeneratedField::__SkipField__),
6361                        }
6362                    }
6363                }
6364                deserializer.deserialize_identifier(GeneratedVisitor)
6365            }
6366        }
6367        struct GeneratedVisitor;
6368        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6369            type Value = DeleteFloatingIpAssociationRequest;
6370            fn expecting(
6371                &self,
6372                formatter: &mut std::fmt::Formatter<'_>,
6373            ) -> std::fmt::Result {
6374                formatter
6375                    .write_str(
6376                        "struct origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6377                    )
6378            }
6379            fn visit_map<V>(
6380                self,
6381                mut map_: V,
6382            ) -> std::result::Result<DeleteFloatingIpAssociationRequest, V::Error>
6383            where
6384                V: serde::de::MapAccess<'de>,
6385            {
6386                let mut name__ = None;
6387                let mut request_id__ = None;
6388                while let Some(k) = map_.next_key()? {
6389                    match k {
6390                        GeneratedField::Name => {
6391                            if name__.is_some() {
6392                                return Err(serde::de::Error::duplicate_field("name"));
6393                            }
6394                            name__ = Some(map_.next_value()?);
6395                        }
6396                        GeneratedField::RequestId => {
6397                            if request_id__.is_some() {
6398                                return Err(serde::de::Error::duplicate_field("requestId"));
6399                            }
6400                            request_id__ = Some(map_.next_value()?);
6401                        }
6402                        GeneratedField::__SkipField__ => {
6403                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6404                        }
6405                    }
6406                }
6407                Ok(DeleteFloatingIpAssociationRequest {
6408                    name: name__.unwrap_or_default(),
6409                    request_id: request_id__.unwrap_or_default(),
6410                })
6411            }
6412        }
6413        deserializer
6414            .deserialize_struct(
6415                "origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6416                FIELDS,
6417                GeneratedVisitor,
6418            )
6419    }
6420}
6421impl serde::Serialize for DeleteFloatingIpRequest {
6422    #[allow(deprecated)]
6423    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6424    where
6425        S: serde::Serializer,
6426    {
6427        use serde::ser::SerializeStruct;
6428        let mut len = 0;
6429        if !self.name.is_empty() {
6430            len += 1;
6431        }
6432        if !self.request_id.is_empty() {
6433            len += 1;
6434        }
6435        let mut struct_ser = serializer
6436            .serialize_struct(
6437                "origincloud.network.v1beta1.DeleteFloatingIpRequest",
6438                len,
6439            )?;
6440        if !self.name.is_empty() {
6441            struct_ser.serialize_field("name", &self.name)?;
6442        }
6443        if !self.request_id.is_empty() {
6444            struct_ser.serialize_field("requestId", &self.request_id)?;
6445        }
6446        struct_ser.end()
6447    }
6448}
6449impl<'de> serde::Deserialize<'de> for DeleteFloatingIpRequest {
6450    #[allow(deprecated)]
6451    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6452    where
6453        D: serde::Deserializer<'de>,
6454    {
6455        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6456        #[allow(clippy::enum_variant_names)]
6457        enum GeneratedField {
6458            Name,
6459            RequestId,
6460            __SkipField__,
6461        }
6462        impl<'de> serde::Deserialize<'de> for GeneratedField {
6463            fn deserialize<D>(
6464                deserializer: D,
6465            ) -> std::result::Result<GeneratedField, D::Error>
6466            where
6467                D: serde::Deserializer<'de>,
6468            {
6469                struct GeneratedVisitor;
6470                impl serde::de::Visitor<'_> for GeneratedVisitor {
6471                    type Value = GeneratedField;
6472                    fn expecting(
6473                        &self,
6474                        formatter: &mut std::fmt::Formatter<'_>,
6475                    ) -> std::fmt::Result {
6476                        write!(formatter, "expected one of: {:?}", & FIELDS)
6477                    }
6478                    #[allow(unused_variables)]
6479                    fn visit_str<E>(
6480                        self,
6481                        value: &str,
6482                    ) -> std::result::Result<GeneratedField, E>
6483                    where
6484                        E: serde::de::Error,
6485                    {
6486                        match value {
6487                            "name" => Ok(GeneratedField::Name),
6488                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6489                            _ => Ok(GeneratedField::__SkipField__),
6490                        }
6491                    }
6492                }
6493                deserializer.deserialize_identifier(GeneratedVisitor)
6494            }
6495        }
6496        struct GeneratedVisitor;
6497        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6498            type Value = DeleteFloatingIpRequest;
6499            fn expecting(
6500                &self,
6501                formatter: &mut std::fmt::Formatter<'_>,
6502            ) -> std::fmt::Result {
6503                formatter
6504                    .write_str(
6505                        "struct origincloud.network.v1beta1.DeleteFloatingIpRequest",
6506                    )
6507            }
6508            fn visit_map<V>(
6509                self,
6510                mut map_: V,
6511            ) -> std::result::Result<DeleteFloatingIpRequest, V::Error>
6512            where
6513                V: serde::de::MapAccess<'de>,
6514            {
6515                let mut name__ = None;
6516                let mut request_id__ = None;
6517                while let Some(k) = map_.next_key()? {
6518                    match k {
6519                        GeneratedField::Name => {
6520                            if name__.is_some() {
6521                                return Err(serde::de::Error::duplicate_field("name"));
6522                            }
6523                            name__ = Some(map_.next_value()?);
6524                        }
6525                        GeneratedField::RequestId => {
6526                            if request_id__.is_some() {
6527                                return Err(serde::de::Error::duplicate_field("requestId"));
6528                            }
6529                            request_id__ = Some(map_.next_value()?);
6530                        }
6531                        GeneratedField::__SkipField__ => {
6532                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6533                        }
6534                    }
6535                }
6536                Ok(DeleteFloatingIpRequest {
6537                    name: name__.unwrap_or_default(),
6538                    request_id: request_id__.unwrap_or_default(),
6539                })
6540            }
6541        }
6542        deserializer
6543            .deserialize_struct(
6544                "origincloud.network.v1beta1.DeleteFloatingIpRequest",
6545                FIELDS,
6546                GeneratedVisitor,
6547            )
6548    }
6549}
6550impl serde::Serialize for DeleteInternetGatewayRequest {
6551    #[allow(deprecated)]
6552    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6553    where
6554        S: serde::Serializer,
6555    {
6556        use serde::ser::SerializeStruct;
6557        let mut len = 0;
6558        if !self.name.is_empty() {
6559            len += 1;
6560        }
6561        if !self.request_id.is_empty() {
6562            len += 1;
6563        }
6564        let mut struct_ser = serializer
6565            .serialize_struct(
6566                "origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6567                len,
6568            )?;
6569        if !self.name.is_empty() {
6570            struct_ser.serialize_field("name", &self.name)?;
6571        }
6572        if !self.request_id.is_empty() {
6573            struct_ser.serialize_field("requestId", &self.request_id)?;
6574        }
6575        struct_ser.end()
6576    }
6577}
6578impl<'de> serde::Deserialize<'de> for DeleteInternetGatewayRequest {
6579    #[allow(deprecated)]
6580    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6581    where
6582        D: serde::Deserializer<'de>,
6583    {
6584        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6585        #[allow(clippy::enum_variant_names)]
6586        enum GeneratedField {
6587            Name,
6588            RequestId,
6589            __SkipField__,
6590        }
6591        impl<'de> serde::Deserialize<'de> for GeneratedField {
6592            fn deserialize<D>(
6593                deserializer: D,
6594            ) -> std::result::Result<GeneratedField, D::Error>
6595            where
6596                D: serde::Deserializer<'de>,
6597            {
6598                struct GeneratedVisitor;
6599                impl serde::de::Visitor<'_> for GeneratedVisitor {
6600                    type Value = GeneratedField;
6601                    fn expecting(
6602                        &self,
6603                        formatter: &mut std::fmt::Formatter<'_>,
6604                    ) -> std::fmt::Result {
6605                        write!(formatter, "expected one of: {:?}", & FIELDS)
6606                    }
6607                    #[allow(unused_variables)]
6608                    fn visit_str<E>(
6609                        self,
6610                        value: &str,
6611                    ) -> std::result::Result<GeneratedField, E>
6612                    where
6613                        E: serde::de::Error,
6614                    {
6615                        match value {
6616                            "name" => Ok(GeneratedField::Name),
6617                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6618                            _ => Ok(GeneratedField::__SkipField__),
6619                        }
6620                    }
6621                }
6622                deserializer.deserialize_identifier(GeneratedVisitor)
6623            }
6624        }
6625        struct GeneratedVisitor;
6626        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6627            type Value = DeleteInternetGatewayRequest;
6628            fn expecting(
6629                &self,
6630                formatter: &mut std::fmt::Formatter<'_>,
6631            ) -> std::fmt::Result {
6632                formatter
6633                    .write_str(
6634                        "struct origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6635                    )
6636            }
6637            fn visit_map<V>(
6638                self,
6639                mut map_: V,
6640            ) -> std::result::Result<DeleteInternetGatewayRequest, V::Error>
6641            where
6642                V: serde::de::MapAccess<'de>,
6643            {
6644                let mut name__ = None;
6645                let mut request_id__ = None;
6646                while let Some(k) = map_.next_key()? {
6647                    match k {
6648                        GeneratedField::Name => {
6649                            if name__.is_some() {
6650                                return Err(serde::de::Error::duplicate_field("name"));
6651                            }
6652                            name__ = Some(map_.next_value()?);
6653                        }
6654                        GeneratedField::RequestId => {
6655                            if request_id__.is_some() {
6656                                return Err(serde::de::Error::duplicate_field("requestId"));
6657                            }
6658                            request_id__ = Some(map_.next_value()?);
6659                        }
6660                        GeneratedField::__SkipField__ => {
6661                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6662                        }
6663                    }
6664                }
6665                Ok(DeleteInternetGatewayRequest {
6666                    name: name__.unwrap_or_default(),
6667                    request_id: request_id__.unwrap_or_default(),
6668                })
6669            }
6670        }
6671        deserializer
6672            .deserialize_struct(
6673                "origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6674                FIELDS,
6675                GeneratedVisitor,
6676            )
6677    }
6678}
6679impl serde::Serialize for DeleteNatGatewayRequest {
6680    #[allow(deprecated)]
6681    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6682    where
6683        S: serde::Serializer,
6684    {
6685        use serde::ser::SerializeStruct;
6686        let mut len = 0;
6687        if !self.name.is_empty() {
6688            len += 1;
6689        }
6690        if !self.request_id.is_empty() {
6691            len += 1;
6692        }
6693        let mut struct_ser = serializer
6694            .serialize_struct(
6695                "origincloud.network.v1beta1.DeleteNatGatewayRequest",
6696                len,
6697            )?;
6698        if !self.name.is_empty() {
6699            struct_ser.serialize_field("name", &self.name)?;
6700        }
6701        if !self.request_id.is_empty() {
6702            struct_ser.serialize_field("requestId", &self.request_id)?;
6703        }
6704        struct_ser.end()
6705    }
6706}
6707impl<'de> serde::Deserialize<'de> for DeleteNatGatewayRequest {
6708    #[allow(deprecated)]
6709    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6710    where
6711        D: serde::Deserializer<'de>,
6712    {
6713        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6714        #[allow(clippy::enum_variant_names)]
6715        enum GeneratedField {
6716            Name,
6717            RequestId,
6718            __SkipField__,
6719        }
6720        impl<'de> serde::Deserialize<'de> for GeneratedField {
6721            fn deserialize<D>(
6722                deserializer: D,
6723            ) -> std::result::Result<GeneratedField, D::Error>
6724            where
6725                D: serde::Deserializer<'de>,
6726            {
6727                struct GeneratedVisitor;
6728                impl serde::de::Visitor<'_> for GeneratedVisitor {
6729                    type Value = GeneratedField;
6730                    fn expecting(
6731                        &self,
6732                        formatter: &mut std::fmt::Formatter<'_>,
6733                    ) -> std::fmt::Result {
6734                        write!(formatter, "expected one of: {:?}", & FIELDS)
6735                    }
6736                    #[allow(unused_variables)]
6737                    fn visit_str<E>(
6738                        self,
6739                        value: &str,
6740                    ) -> std::result::Result<GeneratedField, E>
6741                    where
6742                        E: serde::de::Error,
6743                    {
6744                        match value {
6745                            "name" => Ok(GeneratedField::Name),
6746                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6747                            _ => Ok(GeneratedField::__SkipField__),
6748                        }
6749                    }
6750                }
6751                deserializer.deserialize_identifier(GeneratedVisitor)
6752            }
6753        }
6754        struct GeneratedVisitor;
6755        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6756            type Value = DeleteNatGatewayRequest;
6757            fn expecting(
6758                &self,
6759                formatter: &mut std::fmt::Formatter<'_>,
6760            ) -> std::fmt::Result {
6761                formatter
6762                    .write_str(
6763                        "struct origincloud.network.v1beta1.DeleteNatGatewayRequest",
6764                    )
6765            }
6766            fn visit_map<V>(
6767                self,
6768                mut map_: V,
6769            ) -> std::result::Result<DeleteNatGatewayRequest, V::Error>
6770            where
6771                V: serde::de::MapAccess<'de>,
6772            {
6773                let mut name__ = None;
6774                let mut request_id__ = None;
6775                while let Some(k) = map_.next_key()? {
6776                    match k {
6777                        GeneratedField::Name => {
6778                            if name__.is_some() {
6779                                return Err(serde::de::Error::duplicate_field("name"));
6780                            }
6781                            name__ = Some(map_.next_value()?);
6782                        }
6783                        GeneratedField::RequestId => {
6784                            if request_id__.is_some() {
6785                                return Err(serde::de::Error::duplicate_field("requestId"));
6786                            }
6787                            request_id__ = Some(map_.next_value()?);
6788                        }
6789                        GeneratedField::__SkipField__ => {
6790                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6791                        }
6792                    }
6793                }
6794                Ok(DeleteNatGatewayRequest {
6795                    name: name__.unwrap_or_default(),
6796                    request_id: request_id__.unwrap_or_default(),
6797                })
6798            }
6799        }
6800        deserializer
6801            .deserialize_struct(
6802                "origincloud.network.v1beta1.DeleteNatGatewayRequest",
6803                FIELDS,
6804                GeneratedVisitor,
6805            )
6806    }
6807}
6808impl serde::Serialize for DeleteNetworkInterfaceRequest {
6809    #[allow(deprecated)]
6810    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6811    where
6812        S: serde::Serializer,
6813    {
6814        use serde::ser::SerializeStruct;
6815        let mut len = 0;
6816        if !self.name.is_empty() {
6817            len += 1;
6818        }
6819        if !self.request_id.is_empty() {
6820            len += 1;
6821        }
6822        let mut struct_ser = serializer
6823            .serialize_struct(
6824                "origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6825                len,
6826            )?;
6827        if !self.name.is_empty() {
6828            struct_ser.serialize_field("name", &self.name)?;
6829        }
6830        if !self.request_id.is_empty() {
6831            struct_ser.serialize_field("requestId", &self.request_id)?;
6832        }
6833        struct_ser.end()
6834    }
6835}
6836impl<'de> serde::Deserialize<'de> for DeleteNetworkInterfaceRequest {
6837    #[allow(deprecated)]
6838    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6839    where
6840        D: serde::Deserializer<'de>,
6841    {
6842        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6843        #[allow(clippy::enum_variant_names)]
6844        enum GeneratedField {
6845            Name,
6846            RequestId,
6847            __SkipField__,
6848        }
6849        impl<'de> serde::Deserialize<'de> for GeneratedField {
6850            fn deserialize<D>(
6851                deserializer: D,
6852            ) -> std::result::Result<GeneratedField, D::Error>
6853            where
6854                D: serde::Deserializer<'de>,
6855            {
6856                struct GeneratedVisitor;
6857                impl serde::de::Visitor<'_> for GeneratedVisitor {
6858                    type Value = GeneratedField;
6859                    fn expecting(
6860                        &self,
6861                        formatter: &mut std::fmt::Formatter<'_>,
6862                    ) -> std::fmt::Result {
6863                        write!(formatter, "expected one of: {:?}", & FIELDS)
6864                    }
6865                    #[allow(unused_variables)]
6866                    fn visit_str<E>(
6867                        self,
6868                        value: &str,
6869                    ) -> std::result::Result<GeneratedField, E>
6870                    where
6871                        E: serde::de::Error,
6872                    {
6873                        match value {
6874                            "name" => Ok(GeneratedField::Name),
6875                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6876                            _ => Ok(GeneratedField::__SkipField__),
6877                        }
6878                    }
6879                }
6880                deserializer.deserialize_identifier(GeneratedVisitor)
6881            }
6882        }
6883        struct GeneratedVisitor;
6884        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6885            type Value = DeleteNetworkInterfaceRequest;
6886            fn expecting(
6887                &self,
6888                formatter: &mut std::fmt::Formatter<'_>,
6889            ) -> std::fmt::Result {
6890                formatter
6891                    .write_str(
6892                        "struct origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6893                    )
6894            }
6895            fn visit_map<V>(
6896                self,
6897                mut map_: V,
6898            ) -> std::result::Result<DeleteNetworkInterfaceRequest, V::Error>
6899            where
6900                V: serde::de::MapAccess<'de>,
6901            {
6902                let mut name__ = None;
6903                let mut request_id__ = None;
6904                while let Some(k) = map_.next_key()? {
6905                    match k {
6906                        GeneratedField::Name => {
6907                            if name__.is_some() {
6908                                return Err(serde::de::Error::duplicate_field("name"));
6909                            }
6910                            name__ = Some(map_.next_value()?);
6911                        }
6912                        GeneratedField::RequestId => {
6913                            if request_id__.is_some() {
6914                                return Err(serde::de::Error::duplicate_field("requestId"));
6915                            }
6916                            request_id__ = Some(map_.next_value()?);
6917                        }
6918                        GeneratedField::__SkipField__ => {
6919                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6920                        }
6921                    }
6922                }
6923                Ok(DeleteNetworkInterfaceRequest {
6924                    name: name__.unwrap_or_default(),
6925                    request_id: request_id__.unwrap_or_default(),
6926                })
6927            }
6928        }
6929        deserializer
6930            .deserialize_struct(
6931                "origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6932                FIELDS,
6933                GeneratedVisitor,
6934            )
6935    }
6936}
6937impl serde::Serialize for DeleteRouteRequest {
6938    #[allow(deprecated)]
6939    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6940    where
6941        S: serde::Serializer,
6942    {
6943        use serde::ser::SerializeStruct;
6944        let mut len = 0;
6945        if !self.name.is_empty() {
6946            len += 1;
6947        }
6948        if !self.request_id.is_empty() {
6949            len += 1;
6950        }
6951        let mut struct_ser = serializer
6952            .serialize_struct("origincloud.network.v1beta1.DeleteRouteRequest", len)?;
6953        if !self.name.is_empty() {
6954            struct_ser.serialize_field("name", &self.name)?;
6955        }
6956        if !self.request_id.is_empty() {
6957            struct_ser.serialize_field("requestId", &self.request_id)?;
6958        }
6959        struct_ser.end()
6960    }
6961}
6962impl<'de> serde::Deserialize<'de> for DeleteRouteRequest {
6963    #[allow(deprecated)]
6964    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6965    where
6966        D: serde::Deserializer<'de>,
6967    {
6968        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6969        #[allow(clippy::enum_variant_names)]
6970        enum GeneratedField {
6971            Name,
6972            RequestId,
6973            __SkipField__,
6974        }
6975        impl<'de> serde::Deserialize<'de> for GeneratedField {
6976            fn deserialize<D>(
6977                deserializer: D,
6978            ) -> std::result::Result<GeneratedField, D::Error>
6979            where
6980                D: serde::Deserializer<'de>,
6981            {
6982                struct GeneratedVisitor;
6983                impl serde::de::Visitor<'_> for GeneratedVisitor {
6984                    type Value = GeneratedField;
6985                    fn expecting(
6986                        &self,
6987                        formatter: &mut std::fmt::Formatter<'_>,
6988                    ) -> std::fmt::Result {
6989                        write!(formatter, "expected one of: {:?}", & FIELDS)
6990                    }
6991                    #[allow(unused_variables)]
6992                    fn visit_str<E>(
6993                        self,
6994                        value: &str,
6995                    ) -> std::result::Result<GeneratedField, E>
6996                    where
6997                        E: serde::de::Error,
6998                    {
6999                        match value {
7000                            "name" => Ok(GeneratedField::Name),
7001                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7002                            _ => Ok(GeneratedField::__SkipField__),
7003                        }
7004                    }
7005                }
7006                deserializer.deserialize_identifier(GeneratedVisitor)
7007            }
7008        }
7009        struct GeneratedVisitor;
7010        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7011            type Value = DeleteRouteRequest;
7012            fn expecting(
7013                &self,
7014                formatter: &mut std::fmt::Formatter<'_>,
7015            ) -> std::fmt::Result {
7016                formatter
7017                    .write_str("struct origincloud.network.v1beta1.DeleteRouteRequest")
7018            }
7019            fn visit_map<V>(
7020                self,
7021                mut map_: V,
7022            ) -> std::result::Result<DeleteRouteRequest, V::Error>
7023            where
7024                V: serde::de::MapAccess<'de>,
7025            {
7026                let mut name__ = None;
7027                let mut request_id__ = None;
7028                while let Some(k) = map_.next_key()? {
7029                    match k {
7030                        GeneratedField::Name => {
7031                            if name__.is_some() {
7032                                return Err(serde::de::Error::duplicate_field("name"));
7033                            }
7034                            name__ = Some(map_.next_value()?);
7035                        }
7036                        GeneratedField::RequestId => {
7037                            if request_id__.is_some() {
7038                                return Err(serde::de::Error::duplicate_field("requestId"));
7039                            }
7040                            request_id__ = Some(map_.next_value()?);
7041                        }
7042                        GeneratedField::__SkipField__ => {
7043                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7044                        }
7045                    }
7046                }
7047                Ok(DeleteRouteRequest {
7048                    name: name__.unwrap_or_default(),
7049                    request_id: request_id__.unwrap_or_default(),
7050                })
7051            }
7052        }
7053        deserializer
7054            .deserialize_struct(
7055                "origincloud.network.v1beta1.DeleteRouteRequest",
7056                FIELDS,
7057                GeneratedVisitor,
7058            )
7059    }
7060}
7061impl serde::Serialize for DeleteRouteTableAssociationRequest {
7062    #[allow(deprecated)]
7063    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7064    where
7065        S: serde::Serializer,
7066    {
7067        use serde::ser::SerializeStruct;
7068        let mut len = 0;
7069        if !self.name.is_empty() {
7070            len += 1;
7071        }
7072        if !self.request_id.is_empty() {
7073            len += 1;
7074        }
7075        let mut struct_ser = serializer
7076            .serialize_struct(
7077                "origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7078                len,
7079            )?;
7080        if !self.name.is_empty() {
7081            struct_ser.serialize_field("name", &self.name)?;
7082        }
7083        if !self.request_id.is_empty() {
7084            struct_ser.serialize_field("requestId", &self.request_id)?;
7085        }
7086        struct_ser.end()
7087    }
7088}
7089impl<'de> serde::Deserialize<'de> for DeleteRouteTableAssociationRequest {
7090    #[allow(deprecated)]
7091    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7092    where
7093        D: serde::Deserializer<'de>,
7094    {
7095        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7096        #[allow(clippy::enum_variant_names)]
7097        enum GeneratedField {
7098            Name,
7099            RequestId,
7100            __SkipField__,
7101        }
7102        impl<'de> serde::Deserialize<'de> for GeneratedField {
7103            fn deserialize<D>(
7104                deserializer: D,
7105            ) -> std::result::Result<GeneratedField, D::Error>
7106            where
7107                D: serde::Deserializer<'de>,
7108            {
7109                struct GeneratedVisitor;
7110                impl serde::de::Visitor<'_> for GeneratedVisitor {
7111                    type Value = GeneratedField;
7112                    fn expecting(
7113                        &self,
7114                        formatter: &mut std::fmt::Formatter<'_>,
7115                    ) -> std::fmt::Result {
7116                        write!(formatter, "expected one of: {:?}", & FIELDS)
7117                    }
7118                    #[allow(unused_variables)]
7119                    fn visit_str<E>(
7120                        self,
7121                        value: &str,
7122                    ) -> std::result::Result<GeneratedField, E>
7123                    where
7124                        E: serde::de::Error,
7125                    {
7126                        match value {
7127                            "name" => Ok(GeneratedField::Name),
7128                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7129                            _ => Ok(GeneratedField::__SkipField__),
7130                        }
7131                    }
7132                }
7133                deserializer.deserialize_identifier(GeneratedVisitor)
7134            }
7135        }
7136        struct GeneratedVisitor;
7137        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7138            type Value = DeleteRouteTableAssociationRequest;
7139            fn expecting(
7140                &self,
7141                formatter: &mut std::fmt::Formatter<'_>,
7142            ) -> std::fmt::Result {
7143                formatter
7144                    .write_str(
7145                        "struct origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7146                    )
7147            }
7148            fn visit_map<V>(
7149                self,
7150                mut map_: V,
7151            ) -> std::result::Result<DeleteRouteTableAssociationRequest, V::Error>
7152            where
7153                V: serde::de::MapAccess<'de>,
7154            {
7155                let mut name__ = None;
7156                let mut request_id__ = None;
7157                while let Some(k) = map_.next_key()? {
7158                    match k {
7159                        GeneratedField::Name => {
7160                            if name__.is_some() {
7161                                return Err(serde::de::Error::duplicate_field("name"));
7162                            }
7163                            name__ = Some(map_.next_value()?);
7164                        }
7165                        GeneratedField::RequestId => {
7166                            if request_id__.is_some() {
7167                                return Err(serde::de::Error::duplicate_field("requestId"));
7168                            }
7169                            request_id__ = Some(map_.next_value()?);
7170                        }
7171                        GeneratedField::__SkipField__ => {
7172                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7173                        }
7174                    }
7175                }
7176                Ok(DeleteRouteTableAssociationRequest {
7177                    name: name__.unwrap_or_default(),
7178                    request_id: request_id__.unwrap_or_default(),
7179                })
7180            }
7181        }
7182        deserializer
7183            .deserialize_struct(
7184                "origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7185                FIELDS,
7186                GeneratedVisitor,
7187            )
7188    }
7189}
7190impl serde::Serialize for DeleteRouteTableRequest {
7191    #[allow(deprecated)]
7192    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7193    where
7194        S: serde::Serializer,
7195    {
7196        use serde::ser::SerializeStruct;
7197        let mut len = 0;
7198        if !self.name.is_empty() {
7199            len += 1;
7200        }
7201        if !self.request_id.is_empty() {
7202            len += 1;
7203        }
7204        let mut struct_ser = serializer
7205            .serialize_struct(
7206                "origincloud.network.v1beta1.DeleteRouteTableRequest",
7207                len,
7208            )?;
7209        if !self.name.is_empty() {
7210            struct_ser.serialize_field("name", &self.name)?;
7211        }
7212        if !self.request_id.is_empty() {
7213            struct_ser.serialize_field("requestId", &self.request_id)?;
7214        }
7215        struct_ser.end()
7216    }
7217}
7218impl<'de> serde::Deserialize<'de> for DeleteRouteTableRequest {
7219    #[allow(deprecated)]
7220    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7221    where
7222        D: serde::Deserializer<'de>,
7223    {
7224        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7225        #[allow(clippy::enum_variant_names)]
7226        enum GeneratedField {
7227            Name,
7228            RequestId,
7229            __SkipField__,
7230        }
7231        impl<'de> serde::Deserialize<'de> for GeneratedField {
7232            fn deserialize<D>(
7233                deserializer: D,
7234            ) -> std::result::Result<GeneratedField, D::Error>
7235            where
7236                D: serde::Deserializer<'de>,
7237            {
7238                struct GeneratedVisitor;
7239                impl serde::de::Visitor<'_> for GeneratedVisitor {
7240                    type Value = GeneratedField;
7241                    fn expecting(
7242                        &self,
7243                        formatter: &mut std::fmt::Formatter<'_>,
7244                    ) -> std::fmt::Result {
7245                        write!(formatter, "expected one of: {:?}", & FIELDS)
7246                    }
7247                    #[allow(unused_variables)]
7248                    fn visit_str<E>(
7249                        self,
7250                        value: &str,
7251                    ) -> std::result::Result<GeneratedField, E>
7252                    where
7253                        E: serde::de::Error,
7254                    {
7255                        match value {
7256                            "name" => Ok(GeneratedField::Name),
7257                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7258                            _ => Ok(GeneratedField::__SkipField__),
7259                        }
7260                    }
7261                }
7262                deserializer.deserialize_identifier(GeneratedVisitor)
7263            }
7264        }
7265        struct GeneratedVisitor;
7266        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7267            type Value = DeleteRouteTableRequest;
7268            fn expecting(
7269                &self,
7270                formatter: &mut std::fmt::Formatter<'_>,
7271            ) -> std::fmt::Result {
7272                formatter
7273                    .write_str(
7274                        "struct origincloud.network.v1beta1.DeleteRouteTableRequest",
7275                    )
7276            }
7277            fn visit_map<V>(
7278                self,
7279                mut map_: V,
7280            ) -> std::result::Result<DeleteRouteTableRequest, V::Error>
7281            where
7282                V: serde::de::MapAccess<'de>,
7283            {
7284                let mut name__ = None;
7285                let mut request_id__ = None;
7286                while let Some(k) = map_.next_key()? {
7287                    match k {
7288                        GeneratedField::Name => {
7289                            if name__.is_some() {
7290                                return Err(serde::de::Error::duplicate_field("name"));
7291                            }
7292                            name__ = Some(map_.next_value()?);
7293                        }
7294                        GeneratedField::RequestId => {
7295                            if request_id__.is_some() {
7296                                return Err(serde::de::Error::duplicate_field("requestId"));
7297                            }
7298                            request_id__ = Some(map_.next_value()?);
7299                        }
7300                        GeneratedField::__SkipField__ => {
7301                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7302                        }
7303                    }
7304                }
7305                Ok(DeleteRouteTableRequest {
7306                    name: name__.unwrap_or_default(),
7307                    request_id: request_id__.unwrap_or_default(),
7308                })
7309            }
7310        }
7311        deserializer
7312            .deserialize_struct(
7313                "origincloud.network.v1beta1.DeleteRouteTableRequest",
7314                FIELDS,
7315                GeneratedVisitor,
7316            )
7317    }
7318}
7319impl serde::Serialize for DeleteSecurityGroupAssociationRequest {
7320    #[allow(deprecated)]
7321    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7322    where
7323        S: serde::Serializer,
7324    {
7325        use serde::ser::SerializeStruct;
7326        let mut len = 0;
7327        if !self.name.is_empty() {
7328            len += 1;
7329        }
7330        if !self.request_id.is_empty() {
7331            len += 1;
7332        }
7333        let mut struct_ser = serializer
7334            .serialize_struct(
7335                "origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7336                len,
7337            )?;
7338        if !self.name.is_empty() {
7339            struct_ser.serialize_field("name", &self.name)?;
7340        }
7341        if !self.request_id.is_empty() {
7342            struct_ser.serialize_field("requestId", &self.request_id)?;
7343        }
7344        struct_ser.end()
7345    }
7346}
7347impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupAssociationRequest {
7348    #[allow(deprecated)]
7349    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7350    where
7351        D: serde::Deserializer<'de>,
7352    {
7353        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7354        #[allow(clippy::enum_variant_names)]
7355        enum GeneratedField {
7356            Name,
7357            RequestId,
7358            __SkipField__,
7359        }
7360        impl<'de> serde::Deserialize<'de> for GeneratedField {
7361            fn deserialize<D>(
7362                deserializer: D,
7363            ) -> std::result::Result<GeneratedField, D::Error>
7364            where
7365                D: serde::Deserializer<'de>,
7366            {
7367                struct GeneratedVisitor;
7368                impl serde::de::Visitor<'_> for GeneratedVisitor {
7369                    type Value = GeneratedField;
7370                    fn expecting(
7371                        &self,
7372                        formatter: &mut std::fmt::Formatter<'_>,
7373                    ) -> std::fmt::Result {
7374                        write!(formatter, "expected one of: {:?}", & FIELDS)
7375                    }
7376                    #[allow(unused_variables)]
7377                    fn visit_str<E>(
7378                        self,
7379                        value: &str,
7380                    ) -> std::result::Result<GeneratedField, E>
7381                    where
7382                        E: serde::de::Error,
7383                    {
7384                        match value {
7385                            "name" => Ok(GeneratedField::Name),
7386                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7387                            _ => Ok(GeneratedField::__SkipField__),
7388                        }
7389                    }
7390                }
7391                deserializer.deserialize_identifier(GeneratedVisitor)
7392            }
7393        }
7394        struct GeneratedVisitor;
7395        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7396            type Value = DeleteSecurityGroupAssociationRequest;
7397            fn expecting(
7398                &self,
7399                formatter: &mut std::fmt::Formatter<'_>,
7400            ) -> std::fmt::Result {
7401                formatter
7402                    .write_str(
7403                        "struct origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7404                    )
7405            }
7406            fn visit_map<V>(
7407                self,
7408                mut map_: V,
7409            ) -> std::result::Result<DeleteSecurityGroupAssociationRequest, V::Error>
7410            where
7411                V: serde::de::MapAccess<'de>,
7412            {
7413                let mut name__ = None;
7414                let mut request_id__ = None;
7415                while let Some(k) = map_.next_key()? {
7416                    match k {
7417                        GeneratedField::Name => {
7418                            if name__.is_some() {
7419                                return Err(serde::de::Error::duplicate_field("name"));
7420                            }
7421                            name__ = Some(map_.next_value()?);
7422                        }
7423                        GeneratedField::RequestId => {
7424                            if request_id__.is_some() {
7425                                return Err(serde::de::Error::duplicate_field("requestId"));
7426                            }
7427                            request_id__ = Some(map_.next_value()?);
7428                        }
7429                        GeneratedField::__SkipField__ => {
7430                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7431                        }
7432                    }
7433                }
7434                Ok(DeleteSecurityGroupAssociationRequest {
7435                    name: name__.unwrap_or_default(),
7436                    request_id: request_id__.unwrap_or_default(),
7437                })
7438            }
7439        }
7440        deserializer
7441            .deserialize_struct(
7442                "origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7443                FIELDS,
7444                GeneratedVisitor,
7445            )
7446    }
7447}
7448impl serde::Serialize for DeleteSecurityGroupRequest {
7449    #[allow(deprecated)]
7450    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7451    where
7452        S: serde::Serializer,
7453    {
7454        use serde::ser::SerializeStruct;
7455        let mut len = 0;
7456        if !self.name.is_empty() {
7457            len += 1;
7458        }
7459        if !self.request_id.is_empty() {
7460            len += 1;
7461        }
7462        let mut struct_ser = serializer
7463            .serialize_struct(
7464                "origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7465                len,
7466            )?;
7467        if !self.name.is_empty() {
7468            struct_ser.serialize_field("name", &self.name)?;
7469        }
7470        if !self.request_id.is_empty() {
7471            struct_ser.serialize_field("requestId", &self.request_id)?;
7472        }
7473        struct_ser.end()
7474    }
7475}
7476impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupRequest {
7477    #[allow(deprecated)]
7478    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7479    where
7480        D: serde::Deserializer<'de>,
7481    {
7482        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7483        #[allow(clippy::enum_variant_names)]
7484        enum GeneratedField {
7485            Name,
7486            RequestId,
7487            __SkipField__,
7488        }
7489        impl<'de> serde::Deserialize<'de> for GeneratedField {
7490            fn deserialize<D>(
7491                deserializer: D,
7492            ) -> std::result::Result<GeneratedField, D::Error>
7493            where
7494                D: serde::Deserializer<'de>,
7495            {
7496                struct GeneratedVisitor;
7497                impl serde::de::Visitor<'_> for GeneratedVisitor {
7498                    type Value = GeneratedField;
7499                    fn expecting(
7500                        &self,
7501                        formatter: &mut std::fmt::Formatter<'_>,
7502                    ) -> std::fmt::Result {
7503                        write!(formatter, "expected one of: {:?}", & FIELDS)
7504                    }
7505                    #[allow(unused_variables)]
7506                    fn visit_str<E>(
7507                        self,
7508                        value: &str,
7509                    ) -> std::result::Result<GeneratedField, E>
7510                    where
7511                        E: serde::de::Error,
7512                    {
7513                        match value {
7514                            "name" => Ok(GeneratedField::Name),
7515                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7516                            _ => Ok(GeneratedField::__SkipField__),
7517                        }
7518                    }
7519                }
7520                deserializer.deserialize_identifier(GeneratedVisitor)
7521            }
7522        }
7523        struct GeneratedVisitor;
7524        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7525            type Value = DeleteSecurityGroupRequest;
7526            fn expecting(
7527                &self,
7528                formatter: &mut std::fmt::Formatter<'_>,
7529            ) -> std::fmt::Result {
7530                formatter
7531                    .write_str(
7532                        "struct origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7533                    )
7534            }
7535            fn visit_map<V>(
7536                self,
7537                mut map_: V,
7538            ) -> std::result::Result<DeleteSecurityGroupRequest, V::Error>
7539            where
7540                V: serde::de::MapAccess<'de>,
7541            {
7542                let mut name__ = None;
7543                let mut request_id__ = None;
7544                while let Some(k) = map_.next_key()? {
7545                    match k {
7546                        GeneratedField::Name => {
7547                            if name__.is_some() {
7548                                return Err(serde::de::Error::duplicate_field("name"));
7549                            }
7550                            name__ = Some(map_.next_value()?);
7551                        }
7552                        GeneratedField::RequestId => {
7553                            if request_id__.is_some() {
7554                                return Err(serde::de::Error::duplicate_field("requestId"));
7555                            }
7556                            request_id__ = Some(map_.next_value()?);
7557                        }
7558                        GeneratedField::__SkipField__ => {
7559                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7560                        }
7561                    }
7562                }
7563                Ok(DeleteSecurityGroupRequest {
7564                    name: name__.unwrap_or_default(),
7565                    request_id: request_id__.unwrap_or_default(),
7566                })
7567            }
7568        }
7569        deserializer
7570            .deserialize_struct(
7571                "origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7572                FIELDS,
7573                GeneratedVisitor,
7574            )
7575    }
7576}
7577impl serde::Serialize for DeleteSecurityGroupRuleRequest {
7578    #[allow(deprecated)]
7579    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7580    where
7581        S: serde::Serializer,
7582    {
7583        use serde::ser::SerializeStruct;
7584        let mut len = 0;
7585        if !self.name.is_empty() {
7586            len += 1;
7587        }
7588        if !self.request_id.is_empty() {
7589            len += 1;
7590        }
7591        let mut struct_ser = serializer
7592            .serialize_struct(
7593                "origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7594                len,
7595            )?;
7596        if !self.name.is_empty() {
7597            struct_ser.serialize_field("name", &self.name)?;
7598        }
7599        if !self.request_id.is_empty() {
7600            struct_ser.serialize_field("requestId", &self.request_id)?;
7601        }
7602        struct_ser.end()
7603    }
7604}
7605impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupRuleRequest {
7606    #[allow(deprecated)]
7607    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7608    where
7609        D: serde::Deserializer<'de>,
7610    {
7611        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7612        #[allow(clippy::enum_variant_names)]
7613        enum GeneratedField {
7614            Name,
7615            RequestId,
7616            __SkipField__,
7617        }
7618        impl<'de> serde::Deserialize<'de> for GeneratedField {
7619            fn deserialize<D>(
7620                deserializer: D,
7621            ) -> std::result::Result<GeneratedField, D::Error>
7622            where
7623                D: serde::Deserializer<'de>,
7624            {
7625                struct GeneratedVisitor;
7626                impl serde::de::Visitor<'_> for GeneratedVisitor {
7627                    type Value = GeneratedField;
7628                    fn expecting(
7629                        &self,
7630                        formatter: &mut std::fmt::Formatter<'_>,
7631                    ) -> std::fmt::Result {
7632                        write!(formatter, "expected one of: {:?}", & FIELDS)
7633                    }
7634                    #[allow(unused_variables)]
7635                    fn visit_str<E>(
7636                        self,
7637                        value: &str,
7638                    ) -> std::result::Result<GeneratedField, E>
7639                    where
7640                        E: serde::de::Error,
7641                    {
7642                        match value {
7643                            "name" => Ok(GeneratedField::Name),
7644                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7645                            _ => Ok(GeneratedField::__SkipField__),
7646                        }
7647                    }
7648                }
7649                deserializer.deserialize_identifier(GeneratedVisitor)
7650            }
7651        }
7652        struct GeneratedVisitor;
7653        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7654            type Value = DeleteSecurityGroupRuleRequest;
7655            fn expecting(
7656                &self,
7657                formatter: &mut std::fmt::Formatter<'_>,
7658            ) -> std::fmt::Result {
7659                formatter
7660                    .write_str(
7661                        "struct origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7662                    )
7663            }
7664            fn visit_map<V>(
7665                self,
7666                mut map_: V,
7667            ) -> std::result::Result<DeleteSecurityGroupRuleRequest, V::Error>
7668            where
7669                V: serde::de::MapAccess<'de>,
7670            {
7671                let mut name__ = None;
7672                let mut request_id__ = None;
7673                while let Some(k) = map_.next_key()? {
7674                    match k {
7675                        GeneratedField::Name => {
7676                            if name__.is_some() {
7677                                return Err(serde::de::Error::duplicate_field("name"));
7678                            }
7679                            name__ = Some(map_.next_value()?);
7680                        }
7681                        GeneratedField::RequestId => {
7682                            if request_id__.is_some() {
7683                                return Err(serde::de::Error::duplicate_field("requestId"));
7684                            }
7685                            request_id__ = Some(map_.next_value()?);
7686                        }
7687                        GeneratedField::__SkipField__ => {
7688                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7689                        }
7690                    }
7691                }
7692                Ok(DeleteSecurityGroupRuleRequest {
7693                    name: name__.unwrap_or_default(),
7694                    request_id: request_id__.unwrap_or_default(),
7695                })
7696            }
7697        }
7698        deserializer
7699            .deserialize_struct(
7700                "origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7701                FIELDS,
7702                GeneratedVisitor,
7703            )
7704    }
7705}
7706impl serde::Serialize for DeleteSubnetRequest {
7707    #[allow(deprecated)]
7708    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7709    where
7710        S: serde::Serializer,
7711    {
7712        use serde::ser::SerializeStruct;
7713        let mut len = 0;
7714        if !self.name.is_empty() {
7715            len += 1;
7716        }
7717        if !self.request_id.is_empty() {
7718            len += 1;
7719        }
7720        let mut struct_ser = serializer
7721            .serialize_struct("origincloud.network.v1beta1.DeleteSubnetRequest", len)?;
7722        if !self.name.is_empty() {
7723            struct_ser.serialize_field("name", &self.name)?;
7724        }
7725        if !self.request_id.is_empty() {
7726            struct_ser.serialize_field("requestId", &self.request_id)?;
7727        }
7728        struct_ser.end()
7729    }
7730}
7731impl<'de> serde::Deserialize<'de> for DeleteSubnetRequest {
7732    #[allow(deprecated)]
7733    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7734    where
7735        D: serde::Deserializer<'de>,
7736    {
7737        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7738        #[allow(clippy::enum_variant_names)]
7739        enum GeneratedField {
7740            Name,
7741            RequestId,
7742            __SkipField__,
7743        }
7744        impl<'de> serde::Deserialize<'de> for GeneratedField {
7745            fn deserialize<D>(
7746                deserializer: D,
7747            ) -> std::result::Result<GeneratedField, D::Error>
7748            where
7749                D: serde::Deserializer<'de>,
7750            {
7751                struct GeneratedVisitor;
7752                impl serde::de::Visitor<'_> for GeneratedVisitor {
7753                    type Value = GeneratedField;
7754                    fn expecting(
7755                        &self,
7756                        formatter: &mut std::fmt::Formatter<'_>,
7757                    ) -> std::fmt::Result {
7758                        write!(formatter, "expected one of: {:?}", & FIELDS)
7759                    }
7760                    #[allow(unused_variables)]
7761                    fn visit_str<E>(
7762                        self,
7763                        value: &str,
7764                    ) -> std::result::Result<GeneratedField, E>
7765                    where
7766                        E: serde::de::Error,
7767                    {
7768                        match value {
7769                            "name" => Ok(GeneratedField::Name),
7770                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7771                            _ => Ok(GeneratedField::__SkipField__),
7772                        }
7773                    }
7774                }
7775                deserializer.deserialize_identifier(GeneratedVisitor)
7776            }
7777        }
7778        struct GeneratedVisitor;
7779        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7780            type Value = DeleteSubnetRequest;
7781            fn expecting(
7782                &self,
7783                formatter: &mut std::fmt::Formatter<'_>,
7784            ) -> std::fmt::Result {
7785                formatter
7786                    .write_str("struct origincloud.network.v1beta1.DeleteSubnetRequest")
7787            }
7788            fn visit_map<V>(
7789                self,
7790                mut map_: V,
7791            ) -> std::result::Result<DeleteSubnetRequest, V::Error>
7792            where
7793                V: serde::de::MapAccess<'de>,
7794            {
7795                let mut name__ = None;
7796                let mut request_id__ = None;
7797                while let Some(k) = map_.next_key()? {
7798                    match k {
7799                        GeneratedField::Name => {
7800                            if name__.is_some() {
7801                                return Err(serde::de::Error::duplicate_field("name"));
7802                            }
7803                            name__ = Some(map_.next_value()?);
7804                        }
7805                        GeneratedField::RequestId => {
7806                            if request_id__.is_some() {
7807                                return Err(serde::de::Error::duplicate_field("requestId"));
7808                            }
7809                            request_id__ = Some(map_.next_value()?);
7810                        }
7811                        GeneratedField::__SkipField__ => {
7812                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7813                        }
7814                    }
7815                }
7816                Ok(DeleteSubnetRequest {
7817                    name: name__.unwrap_or_default(),
7818                    request_id: request_id__.unwrap_or_default(),
7819                })
7820            }
7821        }
7822        deserializer
7823            .deserialize_struct(
7824                "origincloud.network.v1beta1.DeleteSubnetRequest",
7825                FIELDS,
7826                GeneratedVisitor,
7827            )
7828    }
7829}
7830impl serde::Serialize for DeleteVpcRequest {
7831    #[allow(deprecated)]
7832    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7833    where
7834        S: serde::Serializer,
7835    {
7836        use serde::ser::SerializeStruct;
7837        let mut len = 0;
7838        if !self.name.is_empty() {
7839            len += 1;
7840        }
7841        if !self.request_id.is_empty() {
7842            len += 1;
7843        }
7844        let mut struct_ser = serializer
7845            .serialize_struct("origincloud.network.v1beta1.DeleteVpcRequest", len)?;
7846        if !self.name.is_empty() {
7847            struct_ser.serialize_field("name", &self.name)?;
7848        }
7849        if !self.request_id.is_empty() {
7850            struct_ser.serialize_field("requestId", &self.request_id)?;
7851        }
7852        struct_ser.end()
7853    }
7854}
7855impl<'de> serde::Deserialize<'de> for DeleteVpcRequest {
7856    #[allow(deprecated)]
7857    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7858    where
7859        D: serde::Deserializer<'de>,
7860    {
7861        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7862        #[allow(clippy::enum_variant_names)]
7863        enum GeneratedField {
7864            Name,
7865            RequestId,
7866            __SkipField__,
7867        }
7868        impl<'de> serde::Deserialize<'de> for GeneratedField {
7869            fn deserialize<D>(
7870                deserializer: D,
7871            ) -> std::result::Result<GeneratedField, D::Error>
7872            where
7873                D: serde::Deserializer<'de>,
7874            {
7875                struct GeneratedVisitor;
7876                impl serde::de::Visitor<'_> for GeneratedVisitor {
7877                    type Value = GeneratedField;
7878                    fn expecting(
7879                        &self,
7880                        formatter: &mut std::fmt::Formatter<'_>,
7881                    ) -> std::fmt::Result {
7882                        write!(formatter, "expected one of: {:?}", & FIELDS)
7883                    }
7884                    #[allow(unused_variables)]
7885                    fn visit_str<E>(
7886                        self,
7887                        value: &str,
7888                    ) -> std::result::Result<GeneratedField, E>
7889                    where
7890                        E: serde::de::Error,
7891                    {
7892                        match value {
7893                            "name" => Ok(GeneratedField::Name),
7894                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7895                            _ => Ok(GeneratedField::__SkipField__),
7896                        }
7897                    }
7898                }
7899                deserializer.deserialize_identifier(GeneratedVisitor)
7900            }
7901        }
7902        struct GeneratedVisitor;
7903        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7904            type Value = DeleteVpcRequest;
7905            fn expecting(
7906                &self,
7907                formatter: &mut std::fmt::Formatter<'_>,
7908            ) -> std::fmt::Result {
7909                formatter
7910                    .write_str("struct origincloud.network.v1beta1.DeleteVpcRequest")
7911            }
7912            fn visit_map<V>(
7913                self,
7914                mut map_: V,
7915            ) -> std::result::Result<DeleteVpcRequest, V::Error>
7916            where
7917                V: serde::de::MapAccess<'de>,
7918            {
7919                let mut name__ = None;
7920                let mut request_id__ = None;
7921                while let Some(k) = map_.next_key()? {
7922                    match k {
7923                        GeneratedField::Name => {
7924                            if name__.is_some() {
7925                                return Err(serde::de::Error::duplicate_field("name"));
7926                            }
7927                            name__ = Some(map_.next_value()?);
7928                        }
7929                        GeneratedField::RequestId => {
7930                            if request_id__.is_some() {
7931                                return Err(serde::de::Error::duplicate_field("requestId"));
7932                            }
7933                            request_id__ = Some(map_.next_value()?);
7934                        }
7935                        GeneratedField::__SkipField__ => {
7936                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7937                        }
7938                    }
7939                }
7940                Ok(DeleteVpcRequest {
7941                    name: name__.unwrap_or_default(),
7942                    request_id: request_id__.unwrap_or_default(),
7943                })
7944            }
7945        }
7946        deserializer
7947            .deserialize_struct(
7948                "origincloud.network.v1beta1.DeleteVpcRequest",
7949                FIELDS,
7950                GeneratedVisitor,
7951            )
7952    }
7953}
7954impl serde::Serialize for DnsPolicy {
7955    #[allow(deprecated)]
7956    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7957    where
7958        S: serde::Serializer,
7959    {
7960        use serde::ser::SerializeStruct;
7961        let mut len = 0;
7962        if !self.name.is_empty() {
7963            len += 1;
7964        }
7965        if !self.urn.is_empty() {
7966            len += 1;
7967        }
7968        if self.project_default {
7969            len += 1;
7970        }
7971        if self.relay_enabled {
7972            len += 1;
7973        }
7974        if !self.upstream_servers.is_empty() {
7975            len += 1;
7976        }
7977        if self.create_time.is_some() {
7978            len += 1;
7979        }
7980        if !self.creator.is_empty() {
7981            len += 1;
7982        }
7983        if !self.tags.is_empty() {
7984            len += 1;
7985        }
7986        let mut struct_ser = serializer
7987            .serialize_struct("origincloud.network.v1beta1.DnsPolicy", len)?;
7988        if !self.name.is_empty() {
7989            struct_ser.serialize_field("name", &self.name)?;
7990        }
7991        if !self.urn.is_empty() {
7992            struct_ser.serialize_field("urn", &self.urn)?;
7993        }
7994        if self.project_default {
7995            struct_ser.serialize_field("projectDefault", &self.project_default)?;
7996        }
7997        if self.relay_enabled {
7998            struct_ser.serialize_field("relayEnabled", &self.relay_enabled)?;
7999        }
8000        if !self.upstream_servers.is_empty() {
8001            struct_ser.serialize_field("upstreamServers", &self.upstream_servers)?;
8002        }
8003        if let Some(v) = self.create_time.as_ref() {
8004            struct_ser.serialize_field("createTime", v)?;
8005        }
8006        if !self.creator.is_empty() {
8007            struct_ser.serialize_field("creator", &self.creator)?;
8008        }
8009        if !self.tags.is_empty() {
8010            struct_ser.serialize_field("tags", &self.tags)?;
8011        }
8012        struct_ser.end()
8013    }
8014}
8015impl<'de> serde::Deserialize<'de> for DnsPolicy {
8016    #[allow(deprecated)]
8017    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8018    where
8019        D: serde::Deserializer<'de>,
8020    {
8021        const FIELDS: &[&str] = &[
8022            "name",
8023            "urn",
8024            "project_default",
8025            "projectDefault",
8026            "relay_enabled",
8027            "relayEnabled",
8028            "upstream_servers",
8029            "upstreamServers",
8030            "create_time",
8031            "createTime",
8032            "creator",
8033            "tags",
8034        ];
8035        #[allow(clippy::enum_variant_names)]
8036        enum GeneratedField {
8037            Name,
8038            Urn,
8039            ProjectDefault,
8040            RelayEnabled,
8041            UpstreamServers,
8042            CreateTime,
8043            Creator,
8044            Tags,
8045            __SkipField__,
8046        }
8047        impl<'de> serde::Deserialize<'de> for GeneratedField {
8048            fn deserialize<D>(
8049                deserializer: D,
8050            ) -> std::result::Result<GeneratedField, D::Error>
8051            where
8052                D: serde::Deserializer<'de>,
8053            {
8054                struct GeneratedVisitor;
8055                impl serde::de::Visitor<'_> for GeneratedVisitor {
8056                    type Value = GeneratedField;
8057                    fn expecting(
8058                        &self,
8059                        formatter: &mut std::fmt::Formatter<'_>,
8060                    ) -> std::fmt::Result {
8061                        write!(formatter, "expected one of: {:?}", & FIELDS)
8062                    }
8063                    #[allow(unused_variables)]
8064                    fn visit_str<E>(
8065                        self,
8066                        value: &str,
8067                    ) -> std::result::Result<GeneratedField, E>
8068                    where
8069                        E: serde::de::Error,
8070                    {
8071                        match value {
8072                            "name" => Ok(GeneratedField::Name),
8073                            "urn" => Ok(GeneratedField::Urn),
8074                            "projectDefault" | "project_default" => {
8075                                Ok(GeneratedField::ProjectDefault)
8076                            }
8077                            "relayEnabled" | "relay_enabled" => {
8078                                Ok(GeneratedField::RelayEnabled)
8079                            }
8080                            "upstreamServers" | "upstream_servers" => {
8081                                Ok(GeneratedField::UpstreamServers)
8082                            }
8083                            "createTime" | "create_time" => {
8084                                Ok(GeneratedField::CreateTime)
8085                            }
8086                            "creator" => Ok(GeneratedField::Creator),
8087                            "tags" => Ok(GeneratedField::Tags),
8088                            _ => Ok(GeneratedField::__SkipField__),
8089                        }
8090                    }
8091                }
8092                deserializer.deserialize_identifier(GeneratedVisitor)
8093            }
8094        }
8095        struct GeneratedVisitor;
8096        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8097            type Value = DnsPolicy;
8098            fn expecting(
8099                &self,
8100                formatter: &mut std::fmt::Formatter<'_>,
8101            ) -> std::fmt::Result {
8102                formatter.write_str("struct origincloud.network.v1beta1.DnsPolicy")
8103            }
8104            fn visit_map<V>(
8105                self,
8106                mut map_: V,
8107            ) -> std::result::Result<DnsPolicy, V::Error>
8108            where
8109                V: serde::de::MapAccess<'de>,
8110            {
8111                let mut name__ = None;
8112                let mut urn__ = None;
8113                let mut project_default__ = None;
8114                let mut relay_enabled__ = None;
8115                let mut upstream_servers__ = None;
8116                let mut create_time__ = None;
8117                let mut creator__ = None;
8118                let mut tags__ = None;
8119                while let Some(k) = map_.next_key()? {
8120                    match k {
8121                        GeneratedField::Name => {
8122                            if name__.is_some() {
8123                                return Err(serde::de::Error::duplicate_field("name"));
8124                            }
8125                            name__ = Some(map_.next_value()?);
8126                        }
8127                        GeneratedField::Urn => {
8128                            if urn__.is_some() {
8129                                return Err(serde::de::Error::duplicate_field("urn"));
8130                            }
8131                            urn__ = Some(map_.next_value()?);
8132                        }
8133                        GeneratedField::ProjectDefault => {
8134                            if project_default__.is_some() {
8135                                return Err(
8136                                    serde::de::Error::duplicate_field("projectDefault"),
8137                                );
8138                            }
8139                            project_default__ = Some(map_.next_value()?);
8140                        }
8141                        GeneratedField::RelayEnabled => {
8142                            if relay_enabled__.is_some() {
8143                                return Err(
8144                                    serde::de::Error::duplicate_field("relayEnabled"),
8145                                );
8146                            }
8147                            relay_enabled__ = Some(map_.next_value()?);
8148                        }
8149                        GeneratedField::UpstreamServers => {
8150                            if upstream_servers__.is_some() {
8151                                return Err(
8152                                    serde::de::Error::duplicate_field("upstreamServers"),
8153                                );
8154                            }
8155                            upstream_servers__ = Some(map_.next_value()?);
8156                        }
8157                        GeneratedField::CreateTime => {
8158                            if create_time__.is_some() {
8159                                return Err(serde::de::Error::duplicate_field("createTime"));
8160                            }
8161                            create_time__ = map_.next_value()?;
8162                        }
8163                        GeneratedField::Creator => {
8164                            if creator__.is_some() {
8165                                return Err(serde::de::Error::duplicate_field("creator"));
8166                            }
8167                            creator__ = Some(map_.next_value()?);
8168                        }
8169                        GeneratedField::Tags => {
8170                            if tags__.is_some() {
8171                                return Err(serde::de::Error::duplicate_field("tags"));
8172                            }
8173                            tags__ = Some(
8174                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
8175                            );
8176                        }
8177                        GeneratedField::__SkipField__ => {
8178                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8179                        }
8180                    }
8181                }
8182                Ok(DnsPolicy {
8183                    name: name__.unwrap_or_default(),
8184                    urn: urn__.unwrap_or_default(),
8185                    project_default: project_default__.unwrap_or_default(),
8186                    relay_enabled: relay_enabled__.unwrap_or_default(),
8187                    upstream_servers: upstream_servers__.unwrap_or_default(),
8188                    create_time: create_time__,
8189                    creator: creator__.unwrap_or_default(),
8190                    tags: tags__.unwrap_or_default(),
8191                })
8192            }
8193        }
8194        deserializer
8195            .deserialize_struct(
8196                "origincloud.network.v1beta1.DnsPolicy",
8197                FIELDS,
8198                GeneratedVisitor,
8199            )
8200    }
8201}
8202impl serde::Serialize for DnsPolicyAssociation {
8203    #[allow(deprecated)]
8204    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8205    where
8206        S: serde::Serializer,
8207    {
8208        use serde::ser::SerializeStruct;
8209        let mut len = 0;
8210        if !self.name.is_empty() {
8211            len += 1;
8212        }
8213        if !self.dns_policy.is_empty() {
8214            len += 1;
8215        }
8216        let mut struct_ser = serializer
8217            .serialize_struct("origincloud.network.v1beta1.DnsPolicyAssociation", len)?;
8218        if !self.name.is_empty() {
8219            struct_ser.serialize_field("name", &self.name)?;
8220        }
8221        if !self.dns_policy.is_empty() {
8222            struct_ser.serialize_field("dnsPolicy", &self.dns_policy)?;
8223        }
8224        struct_ser.end()
8225    }
8226}
8227impl<'de> serde::Deserialize<'de> for DnsPolicyAssociation {
8228    #[allow(deprecated)]
8229    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8230    where
8231        D: serde::Deserializer<'de>,
8232    {
8233        const FIELDS: &[&str] = &["name", "dns_policy", "dnsPolicy"];
8234        #[allow(clippy::enum_variant_names)]
8235        enum GeneratedField {
8236            Name,
8237            DnsPolicy,
8238            __SkipField__,
8239        }
8240        impl<'de> serde::Deserialize<'de> for GeneratedField {
8241            fn deserialize<D>(
8242                deserializer: D,
8243            ) -> std::result::Result<GeneratedField, D::Error>
8244            where
8245                D: serde::Deserializer<'de>,
8246            {
8247                struct GeneratedVisitor;
8248                impl serde::de::Visitor<'_> for GeneratedVisitor {
8249                    type Value = GeneratedField;
8250                    fn expecting(
8251                        &self,
8252                        formatter: &mut std::fmt::Formatter<'_>,
8253                    ) -> std::fmt::Result {
8254                        write!(formatter, "expected one of: {:?}", & FIELDS)
8255                    }
8256                    #[allow(unused_variables)]
8257                    fn visit_str<E>(
8258                        self,
8259                        value: &str,
8260                    ) -> std::result::Result<GeneratedField, E>
8261                    where
8262                        E: serde::de::Error,
8263                    {
8264                        match value {
8265                            "name" => Ok(GeneratedField::Name),
8266                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
8267                            _ => Ok(GeneratedField::__SkipField__),
8268                        }
8269                    }
8270                }
8271                deserializer.deserialize_identifier(GeneratedVisitor)
8272            }
8273        }
8274        struct GeneratedVisitor;
8275        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8276            type Value = DnsPolicyAssociation;
8277            fn expecting(
8278                &self,
8279                formatter: &mut std::fmt::Formatter<'_>,
8280            ) -> std::fmt::Result {
8281                formatter
8282                    .write_str("struct origincloud.network.v1beta1.DnsPolicyAssociation")
8283            }
8284            fn visit_map<V>(
8285                self,
8286                mut map_: V,
8287            ) -> std::result::Result<DnsPolicyAssociation, V::Error>
8288            where
8289                V: serde::de::MapAccess<'de>,
8290            {
8291                let mut name__ = None;
8292                let mut dns_policy__ = None;
8293                while let Some(k) = map_.next_key()? {
8294                    match k {
8295                        GeneratedField::Name => {
8296                            if name__.is_some() {
8297                                return Err(serde::de::Error::duplicate_field("name"));
8298                            }
8299                            name__ = Some(map_.next_value()?);
8300                        }
8301                        GeneratedField::DnsPolicy => {
8302                            if dns_policy__.is_some() {
8303                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
8304                            }
8305                            dns_policy__ = Some(map_.next_value()?);
8306                        }
8307                        GeneratedField::__SkipField__ => {
8308                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8309                        }
8310                    }
8311                }
8312                Ok(DnsPolicyAssociation {
8313                    name: name__.unwrap_or_default(),
8314                    dns_policy: dns_policy__.unwrap_or_default(),
8315                })
8316            }
8317        }
8318        deserializer
8319            .deserialize_struct(
8320                "origincloud.network.v1beta1.DnsPolicyAssociation",
8321                FIELDS,
8322                GeneratedVisitor,
8323            )
8324    }
8325}
8326impl serde::Serialize for FloatingIp {
8327    #[allow(deprecated)]
8328    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8329    where
8330        S: serde::Serializer,
8331    {
8332        use serde::ser::SerializeStruct;
8333        let mut len = 0;
8334        if !self.name.is_empty() {
8335            len += 1;
8336        }
8337        if !self.urn.is_empty() {
8338            len += 1;
8339        }
8340        if !self.address.is_empty() {
8341            len += 1;
8342        }
8343        if !self.network_interface.is_empty() {
8344            len += 1;
8345        }
8346        if !self.private_address.is_empty() {
8347            len += 1;
8348        }
8349        if self.auto_assigned {
8350            len += 1;
8351        }
8352        if self.create_time.is_some() {
8353            len += 1;
8354        }
8355        if !self.creator.is_empty() {
8356            len += 1;
8357        }
8358        if !self.tags.is_empty() {
8359            len += 1;
8360        }
8361        let mut struct_ser = serializer
8362            .serialize_struct("origincloud.network.v1beta1.FloatingIp", len)?;
8363        if !self.name.is_empty() {
8364            struct_ser.serialize_field("name", &self.name)?;
8365        }
8366        if !self.urn.is_empty() {
8367            struct_ser.serialize_field("urn", &self.urn)?;
8368        }
8369        if !self.address.is_empty() {
8370            struct_ser.serialize_field("address", &self.address)?;
8371        }
8372        if !self.network_interface.is_empty() {
8373            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
8374        }
8375        if !self.private_address.is_empty() {
8376            struct_ser.serialize_field("privateAddress", &self.private_address)?;
8377        }
8378        if self.auto_assigned {
8379            struct_ser.serialize_field("autoAssigned", &self.auto_assigned)?;
8380        }
8381        if let Some(v) = self.create_time.as_ref() {
8382            struct_ser.serialize_field("createTime", v)?;
8383        }
8384        if !self.creator.is_empty() {
8385            struct_ser.serialize_field("creator", &self.creator)?;
8386        }
8387        if !self.tags.is_empty() {
8388            struct_ser.serialize_field("tags", &self.tags)?;
8389        }
8390        struct_ser.end()
8391    }
8392}
8393impl<'de> serde::Deserialize<'de> for FloatingIp {
8394    #[allow(deprecated)]
8395    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8396    where
8397        D: serde::Deserializer<'de>,
8398    {
8399        const FIELDS: &[&str] = &[
8400            "name",
8401            "urn",
8402            "address",
8403            "network_interface",
8404            "networkInterface",
8405            "private_address",
8406            "privateAddress",
8407            "auto_assigned",
8408            "autoAssigned",
8409            "create_time",
8410            "createTime",
8411            "creator",
8412            "tags",
8413        ];
8414        #[allow(clippy::enum_variant_names)]
8415        enum GeneratedField {
8416            Name,
8417            Urn,
8418            Address,
8419            NetworkInterface,
8420            PrivateAddress,
8421            AutoAssigned,
8422            CreateTime,
8423            Creator,
8424            Tags,
8425            __SkipField__,
8426        }
8427        impl<'de> serde::Deserialize<'de> for GeneratedField {
8428            fn deserialize<D>(
8429                deserializer: D,
8430            ) -> std::result::Result<GeneratedField, D::Error>
8431            where
8432                D: serde::Deserializer<'de>,
8433            {
8434                struct GeneratedVisitor;
8435                impl serde::de::Visitor<'_> for GeneratedVisitor {
8436                    type Value = GeneratedField;
8437                    fn expecting(
8438                        &self,
8439                        formatter: &mut std::fmt::Formatter<'_>,
8440                    ) -> std::fmt::Result {
8441                        write!(formatter, "expected one of: {:?}", & FIELDS)
8442                    }
8443                    #[allow(unused_variables)]
8444                    fn visit_str<E>(
8445                        self,
8446                        value: &str,
8447                    ) -> std::result::Result<GeneratedField, E>
8448                    where
8449                        E: serde::de::Error,
8450                    {
8451                        match value {
8452                            "name" => Ok(GeneratedField::Name),
8453                            "urn" => Ok(GeneratedField::Urn),
8454                            "address" => Ok(GeneratedField::Address),
8455                            "networkInterface" | "network_interface" => {
8456                                Ok(GeneratedField::NetworkInterface)
8457                            }
8458                            "privateAddress" | "private_address" => {
8459                                Ok(GeneratedField::PrivateAddress)
8460                            }
8461                            "autoAssigned" | "auto_assigned" => {
8462                                Ok(GeneratedField::AutoAssigned)
8463                            }
8464                            "createTime" | "create_time" => {
8465                                Ok(GeneratedField::CreateTime)
8466                            }
8467                            "creator" => Ok(GeneratedField::Creator),
8468                            "tags" => Ok(GeneratedField::Tags),
8469                            _ => Ok(GeneratedField::__SkipField__),
8470                        }
8471                    }
8472                }
8473                deserializer.deserialize_identifier(GeneratedVisitor)
8474            }
8475        }
8476        struct GeneratedVisitor;
8477        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8478            type Value = FloatingIp;
8479            fn expecting(
8480                &self,
8481                formatter: &mut std::fmt::Formatter<'_>,
8482            ) -> std::fmt::Result {
8483                formatter.write_str("struct origincloud.network.v1beta1.FloatingIp")
8484            }
8485            fn visit_map<V>(
8486                self,
8487                mut map_: V,
8488            ) -> std::result::Result<FloatingIp, V::Error>
8489            where
8490                V: serde::de::MapAccess<'de>,
8491            {
8492                let mut name__ = None;
8493                let mut urn__ = None;
8494                let mut address__ = None;
8495                let mut network_interface__ = None;
8496                let mut private_address__ = None;
8497                let mut auto_assigned__ = None;
8498                let mut create_time__ = None;
8499                let mut creator__ = None;
8500                let mut tags__ = None;
8501                while let Some(k) = map_.next_key()? {
8502                    match k {
8503                        GeneratedField::Name => {
8504                            if name__.is_some() {
8505                                return Err(serde::de::Error::duplicate_field("name"));
8506                            }
8507                            name__ = Some(map_.next_value()?);
8508                        }
8509                        GeneratedField::Urn => {
8510                            if urn__.is_some() {
8511                                return Err(serde::de::Error::duplicate_field("urn"));
8512                            }
8513                            urn__ = Some(map_.next_value()?);
8514                        }
8515                        GeneratedField::Address => {
8516                            if address__.is_some() {
8517                                return Err(serde::de::Error::duplicate_field("address"));
8518                            }
8519                            address__ = Some(map_.next_value()?);
8520                        }
8521                        GeneratedField::NetworkInterface => {
8522                            if network_interface__.is_some() {
8523                                return Err(
8524                                    serde::de::Error::duplicate_field("networkInterface"),
8525                                );
8526                            }
8527                            network_interface__ = Some(map_.next_value()?);
8528                        }
8529                        GeneratedField::PrivateAddress => {
8530                            if private_address__.is_some() {
8531                                return Err(
8532                                    serde::de::Error::duplicate_field("privateAddress"),
8533                                );
8534                            }
8535                            private_address__ = Some(map_.next_value()?);
8536                        }
8537                        GeneratedField::AutoAssigned => {
8538                            if auto_assigned__.is_some() {
8539                                return Err(
8540                                    serde::de::Error::duplicate_field("autoAssigned"),
8541                                );
8542                            }
8543                            auto_assigned__ = Some(map_.next_value()?);
8544                        }
8545                        GeneratedField::CreateTime => {
8546                            if create_time__.is_some() {
8547                                return Err(serde::de::Error::duplicate_field("createTime"));
8548                            }
8549                            create_time__ = map_.next_value()?;
8550                        }
8551                        GeneratedField::Creator => {
8552                            if creator__.is_some() {
8553                                return Err(serde::de::Error::duplicate_field("creator"));
8554                            }
8555                            creator__ = Some(map_.next_value()?);
8556                        }
8557                        GeneratedField::Tags => {
8558                            if tags__.is_some() {
8559                                return Err(serde::de::Error::duplicate_field("tags"));
8560                            }
8561                            tags__ = Some(
8562                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
8563                            );
8564                        }
8565                        GeneratedField::__SkipField__ => {
8566                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8567                        }
8568                    }
8569                }
8570                Ok(FloatingIp {
8571                    name: name__.unwrap_or_default(),
8572                    urn: urn__.unwrap_or_default(),
8573                    address: address__.unwrap_or_default(),
8574                    network_interface: network_interface__.unwrap_or_default(),
8575                    private_address: private_address__.unwrap_or_default(),
8576                    auto_assigned: auto_assigned__.unwrap_or_default(),
8577                    create_time: create_time__,
8578                    creator: creator__.unwrap_or_default(),
8579                    tags: tags__.unwrap_or_default(),
8580                })
8581            }
8582        }
8583        deserializer
8584            .deserialize_struct(
8585                "origincloud.network.v1beta1.FloatingIp",
8586                FIELDS,
8587                GeneratedVisitor,
8588            )
8589    }
8590}
8591impl serde::Serialize for FloatingIpAssociation {
8592    #[allow(deprecated)]
8593    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8594    where
8595        S: serde::Serializer,
8596    {
8597        use serde::ser::SerializeStruct;
8598        let mut len = 0;
8599        if !self.name.is_empty() {
8600            len += 1;
8601        }
8602        if !self.network_interface.is_empty() {
8603            len += 1;
8604        }
8605        if !self.private_address.is_empty() {
8606            len += 1;
8607        }
8608        let mut struct_ser = serializer
8609            .serialize_struct("origincloud.network.v1beta1.FloatingIpAssociation", len)?;
8610        if !self.name.is_empty() {
8611            struct_ser.serialize_field("name", &self.name)?;
8612        }
8613        if !self.network_interface.is_empty() {
8614            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
8615        }
8616        if !self.private_address.is_empty() {
8617            struct_ser.serialize_field("privateAddress", &self.private_address)?;
8618        }
8619        struct_ser.end()
8620    }
8621}
8622impl<'de> serde::Deserialize<'de> for FloatingIpAssociation {
8623    #[allow(deprecated)]
8624    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8625    where
8626        D: serde::Deserializer<'de>,
8627    {
8628        const FIELDS: &[&str] = &[
8629            "name",
8630            "network_interface",
8631            "networkInterface",
8632            "private_address",
8633            "privateAddress",
8634        ];
8635        #[allow(clippy::enum_variant_names)]
8636        enum GeneratedField {
8637            Name,
8638            NetworkInterface,
8639            PrivateAddress,
8640            __SkipField__,
8641        }
8642        impl<'de> serde::Deserialize<'de> for GeneratedField {
8643            fn deserialize<D>(
8644                deserializer: D,
8645            ) -> std::result::Result<GeneratedField, D::Error>
8646            where
8647                D: serde::Deserializer<'de>,
8648            {
8649                struct GeneratedVisitor;
8650                impl serde::de::Visitor<'_> for GeneratedVisitor {
8651                    type Value = GeneratedField;
8652                    fn expecting(
8653                        &self,
8654                        formatter: &mut std::fmt::Formatter<'_>,
8655                    ) -> std::fmt::Result {
8656                        write!(formatter, "expected one of: {:?}", & FIELDS)
8657                    }
8658                    #[allow(unused_variables)]
8659                    fn visit_str<E>(
8660                        self,
8661                        value: &str,
8662                    ) -> std::result::Result<GeneratedField, E>
8663                    where
8664                        E: serde::de::Error,
8665                    {
8666                        match value {
8667                            "name" => Ok(GeneratedField::Name),
8668                            "networkInterface" | "network_interface" => {
8669                                Ok(GeneratedField::NetworkInterface)
8670                            }
8671                            "privateAddress" | "private_address" => {
8672                                Ok(GeneratedField::PrivateAddress)
8673                            }
8674                            _ => Ok(GeneratedField::__SkipField__),
8675                        }
8676                    }
8677                }
8678                deserializer.deserialize_identifier(GeneratedVisitor)
8679            }
8680        }
8681        struct GeneratedVisitor;
8682        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8683            type Value = FloatingIpAssociation;
8684            fn expecting(
8685                &self,
8686                formatter: &mut std::fmt::Formatter<'_>,
8687            ) -> std::fmt::Result {
8688                formatter
8689                    .write_str(
8690                        "struct origincloud.network.v1beta1.FloatingIpAssociation",
8691                    )
8692            }
8693            fn visit_map<V>(
8694                self,
8695                mut map_: V,
8696            ) -> std::result::Result<FloatingIpAssociation, V::Error>
8697            where
8698                V: serde::de::MapAccess<'de>,
8699            {
8700                let mut name__ = None;
8701                let mut network_interface__ = None;
8702                let mut private_address__ = None;
8703                while let Some(k) = map_.next_key()? {
8704                    match k {
8705                        GeneratedField::Name => {
8706                            if name__.is_some() {
8707                                return Err(serde::de::Error::duplicate_field("name"));
8708                            }
8709                            name__ = Some(map_.next_value()?);
8710                        }
8711                        GeneratedField::NetworkInterface => {
8712                            if network_interface__.is_some() {
8713                                return Err(
8714                                    serde::de::Error::duplicate_field("networkInterface"),
8715                                );
8716                            }
8717                            network_interface__ = Some(map_.next_value()?);
8718                        }
8719                        GeneratedField::PrivateAddress => {
8720                            if private_address__.is_some() {
8721                                return Err(
8722                                    serde::de::Error::duplicate_field("privateAddress"),
8723                                );
8724                            }
8725                            private_address__ = Some(map_.next_value()?);
8726                        }
8727                        GeneratedField::__SkipField__ => {
8728                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8729                        }
8730                    }
8731                }
8732                Ok(FloatingIpAssociation {
8733                    name: name__.unwrap_or_default(),
8734                    network_interface: network_interface__.unwrap_or_default(),
8735                    private_address: private_address__.unwrap_or_default(),
8736                })
8737            }
8738        }
8739        deserializer
8740            .deserialize_struct(
8741                "origincloud.network.v1beta1.FloatingIpAssociation",
8742                FIELDS,
8743                GeneratedVisitor,
8744            )
8745    }
8746}
8747impl serde::Serialize for GetAclAssociationRequest {
8748    #[allow(deprecated)]
8749    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8750    where
8751        S: serde::Serializer,
8752    {
8753        use serde::ser::SerializeStruct;
8754        let mut len = 0;
8755        if !self.name.is_empty() {
8756            len += 1;
8757        }
8758        let mut struct_ser = serializer
8759            .serialize_struct(
8760                "origincloud.network.v1beta1.GetAclAssociationRequest",
8761                len,
8762            )?;
8763        if !self.name.is_empty() {
8764            struct_ser.serialize_field("name", &self.name)?;
8765        }
8766        struct_ser.end()
8767    }
8768}
8769impl<'de> serde::Deserialize<'de> for GetAclAssociationRequest {
8770    #[allow(deprecated)]
8771    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8772    where
8773        D: serde::Deserializer<'de>,
8774    {
8775        const FIELDS: &[&str] = &["name"];
8776        #[allow(clippy::enum_variant_names)]
8777        enum GeneratedField {
8778            Name,
8779            __SkipField__,
8780        }
8781        impl<'de> serde::Deserialize<'de> for GeneratedField {
8782            fn deserialize<D>(
8783                deserializer: D,
8784            ) -> std::result::Result<GeneratedField, D::Error>
8785            where
8786                D: serde::Deserializer<'de>,
8787            {
8788                struct GeneratedVisitor;
8789                impl serde::de::Visitor<'_> for GeneratedVisitor {
8790                    type Value = GeneratedField;
8791                    fn expecting(
8792                        &self,
8793                        formatter: &mut std::fmt::Formatter<'_>,
8794                    ) -> std::fmt::Result {
8795                        write!(formatter, "expected one of: {:?}", & FIELDS)
8796                    }
8797                    #[allow(unused_variables)]
8798                    fn visit_str<E>(
8799                        self,
8800                        value: &str,
8801                    ) -> std::result::Result<GeneratedField, E>
8802                    where
8803                        E: serde::de::Error,
8804                    {
8805                        match value {
8806                            "name" => Ok(GeneratedField::Name),
8807                            _ => Ok(GeneratedField::__SkipField__),
8808                        }
8809                    }
8810                }
8811                deserializer.deserialize_identifier(GeneratedVisitor)
8812            }
8813        }
8814        struct GeneratedVisitor;
8815        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8816            type Value = GetAclAssociationRequest;
8817            fn expecting(
8818                &self,
8819                formatter: &mut std::fmt::Formatter<'_>,
8820            ) -> std::fmt::Result {
8821                formatter
8822                    .write_str(
8823                        "struct origincloud.network.v1beta1.GetAclAssociationRequest",
8824                    )
8825            }
8826            fn visit_map<V>(
8827                self,
8828                mut map_: V,
8829            ) -> std::result::Result<GetAclAssociationRequest, V::Error>
8830            where
8831                V: serde::de::MapAccess<'de>,
8832            {
8833                let mut name__ = None;
8834                while let Some(k) = map_.next_key()? {
8835                    match k {
8836                        GeneratedField::Name => {
8837                            if name__.is_some() {
8838                                return Err(serde::de::Error::duplicate_field("name"));
8839                            }
8840                            name__ = Some(map_.next_value()?);
8841                        }
8842                        GeneratedField::__SkipField__ => {
8843                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8844                        }
8845                    }
8846                }
8847                Ok(GetAclAssociationRequest {
8848                    name: name__.unwrap_or_default(),
8849                })
8850            }
8851        }
8852        deserializer
8853            .deserialize_struct(
8854                "origincloud.network.v1beta1.GetAclAssociationRequest",
8855                FIELDS,
8856                GeneratedVisitor,
8857            )
8858    }
8859}
8860impl serde::Serialize for GetAclRequest {
8861    #[allow(deprecated)]
8862    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8863    where
8864        S: serde::Serializer,
8865    {
8866        use serde::ser::SerializeStruct;
8867        let mut len = 0;
8868        if !self.name.is_empty() {
8869            len += 1;
8870        }
8871        let mut struct_ser = serializer
8872            .serialize_struct("origincloud.network.v1beta1.GetAclRequest", len)?;
8873        if !self.name.is_empty() {
8874            struct_ser.serialize_field("name", &self.name)?;
8875        }
8876        struct_ser.end()
8877    }
8878}
8879impl<'de> serde::Deserialize<'de> for GetAclRequest {
8880    #[allow(deprecated)]
8881    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8882    where
8883        D: serde::Deserializer<'de>,
8884    {
8885        const FIELDS: &[&str] = &["name"];
8886        #[allow(clippy::enum_variant_names)]
8887        enum GeneratedField {
8888            Name,
8889            __SkipField__,
8890        }
8891        impl<'de> serde::Deserialize<'de> for GeneratedField {
8892            fn deserialize<D>(
8893                deserializer: D,
8894            ) -> std::result::Result<GeneratedField, D::Error>
8895            where
8896                D: serde::Deserializer<'de>,
8897            {
8898                struct GeneratedVisitor;
8899                impl serde::de::Visitor<'_> for GeneratedVisitor {
8900                    type Value = GeneratedField;
8901                    fn expecting(
8902                        &self,
8903                        formatter: &mut std::fmt::Formatter<'_>,
8904                    ) -> std::fmt::Result {
8905                        write!(formatter, "expected one of: {:?}", & FIELDS)
8906                    }
8907                    #[allow(unused_variables)]
8908                    fn visit_str<E>(
8909                        self,
8910                        value: &str,
8911                    ) -> std::result::Result<GeneratedField, E>
8912                    where
8913                        E: serde::de::Error,
8914                    {
8915                        match value {
8916                            "name" => Ok(GeneratedField::Name),
8917                            _ => Ok(GeneratedField::__SkipField__),
8918                        }
8919                    }
8920                }
8921                deserializer.deserialize_identifier(GeneratedVisitor)
8922            }
8923        }
8924        struct GeneratedVisitor;
8925        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8926            type Value = GetAclRequest;
8927            fn expecting(
8928                &self,
8929                formatter: &mut std::fmt::Formatter<'_>,
8930            ) -> std::fmt::Result {
8931                formatter.write_str("struct origincloud.network.v1beta1.GetAclRequest")
8932            }
8933            fn visit_map<V>(
8934                self,
8935                mut map_: V,
8936            ) -> std::result::Result<GetAclRequest, V::Error>
8937            where
8938                V: serde::de::MapAccess<'de>,
8939            {
8940                let mut name__ = None;
8941                while let Some(k) = map_.next_key()? {
8942                    match k {
8943                        GeneratedField::Name => {
8944                            if name__.is_some() {
8945                                return Err(serde::de::Error::duplicate_field("name"));
8946                            }
8947                            name__ = Some(map_.next_value()?);
8948                        }
8949                        GeneratedField::__SkipField__ => {
8950                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8951                        }
8952                    }
8953                }
8954                Ok(GetAclRequest {
8955                    name: name__.unwrap_or_default(),
8956                })
8957            }
8958        }
8959        deserializer
8960            .deserialize_struct(
8961                "origincloud.network.v1beta1.GetAclRequest",
8962                FIELDS,
8963                GeneratedVisitor,
8964            )
8965    }
8966}
8967impl serde::Serialize for GetAclRuleRequest {
8968    #[allow(deprecated)]
8969    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8970    where
8971        S: serde::Serializer,
8972    {
8973        use serde::ser::SerializeStruct;
8974        let mut len = 0;
8975        if !self.name.is_empty() {
8976            len += 1;
8977        }
8978        let mut struct_ser = serializer
8979            .serialize_struct("origincloud.network.v1beta1.GetAclRuleRequest", len)?;
8980        if !self.name.is_empty() {
8981            struct_ser.serialize_field("name", &self.name)?;
8982        }
8983        struct_ser.end()
8984    }
8985}
8986impl<'de> serde::Deserialize<'de> for GetAclRuleRequest {
8987    #[allow(deprecated)]
8988    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8989    where
8990        D: serde::Deserializer<'de>,
8991    {
8992        const FIELDS: &[&str] = &["name"];
8993        #[allow(clippy::enum_variant_names)]
8994        enum GeneratedField {
8995            Name,
8996            __SkipField__,
8997        }
8998        impl<'de> serde::Deserialize<'de> for GeneratedField {
8999            fn deserialize<D>(
9000                deserializer: D,
9001            ) -> std::result::Result<GeneratedField, D::Error>
9002            where
9003                D: serde::Deserializer<'de>,
9004            {
9005                struct GeneratedVisitor;
9006                impl serde::de::Visitor<'_> for GeneratedVisitor {
9007                    type Value = GeneratedField;
9008                    fn expecting(
9009                        &self,
9010                        formatter: &mut std::fmt::Formatter<'_>,
9011                    ) -> std::fmt::Result {
9012                        write!(formatter, "expected one of: {:?}", & FIELDS)
9013                    }
9014                    #[allow(unused_variables)]
9015                    fn visit_str<E>(
9016                        self,
9017                        value: &str,
9018                    ) -> std::result::Result<GeneratedField, E>
9019                    where
9020                        E: serde::de::Error,
9021                    {
9022                        match value {
9023                            "name" => Ok(GeneratedField::Name),
9024                            _ => Ok(GeneratedField::__SkipField__),
9025                        }
9026                    }
9027                }
9028                deserializer.deserialize_identifier(GeneratedVisitor)
9029            }
9030        }
9031        struct GeneratedVisitor;
9032        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9033            type Value = GetAclRuleRequest;
9034            fn expecting(
9035                &self,
9036                formatter: &mut std::fmt::Formatter<'_>,
9037            ) -> std::fmt::Result {
9038                formatter
9039                    .write_str("struct origincloud.network.v1beta1.GetAclRuleRequest")
9040            }
9041            fn visit_map<V>(
9042                self,
9043                mut map_: V,
9044            ) -> std::result::Result<GetAclRuleRequest, V::Error>
9045            where
9046                V: serde::de::MapAccess<'de>,
9047            {
9048                let mut name__ = None;
9049                while let Some(k) = map_.next_key()? {
9050                    match k {
9051                        GeneratedField::Name => {
9052                            if name__.is_some() {
9053                                return Err(serde::de::Error::duplicate_field("name"));
9054                            }
9055                            name__ = Some(map_.next_value()?);
9056                        }
9057                        GeneratedField::__SkipField__ => {
9058                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9059                        }
9060                    }
9061                }
9062                Ok(GetAclRuleRequest {
9063                    name: name__.unwrap_or_default(),
9064                })
9065            }
9066        }
9067        deserializer
9068            .deserialize_struct(
9069                "origincloud.network.v1beta1.GetAclRuleRequest",
9070                FIELDS,
9071                GeneratedVisitor,
9072            )
9073    }
9074}
9075impl serde::Serialize for GetDnsPolicyAssociationRequest {
9076    #[allow(deprecated)]
9077    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9078    where
9079        S: serde::Serializer,
9080    {
9081        use serde::ser::SerializeStruct;
9082        let mut len = 0;
9083        if !self.name.is_empty() {
9084            len += 1;
9085        }
9086        let mut struct_ser = serializer
9087            .serialize_struct(
9088                "origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9089                len,
9090            )?;
9091        if !self.name.is_empty() {
9092            struct_ser.serialize_field("name", &self.name)?;
9093        }
9094        struct_ser.end()
9095    }
9096}
9097impl<'de> serde::Deserialize<'de> for GetDnsPolicyAssociationRequest {
9098    #[allow(deprecated)]
9099    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9100    where
9101        D: serde::Deserializer<'de>,
9102    {
9103        const FIELDS: &[&str] = &["name"];
9104        #[allow(clippy::enum_variant_names)]
9105        enum GeneratedField {
9106            Name,
9107            __SkipField__,
9108        }
9109        impl<'de> serde::Deserialize<'de> for GeneratedField {
9110            fn deserialize<D>(
9111                deserializer: D,
9112            ) -> std::result::Result<GeneratedField, D::Error>
9113            where
9114                D: serde::Deserializer<'de>,
9115            {
9116                struct GeneratedVisitor;
9117                impl serde::de::Visitor<'_> for GeneratedVisitor {
9118                    type Value = GeneratedField;
9119                    fn expecting(
9120                        &self,
9121                        formatter: &mut std::fmt::Formatter<'_>,
9122                    ) -> std::fmt::Result {
9123                        write!(formatter, "expected one of: {:?}", & FIELDS)
9124                    }
9125                    #[allow(unused_variables)]
9126                    fn visit_str<E>(
9127                        self,
9128                        value: &str,
9129                    ) -> std::result::Result<GeneratedField, E>
9130                    where
9131                        E: serde::de::Error,
9132                    {
9133                        match value {
9134                            "name" => Ok(GeneratedField::Name),
9135                            _ => Ok(GeneratedField::__SkipField__),
9136                        }
9137                    }
9138                }
9139                deserializer.deserialize_identifier(GeneratedVisitor)
9140            }
9141        }
9142        struct GeneratedVisitor;
9143        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9144            type Value = GetDnsPolicyAssociationRequest;
9145            fn expecting(
9146                &self,
9147                formatter: &mut std::fmt::Formatter<'_>,
9148            ) -> std::fmt::Result {
9149                formatter
9150                    .write_str(
9151                        "struct origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9152                    )
9153            }
9154            fn visit_map<V>(
9155                self,
9156                mut map_: V,
9157            ) -> std::result::Result<GetDnsPolicyAssociationRequest, V::Error>
9158            where
9159                V: serde::de::MapAccess<'de>,
9160            {
9161                let mut name__ = None;
9162                while let Some(k) = map_.next_key()? {
9163                    match k {
9164                        GeneratedField::Name => {
9165                            if name__.is_some() {
9166                                return Err(serde::de::Error::duplicate_field("name"));
9167                            }
9168                            name__ = Some(map_.next_value()?);
9169                        }
9170                        GeneratedField::__SkipField__ => {
9171                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9172                        }
9173                    }
9174                }
9175                Ok(GetDnsPolicyAssociationRequest {
9176                    name: name__.unwrap_or_default(),
9177                })
9178            }
9179        }
9180        deserializer
9181            .deserialize_struct(
9182                "origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9183                FIELDS,
9184                GeneratedVisitor,
9185            )
9186    }
9187}
9188impl serde::Serialize for GetDnsPolicyRequest {
9189    #[allow(deprecated)]
9190    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9191    where
9192        S: serde::Serializer,
9193    {
9194        use serde::ser::SerializeStruct;
9195        let mut len = 0;
9196        if !self.name.is_empty() {
9197            len += 1;
9198        }
9199        let mut struct_ser = serializer
9200            .serialize_struct("origincloud.network.v1beta1.GetDnsPolicyRequest", len)?;
9201        if !self.name.is_empty() {
9202            struct_ser.serialize_field("name", &self.name)?;
9203        }
9204        struct_ser.end()
9205    }
9206}
9207impl<'de> serde::Deserialize<'de> for GetDnsPolicyRequest {
9208    #[allow(deprecated)]
9209    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9210    where
9211        D: serde::Deserializer<'de>,
9212    {
9213        const FIELDS: &[&str] = &["name"];
9214        #[allow(clippy::enum_variant_names)]
9215        enum GeneratedField {
9216            Name,
9217            __SkipField__,
9218        }
9219        impl<'de> serde::Deserialize<'de> for GeneratedField {
9220            fn deserialize<D>(
9221                deserializer: D,
9222            ) -> std::result::Result<GeneratedField, D::Error>
9223            where
9224                D: serde::Deserializer<'de>,
9225            {
9226                struct GeneratedVisitor;
9227                impl serde::de::Visitor<'_> for GeneratedVisitor {
9228                    type Value = GeneratedField;
9229                    fn expecting(
9230                        &self,
9231                        formatter: &mut std::fmt::Formatter<'_>,
9232                    ) -> std::fmt::Result {
9233                        write!(formatter, "expected one of: {:?}", & FIELDS)
9234                    }
9235                    #[allow(unused_variables)]
9236                    fn visit_str<E>(
9237                        self,
9238                        value: &str,
9239                    ) -> std::result::Result<GeneratedField, E>
9240                    where
9241                        E: serde::de::Error,
9242                    {
9243                        match value {
9244                            "name" => Ok(GeneratedField::Name),
9245                            _ => Ok(GeneratedField::__SkipField__),
9246                        }
9247                    }
9248                }
9249                deserializer.deserialize_identifier(GeneratedVisitor)
9250            }
9251        }
9252        struct GeneratedVisitor;
9253        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9254            type Value = GetDnsPolicyRequest;
9255            fn expecting(
9256                &self,
9257                formatter: &mut std::fmt::Formatter<'_>,
9258            ) -> std::fmt::Result {
9259                formatter
9260                    .write_str("struct origincloud.network.v1beta1.GetDnsPolicyRequest")
9261            }
9262            fn visit_map<V>(
9263                self,
9264                mut map_: V,
9265            ) -> std::result::Result<GetDnsPolicyRequest, V::Error>
9266            where
9267                V: serde::de::MapAccess<'de>,
9268            {
9269                let mut name__ = None;
9270                while let Some(k) = map_.next_key()? {
9271                    match k {
9272                        GeneratedField::Name => {
9273                            if name__.is_some() {
9274                                return Err(serde::de::Error::duplicate_field("name"));
9275                            }
9276                            name__ = Some(map_.next_value()?);
9277                        }
9278                        GeneratedField::__SkipField__ => {
9279                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9280                        }
9281                    }
9282                }
9283                Ok(GetDnsPolicyRequest {
9284                    name: name__.unwrap_or_default(),
9285                })
9286            }
9287        }
9288        deserializer
9289            .deserialize_struct(
9290                "origincloud.network.v1beta1.GetDnsPolicyRequest",
9291                FIELDS,
9292                GeneratedVisitor,
9293            )
9294    }
9295}
9296impl serde::Serialize for GetFloatingIpAssociationRequest {
9297    #[allow(deprecated)]
9298    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9299    where
9300        S: serde::Serializer,
9301    {
9302        use serde::ser::SerializeStruct;
9303        let mut len = 0;
9304        if !self.name.is_empty() {
9305            len += 1;
9306        }
9307        let mut struct_ser = serializer
9308            .serialize_struct(
9309                "origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9310                len,
9311            )?;
9312        if !self.name.is_empty() {
9313            struct_ser.serialize_field("name", &self.name)?;
9314        }
9315        struct_ser.end()
9316    }
9317}
9318impl<'de> serde::Deserialize<'de> for GetFloatingIpAssociationRequest {
9319    #[allow(deprecated)]
9320    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9321    where
9322        D: serde::Deserializer<'de>,
9323    {
9324        const FIELDS: &[&str] = &["name"];
9325        #[allow(clippy::enum_variant_names)]
9326        enum GeneratedField {
9327            Name,
9328            __SkipField__,
9329        }
9330        impl<'de> serde::Deserialize<'de> for GeneratedField {
9331            fn deserialize<D>(
9332                deserializer: D,
9333            ) -> std::result::Result<GeneratedField, D::Error>
9334            where
9335                D: serde::Deserializer<'de>,
9336            {
9337                struct GeneratedVisitor;
9338                impl serde::de::Visitor<'_> for GeneratedVisitor {
9339                    type Value = GeneratedField;
9340                    fn expecting(
9341                        &self,
9342                        formatter: &mut std::fmt::Formatter<'_>,
9343                    ) -> std::fmt::Result {
9344                        write!(formatter, "expected one of: {:?}", & FIELDS)
9345                    }
9346                    #[allow(unused_variables)]
9347                    fn visit_str<E>(
9348                        self,
9349                        value: &str,
9350                    ) -> std::result::Result<GeneratedField, E>
9351                    where
9352                        E: serde::de::Error,
9353                    {
9354                        match value {
9355                            "name" => Ok(GeneratedField::Name),
9356                            _ => Ok(GeneratedField::__SkipField__),
9357                        }
9358                    }
9359                }
9360                deserializer.deserialize_identifier(GeneratedVisitor)
9361            }
9362        }
9363        struct GeneratedVisitor;
9364        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9365            type Value = GetFloatingIpAssociationRequest;
9366            fn expecting(
9367                &self,
9368                formatter: &mut std::fmt::Formatter<'_>,
9369            ) -> std::fmt::Result {
9370                formatter
9371                    .write_str(
9372                        "struct origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9373                    )
9374            }
9375            fn visit_map<V>(
9376                self,
9377                mut map_: V,
9378            ) -> std::result::Result<GetFloatingIpAssociationRequest, V::Error>
9379            where
9380                V: serde::de::MapAccess<'de>,
9381            {
9382                let mut name__ = None;
9383                while let Some(k) = map_.next_key()? {
9384                    match k {
9385                        GeneratedField::Name => {
9386                            if name__.is_some() {
9387                                return Err(serde::de::Error::duplicate_field("name"));
9388                            }
9389                            name__ = Some(map_.next_value()?);
9390                        }
9391                        GeneratedField::__SkipField__ => {
9392                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9393                        }
9394                    }
9395                }
9396                Ok(GetFloatingIpAssociationRequest {
9397                    name: name__.unwrap_or_default(),
9398                })
9399            }
9400        }
9401        deserializer
9402            .deserialize_struct(
9403                "origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9404                FIELDS,
9405                GeneratedVisitor,
9406            )
9407    }
9408}
9409impl serde::Serialize for GetFloatingIpRequest {
9410    #[allow(deprecated)]
9411    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9412    where
9413        S: serde::Serializer,
9414    {
9415        use serde::ser::SerializeStruct;
9416        let mut len = 0;
9417        if !self.name.is_empty() {
9418            len += 1;
9419        }
9420        let mut struct_ser = serializer
9421            .serialize_struct("origincloud.network.v1beta1.GetFloatingIpRequest", len)?;
9422        if !self.name.is_empty() {
9423            struct_ser.serialize_field("name", &self.name)?;
9424        }
9425        struct_ser.end()
9426    }
9427}
9428impl<'de> serde::Deserialize<'de> for GetFloatingIpRequest {
9429    #[allow(deprecated)]
9430    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9431    where
9432        D: serde::Deserializer<'de>,
9433    {
9434        const FIELDS: &[&str] = &["name"];
9435        #[allow(clippy::enum_variant_names)]
9436        enum GeneratedField {
9437            Name,
9438            __SkipField__,
9439        }
9440        impl<'de> serde::Deserialize<'de> for GeneratedField {
9441            fn deserialize<D>(
9442                deserializer: D,
9443            ) -> std::result::Result<GeneratedField, D::Error>
9444            where
9445                D: serde::Deserializer<'de>,
9446            {
9447                struct GeneratedVisitor;
9448                impl serde::de::Visitor<'_> for GeneratedVisitor {
9449                    type Value = GeneratedField;
9450                    fn expecting(
9451                        &self,
9452                        formatter: &mut std::fmt::Formatter<'_>,
9453                    ) -> std::fmt::Result {
9454                        write!(formatter, "expected one of: {:?}", & FIELDS)
9455                    }
9456                    #[allow(unused_variables)]
9457                    fn visit_str<E>(
9458                        self,
9459                        value: &str,
9460                    ) -> std::result::Result<GeneratedField, E>
9461                    where
9462                        E: serde::de::Error,
9463                    {
9464                        match value {
9465                            "name" => Ok(GeneratedField::Name),
9466                            _ => Ok(GeneratedField::__SkipField__),
9467                        }
9468                    }
9469                }
9470                deserializer.deserialize_identifier(GeneratedVisitor)
9471            }
9472        }
9473        struct GeneratedVisitor;
9474        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9475            type Value = GetFloatingIpRequest;
9476            fn expecting(
9477                &self,
9478                formatter: &mut std::fmt::Formatter<'_>,
9479            ) -> std::fmt::Result {
9480                formatter
9481                    .write_str("struct origincloud.network.v1beta1.GetFloatingIpRequest")
9482            }
9483            fn visit_map<V>(
9484                self,
9485                mut map_: V,
9486            ) -> std::result::Result<GetFloatingIpRequest, V::Error>
9487            where
9488                V: serde::de::MapAccess<'de>,
9489            {
9490                let mut name__ = None;
9491                while let Some(k) = map_.next_key()? {
9492                    match k {
9493                        GeneratedField::Name => {
9494                            if name__.is_some() {
9495                                return Err(serde::de::Error::duplicate_field("name"));
9496                            }
9497                            name__ = Some(map_.next_value()?);
9498                        }
9499                        GeneratedField::__SkipField__ => {
9500                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9501                        }
9502                    }
9503                }
9504                Ok(GetFloatingIpRequest {
9505                    name: name__.unwrap_or_default(),
9506                })
9507            }
9508        }
9509        deserializer
9510            .deserialize_struct(
9511                "origincloud.network.v1beta1.GetFloatingIpRequest",
9512                FIELDS,
9513                GeneratedVisitor,
9514            )
9515    }
9516}
9517impl serde::Serialize for GetInternetGatewayRequest {
9518    #[allow(deprecated)]
9519    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9520    where
9521        S: serde::Serializer,
9522    {
9523        use serde::ser::SerializeStruct;
9524        let mut len = 0;
9525        if !self.name.is_empty() {
9526            len += 1;
9527        }
9528        let mut struct_ser = serializer
9529            .serialize_struct(
9530                "origincloud.network.v1beta1.GetInternetGatewayRequest",
9531                len,
9532            )?;
9533        if !self.name.is_empty() {
9534            struct_ser.serialize_field("name", &self.name)?;
9535        }
9536        struct_ser.end()
9537    }
9538}
9539impl<'de> serde::Deserialize<'de> for GetInternetGatewayRequest {
9540    #[allow(deprecated)]
9541    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9542    where
9543        D: serde::Deserializer<'de>,
9544    {
9545        const FIELDS: &[&str] = &["name"];
9546        #[allow(clippy::enum_variant_names)]
9547        enum GeneratedField {
9548            Name,
9549            __SkipField__,
9550        }
9551        impl<'de> serde::Deserialize<'de> for GeneratedField {
9552            fn deserialize<D>(
9553                deserializer: D,
9554            ) -> std::result::Result<GeneratedField, D::Error>
9555            where
9556                D: serde::Deserializer<'de>,
9557            {
9558                struct GeneratedVisitor;
9559                impl serde::de::Visitor<'_> for GeneratedVisitor {
9560                    type Value = GeneratedField;
9561                    fn expecting(
9562                        &self,
9563                        formatter: &mut std::fmt::Formatter<'_>,
9564                    ) -> std::fmt::Result {
9565                        write!(formatter, "expected one of: {:?}", & FIELDS)
9566                    }
9567                    #[allow(unused_variables)]
9568                    fn visit_str<E>(
9569                        self,
9570                        value: &str,
9571                    ) -> std::result::Result<GeneratedField, E>
9572                    where
9573                        E: serde::de::Error,
9574                    {
9575                        match value {
9576                            "name" => Ok(GeneratedField::Name),
9577                            _ => Ok(GeneratedField::__SkipField__),
9578                        }
9579                    }
9580                }
9581                deserializer.deserialize_identifier(GeneratedVisitor)
9582            }
9583        }
9584        struct GeneratedVisitor;
9585        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9586            type Value = GetInternetGatewayRequest;
9587            fn expecting(
9588                &self,
9589                formatter: &mut std::fmt::Formatter<'_>,
9590            ) -> std::fmt::Result {
9591                formatter
9592                    .write_str(
9593                        "struct origincloud.network.v1beta1.GetInternetGatewayRequest",
9594                    )
9595            }
9596            fn visit_map<V>(
9597                self,
9598                mut map_: V,
9599            ) -> std::result::Result<GetInternetGatewayRequest, V::Error>
9600            where
9601                V: serde::de::MapAccess<'de>,
9602            {
9603                let mut name__ = None;
9604                while let Some(k) = map_.next_key()? {
9605                    match k {
9606                        GeneratedField::Name => {
9607                            if name__.is_some() {
9608                                return Err(serde::de::Error::duplicate_field("name"));
9609                            }
9610                            name__ = Some(map_.next_value()?);
9611                        }
9612                        GeneratedField::__SkipField__ => {
9613                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9614                        }
9615                    }
9616                }
9617                Ok(GetInternetGatewayRequest {
9618                    name: name__.unwrap_or_default(),
9619                })
9620            }
9621        }
9622        deserializer
9623            .deserialize_struct(
9624                "origincloud.network.v1beta1.GetInternetGatewayRequest",
9625                FIELDS,
9626                GeneratedVisitor,
9627            )
9628    }
9629}
9630impl serde::Serialize for GetNatGatewayRequest {
9631    #[allow(deprecated)]
9632    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9633    where
9634        S: serde::Serializer,
9635    {
9636        use serde::ser::SerializeStruct;
9637        let mut len = 0;
9638        if !self.name.is_empty() {
9639            len += 1;
9640        }
9641        let mut struct_ser = serializer
9642            .serialize_struct("origincloud.network.v1beta1.GetNatGatewayRequest", len)?;
9643        if !self.name.is_empty() {
9644            struct_ser.serialize_field("name", &self.name)?;
9645        }
9646        struct_ser.end()
9647    }
9648}
9649impl<'de> serde::Deserialize<'de> for GetNatGatewayRequest {
9650    #[allow(deprecated)]
9651    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9652    where
9653        D: serde::Deserializer<'de>,
9654    {
9655        const FIELDS: &[&str] = &["name"];
9656        #[allow(clippy::enum_variant_names)]
9657        enum GeneratedField {
9658            Name,
9659            __SkipField__,
9660        }
9661        impl<'de> serde::Deserialize<'de> for GeneratedField {
9662            fn deserialize<D>(
9663                deserializer: D,
9664            ) -> std::result::Result<GeneratedField, D::Error>
9665            where
9666                D: serde::Deserializer<'de>,
9667            {
9668                struct GeneratedVisitor;
9669                impl serde::de::Visitor<'_> for GeneratedVisitor {
9670                    type Value = GeneratedField;
9671                    fn expecting(
9672                        &self,
9673                        formatter: &mut std::fmt::Formatter<'_>,
9674                    ) -> std::fmt::Result {
9675                        write!(formatter, "expected one of: {:?}", & FIELDS)
9676                    }
9677                    #[allow(unused_variables)]
9678                    fn visit_str<E>(
9679                        self,
9680                        value: &str,
9681                    ) -> std::result::Result<GeneratedField, E>
9682                    where
9683                        E: serde::de::Error,
9684                    {
9685                        match value {
9686                            "name" => Ok(GeneratedField::Name),
9687                            _ => Ok(GeneratedField::__SkipField__),
9688                        }
9689                    }
9690                }
9691                deserializer.deserialize_identifier(GeneratedVisitor)
9692            }
9693        }
9694        struct GeneratedVisitor;
9695        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9696            type Value = GetNatGatewayRequest;
9697            fn expecting(
9698                &self,
9699                formatter: &mut std::fmt::Formatter<'_>,
9700            ) -> std::fmt::Result {
9701                formatter
9702                    .write_str("struct origincloud.network.v1beta1.GetNatGatewayRequest")
9703            }
9704            fn visit_map<V>(
9705                self,
9706                mut map_: V,
9707            ) -> std::result::Result<GetNatGatewayRequest, V::Error>
9708            where
9709                V: serde::de::MapAccess<'de>,
9710            {
9711                let mut name__ = None;
9712                while let Some(k) = map_.next_key()? {
9713                    match k {
9714                        GeneratedField::Name => {
9715                            if name__.is_some() {
9716                                return Err(serde::de::Error::duplicate_field("name"));
9717                            }
9718                            name__ = Some(map_.next_value()?);
9719                        }
9720                        GeneratedField::__SkipField__ => {
9721                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9722                        }
9723                    }
9724                }
9725                Ok(GetNatGatewayRequest {
9726                    name: name__.unwrap_or_default(),
9727                })
9728            }
9729        }
9730        deserializer
9731            .deserialize_struct(
9732                "origincloud.network.v1beta1.GetNatGatewayRequest",
9733                FIELDS,
9734                GeneratedVisitor,
9735            )
9736    }
9737}
9738impl serde::Serialize for GetNetworkInterfaceRequest {
9739    #[allow(deprecated)]
9740    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9741    where
9742        S: serde::Serializer,
9743    {
9744        use serde::ser::SerializeStruct;
9745        let mut len = 0;
9746        if !self.name.is_empty() {
9747            len += 1;
9748        }
9749        let mut struct_ser = serializer
9750            .serialize_struct(
9751                "origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9752                len,
9753            )?;
9754        if !self.name.is_empty() {
9755            struct_ser.serialize_field("name", &self.name)?;
9756        }
9757        struct_ser.end()
9758    }
9759}
9760impl<'de> serde::Deserialize<'de> for GetNetworkInterfaceRequest {
9761    #[allow(deprecated)]
9762    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9763    where
9764        D: serde::Deserializer<'de>,
9765    {
9766        const FIELDS: &[&str] = &["name"];
9767        #[allow(clippy::enum_variant_names)]
9768        enum GeneratedField {
9769            Name,
9770            __SkipField__,
9771        }
9772        impl<'de> serde::Deserialize<'de> for GeneratedField {
9773            fn deserialize<D>(
9774                deserializer: D,
9775            ) -> std::result::Result<GeneratedField, D::Error>
9776            where
9777                D: serde::Deserializer<'de>,
9778            {
9779                struct GeneratedVisitor;
9780                impl serde::de::Visitor<'_> for GeneratedVisitor {
9781                    type Value = GeneratedField;
9782                    fn expecting(
9783                        &self,
9784                        formatter: &mut std::fmt::Formatter<'_>,
9785                    ) -> std::fmt::Result {
9786                        write!(formatter, "expected one of: {:?}", & FIELDS)
9787                    }
9788                    #[allow(unused_variables)]
9789                    fn visit_str<E>(
9790                        self,
9791                        value: &str,
9792                    ) -> std::result::Result<GeneratedField, E>
9793                    where
9794                        E: serde::de::Error,
9795                    {
9796                        match value {
9797                            "name" => Ok(GeneratedField::Name),
9798                            _ => Ok(GeneratedField::__SkipField__),
9799                        }
9800                    }
9801                }
9802                deserializer.deserialize_identifier(GeneratedVisitor)
9803            }
9804        }
9805        struct GeneratedVisitor;
9806        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9807            type Value = GetNetworkInterfaceRequest;
9808            fn expecting(
9809                &self,
9810                formatter: &mut std::fmt::Formatter<'_>,
9811            ) -> std::fmt::Result {
9812                formatter
9813                    .write_str(
9814                        "struct origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9815                    )
9816            }
9817            fn visit_map<V>(
9818                self,
9819                mut map_: V,
9820            ) -> std::result::Result<GetNetworkInterfaceRequest, V::Error>
9821            where
9822                V: serde::de::MapAccess<'de>,
9823            {
9824                let mut name__ = None;
9825                while let Some(k) = map_.next_key()? {
9826                    match k {
9827                        GeneratedField::Name => {
9828                            if name__.is_some() {
9829                                return Err(serde::de::Error::duplicate_field("name"));
9830                            }
9831                            name__ = Some(map_.next_value()?);
9832                        }
9833                        GeneratedField::__SkipField__ => {
9834                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9835                        }
9836                    }
9837                }
9838                Ok(GetNetworkInterfaceRequest {
9839                    name: name__.unwrap_or_default(),
9840                })
9841            }
9842        }
9843        deserializer
9844            .deserialize_struct(
9845                "origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9846                FIELDS,
9847                GeneratedVisitor,
9848            )
9849    }
9850}
9851impl serde::Serialize for GetRouteRequest {
9852    #[allow(deprecated)]
9853    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9854    where
9855        S: serde::Serializer,
9856    {
9857        use serde::ser::SerializeStruct;
9858        let mut len = 0;
9859        if !self.name.is_empty() {
9860            len += 1;
9861        }
9862        let mut struct_ser = serializer
9863            .serialize_struct("origincloud.network.v1beta1.GetRouteRequest", len)?;
9864        if !self.name.is_empty() {
9865            struct_ser.serialize_field("name", &self.name)?;
9866        }
9867        struct_ser.end()
9868    }
9869}
9870impl<'de> serde::Deserialize<'de> for GetRouteRequest {
9871    #[allow(deprecated)]
9872    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9873    where
9874        D: serde::Deserializer<'de>,
9875    {
9876        const FIELDS: &[&str] = &["name"];
9877        #[allow(clippy::enum_variant_names)]
9878        enum GeneratedField {
9879            Name,
9880            __SkipField__,
9881        }
9882        impl<'de> serde::Deserialize<'de> for GeneratedField {
9883            fn deserialize<D>(
9884                deserializer: D,
9885            ) -> std::result::Result<GeneratedField, D::Error>
9886            where
9887                D: serde::Deserializer<'de>,
9888            {
9889                struct GeneratedVisitor;
9890                impl serde::de::Visitor<'_> for GeneratedVisitor {
9891                    type Value = GeneratedField;
9892                    fn expecting(
9893                        &self,
9894                        formatter: &mut std::fmt::Formatter<'_>,
9895                    ) -> std::fmt::Result {
9896                        write!(formatter, "expected one of: {:?}", & FIELDS)
9897                    }
9898                    #[allow(unused_variables)]
9899                    fn visit_str<E>(
9900                        self,
9901                        value: &str,
9902                    ) -> std::result::Result<GeneratedField, E>
9903                    where
9904                        E: serde::de::Error,
9905                    {
9906                        match value {
9907                            "name" => Ok(GeneratedField::Name),
9908                            _ => Ok(GeneratedField::__SkipField__),
9909                        }
9910                    }
9911                }
9912                deserializer.deserialize_identifier(GeneratedVisitor)
9913            }
9914        }
9915        struct GeneratedVisitor;
9916        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9917            type Value = GetRouteRequest;
9918            fn expecting(
9919                &self,
9920                formatter: &mut std::fmt::Formatter<'_>,
9921            ) -> std::fmt::Result {
9922                formatter.write_str("struct origincloud.network.v1beta1.GetRouteRequest")
9923            }
9924            fn visit_map<V>(
9925                self,
9926                mut map_: V,
9927            ) -> std::result::Result<GetRouteRequest, V::Error>
9928            where
9929                V: serde::de::MapAccess<'de>,
9930            {
9931                let mut name__ = None;
9932                while let Some(k) = map_.next_key()? {
9933                    match k {
9934                        GeneratedField::Name => {
9935                            if name__.is_some() {
9936                                return Err(serde::de::Error::duplicate_field("name"));
9937                            }
9938                            name__ = Some(map_.next_value()?);
9939                        }
9940                        GeneratedField::__SkipField__ => {
9941                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9942                        }
9943                    }
9944                }
9945                Ok(GetRouteRequest {
9946                    name: name__.unwrap_or_default(),
9947                })
9948            }
9949        }
9950        deserializer
9951            .deserialize_struct(
9952                "origincloud.network.v1beta1.GetRouteRequest",
9953                FIELDS,
9954                GeneratedVisitor,
9955            )
9956    }
9957}
9958impl serde::Serialize for GetRouteTableAssociationRequest {
9959    #[allow(deprecated)]
9960    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9961    where
9962        S: serde::Serializer,
9963    {
9964        use serde::ser::SerializeStruct;
9965        let mut len = 0;
9966        if !self.name.is_empty() {
9967            len += 1;
9968        }
9969        let mut struct_ser = serializer
9970            .serialize_struct(
9971                "origincloud.network.v1beta1.GetRouteTableAssociationRequest",
9972                len,
9973            )?;
9974        if !self.name.is_empty() {
9975            struct_ser.serialize_field("name", &self.name)?;
9976        }
9977        struct_ser.end()
9978    }
9979}
9980impl<'de> serde::Deserialize<'de> for GetRouteTableAssociationRequest {
9981    #[allow(deprecated)]
9982    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9983    where
9984        D: serde::Deserializer<'de>,
9985    {
9986        const FIELDS: &[&str] = &["name"];
9987        #[allow(clippy::enum_variant_names)]
9988        enum GeneratedField {
9989            Name,
9990            __SkipField__,
9991        }
9992        impl<'de> serde::Deserialize<'de> for GeneratedField {
9993            fn deserialize<D>(
9994                deserializer: D,
9995            ) -> std::result::Result<GeneratedField, D::Error>
9996            where
9997                D: serde::Deserializer<'de>,
9998            {
9999                struct GeneratedVisitor;
10000                impl serde::de::Visitor<'_> for GeneratedVisitor {
10001                    type Value = GeneratedField;
10002                    fn expecting(
10003                        &self,
10004                        formatter: &mut std::fmt::Formatter<'_>,
10005                    ) -> std::fmt::Result {
10006                        write!(formatter, "expected one of: {:?}", & FIELDS)
10007                    }
10008                    #[allow(unused_variables)]
10009                    fn visit_str<E>(
10010                        self,
10011                        value: &str,
10012                    ) -> std::result::Result<GeneratedField, E>
10013                    where
10014                        E: serde::de::Error,
10015                    {
10016                        match value {
10017                            "name" => Ok(GeneratedField::Name),
10018                            _ => Ok(GeneratedField::__SkipField__),
10019                        }
10020                    }
10021                }
10022                deserializer.deserialize_identifier(GeneratedVisitor)
10023            }
10024        }
10025        struct GeneratedVisitor;
10026        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10027            type Value = GetRouteTableAssociationRequest;
10028            fn expecting(
10029                &self,
10030                formatter: &mut std::fmt::Formatter<'_>,
10031            ) -> std::fmt::Result {
10032                formatter
10033                    .write_str(
10034                        "struct origincloud.network.v1beta1.GetRouteTableAssociationRequest",
10035                    )
10036            }
10037            fn visit_map<V>(
10038                self,
10039                mut map_: V,
10040            ) -> std::result::Result<GetRouteTableAssociationRequest, V::Error>
10041            where
10042                V: serde::de::MapAccess<'de>,
10043            {
10044                let mut name__ = None;
10045                while let Some(k) = map_.next_key()? {
10046                    match k {
10047                        GeneratedField::Name => {
10048                            if name__.is_some() {
10049                                return Err(serde::de::Error::duplicate_field("name"));
10050                            }
10051                            name__ = Some(map_.next_value()?);
10052                        }
10053                        GeneratedField::__SkipField__ => {
10054                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10055                        }
10056                    }
10057                }
10058                Ok(GetRouteTableAssociationRequest {
10059                    name: name__.unwrap_or_default(),
10060                })
10061            }
10062        }
10063        deserializer
10064            .deserialize_struct(
10065                "origincloud.network.v1beta1.GetRouteTableAssociationRequest",
10066                FIELDS,
10067                GeneratedVisitor,
10068            )
10069    }
10070}
10071impl serde::Serialize for GetRouteTableRequest {
10072    #[allow(deprecated)]
10073    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10074    where
10075        S: serde::Serializer,
10076    {
10077        use serde::ser::SerializeStruct;
10078        let mut len = 0;
10079        if !self.name.is_empty() {
10080            len += 1;
10081        }
10082        let mut struct_ser = serializer
10083            .serialize_struct("origincloud.network.v1beta1.GetRouteTableRequest", len)?;
10084        if !self.name.is_empty() {
10085            struct_ser.serialize_field("name", &self.name)?;
10086        }
10087        struct_ser.end()
10088    }
10089}
10090impl<'de> serde::Deserialize<'de> for GetRouteTableRequest {
10091    #[allow(deprecated)]
10092    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10093    where
10094        D: serde::Deserializer<'de>,
10095    {
10096        const FIELDS: &[&str] = &["name"];
10097        #[allow(clippy::enum_variant_names)]
10098        enum GeneratedField {
10099            Name,
10100            __SkipField__,
10101        }
10102        impl<'de> serde::Deserialize<'de> for GeneratedField {
10103            fn deserialize<D>(
10104                deserializer: D,
10105            ) -> std::result::Result<GeneratedField, D::Error>
10106            where
10107                D: serde::Deserializer<'de>,
10108            {
10109                struct GeneratedVisitor;
10110                impl serde::de::Visitor<'_> for GeneratedVisitor {
10111                    type Value = GeneratedField;
10112                    fn expecting(
10113                        &self,
10114                        formatter: &mut std::fmt::Formatter<'_>,
10115                    ) -> std::fmt::Result {
10116                        write!(formatter, "expected one of: {:?}", & FIELDS)
10117                    }
10118                    #[allow(unused_variables)]
10119                    fn visit_str<E>(
10120                        self,
10121                        value: &str,
10122                    ) -> std::result::Result<GeneratedField, E>
10123                    where
10124                        E: serde::de::Error,
10125                    {
10126                        match value {
10127                            "name" => Ok(GeneratedField::Name),
10128                            _ => Ok(GeneratedField::__SkipField__),
10129                        }
10130                    }
10131                }
10132                deserializer.deserialize_identifier(GeneratedVisitor)
10133            }
10134        }
10135        struct GeneratedVisitor;
10136        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10137            type Value = GetRouteTableRequest;
10138            fn expecting(
10139                &self,
10140                formatter: &mut std::fmt::Formatter<'_>,
10141            ) -> std::fmt::Result {
10142                formatter
10143                    .write_str("struct origincloud.network.v1beta1.GetRouteTableRequest")
10144            }
10145            fn visit_map<V>(
10146                self,
10147                mut map_: V,
10148            ) -> std::result::Result<GetRouteTableRequest, V::Error>
10149            where
10150                V: serde::de::MapAccess<'de>,
10151            {
10152                let mut name__ = None;
10153                while let Some(k) = map_.next_key()? {
10154                    match k {
10155                        GeneratedField::Name => {
10156                            if name__.is_some() {
10157                                return Err(serde::de::Error::duplicate_field("name"));
10158                            }
10159                            name__ = Some(map_.next_value()?);
10160                        }
10161                        GeneratedField::__SkipField__ => {
10162                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10163                        }
10164                    }
10165                }
10166                Ok(GetRouteTableRequest {
10167                    name: name__.unwrap_or_default(),
10168                })
10169            }
10170        }
10171        deserializer
10172            .deserialize_struct(
10173                "origincloud.network.v1beta1.GetRouteTableRequest",
10174                FIELDS,
10175                GeneratedVisitor,
10176            )
10177    }
10178}
10179impl serde::Serialize for GetSecurityGroupAssociationRequest {
10180    #[allow(deprecated)]
10181    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10182    where
10183        S: serde::Serializer,
10184    {
10185        use serde::ser::SerializeStruct;
10186        let mut len = 0;
10187        if !self.name.is_empty() {
10188            len += 1;
10189        }
10190        let mut struct_ser = serializer
10191            .serialize_struct(
10192                "origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10193                len,
10194            )?;
10195        if !self.name.is_empty() {
10196            struct_ser.serialize_field("name", &self.name)?;
10197        }
10198        struct_ser.end()
10199    }
10200}
10201impl<'de> serde::Deserialize<'de> for GetSecurityGroupAssociationRequest {
10202    #[allow(deprecated)]
10203    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10204    where
10205        D: serde::Deserializer<'de>,
10206    {
10207        const FIELDS: &[&str] = &["name"];
10208        #[allow(clippy::enum_variant_names)]
10209        enum GeneratedField {
10210            Name,
10211            __SkipField__,
10212        }
10213        impl<'de> serde::Deserialize<'de> for GeneratedField {
10214            fn deserialize<D>(
10215                deserializer: D,
10216            ) -> std::result::Result<GeneratedField, D::Error>
10217            where
10218                D: serde::Deserializer<'de>,
10219            {
10220                struct GeneratedVisitor;
10221                impl serde::de::Visitor<'_> for GeneratedVisitor {
10222                    type Value = GeneratedField;
10223                    fn expecting(
10224                        &self,
10225                        formatter: &mut std::fmt::Formatter<'_>,
10226                    ) -> std::fmt::Result {
10227                        write!(formatter, "expected one of: {:?}", & FIELDS)
10228                    }
10229                    #[allow(unused_variables)]
10230                    fn visit_str<E>(
10231                        self,
10232                        value: &str,
10233                    ) -> std::result::Result<GeneratedField, E>
10234                    where
10235                        E: serde::de::Error,
10236                    {
10237                        match value {
10238                            "name" => Ok(GeneratedField::Name),
10239                            _ => Ok(GeneratedField::__SkipField__),
10240                        }
10241                    }
10242                }
10243                deserializer.deserialize_identifier(GeneratedVisitor)
10244            }
10245        }
10246        struct GeneratedVisitor;
10247        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10248            type Value = GetSecurityGroupAssociationRequest;
10249            fn expecting(
10250                &self,
10251                formatter: &mut std::fmt::Formatter<'_>,
10252            ) -> std::fmt::Result {
10253                formatter
10254                    .write_str(
10255                        "struct origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10256                    )
10257            }
10258            fn visit_map<V>(
10259                self,
10260                mut map_: V,
10261            ) -> std::result::Result<GetSecurityGroupAssociationRequest, V::Error>
10262            where
10263                V: serde::de::MapAccess<'de>,
10264            {
10265                let mut name__ = None;
10266                while let Some(k) = map_.next_key()? {
10267                    match k {
10268                        GeneratedField::Name => {
10269                            if name__.is_some() {
10270                                return Err(serde::de::Error::duplicate_field("name"));
10271                            }
10272                            name__ = Some(map_.next_value()?);
10273                        }
10274                        GeneratedField::__SkipField__ => {
10275                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10276                        }
10277                    }
10278                }
10279                Ok(GetSecurityGroupAssociationRequest {
10280                    name: name__.unwrap_or_default(),
10281                })
10282            }
10283        }
10284        deserializer
10285            .deserialize_struct(
10286                "origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10287                FIELDS,
10288                GeneratedVisitor,
10289            )
10290    }
10291}
10292impl serde::Serialize for GetSecurityGroupRequest {
10293    #[allow(deprecated)]
10294    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10295    where
10296        S: serde::Serializer,
10297    {
10298        use serde::ser::SerializeStruct;
10299        let mut len = 0;
10300        if !self.name.is_empty() {
10301            len += 1;
10302        }
10303        let mut struct_ser = serializer
10304            .serialize_struct(
10305                "origincloud.network.v1beta1.GetSecurityGroupRequest",
10306                len,
10307            )?;
10308        if !self.name.is_empty() {
10309            struct_ser.serialize_field("name", &self.name)?;
10310        }
10311        struct_ser.end()
10312    }
10313}
10314impl<'de> serde::Deserialize<'de> for GetSecurityGroupRequest {
10315    #[allow(deprecated)]
10316    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10317    where
10318        D: serde::Deserializer<'de>,
10319    {
10320        const FIELDS: &[&str] = &["name"];
10321        #[allow(clippy::enum_variant_names)]
10322        enum GeneratedField {
10323            Name,
10324            __SkipField__,
10325        }
10326        impl<'de> serde::Deserialize<'de> for GeneratedField {
10327            fn deserialize<D>(
10328                deserializer: D,
10329            ) -> std::result::Result<GeneratedField, D::Error>
10330            where
10331                D: serde::Deserializer<'de>,
10332            {
10333                struct GeneratedVisitor;
10334                impl serde::de::Visitor<'_> for GeneratedVisitor {
10335                    type Value = GeneratedField;
10336                    fn expecting(
10337                        &self,
10338                        formatter: &mut std::fmt::Formatter<'_>,
10339                    ) -> std::fmt::Result {
10340                        write!(formatter, "expected one of: {:?}", & FIELDS)
10341                    }
10342                    #[allow(unused_variables)]
10343                    fn visit_str<E>(
10344                        self,
10345                        value: &str,
10346                    ) -> std::result::Result<GeneratedField, E>
10347                    where
10348                        E: serde::de::Error,
10349                    {
10350                        match value {
10351                            "name" => Ok(GeneratedField::Name),
10352                            _ => Ok(GeneratedField::__SkipField__),
10353                        }
10354                    }
10355                }
10356                deserializer.deserialize_identifier(GeneratedVisitor)
10357            }
10358        }
10359        struct GeneratedVisitor;
10360        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10361            type Value = GetSecurityGroupRequest;
10362            fn expecting(
10363                &self,
10364                formatter: &mut std::fmt::Formatter<'_>,
10365            ) -> std::fmt::Result {
10366                formatter
10367                    .write_str(
10368                        "struct origincloud.network.v1beta1.GetSecurityGroupRequest",
10369                    )
10370            }
10371            fn visit_map<V>(
10372                self,
10373                mut map_: V,
10374            ) -> std::result::Result<GetSecurityGroupRequest, V::Error>
10375            where
10376                V: serde::de::MapAccess<'de>,
10377            {
10378                let mut name__ = None;
10379                while let Some(k) = map_.next_key()? {
10380                    match k {
10381                        GeneratedField::Name => {
10382                            if name__.is_some() {
10383                                return Err(serde::de::Error::duplicate_field("name"));
10384                            }
10385                            name__ = Some(map_.next_value()?);
10386                        }
10387                        GeneratedField::__SkipField__ => {
10388                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10389                        }
10390                    }
10391                }
10392                Ok(GetSecurityGroupRequest {
10393                    name: name__.unwrap_or_default(),
10394                })
10395            }
10396        }
10397        deserializer
10398            .deserialize_struct(
10399                "origincloud.network.v1beta1.GetSecurityGroupRequest",
10400                FIELDS,
10401                GeneratedVisitor,
10402            )
10403    }
10404}
10405impl serde::Serialize for GetSecurityGroupRuleRequest {
10406    #[allow(deprecated)]
10407    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10408    where
10409        S: serde::Serializer,
10410    {
10411        use serde::ser::SerializeStruct;
10412        let mut len = 0;
10413        if !self.name.is_empty() {
10414            len += 1;
10415        }
10416        let mut struct_ser = serializer
10417            .serialize_struct(
10418                "origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10419                len,
10420            )?;
10421        if !self.name.is_empty() {
10422            struct_ser.serialize_field("name", &self.name)?;
10423        }
10424        struct_ser.end()
10425    }
10426}
10427impl<'de> serde::Deserialize<'de> for GetSecurityGroupRuleRequest {
10428    #[allow(deprecated)]
10429    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10430    where
10431        D: serde::Deserializer<'de>,
10432    {
10433        const FIELDS: &[&str] = &["name"];
10434        #[allow(clippy::enum_variant_names)]
10435        enum GeneratedField {
10436            Name,
10437            __SkipField__,
10438        }
10439        impl<'de> serde::Deserialize<'de> for GeneratedField {
10440            fn deserialize<D>(
10441                deserializer: D,
10442            ) -> std::result::Result<GeneratedField, D::Error>
10443            where
10444                D: serde::Deserializer<'de>,
10445            {
10446                struct GeneratedVisitor;
10447                impl serde::de::Visitor<'_> for GeneratedVisitor {
10448                    type Value = GeneratedField;
10449                    fn expecting(
10450                        &self,
10451                        formatter: &mut std::fmt::Formatter<'_>,
10452                    ) -> std::fmt::Result {
10453                        write!(formatter, "expected one of: {:?}", & FIELDS)
10454                    }
10455                    #[allow(unused_variables)]
10456                    fn visit_str<E>(
10457                        self,
10458                        value: &str,
10459                    ) -> std::result::Result<GeneratedField, E>
10460                    where
10461                        E: serde::de::Error,
10462                    {
10463                        match value {
10464                            "name" => Ok(GeneratedField::Name),
10465                            _ => Ok(GeneratedField::__SkipField__),
10466                        }
10467                    }
10468                }
10469                deserializer.deserialize_identifier(GeneratedVisitor)
10470            }
10471        }
10472        struct GeneratedVisitor;
10473        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10474            type Value = GetSecurityGroupRuleRequest;
10475            fn expecting(
10476                &self,
10477                formatter: &mut std::fmt::Formatter<'_>,
10478            ) -> std::fmt::Result {
10479                formatter
10480                    .write_str(
10481                        "struct origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10482                    )
10483            }
10484            fn visit_map<V>(
10485                self,
10486                mut map_: V,
10487            ) -> std::result::Result<GetSecurityGroupRuleRequest, V::Error>
10488            where
10489                V: serde::de::MapAccess<'de>,
10490            {
10491                let mut name__ = None;
10492                while let Some(k) = map_.next_key()? {
10493                    match k {
10494                        GeneratedField::Name => {
10495                            if name__.is_some() {
10496                                return Err(serde::de::Error::duplicate_field("name"));
10497                            }
10498                            name__ = Some(map_.next_value()?);
10499                        }
10500                        GeneratedField::__SkipField__ => {
10501                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10502                        }
10503                    }
10504                }
10505                Ok(GetSecurityGroupRuleRequest {
10506                    name: name__.unwrap_or_default(),
10507                })
10508            }
10509        }
10510        deserializer
10511            .deserialize_struct(
10512                "origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10513                FIELDS,
10514                GeneratedVisitor,
10515            )
10516    }
10517}
10518impl serde::Serialize for GetSubnetRequest {
10519    #[allow(deprecated)]
10520    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10521    where
10522        S: serde::Serializer,
10523    {
10524        use serde::ser::SerializeStruct;
10525        let mut len = 0;
10526        if !self.name.is_empty() {
10527            len += 1;
10528        }
10529        let mut struct_ser = serializer
10530            .serialize_struct("origincloud.network.v1beta1.GetSubnetRequest", len)?;
10531        if !self.name.is_empty() {
10532            struct_ser.serialize_field("name", &self.name)?;
10533        }
10534        struct_ser.end()
10535    }
10536}
10537impl<'de> serde::Deserialize<'de> for GetSubnetRequest {
10538    #[allow(deprecated)]
10539    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10540    where
10541        D: serde::Deserializer<'de>,
10542    {
10543        const FIELDS: &[&str] = &["name"];
10544        #[allow(clippy::enum_variant_names)]
10545        enum GeneratedField {
10546            Name,
10547            __SkipField__,
10548        }
10549        impl<'de> serde::Deserialize<'de> for GeneratedField {
10550            fn deserialize<D>(
10551                deserializer: D,
10552            ) -> std::result::Result<GeneratedField, D::Error>
10553            where
10554                D: serde::Deserializer<'de>,
10555            {
10556                struct GeneratedVisitor;
10557                impl serde::de::Visitor<'_> for GeneratedVisitor {
10558                    type Value = GeneratedField;
10559                    fn expecting(
10560                        &self,
10561                        formatter: &mut std::fmt::Formatter<'_>,
10562                    ) -> std::fmt::Result {
10563                        write!(formatter, "expected one of: {:?}", & FIELDS)
10564                    }
10565                    #[allow(unused_variables)]
10566                    fn visit_str<E>(
10567                        self,
10568                        value: &str,
10569                    ) -> std::result::Result<GeneratedField, E>
10570                    where
10571                        E: serde::de::Error,
10572                    {
10573                        match value {
10574                            "name" => Ok(GeneratedField::Name),
10575                            _ => Ok(GeneratedField::__SkipField__),
10576                        }
10577                    }
10578                }
10579                deserializer.deserialize_identifier(GeneratedVisitor)
10580            }
10581        }
10582        struct GeneratedVisitor;
10583        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10584            type Value = GetSubnetRequest;
10585            fn expecting(
10586                &self,
10587                formatter: &mut std::fmt::Formatter<'_>,
10588            ) -> std::fmt::Result {
10589                formatter
10590                    .write_str("struct origincloud.network.v1beta1.GetSubnetRequest")
10591            }
10592            fn visit_map<V>(
10593                self,
10594                mut map_: V,
10595            ) -> std::result::Result<GetSubnetRequest, V::Error>
10596            where
10597                V: serde::de::MapAccess<'de>,
10598            {
10599                let mut name__ = None;
10600                while let Some(k) = map_.next_key()? {
10601                    match k {
10602                        GeneratedField::Name => {
10603                            if name__.is_some() {
10604                                return Err(serde::de::Error::duplicate_field("name"));
10605                            }
10606                            name__ = Some(map_.next_value()?);
10607                        }
10608                        GeneratedField::__SkipField__ => {
10609                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10610                        }
10611                    }
10612                }
10613                Ok(GetSubnetRequest {
10614                    name: name__.unwrap_or_default(),
10615                })
10616            }
10617        }
10618        deserializer
10619            .deserialize_struct(
10620                "origincloud.network.v1beta1.GetSubnetRequest",
10621                FIELDS,
10622                GeneratedVisitor,
10623            )
10624    }
10625}
10626impl serde::Serialize for GetVpcRequest {
10627    #[allow(deprecated)]
10628    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10629    where
10630        S: serde::Serializer,
10631    {
10632        use serde::ser::SerializeStruct;
10633        let mut len = 0;
10634        if !self.name.is_empty() {
10635            len += 1;
10636        }
10637        let mut struct_ser = serializer
10638            .serialize_struct("origincloud.network.v1beta1.GetVpcRequest", len)?;
10639        if !self.name.is_empty() {
10640            struct_ser.serialize_field("name", &self.name)?;
10641        }
10642        struct_ser.end()
10643    }
10644}
10645impl<'de> serde::Deserialize<'de> for GetVpcRequest {
10646    #[allow(deprecated)]
10647    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10648    where
10649        D: serde::Deserializer<'de>,
10650    {
10651        const FIELDS: &[&str] = &["name"];
10652        #[allow(clippy::enum_variant_names)]
10653        enum GeneratedField {
10654            Name,
10655            __SkipField__,
10656        }
10657        impl<'de> serde::Deserialize<'de> for GeneratedField {
10658            fn deserialize<D>(
10659                deserializer: D,
10660            ) -> std::result::Result<GeneratedField, D::Error>
10661            where
10662                D: serde::Deserializer<'de>,
10663            {
10664                struct GeneratedVisitor;
10665                impl serde::de::Visitor<'_> for GeneratedVisitor {
10666                    type Value = GeneratedField;
10667                    fn expecting(
10668                        &self,
10669                        formatter: &mut std::fmt::Formatter<'_>,
10670                    ) -> std::fmt::Result {
10671                        write!(formatter, "expected one of: {:?}", & FIELDS)
10672                    }
10673                    #[allow(unused_variables)]
10674                    fn visit_str<E>(
10675                        self,
10676                        value: &str,
10677                    ) -> std::result::Result<GeneratedField, E>
10678                    where
10679                        E: serde::de::Error,
10680                    {
10681                        match value {
10682                            "name" => Ok(GeneratedField::Name),
10683                            _ => Ok(GeneratedField::__SkipField__),
10684                        }
10685                    }
10686                }
10687                deserializer.deserialize_identifier(GeneratedVisitor)
10688            }
10689        }
10690        struct GeneratedVisitor;
10691        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10692            type Value = GetVpcRequest;
10693            fn expecting(
10694                &self,
10695                formatter: &mut std::fmt::Formatter<'_>,
10696            ) -> std::fmt::Result {
10697                formatter.write_str("struct origincloud.network.v1beta1.GetVpcRequest")
10698            }
10699            fn visit_map<V>(
10700                self,
10701                mut map_: V,
10702            ) -> std::result::Result<GetVpcRequest, V::Error>
10703            where
10704                V: serde::de::MapAccess<'de>,
10705            {
10706                let mut name__ = None;
10707                while let Some(k) = map_.next_key()? {
10708                    match k {
10709                        GeneratedField::Name => {
10710                            if name__.is_some() {
10711                                return Err(serde::de::Error::duplicate_field("name"));
10712                            }
10713                            name__ = Some(map_.next_value()?);
10714                        }
10715                        GeneratedField::__SkipField__ => {
10716                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10717                        }
10718                    }
10719                }
10720                Ok(GetVpcRequest {
10721                    name: name__.unwrap_or_default(),
10722                })
10723            }
10724        }
10725        deserializer
10726            .deserialize_struct(
10727                "origincloud.network.v1beta1.GetVpcRequest",
10728                FIELDS,
10729                GeneratedVisitor,
10730            )
10731    }
10732}
10733impl serde::Serialize for InternetGateway {
10734    #[allow(deprecated)]
10735    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10736    where
10737        S: serde::Serializer,
10738    {
10739        use serde::ser::SerializeStruct;
10740        let mut len = 0;
10741        if !self.name.is_empty() {
10742            len += 1;
10743        }
10744        if !self.urn.is_empty() {
10745            len += 1;
10746        }
10747        if !self.vpc.is_empty() {
10748            len += 1;
10749        }
10750        if self.create_time.is_some() {
10751            len += 1;
10752        }
10753        if !self.creator.is_empty() {
10754            len += 1;
10755        }
10756        if !self.tags.is_empty() {
10757            len += 1;
10758        }
10759        let mut struct_ser = serializer
10760            .serialize_struct("origincloud.network.v1beta1.InternetGateway", len)?;
10761        if !self.name.is_empty() {
10762            struct_ser.serialize_field("name", &self.name)?;
10763        }
10764        if !self.urn.is_empty() {
10765            struct_ser.serialize_field("urn", &self.urn)?;
10766        }
10767        if !self.vpc.is_empty() {
10768            struct_ser.serialize_field("vpc", &self.vpc)?;
10769        }
10770        if let Some(v) = self.create_time.as_ref() {
10771            struct_ser.serialize_field("createTime", v)?;
10772        }
10773        if !self.creator.is_empty() {
10774            struct_ser.serialize_field("creator", &self.creator)?;
10775        }
10776        if !self.tags.is_empty() {
10777            struct_ser.serialize_field("tags", &self.tags)?;
10778        }
10779        struct_ser.end()
10780    }
10781}
10782impl<'de> serde::Deserialize<'de> for InternetGateway {
10783    #[allow(deprecated)]
10784    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10785    where
10786        D: serde::Deserializer<'de>,
10787    {
10788        const FIELDS: &[&str] = &[
10789            "name",
10790            "urn",
10791            "vpc",
10792            "create_time",
10793            "createTime",
10794            "creator",
10795            "tags",
10796        ];
10797        #[allow(clippy::enum_variant_names)]
10798        enum GeneratedField {
10799            Name,
10800            Urn,
10801            Vpc,
10802            CreateTime,
10803            Creator,
10804            Tags,
10805            __SkipField__,
10806        }
10807        impl<'de> serde::Deserialize<'de> for GeneratedField {
10808            fn deserialize<D>(
10809                deserializer: D,
10810            ) -> std::result::Result<GeneratedField, D::Error>
10811            where
10812                D: serde::Deserializer<'de>,
10813            {
10814                struct GeneratedVisitor;
10815                impl serde::de::Visitor<'_> for GeneratedVisitor {
10816                    type Value = GeneratedField;
10817                    fn expecting(
10818                        &self,
10819                        formatter: &mut std::fmt::Formatter<'_>,
10820                    ) -> std::fmt::Result {
10821                        write!(formatter, "expected one of: {:?}", & FIELDS)
10822                    }
10823                    #[allow(unused_variables)]
10824                    fn visit_str<E>(
10825                        self,
10826                        value: &str,
10827                    ) -> std::result::Result<GeneratedField, E>
10828                    where
10829                        E: serde::de::Error,
10830                    {
10831                        match value {
10832                            "name" => Ok(GeneratedField::Name),
10833                            "urn" => Ok(GeneratedField::Urn),
10834                            "vpc" => Ok(GeneratedField::Vpc),
10835                            "createTime" | "create_time" => {
10836                                Ok(GeneratedField::CreateTime)
10837                            }
10838                            "creator" => Ok(GeneratedField::Creator),
10839                            "tags" => Ok(GeneratedField::Tags),
10840                            _ => Ok(GeneratedField::__SkipField__),
10841                        }
10842                    }
10843                }
10844                deserializer.deserialize_identifier(GeneratedVisitor)
10845            }
10846        }
10847        struct GeneratedVisitor;
10848        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10849            type Value = InternetGateway;
10850            fn expecting(
10851                &self,
10852                formatter: &mut std::fmt::Formatter<'_>,
10853            ) -> std::fmt::Result {
10854                formatter.write_str("struct origincloud.network.v1beta1.InternetGateway")
10855            }
10856            fn visit_map<V>(
10857                self,
10858                mut map_: V,
10859            ) -> std::result::Result<InternetGateway, V::Error>
10860            where
10861                V: serde::de::MapAccess<'de>,
10862            {
10863                let mut name__ = None;
10864                let mut urn__ = None;
10865                let mut vpc__ = None;
10866                let mut create_time__ = None;
10867                let mut creator__ = None;
10868                let mut tags__ = None;
10869                while let Some(k) = map_.next_key()? {
10870                    match k {
10871                        GeneratedField::Name => {
10872                            if name__.is_some() {
10873                                return Err(serde::de::Error::duplicate_field("name"));
10874                            }
10875                            name__ = Some(map_.next_value()?);
10876                        }
10877                        GeneratedField::Urn => {
10878                            if urn__.is_some() {
10879                                return Err(serde::de::Error::duplicate_field("urn"));
10880                            }
10881                            urn__ = Some(map_.next_value()?);
10882                        }
10883                        GeneratedField::Vpc => {
10884                            if vpc__.is_some() {
10885                                return Err(serde::de::Error::duplicate_field("vpc"));
10886                            }
10887                            vpc__ = Some(map_.next_value()?);
10888                        }
10889                        GeneratedField::CreateTime => {
10890                            if create_time__.is_some() {
10891                                return Err(serde::de::Error::duplicate_field("createTime"));
10892                            }
10893                            create_time__ = map_.next_value()?;
10894                        }
10895                        GeneratedField::Creator => {
10896                            if creator__.is_some() {
10897                                return Err(serde::de::Error::duplicate_field("creator"));
10898                            }
10899                            creator__ = Some(map_.next_value()?);
10900                        }
10901                        GeneratedField::Tags => {
10902                            if tags__.is_some() {
10903                                return Err(serde::de::Error::duplicate_field("tags"));
10904                            }
10905                            tags__ = Some(
10906                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
10907                            );
10908                        }
10909                        GeneratedField::__SkipField__ => {
10910                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10911                        }
10912                    }
10913                }
10914                Ok(InternetGateway {
10915                    name: name__.unwrap_or_default(),
10916                    urn: urn__.unwrap_or_default(),
10917                    vpc: vpc__.unwrap_or_default(),
10918                    create_time: create_time__,
10919                    creator: creator__.unwrap_or_default(),
10920                    tags: tags__.unwrap_or_default(),
10921                })
10922            }
10923        }
10924        deserializer
10925            .deserialize_struct(
10926                "origincloud.network.v1beta1.InternetGateway",
10927                FIELDS,
10928                GeneratedVisitor,
10929            )
10930    }
10931}
10932impl serde::Serialize for ListAclAssociationsRequest {
10933    #[allow(deprecated)]
10934    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10935    where
10936        S: serde::Serializer,
10937    {
10938        use serde::ser::SerializeStruct;
10939        let mut len = 0;
10940        if !self.parent.is_empty() {
10941            len += 1;
10942        }
10943        if self.page_size != 0 {
10944            len += 1;
10945        }
10946        if !self.page_token.is_empty() {
10947            len += 1;
10948        }
10949        let mut struct_ser = serializer
10950            .serialize_struct(
10951                "origincloud.network.v1beta1.ListAclAssociationsRequest",
10952                len,
10953            )?;
10954        if !self.parent.is_empty() {
10955            struct_ser.serialize_field("parent", &self.parent)?;
10956        }
10957        if self.page_size != 0 {
10958            struct_ser.serialize_field("pageSize", &self.page_size)?;
10959        }
10960        if !self.page_token.is_empty() {
10961            struct_ser.serialize_field("pageToken", &self.page_token)?;
10962        }
10963        struct_ser.end()
10964    }
10965}
10966impl<'de> serde::Deserialize<'de> for ListAclAssociationsRequest {
10967    #[allow(deprecated)]
10968    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10969    where
10970        D: serde::Deserializer<'de>,
10971    {
10972        const FIELDS: &[&str] = &[
10973            "parent",
10974            "page_size",
10975            "pageSize",
10976            "page_token",
10977            "pageToken",
10978        ];
10979        #[allow(clippy::enum_variant_names)]
10980        enum GeneratedField {
10981            Parent,
10982            PageSize,
10983            PageToken,
10984            __SkipField__,
10985        }
10986        impl<'de> serde::Deserialize<'de> for GeneratedField {
10987            fn deserialize<D>(
10988                deserializer: D,
10989            ) -> std::result::Result<GeneratedField, D::Error>
10990            where
10991                D: serde::Deserializer<'de>,
10992            {
10993                struct GeneratedVisitor;
10994                impl serde::de::Visitor<'_> for GeneratedVisitor {
10995                    type Value = GeneratedField;
10996                    fn expecting(
10997                        &self,
10998                        formatter: &mut std::fmt::Formatter<'_>,
10999                    ) -> std::fmt::Result {
11000                        write!(formatter, "expected one of: {:?}", & FIELDS)
11001                    }
11002                    #[allow(unused_variables)]
11003                    fn visit_str<E>(
11004                        self,
11005                        value: &str,
11006                    ) -> std::result::Result<GeneratedField, E>
11007                    where
11008                        E: serde::de::Error,
11009                    {
11010                        match value {
11011                            "parent" => Ok(GeneratedField::Parent),
11012                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11013                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11014                            _ => Ok(GeneratedField::__SkipField__),
11015                        }
11016                    }
11017                }
11018                deserializer.deserialize_identifier(GeneratedVisitor)
11019            }
11020        }
11021        struct GeneratedVisitor;
11022        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11023            type Value = ListAclAssociationsRequest;
11024            fn expecting(
11025                &self,
11026                formatter: &mut std::fmt::Formatter<'_>,
11027            ) -> std::fmt::Result {
11028                formatter
11029                    .write_str(
11030                        "struct origincloud.network.v1beta1.ListAclAssociationsRequest",
11031                    )
11032            }
11033            fn visit_map<V>(
11034                self,
11035                mut map_: V,
11036            ) -> std::result::Result<ListAclAssociationsRequest, V::Error>
11037            where
11038                V: serde::de::MapAccess<'de>,
11039            {
11040                let mut parent__ = None;
11041                let mut page_size__ = None;
11042                let mut page_token__ = None;
11043                while let Some(k) = map_.next_key()? {
11044                    match k {
11045                        GeneratedField::Parent => {
11046                            if parent__.is_some() {
11047                                return Err(serde::de::Error::duplicate_field("parent"));
11048                            }
11049                            parent__ = Some(map_.next_value()?);
11050                        }
11051                        GeneratedField::PageSize => {
11052                            if page_size__.is_some() {
11053                                return Err(serde::de::Error::duplicate_field("pageSize"));
11054                            }
11055                            page_size__ = Some(
11056                                map_
11057                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11058                                    .0,
11059                            );
11060                        }
11061                        GeneratedField::PageToken => {
11062                            if page_token__.is_some() {
11063                                return Err(serde::de::Error::duplicate_field("pageToken"));
11064                            }
11065                            page_token__ = Some(map_.next_value()?);
11066                        }
11067                        GeneratedField::__SkipField__ => {
11068                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11069                        }
11070                    }
11071                }
11072                Ok(ListAclAssociationsRequest {
11073                    parent: parent__.unwrap_or_default(),
11074                    page_size: page_size__.unwrap_or_default(),
11075                    page_token: page_token__.unwrap_or_default(),
11076                })
11077            }
11078        }
11079        deserializer
11080            .deserialize_struct(
11081                "origincloud.network.v1beta1.ListAclAssociationsRequest",
11082                FIELDS,
11083                GeneratedVisitor,
11084            )
11085    }
11086}
11087impl serde::Serialize for ListAclAssociationsResponse {
11088    #[allow(deprecated)]
11089    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11090    where
11091        S: serde::Serializer,
11092    {
11093        use serde::ser::SerializeStruct;
11094        let mut len = 0;
11095        if !self.acl_associations.is_empty() {
11096            len += 1;
11097        }
11098        if !self.next_page_token.is_empty() {
11099            len += 1;
11100        }
11101        let mut struct_ser = serializer
11102            .serialize_struct(
11103                "origincloud.network.v1beta1.ListAclAssociationsResponse",
11104                len,
11105            )?;
11106        if !self.acl_associations.is_empty() {
11107            struct_ser.serialize_field("aclAssociations", &self.acl_associations)?;
11108        }
11109        if !self.next_page_token.is_empty() {
11110            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11111        }
11112        struct_ser.end()
11113    }
11114}
11115impl<'de> serde::Deserialize<'de> for ListAclAssociationsResponse {
11116    #[allow(deprecated)]
11117    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11118    where
11119        D: serde::Deserializer<'de>,
11120    {
11121        const FIELDS: &[&str] = &[
11122            "acl_associations",
11123            "aclAssociations",
11124            "next_page_token",
11125            "nextPageToken",
11126        ];
11127        #[allow(clippy::enum_variant_names)]
11128        enum GeneratedField {
11129            AclAssociations,
11130            NextPageToken,
11131            __SkipField__,
11132        }
11133        impl<'de> serde::Deserialize<'de> for GeneratedField {
11134            fn deserialize<D>(
11135                deserializer: D,
11136            ) -> std::result::Result<GeneratedField, D::Error>
11137            where
11138                D: serde::Deserializer<'de>,
11139            {
11140                struct GeneratedVisitor;
11141                impl serde::de::Visitor<'_> for GeneratedVisitor {
11142                    type Value = GeneratedField;
11143                    fn expecting(
11144                        &self,
11145                        formatter: &mut std::fmt::Formatter<'_>,
11146                    ) -> std::fmt::Result {
11147                        write!(formatter, "expected one of: {:?}", & FIELDS)
11148                    }
11149                    #[allow(unused_variables)]
11150                    fn visit_str<E>(
11151                        self,
11152                        value: &str,
11153                    ) -> std::result::Result<GeneratedField, E>
11154                    where
11155                        E: serde::de::Error,
11156                    {
11157                        match value {
11158                            "aclAssociations" | "acl_associations" => {
11159                                Ok(GeneratedField::AclAssociations)
11160                            }
11161                            "nextPageToken" | "next_page_token" => {
11162                                Ok(GeneratedField::NextPageToken)
11163                            }
11164                            _ => Ok(GeneratedField::__SkipField__),
11165                        }
11166                    }
11167                }
11168                deserializer.deserialize_identifier(GeneratedVisitor)
11169            }
11170        }
11171        struct GeneratedVisitor;
11172        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11173            type Value = ListAclAssociationsResponse;
11174            fn expecting(
11175                &self,
11176                formatter: &mut std::fmt::Formatter<'_>,
11177            ) -> std::fmt::Result {
11178                formatter
11179                    .write_str(
11180                        "struct origincloud.network.v1beta1.ListAclAssociationsResponse",
11181                    )
11182            }
11183            fn visit_map<V>(
11184                self,
11185                mut map_: V,
11186            ) -> std::result::Result<ListAclAssociationsResponse, V::Error>
11187            where
11188                V: serde::de::MapAccess<'de>,
11189            {
11190                let mut acl_associations__ = None;
11191                let mut next_page_token__ = None;
11192                while let Some(k) = map_.next_key()? {
11193                    match k {
11194                        GeneratedField::AclAssociations => {
11195                            if acl_associations__.is_some() {
11196                                return Err(
11197                                    serde::de::Error::duplicate_field("aclAssociations"),
11198                                );
11199                            }
11200                            acl_associations__ = Some(map_.next_value()?);
11201                        }
11202                        GeneratedField::NextPageToken => {
11203                            if next_page_token__.is_some() {
11204                                return Err(
11205                                    serde::de::Error::duplicate_field("nextPageToken"),
11206                                );
11207                            }
11208                            next_page_token__ = Some(map_.next_value()?);
11209                        }
11210                        GeneratedField::__SkipField__ => {
11211                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11212                        }
11213                    }
11214                }
11215                Ok(ListAclAssociationsResponse {
11216                    acl_associations: acl_associations__.unwrap_or_default(),
11217                    next_page_token: next_page_token__.unwrap_or_default(),
11218                })
11219            }
11220        }
11221        deserializer
11222            .deserialize_struct(
11223                "origincloud.network.v1beta1.ListAclAssociationsResponse",
11224                FIELDS,
11225                GeneratedVisitor,
11226            )
11227    }
11228}
11229impl serde::Serialize for ListAclRulesRequest {
11230    #[allow(deprecated)]
11231    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11232    where
11233        S: serde::Serializer,
11234    {
11235        use serde::ser::SerializeStruct;
11236        let mut len = 0;
11237        if !self.parent.is_empty() {
11238            len += 1;
11239        }
11240        if self.page_size != 0 {
11241            len += 1;
11242        }
11243        if !self.page_token.is_empty() {
11244            len += 1;
11245        }
11246        let mut struct_ser = serializer
11247            .serialize_struct("origincloud.network.v1beta1.ListAclRulesRequest", len)?;
11248        if !self.parent.is_empty() {
11249            struct_ser.serialize_field("parent", &self.parent)?;
11250        }
11251        if self.page_size != 0 {
11252            struct_ser.serialize_field("pageSize", &self.page_size)?;
11253        }
11254        if !self.page_token.is_empty() {
11255            struct_ser.serialize_field("pageToken", &self.page_token)?;
11256        }
11257        struct_ser.end()
11258    }
11259}
11260impl<'de> serde::Deserialize<'de> for ListAclRulesRequest {
11261    #[allow(deprecated)]
11262    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11263    where
11264        D: serde::Deserializer<'de>,
11265    {
11266        const FIELDS: &[&str] = &[
11267            "parent",
11268            "page_size",
11269            "pageSize",
11270            "page_token",
11271            "pageToken",
11272        ];
11273        #[allow(clippy::enum_variant_names)]
11274        enum GeneratedField {
11275            Parent,
11276            PageSize,
11277            PageToken,
11278            __SkipField__,
11279        }
11280        impl<'de> serde::Deserialize<'de> for GeneratedField {
11281            fn deserialize<D>(
11282                deserializer: D,
11283            ) -> std::result::Result<GeneratedField, D::Error>
11284            where
11285                D: serde::Deserializer<'de>,
11286            {
11287                struct GeneratedVisitor;
11288                impl serde::de::Visitor<'_> for GeneratedVisitor {
11289                    type Value = GeneratedField;
11290                    fn expecting(
11291                        &self,
11292                        formatter: &mut std::fmt::Formatter<'_>,
11293                    ) -> std::fmt::Result {
11294                        write!(formatter, "expected one of: {:?}", & FIELDS)
11295                    }
11296                    #[allow(unused_variables)]
11297                    fn visit_str<E>(
11298                        self,
11299                        value: &str,
11300                    ) -> std::result::Result<GeneratedField, E>
11301                    where
11302                        E: serde::de::Error,
11303                    {
11304                        match value {
11305                            "parent" => Ok(GeneratedField::Parent),
11306                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11307                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11308                            _ => Ok(GeneratedField::__SkipField__),
11309                        }
11310                    }
11311                }
11312                deserializer.deserialize_identifier(GeneratedVisitor)
11313            }
11314        }
11315        struct GeneratedVisitor;
11316        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11317            type Value = ListAclRulesRequest;
11318            fn expecting(
11319                &self,
11320                formatter: &mut std::fmt::Formatter<'_>,
11321            ) -> std::fmt::Result {
11322                formatter
11323                    .write_str("struct origincloud.network.v1beta1.ListAclRulesRequest")
11324            }
11325            fn visit_map<V>(
11326                self,
11327                mut map_: V,
11328            ) -> std::result::Result<ListAclRulesRequest, V::Error>
11329            where
11330                V: serde::de::MapAccess<'de>,
11331            {
11332                let mut parent__ = None;
11333                let mut page_size__ = None;
11334                let mut page_token__ = None;
11335                while let Some(k) = map_.next_key()? {
11336                    match k {
11337                        GeneratedField::Parent => {
11338                            if parent__.is_some() {
11339                                return Err(serde::de::Error::duplicate_field("parent"));
11340                            }
11341                            parent__ = Some(map_.next_value()?);
11342                        }
11343                        GeneratedField::PageSize => {
11344                            if page_size__.is_some() {
11345                                return Err(serde::de::Error::duplicate_field("pageSize"));
11346                            }
11347                            page_size__ = Some(
11348                                map_
11349                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11350                                    .0,
11351                            );
11352                        }
11353                        GeneratedField::PageToken => {
11354                            if page_token__.is_some() {
11355                                return Err(serde::de::Error::duplicate_field("pageToken"));
11356                            }
11357                            page_token__ = Some(map_.next_value()?);
11358                        }
11359                        GeneratedField::__SkipField__ => {
11360                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11361                        }
11362                    }
11363                }
11364                Ok(ListAclRulesRequest {
11365                    parent: parent__.unwrap_or_default(),
11366                    page_size: page_size__.unwrap_or_default(),
11367                    page_token: page_token__.unwrap_or_default(),
11368                })
11369            }
11370        }
11371        deserializer
11372            .deserialize_struct(
11373                "origincloud.network.v1beta1.ListAclRulesRequest",
11374                FIELDS,
11375                GeneratedVisitor,
11376            )
11377    }
11378}
11379impl serde::Serialize for ListAclRulesResponse {
11380    #[allow(deprecated)]
11381    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11382    where
11383        S: serde::Serializer,
11384    {
11385        use serde::ser::SerializeStruct;
11386        let mut len = 0;
11387        if !self.acl_rules.is_empty() {
11388            len += 1;
11389        }
11390        if !self.next_page_token.is_empty() {
11391            len += 1;
11392        }
11393        let mut struct_ser = serializer
11394            .serialize_struct("origincloud.network.v1beta1.ListAclRulesResponse", len)?;
11395        if !self.acl_rules.is_empty() {
11396            struct_ser.serialize_field("aclRules", &self.acl_rules)?;
11397        }
11398        if !self.next_page_token.is_empty() {
11399            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11400        }
11401        struct_ser.end()
11402    }
11403}
11404impl<'de> serde::Deserialize<'de> for ListAclRulesResponse {
11405    #[allow(deprecated)]
11406    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11407    where
11408        D: serde::Deserializer<'de>,
11409    {
11410        const FIELDS: &[&str] = &[
11411            "acl_rules",
11412            "aclRules",
11413            "next_page_token",
11414            "nextPageToken",
11415        ];
11416        #[allow(clippy::enum_variant_names)]
11417        enum GeneratedField {
11418            AclRules,
11419            NextPageToken,
11420            __SkipField__,
11421        }
11422        impl<'de> serde::Deserialize<'de> for GeneratedField {
11423            fn deserialize<D>(
11424                deserializer: D,
11425            ) -> std::result::Result<GeneratedField, D::Error>
11426            where
11427                D: serde::Deserializer<'de>,
11428            {
11429                struct GeneratedVisitor;
11430                impl serde::de::Visitor<'_> for GeneratedVisitor {
11431                    type Value = GeneratedField;
11432                    fn expecting(
11433                        &self,
11434                        formatter: &mut std::fmt::Formatter<'_>,
11435                    ) -> std::fmt::Result {
11436                        write!(formatter, "expected one of: {:?}", & FIELDS)
11437                    }
11438                    #[allow(unused_variables)]
11439                    fn visit_str<E>(
11440                        self,
11441                        value: &str,
11442                    ) -> std::result::Result<GeneratedField, E>
11443                    where
11444                        E: serde::de::Error,
11445                    {
11446                        match value {
11447                            "aclRules" | "acl_rules" => Ok(GeneratedField::AclRules),
11448                            "nextPageToken" | "next_page_token" => {
11449                                Ok(GeneratedField::NextPageToken)
11450                            }
11451                            _ => Ok(GeneratedField::__SkipField__),
11452                        }
11453                    }
11454                }
11455                deserializer.deserialize_identifier(GeneratedVisitor)
11456            }
11457        }
11458        struct GeneratedVisitor;
11459        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11460            type Value = ListAclRulesResponse;
11461            fn expecting(
11462                &self,
11463                formatter: &mut std::fmt::Formatter<'_>,
11464            ) -> std::fmt::Result {
11465                formatter
11466                    .write_str("struct origincloud.network.v1beta1.ListAclRulesResponse")
11467            }
11468            fn visit_map<V>(
11469                self,
11470                mut map_: V,
11471            ) -> std::result::Result<ListAclRulesResponse, V::Error>
11472            where
11473                V: serde::de::MapAccess<'de>,
11474            {
11475                let mut acl_rules__ = None;
11476                let mut next_page_token__ = None;
11477                while let Some(k) = map_.next_key()? {
11478                    match k {
11479                        GeneratedField::AclRules => {
11480                            if acl_rules__.is_some() {
11481                                return Err(serde::de::Error::duplicate_field("aclRules"));
11482                            }
11483                            acl_rules__ = Some(map_.next_value()?);
11484                        }
11485                        GeneratedField::NextPageToken => {
11486                            if next_page_token__.is_some() {
11487                                return Err(
11488                                    serde::de::Error::duplicate_field("nextPageToken"),
11489                                );
11490                            }
11491                            next_page_token__ = Some(map_.next_value()?);
11492                        }
11493                        GeneratedField::__SkipField__ => {
11494                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11495                        }
11496                    }
11497                }
11498                Ok(ListAclRulesResponse {
11499                    acl_rules: acl_rules__.unwrap_or_default(),
11500                    next_page_token: next_page_token__.unwrap_or_default(),
11501                })
11502            }
11503        }
11504        deserializer
11505            .deserialize_struct(
11506                "origincloud.network.v1beta1.ListAclRulesResponse",
11507                FIELDS,
11508                GeneratedVisitor,
11509            )
11510    }
11511}
11512impl serde::Serialize for ListAclsRequest {
11513    #[allow(deprecated)]
11514    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11515    where
11516        S: serde::Serializer,
11517    {
11518        use serde::ser::SerializeStruct;
11519        let mut len = 0;
11520        if !self.parent.is_empty() {
11521            len += 1;
11522        }
11523        if self.page_size != 0 {
11524            len += 1;
11525        }
11526        if !self.page_token.is_empty() {
11527            len += 1;
11528        }
11529        if !self.vpc.is_empty() {
11530            len += 1;
11531        }
11532        let mut struct_ser = serializer
11533            .serialize_struct("origincloud.network.v1beta1.ListAclsRequest", len)?;
11534        if !self.parent.is_empty() {
11535            struct_ser.serialize_field("parent", &self.parent)?;
11536        }
11537        if self.page_size != 0 {
11538            struct_ser.serialize_field("pageSize", &self.page_size)?;
11539        }
11540        if !self.page_token.is_empty() {
11541            struct_ser.serialize_field("pageToken", &self.page_token)?;
11542        }
11543        if !self.vpc.is_empty() {
11544            struct_ser.serialize_field("vpc", &self.vpc)?;
11545        }
11546        struct_ser.end()
11547    }
11548}
11549impl<'de> serde::Deserialize<'de> for ListAclsRequest {
11550    #[allow(deprecated)]
11551    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11552    where
11553        D: serde::Deserializer<'de>,
11554    {
11555        const FIELDS: &[&str] = &[
11556            "parent",
11557            "page_size",
11558            "pageSize",
11559            "page_token",
11560            "pageToken",
11561            "vpc",
11562        ];
11563        #[allow(clippy::enum_variant_names)]
11564        enum GeneratedField {
11565            Parent,
11566            PageSize,
11567            PageToken,
11568            Vpc,
11569            __SkipField__,
11570        }
11571        impl<'de> serde::Deserialize<'de> for GeneratedField {
11572            fn deserialize<D>(
11573                deserializer: D,
11574            ) -> std::result::Result<GeneratedField, D::Error>
11575            where
11576                D: serde::Deserializer<'de>,
11577            {
11578                struct GeneratedVisitor;
11579                impl serde::de::Visitor<'_> for GeneratedVisitor {
11580                    type Value = GeneratedField;
11581                    fn expecting(
11582                        &self,
11583                        formatter: &mut std::fmt::Formatter<'_>,
11584                    ) -> std::fmt::Result {
11585                        write!(formatter, "expected one of: {:?}", & FIELDS)
11586                    }
11587                    #[allow(unused_variables)]
11588                    fn visit_str<E>(
11589                        self,
11590                        value: &str,
11591                    ) -> std::result::Result<GeneratedField, E>
11592                    where
11593                        E: serde::de::Error,
11594                    {
11595                        match value {
11596                            "parent" => Ok(GeneratedField::Parent),
11597                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11598                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11599                            "vpc" => Ok(GeneratedField::Vpc),
11600                            _ => Ok(GeneratedField::__SkipField__),
11601                        }
11602                    }
11603                }
11604                deserializer.deserialize_identifier(GeneratedVisitor)
11605            }
11606        }
11607        struct GeneratedVisitor;
11608        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11609            type Value = ListAclsRequest;
11610            fn expecting(
11611                &self,
11612                formatter: &mut std::fmt::Formatter<'_>,
11613            ) -> std::fmt::Result {
11614                formatter.write_str("struct origincloud.network.v1beta1.ListAclsRequest")
11615            }
11616            fn visit_map<V>(
11617                self,
11618                mut map_: V,
11619            ) -> std::result::Result<ListAclsRequest, V::Error>
11620            where
11621                V: serde::de::MapAccess<'de>,
11622            {
11623                let mut parent__ = None;
11624                let mut page_size__ = None;
11625                let mut page_token__ = None;
11626                let mut vpc__ = None;
11627                while let Some(k) = map_.next_key()? {
11628                    match k {
11629                        GeneratedField::Parent => {
11630                            if parent__.is_some() {
11631                                return Err(serde::de::Error::duplicate_field("parent"));
11632                            }
11633                            parent__ = Some(map_.next_value()?);
11634                        }
11635                        GeneratedField::PageSize => {
11636                            if page_size__.is_some() {
11637                                return Err(serde::de::Error::duplicate_field("pageSize"));
11638                            }
11639                            page_size__ = Some(
11640                                map_
11641                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11642                                    .0,
11643                            );
11644                        }
11645                        GeneratedField::PageToken => {
11646                            if page_token__.is_some() {
11647                                return Err(serde::de::Error::duplicate_field("pageToken"));
11648                            }
11649                            page_token__ = Some(map_.next_value()?);
11650                        }
11651                        GeneratedField::Vpc => {
11652                            if vpc__.is_some() {
11653                                return Err(serde::de::Error::duplicate_field("vpc"));
11654                            }
11655                            vpc__ = Some(map_.next_value()?);
11656                        }
11657                        GeneratedField::__SkipField__ => {
11658                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11659                        }
11660                    }
11661                }
11662                Ok(ListAclsRequest {
11663                    parent: parent__.unwrap_or_default(),
11664                    page_size: page_size__.unwrap_or_default(),
11665                    page_token: page_token__.unwrap_or_default(),
11666                    vpc: vpc__.unwrap_or_default(),
11667                })
11668            }
11669        }
11670        deserializer
11671            .deserialize_struct(
11672                "origincloud.network.v1beta1.ListAclsRequest",
11673                FIELDS,
11674                GeneratedVisitor,
11675            )
11676    }
11677}
11678impl serde::Serialize for ListAclsResponse {
11679    #[allow(deprecated)]
11680    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11681    where
11682        S: serde::Serializer,
11683    {
11684        use serde::ser::SerializeStruct;
11685        let mut len = 0;
11686        if !self.acls.is_empty() {
11687            len += 1;
11688        }
11689        if !self.next_page_token.is_empty() {
11690            len += 1;
11691        }
11692        let mut struct_ser = serializer
11693            .serialize_struct("origincloud.network.v1beta1.ListAclsResponse", len)?;
11694        if !self.acls.is_empty() {
11695            struct_ser.serialize_field("acls", &self.acls)?;
11696        }
11697        if !self.next_page_token.is_empty() {
11698            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11699        }
11700        struct_ser.end()
11701    }
11702}
11703impl<'de> serde::Deserialize<'de> for ListAclsResponse {
11704    #[allow(deprecated)]
11705    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11706    where
11707        D: serde::Deserializer<'de>,
11708    {
11709        const FIELDS: &[&str] = &["acls", "next_page_token", "nextPageToken"];
11710        #[allow(clippy::enum_variant_names)]
11711        enum GeneratedField {
11712            Acls,
11713            NextPageToken,
11714            __SkipField__,
11715        }
11716        impl<'de> serde::Deserialize<'de> for GeneratedField {
11717            fn deserialize<D>(
11718                deserializer: D,
11719            ) -> std::result::Result<GeneratedField, D::Error>
11720            where
11721                D: serde::Deserializer<'de>,
11722            {
11723                struct GeneratedVisitor;
11724                impl serde::de::Visitor<'_> for GeneratedVisitor {
11725                    type Value = GeneratedField;
11726                    fn expecting(
11727                        &self,
11728                        formatter: &mut std::fmt::Formatter<'_>,
11729                    ) -> std::fmt::Result {
11730                        write!(formatter, "expected one of: {:?}", & FIELDS)
11731                    }
11732                    #[allow(unused_variables)]
11733                    fn visit_str<E>(
11734                        self,
11735                        value: &str,
11736                    ) -> std::result::Result<GeneratedField, E>
11737                    where
11738                        E: serde::de::Error,
11739                    {
11740                        match value {
11741                            "acls" => Ok(GeneratedField::Acls),
11742                            "nextPageToken" | "next_page_token" => {
11743                                Ok(GeneratedField::NextPageToken)
11744                            }
11745                            _ => Ok(GeneratedField::__SkipField__),
11746                        }
11747                    }
11748                }
11749                deserializer.deserialize_identifier(GeneratedVisitor)
11750            }
11751        }
11752        struct GeneratedVisitor;
11753        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11754            type Value = ListAclsResponse;
11755            fn expecting(
11756                &self,
11757                formatter: &mut std::fmt::Formatter<'_>,
11758            ) -> std::fmt::Result {
11759                formatter
11760                    .write_str("struct origincloud.network.v1beta1.ListAclsResponse")
11761            }
11762            fn visit_map<V>(
11763                self,
11764                mut map_: V,
11765            ) -> std::result::Result<ListAclsResponse, V::Error>
11766            where
11767                V: serde::de::MapAccess<'de>,
11768            {
11769                let mut acls__ = None;
11770                let mut next_page_token__ = None;
11771                while let Some(k) = map_.next_key()? {
11772                    match k {
11773                        GeneratedField::Acls => {
11774                            if acls__.is_some() {
11775                                return Err(serde::de::Error::duplicate_field("acls"));
11776                            }
11777                            acls__ = Some(map_.next_value()?);
11778                        }
11779                        GeneratedField::NextPageToken => {
11780                            if next_page_token__.is_some() {
11781                                return Err(
11782                                    serde::de::Error::duplicate_field("nextPageToken"),
11783                                );
11784                            }
11785                            next_page_token__ = Some(map_.next_value()?);
11786                        }
11787                        GeneratedField::__SkipField__ => {
11788                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11789                        }
11790                    }
11791                }
11792                Ok(ListAclsResponse {
11793                    acls: acls__.unwrap_or_default(),
11794                    next_page_token: next_page_token__.unwrap_or_default(),
11795                })
11796            }
11797        }
11798        deserializer
11799            .deserialize_struct(
11800                "origincloud.network.v1beta1.ListAclsResponse",
11801                FIELDS,
11802                GeneratedVisitor,
11803            )
11804    }
11805}
11806impl serde::Serialize for ListDnsPoliciesRequest {
11807    #[allow(deprecated)]
11808    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11809    where
11810        S: serde::Serializer,
11811    {
11812        use serde::ser::SerializeStruct;
11813        let mut len = 0;
11814        if !self.parent.is_empty() {
11815            len += 1;
11816        }
11817        if self.page_size != 0 {
11818            len += 1;
11819        }
11820        if !self.page_token.is_empty() {
11821            len += 1;
11822        }
11823        let mut struct_ser = serializer
11824            .serialize_struct(
11825                "origincloud.network.v1beta1.ListDnsPoliciesRequest",
11826                len,
11827            )?;
11828        if !self.parent.is_empty() {
11829            struct_ser.serialize_field("parent", &self.parent)?;
11830        }
11831        if self.page_size != 0 {
11832            struct_ser.serialize_field("pageSize", &self.page_size)?;
11833        }
11834        if !self.page_token.is_empty() {
11835            struct_ser.serialize_field("pageToken", &self.page_token)?;
11836        }
11837        struct_ser.end()
11838    }
11839}
11840impl<'de> serde::Deserialize<'de> for ListDnsPoliciesRequest {
11841    #[allow(deprecated)]
11842    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11843    where
11844        D: serde::Deserializer<'de>,
11845    {
11846        const FIELDS: &[&str] = &[
11847            "parent",
11848            "page_size",
11849            "pageSize",
11850            "page_token",
11851            "pageToken",
11852        ];
11853        #[allow(clippy::enum_variant_names)]
11854        enum GeneratedField {
11855            Parent,
11856            PageSize,
11857            PageToken,
11858            __SkipField__,
11859        }
11860        impl<'de> serde::Deserialize<'de> for GeneratedField {
11861            fn deserialize<D>(
11862                deserializer: D,
11863            ) -> std::result::Result<GeneratedField, D::Error>
11864            where
11865                D: serde::Deserializer<'de>,
11866            {
11867                struct GeneratedVisitor;
11868                impl serde::de::Visitor<'_> for GeneratedVisitor {
11869                    type Value = GeneratedField;
11870                    fn expecting(
11871                        &self,
11872                        formatter: &mut std::fmt::Formatter<'_>,
11873                    ) -> std::fmt::Result {
11874                        write!(formatter, "expected one of: {:?}", & FIELDS)
11875                    }
11876                    #[allow(unused_variables)]
11877                    fn visit_str<E>(
11878                        self,
11879                        value: &str,
11880                    ) -> std::result::Result<GeneratedField, E>
11881                    where
11882                        E: serde::de::Error,
11883                    {
11884                        match value {
11885                            "parent" => Ok(GeneratedField::Parent),
11886                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11887                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11888                            _ => Ok(GeneratedField::__SkipField__),
11889                        }
11890                    }
11891                }
11892                deserializer.deserialize_identifier(GeneratedVisitor)
11893            }
11894        }
11895        struct GeneratedVisitor;
11896        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11897            type Value = ListDnsPoliciesRequest;
11898            fn expecting(
11899                &self,
11900                formatter: &mut std::fmt::Formatter<'_>,
11901            ) -> std::fmt::Result {
11902                formatter
11903                    .write_str(
11904                        "struct origincloud.network.v1beta1.ListDnsPoliciesRequest",
11905                    )
11906            }
11907            fn visit_map<V>(
11908                self,
11909                mut map_: V,
11910            ) -> std::result::Result<ListDnsPoliciesRequest, V::Error>
11911            where
11912                V: serde::de::MapAccess<'de>,
11913            {
11914                let mut parent__ = None;
11915                let mut page_size__ = None;
11916                let mut page_token__ = None;
11917                while let Some(k) = map_.next_key()? {
11918                    match k {
11919                        GeneratedField::Parent => {
11920                            if parent__.is_some() {
11921                                return Err(serde::de::Error::duplicate_field("parent"));
11922                            }
11923                            parent__ = Some(map_.next_value()?);
11924                        }
11925                        GeneratedField::PageSize => {
11926                            if page_size__.is_some() {
11927                                return Err(serde::de::Error::duplicate_field("pageSize"));
11928                            }
11929                            page_size__ = Some(
11930                                map_
11931                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11932                                    .0,
11933                            );
11934                        }
11935                        GeneratedField::PageToken => {
11936                            if page_token__.is_some() {
11937                                return Err(serde::de::Error::duplicate_field("pageToken"));
11938                            }
11939                            page_token__ = Some(map_.next_value()?);
11940                        }
11941                        GeneratedField::__SkipField__ => {
11942                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11943                        }
11944                    }
11945                }
11946                Ok(ListDnsPoliciesRequest {
11947                    parent: parent__.unwrap_or_default(),
11948                    page_size: page_size__.unwrap_or_default(),
11949                    page_token: page_token__.unwrap_or_default(),
11950                })
11951            }
11952        }
11953        deserializer
11954            .deserialize_struct(
11955                "origincloud.network.v1beta1.ListDnsPoliciesRequest",
11956                FIELDS,
11957                GeneratedVisitor,
11958            )
11959    }
11960}
11961impl serde::Serialize for ListDnsPoliciesResponse {
11962    #[allow(deprecated)]
11963    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11964    where
11965        S: serde::Serializer,
11966    {
11967        use serde::ser::SerializeStruct;
11968        let mut len = 0;
11969        if !self.dns_policies.is_empty() {
11970            len += 1;
11971        }
11972        if !self.next_page_token.is_empty() {
11973            len += 1;
11974        }
11975        let mut struct_ser = serializer
11976            .serialize_struct(
11977                "origincloud.network.v1beta1.ListDnsPoliciesResponse",
11978                len,
11979            )?;
11980        if !self.dns_policies.is_empty() {
11981            struct_ser.serialize_field("dnsPolicies", &self.dns_policies)?;
11982        }
11983        if !self.next_page_token.is_empty() {
11984            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11985        }
11986        struct_ser.end()
11987    }
11988}
11989impl<'de> serde::Deserialize<'de> for ListDnsPoliciesResponse {
11990    #[allow(deprecated)]
11991    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11992    where
11993        D: serde::Deserializer<'de>,
11994    {
11995        const FIELDS: &[&str] = &[
11996            "dns_policies",
11997            "dnsPolicies",
11998            "next_page_token",
11999            "nextPageToken",
12000        ];
12001        #[allow(clippy::enum_variant_names)]
12002        enum GeneratedField {
12003            DnsPolicies,
12004            NextPageToken,
12005            __SkipField__,
12006        }
12007        impl<'de> serde::Deserialize<'de> for GeneratedField {
12008            fn deserialize<D>(
12009                deserializer: D,
12010            ) -> std::result::Result<GeneratedField, D::Error>
12011            where
12012                D: serde::Deserializer<'de>,
12013            {
12014                struct GeneratedVisitor;
12015                impl serde::de::Visitor<'_> for GeneratedVisitor {
12016                    type Value = GeneratedField;
12017                    fn expecting(
12018                        &self,
12019                        formatter: &mut std::fmt::Formatter<'_>,
12020                    ) -> std::fmt::Result {
12021                        write!(formatter, "expected one of: {:?}", & FIELDS)
12022                    }
12023                    #[allow(unused_variables)]
12024                    fn visit_str<E>(
12025                        self,
12026                        value: &str,
12027                    ) -> std::result::Result<GeneratedField, E>
12028                    where
12029                        E: serde::de::Error,
12030                    {
12031                        match value {
12032                            "dnsPolicies" | "dns_policies" => {
12033                                Ok(GeneratedField::DnsPolicies)
12034                            }
12035                            "nextPageToken" | "next_page_token" => {
12036                                Ok(GeneratedField::NextPageToken)
12037                            }
12038                            _ => Ok(GeneratedField::__SkipField__),
12039                        }
12040                    }
12041                }
12042                deserializer.deserialize_identifier(GeneratedVisitor)
12043            }
12044        }
12045        struct GeneratedVisitor;
12046        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12047            type Value = ListDnsPoliciesResponse;
12048            fn expecting(
12049                &self,
12050                formatter: &mut std::fmt::Formatter<'_>,
12051            ) -> std::fmt::Result {
12052                formatter
12053                    .write_str(
12054                        "struct origincloud.network.v1beta1.ListDnsPoliciesResponse",
12055                    )
12056            }
12057            fn visit_map<V>(
12058                self,
12059                mut map_: V,
12060            ) -> std::result::Result<ListDnsPoliciesResponse, V::Error>
12061            where
12062                V: serde::de::MapAccess<'de>,
12063            {
12064                let mut dns_policies__ = None;
12065                let mut next_page_token__ = None;
12066                while let Some(k) = map_.next_key()? {
12067                    match k {
12068                        GeneratedField::DnsPolicies => {
12069                            if dns_policies__.is_some() {
12070                                return Err(
12071                                    serde::de::Error::duplicate_field("dnsPolicies"),
12072                                );
12073                            }
12074                            dns_policies__ = Some(map_.next_value()?);
12075                        }
12076                        GeneratedField::NextPageToken => {
12077                            if next_page_token__.is_some() {
12078                                return Err(
12079                                    serde::de::Error::duplicate_field("nextPageToken"),
12080                                );
12081                            }
12082                            next_page_token__ = Some(map_.next_value()?);
12083                        }
12084                        GeneratedField::__SkipField__ => {
12085                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12086                        }
12087                    }
12088                }
12089                Ok(ListDnsPoliciesResponse {
12090                    dns_policies: dns_policies__.unwrap_or_default(),
12091                    next_page_token: next_page_token__.unwrap_or_default(),
12092                })
12093            }
12094        }
12095        deserializer
12096            .deserialize_struct(
12097                "origincloud.network.v1beta1.ListDnsPoliciesResponse",
12098                FIELDS,
12099                GeneratedVisitor,
12100            )
12101    }
12102}
12103impl serde::Serialize for ListDnsPolicyAssociationsRequest {
12104    #[allow(deprecated)]
12105    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12106    where
12107        S: serde::Serializer,
12108    {
12109        use serde::ser::SerializeStruct;
12110        let mut len = 0;
12111        if !self.parent.is_empty() {
12112            len += 1;
12113        }
12114        if self.page_size != 0 {
12115            len += 1;
12116        }
12117        if !self.page_token.is_empty() {
12118            len += 1;
12119        }
12120        let mut struct_ser = serializer
12121            .serialize_struct(
12122                "origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12123                len,
12124            )?;
12125        if !self.parent.is_empty() {
12126            struct_ser.serialize_field("parent", &self.parent)?;
12127        }
12128        if self.page_size != 0 {
12129            struct_ser.serialize_field("pageSize", &self.page_size)?;
12130        }
12131        if !self.page_token.is_empty() {
12132            struct_ser.serialize_field("pageToken", &self.page_token)?;
12133        }
12134        struct_ser.end()
12135    }
12136}
12137impl<'de> serde::Deserialize<'de> for ListDnsPolicyAssociationsRequest {
12138    #[allow(deprecated)]
12139    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12140    where
12141        D: serde::Deserializer<'de>,
12142    {
12143        const FIELDS: &[&str] = &[
12144            "parent",
12145            "page_size",
12146            "pageSize",
12147            "page_token",
12148            "pageToken",
12149        ];
12150        #[allow(clippy::enum_variant_names)]
12151        enum GeneratedField {
12152            Parent,
12153            PageSize,
12154            PageToken,
12155            __SkipField__,
12156        }
12157        impl<'de> serde::Deserialize<'de> for GeneratedField {
12158            fn deserialize<D>(
12159                deserializer: D,
12160            ) -> std::result::Result<GeneratedField, D::Error>
12161            where
12162                D: serde::Deserializer<'de>,
12163            {
12164                struct GeneratedVisitor;
12165                impl serde::de::Visitor<'_> for GeneratedVisitor {
12166                    type Value = GeneratedField;
12167                    fn expecting(
12168                        &self,
12169                        formatter: &mut std::fmt::Formatter<'_>,
12170                    ) -> std::fmt::Result {
12171                        write!(formatter, "expected one of: {:?}", & FIELDS)
12172                    }
12173                    #[allow(unused_variables)]
12174                    fn visit_str<E>(
12175                        self,
12176                        value: &str,
12177                    ) -> std::result::Result<GeneratedField, E>
12178                    where
12179                        E: serde::de::Error,
12180                    {
12181                        match value {
12182                            "parent" => Ok(GeneratedField::Parent),
12183                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12184                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12185                            _ => Ok(GeneratedField::__SkipField__),
12186                        }
12187                    }
12188                }
12189                deserializer.deserialize_identifier(GeneratedVisitor)
12190            }
12191        }
12192        struct GeneratedVisitor;
12193        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12194            type Value = ListDnsPolicyAssociationsRequest;
12195            fn expecting(
12196                &self,
12197                formatter: &mut std::fmt::Formatter<'_>,
12198            ) -> std::fmt::Result {
12199                formatter
12200                    .write_str(
12201                        "struct origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12202                    )
12203            }
12204            fn visit_map<V>(
12205                self,
12206                mut map_: V,
12207            ) -> std::result::Result<ListDnsPolicyAssociationsRequest, V::Error>
12208            where
12209                V: serde::de::MapAccess<'de>,
12210            {
12211                let mut parent__ = None;
12212                let mut page_size__ = None;
12213                let mut page_token__ = None;
12214                while let Some(k) = map_.next_key()? {
12215                    match k {
12216                        GeneratedField::Parent => {
12217                            if parent__.is_some() {
12218                                return Err(serde::de::Error::duplicate_field("parent"));
12219                            }
12220                            parent__ = Some(map_.next_value()?);
12221                        }
12222                        GeneratedField::PageSize => {
12223                            if page_size__.is_some() {
12224                                return Err(serde::de::Error::duplicate_field("pageSize"));
12225                            }
12226                            page_size__ = Some(
12227                                map_
12228                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12229                                    .0,
12230                            );
12231                        }
12232                        GeneratedField::PageToken => {
12233                            if page_token__.is_some() {
12234                                return Err(serde::de::Error::duplicate_field("pageToken"));
12235                            }
12236                            page_token__ = Some(map_.next_value()?);
12237                        }
12238                        GeneratedField::__SkipField__ => {
12239                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12240                        }
12241                    }
12242                }
12243                Ok(ListDnsPolicyAssociationsRequest {
12244                    parent: parent__.unwrap_or_default(),
12245                    page_size: page_size__.unwrap_or_default(),
12246                    page_token: page_token__.unwrap_or_default(),
12247                })
12248            }
12249        }
12250        deserializer
12251            .deserialize_struct(
12252                "origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12253                FIELDS,
12254                GeneratedVisitor,
12255            )
12256    }
12257}
12258impl serde::Serialize for ListDnsPolicyAssociationsResponse {
12259    #[allow(deprecated)]
12260    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12261    where
12262        S: serde::Serializer,
12263    {
12264        use serde::ser::SerializeStruct;
12265        let mut len = 0;
12266        if !self.dns_policy_associations.is_empty() {
12267            len += 1;
12268        }
12269        if !self.next_page_token.is_empty() {
12270            len += 1;
12271        }
12272        let mut struct_ser = serializer
12273            .serialize_struct(
12274                "origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12275                len,
12276            )?;
12277        if !self.dns_policy_associations.is_empty() {
12278            struct_ser
12279                .serialize_field(
12280                    "dnsPolicyAssociations",
12281                    &self.dns_policy_associations,
12282                )?;
12283        }
12284        if !self.next_page_token.is_empty() {
12285            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12286        }
12287        struct_ser.end()
12288    }
12289}
12290impl<'de> serde::Deserialize<'de> for ListDnsPolicyAssociationsResponse {
12291    #[allow(deprecated)]
12292    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12293    where
12294        D: serde::Deserializer<'de>,
12295    {
12296        const FIELDS: &[&str] = &[
12297            "dns_policy_associations",
12298            "dnsPolicyAssociations",
12299            "next_page_token",
12300            "nextPageToken",
12301        ];
12302        #[allow(clippy::enum_variant_names)]
12303        enum GeneratedField {
12304            DnsPolicyAssociations,
12305            NextPageToken,
12306            __SkipField__,
12307        }
12308        impl<'de> serde::Deserialize<'de> for GeneratedField {
12309            fn deserialize<D>(
12310                deserializer: D,
12311            ) -> std::result::Result<GeneratedField, D::Error>
12312            where
12313                D: serde::Deserializer<'de>,
12314            {
12315                struct GeneratedVisitor;
12316                impl serde::de::Visitor<'_> for GeneratedVisitor {
12317                    type Value = GeneratedField;
12318                    fn expecting(
12319                        &self,
12320                        formatter: &mut std::fmt::Formatter<'_>,
12321                    ) -> std::fmt::Result {
12322                        write!(formatter, "expected one of: {:?}", & FIELDS)
12323                    }
12324                    #[allow(unused_variables)]
12325                    fn visit_str<E>(
12326                        self,
12327                        value: &str,
12328                    ) -> std::result::Result<GeneratedField, E>
12329                    where
12330                        E: serde::de::Error,
12331                    {
12332                        match value {
12333                            "dnsPolicyAssociations" | "dns_policy_associations" => {
12334                                Ok(GeneratedField::DnsPolicyAssociations)
12335                            }
12336                            "nextPageToken" | "next_page_token" => {
12337                                Ok(GeneratedField::NextPageToken)
12338                            }
12339                            _ => Ok(GeneratedField::__SkipField__),
12340                        }
12341                    }
12342                }
12343                deserializer.deserialize_identifier(GeneratedVisitor)
12344            }
12345        }
12346        struct GeneratedVisitor;
12347        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12348            type Value = ListDnsPolicyAssociationsResponse;
12349            fn expecting(
12350                &self,
12351                formatter: &mut std::fmt::Formatter<'_>,
12352            ) -> std::fmt::Result {
12353                formatter
12354                    .write_str(
12355                        "struct origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12356                    )
12357            }
12358            fn visit_map<V>(
12359                self,
12360                mut map_: V,
12361            ) -> std::result::Result<ListDnsPolicyAssociationsResponse, V::Error>
12362            where
12363                V: serde::de::MapAccess<'de>,
12364            {
12365                let mut dns_policy_associations__ = None;
12366                let mut next_page_token__ = None;
12367                while let Some(k) = map_.next_key()? {
12368                    match k {
12369                        GeneratedField::DnsPolicyAssociations => {
12370                            if dns_policy_associations__.is_some() {
12371                                return Err(
12372                                    serde::de::Error::duplicate_field("dnsPolicyAssociations"),
12373                                );
12374                            }
12375                            dns_policy_associations__ = Some(map_.next_value()?);
12376                        }
12377                        GeneratedField::NextPageToken => {
12378                            if next_page_token__.is_some() {
12379                                return Err(
12380                                    serde::de::Error::duplicate_field("nextPageToken"),
12381                                );
12382                            }
12383                            next_page_token__ = Some(map_.next_value()?);
12384                        }
12385                        GeneratedField::__SkipField__ => {
12386                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12387                        }
12388                    }
12389                }
12390                Ok(ListDnsPolicyAssociationsResponse {
12391                    dns_policy_associations: dns_policy_associations__
12392                        .unwrap_or_default(),
12393                    next_page_token: next_page_token__.unwrap_or_default(),
12394                })
12395            }
12396        }
12397        deserializer
12398            .deserialize_struct(
12399                "origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12400                FIELDS,
12401                GeneratedVisitor,
12402            )
12403    }
12404}
12405impl serde::Serialize for ListFloatingIpAssociationsRequest {
12406    #[allow(deprecated)]
12407    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12408    where
12409        S: serde::Serializer,
12410    {
12411        use serde::ser::SerializeStruct;
12412        let mut len = 0;
12413        if !self.parent.is_empty() {
12414            len += 1;
12415        }
12416        if self.page_size != 0 {
12417            len += 1;
12418        }
12419        if !self.page_token.is_empty() {
12420            len += 1;
12421        }
12422        let mut struct_ser = serializer
12423            .serialize_struct(
12424                "origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12425                len,
12426            )?;
12427        if !self.parent.is_empty() {
12428            struct_ser.serialize_field("parent", &self.parent)?;
12429        }
12430        if self.page_size != 0 {
12431            struct_ser.serialize_field("pageSize", &self.page_size)?;
12432        }
12433        if !self.page_token.is_empty() {
12434            struct_ser.serialize_field("pageToken", &self.page_token)?;
12435        }
12436        struct_ser.end()
12437    }
12438}
12439impl<'de> serde::Deserialize<'de> for ListFloatingIpAssociationsRequest {
12440    #[allow(deprecated)]
12441    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12442    where
12443        D: serde::Deserializer<'de>,
12444    {
12445        const FIELDS: &[&str] = &[
12446            "parent",
12447            "page_size",
12448            "pageSize",
12449            "page_token",
12450            "pageToken",
12451        ];
12452        #[allow(clippy::enum_variant_names)]
12453        enum GeneratedField {
12454            Parent,
12455            PageSize,
12456            PageToken,
12457            __SkipField__,
12458        }
12459        impl<'de> serde::Deserialize<'de> for GeneratedField {
12460            fn deserialize<D>(
12461                deserializer: D,
12462            ) -> std::result::Result<GeneratedField, D::Error>
12463            where
12464                D: serde::Deserializer<'de>,
12465            {
12466                struct GeneratedVisitor;
12467                impl serde::de::Visitor<'_> for GeneratedVisitor {
12468                    type Value = GeneratedField;
12469                    fn expecting(
12470                        &self,
12471                        formatter: &mut std::fmt::Formatter<'_>,
12472                    ) -> std::fmt::Result {
12473                        write!(formatter, "expected one of: {:?}", & FIELDS)
12474                    }
12475                    #[allow(unused_variables)]
12476                    fn visit_str<E>(
12477                        self,
12478                        value: &str,
12479                    ) -> std::result::Result<GeneratedField, E>
12480                    where
12481                        E: serde::de::Error,
12482                    {
12483                        match value {
12484                            "parent" => Ok(GeneratedField::Parent),
12485                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12486                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12487                            _ => Ok(GeneratedField::__SkipField__),
12488                        }
12489                    }
12490                }
12491                deserializer.deserialize_identifier(GeneratedVisitor)
12492            }
12493        }
12494        struct GeneratedVisitor;
12495        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12496            type Value = ListFloatingIpAssociationsRequest;
12497            fn expecting(
12498                &self,
12499                formatter: &mut std::fmt::Formatter<'_>,
12500            ) -> std::fmt::Result {
12501                formatter
12502                    .write_str(
12503                        "struct origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12504                    )
12505            }
12506            fn visit_map<V>(
12507                self,
12508                mut map_: V,
12509            ) -> std::result::Result<ListFloatingIpAssociationsRequest, V::Error>
12510            where
12511                V: serde::de::MapAccess<'de>,
12512            {
12513                let mut parent__ = None;
12514                let mut page_size__ = None;
12515                let mut page_token__ = None;
12516                while let Some(k) = map_.next_key()? {
12517                    match k {
12518                        GeneratedField::Parent => {
12519                            if parent__.is_some() {
12520                                return Err(serde::de::Error::duplicate_field("parent"));
12521                            }
12522                            parent__ = Some(map_.next_value()?);
12523                        }
12524                        GeneratedField::PageSize => {
12525                            if page_size__.is_some() {
12526                                return Err(serde::de::Error::duplicate_field("pageSize"));
12527                            }
12528                            page_size__ = Some(
12529                                map_
12530                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12531                                    .0,
12532                            );
12533                        }
12534                        GeneratedField::PageToken => {
12535                            if page_token__.is_some() {
12536                                return Err(serde::de::Error::duplicate_field("pageToken"));
12537                            }
12538                            page_token__ = Some(map_.next_value()?);
12539                        }
12540                        GeneratedField::__SkipField__ => {
12541                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12542                        }
12543                    }
12544                }
12545                Ok(ListFloatingIpAssociationsRequest {
12546                    parent: parent__.unwrap_or_default(),
12547                    page_size: page_size__.unwrap_or_default(),
12548                    page_token: page_token__.unwrap_or_default(),
12549                })
12550            }
12551        }
12552        deserializer
12553            .deserialize_struct(
12554                "origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12555                FIELDS,
12556                GeneratedVisitor,
12557            )
12558    }
12559}
12560impl serde::Serialize for ListFloatingIpAssociationsResponse {
12561    #[allow(deprecated)]
12562    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12563    where
12564        S: serde::Serializer,
12565    {
12566        use serde::ser::SerializeStruct;
12567        let mut len = 0;
12568        if !self.floating_ip_associations.is_empty() {
12569            len += 1;
12570        }
12571        if !self.next_page_token.is_empty() {
12572            len += 1;
12573        }
12574        let mut struct_ser = serializer
12575            .serialize_struct(
12576                "origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12577                len,
12578            )?;
12579        if !self.floating_ip_associations.is_empty() {
12580            struct_ser
12581                .serialize_field(
12582                    "floatingIpAssociations",
12583                    &self.floating_ip_associations,
12584                )?;
12585        }
12586        if !self.next_page_token.is_empty() {
12587            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12588        }
12589        struct_ser.end()
12590    }
12591}
12592impl<'de> serde::Deserialize<'de> for ListFloatingIpAssociationsResponse {
12593    #[allow(deprecated)]
12594    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12595    where
12596        D: serde::Deserializer<'de>,
12597    {
12598        const FIELDS: &[&str] = &[
12599            "floating_ip_associations",
12600            "floatingIpAssociations",
12601            "next_page_token",
12602            "nextPageToken",
12603        ];
12604        #[allow(clippy::enum_variant_names)]
12605        enum GeneratedField {
12606            FloatingIpAssociations,
12607            NextPageToken,
12608            __SkipField__,
12609        }
12610        impl<'de> serde::Deserialize<'de> for GeneratedField {
12611            fn deserialize<D>(
12612                deserializer: D,
12613            ) -> std::result::Result<GeneratedField, D::Error>
12614            where
12615                D: serde::Deserializer<'de>,
12616            {
12617                struct GeneratedVisitor;
12618                impl serde::de::Visitor<'_> for GeneratedVisitor {
12619                    type Value = GeneratedField;
12620                    fn expecting(
12621                        &self,
12622                        formatter: &mut std::fmt::Formatter<'_>,
12623                    ) -> std::fmt::Result {
12624                        write!(formatter, "expected one of: {:?}", & FIELDS)
12625                    }
12626                    #[allow(unused_variables)]
12627                    fn visit_str<E>(
12628                        self,
12629                        value: &str,
12630                    ) -> std::result::Result<GeneratedField, E>
12631                    where
12632                        E: serde::de::Error,
12633                    {
12634                        match value {
12635                            "floatingIpAssociations" | "floating_ip_associations" => {
12636                                Ok(GeneratedField::FloatingIpAssociations)
12637                            }
12638                            "nextPageToken" | "next_page_token" => {
12639                                Ok(GeneratedField::NextPageToken)
12640                            }
12641                            _ => Ok(GeneratedField::__SkipField__),
12642                        }
12643                    }
12644                }
12645                deserializer.deserialize_identifier(GeneratedVisitor)
12646            }
12647        }
12648        struct GeneratedVisitor;
12649        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12650            type Value = ListFloatingIpAssociationsResponse;
12651            fn expecting(
12652                &self,
12653                formatter: &mut std::fmt::Formatter<'_>,
12654            ) -> std::fmt::Result {
12655                formatter
12656                    .write_str(
12657                        "struct origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12658                    )
12659            }
12660            fn visit_map<V>(
12661                self,
12662                mut map_: V,
12663            ) -> std::result::Result<ListFloatingIpAssociationsResponse, V::Error>
12664            where
12665                V: serde::de::MapAccess<'de>,
12666            {
12667                let mut floating_ip_associations__ = None;
12668                let mut next_page_token__ = None;
12669                while let Some(k) = map_.next_key()? {
12670                    match k {
12671                        GeneratedField::FloatingIpAssociations => {
12672                            if floating_ip_associations__.is_some() {
12673                                return Err(
12674                                    serde::de::Error::duplicate_field("floatingIpAssociations"),
12675                                );
12676                            }
12677                            floating_ip_associations__ = Some(map_.next_value()?);
12678                        }
12679                        GeneratedField::NextPageToken => {
12680                            if next_page_token__.is_some() {
12681                                return Err(
12682                                    serde::de::Error::duplicate_field("nextPageToken"),
12683                                );
12684                            }
12685                            next_page_token__ = Some(map_.next_value()?);
12686                        }
12687                        GeneratedField::__SkipField__ => {
12688                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12689                        }
12690                    }
12691                }
12692                Ok(ListFloatingIpAssociationsResponse {
12693                    floating_ip_associations: floating_ip_associations__
12694                        .unwrap_or_default(),
12695                    next_page_token: next_page_token__.unwrap_or_default(),
12696                })
12697            }
12698        }
12699        deserializer
12700            .deserialize_struct(
12701                "origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12702                FIELDS,
12703                GeneratedVisitor,
12704            )
12705    }
12706}
12707impl serde::Serialize for ListFloatingIpsRequest {
12708    #[allow(deprecated)]
12709    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12710    where
12711        S: serde::Serializer,
12712    {
12713        use serde::ser::SerializeStruct;
12714        let mut len = 0;
12715        if !self.parent.is_empty() {
12716            len += 1;
12717        }
12718        if self.page_size != 0 {
12719            len += 1;
12720        }
12721        if !self.page_token.is_empty() {
12722            len += 1;
12723        }
12724        let mut struct_ser = serializer
12725            .serialize_struct(
12726                "origincloud.network.v1beta1.ListFloatingIpsRequest",
12727                len,
12728            )?;
12729        if !self.parent.is_empty() {
12730            struct_ser.serialize_field("parent", &self.parent)?;
12731        }
12732        if self.page_size != 0 {
12733            struct_ser.serialize_field("pageSize", &self.page_size)?;
12734        }
12735        if !self.page_token.is_empty() {
12736            struct_ser.serialize_field("pageToken", &self.page_token)?;
12737        }
12738        struct_ser.end()
12739    }
12740}
12741impl<'de> serde::Deserialize<'de> for ListFloatingIpsRequest {
12742    #[allow(deprecated)]
12743    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12744    where
12745        D: serde::Deserializer<'de>,
12746    {
12747        const FIELDS: &[&str] = &[
12748            "parent",
12749            "page_size",
12750            "pageSize",
12751            "page_token",
12752            "pageToken",
12753        ];
12754        #[allow(clippy::enum_variant_names)]
12755        enum GeneratedField {
12756            Parent,
12757            PageSize,
12758            PageToken,
12759            __SkipField__,
12760        }
12761        impl<'de> serde::Deserialize<'de> for GeneratedField {
12762            fn deserialize<D>(
12763                deserializer: D,
12764            ) -> std::result::Result<GeneratedField, D::Error>
12765            where
12766                D: serde::Deserializer<'de>,
12767            {
12768                struct GeneratedVisitor;
12769                impl serde::de::Visitor<'_> for GeneratedVisitor {
12770                    type Value = GeneratedField;
12771                    fn expecting(
12772                        &self,
12773                        formatter: &mut std::fmt::Formatter<'_>,
12774                    ) -> std::fmt::Result {
12775                        write!(formatter, "expected one of: {:?}", & FIELDS)
12776                    }
12777                    #[allow(unused_variables)]
12778                    fn visit_str<E>(
12779                        self,
12780                        value: &str,
12781                    ) -> std::result::Result<GeneratedField, E>
12782                    where
12783                        E: serde::de::Error,
12784                    {
12785                        match value {
12786                            "parent" => Ok(GeneratedField::Parent),
12787                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12788                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12789                            _ => Ok(GeneratedField::__SkipField__),
12790                        }
12791                    }
12792                }
12793                deserializer.deserialize_identifier(GeneratedVisitor)
12794            }
12795        }
12796        struct GeneratedVisitor;
12797        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12798            type Value = ListFloatingIpsRequest;
12799            fn expecting(
12800                &self,
12801                formatter: &mut std::fmt::Formatter<'_>,
12802            ) -> std::fmt::Result {
12803                formatter
12804                    .write_str(
12805                        "struct origincloud.network.v1beta1.ListFloatingIpsRequest",
12806                    )
12807            }
12808            fn visit_map<V>(
12809                self,
12810                mut map_: V,
12811            ) -> std::result::Result<ListFloatingIpsRequest, V::Error>
12812            where
12813                V: serde::de::MapAccess<'de>,
12814            {
12815                let mut parent__ = None;
12816                let mut page_size__ = None;
12817                let mut page_token__ = None;
12818                while let Some(k) = map_.next_key()? {
12819                    match k {
12820                        GeneratedField::Parent => {
12821                            if parent__.is_some() {
12822                                return Err(serde::de::Error::duplicate_field("parent"));
12823                            }
12824                            parent__ = Some(map_.next_value()?);
12825                        }
12826                        GeneratedField::PageSize => {
12827                            if page_size__.is_some() {
12828                                return Err(serde::de::Error::duplicate_field("pageSize"));
12829                            }
12830                            page_size__ = Some(
12831                                map_
12832                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12833                                    .0,
12834                            );
12835                        }
12836                        GeneratedField::PageToken => {
12837                            if page_token__.is_some() {
12838                                return Err(serde::de::Error::duplicate_field("pageToken"));
12839                            }
12840                            page_token__ = Some(map_.next_value()?);
12841                        }
12842                        GeneratedField::__SkipField__ => {
12843                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12844                        }
12845                    }
12846                }
12847                Ok(ListFloatingIpsRequest {
12848                    parent: parent__.unwrap_or_default(),
12849                    page_size: page_size__.unwrap_or_default(),
12850                    page_token: page_token__.unwrap_or_default(),
12851                })
12852            }
12853        }
12854        deserializer
12855            .deserialize_struct(
12856                "origincloud.network.v1beta1.ListFloatingIpsRequest",
12857                FIELDS,
12858                GeneratedVisitor,
12859            )
12860    }
12861}
12862impl serde::Serialize for ListFloatingIpsResponse {
12863    #[allow(deprecated)]
12864    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12865    where
12866        S: serde::Serializer,
12867    {
12868        use serde::ser::SerializeStruct;
12869        let mut len = 0;
12870        if !self.floating_ips.is_empty() {
12871            len += 1;
12872        }
12873        if !self.next_page_token.is_empty() {
12874            len += 1;
12875        }
12876        let mut struct_ser = serializer
12877            .serialize_struct(
12878                "origincloud.network.v1beta1.ListFloatingIpsResponse",
12879                len,
12880            )?;
12881        if !self.floating_ips.is_empty() {
12882            struct_ser.serialize_field("floatingIps", &self.floating_ips)?;
12883        }
12884        if !self.next_page_token.is_empty() {
12885            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12886        }
12887        struct_ser.end()
12888    }
12889}
12890impl<'de> serde::Deserialize<'de> for ListFloatingIpsResponse {
12891    #[allow(deprecated)]
12892    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12893    where
12894        D: serde::Deserializer<'de>,
12895    {
12896        const FIELDS: &[&str] = &[
12897            "floating_ips",
12898            "floatingIps",
12899            "next_page_token",
12900            "nextPageToken",
12901        ];
12902        #[allow(clippy::enum_variant_names)]
12903        enum GeneratedField {
12904            FloatingIps,
12905            NextPageToken,
12906            __SkipField__,
12907        }
12908        impl<'de> serde::Deserialize<'de> for GeneratedField {
12909            fn deserialize<D>(
12910                deserializer: D,
12911            ) -> std::result::Result<GeneratedField, D::Error>
12912            where
12913                D: serde::Deserializer<'de>,
12914            {
12915                struct GeneratedVisitor;
12916                impl serde::de::Visitor<'_> for GeneratedVisitor {
12917                    type Value = GeneratedField;
12918                    fn expecting(
12919                        &self,
12920                        formatter: &mut std::fmt::Formatter<'_>,
12921                    ) -> std::fmt::Result {
12922                        write!(formatter, "expected one of: {:?}", & FIELDS)
12923                    }
12924                    #[allow(unused_variables)]
12925                    fn visit_str<E>(
12926                        self,
12927                        value: &str,
12928                    ) -> std::result::Result<GeneratedField, E>
12929                    where
12930                        E: serde::de::Error,
12931                    {
12932                        match value {
12933                            "floatingIps" | "floating_ips" => {
12934                                Ok(GeneratedField::FloatingIps)
12935                            }
12936                            "nextPageToken" | "next_page_token" => {
12937                                Ok(GeneratedField::NextPageToken)
12938                            }
12939                            _ => Ok(GeneratedField::__SkipField__),
12940                        }
12941                    }
12942                }
12943                deserializer.deserialize_identifier(GeneratedVisitor)
12944            }
12945        }
12946        struct GeneratedVisitor;
12947        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12948            type Value = ListFloatingIpsResponse;
12949            fn expecting(
12950                &self,
12951                formatter: &mut std::fmt::Formatter<'_>,
12952            ) -> std::fmt::Result {
12953                formatter
12954                    .write_str(
12955                        "struct origincloud.network.v1beta1.ListFloatingIpsResponse",
12956                    )
12957            }
12958            fn visit_map<V>(
12959                self,
12960                mut map_: V,
12961            ) -> std::result::Result<ListFloatingIpsResponse, V::Error>
12962            where
12963                V: serde::de::MapAccess<'de>,
12964            {
12965                let mut floating_ips__ = None;
12966                let mut next_page_token__ = None;
12967                while let Some(k) = map_.next_key()? {
12968                    match k {
12969                        GeneratedField::FloatingIps => {
12970                            if floating_ips__.is_some() {
12971                                return Err(
12972                                    serde::de::Error::duplicate_field("floatingIps"),
12973                                );
12974                            }
12975                            floating_ips__ = Some(map_.next_value()?);
12976                        }
12977                        GeneratedField::NextPageToken => {
12978                            if next_page_token__.is_some() {
12979                                return Err(
12980                                    serde::de::Error::duplicate_field("nextPageToken"),
12981                                );
12982                            }
12983                            next_page_token__ = Some(map_.next_value()?);
12984                        }
12985                        GeneratedField::__SkipField__ => {
12986                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12987                        }
12988                    }
12989                }
12990                Ok(ListFloatingIpsResponse {
12991                    floating_ips: floating_ips__.unwrap_or_default(),
12992                    next_page_token: next_page_token__.unwrap_or_default(),
12993                })
12994            }
12995        }
12996        deserializer
12997            .deserialize_struct(
12998                "origincloud.network.v1beta1.ListFloatingIpsResponse",
12999                FIELDS,
13000                GeneratedVisitor,
13001            )
13002    }
13003}
13004impl serde::Serialize for ListInternetGatewaysRequest {
13005    #[allow(deprecated)]
13006    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13007    where
13008        S: serde::Serializer,
13009    {
13010        use serde::ser::SerializeStruct;
13011        let mut len = 0;
13012        if !self.parent.is_empty() {
13013            len += 1;
13014        }
13015        if self.page_size != 0 {
13016            len += 1;
13017        }
13018        if !self.page_token.is_empty() {
13019            len += 1;
13020        }
13021        if !self.vpc.is_empty() {
13022            len += 1;
13023        }
13024        let mut struct_ser = serializer
13025            .serialize_struct(
13026                "origincloud.network.v1beta1.ListInternetGatewaysRequest",
13027                len,
13028            )?;
13029        if !self.parent.is_empty() {
13030            struct_ser.serialize_field("parent", &self.parent)?;
13031        }
13032        if self.page_size != 0 {
13033            struct_ser.serialize_field("pageSize", &self.page_size)?;
13034        }
13035        if !self.page_token.is_empty() {
13036            struct_ser.serialize_field("pageToken", &self.page_token)?;
13037        }
13038        if !self.vpc.is_empty() {
13039            struct_ser.serialize_field("vpc", &self.vpc)?;
13040        }
13041        struct_ser.end()
13042    }
13043}
13044impl<'de> serde::Deserialize<'de> for ListInternetGatewaysRequest {
13045    #[allow(deprecated)]
13046    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13047    where
13048        D: serde::Deserializer<'de>,
13049    {
13050        const FIELDS: &[&str] = &[
13051            "parent",
13052            "page_size",
13053            "pageSize",
13054            "page_token",
13055            "pageToken",
13056            "vpc",
13057        ];
13058        #[allow(clippy::enum_variant_names)]
13059        enum GeneratedField {
13060            Parent,
13061            PageSize,
13062            PageToken,
13063            Vpc,
13064            __SkipField__,
13065        }
13066        impl<'de> serde::Deserialize<'de> for GeneratedField {
13067            fn deserialize<D>(
13068                deserializer: D,
13069            ) -> std::result::Result<GeneratedField, D::Error>
13070            where
13071                D: serde::Deserializer<'de>,
13072            {
13073                struct GeneratedVisitor;
13074                impl serde::de::Visitor<'_> for GeneratedVisitor {
13075                    type Value = GeneratedField;
13076                    fn expecting(
13077                        &self,
13078                        formatter: &mut std::fmt::Formatter<'_>,
13079                    ) -> std::fmt::Result {
13080                        write!(formatter, "expected one of: {:?}", & FIELDS)
13081                    }
13082                    #[allow(unused_variables)]
13083                    fn visit_str<E>(
13084                        self,
13085                        value: &str,
13086                    ) -> std::result::Result<GeneratedField, E>
13087                    where
13088                        E: serde::de::Error,
13089                    {
13090                        match value {
13091                            "parent" => Ok(GeneratedField::Parent),
13092                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13093                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13094                            "vpc" => Ok(GeneratedField::Vpc),
13095                            _ => Ok(GeneratedField::__SkipField__),
13096                        }
13097                    }
13098                }
13099                deserializer.deserialize_identifier(GeneratedVisitor)
13100            }
13101        }
13102        struct GeneratedVisitor;
13103        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13104            type Value = ListInternetGatewaysRequest;
13105            fn expecting(
13106                &self,
13107                formatter: &mut std::fmt::Formatter<'_>,
13108            ) -> std::fmt::Result {
13109                formatter
13110                    .write_str(
13111                        "struct origincloud.network.v1beta1.ListInternetGatewaysRequest",
13112                    )
13113            }
13114            fn visit_map<V>(
13115                self,
13116                mut map_: V,
13117            ) -> std::result::Result<ListInternetGatewaysRequest, V::Error>
13118            where
13119                V: serde::de::MapAccess<'de>,
13120            {
13121                let mut parent__ = None;
13122                let mut page_size__ = None;
13123                let mut page_token__ = None;
13124                let mut vpc__ = None;
13125                while let Some(k) = map_.next_key()? {
13126                    match k {
13127                        GeneratedField::Parent => {
13128                            if parent__.is_some() {
13129                                return Err(serde::de::Error::duplicate_field("parent"));
13130                            }
13131                            parent__ = Some(map_.next_value()?);
13132                        }
13133                        GeneratedField::PageSize => {
13134                            if page_size__.is_some() {
13135                                return Err(serde::de::Error::duplicate_field("pageSize"));
13136                            }
13137                            page_size__ = Some(
13138                                map_
13139                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13140                                    .0,
13141                            );
13142                        }
13143                        GeneratedField::PageToken => {
13144                            if page_token__.is_some() {
13145                                return Err(serde::de::Error::duplicate_field("pageToken"));
13146                            }
13147                            page_token__ = Some(map_.next_value()?);
13148                        }
13149                        GeneratedField::Vpc => {
13150                            if vpc__.is_some() {
13151                                return Err(serde::de::Error::duplicate_field("vpc"));
13152                            }
13153                            vpc__ = Some(map_.next_value()?);
13154                        }
13155                        GeneratedField::__SkipField__ => {
13156                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13157                        }
13158                    }
13159                }
13160                Ok(ListInternetGatewaysRequest {
13161                    parent: parent__.unwrap_or_default(),
13162                    page_size: page_size__.unwrap_or_default(),
13163                    page_token: page_token__.unwrap_or_default(),
13164                    vpc: vpc__.unwrap_or_default(),
13165                })
13166            }
13167        }
13168        deserializer
13169            .deserialize_struct(
13170                "origincloud.network.v1beta1.ListInternetGatewaysRequest",
13171                FIELDS,
13172                GeneratedVisitor,
13173            )
13174    }
13175}
13176impl serde::Serialize for ListInternetGatewaysResponse {
13177    #[allow(deprecated)]
13178    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13179    where
13180        S: serde::Serializer,
13181    {
13182        use serde::ser::SerializeStruct;
13183        let mut len = 0;
13184        if !self.internet_gateways.is_empty() {
13185            len += 1;
13186        }
13187        if !self.next_page_token.is_empty() {
13188            len += 1;
13189        }
13190        let mut struct_ser = serializer
13191            .serialize_struct(
13192                "origincloud.network.v1beta1.ListInternetGatewaysResponse",
13193                len,
13194            )?;
13195        if !self.internet_gateways.is_empty() {
13196            struct_ser.serialize_field("internetGateways", &self.internet_gateways)?;
13197        }
13198        if !self.next_page_token.is_empty() {
13199            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13200        }
13201        struct_ser.end()
13202    }
13203}
13204impl<'de> serde::Deserialize<'de> for ListInternetGatewaysResponse {
13205    #[allow(deprecated)]
13206    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13207    where
13208        D: serde::Deserializer<'de>,
13209    {
13210        const FIELDS: &[&str] = &[
13211            "internet_gateways",
13212            "internetGateways",
13213            "next_page_token",
13214            "nextPageToken",
13215        ];
13216        #[allow(clippy::enum_variant_names)]
13217        enum GeneratedField {
13218            InternetGateways,
13219            NextPageToken,
13220            __SkipField__,
13221        }
13222        impl<'de> serde::Deserialize<'de> for GeneratedField {
13223            fn deserialize<D>(
13224                deserializer: D,
13225            ) -> std::result::Result<GeneratedField, D::Error>
13226            where
13227                D: serde::Deserializer<'de>,
13228            {
13229                struct GeneratedVisitor;
13230                impl serde::de::Visitor<'_> for GeneratedVisitor {
13231                    type Value = GeneratedField;
13232                    fn expecting(
13233                        &self,
13234                        formatter: &mut std::fmt::Formatter<'_>,
13235                    ) -> std::fmt::Result {
13236                        write!(formatter, "expected one of: {:?}", & FIELDS)
13237                    }
13238                    #[allow(unused_variables)]
13239                    fn visit_str<E>(
13240                        self,
13241                        value: &str,
13242                    ) -> std::result::Result<GeneratedField, E>
13243                    where
13244                        E: serde::de::Error,
13245                    {
13246                        match value {
13247                            "internetGateways" | "internet_gateways" => {
13248                                Ok(GeneratedField::InternetGateways)
13249                            }
13250                            "nextPageToken" | "next_page_token" => {
13251                                Ok(GeneratedField::NextPageToken)
13252                            }
13253                            _ => Ok(GeneratedField::__SkipField__),
13254                        }
13255                    }
13256                }
13257                deserializer.deserialize_identifier(GeneratedVisitor)
13258            }
13259        }
13260        struct GeneratedVisitor;
13261        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13262            type Value = ListInternetGatewaysResponse;
13263            fn expecting(
13264                &self,
13265                formatter: &mut std::fmt::Formatter<'_>,
13266            ) -> std::fmt::Result {
13267                formatter
13268                    .write_str(
13269                        "struct origincloud.network.v1beta1.ListInternetGatewaysResponse",
13270                    )
13271            }
13272            fn visit_map<V>(
13273                self,
13274                mut map_: V,
13275            ) -> std::result::Result<ListInternetGatewaysResponse, V::Error>
13276            where
13277                V: serde::de::MapAccess<'de>,
13278            {
13279                let mut internet_gateways__ = None;
13280                let mut next_page_token__ = None;
13281                while let Some(k) = map_.next_key()? {
13282                    match k {
13283                        GeneratedField::InternetGateways => {
13284                            if internet_gateways__.is_some() {
13285                                return Err(
13286                                    serde::de::Error::duplicate_field("internetGateways"),
13287                                );
13288                            }
13289                            internet_gateways__ = Some(map_.next_value()?);
13290                        }
13291                        GeneratedField::NextPageToken => {
13292                            if next_page_token__.is_some() {
13293                                return Err(
13294                                    serde::de::Error::duplicate_field("nextPageToken"),
13295                                );
13296                            }
13297                            next_page_token__ = Some(map_.next_value()?);
13298                        }
13299                        GeneratedField::__SkipField__ => {
13300                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13301                        }
13302                    }
13303                }
13304                Ok(ListInternetGatewaysResponse {
13305                    internet_gateways: internet_gateways__.unwrap_or_default(),
13306                    next_page_token: next_page_token__.unwrap_or_default(),
13307                })
13308            }
13309        }
13310        deserializer
13311            .deserialize_struct(
13312                "origincloud.network.v1beta1.ListInternetGatewaysResponse",
13313                FIELDS,
13314                GeneratedVisitor,
13315            )
13316    }
13317}
13318impl serde::Serialize for ListNatGatewaysRequest {
13319    #[allow(deprecated)]
13320    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13321    where
13322        S: serde::Serializer,
13323    {
13324        use serde::ser::SerializeStruct;
13325        let mut len = 0;
13326        if !self.parent.is_empty() {
13327            len += 1;
13328        }
13329        if self.page_size != 0 {
13330            len += 1;
13331        }
13332        if !self.page_token.is_empty() {
13333            len += 1;
13334        }
13335        let mut struct_ser = serializer
13336            .serialize_struct(
13337                "origincloud.network.v1beta1.ListNatGatewaysRequest",
13338                len,
13339            )?;
13340        if !self.parent.is_empty() {
13341            struct_ser.serialize_field("parent", &self.parent)?;
13342        }
13343        if self.page_size != 0 {
13344            struct_ser.serialize_field("pageSize", &self.page_size)?;
13345        }
13346        if !self.page_token.is_empty() {
13347            struct_ser.serialize_field("pageToken", &self.page_token)?;
13348        }
13349        struct_ser.end()
13350    }
13351}
13352impl<'de> serde::Deserialize<'de> for ListNatGatewaysRequest {
13353    #[allow(deprecated)]
13354    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13355    where
13356        D: serde::Deserializer<'de>,
13357    {
13358        const FIELDS: &[&str] = &[
13359            "parent",
13360            "page_size",
13361            "pageSize",
13362            "page_token",
13363            "pageToken",
13364        ];
13365        #[allow(clippy::enum_variant_names)]
13366        enum GeneratedField {
13367            Parent,
13368            PageSize,
13369            PageToken,
13370            __SkipField__,
13371        }
13372        impl<'de> serde::Deserialize<'de> for GeneratedField {
13373            fn deserialize<D>(
13374                deserializer: D,
13375            ) -> std::result::Result<GeneratedField, D::Error>
13376            where
13377                D: serde::Deserializer<'de>,
13378            {
13379                struct GeneratedVisitor;
13380                impl serde::de::Visitor<'_> for GeneratedVisitor {
13381                    type Value = GeneratedField;
13382                    fn expecting(
13383                        &self,
13384                        formatter: &mut std::fmt::Formatter<'_>,
13385                    ) -> std::fmt::Result {
13386                        write!(formatter, "expected one of: {:?}", & FIELDS)
13387                    }
13388                    #[allow(unused_variables)]
13389                    fn visit_str<E>(
13390                        self,
13391                        value: &str,
13392                    ) -> std::result::Result<GeneratedField, E>
13393                    where
13394                        E: serde::de::Error,
13395                    {
13396                        match value {
13397                            "parent" => Ok(GeneratedField::Parent),
13398                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13399                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13400                            _ => Ok(GeneratedField::__SkipField__),
13401                        }
13402                    }
13403                }
13404                deserializer.deserialize_identifier(GeneratedVisitor)
13405            }
13406        }
13407        struct GeneratedVisitor;
13408        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13409            type Value = ListNatGatewaysRequest;
13410            fn expecting(
13411                &self,
13412                formatter: &mut std::fmt::Formatter<'_>,
13413            ) -> std::fmt::Result {
13414                formatter
13415                    .write_str(
13416                        "struct origincloud.network.v1beta1.ListNatGatewaysRequest",
13417                    )
13418            }
13419            fn visit_map<V>(
13420                self,
13421                mut map_: V,
13422            ) -> std::result::Result<ListNatGatewaysRequest, V::Error>
13423            where
13424                V: serde::de::MapAccess<'de>,
13425            {
13426                let mut parent__ = None;
13427                let mut page_size__ = None;
13428                let mut page_token__ = None;
13429                while let Some(k) = map_.next_key()? {
13430                    match k {
13431                        GeneratedField::Parent => {
13432                            if parent__.is_some() {
13433                                return Err(serde::de::Error::duplicate_field("parent"));
13434                            }
13435                            parent__ = Some(map_.next_value()?);
13436                        }
13437                        GeneratedField::PageSize => {
13438                            if page_size__.is_some() {
13439                                return Err(serde::de::Error::duplicate_field("pageSize"));
13440                            }
13441                            page_size__ = Some(
13442                                map_
13443                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13444                                    .0,
13445                            );
13446                        }
13447                        GeneratedField::PageToken => {
13448                            if page_token__.is_some() {
13449                                return Err(serde::de::Error::duplicate_field("pageToken"));
13450                            }
13451                            page_token__ = Some(map_.next_value()?);
13452                        }
13453                        GeneratedField::__SkipField__ => {
13454                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13455                        }
13456                    }
13457                }
13458                Ok(ListNatGatewaysRequest {
13459                    parent: parent__.unwrap_or_default(),
13460                    page_size: page_size__.unwrap_or_default(),
13461                    page_token: page_token__.unwrap_or_default(),
13462                })
13463            }
13464        }
13465        deserializer
13466            .deserialize_struct(
13467                "origincloud.network.v1beta1.ListNatGatewaysRequest",
13468                FIELDS,
13469                GeneratedVisitor,
13470            )
13471    }
13472}
13473impl serde::Serialize for ListNatGatewaysResponse {
13474    #[allow(deprecated)]
13475    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13476    where
13477        S: serde::Serializer,
13478    {
13479        use serde::ser::SerializeStruct;
13480        let mut len = 0;
13481        if !self.nat_gateways.is_empty() {
13482            len += 1;
13483        }
13484        if !self.next_page_token.is_empty() {
13485            len += 1;
13486        }
13487        let mut struct_ser = serializer
13488            .serialize_struct(
13489                "origincloud.network.v1beta1.ListNatGatewaysResponse",
13490                len,
13491            )?;
13492        if !self.nat_gateways.is_empty() {
13493            struct_ser.serialize_field("natGateways", &self.nat_gateways)?;
13494        }
13495        if !self.next_page_token.is_empty() {
13496            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13497        }
13498        struct_ser.end()
13499    }
13500}
13501impl<'de> serde::Deserialize<'de> for ListNatGatewaysResponse {
13502    #[allow(deprecated)]
13503    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13504    where
13505        D: serde::Deserializer<'de>,
13506    {
13507        const FIELDS: &[&str] = &[
13508            "nat_gateways",
13509            "natGateways",
13510            "next_page_token",
13511            "nextPageToken",
13512        ];
13513        #[allow(clippy::enum_variant_names)]
13514        enum GeneratedField {
13515            NatGateways,
13516            NextPageToken,
13517            __SkipField__,
13518        }
13519        impl<'de> serde::Deserialize<'de> for GeneratedField {
13520            fn deserialize<D>(
13521                deserializer: D,
13522            ) -> std::result::Result<GeneratedField, D::Error>
13523            where
13524                D: serde::Deserializer<'de>,
13525            {
13526                struct GeneratedVisitor;
13527                impl serde::de::Visitor<'_> for GeneratedVisitor {
13528                    type Value = GeneratedField;
13529                    fn expecting(
13530                        &self,
13531                        formatter: &mut std::fmt::Formatter<'_>,
13532                    ) -> std::fmt::Result {
13533                        write!(formatter, "expected one of: {:?}", & FIELDS)
13534                    }
13535                    #[allow(unused_variables)]
13536                    fn visit_str<E>(
13537                        self,
13538                        value: &str,
13539                    ) -> std::result::Result<GeneratedField, E>
13540                    where
13541                        E: serde::de::Error,
13542                    {
13543                        match value {
13544                            "natGateways" | "nat_gateways" => {
13545                                Ok(GeneratedField::NatGateways)
13546                            }
13547                            "nextPageToken" | "next_page_token" => {
13548                                Ok(GeneratedField::NextPageToken)
13549                            }
13550                            _ => Ok(GeneratedField::__SkipField__),
13551                        }
13552                    }
13553                }
13554                deserializer.deserialize_identifier(GeneratedVisitor)
13555            }
13556        }
13557        struct GeneratedVisitor;
13558        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13559            type Value = ListNatGatewaysResponse;
13560            fn expecting(
13561                &self,
13562                formatter: &mut std::fmt::Formatter<'_>,
13563            ) -> std::fmt::Result {
13564                formatter
13565                    .write_str(
13566                        "struct origincloud.network.v1beta1.ListNatGatewaysResponse",
13567                    )
13568            }
13569            fn visit_map<V>(
13570                self,
13571                mut map_: V,
13572            ) -> std::result::Result<ListNatGatewaysResponse, V::Error>
13573            where
13574                V: serde::de::MapAccess<'de>,
13575            {
13576                let mut nat_gateways__ = None;
13577                let mut next_page_token__ = None;
13578                while let Some(k) = map_.next_key()? {
13579                    match k {
13580                        GeneratedField::NatGateways => {
13581                            if nat_gateways__.is_some() {
13582                                return Err(
13583                                    serde::de::Error::duplicate_field("natGateways"),
13584                                );
13585                            }
13586                            nat_gateways__ = Some(map_.next_value()?);
13587                        }
13588                        GeneratedField::NextPageToken => {
13589                            if next_page_token__.is_some() {
13590                                return Err(
13591                                    serde::de::Error::duplicate_field("nextPageToken"),
13592                                );
13593                            }
13594                            next_page_token__ = Some(map_.next_value()?);
13595                        }
13596                        GeneratedField::__SkipField__ => {
13597                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13598                        }
13599                    }
13600                }
13601                Ok(ListNatGatewaysResponse {
13602                    nat_gateways: nat_gateways__.unwrap_or_default(),
13603                    next_page_token: next_page_token__.unwrap_or_default(),
13604                })
13605            }
13606        }
13607        deserializer
13608            .deserialize_struct(
13609                "origincloud.network.v1beta1.ListNatGatewaysResponse",
13610                FIELDS,
13611                GeneratedVisitor,
13612            )
13613    }
13614}
13615impl serde::Serialize for ListNetworkInterfacesRequest {
13616    #[allow(deprecated)]
13617    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13618    where
13619        S: serde::Serializer,
13620    {
13621        use serde::ser::SerializeStruct;
13622        let mut len = 0;
13623        if !self.parent.is_empty() {
13624            len += 1;
13625        }
13626        if self.page_size != 0 {
13627            len += 1;
13628        }
13629        if !self.page_token.is_empty() {
13630            len += 1;
13631        }
13632        if !self.subnet.is_empty() {
13633            len += 1;
13634        }
13635        let mut struct_ser = serializer
13636            .serialize_struct(
13637                "origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13638                len,
13639            )?;
13640        if !self.parent.is_empty() {
13641            struct_ser.serialize_field("parent", &self.parent)?;
13642        }
13643        if self.page_size != 0 {
13644            struct_ser.serialize_field("pageSize", &self.page_size)?;
13645        }
13646        if !self.page_token.is_empty() {
13647            struct_ser.serialize_field("pageToken", &self.page_token)?;
13648        }
13649        if !self.subnet.is_empty() {
13650            struct_ser.serialize_field("subnet", &self.subnet)?;
13651        }
13652        struct_ser.end()
13653    }
13654}
13655impl<'de> serde::Deserialize<'de> for ListNetworkInterfacesRequest {
13656    #[allow(deprecated)]
13657    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13658    where
13659        D: serde::Deserializer<'de>,
13660    {
13661        const FIELDS: &[&str] = &[
13662            "parent",
13663            "page_size",
13664            "pageSize",
13665            "page_token",
13666            "pageToken",
13667            "subnet",
13668        ];
13669        #[allow(clippy::enum_variant_names)]
13670        enum GeneratedField {
13671            Parent,
13672            PageSize,
13673            PageToken,
13674            Subnet,
13675            __SkipField__,
13676        }
13677        impl<'de> serde::Deserialize<'de> for GeneratedField {
13678            fn deserialize<D>(
13679                deserializer: D,
13680            ) -> std::result::Result<GeneratedField, D::Error>
13681            where
13682                D: serde::Deserializer<'de>,
13683            {
13684                struct GeneratedVisitor;
13685                impl serde::de::Visitor<'_> for GeneratedVisitor {
13686                    type Value = GeneratedField;
13687                    fn expecting(
13688                        &self,
13689                        formatter: &mut std::fmt::Formatter<'_>,
13690                    ) -> std::fmt::Result {
13691                        write!(formatter, "expected one of: {:?}", & FIELDS)
13692                    }
13693                    #[allow(unused_variables)]
13694                    fn visit_str<E>(
13695                        self,
13696                        value: &str,
13697                    ) -> std::result::Result<GeneratedField, E>
13698                    where
13699                        E: serde::de::Error,
13700                    {
13701                        match value {
13702                            "parent" => Ok(GeneratedField::Parent),
13703                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13704                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13705                            "subnet" => Ok(GeneratedField::Subnet),
13706                            _ => Ok(GeneratedField::__SkipField__),
13707                        }
13708                    }
13709                }
13710                deserializer.deserialize_identifier(GeneratedVisitor)
13711            }
13712        }
13713        struct GeneratedVisitor;
13714        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13715            type Value = ListNetworkInterfacesRequest;
13716            fn expecting(
13717                &self,
13718                formatter: &mut std::fmt::Formatter<'_>,
13719            ) -> std::fmt::Result {
13720                formatter
13721                    .write_str(
13722                        "struct origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13723                    )
13724            }
13725            fn visit_map<V>(
13726                self,
13727                mut map_: V,
13728            ) -> std::result::Result<ListNetworkInterfacesRequest, V::Error>
13729            where
13730                V: serde::de::MapAccess<'de>,
13731            {
13732                let mut parent__ = None;
13733                let mut page_size__ = None;
13734                let mut page_token__ = None;
13735                let mut subnet__ = None;
13736                while let Some(k) = map_.next_key()? {
13737                    match k {
13738                        GeneratedField::Parent => {
13739                            if parent__.is_some() {
13740                                return Err(serde::de::Error::duplicate_field("parent"));
13741                            }
13742                            parent__ = Some(map_.next_value()?);
13743                        }
13744                        GeneratedField::PageSize => {
13745                            if page_size__.is_some() {
13746                                return Err(serde::de::Error::duplicate_field("pageSize"));
13747                            }
13748                            page_size__ = Some(
13749                                map_
13750                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13751                                    .0,
13752                            );
13753                        }
13754                        GeneratedField::PageToken => {
13755                            if page_token__.is_some() {
13756                                return Err(serde::de::Error::duplicate_field("pageToken"));
13757                            }
13758                            page_token__ = Some(map_.next_value()?);
13759                        }
13760                        GeneratedField::Subnet => {
13761                            if subnet__.is_some() {
13762                                return Err(serde::de::Error::duplicate_field("subnet"));
13763                            }
13764                            subnet__ = Some(map_.next_value()?);
13765                        }
13766                        GeneratedField::__SkipField__ => {
13767                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13768                        }
13769                    }
13770                }
13771                Ok(ListNetworkInterfacesRequest {
13772                    parent: parent__.unwrap_or_default(),
13773                    page_size: page_size__.unwrap_or_default(),
13774                    page_token: page_token__.unwrap_or_default(),
13775                    subnet: subnet__.unwrap_or_default(),
13776                })
13777            }
13778        }
13779        deserializer
13780            .deserialize_struct(
13781                "origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13782                FIELDS,
13783                GeneratedVisitor,
13784            )
13785    }
13786}
13787impl serde::Serialize for ListNetworkInterfacesResponse {
13788    #[allow(deprecated)]
13789    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13790    where
13791        S: serde::Serializer,
13792    {
13793        use serde::ser::SerializeStruct;
13794        let mut len = 0;
13795        if !self.network_interfaces.is_empty() {
13796            len += 1;
13797        }
13798        if !self.next_page_token.is_empty() {
13799            len += 1;
13800        }
13801        let mut struct_ser = serializer
13802            .serialize_struct(
13803                "origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13804                len,
13805            )?;
13806        if !self.network_interfaces.is_empty() {
13807            struct_ser.serialize_field("networkInterfaces", &self.network_interfaces)?;
13808        }
13809        if !self.next_page_token.is_empty() {
13810            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13811        }
13812        struct_ser.end()
13813    }
13814}
13815impl<'de> serde::Deserialize<'de> for ListNetworkInterfacesResponse {
13816    #[allow(deprecated)]
13817    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13818    where
13819        D: serde::Deserializer<'de>,
13820    {
13821        const FIELDS: &[&str] = &[
13822            "network_interfaces",
13823            "networkInterfaces",
13824            "next_page_token",
13825            "nextPageToken",
13826        ];
13827        #[allow(clippy::enum_variant_names)]
13828        enum GeneratedField {
13829            NetworkInterfaces,
13830            NextPageToken,
13831            __SkipField__,
13832        }
13833        impl<'de> serde::Deserialize<'de> for GeneratedField {
13834            fn deserialize<D>(
13835                deserializer: D,
13836            ) -> std::result::Result<GeneratedField, D::Error>
13837            where
13838                D: serde::Deserializer<'de>,
13839            {
13840                struct GeneratedVisitor;
13841                impl serde::de::Visitor<'_> for GeneratedVisitor {
13842                    type Value = GeneratedField;
13843                    fn expecting(
13844                        &self,
13845                        formatter: &mut std::fmt::Formatter<'_>,
13846                    ) -> std::fmt::Result {
13847                        write!(formatter, "expected one of: {:?}", & FIELDS)
13848                    }
13849                    #[allow(unused_variables)]
13850                    fn visit_str<E>(
13851                        self,
13852                        value: &str,
13853                    ) -> std::result::Result<GeneratedField, E>
13854                    where
13855                        E: serde::de::Error,
13856                    {
13857                        match value {
13858                            "networkInterfaces" | "network_interfaces" => {
13859                                Ok(GeneratedField::NetworkInterfaces)
13860                            }
13861                            "nextPageToken" | "next_page_token" => {
13862                                Ok(GeneratedField::NextPageToken)
13863                            }
13864                            _ => Ok(GeneratedField::__SkipField__),
13865                        }
13866                    }
13867                }
13868                deserializer.deserialize_identifier(GeneratedVisitor)
13869            }
13870        }
13871        struct GeneratedVisitor;
13872        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13873            type Value = ListNetworkInterfacesResponse;
13874            fn expecting(
13875                &self,
13876                formatter: &mut std::fmt::Formatter<'_>,
13877            ) -> std::fmt::Result {
13878                formatter
13879                    .write_str(
13880                        "struct origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13881                    )
13882            }
13883            fn visit_map<V>(
13884                self,
13885                mut map_: V,
13886            ) -> std::result::Result<ListNetworkInterfacesResponse, V::Error>
13887            where
13888                V: serde::de::MapAccess<'de>,
13889            {
13890                let mut network_interfaces__ = None;
13891                let mut next_page_token__ = None;
13892                while let Some(k) = map_.next_key()? {
13893                    match k {
13894                        GeneratedField::NetworkInterfaces => {
13895                            if network_interfaces__.is_some() {
13896                                return Err(
13897                                    serde::de::Error::duplicate_field("networkInterfaces"),
13898                                );
13899                            }
13900                            network_interfaces__ = Some(map_.next_value()?);
13901                        }
13902                        GeneratedField::NextPageToken => {
13903                            if next_page_token__.is_some() {
13904                                return Err(
13905                                    serde::de::Error::duplicate_field("nextPageToken"),
13906                                );
13907                            }
13908                            next_page_token__ = Some(map_.next_value()?);
13909                        }
13910                        GeneratedField::__SkipField__ => {
13911                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13912                        }
13913                    }
13914                }
13915                Ok(ListNetworkInterfacesResponse {
13916                    network_interfaces: network_interfaces__.unwrap_or_default(),
13917                    next_page_token: next_page_token__.unwrap_or_default(),
13918                })
13919            }
13920        }
13921        deserializer
13922            .deserialize_struct(
13923                "origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13924                FIELDS,
13925                GeneratedVisitor,
13926            )
13927    }
13928}
13929impl serde::Serialize for ListRouteTableAssociationsRequest {
13930    #[allow(deprecated)]
13931    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13932    where
13933        S: serde::Serializer,
13934    {
13935        use serde::ser::SerializeStruct;
13936        let mut len = 0;
13937        if !self.parent.is_empty() {
13938            len += 1;
13939        }
13940        if self.page_size != 0 {
13941            len += 1;
13942        }
13943        if !self.page_token.is_empty() {
13944            len += 1;
13945        }
13946        let mut struct_ser = serializer
13947            .serialize_struct(
13948                "origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
13949                len,
13950            )?;
13951        if !self.parent.is_empty() {
13952            struct_ser.serialize_field("parent", &self.parent)?;
13953        }
13954        if self.page_size != 0 {
13955            struct_ser.serialize_field("pageSize", &self.page_size)?;
13956        }
13957        if !self.page_token.is_empty() {
13958            struct_ser.serialize_field("pageToken", &self.page_token)?;
13959        }
13960        struct_ser.end()
13961    }
13962}
13963impl<'de> serde::Deserialize<'de> for ListRouteTableAssociationsRequest {
13964    #[allow(deprecated)]
13965    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13966    where
13967        D: serde::Deserializer<'de>,
13968    {
13969        const FIELDS: &[&str] = &[
13970            "parent",
13971            "page_size",
13972            "pageSize",
13973            "page_token",
13974            "pageToken",
13975        ];
13976        #[allow(clippy::enum_variant_names)]
13977        enum GeneratedField {
13978            Parent,
13979            PageSize,
13980            PageToken,
13981            __SkipField__,
13982        }
13983        impl<'de> serde::Deserialize<'de> for GeneratedField {
13984            fn deserialize<D>(
13985                deserializer: D,
13986            ) -> std::result::Result<GeneratedField, D::Error>
13987            where
13988                D: serde::Deserializer<'de>,
13989            {
13990                struct GeneratedVisitor;
13991                impl serde::de::Visitor<'_> for GeneratedVisitor {
13992                    type Value = GeneratedField;
13993                    fn expecting(
13994                        &self,
13995                        formatter: &mut std::fmt::Formatter<'_>,
13996                    ) -> std::fmt::Result {
13997                        write!(formatter, "expected one of: {:?}", & FIELDS)
13998                    }
13999                    #[allow(unused_variables)]
14000                    fn visit_str<E>(
14001                        self,
14002                        value: &str,
14003                    ) -> std::result::Result<GeneratedField, E>
14004                    where
14005                        E: serde::de::Error,
14006                    {
14007                        match value {
14008                            "parent" => Ok(GeneratedField::Parent),
14009                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14010                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14011                            _ => Ok(GeneratedField::__SkipField__),
14012                        }
14013                    }
14014                }
14015                deserializer.deserialize_identifier(GeneratedVisitor)
14016            }
14017        }
14018        struct GeneratedVisitor;
14019        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14020            type Value = ListRouteTableAssociationsRequest;
14021            fn expecting(
14022                &self,
14023                formatter: &mut std::fmt::Formatter<'_>,
14024            ) -> std::fmt::Result {
14025                formatter
14026                    .write_str(
14027                        "struct origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
14028                    )
14029            }
14030            fn visit_map<V>(
14031                self,
14032                mut map_: V,
14033            ) -> std::result::Result<ListRouteTableAssociationsRequest, V::Error>
14034            where
14035                V: serde::de::MapAccess<'de>,
14036            {
14037                let mut parent__ = None;
14038                let mut page_size__ = None;
14039                let mut page_token__ = None;
14040                while let Some(k) = map_.next_key()? {
14041                    match k {
14042                        GeneratedField::Parent => {
14043                            if parent__.is_some() {
14044                                return Err(serde::de::Error::duplicate_field("parent"));
14045                            }
14046                            parent__ = Some(map_.next_value()?);
14047                        }
14048                        GeneratedField::PageSize => {
14049                            if page_size__.is_some() {
14050                                return Err(serde::de::Error::duplicate_field("pageSize"));
14051                            }
14052                            page_size__ = Some(
14053                                map_
14054                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14055                                    .0,
14056                            );
14057                        }
14058                        GeneratedField::PageToken => {
14059                            if page_token__.is_some() {
14060                                return Err(serde::de::Error::duplicate_field("pageToken"));
14061                            }
14062                            page_token__ = Some(map_.next_value()?);
14063                        }
14064                        GeneratedField::__SkipField__ => {
14065                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14066                        }
14067                    }
14068                }
14069                Ok(ListRouteTableAssociationsRequest {
14070                    parent: parent__.unwrap_or_default(),
14071                    page_size: page_size__.unwrap_or_default(),
14072                    page_token: page_token__.unwrap_or_default(),
14073                })
14074            }
14075        }
14076        deserializer
14077            .deserialize_struct(
14078                "origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
14079                FIELDS,
14080                GeneratedVisitor,
14081            )
14082    }
14083}
14084impl serde::Serialize for ListRouteTableAssociationsResponse {
14085    #[allow(deprecated)]
14086    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14087    where
14088        S: serde::Serializer,
14089    {
14090        use serde::ser::SerializeStruct;
14091        let mut len = 0;
14092        if !self.route_table_associations.is_empty() {
14093            len += 1;
14094        }
14095        if !self.next_page_token.is_empty() {
14096            len += 1;
14097        }
14098        let mut struct_ser = serializer
14099            .serialize_struct(
14100                "origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14101                len,
14102            )?;
14103        if !self.route_table_associations.is_empty() {
14104            struct_ser
14105                .serialize_field(
14106                    "routeTableAssociations",
14107                    &self.route_table_associations,
14108                )?;
14109        }
14110        if !self.next_page_token.is_empty() {
14111            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14112        }
14113        struct_ser.end()
14114    }
14115}
14116impl<'de> serde::Deserialize<'de> for ListRouteTableAssociationsResponse {
14117    #[allow(deprecated)]
14118    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14119    where
14120        D: serde::Deserializer<'de>,
14121    {
14122        const FIELDS: &[&str] = &[
14123            "route_table_associations",
14124            "routeTableAssociations",
14125            "next_page_token",
14126            "nextPageToken",
14127        ];
14128        #[allow(clippy::enum_variant_names)]
14129        enum GeneratedField {
14130            RouteTableAssociations,
14131            NextPageToken,
14132            __SkipField__,
14133        }
14134        impl<'de> serde::Deserialize<'de> for GeneratedField {
14135            fn deserialize<D>(
14136                deserializer: D,
14137            ) -> std::result::Result<GeneratedField, D::Error>
14138            where
14139                D: serde::Deserializer<'de>,
14140            {
14141                struct GeneratedVisitor;
14142                impl serde::de::Visitor<'_> for GeneratedVisitor {
14143                    type Value = GeneratedField;
14144                    fn expecting(
14145                        &self,
14146                        formatter: &mut std::fmt::Formatter<'_>,
14147                    ) -> std::fmt::Result {
14148                        write!(formatter, "expected one of: {:?}", & FIELDS)
14149                    }
14150                    #[allow(unused_variables)]
14151                    fn visit_str<E>(
14152                        self,
14153                        value: &str,
14154                    ) -> std::result::Result<GeneratedField, E>
14155                    where
14156                        E: serde::de::Error,
14157                    {
14158                        match value {
14159                            "routeTableAssociations" | "route_table_associations" => {
14160                                Ok(GeneratedField::RouteTableAssociations)
14161                            }
14162                            "nextPageToken" | "next_page_token" => {
14163                                Ok(GeneratedField::NextPageToken)
14164                            }
14165                            _ => Ok(GeneratedField::__SkipField__),
14166                        }
14167                    }
14168                }
14169                deserializer.deserialize_identifier(GeneratedVisitor)
14170            }
14171        }
14172        struct GeneratedVisitor;
14173        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14174            type Value = ListRouteTableAssociationsResponse;
14175            fn expecting(
14176                &self,
14177                formatter: &mut std::fmt::Formatter<'_>,
14178            ) -> std::fmt::Result {
14179                formatter
14180                    .write_str(
14181                        "struct origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14182                    )
14183            }
14184            fn visit_map<V>(
14185                self,
14186                mut map_: V,
14187            ) -> std::result::Result<ListRouteTableAssociationsResponse, V::Error>
14188            where
14189                V: serde::de::MapAccess<'de>,
14190            {
14191                let mut route_table_associations__ = None;
14192                let mut next_page_token__ = None;
14193                while let Some(k) = map_.next_key()? {
14194                    match k {
14195                        GeneratedField::RouteTableAssociations => {
14196                            if route_table_associations__.is_some() {
14197                                return Err(
14198                                    serde::de::Error::duplicate_field("routeTableAssociations"),
14199                                );
14200                            }
14201                            route_table_associations__ = Some(map_.next_value()?);
14202                        }
14203                        GeneratedField::NextPageToken => {
14204                            if next_page_token__.is_some() {
14205                                return Err(
14206                                    serde::de::Error::duplicate_field("nextPageToken"),
14207                                );
14208                            }
14209                            next_page_token__ = Some(map_.next_value()?);
14210                        }
14211                        GeneratedField::__SkipField__ => {
14212                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14213                        }
14214                    }
14215                }
14216                Ok(ListRouteTableAssociationsResponse {
14217                    route_table_associations: route_table_associations__
14218                        .unwrap_or_default(),
14219                    next_page_token: next_page_token__.unwrap_or_default(),
14220                })
14221            }
14222        }
14223        deserializer
14224            .deserialize_struct(
14225                "origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14226                FIELDS,
14227                GeneratedVisitor,
14228            )
14229    }
14230}
14231impl serde::Serialize for ListRouteTablesRequest {
14232    #[allow(deprecated)]
14233    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14234    where
14235        S: serde::Serializer,
14236    {
14237        use serde::ser::SerializeStruct;
14238        let mut len = 0;
14239        if !self.parent.is_empty() {
14240            len += 1;
14241        }
14242        if self.page_size != 0 {
14243            len += 1;
14244        }
14245        if !self.page_token.is_empty() {
14246            len += 1;
14247        }
14248        if !self.vpc.is_empty() {
14249            len += 1;
14250        }
14251        let mut struct_ser = serializer
14252            .serialize_struct(
14253                "origincloud.network.v1beta1.ListRouteTablesRequest",
14254                len,
14255            )?;
14256        if !self.parent.is_empty() {
14257            struct_ser.serialize_field("parent", &self.parent)?;
14258        }
14259        if self.page_size != 0 {
14260            struct_ser.serialize_field("pageSize", &self.page_size)?;
14261        }
14262        if !self.page_token.is_empty() {
14263            struct_ser.serialize_field("pageToken", &self.page_token)?;
14264        }
14265        if !self.vpc.is_empty() {
14266            struct_ser.serialize_field("vpc", &self.vpc)?;
14267        }
14268        struct_ser.end()
14269    }
14270}
14271impl<'de> serde::Deserialize<'de> for ListRouteTablesRequest {
14272    #[allow(deprecated)]
14273    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14274    where
14275        D: serde::Deserializer<'de>,
14276    {
14277        const FIELDS: &[&str] = &[
14278            "parent",
14279            "page_size",
14280            "pageSize",
14281            "page_token",
14282            "pageToken",
14283            "vpc",
14284        ];
14285        #[allow(clippy::enum_variant_names)]
14286        enum GeneratedField {
14287            Parent,
14288            PageSize,
14289            PageToken,
14290            Vpc,
14291            __SkipField__,
14292        }
14293        impl<'de> serde::Deserialize<'de> for GeneratedField {
14294            fn deserialize<D>(
14295                deserializer: D,
14296            ) -> std::result::Result<GeneratedField, D::Error>
14297            where
14298                D: serde::Deserializer<'de>,
14299            {
14300                struct GeneratedVisitor;
14301                impl serde::de::Visitor<'_> for GeneratedVisitor {
14302                    type Value = GeneratedField;
14303                    fn expecting(
14304                        &self,
14305                        formatter: &mut std::fmt::Formatter<'_>,
14306                    ) -> std::fmt::Result {
14307                        write!(formatter, "expected one of: {:?}", & FIELDS)
14308                    }
14309                    #[allow(unused_variables)]
14310                    fn visit_str<E>(
14311                        self,
14312                        value: &str,
14313                    ) -> std::result::Result<GeneratedField, E>
14314                    where
14315                        E: serde::de::Error,
14316                    {
14317                        match value {
14318                            "parent" => Ok(GeneratedField::Parent),
14319                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14320                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14321                            "vpc" => Ok(GeneratedField::Vpc),
14322                            _ => Ok(GeneratedField::__SkipField__),
14323                        }
14324                    }
14325                }
14326                deserializer.deserialize_identifier(GeneratedVisitor)
14327            }
14328        }
14329        struct GeneratedVisitor;
14330        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14331            type Value = ListRouteTablesRequest;
14332            fn expecting(
14333                &self,
14334                formatter: &mut std::fmt::Formatter<'_>,
14335            ) -> std::fmt::Result {
14336                formatter
14337                    .write_str(
14338                        "struct origincloud.network.v1beta1.ListRouteTablesRequest",
14339                    )
14340            }
14341            fn visit_map<V>(
14342                self,
14343                mut map_: V,
14344            ) -> std::result::Result<ListRouteTablesRequest, V::Error>
14345            where
14346                V: serde::de::MapAccess<'de>,
14347            {
14348                let mut parent__ = None;
14349                let mut page_size__ = None;
14350                let mut page_token__ = None;
14351                let mut vpc__ = None;
14352                while let Some(k) = map_.next_key()? {
14353                    match k {
14354                        GeneratedField::Parent => {
14355                            if parent__.is_some() {
14356                                return Err(serde::de::Error::duplicate_field("parent"));
14357                            }
14358                            parent__ = Some(map_.next_value()?);
14359                        }
14360                        GeneratedField::PageSize => {
14361                            if page_size__.is_some() {
14362                                return Err(serde::de::Error::duplicate_field("pageSize"));
14363                            }
14364                            page_size__ = Some(
14365                                map_
14366                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14367                                    .0,
14368                            );
14369                        }
14370                        GeneratedField::PageToken => {
14371                            if page_token__.is_some() {
14372                                return Err(serde::de::Error::duplicate_field("pageToken"));
14373                            }
14374                            page_token__ = Some(map_.next_value()?);
14375                        }
14376                        GeneratedField::Vpc => {
14377                            if vpc__.is_some() {
14378                                return Err(serde::de::Error::duplicate_field("vpc"));
14379                            }
14380                            vpc__ = Some(map_.next_value()?);
14381                        }
14382                        GeneratedField::__SkipField__ => {
14383                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14384                        }
14385                    }
14386                }
14387                Ok(ListRouteTablesRequest {
14388                    parent: parent__.unwrap_or_default(),
14389                    page_size: page_size__.unwrap_or_default(),
14390                    page_token: page_token__.unwrap_or_default(),
14391                    vpc: vpc__.unwrap_or_default(),
14392                })
14393            }
14394        }
14395        deserializer
14396            .deserialize_struct(
14397                "origincloud.network.v1beta1.ListRouteTablesRequest",
14398                FIELDS,
14399                GeneratedVisitor,
14400            )
14401    }
14402}
14403impl serde::Serialize for ListRouteTablesResponse {
14404    #[allow(deprecated)]
14405    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14406    where
14407        S: serde::Serializer,
14408    {
14409        use serde::ser::SerializeStruct;
14410        let mut len = 0;
14411        if !self.route_tables.is_empty() {
14412            len += 1;
14413        }
14414        if !self.next_page_token.is_empty() {
14415            len += 1;
14416        }
14417        let mut struct_ser = serializer
14418            .serialize_struct(
14419                "origincloud.network.v1beta1.ListRouteTablesResponse",
14420                len,
14421            )?;
14422        if !self.route_tables.is_empty() {
14423            struct_ser.serialize_field("routeTables", &self.route_tables)?;
14424        }
14425        if !self.next_page_token.is_empty() {
14426            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14427        }
14428        struct_ser.end()
14429    }
14430}
14431impl<'de> serde::Deserialize<'de> for ListRouteTablesResponse {
14432    #[allow(deprecated)]
14433    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14434    where
14435        D: serde::Deserializer<'de>,
14436    {
14437        const FIELDS: &[&str] = &[
14438            "route_tables",
14439            "routeTables",
14440            "next_page_token",
14441            "nextPageToken",
14442        ];
14443        #[allow(clippy::enum_variant_names)]
14444        enum GeneratedField {
14445            RouteTables,
14446            NextPageToken,
14447            __SkipField__,
14448        }
14449        impl<'de> serde::Deserialize<'de> for GeneratedField {
14450            fn deserialize<D>(
14451                deserializer: D,
14452            ) -> std::result::Result<GeneratedField, D::Error>
14453            where
14454                D: serde::Deserializer<'de>,
14455            {
14456                struct GeneratedVisitor;
14457                impl serde::de::Visitor<'_> for GeneratedVisitor {
14458                    type Value = GeneratedField;
14459                    fn expecting(
14460                        &self,
14461                        formatter: &mut std::fmt::Formatter<'_>,
14462                    ) -> std::fmt::Result {
14463                        write!(formatter, "expected one of: {:?}", & FIELDS)
14464                    }
14465                    #[allow(unused_variables)]
14466                    fn visit_str<E>(
14467                        self,
14468                        value: &str,
14469                    ) -> std::result::Result<GeneratedField, E>
14470                    where
14471                        E: serde::de::Error,
14472                    {
14473                        match value {
14474                            "routeTables" | "route_tables" => {
14475                                Ok(GeneratedField::RouteTables)
14476                            }
14477                            "nextPageToken" | "next_page_token" => {
14478                                Ok(GeneratedField::NextPageToken)
14479                            }
14480                            _ => Ok(GeneratedField::__SkipField__),
14481                        }
14482                    }
14483                }
14484                deserializer.deserialize_identifier(GeneratedVisitor)
14485            }
14486        }
14487        struct GeneratedVisitor;
14488        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14489            type Value = ListRouteTablesResponse;
14490            fn expecting(
14491                &self,
14492                formatter: &mut std::fmt::Formatter<'_>,
14493            ) -> std::fmt::Result {
14494                formatter
14495                    .write_str(
14496                        "struct origincloud.network.v1beta1.ListRouteTablesResponse",
14497                    )
14498            }
14499            fn visit_map<V>(
14500                self,
14501                mut map_: V,
14502            ) -> std::result::Result<ListRouteTablesResponse, V::Error>
14503            where
14504                V: serde::de::MapAccess<'de>,
14505            {
14506                let mut route_tables__ = None;
14507                let mut next_page_token__ = None;
14508                while let Some(k) = map_.next_key()? {
14509                    match k {
14510                        GeneratedField::RouteTables => {
14511                            if route_tables__.is_some() {
14512                                return Err(
14513                                    serde::de::Error::duplicate_field("routeTables"),
14514                                );
14515                            }
14516                            route_tables__ = Some(map_.next_value()?);
14517                        }
14518                        GeneratedField::NextPageToken => {
14519                            if next_page_token__.is_some() {
14520                                return Err(
14521                                    serde::de::Error::duplicate_field("nextPageToken"),
14522                                );
14523                            }
14524                            next_page_token__ = Some(map_.next_value()?);
14525                        }
14526                        GeneratedField::__SkipField__ => {
14527                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14528                        }
14529                    }
14530                }
14531                Ok(ListRouteTablesResponse {
14532                    route_tables: route_tables__.unwrap_or_default(),
14533                    next_page_token: next_page_token__.unwrap_or_default(),
14534                })
14535            }
14536        }
14537        deserializer
14538            .deserialize_struct(
14539                "origincloud.network.v1beta1.ListRouteTablesResponse",
14540                FIELDS,
14541                GeneratedVisitor,
14542            )
14543    }
14544}
14545impl serde::Serialize for ListRoutesRequest {
14546    #[allow(deprecated)]
14547    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14548    where
14549        S: serde::Serializer,
14550    {
14551        use serde::ser::SerializeStruct;
14552        let mut len = 0;
14553        if !self.parent.is_empty() {
14554            len += 1;
14555        }
14556        if self.page_size != 0 {
14557            len += 1;
14558        }
14559        if !self.page_token.is_empty() {
14560            len += 1;
14561        }
14562        let mut struct_ser = serializer
14563            .serialize_struct("origincloud.network.v1beta1.ListRoutesRequest", len)?;
14564        if !self.parent.is_empty() {
14565            struct_ser.serialize_field("parent", &self.parent)?;
14566        }
14567        if self.page_size != 0 {
14568            struct_ser.serialize_field("pageSize", &self.page_size)?;
14569        }
14570        if !self.page_token.is_empty() {
14571            struct_ser.serialize_field("pageToken", &self.page_token)?;
14572        }
14573        struct_ser.end()
14574    }
14575}
14576impl<'de> serde::Deserialize<'de> for ListRoutesRequest {
14577    #[allow(deprecated)]
14578    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14579    where
14580        D: serde::Deserializer<'de>,
14581    {
14582        const FIELDS: &[&str] = &[
14583            "parent",
14584            "page_size",
14585            "pageSize",
14586            "page_token",
14587            "pageToken",
14588        ];
14589        #[allow(clippy::enum_variant_names)]
14590        enum GeneratedField {
14591            Parent,
14592            PageSize,
14593            PageToken,
14594            __SkipField__,
14595        }
14596        impl<'de> serde::Deserialize<'de> for GeneratedField {
14597            fn deserialize<D>(
14598                deserializer: D,
14599            ) -> std::result::Result<GeneratedField, D::Error>
14600            where
14601                D: serde::Deserializer<'de>,
14602            {
14603                struct GeneratedVisitor;
14604                impl serde::de::Visitor<'_> for GeneratedVisitor {
14605                    type Value = GeneratedField;
14606                    fn expecting(
14607                        &self,
14608                        formatter: &mut std::fmt::Formatter<'_>,
14609                    ) -> std::fmt::Result {
14610                        write!(formatter, "expected one of: {:?}", & FIELDS)
14611                    }
14612                    #[allow(unused_variables)]
14613                    fn visit_str<E>(
14614                        self,
14615                        value: &str,
14616                    ) -> std::result::Result<GeneratedField, E>
14617                    where
14618                        E: serde::de::Error,
14619                    {
14620                        match value {
14621                            "parent" => Ok(GeneratedField::Parent),
14622                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14623                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14624                            _ => Ok(GeneratedField::__SkipField__),
14625                        }
14626                    }
14627                }
14628                deserializer.deserialize_identifier(GeneratedVisitor)
14629            }
14630        }
14631        struct GeneratedVisitor;
14632        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14633            type Value = ListRoutesRequest;
14634            fn expecting(
14635                &self,
14636                formatter: &mut std::fmt::Formatter<'_>,
14637            ) -> std::fmt::Result {
14638                formatter
14639                    .write_str("struct origincloud.network.v1beta1.ListRoutesRequest")
14640            }
14641            fn visit_map<V>(
14642                self,
14643                mut map_: V,
14644            ) -> std::result::Result<ListRoutesRequest, V::Error>
14645            where
14646                V: serde::de::MapAccess<'de>,
14647            {
14648                let mut parent__ = None;
14649                let mut page_size__ = None;
14650                let mut page_token__ = None;
14651                while let Some(k) = map_.next_key()? {
14652                    match k {
14653                        GeneratedField::Parent => {
14654                            if parent__.is_some() {
14655                                return Err(serde::de::Error::duplicate_field("parent"));
14656                            }
14657                            parent__ = Some(map_.next_value()?);
14658                        }
14659                        GeneratedField::PageSize => {
14660                            if page_size__.is_some() {
14661                                return Err(serde::de::Error::duplicate_field("pageSize"));
14662                            }
14663                            page_size__ = Some(
14664                                map_
14665                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14666                                    .0,
14667                            );
14668                        }
14669                        GeneratedField::PageToken => {
14670                            if page_token__.is_some() {
14671                                return Err(serde::de::Error::duplicate_field("pageToken"));
14672                            }
14673                            page_token__ = Some(map_.next_value()?);
14674                        }
14675                        GeneratedField::__SkipField__ => {
14676                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14677                        }
14678                    }
14679                }
14680                Ok(ListRoutesRequest {
14681                    parent: parent__.unwrap_or_default(),
14682                    page_size: page_size__.unwrap_or_default(),
14683                    page_token: page_token__.unwrap_or_default(),
14684                })
14685            }
14686        }
14687        deserializer
14688            .deserialize_struct(
14689                "origincloud.network.v1beta1.ListRoutesRequest",
14690                FIELDS,
14691                GeneratedVisitor,
14692            )
14693    }
14694}
14695impl serde::Serialize for ListRoutesResponse {
14696    #[allow(deprecated)]
14697    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14698    where
14699        S: serde::Serializer,
14700    {
14701        use serde::ser::SerializeStruct;
14702        let mut len = 0;
14703        if !self.routes.is_empty() {
14704            len += 1;
14705        }
14706        if !self.next_page_token.is_empty() {
14707            len += 1;
14708        }
14709        let mut struct_ser = serializer
14710            .serialize_struct("origincloud.network.v1beta1.ListRoutesResponse", len)?;
14711        if !self.routes.is_empty() {
14712            struct_ser.serialize_field("routes", &self.routes)?;
14713        }
14714        if !self.next_page_token.is_empty() {
14715            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14716        }
14717        struct_ser.end()
14718    }
14719}
14720impl<'de> serde::Deserialize<'de> for ListRoutesResponse {
14721    #[allow(deprecated)]
14722    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14723    where
14724        D: serde::Deserializer<'de>,
14725    {
14726        const FIELDS: &[&str] = &["routes", "next_page_token", "nextPageToken"];
14727        #[allow(clippy::enum_variant_names)]
14728        enum GeneratedField {
14729            Routes,
14730            NextPageToken,
14731            __SkipField__,
14732        }
14733        impl<'de> serde::Deserialize<'de> for GeneratedField {
14734            fn deserialize<D>(
14735                deserializer: D,
14736            ) -> std::result::Result<GeneratedField, D::Error>
14737            where
14738                D: serde::Deserializer<'de>,
14739            {
14740                struct GeneratedVisitor;
14741                impl serde::de::Visitor<'_> for GeneratedVisitor {
14742                    type Value = GeneratedField;
14743                    fn expecting(
14744                        &self,
14745                        formatter: &mut std::fmt::Formatter<'_>,
14746                    ) -> std::fmt::Result {
14747                        write!(formatter, "expected one of: {:?}", & FIELDS)
14748                    }
14749                    #[allow(unused_variables)]
14750                    fn visit_str<E>(
14751                        self,
14752                        value: &str,
14753                    ) -> std::result::Result<GeneratedField, E>
14754                    where
14755                        E: serde::de::Error,
14756                    {
14757                        match value {
14758                            "routes" => Ok(GeneratedField::Routes),
14759                            "nextPageToken" | "next_page_token" => {
14760                                Ok(GeneratedField::NextPageToken)
14761                            }
14762                            _ => Ok(GeneratedField::__SkipField__),
14763                        }
14764                    }
14765                }
14766                deserializer.deserialize_identifier(GeneratedVisitor)
14767            }
14768        }
14769        struct GeneratedVisitor;
14770        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14771            type Value = ListRoutesResponse;
14772            fn expecting(
14773                &self,
14774                formatter: &mut std::fmt::Formatter<'_>,
14775            ) -> std::fmt::Result {
14776                formatter
14777                    .write_str("struct origincloud.network.v1beta1.ListRoutesResponse")
14778            }
14779            fn visit_map<V>(
14780                self,
14781                mut map_: V,
14782            ) -> std::result::Result<ListRoutesResponse, V::Error>
14783            where
14784                V: serde::de::MapAccess<'de>,
14785            {
14786                let mut routes__ = None;
14787                let mut next_page_token__ = None;
14788                while let Some(k) = map_.next_key()? {
14789                    match k {
14790                        GeneratedField::Routes => {
14791                            if routes__.is_some() {
14792                                return Err(serde::de::Error::duplicate_field("routes"));
14793                            }
14794                            routes__ = Some(map_.next_value()?);
14795                        }
14796                        GeneratedField::NextPageToken => {
14797                            if next_page_token__.is_some() {
14798                                return Err(
14799                                    serde::de::Error::duplicate_field("nextPageToken"),
14800                                );
14801                            }
14802                            next_page_token__ = Some(map_.next_value()?);
14803                        }
14804                        GeneratedField::__SkipField__ => {
14805                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14806                        }
14807                    }
14808                }
14809                Ok(ListRoutesResponse {
14810                    routes: routes__.unwrap_or_default(),
14811                    next_page_token: next_page_token__.unwrap_or_default(),
14812                })
14813            }
14814        }
14815        deserializer
14816            .deserialize_struct(
14817                "origincloud.network.v1beta1.ListRoutesResponse",
14818                FIELDS,
14819                GeneratedVisitor,
14820            )
14821    }
14822}
14823impl serde::Serialize for ListSecurityGroupAssociationsRequest {
14824    #[allow(deprecated)]
14825    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14826    where
14827        S: serde::Serializer,
14828    {
14829        use serde::ser::SerializeStruct;
14830        let mut len = 0;
14831        if !self.parent.is_empty() {
14832            len += 1;
14833        }
14834        if self.page_size != 0 {
14835            len += 1;
14836        }
14837        if !self.page_token.is_empty() {
14838            len += 1;
14839        }
14840        let mut struct_ser = serializer
14841            .serialize_struct(
14842                "origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14843                len,
14844            )?;
14845        if !self.parent.is_empty() {
14846            struct_ser.serialize_field("parent", &self.parent)?;
14847        }
14848        if self.page_size != 0 {
14849            struct_ser.serialize_field("pageSize", &self.page_size)?;
14850        }
14851        if !self.page_token.is_empty() {
14852            struct_ser.serialize_field("pageToken", &self.page_token)?;
14853        }
14854        struct_ser.end()
14855    }
14856}
14857impl<'de> serde::Deserialize<'de> for ListSecurityGroupAssociationsRequest {
14858    #[allow(deprecated)]
14859    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14860    where
14861        D: serde::Deserializer<'de>,
14862    {
14863        const FIELDS: &[&str] = &[
14864            "parent",
14865            "page_size",
14866            "pageSize",
14867            "page_token",
14868            "pageToken",
14869        ];
14870        #[allow(clippy::enum_variant_names)]
14871        enum GeneratedField {
14872            Parent,
14873            PageSize,
14874            PageToken,
14875            __SkipField__,
14876        }
14877        impl<'de> serde::Deserialize<'de> for GeneratedField {
14878            fn deserialize<D>(
14879                deserializer: D,
14880            ) -> std::result::Result<GeneratedField, D::Error>
14881            where
14882                D: serde::Deserializer<'de>,
14883            {
14884                struct GeneratedVisitor;
14885                impl serde::de::Visitor<'_> for GeneratedVisitor {
14886                    type Value = GeneratedField;
14887                    fn expecting(
14888                        &self,
14889                        formatter: &mut std::fmt::Formatter<'_>,
14890                    ) -> std::fmt::Result {
14891                        write!(formatter, "expected one of: {:?}", & FIELDS)
14892                    }
14893                    #[allow(unused_variables)]
14894                    fn visit_str<E>(
14895                        self,
14896                        value: &str,
14897                    ) -> std::result::Result<GeneratedField, E>
14898                    where
14899                        E: serde::de::Error,
14900                    {
14901                        match value {
14902                            "parent" => Ok(GeneratedField::Parent),
14903                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14904                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14905                            _ => Ok(GeneratedField::__SkipField__),
14906                        }
14907                    }
14908                }
14909                deserializer.deserialize_identifier(GeneratedVisitor)
14910            }
14911        }
14912        struct GeneratedVisitor;
14913        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14914            type Value = ListSecurityGroupAssociationsRequest;
14915            fn expecting(
14916                &self,
14917                formatter: &mut std::fmt::Formatter<'_>,
14918            ) -> std::fmt::Result {
14919                formatter
14920                    .write_str(
14921                        "struct origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14922                    )
14923            }
14924            fn visit_map<V>(
14925                self,
14926                mut map_: V,
14927            ) -> std::result::Result<ListSecurityGroupAssociationsRequest, V::Error>
14928            where
14929                V: serde::de::MapAccess<'de>,
14930            {
14931                let mut parent__ = None;
14932                let mut page_size__ = None;
14933                let mut page_token__ = None;
14934                while let Some(k) = map_.next_key()? {
14935                    match k {
14936                        GeneratedField::Parent => {
14937                            if parent__.is_some() {
14938                                return Err(serde::de::Error::duplicate_field("parent"));
14939                            }
14940                            parent__ = Some(map_.next_value()?);
14941                        }
14942                        GeneratedField::PageSize => {
14943                            if page_size__.is_some() {
14944                                return Err(serde::de::Error::duplicate_field("pageSize"));
14945                            }
14946                            page_size__ = Some(
14947                                map_
14948                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14949                                    .0,
14950                            );
14951                        }
14952                        GeneratedField::PageToken => {
14953                            if page_token__.is_some() {
14954                                return Err(serde::de::Error::duplicate_field("pageToken"));
14955                            }
14956                            page_token__ = Some(map_.next_value()?);
14957                        }
14958                        GeneratedField::__SkipField__ => {
14959                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14960                        }
14961                    }
14962                }
14963                Ok(ListSecurityGroupAssociationsRequest {
14964                    parent: parent__.unwrap_or_default(),
14965                    page_size: page_size__.unwrap_or_default(),
14966                    page_token: page_token__.unwrap_or_default(),
14967                })
14968            }
14969        }
14970        deserializer
14971            .deserialize_struct(
14972                "origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14973                FIELDS,
14974                GeneratedVisitor,
14975            )
14976    }
14977}
14978impl serde::Serialize for ListSecurityGroupAssociationsResponse {
14979    #[allow(deprecated)]
14980    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14981    where
14982        S: serde::Serializer,
14983    {
14984        use serde::ser::SerializeStruct;
14985        let mut len = 0;
14986        if !self.security_group_associations.is_empty() {
14987            len += 1;
14988        }
14989        if !self.next_page_token.is_empty() {
14990            len += 1;
14991        }
14992        let mut struct_ser = serializer
14993            .serialize_struct(
14994                "origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
14995                len,
14996            )?;
14997        if !self.security_group_associations.is_empty() {
14998            struct_ser
14999                .serialize_field(
15000                    "securityGroupAssociations",
15001                    &self.security_group_associations,
15002                )?;
15003        }
15004        if !self.next_page_token.is_empty() {
15005            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15006        }
15007        struct_ser.end()
15008    }
15009}
15010impl<'de> serde::Deserialize<'de> for ListSecurityGroupAssociationsResponse {
15011    #[allow(deprecated)]
15012    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15013    where
15014        D: serde::Deserializer<'de>,
15015    {
15016        const FIELDS: &[&str] = &[
15017            "security_group_associations",
15018            "securityGroupAssociations",
15019            "next_page_token",
15020            "nextPageToken",
15021        ];
15022        #[allow(clippy::enum_variant_names)]
15023        enum GeneratedField {
15024            SecurityGroupAssociations,
15025            NextPageToken,
15026            __SkipField__,
15027        }
15028        impl<'de> serde::Deserialize<'de> for GeneratedField {
15029            fn deserialize<D>(
15030                deserializer: D,
15031            ) -> std::result::Result<GeneratedField, D::Error>
15032            where
15033                D: serde::Deserializer<'de>,
15034            {
15035                struct GeneratedVisitor;
15036                impl serde::de::Visitor<'_> for GeneratedVisitor {
15037                    type Value = GeneratedField;
15038                    fn expecting(
15039                        &self,
15040                        formatter: &mut std::fmt::Formatter<'_>,
15041                    ) -> std::fmt::Result {
15042                        write!(formatter, "expected one of: {:?}", & FIELDS)
15043                    }
15044                    #[allow(unused_variables)]
15045                    fn visit_str<E>(
15046                        self,
15047                        value: &str,
15048                    ) -> std::result::Result<GeneratedField, E>
15049                    where
15050                        E: serde::de::Error,
15051                    {
15052                        match value {
15053                            "securityGroupAssociations"
15054                            | "security_group_associations" => {
15055                                Ok(GeneratedField::SecurityGroupAssociations)
15056                            }
15057                            "nextPageToken" | "next_page_token" => {
15058                                Ok(GeneratedField::NextPageToken)
15059                            }
15060                            _ => Ok(GeneratedField::__SkipField__),
15061                        }
15062                    }
15063                }
15064                deserializer.deserialize_identifier(GeneratedVisitor)
15065            }
15066        }
15067        struct GeneratedVisitor;
15068        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15069            type Value = ListSecurityGroupAssociationsResponse;
15070            fn expecting(
15071                &self,
15072                formatter: &mut std::fmt::Formatter<'_>,
15073            ) -> std::fmt::Result {
15074                formatter
15075                    .write_str(
15076                        "struct origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15077                    )
15078            }
15079            fn visit_map<V>(
15080                self,
15081                mut map_: V,
15082            ) -> std::result::Result<ListSecurityGroupAssociationsResponse, V::Error>
15083            where
15084                V: serde::de::MapAccess<'de>,
15085            {
15086                let mut security_group_associations__ = None;
15087                let mut next_page_token__ = None;
15088                while let Some(k) = map_.next_key()? {
15089                    match k {
15090                        GeneratedField::SecurityGroupAssociations => {
15091                            if security_group_associations__.is_some() {
15092                                return Err(
15093                                    serde::de::Error::duplicate_field(
15094                                        "securityGroupAssociations",
15095                                    ),
15096                                );
15097                            }
15098                            security_group_associations__ = Some(map_.next_value()?);
15099                        }
15100                        GeneratedField::NextPageToken => {
15101                            if next_page_token__.is_some() {
15102                                return Err(
15103                                    serde::de::Error::duplicate_field("nextPageToken"),
15104                                );
15105                            }
15106                            next_page_token__ = Some(map_.next_value()?);
15107                        }
15108                        GeneratedField::__SkipField__ => {
15109                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15110                        }
15111                    }
15112                }
15113                Ok(ListSecurityGroupAssociationsResponse {
15114                    security_group_associations: security_group_associations__
15115                        .unwrap_or_default(),
15116                    next_page_token: next_page_token__.unwrap_or_default(),
15117                })
15118            }
15119        }
15120        deserializer
15121            .deserialize_struct(
15122                "origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15123                FIELDS,
15124                GeneratedVisitor,
15125            )
15126    }
15127}
15128impl serde::Serialize for ListSecurityGroupRulesRequest {
15129    #[allow(deprecated)]
15130    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15131    where
15132        S: serde::Serializer,
15133    {
15134        use serde::ser::SerializeStruct;
15135        let mut len = 0;
15136        if !self.parent.is_empty() {
15137            len += 1;
15138        }
15139        if self.page_size != 0 {
15140            len += 1;
15141        }
15142        if !self.page_token.is_empty() {
15143            len += 1;
15144        }
15145        let mut struct_ser = serializer
15146            .serialize_struct(
15147                "origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15148                len,
15149            )?;
15150        if !self.parent.is_empty() {
15151            struct_ser.serialize_field("parent", &self.parent)?;
15152        }
15153        if self.page_size != 0 {
15154            struct_ser.serialize_field("pageSize", &self.page_size)?;
15155        }
15156        if !self.page_token.is_empty() {
15157            struct_ser.serialize_field("pageToken", &self.page_token)?;
15158        }
15159        struct_ser.end()
15160    }
15161}
15162impl<'de> serde::Deserialize<'de> for ListSecurityGroupRulesRequest {
15163    #[allow(deprecated)]
15164    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15165    where
15166        D: serde::Deserializer<'de>,
15167    {
15168        const FIELDS: &[&str] = &[
15169            "parent",
15170            "page_size",
15171            "pageSize",
15172            "page_token",
15173            "pageToken",
15174        ];
15175        #[allow(clippy::enum_variant_names)]
15176        enum GeneratedField {
15177            Parent,
15178            PageSize,
15179            PageToken,
15180            __SkipField__,
15181        }
15182        impl<'de> serde::Deserialize<'de> for GeneratedField {
15183            fn deserialize<D>(
15184                deserializer: D,
15185            ) -> std::result::Result<GeneratedField, D::Error>
15186            where
15187                D: serde::Deserializer<'de>,
15188            {
15189                struct GeneratedVisitor;
15190                impl serde::de::Visitor<'_> for GeneratedVisitor {
15191                    type Value = GeneratedField;
15192                    fn expecting(
15193                        &self,
15194                        formatter: &mut std::fmt::Formatter<'_>,
15195                    ) -> std::fmt::Result {
15196                        write!(formatter, "expected one of: {:?}", & FIELDS)
15197                    }
15198                    #[allow(unused_variables)]
15199                    fn visit_str<E>(
15200                        self,
15201                        value: &str,
15202                    ) -> std::result::Result<GeneratedField, E>
15203                    where
15204                        E: serde::de::Error,
15205                    {
15206                        match value {
15207                            "parent" => Ok(GeneratedField::Parent),
15208                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15209                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15210                            _ => Ok(GeneratedField::__SkipField__),
15211                        }
15212                    }
15213                }
15214                deserializer.deserialize_identifier(GeneratedVisitor)
15215            }
15216        }
15217        struct GeneratedVisitor;
15218        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15219            type Value = ListSecurityGroupRulesRequest;
15220            fn expecting(
15221                &self,
15222                formatter: &mut std::fmt::Formatter<'_>,
15223            ) -> std::fmt::Result {
15224                formatter
15225                    .write_str(
15226                        "struct origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15227                    )
15228            }
15229            fn visit_map<V>(
15230                self,
15231                mut map_: V,
15232            ) -> std::result::Result<ListSecurityGroupRulesRequest, V::Error>
15233            where
15234                V: serde::de::MapAccess<'de>,
15235            {
15236                let mut parent__ = None;
15237                let mut page_size__ = None;
15238                let mut page_token__ = None;
15239                while let Some(k) = map_.next_key()? {
15240                    match k {
15241                        GeneratedField::Parent => {
15242                            if parent__.is_some() {
15243                                return Err(serde::de::Error::duplicate_field("parent"));
15244                            }
15245                            parent__ = Some(map_.next_value()?);
15246                        }
15247                        GeneratedField::PageSize => {
15248                            if page_size__.is_some() {
15249                                return Err(serde::de::Error::duplicate_field("pageSize"));
15250                            }
15251                            page_size__ = Some(
15252                                map_
15253                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15254                                    .0,
15255                            );
15256                        }
15257                        GeneratedField::PageToken => {
15258                            if page_token__.is_some() {
15259                                return Err(serde::de::Error::duplicate_field("pageToken"));
15260                            }
15261                            page_token__ = Some(map_.next_value()?);
15262                        }
15263                        GeneratedField::__SkipField__ => {
15264                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15265                        }
15266                    }
15267                }
15268                Ok(ListSecurityGroupRulesRequest {
15269                    parent: parent__.unwrap_or_default(),
15270                    page_size: page_size__.unwrap_or_default(),
15271                    page_token: page_token__.unwrap_or_default(),
15272                })
15273            }
15274        }
15275        deserializer
15276            .deserialize_struct(
15277                "origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15278                FIELDS,
15279                GeneratedVisitor,
15280            )
15281    }
15282}
15283impl serde::Serialize for ListSecurityGroupRulesResponse {
15284    #[allow(deprecated)]
15285    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15286    where
15287        S: serde::Serializer,
15288    {
15289        use serde::ser::SerializeStruct;
15290        let mut len = 0;
15291        if !self.security_group_rules.is_empty() {
15292            len += 1;
15293        }
15294        if !self.next_page_token.is_empty() {
15295            len += 1;
15296        }
15297        let mut struct_ser = serializer
15298            .serialize_struct(
15299                "origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15300                len,
15301            )?;
15302        if !self.security_group_rules.is_empty() {
15303            struct_ser
15304                .serialize_field("securityGroupRules", &self.security_group_rules)?;
15305        }
15306        if !self.next_page_token.is_empty() {
15307            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15308        }
15309        struct_ser.end()
15310    }
15311}
15312impl<'de> serde::Deserialize<'de> for ListSecurityGroupRulesResponse {
15313    #[allow(deprecated)]
15314    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15315    where
15316        D: serde::Deserializer<'de>,
15317    {
15318        const FIELDS: &[&str] = &[
15319            "security_group_rules",
15320            "securityGroupRules",
15321            "next_page_token",
15322            "nextPageToken",
15323        ];
15324        #[allow(clippy::enum_variant_names)]
15325        enum GeneratedField {
15326            SecurityGroupRules,
15327            NextPageToken,
15328            __SkipField__,
15329        }
15330        impl<'de> serde::Deserialize<'de> for GeneratedField {
15331            fn deserialize<D>(
15332                deserializer: D,
15333            ) -> std::result::Result<GeneratedField, D::Error>
15334            where
15335                D: serde::Deserializer<'de>,
15336            {
15337                struct GeneratedVisitor;
15338                impl serde::de::Visitor<'_> for GeneratedVisitor {
15339                    type Value = GeneratedField;
15340                    fn expecting(
15341                        &self,
15342                        formatter: &mut std::fmt::Formatter<'_>,
15343                    ) -> std::fmt::Result {
15344                        write!(formatter, "expected one of: {:?}", & FIELDS)
15345                    }
15346                    #[allow(unused_variables)]
15347                    fn visit_str<E>(
15348                        self,
15349                        value: &str,
15350                    ) -> std::result::Result<GeneratedField, E>
15351                    where
15352                        E: serde::de::Error,
15353                    {
15354                        match value {
15355                            "securityGroupRules" | "security_group_rules" => {
15356                                Ok(GeneratedField::SecurityGroupRules)
15357                            }
15358                            "nextPageToken" | "next_page_token" => {
15359                                Ok(GeneratedField::NextPageToken)
15360                            }
15361                            _ => Ok(GeneratedField::__SkipField__),
15362                        }
15363                    }
15364                }
15365                deserializer.deserialize_identifier(GeneratedVisitor)
15366            }
15367        }
15368        struct GeneratedVisitor;
15369        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15370            type Value = ListSecurityGroupRulesResponse;
15371            fn expecting(
15372                &self,
15373                formatter: &mut std::fmt::Formatter<'_>,
15374            ) -> std::fmt::Result {
15375                formatter
15376                    .write_str(
15377                        "struct origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15378                    )
15379            }
15380            fn visit_map<V>(
15381                self,
15382                mut map_: V,
15383            ) -> std::result::Result<ListSecurityGroupRulesResponse, V::Error>
15384            where
15385                V: serde::de::MapAccess<'de>,
15386            {
15387                let mut security_group_rules__ = None;
15388                let mut next_page_token__ = None;
15389                while let Some(k) = map_.next_key()? {
15390                    match k {
15391                        GeneratedField::SecurityGroupRules => {
15392                            if security_group_rules__.is_some() {
15393                                return Err(
15394                                    serde::de::Error::duplicate_field("securityGroupRules"),
15395                                );
15396                            }
15397                            security_group_rules__ = Some(map_.next_value()?);
15398                        }
15399                        GeneratedField::NextPageToken => {
15400                            if next_page_token__.is_some() {
15401                                return Err(
15402                                    serde::de::Error::duplicate_field("nextPageToken"),
15403                                );
15404                            }
15405                            next_page_token__ = Some(map_.next_value()?);
15406                        }
15407                        GeneratedField::__SkipField__ => {
15408                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15409                        }
15410                    }
15411                }
15412                Ok(ListSecurityGroupRulesResponse {
15413                    security_group_rules: security_group_rules__.unwrap_or_default(),
15414                    next_page_token: next_page_token__.unwrap_or_default(),
15415                })
15416            }
15417        }
15418        deserializer
15419            .deserialize_struct(
15420                "origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15421                FIELDS,
15422                GeneratedVisitor,
15423            )
15424    }
15425}
15426impl serde::Serialize for ListSecurityGroupsRequest {
15427    #[allow(deprecated)]
15428    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15429    where
15430        S: serde::Serializer,
15431    {
15432        use serde::ser::SerializeStruct;
15433        let mut len = 0;
15434        if !self.parent.is_empty() {
15435            len += 1;
15436        }
15437        if self.page_size != 0 {
15438            len += 1;
15439        }
15440        if !self.page_token.is_empty() {
15441            len += 1;
15442        }
15443        if !self.vpc.is_empty() {
15444            len += 1;
15445        }
15446        let mut struct_ser = serializer
15447            .serialize_struct(
15448                "origincloud.network.v1beta1.ListSecurityGroupsRequest",
15449                len,
15450            )?;
15451        if !self.parent.is_empty() {
15452            struct_ser.serialize_field("parent", &self.parent)?;
15453        }
15454        if self.page_size != 0 {
15455            struct_ser.serialize_field("pageSize", &self.page_size)?;
15456        }
15457        if !self.page_token.is_empty() {
15458            struct_ser.serialize_field("pageToken", &self.page_token)?;
15459        }
15460        if !self.vpc.is_empty() {
15461            struct_ser.serialize_field("vpc", &self.vpc)?;
15462        }
15463        struct_ser.end()
15464    }
15465}
15466impl<'de> serde::Deserialize<'de> for ListSecurityGroupsRequest {
15467    #[allow(deprecated)]
15468    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15469    where
15470        D: serde::Deserializer<'de>,
15471    {
15472        const FIELDS: &[&str] = &[
15473            "parent",
15474            "page_size",
15475            "pageSize",
15476            "page_token",
15477            "pageToken",
15478            "vpc",
15479        ];
15480        #[allow(clippy::enum_variant_names)]
15481        enum GeneratedField {
15482            Parent,
15483            PageSize,
15484            PageToken,
15485            Vpc,
15486            __SkipField__,
15487        }
15488        impl<'de> serde::Deserialize<'de> for GeneratedField {
15489            fn deserialize<D>(
15490                deserializer: D,
15491            ) -> std::result::Result<GeneratedField, D::Error>
15492            where
15493                D: serde::Deserializer<'de>,
15494            {
15495                struct GeneratedVisitor;
15496                impl serde::de::Visitor<'_> for GeneratedVisitor {
15497                    type Value = GeneratedField;
15498                    fn expecting(
15499                        &self,
15500                        formatter: &mut std::fmt::Formatter<'_>,
15501                    ) -> std::fmt::Result {
15502                        write!(formatter, "expected one of: {:?}", & FIELDS)
15503                    }
15504                    #[allow(unused_variables)]
15505                    fn visit_str<E>(
15506                        self,
15507                        value: &str,
15508                    ) -> std::result::Result<GeneratedField, E>
15509                    where
15510                        E: serde::de::Error,
15511                    {
15512                        match value {
15513                            "parent" => Ok(GeneratedField::Parent),
15514                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15515                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15516                            "vpc" => Ok(GeneratedField::Vpc),
15517                            _ => Ok(GeneratedField::__SkipField__),
15518                        }
15519                    }
15520                }
15521                deserializer.deserialize_identifier(GeneratedVisitor)
15522            }
15523        }
15524        struct GeneratedVisitor;
15525        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15526            type Value = ListSecurityGroupsRequest;
15527            fn expecting(
15528                &self,
15529                formatter: &mut std::fmt::Formatter<'_>,
15530            ) -> std::fmt::Result {
15531                formatter
15532                    .write_str(
15533                        "struct origincloud.network.v1beta1.ListSecurityGroupsRequest",
15534                    )
15535            }
15536            fn visit_map<V>(
15537                self,
15538                mut map_: V,
15539            ) -> std::result::Result<ListSecurityGroupsRequest, V::Error>
15540            where
15541                V: serde::de::MapAccess<'de>,
15542            {
15543                let mut parent__ = None;
15544                let mut page_size__ = None;
15545                let mut page_token__ = None;
15546                let mut vpc__ = None;
15547                while let Some(k) = map_.next_key()? {
15548                    match k {
15549                        GeneratedField::Parent => {
15550                            if parent__.is_some() {
15551                                return Err(serde::de::Error::duplicate_field("parent"));
15552                            }
15553                            parent__ = Some(map_.next_value()?);
15554                        }
15555                        GeneratedField::PageSize => {
15556                            if page_size__.is_some() {
15557                                return Err(serde::de::Error::duplicate_field("pageSize"));
15558                            }
15559                            page_size__ = Some(
15560                                map_
15561                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15562                                    .0,
15563                            );
15564                        }
15565                        GeneratedField::PageToken => {
15566                            if page_token__.is_some() {
15567                                return Err(serde::de::Error::duplicate_field("pageToken"));
15568                            }
15569                            page_token__ = Some(map_.next_value()?);
15570                        }
15571                        GeneratedField::Vpc => {
15572                            if vpc__.is_some() {
15573                                return Err(serde::de::Error::duplicate_field("vpc"));
15574                            }
15575                            vpc__ = Some(map_.next_value()?);
15576                        }
15577                        GeneratedField::__SkipField__ => {
15578                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15579                        }
15580                    }
15581                }
15582                Ok(ListSecurityGroupsRequest {
15583                    parent: parent__.unwrap_or_default(),
15584                    page_size: page_size__.unwrap_or_default(),
15585                    page_token: page_token__.unwrap_or_default(),
15586                    vpc: vpc__.unwrap_or_default(),
15587                })
15588            }
15589        }
15590        deserializer
15591            .deserialize_struct(
15592                "origincloud.network.v1beta1.ListSecurityGroupsRequest",
15593                FIELDS,
15594                GeneratedVisitor,
15595            )
15596    }
15597}
15598impl serde::Serialize for ListSecurityGroupsResponse {
15599    #[allow(deprecated)]
15600    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15601    where
15602        S: serde::Serializer,
15603    {
15604        use serde::ser::SerializeStruct;
15605        let mut len = 0;
15606        if !self.security_groups.is_empty() {
15607            len += 1;
15608        }
15609        if !self.next_page_token.is_empty() {
15610            len += 1;
15611        }
15612        let mut struct_ser = serializer
15613            .serialize_struct(
15614                "origincloud.network.v1beta1.ListSecurityGroupsResponse",
15615                len,
15616            )?;
15617        if !self.security_groups.is_empty() {
15618            struct_ser.serialize_field("securityGroups", &self.security_groups)?;
15619        }
15620        if !self.next_page_token.is_empty() {
15621            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15622        }
15623        struct_ser.end()
15624    }
15625}
15626impl<'de> serde::Deserialize<'de> for ListSecurityGroupsResponse {
15627    #[allow(deprecated)]
15628    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15629    where
15630        D: serde::Deserializer<'de>,
15631    {
15632        const FIELDS: &[&str] = &[
15633            "security_groups",
15634            "securityGroups",
15635            "next_page_token",
15636            "nextPageToken",
15637        ];
15638        #[allow(clippy::enum_variant_names)]
15639        enum GeneratedField {
15640            SecurityGroups,
15641            NextPageToken,
15642            __SkipField__,
15643        }
15644        impl<'de> serde::Deserialize<'de> for GeneratedField {
15645            fn deserialize<D>(
15646                deserializer: D,
15647            ) -> std::result::Result<GeneratedField, D::Error>
15648            where
15649                D: serde::Deserializer<'de>,
15650            {
15651                struct GeneratedVisitor;
15652                impl serde::de::Visitor<'_> for GeneratedVisitor {
15653                    type Value = GeneratedField;
15654                    fn expecting(
15655                        &self,
15656                        formatter: &mut std::fmt::Formatter<'_>,
15657                    ) -> std::fmt::Result {
15658                        write!(formatter, "expected one of: {:?}", & FIELDS)
15659                    }
15660                    #[allow(unused_variables)]
15661                    fn visit_str<E>(
15662                        self,
15663                        value: &str,
15664                    ) -> std::result::Result<GeneratedField, E>
15665                    where
15666                        E: serde::de::Error,
15667                    {
15668                        match value {
15669                            "securityGroups" | "security_groups" => {
15670                                Ok(GeneratedField::SecurityGroups)
15671                            }
15672                            "nextPageToken" | "next_page_token" => {
15673                                Ok(GeneratedField::NextPageToken)
15674                            }
15675                            _ => Ok(GeneratedField::__SkipField__),
15676                        }
15677                    }
15678                }
15679                deserializer.deserialize_identifier(GeneratedVisitor)
15680            }
15681        }
15682        struct GeneratedVisitor;
15683        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15684            type Value = ListSecurityGroupsResponse;
15685            fn expecting(
15686                &self,
15687                formatter: &mut std::fmt::Formatter<'_>,
15688            ) -> std::fmt::Result {
15689                formatter
15690                    .write_str(
15691                        "struct origincloud.network.v1beta1.ListSecurityGroupsResponse",
15692                    )
15693            }
15694            fn visit_map<V>(
15695                self,
15696                mut map_: V,
15697            ) -> std::result::Result<ListSecurityGroupsResponse, V::Error>
15698            where
15699                V: serde::de::MapAccess<'de>,
15700            {
15701                let mut security_groups__ = None;
15702                let mut next_page_token__ = None;
15703                while let Some(k) = map_.next_key()? {
15704                    match k {
15705                        GeneratedField::SecurityGroups => {
15706                            if security_groups__.is_some() {
15707                                return Err(
15708                                    serde::de::Error::duplicate_field("securityGroups"),
15709                                );
15710                            }
15711                            security_groups__ = Some(map_.next_value()?);
15712                        }
15713                        GeneratedField::NextPageToken => {
15714                            if next_page_token__.is_some() {
15715                                return Err(
15716                                    serde::de::Error::duplicate_field("nextPageToken"),
15717                                );
15718                            }
15719                            next_page_token__ = Some(map_.next_value()?);
15720                        }
15721                        GeneratedField::__SkipField__ => {
15722                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15723                        }
15724                    }
15725                }
15726                Ok(ListSecurityGroupsResponse {
15727                    security_groups: security_groups__.unwrap_or_default(),
15728                    next_page_token: next_page_token__.unwrap_or_default(),
15729                })
15730            }
15731        }
15732        deserializer
15733            .deserialize_struct(
15734                "origincloud.network.v1beta1.ListSecurityGroupsResponse",
15735                FIELDS,
15736                GeneratedVisitor,
15737            )
15738    }
15739}
15740impl serde::Serialize for ListSubnetsRequest {
15741    #[allow(deprecated)]
15742    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15743    where
15744        S: serde::Serializer,
15745    {
15746        use serde::ser::SerializeStruct;
15747        let mut len = 0;
15748        if !self.parent.is_empty() {
15749            len += 1;
15750        }
15751        if self.page_size != 0 {
15752            len += 1;
15753        }
15754        if !self.page_token.is_empty() {
15755            len += 1;
15756        }
15757        if !self.vpc.is_empty() {
15758            len += 1;
15759        }
15760        let mut struct_ser = serializer
15761            .serialize_struct("origincloud.network.v1beta1.ListSubnetsRequest", len)?;
15762        if !self.parent.is_empty() {
15763            struct_ser.serialize_field("parent", &self.parent)?;
15764        }
15765        if self.page_size != 0 {
15766            struct_ser.serialize_field("pageSize", &self.page_size)?;
15767        }
15768        if !self.page_token.is_empty() {
15769            struct_ser.serialize_field("pageToken", &self.page_token)?;
15770        }
15771        if !self.vpc.is_empty() {
15772            struct_ser.serialize_field("vpc", &self.vpc)?;
15773        }
15774        struct_ser.end()
15775    }
15776}
15777impl<'de> serde::Deserialize<'de> for ListSubnetsRequest {
15778    #[allow(deprecated)]
15779    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15780    where
15781        D: serde::Deserializer<'de>,
15782    {
15783        const FIELDS: &[&str] = &[
15784            "parent",
15785            "page_size",
15786            "pageSize",
15787            "page_token",
15788            "pageToken",
15789            "vpc",
15790        ];
15791        #[allow(clippy::enum_variant_names)]
15792        enum GeneratedField {
15793            Parent,
15794            PageSize,
15795            PageToken,
15796            Vpc,
15797            __SkipField__,
15798        }
15799        impl<'de> serde::Deserialize<'de> for GeneratedField {
15800            fn deserialize<D>(
15801                deserializer: D,
15802            ) -> std::result::Result<GeneratedField, D::Error>
15803            where
15804                D: serde::Deserializer<'de>,
15805            {
15806                struct GeneratedVisitor;
15807                impl serde::de::Visitor<'_> for GeneratedVisitor {
15808                    type Value = GeneratedField;
15809                    fn expecting(
15810                        &self,
15811                        formatter: &mut std::fmt::Formatter<'_>,
15812                    ) -> std::fmt::Result {
15813                        write!(formatter, "expected one of: {:?}", & FIELDS)
15814                    }
15815                    #[allow(unused_variables)]
15816                    fn visit_str<E>(
15817                        self,
15818                        value: &str,
15819                    ) -> std::result::Result<GeneratedField, E>
15820                    where
15821                        E: serde::de::Error,
15822                    {
15823                        match value {
15824                            "parent" => Ok(GeneratedField::Parent),
15825                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15826                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15827                            "vpc" => Ok(GeneratedField::Vpc),
15828                            _ => Ok(GeneratedField::__SkipField__),
15829                        }
15830                    }
15831                }
15832                deserializer.deserialize_identifier(GeneratedVisitor)
15833            }
15834        }
15835        struct GeneratedVisitor;
15836        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15837            type Value = ListSubnetsRequest;
15838            fn expecting(
15839                &self,
15840                formatter: &mut std::fmt::Formatter<'_>,
15841            ) -> std::fmt::Result {
15842                formatter
15843                    .write_str("struct origincloud.network.v1beta1.ListSubnetsRequest")
15844            }
15845            fn visit_map<V>(
15846                self,
15847                mut map_: V,
15848            ) -> std::result::Result<ListSubnetsRequest, V::Error>
15849            where
15850                V: serde::de::MapAccess<'de>,
15851            {
15852                let mut parent__ = None;
15853                let mut page_size__ = None;
15854                let mut page_token__ = None;
15855                let mut vpc__ = None;
15856                while let Some(k) = map_.next_key()? {
15857                    match k {
15858                        GeneratedField::Parent => {
15859                            if parent__.is_some() {
15860                                return Err(serde::de::Error::duplicate_field("parent"));
15861                            }
15862                            parent__ = Some(map_.next_value()?);
15863                        }
15864                        GeneratedField::PageSize => {
15865                            if page_size__.is_some() {
15866                                return Err(serde::de::Error::duplicate_field("pageSize"));
15867                            }
15868                            page_size__ = Some(
15869                                map_
15870                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15871                                    .0,
15872                            );
15873                        }
15874                        GeneratedField::PageToken => {
15875                            if page_token__.is_some() {
15876                                return Err(serde::de::Error::duplicate_field("pageToken"));
15877                            }
15878                            page_token__ = Some(map_.next_value()?);
15879                        }
15880                        GeneratedField::Vpc => {
15881                            if vpc__.is_some() {
15882                                return Err(serde::de::Error::duplicate_field("vpc"));
15883                            }
15884                            vpc__ = Some(map_.next_value()?);
15885                        }
15886                        GeneratedField::__SkipField__ => {
15887                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15888                        }
15889                    }
15890                }
15891                Ok(ListSubnetsRequest {
15892                    parent: parent__.unwrap_or_default(),
15893                    page_size: page_size__.unwrap_or_default(),
15894                    page_token: page_token__.unwrap_or_default(),
15895                    vpc: vpc__.unwrap_or_default(),
15896                })
15897            }
15898        }
15899        deserializer
15900            .deserialize_struct(
15901                "origincloud.network.v1beta1.ListSubnetsRequest",
15902                FIELDS,
15903                GeneratedVisitor,
15904            )
15905    }
15906}
15907impl serde::Serialize for ListSubnetsResponse {
15908    #[allow(deprecated)]
15909    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15910    where
15911        S: serde::Serializer,
15912    {
15913        use serde::ser::SerializeStruct;
15914        let mut len = 0;
15915        if !self.subnets.is_empty() {
15916            len += 1;
15917        }
15918        if !self.next_page_token.is_empty() {
15919            len += 1;
15920        }
15921        let mut struct_ser = serializer
15922            .serialize_struct("origincloud.network.v1beta1.ListSubnetsResponse", len)?;
15923        if !self.subnets.is_empty() {
15924            struct_ser.serialize_field("subnets", &self.subnets)?;
15925        }
15926        if !self.next_page_token.is_empty() {
15927            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15928        }
15929        struct_ser.end()
15930    }
15931}
15932impl<'de> serde::Deserialize<'de> for ListSubnetsResponse {
15933    #[allow(deprecated)]
15934    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15935    where
15936        D: serde::Deserializer<'de>,
15937    {
15938        const FIELDS: &[&str] = &["subnets", "next_page_token", "nextPageToken"];
15939        #[allow(clippy::enum_variant_names)]
15940        enum GeneratedField {
15941            Subnets,
15942            NextPageToken,
15943            __SkipField__,
15944        }
15945        impl<'de> serde::Deserialize<'de> for GeneratedField {
15946            fn deserialize<D>(
15947                deserializer: D,
15948            ) -> std::result::Result<GeneratedField, D::Error>
15949            where
15950                D: serde::Deserializer<'de>,
15951            {
15952                struct GeneratedVisitor;
15953                impl serde::de::Visitor<'_> for GeneratedVisitor {
15954                    type Value = GeneratedField;
15955                    fn expecting(
15956                        &self,
15957                        formatter: &mut std::fmt::Formatter<'_>,
15958                    ) -> std::fmt::Result {
15959                        write!(formatter, "expected one of: {:?}", & FIELDS)
15960                    }
15961                    #[allow(unused_variables)]
15962                    fn visit_str<E>(
15963                        self,
15964                        value: &str,
15965                    ) -> std::result::Result<GeneratedField, E>
15966                    where
15967                        E: serde::de::Error,
15968                    {
15969                        match value {
15970                            "subnets" => Ok(GeneratedField::Subnets),
15971                            "nextPageToken" | "next_page_token" => {
15972                                Ok(GeneratedField::NextPageToken)
15973                            }
15974                            _ => Ok(GeneratedField::__SkipField__),
15975                        }
15976                    }
15977                }
15978                deserializer.deserialize_identifier(GeneratedVisitor)
15979            }
15980        }
15981        struct GeneratedVisitor;
15982        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15983            type Value = ListSubnetsResponse;
15984            fn expecting(
15985                &self,
15986                formatter: &mut std::fmt::Formatter<'_>,
15987            ) -> std::fmt::Result {
15988                formatter
15989                    .write_str("struct origincloud.network.v1beta1.ListSubnetsResponse")
15990            }
15991            fn visit_map<V>(
15992                self,
15993                mut map_: V,
15994            ) -> std::result::Result<ListSubnetsResponse, V::Error>
15995            where
15996                V: serde::de::MapAccess<'de>,
15997            {
15998                let mut subnets__ = None;
15999                let mut next_page_token__ = None;
16000                while let Some(k) = map_.next_key()? {
16001                    match k {
16002                        GeneratedField::Subnets => {
16003                            if subnets__.is_some() {
16004                                return Err(serde::de::Error::duplicate_field("subnets"));
16005                            }
16006                            subnets__ = Some(map_.next_value()?);
16007                        }
16008                        GeneratedField::NextPageToken => {
16009                            if next_page_token__.is_some() {
16010                                return Err(
16011                                    serde::de::Error::duplicate_field("nextPageToken"),
16012                                );
16013                            }
16014                            next_page_token__ = Some(map_.next_value()?);
16015                        }
16016                        GeneratedField::__SkipField__ => {
16017                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16018                        }
16019                    }
16020                }
16021                Ok(ListSubnetsResponse {
16022                    subnets: subnets__.unwrap_or_default(),
16023                    next_page_token: next_page_token__.unwrap_or_default(),
16024                })
16025            }
16026        }
16027        deserializer
16028            .deserialize_struct(
16029                "origincloud.network.v1beta1.ListSubnetsResponse",
16030                FIELDS,
16031                GeneratedVisitor,
16032            )
16033    }
16034}
16035impl serde::Serialize for ListVpcsRequest {
16036    #[allow(deprecated)]
16037    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16038    where
16039        S: serde::Serializer,
16040    {
16041        use serde::ser::SerializeStruct;
16042        let mut len = 0;
16043        if !self.parent.is_empty() {
16044            len += 1;
16045        }
16046        if self.page_size != 0 {
16047            len += 1;
16048        }
16049        if !self.page_token.is_empty() {
16050            len += 1;
16051        }
16052        let mut struct_ser = serializer
16053            .serialize_struct("origincloud.network.v1beta1.ListVpcsRequest", len)?;
16054        if !self.parent.is_empty() {
16055            struct_ser.serialize_field("parent", &self.parent)?;
16056        }
16057        if self.page_size != 0 {
16058            struct_ser.serialize_field("pageSize", &self.page_size)?;
16059        }
16060        if !self.page_token.is_empty() {
16061            struct_ser.serialize_field("pageToken", &self.page_token)?;
16062        }
16063        struct_ser.end()
16064    }
16065}
16066impl<'de> serde::Deserialize<'de> for ListVpcsRequest {
16067    #[allow(deprecated)]
16068    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16069    where
16070        D: serde::Deserializer<'de>,
16071    {
16072        const FIELDS: &[&str] = &[
16073            "parent",
16074            "page_size",
16075            "pageSize",
16076            "page_token",
16077            "pageToken",
16078        ];
16079        #[allow(clippy::enum_variant_names)]
16080        enum GeneratedField {
16081            Parent,
16082            PageSize,
16083            PageToken,
16084            __SkipField__,
16085        }
16086        impl<'de> serde::Deserialize<'de> for GeneratedField {
16087            fn deserialize<D>(
16088                deserializer: D,
16089            ) -> std::result::Result<GeneratedField, D::Error>
16090            where
16091                D: serde::Deserializer<'de>,
16092            {
16093                struct GeneratedVisitor;
16094                impl serde::de::Visitor<'_> for GeneratedVisitor {
16095                    type Value = GeneratedField;
16096                    fn expecting(
16097                        &self,
16098                        formatter: &mut std::fmt::Formatter<'_>,
16099                    ) -> std::fmt::Result {
16100                        write!(formatter, "expected one of: {:?}", & FIELDS)
16101                    }
16102                    #[allow(unused_variables)]
16103                    fn visit_str<E>(
16104                        self,
16105                        value: &str,
16106                    ) -> std::result::Result<GeneratedField, E>
16107                    where
16108                        E: serde::de::Error,
16109                    {
16110                        match value {
16111                            "parent" => Ok(GeneratedField::Parent),
16112                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
16113                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
16114                            _ => Ok(GeneratedField::__SkipField__),
16115                        }
16116                    }
16117                }
16118                deserializer.deserialize_identifier(GeneratedVisitor)
16119            }
16120        }
16121        struct GeneratedVisitor;
16122        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16123            type Value = ListVpcsRequest;
16124            fn expecting(
16125                &self,
16126                formatter: &mut std::fmt::Formatter<'_>,
16127            ) -> std::fmt::Result {
16128                formatter.write_str("struct origincloud.network.v1beta1.ListVpcsRequest")
16129            }
16130            fn visit_map<V>(
16131                self,
16132                mut map_: V,
16133            ) -> std::result::Result<ListVpcsRequest, V::Error>
16134            where
16135                V: serde::de::MapAccess<'de>,
16136            {
16137                let mut parent__ = None;
16138                let mut page_size__ = None;
16139                let mut page_token__ = None;
16140                while let Some(k) = map_.next_key()? {
16141                    match k {
16142                        GeneratedField::Parent => {
16143                            if parent__.is_some() {
16144                                return Err(serde::de::Error::duplicate_field("parent"));
16145                            }
16146                            parent__ = Some(map_.next_value()?);
16147                        }
16148                        GeneratedField::PageSize => {
16149                            if page_size__.is_some() {
16150                                return Err(serde::de::Error::duplicate_field("pageSize"));
16151                            }
16152                            page_size__ = Some(
16153                                map_
16154                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
16155                                    .0,
16156                            );
16157                        }
16158                        GeneratedField::PageToken => {
16159                            if page_token__.is_some() {
16160                                return Err(serde::de::Error::duplicate_field("pageToken"));
16161                            }
16162                            page_token__ = Some(map_.next_value()?);
16163                        }
16164                        GeneratedField::__SkipField__ => {
16165                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16166                        }
16167                    }
16168                }
16169                Ok(ListVpcsRequest {
16170                    parent: parent__.unwrap_or_default(),
16171                    page_size: page_size__.unwrap_or_default(),
16172                    page_token: page_token__.unwrap_or_default(),
16173                })
16174            }
16175        }
16176        deserializer
16177            .deserialize_struct(
16178                "origincloud.network.v1beta1.ListVpcsRequest",
16179                FIELDS,
16180                GeneratedVisitor,
16181            )
16182    }
16183}
16184impl serde::Serialize for ListVpcsResponse {
16185    #[allow(deprecated)]
16186    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16187    where
16188        S: serde::Serializer,
16189    {
16190        use serde::ser::SerializeStruct;
16191        let mut len = 0;
16192        if !self.vpcs.is_empty() {
16193            len += 1;
16194        }
16195        if !self.next_page_token.is_empty() {
16196            len += 1;
16197        }
16198        let mut struct_ser = serializer
16199            .serialize_struct("origincloud.network.v1beta1.ListVpcsResponse", len)?;
16200        if !self.vpcs.is_empty() {
16201            struct_ser.serialize_field("vpcs", &self.vpcs)?;
16202        }
16203        if !self.next_page_token.is_empty() {
16204            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
16205        }
16206        struct_ser.end()
16207    }
16208}
16209impl<'de> serde::Deserialize<'de> for ListVpcsResponse {
16210    #[allow(deprecated)]
16211    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16212    where
16213        D: serde::Deserializer<'de>,
16214    {
16215        const FIELDS: &[&str] = &["vpcs", "next_page_token", "nextPageToken"];
16216        #[allow(clippy::enum_variant_names)]
16217        enum GeneratedField {
16218            Vpcs,
16219            NextPageToken,
16220            __SkipField__,
16221        }
16222        impl<'de> serde::Deserialize<'de> for GeneratedField {
16223            fn deserialize<D>(
16224                deserializer: D,
16225            ) -> std::result::Result<GeneratedField, D::Error>
16226            where
16227                D: serde::Deserializer<'de>,
16228            {
16229                struct GeneratedVisitor;
16230                impl serde::de::Visitor<'_> for GeneratedVisitor {
16231                    type Value = GeneratedField;
16232                    fn expecting(
16233                        &self,
16234                        formatter: &mut std::fmt::Formatter<'_>,
16235                    ) -> std::fmt::Result {
16236                        write!(formatter, "expected one of: {:?}", & FIELDS)
16237                    }
16238                    #[allow(unused_variables)]
16239                    fn visit_str<E>(
16240                        self,
16241                        value: &str,
16242                    ) -> std::result::Result<GeneratedField, E>
16243                    where
16244                        E: serde::de::Error,
16245                    {
16246                        match value {
16247                            "vpcs" => Ok(GeneratedField::Vpcs),
16248                            "nextPageToken" | "next_page_token" => {
16249                                Ok(GeneratedField::NextPageToken)
16250                            }
16251                            _ => Ok(GeneratedField::__SkipField__),
16252                        }
16253                    }
16254                }
16255                deserializer.deserialize_identifier(GeneratedVisitor)
16256            }
16257        }
16258        struct GeneratedVisitor;
16259        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16260            type Value = ListVpcsResponse;
16261            fn expecting(
16262                &self,
16263                formatter: &mut std::fmt::Formatter<'_>,
16264            ) -> std::fmt::Result {
16265                formatter
16266                    .write_str("struct origincloud.network.v1beta1.ListVpcsResponse")
16267            }
16268            fn visit_map<V>(
16269                self,
16270                mut map_: V,
16271            ) -> std::result::Result<ListVpcsResponse, V::Error>
16272            where
16273                V: serde::de::MapAccess<'de>,
16274            {
16275                let mut vpcs__ = None;
16276                let mut next_page_token__ = None;
16277                while let Some(k) = map_.next_key()? {
16278                    match k {
16279                        GeneratedField::Vpcs => {
16280                            if vpcs__.is_some() {
16281                                return Err(serde::de::Error::duplicate_field("vpcs"));
16282                            }
16283                            vpcs__ = Some(map_.next_value()?);
16284                        }
16285                        GeneratedField::NextPageToken => {
16286                            if next_page_token__.is_some() {
16287                                return Err(
16288                                    serde::de::Error::duplicate_field("nextPageToken"),
16289                                );
16290                            }
16291                            next_page_token__ = Some(map_.next_value()?);
16292                        }
16293                        GeneratedField::__SkipField__ => {
16294                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16295                        }
16296                    }
16297                }
16298                Ok(ListVpcsResponse {
16299                    vpcs: vpcs__.unwrap_or_default(),
16300                    next_page_token: next_page_token__.unwrap_or_default(),
16301                })
16302            }
16303        }
16304        deserializer
16305            .deserialize_struct(
16306                "origincloud.network.v1beta1.ListVpcsResponse",
16307                FIELDS,
16308                GeneratedVisitor,
16309            )
16310    }
16311}
16312impl serde::Serialize for NatGateway {
16313    #[allow(deprecated)]
16314    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16315    where
16316        S: serde::Serializer,
16317    {
16318        use serde::ser::SerializeStruct;
16319        let mut len = 0;
16320        if !self.name.is_empty() {
16321            len += 1;
16322        }
16323        if !self.urn.is_empty() {
16324            len += 1;
16325        }
16326        if !self.subnet.is_empty() {
16327            len += 1;
16328        }
16329        if !self.floating_ip.is_empty() {
16330            len += 1;
16331        }
16332        if !self.vpc.is_empty() {
16333            len += 1;
16334        }
16335        if self.create_time.is_some() {
16336            len += 1;
16337        }
16338        if !self.creator.is_empty() {
16339            len += 1;
16340        }
16341        if !self.tags.is_empty() {
16342            len += 1;
16343        }
16344        let mut struct_ser = serializer
16345            .serialize_struct("origincloud.network.v1beta1.NatGateway", len)?;
16346        if !self.name.is_empty() {
16347            struct_ser.serialize_field("name", &self.name)?;
16348        }
16349        if !self.urn.is_empty() {
16350            struct_ser.serialize_field("urn", &self.urn)?;
16351        }
16352        if !self.subnet.is_empty() {
16353            struct_ser.serialize_field("subnet", &self.subnet)?;
16354        }
16355        if !self.floating_ip.is_empty() {
16356            struct_ser.serialize_field("floatingIp", &self.floating_ip)?;
16357        }
16358        if !self.vpc.is_empty() {
16359            struct_ser.serialize_field("vpc", &self.vpc)?;
16360        }
16361        if let Some(v) = self.create_time.as_ref() {
16362            struct_ser.serialize_field("createTime", v)?;
16363        }
16364        if !self.creator.is_empty() {
16365            struct_ser.serialize_field("creator", &self.creator)?;
16366        }
16367        if !self.tags.is_empty() {
16368            struct_ser.serialize_field("tags", &self.tags)?;
16369        }
16370        struct_ser.end()
16371    }
16372}
16373impl<'de> serde::Deserialize<'de> for NatGateway {
16374    #[allow(deprecated)]
16375    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16376    where
16377        D: serde::Deserializer<'de>,
16378    {
16379        const FIELDS: &[&str] = &[
16380            "name",
16381            "urn",
16382            "subnet",
16383            "floating_ip",
16384            "floatingIp",
16385            "vpc",
16386            "create_time",
16387            "createTime",
16388            "creator",
16389            "tags",
16390        ];
16391        #[allow(clippy::enum_variant_names)]
16392        enum GeneratedField {
16393            Name,
16394            Urn,
16395            Subnet,
16396            FloatingIp,
16397            Vpc,
16398            CreateTime,
16399            Creator,
16400            Tags,
16401            __SkipField__,
16402        }
16403        impl<'de> serde::Deserialize<'de> for GeneratedField {
16404            fn deserialize<D>(
16405                deserializer: D,
16406            ) -> std::result::Result<GeneratedField, D::Error>
16407            where
16408                D: serde::Deserializer<'de>,
16409            {
16410                struct GeneratedVisitor;
16411                impl serde::de::Visitor<'_> for GeneratedVisitor {
16412                    type Value = GeneratedField;
16413                    fn expecting(
16414                        &self,
16415                        formatter: &mut std::fmt::Formatter<'_>,
16416                    ) -> std::fmt::Result {
16417                        write!(formatter, "expected one of: {:?}", & FIELDS)
16418                    }
16419                    #[allow(unused_variables)]
16420                    fn visit_str<E>(
16421                        self,
16422                        value: &str,
16423                    ) -> std::result::Result<GeneratedField, E>
16424                    where
16425                        E: serde::de::Error,
16426                    {
16427                        match value {
16428                            "name" => Ok(GeneratedField::Name),
16429                            "urn" => Ok(GeneratedField::Urn),
16430                            "subnet" => Ok(GeneratedField::Subnet),
16431                            "floatingIp" | "floating_ip" => {
16432                                Ok(GeneratedField::FloatingIp)
16433                            }
16434                            "vpc" => Ok(GeneratedField::Vpc),
16435                            "createTime" | "create_time" => {
16436                                Ok(GeneratedField::CreateTime)
16437                            }
16438                            "creator" => Ok(GeneratedField::Creator),
16439                            "tags" => Ok(GeneratedField::Tags),
16440                            _ => Ok(GeneratedField::__SkipField__),
16441                        }
16442                    }
16443                }
16444                deserializer.deserialize_identifier(GeneratedVisitor)
16445            }
16446        }
16447        struct GeneratedVisitor;
16448        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16449            type Value = NatGateway;
16450            fn expecting(
16451                &self,
16452                formatter: &mut std::fmt::Formatter<'_>,
16453            ) -> std::fmt::Result {
16454                formatter.write_str("struct origincloud.network.v1beta1.NatGateway")
16455            }
16456            fn visit_map<V>(
16457                self,
16458                mut map_: V,
16459            ) -> std::result::Result<NatGateway, V::Error>
16460            where
16461                V: serde::de::MapAccess<'de>,
16462            {
16463                let mut name__ = None;
16464                let mut urn__ = None;
16465                let mut subnet__ = None;
16466                let mut floating_ip__ = None;
16467                let mut vpc__ = None;
16468                let mut create_time__ = None;
16469                let mut creator__ = None;
16470                let mut tags__ = None;
16471                while let Some(k) = map_.next_key()? {
16472                    match k {
16473                        GeneratedField::Name => {
16474                            if name__.is_some() {
16475                                return Err(serde::de::Error::duplicate_field("name"));
16476                            }
16477                            name__ = Some(map_.next_value()?);
16478                        }
16479                        GeneratedField::Urn => {
16480                            if urn__.is_some() {
16481                                return Err(serde::de::Error::duplicate_field("urn"));
16482                            }
16483                            urn__ = Some(map_.next_value()?);
16484                        }
16485                        GeneratedField::Subnet => {
16486                            if subnet__.is_some() {
16487                                return Err(serde::de::Error::duplicate_field("subnet"));
16488                            }
16489                            subnet__ = Some(map_.next_value()?);
16490                        }
16491                        GeneratedField::FloatingIp => {
16492                            if floating_ip__.is_some() {
16493                                return Err(serde::de::Error::duplicate_field("floatingIp"));
16494                            }
16495                            floating_ip__ = Some(map_.next_value()?);
16496                        }
16497                        GeneratedField::Vpc => {
16498                            if vpc__.is_some() {
16499                                return Err(serde::de::Error::duplicate_field("vpc"));
16500                            }
16501                            vpc__ = Some(map_.next_value()?);
16502                        }
16503                        GeneratedField::CreateTime => {
16504                            if create_time__.is_some() {
16505                                return Err(serde::de::Error::duplicate_field("createTime"));
16506                            }
16507                            create_time__ = map_.next_value()?;
16508                        }
16509                        GeneratedField::Creator => {
16510                            if creator__.is_some() {
16511                                return Err(serde::de::Error::duplicate_field("creator"));
16512                            }
16513                            creator__ = Some(map_.next_value()?);
16514                        }
16515                        GeneratedField::Tags => {
16516                            if tags__.is_some() {
16517                                return Err(serde::de::Error::duplicate_field("tags"));
16518                            }
16519                            tags__ = Some(
16520                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
16521                            );
16522                        }
16523                        GeneratedField::__SkipField__ => {
16524                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16525                        }
16526                    }
16527                }
16528                Ok(NatGateway {
16529                    name: name__.unwrap_or_default(),
16530                    urn: urn__.unwrap_or_default(),
16531                    subnet: subnet__.unwrap_or_default(),
16532                    floating_ip: floating_ip__.unwrap_or_default(),
16533                    vpc: vpc__.unwrap_or_default(),
16534                    create_time: create_time__,
16535                    creator: creator__.unwrap_or_default(),
16536                    tags: tags__.unwrap_or_default(),
16537                })
16538            }
16539        }
16540        deserializer
16541            .deserialize_struct(
16542                "origincloud.network.v1beta1.NatGateway",
16543                FIELDS,
16544                GeneratedVisitor,
16545            )
16546    }
16547}
16548impl serde::Serialize for NetworkInterface {
16549    #[allow(deprecated)]
16550    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16551    where
16552        S: serde::Serializer,
16553    {
16554        use serde::ser::SerializeStruct;
16555        let mut len = 0;
16556        if !self.name.is_empty() {
16557            len += 1;
16558        }
16559        if !self.urn.is_empty() {
16560            len += 1;
16561        }
16562        if !self.subnet.is_empty() {
16563            len += 1;
16564        }
16565        if !self.security_groups.is_empty() {
16566            len += 1;
16567        }
16568        if self.source_address_check.is_some() {
16569            len += 1;
16570        }
16571        if !self.ipv4_address.is_empty() {
16572            len += 1;
16573        }
16574        if !self.ipv6_address.is_empty() {
16575            len += 1;
16576        }
16577        if self.state != 0 {
16578            len += 1;
16579        }
16580        if !self.instance.is_empty() {
16581            len += 1;
16582        }
16583        if self.create_time.is_some() {
16584            len += 1;
16585        }
16586        if !self.creator.is_empty() {
16587            len += 1;
16588        }
16589        if !self.tags.is_empty() {
16590            len += 1;
16591        }
16592        let mut struct_ser = serializer
16593            .serialize_struct("origincloud.network.v1beta1.NetworkInterface", len)?;
16594        if !self.name.is_empty() {
16595            struct_ser.serialize_field("name", &self.name)?;
16596        }
16597        if !self.urn.is_empty() {
16598            struct_ser.serialize_field("urn", &self.urn)?;
16599        }
16600        if !self.subnet.is_empty() {
16601            struct_ser.serialize_field("subnet", &self.subnet)?;
16602        }
16603        if !self.security_groups.is_empty() {
16604            struct_ser.serialize_field("securityGroups", &self.security_groups)?;
16605        }
16606        if let Some(v) = self.source_address_check.as_ref() {
16607            struct_ser.serialize_field("sourceAddressCheck", v)?;
16608        }
16609        if !self.ipv4_address.is_empty() {
16610            struct_ser.serialize_field("ipv4Address", &self.ipv4_address)?;
16611        }
16612        if !self.ipv6_address.is_empty() {
16613            struct_ser.serialize_field("ipv6Address", &self.ipv6_address)?;
16614        }
16615        if self.state != 0 {
16616            let v = network_interface::State::try_from(self.state)
16617                .map_err(|_| serde::ser::Error::custom(
16618                    format!("Invalid variant {}", self.state),
16619                ))?;
16620            struct_ser.serialize_field("state", &v)?;
16621        }
16622        if !self.instance.is_empty() {
16623            struct_ser.serialize_field("instance", &self.instance)?;
16624        }
16625        if let Some(v) = self.create_time.as_ref() {
16626            struct_ser.serialize_field("createTime", v)?;
16627        }
16628        if !self.creator.is_empty() {
16629            struct_ser.serialize_field("creator", &self.creator)?;
16630        }
16631        if !self.tags.is_empty() {
16632            struct_ser.serialize_field("tags", &self.tags)?;
16633        }
16634        struct_ser.end()
16635    }
16636}
16637impl<'de> serde::Deserialize<'de> for NetworkInterface {
16638    #[allow(deprecated)]
16639    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16640    where
16641        D: serde::Deserializer<'de>,
16642    {
16643        const FIELDS: &[&str] = &[
16644            "name",
16645            "urn",
16646            "subnet",
16647            "security_groups",
16648            "securityGroups",
16649            "source_address_check",
16650            "sourceAddressCheck",
16651            "ipv4_address",
16652            "ipv4Address",
16653            "ipv6_address",
16654            "ipv6Address",
16655            "state",
16656            "instance",
16657            "create_time",
16658            "createTime",
16659            "creator",
16660            "tags",
16661        ];
16662        #[allow(clippy::enum_variant_names)]
16663        enum GeneratedField {
16664            Name,
16665            Urn,
16666            Subnet,
16667            SecurityGroups,
16668            SourceAddressCheck,
16669            Ipv4Address,
16670            Ipv6Address,
16671            State,
16672            Instance,
16673            CreateTime,
16674            Creator,
16675            Tags,
16676            __SkipField__,
16677        }
16678        impl<'de> serde::Deserialize<'de> for GeneratedField {
16679            fn deserialize<D>(
16680                deserializer: D,
16681            ) -> std::result::Result<GeneratedField, D::Error>
16682            where
16683                D: serde::Deserializer<'de>,
16684            {
16685                struct GeneratedVisitor;
16686                impl serde::de::Visitor<'_> for GeneratedVisitor {
16687                    type Value = GeneratedField;
16688                    fn expecting(
16689                        &self,
16690                        formatter: &mut std::fmt::Formatter<'_>,
16691                    ) -> std::fmt::Result {
16692                        write!(formatter, "expected one of: {:?}", & FIELDS)
16693                    }
16694                    #[allow(unused_variables)]
16695                    fn visit_str<E>(
16696                        self,
16697                        value: &str,
16698                    ) -> std::result::Result<GeneratedField, E>
16699                    where
16700                        E: serde::de::Error,
16701                    {
16702                        match value {
16703                            "name" => Ok(GeneratedField::Name),
16704                            "urn" => Ok(GeneratedField::Urn),
16705                            "subnet" => Ok(GeneratedField::Subnet),
16706                            "securityGroups" | "security_groups" => {
16707                                Ok(GeneratedField::SecurityGroups)
16708                            }
16709                            "sourceAddressCheck" | "source_address_check" => {
16710                                Ok(GeneratedField::SourceAddressCheck)
16711                            }
16712                            "ipv4Address" | "ipv4_address" => {
16713                                Ok(GeneratedField::Ipv4Address)
16714                            }
16715                            "ipv6Address" | "ipv6_address" => {
16716                                Ok(GeneratedField::Ipv6Address)
16717                            }
16718                            "state" => Ok(GeneratedField::State),
16719                            "instance" => Ok(GeneratedField::Instance),
16720                            "createTime" | "create_time" => {
16721                                Ok(GeneratedField::CreateTime)
16722                            }
16723                            "creator" => Ok(GeneratedField::Creator),
16724                            "tags" => Ok(GeneratedField::Tags),
16725                            _ => Ok(GeneratedField::__SkipField__),
16726                        }
16727                    }
16728                }
16729                deserializer.deserialize_identifier(GeneratedVisitor)
16730            }
16731        }
16732        struct GeneratedVisitor;
16733        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16734            type Value = NetworkInterface;
16735            fn expecting(
16736                &self,
16737                formatter: &mut std::fmt::Formatter<'_>,
16738            ) -> std::fmt::Result {
16739                formatter
16740                    .write_str("struct origincloud.network.v1beta1.NetworkInterface")
16741            }
16742            fn visit_map<V>(
16743                self,
16744                mut map_: V,
16745            ) -> std::result::Result<NetworkInterface, V::Error>
16746            where
16747                V: serde::de::MapAccess<'de>,
16748            {
16749                let mut name__ = None;
16750                let mut urn__ = None;
16751                let mut subnet__ = None;
16752                let mut security_groups__ = None;
16753                let mut source_address_check__ = None;
16754                let mut ipv4_address__ = None;
16755                let mut ipv6_address__ = None;
16756                let mut state__ = None;
16757                let mut instance__ = None;
16758                let mut create_time__ = None;
16759                let mut creator__ = None;
16760                let mut tags__ = None;
16761                while let Some(k) = map_.next_key()? {
16762                    match k {
16763                        GeneratedField::Name => {
16764                            if name__.is_some() {
16765                                return Err(serde::de::Error::duplicate_field("name"));
16766                            }
16767                            name__ = Some(map_.next_value()?);
16768                        }
16769                        GeneratedField::Urn => {
16770                            if urn__.is_some() {
16771                                return Err(serde::de::Error::duplicate_field("urn"));
16772                            }
16773                            urn__ = Some(map_.next_value()?);
16774                        }
16775                        GeneratedField::Subnet => {
16776                            if subnet__.is_some() {
16777                                return Err(serde::de::Error::duplicate_field("subnet"));
16778                            }
16779                            subnet__ = Some(map_.next_value()?);
16780                        }
16781                        GeneratedField::SecurityGroups => {
16782                            if security_groups__.is_some() {
16783                                return Err(
16784                                    serde::de::Error::duplicate_field("securityGroups"),
16785                                );
16786                            }
16787                            security_groups__ = Some(map_.next_value()?);
16788                        }
16789                        GeneratedField::SourceAddressCheck => {
16790                            if source_address_check__.is_some() {
16791                                return Err(
16792                                    serde::de::Error::duplicate_field("sourceAddressCheck"),
16793                                );
16794                            }
16795                            source_address_check__ = map_.next_value()?;
16796                        }
16797                        GeneratedField::Ipv4Address => {
16798                            if ipv4_address__.is_some() {
16799                                return Err(
16800                                    serde::de::Error::duplicate_field("ipv4Address"),
16801                                );
16802                            }
16803                            ipv4_address__ = Some(map_.next_value()?);
16804                        }
16805                        GeneratedField::Ipv6Address => {
16806                            if ipv6_address__.is_some() {
16807                                return Err(
16808                                    serde::de::Error::duplicate_field("ipv6Address"),
16809                                );
16810                            }
16811                            ipv6_address__ = Some(map_.next_value()?);
16812                        }
16813                        GeneratedField::State => {
16814                            if state__.is_some() {
16815                                return Err(serde::de::Error::duplicate_field("state"));
16816                            }
16817                            state__ = Some(
16818                                map_.next_value::<network_interface::State>()? as i32,
16819                            );
16820                        }
16821                        GeneratedField::Instance => {
16822                            if instance__.is_some() {
16823                                return Err(serde::de::Error::duplicate_field("instance"));
16824                            }
16825                            instance__ = Some(map_.next_value()?);
16826                        }
16827                        GeneratedField::CreateTime => {
16828                            if create_time__.is_some() {
16829                                return Err(serde::de::Error::duplicate_field("createTime"));
16830                            }
16831                            create_time__ = map_.next_value()?;
16832                        }
16833                        GeneratedField::Creator => {
16834                            if creator__.is_some() {
16835                                return Err(serde::de::Error::duplicate_field("creator"));
16836                            }
16837                            creator__ = Some(map_.next_value()?);
16838                        }
16839                        GeneratedField::Tags => {
16840                            if tags__.is_some() {
16841                                return Err(serde::de::Error::duplicate_field("tags"));
16842                            }
16843                            tags__ = Some(
16844                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
16845                            );
16846                        }
16847                        GeneratedField::__SkipField__ => {
16848                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16849                        }
16850                    }
16851                }
16852                Ok(NetworkInterface {
16853                    name: name__.unwrap_or_default(),
16854                    urn: urn__.unwrap_or_default(),
16855                    subnet: subnet__.unwrap_or_default(),
16856                    security_groups: security_groups__.unwrap_or_default(),
16857                    source_address_check: source_address_check__,
16858                    ipv4_address: ipv4_address__.unwrap_or_default(),
16859                    ipv6_address: ipv6_address__.unwrap_or_default(),
16860                    state: state__.unwrap_or_default(),
16861                    instance: instance__.unwrap_or_default(),
16862                    create_time: create_time__,
16863                    creator: creator__.unwrap_or_default(),
16864                    tags: tags__.unwrap_or_default(),
16865                })
16866            }
16867        }
16868        deserializer
16869            .deserialize_struct(
16870                "origincloud.network.v1beta1.NetworkInterface",
16871                FIELDS,
16872                GeneratedVisitor,
16873            )
16874    }
16875}
16876impl serde::Serialize for network_interface::State {
16877    #[allow(deprecated)]
16878    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16879    where
16880        S: serde::Serializer,
16881    {
16882        let variant = match self {
16883            Self::Unspecified => "STATE_UNSPECIFIED",
16884            Self::Available => "AVAILABLE",
16885            Self::Attached => "ATTACHED",
16886        };
16887        serializer.serialize_str(variant)
16888    }
16889}
16890impl<'de> serde::Deserialize<'de> for network_interface::State {
16891    #[allow(deprecated)]
16892    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16893    where
16894        D: serde::Deserializer<'de>,
16895    {
16896        const FIELDS: &[&str] = &["STATE_UNSPECIFIED", "AVAILABLE", "ATTACHED"];
16897        struct GeneratedVisitor;
16898        impl serde::de::Visitor<'_> for GeneratedVisitor {
16899            type Value = network_interface::State;
16900            fn expecting(
16901                &self,
16902                formatter: &mut std::fmt::Formatter<'_>,
16903            ) -> std::fmt::Result {
16904                write!(formatter, "expected one of: {:?}", & FIELDS)
16905            }
16906            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
16907            where
16908                E: serde::de::Error,
16909            {
16910                i32::try_from(v)
16911                    .ok()
16912                    .and_then(|x| {
16913                        x
16914                            .try_into()
16915                            .ok()
16916                            .or_else(|| Some(network_interface::State::default()))
16917                    })
16918                    .ok_or_else(|| {
16919                        serde::de::Error::invalid_value(
16920                            serde::de::Unexpected::Signed(v),
16921                            &self,
16922                        )
16923                    })
16924            }
16925            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
16926            where
16927                E: serde::de::Error,
16928            {
16929                i32::try_from(v)
16930                    .ok()
16931                    .and_then(|x| {
16932                        x
16933                            .try_into()
16934                            .ok()
16935                            .or_else(|| Some(network_interface::State::default()))
16936                    })
16937                    .ok_or_else(|| {
16938                        serde::de::Error::invalid_value(
16939                            serde::de::Unexpected::Unsigned(v),
16940                            &self,
16941                        )
16942                    })
16943            }
16944            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
16945            where
16946                E: serde::de::Error,
16947            {
16948                match value {
16949                    "STATE_UNSPECIFIED" => Ok(network_interface::State::Unspecified),
16950                    "AVAILABLE" => Ok(network_interface::State::Available),
16951                    "ATTACHED" => Ok(network_interface::State::Attached),
16952                    _ => Ok(network_interface::State::default()),
16953                }
16954            }
16955        }
16956        deserializer.deserialize_any(GeneratedVisitor)
16957    }
16958}
16959impl serde::Serialize for Route {
16960    #[allow(deprecated)]
16961    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16962    where
16963        S: serde::Serializer,
16964    {
16965        use serde::ser::SerializeStruct;
16966        let mut len = 0;
16967        if !self.name.is_empty() {
16968            len += 1;
16969        }
16970        if !self.destination.is_empty() {
16971            len += 1;
16972        }
16973        if !self.internet_gateway.is_empty() {
16974            len += 1;
16975        }
16976        if !self.nat_gateway.is_empty() {
16977            len += 1;
16978        }
16979        let mut struct_ser = serializer
16980            .serialize_struct("origincloud.network.v1beta1.Route", len)?;
16981        if !self.name.is_empty() {
16982            struct_ser.serialize_field("name", &self.name)?;
16983        }
16984        if !self.destination.is_empty() {
16985            struct_ser.serialize_field("destination", &self.destination)?;
16986        }
16987        if !self.internet_gateway.is_empty() {
16988            struct_ser.serialize_field("internetGateway", &self.internet_gateway)?;
16989        }
16990        if !self.nat_gateway.is_empty() {
16991            struct_ser.serialize_field("natGateway", &self.nat_gateway)?;
16992        }
16993        struct_ser.end()
16994    }
16995}
16996impl<'de> serde::Deserialize<'de> for Route {
16997    #[allow(deprecated)]
16998    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16999    where
17000        D: serde::Deserializer<'de>,
17001    {
17002        const FIELDS: &[&str] = &[
17003            "name",
17004            "destination",
17005            "internet_gateway",
17006            "internetGateway",
17007            "nat_gateway",
17008            "natGateway",
17009        ];
17010        #[allow(clippy::enum_variant_names)]
17011        enum GeneratedField {
17012            Name,
17013            Destination,
17014            InternetGateway,
17015            NatGateway,
17016            __SkipField__,
17017        }
17018        impl<'de> serde::Deserialize<'de> for GeneratedField {
17019            fn deserialize<D>(
17020                deserializer: D,
17021            ) -> std::result::Result<GeneratedField, D::Error>
17022            where
17023                D: serde::Deserializer<'de>,
17024            {
17025                struct GeneratedVisitor;
17026                impl serde::de::Visitor<'_> for GeneratedVisitor {
17027                    type Value = GeneratedField;
17028                    fn expecting(
17029                        &self,
17030                        formatter: &mut std::fmt::Formatter<'_>,
17031                    ) -> std::fmt::Result {
17032                        write!(formatter, "expected one of: {:?}", & FIELDS)
17033                    }
17034                    #[allow(unused_variables)]
17035                    fn visit_str<E>(
17036                        self,
17037                        value: &str,
17038                    ) -> std::result::Result<GeneratedField, E>
17039                    where
17040                        E: serde::de::Error,
17041                    {
17042                        match value {
17043                            "name" => Ok(GeneratedField::Name),
17044                            "destination" => Ok(GeneratedField::Destination),
17045                            "internetGateway" | "internet_gateway" => {
17046                                Ok(GeneratedField::InternetGateway)
17047                            }
17048                            "natGateway" | "nat_gateway" => {
17049                                Ok(GeneratedField::NatGateway)
17050                            }
17051                            _ => Ok(GeneratedField::__SkipField__),
17052                        }
17053                    }
17054                }
17055                deserializer.deserialize_identifier(GeneratedVisitor)
17056            }
17057        }
17058        struct GeneratedVisitor;
17059        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17060            type Value = Route;
17061            fn expecting(
17062                &self,
17063                formatter: &mut std::fmt::Formatter<'_>,
17064            ) -> std::fmt::Result {
17065                formatter.write_str("struct origincloud.network.v1beta1.Route")
17066            }
17067            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Route, V::Error>
17068            where
17069                V: serde::de::MapAccess<'de>,
17070            {
17071                let mut name__ = None;
17072                let mut destination__ = None;
17073                let mut internet_gateway__ = None;
17074                let mut nat_gateway__ = None;
17075                while let Some(k) = map_.next_key()? {
17076                    match k {
17077                        GeneratedField::Name => {
17078                            if name__.is_some() {
17079                                return Err(serde::de::Error::duplicate_field("name"));
17080                            }
17081                            name__ = Some(map_.next_value()?);
17082                        }
17083                        GeneratedField::Destination => {
17084                            if destination__.is_some() {
17085                                return Err(
17086                                    serde::de::Error::duplicate_field("destination"),
17087                                );
17088                            }
17089                            destination__ = Some(map_.next_value()?);
17090                        }
17091                        GeneratedField::InternetGateway => {
17092                            if internet_gateway__.is_some() {
17093                                return Err(
17094                                    serde::de::Error::duplicate_field("internetGateway"),
17095                                );
17096                            }
17097                            internet_gateway__ = Some(map_.next_value()?);
17098                        }
17099                        GeneratedField::NatGateway => {
17100                            if nat_gateway__.is_some() {
17101                                return Err(serde::de::Error::duplicate_field("natGateway"));
17102                            }
17103                            nat_gateway__ = Some(map_.next_value()?);
17104                        }
17105                        GeneratedField::__SkipField__ => {
17106                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17107                        }
17108                    }
17109                }
17110                Ok(Route {
17111                    name: name__.unwrap_or_default(),
17112                    destination: destination__.unwrap_or_default(),
17113                    internet_gateway: internet_gateway__.unwrap_or_default(),
17114                    nat_gateway: nat_gateway__.unwrap_or_default(),
17115                })
17116            }
17117        }
17118        deserializer
17119            .deserialize_struct(
17120                "origincloud.network.v1beta1.Route",
17121                FIELDS,
17122                GeneratedVisitor,
17123            )
17124    }
17125}
17126impl serde::Serialize for RouteTable {
17127    #[allow(deprecated)]
17128    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17129    where
17130        S: serde::Serializer,
17131    {
17132        use serde::ser::SerializeStruct;
17133        let mut len = 0;
17134        if !self.name.is_empty() {
17135            len += 1;
17136        }
17137        if !self.urn.is_empty() {
17138            len += 1;
17139        }
17140        if !self.vpc.is_empty() {
17141            len += 1;
17142        }
17143        if self.main {
17144            len += 1;
17145        }
17146        if !self.local_routes.is_empty() {
17147            len += 1;
17148        }
17149        if self.create_time.is_some() {
17150            len += 1;
17151        }
17152        if !self.creator.is_empty() {
17153            len += 1;
17154        }
17155        if !self.tags.is_empty() {
17156            len += 1;
17157        }
17158        let mut struct_ser = serializer
17159            .serialize_struct("origincloud.network.v1beta1.RouteTable", len)?;
17160        if !self.name.is_empty() {
17161            struct_ser.serialize_field("name", &self.name)?;
17162        }
17163        if !self.urn.is_empty() {
17164            struct_ser.serialize_field("urn", &self.urn)?;
17165        }
17166        if !self.vpc.is_empty() {
17167            struct_ser.serialize_field("vpc", &self.vpc)?;
17168        }
17169        if self.main {
17170            struct_ser.serialize_field("main", &self.main)?;
17171        }
17172        if !self.local_routes.is_empty() {
17173            struct_ser.serialize_field("localRoutes", &self.local_routes)?;
17174        }
17175        if let Some(v) = self.create_time.as_ref() {
17176            struct_ser.serialize_field("createTime", v)?;
17177        }
17178        if !self.creator.is_empty() {
17179            struct_ser.serialize_field("creator", &self.creator)?;
17180        }
17181        if !self.tags.is_empty() {
17182            struct_ser.serialize_field("tags", &self.tags)?;
17183        }
17184        struct_ser.end()
17185    }
17186}
17187impl<'de> serde::Deserialize<'de> for RouteTable {
17188    #[allow(deprecated)]
17189    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17190    where
17191        D: serde::Deserializer<'de>,
17192    {
17193        const FIELDS: &[&str] = &[
17194            "name",
17195            "urn",
17196            "vpc",
17197            "main",
17198            "local_routes",
17199            "localRoutes",
17200            "create_time",
17201            "createTime",
17202            "creator",
17203            "tags",
17204        ];
17205        #[allow(clippy::enum_variant_names)]
17206        enum GeneratedField {
17207            Name,
17208            Urn,
17209            Vpc,
17210            Main,
17211            LocalRoutes,
17212            CreateTime,
17213            Creator,
17214            Tags,
17215            __SkipField__,
17216        }
17217        impl<'de> serde::Deserialize<'de> for GeneratedField {
17218            fn deserialize<D>(
17219                deserializer: D,
17220            ) -> std::result::Result<GeneratedField, D::Error>
17221            where
17222                D: serde::Deserializer<'de>,
17223            {
17224                struct GeneratedVisitor;
17225                impl serde::de::Visitor<'_> for GeneratedVisitor {
17226                    type Value = GeneratedField;
17227                    fn expecting(
17228                        &self,
17229                        formatter: &mut std::fmt::Formatter<'_>,
17230                    ) -> std::fmt::Result {
17231                        write!(formatter, "expected one of: {:?}", & FIELDS)
17232                    }
17233                    #[allow(unused_variables)]
17234                    fn visit_str<E>(
17235                        self,
17236                        value: &str,
17237                    ) -> std::result::Result<GeneratedField, E>
17238                    where
17239                        E: serde::de::Error,
17240                    {
17241                        match value {
17242                            "name" => Ok(GeneratedField::Name),
17243                            "urn" => Ok(GeneratedField::Urn),
17244                            "vpc" => Ok(GeneratedField::Vpc),
17245                            "main" => Ok(GeneratedField::Main),
17246                            "localRoutes" | "local_routes" => {
17247                                Ok(GeneratedField::LocalRoutes)
17248                            }
17249                            "createTime" | "create_time" => {
17250                                Ok(GeneratedField::CreateTime)
17251                            }
17252                            "creator" => Ok(GeneratedField::Creator),
17253                            "tags" => Ok(GeneratedField::Tags),
17254                            _ => Ok(GeneratedField::__SkipField__),
17255                        }
17256                    }
17257                }
17258                deserializer.deserialize_identifier(GeneratedVisitor)
17259            }
17260        }
17261        struct GeneratedVisitor;
17262        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17263            type Value = RouteTable;
17264            fn expecting(
17265                &self,
17266                formatter: &mut std::fmt::Formatter<'_>,
17267            ) -> std::fmt::Result {
17268                formatter.write_str("struct origincloud.network.v1beta1.RouteTable")
17269            }
17270            fn visit_map<V>(
17271                self,
17272                mut map_: V,
17273            ) -> std::result::Result<RouteTable, V::Error>
17274            where
17275                V: serde::de::MapAccess<'de>,
17276            {
17277                let mut name__ = None;
17278                let mut urn__ = None;
17279                let mut vpc__ = None;
17280                let mut main__ = None;
17281                let mut local_routes__ = None;
17282                let mut create_time__ = None;
17283                let mut creator__ = None;
17284                let mut tags__ = None;
17285                while let Some(k) = map_.next_key()? {
17286                    match k {
17287                        GeneratedField::Name => {
17288                            if name__.is_some() {
17289                                return Err(serde::de::Error::duplicate_field("name"));
17290                            }
17291                            name__ = Some(map_.next_value()?);
17292                        }
17293                        GeneratedField::Urn => {
17294                            if urn__.is_some() {
17295                                return Err(serde::de::Error::duplicate_field("urn"));
17296                            }
17297                            urn__ = Some(map_.next_value()?);
17298                        }
17299                        GeneratedField::Vpc => {
17300                            if vpc__.is_some() {
17301                                return Err(serde::de::Error::duplicate_field("vpc"));
17302                            }
17303                            vpc__ = Some(map_.next_value()?);
17304                        }
17305                        GeneratedField::Main => {
17306                            if main__.is_some() {
17307                                return Err(serde::de::Error::duplicate_field("main"));
17308                            }
17309                            main__ = Some(map_.next_value()?);
17310                        }
17311                        GeneratedField::LocalRoutes => {
17312                            if local_routes__.is_some() {
17313                                return Err(
17314                                    serde::de::Error::duplicate_field("localRoutes"),
17315                                );
17316                            }
17317                            local_routes__ = Some(map_.next_value()?);
17318                        }
17319                        GeneratedField::CreateTime => {
17320                            if create_time__.is_some() {
17321                                return Err(serde::de::Error::duplicate_field("createTime"));
17322                            }
17323                            create_time__ = map_.next_value()?;
17324                        }
17325                        GeneratedField::Creator => {
17326                            if creator__.is_some() {
17327                                return Err(serde::de::Error::duplicate_field("creator"));
17328                            }
17329                            creator__ = Some(map_.next_value()?);
17330                        }
17331                        GeneratedField::Tags => {
17332                            if tags__.is_some() {
17333                                return Err(serde::de::Error::duplicate_field("tags"));
17334                            }
17335                            tags__ = Some(
17336                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
17337                            );
17338                        }
17339                        GeneratedField::__SkipField__ => {
17340                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17341                        }
17342                    }
17343                }
17344                Ok(RouteTable {
17345                    name: name__.unwrap_or_default(),
17346                    urn: urn__.unwrap_or_default(),
17347                    vpc: vpc__.unwrap_or_default(),
17348                    main: main__.unwrap_or_default(),
17349                    local_routes: local_routes__.unwrap_or_default(),
17350                    create_time: create_time__,
17351                    creator: creator__.unwrap_or_default(),
17352                    tags: tags__.unwrap_or_default(),
17353                })
17354            }
17355        }
17356        deserializer
17357            .deserialize_struct(
17358                "origincloud.network.v1beta1.RouteTable",
17359                FIELDS,
17360                GeneratedVisitor,
17361            )
17362    }
17363}
17364impl serde::Serialize for RouteTableAssociation {
17365    #[allow(deprecated)]
17366    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17367    where
17368        S: serde::Serializer,
17369    {
17370        use serde::ser::SerializeStruct;
17371        let mut len = 0;
17372        if !self.name.is_empty() {
17373            len += 1;
17374        }
17375        if !self.route_table.is_empty() {
17376            len += 1;
17377        }
17378        let mut struct_ser = serializer
17379            .serialize_struct("origincloud.network.v1beta1.RouteTableAssociation", len)?;
17380        if !self.name.is_empty() {
17381            struct_ser.serialize_field("name", &self.name)?;
17382        }
17383        if !self.route_table.is_empty() {
17384            struct_ser.serialize_field("routeTable", &self.route_table)?;
17385        }
17386        struct_ser.end()
17387    }
17388}
17389impl<'de> serde::Deserialize<'de> for RouteTableAssociation {
17390    #[allow(deprecated)]
17391    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17392    where
17393        D: serde::Deserializer<'de>,
17394    {
17395        const FIELDS: &[&str] = &["name", "route_table", "routeTable"];
17396        #[allow(clippy::enum_variant_names)]
17397        enum GeneratedField {
17398            Name,
17399            RouteTable,
17400            __SkipField__,
17401        }
17402        impl<'de> serde::Deserialize<'de> for GeneratedField {
17403            fn deserialize<D>(
17404                deserializer: D,
17405            ) -> std::result::Result<GeneratedField, D::Error>
17406            where
17407                D: serde::Deserializer<'de>,
17408            {
17409                struct GeneratedVisitor;
17410                impl serde::de::Visitor<'_> for GeneratedVisitor {
17411                    type Value = GeneratedField;
17412                    fn expecting(
17413                        &self,
17414                        formatter: &mut std::fmt::Formatter<'_>,
17415                    ) -> std::fmt::Result {
17416                        write!(formatter, "expected one of: {:?}", & FIELDS)
17417                    }
17418                    #[allow(unused_variables)]
17419                    fn visit_str<E>(
17420                        self,
17421                        value: &str,
17422                    ) -> std::result::Result<GeneratedField, E>
17423                    where
17424                        E: serde::de::Error,
17425                    {
17426                        match value {
17427                            "name" => Ok(GeneratedField::Name),
17428                            "routeTable" | "route_table" => {
17429                                Ok(GeneratedField::RouteTable)
17430                            }
17431                            _ => Ok(GeneratedField::__SkipField__),
17432                        }
17433                    }
17434                }
17435                deserializer.deserialize_identifier(GeneratedVisitor)
17436            }
17437        }
17438        struct GeneratedVisitor;
17439        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17440            type Value = RouteTableAssociation;
17441            fn expecting(
17442                &self,
17443                formatter: &mut std::fmt::Formatter<'_>,
17444            ) -> std::fmt::Result {
17445                formatter
17446                    .write_str(
17447                        "struct origincloud.network.v1beta1.RouteTableAssociation",
17448                    )
17449            }
17450            fn visit_map<V>(
17451                self,
17452                mut map_: V,
17453            ) -> std::result::Result<RouteTableAssociation, V::Error>
17454            where
17455                V: serde::de::MapAccess<'de>,
17456            {
17457                let mut name__ = None;
17458                let mut route_table__ = None;
17459                while let Some(k) = map_.next_key()? {
17460                    match k {
17461                        GeneratedField::Name => {
17462                            if name__.is_some() {
17463                                return Err(serde::de::Error::duplicate_field("name"));
17464                            }
17465                            name__ = Some(map_.next_value()?);
17466                        }
17467                        GeneratedField::RouteTable => {
17468                            if route_table__.is_some() {
17469                                return Err(serde::de::Error::duplicate_field("routeTable"));
17470                            }
17471                            route_table__ = Some(map_.next_value()?);
17472                        }
17473                        GeneratedField::__SkipField__ => {
17474                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17475                        }
17476                    }
17477                }
17478                Ok(RouteTableAssociation {
17479                    name: name__.unwrap_or_default(),
17480                    route_table: route_table__.unwrap_or_default(),
17481                })
17482            }
17483        }
17484        deserializer
17485            .deserialize_struct(
17486                "origincloud.network.v1beta1.RouteTableAssociation",
17487                FIELDS,
17488                GeneratedVisitor,
17489            )
17490    }
17491}
17492impl serde::Serialize for SecurityGroup {
17493    #[allow(deprecated)]
17494    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17495    where
17496        S: serde::Serializer,
17497    {
17498        use serde::ser::SerializeStruct;
17499        let mut len = 0;
17500        if !self.name.is_empty() {
17501            len += 1;
17502        }
17503        if !self.urn.is_empty() {
17504            len += 1;
17505        }
17506        if !self.vpc.is_empty() {
17507            len += 1;
17508        }
17509        if self.vpc_default {
17510            len += 1;
17511        }
17512        if self.create_time.is_some() {
17513            len += 1;
17514        }
17515        if !self.creator.is_empty() {
17516            len += 1;
17517        }
17518        if !self.tags.is_empty() {
17519            len += 1;
17520        }
17521        let mut struct_ser = serializer
17522            .serialize_struct("origincloud.network.v1beta1.SecurityGroup", len)?;
17523        if !self.name.is_empty() {
17524            struct_ser.serialize_field("name", &self.name)?;
17525        }
17526        if !self.urn.is_empty() {
17527            struct_ser.serialize_field("urn", &self.urn)?;
17528        }
17529        if !self.vpc.is_empty() {
17530            struct_ser.serialize_field("vpc", &self.vpc)?;
17531        }
17532        if self.vpc_default {
17533            struct_ser.serialize_field("vpcDefault", &self.vpc_default)?;
17534        }
17535        if let Some(v) = self.create_time.as_ref() {
17536            struct_ser.serialize_field("createTime", v)?;
17537        }
17538        if !self.creator.is_empty() {
17539            struct_ser.serialize_field("creator", &self.creator)?;
17540        }
17541        if !self.tags.is_empty() {
17542            struct_ser.serialize_field("tags", &self.tags)?;
17543        }
17544        struct_ser.end()
17545    }
17546}
17547impl<'de> serde::Deserialize<'de> for SecurityGroup {
17548    #[allow(deprecated)]
17549    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17550    where
17551        D: serde::Deserializer<'de>,
17552    {
17553        const FIELDS: &[&str] = &[
17554            "name",
17555            "urn",
17556            "vpc",
17557            "vpc_default",
17558            "vpcDefault",
17559            "create_time",
17560            "createTime",
17561            "creator",
17562            "tags",
17563        ];
17564        #[allow(clippy::enum_variant_names)]
17565        enum GeneratedField {
17566            Name,
17567            Urn,
17568            Vpc,
17569            VpcDefault,
17570            CreateTime,
17571            Creator,
17572            Tags,
17573            __SkipField__,
17574        }
17575        impl<'de> serde::Deserialize<'de> for GeneratedField {
17576            fn deserialize<D>(
17577                deserializer: D,
17578            ) -> std::result::Result<GeneratedField, D::Error>
17579            where
17580                D: serde::Deserializer<'de>,
17581            {
17582                struct GeneratedVisitor;
17583                impl serde::de::Visitor<'_> for GeneratedVisitor {
17584                    type Value = GeneratedField;
17585                    fn expecting(
17586                        &self,
17587                        formatter: &mut std::fmt::Formatter<'_>,
17588                    ) -> std::fmt::Result {
17589                        write!(formatter, "expected one of: {:?}", & FIELDS)
17590                    }
17591                    #[allow(unused_variables)]
17592                    fn visit_str<E>(
17593                        self,
17594                        value: &str,
17595                    ) -> std::result::Result<GeneratedField, E>
17596                    where
17597                        E: serde::de::Error,
17598                    {
17599                        match value {
17600                            "name" => Ok(GeneratedField::Name),
17601                            "urn" => Ok(GeneratedField::Urn),
17602                            "vpc" => Ok(GeneratedField::Vpc),
17603                            "vpcDefault" | "vpc_default" => {
17604                                Ok(GeneratedField::VpcDefault)
17605                            }
17606                            "createTime" | "create_time" => {
17607                                Ok(GeneratedField::CreateTime)
17608                            }
17609                            "creator" => Ok(GeneratedField::Creator),
17610                            "tags" => Ok(GeneratedField::Tags),
17611                            _ => Ok(GeneratedField::__SkipField__),
17612                        }
17613                    }
17614                }
17615                deserializer.deserialize_identifier(GeneratedVisitor)
17616            }
17617        }
17618        struct GeneratedVisitor;
17619        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17620            type Value = SecurityGroup;
17621            fn expecting(
17622                &self,
17623                formatter: &mut std::fmt::Formatter<'_>,
17624            ) -> std::fmt::Result {
17625                formatter.write_str("struct origincloud.network.v1beta1.SecurityGroup")
17626            }
17627            fn visit_map<V>(
17628                self,
17629                mut map_: V,
17630            ) -> std::result::Result<SecurityGroup, V::Error>
17631            where
17632                V: serde::de::MapAccess<'de>,
17633            {
17634                let mut name__ = None;
17635                let mut urn__ = None;
17636                let mut vpc__ = None;
17637                let mut vpc_default__ = None;
17638                let mut create_time__ = None;
17639                let mut creator__ = None;
17640                let mut tags__ = None;
17641                while let Some(k) = map_.next_key()? {
17642                    match k {
17643                        GeneratedField::Name => {
17644                            if name__.is_some() {
17645                                return Err(serde::de::Error::duplicate_field("name"));
17646                            }
17647                            name__ = Some(map_.next_value()?);
17648                        }
17649                        GeneratedField::Urn => {
17650                            if urn__.is_some() {
17651                                return Err(serde::de::Error::duplicate_field("urn"));
17652                            }
17653                            urn__ = Some(map_.next_value()?);
17654                        }
17655                        GeneratedField::Vpc => {
17656                            if vpc__.is_some() {
17657                                return Err(serde::de::Error::duplicate_field("vpc"));
17658                            }
17659                            vpc__ = Some(map_.next_value()?);
17660                        }
17661                        GeneratedField::VpcDefault => {
17662                            if vpc_default__.is_some() {
17663                                return Err(serde::de::Error::duplicate_field("vpcDefault"));
17664                            }
17665                            vpc_default__ = Some(map_.next_value()?);
17666                        }
17667                        GeneratedField::CreateTime => {
17668                            if create_time__.is_some() {
17669                                return Err(serde::de::Error::duplicate_field("createTime"));
17670                            }
17671                            create_time__ = map_.next_value()?;
17672                        }
17673                        GeneratedField::Creator => {
17674                            if creator__.is_some() {
17675                                return Err(serde::de::Error::duplicate_field("creator"));
17676                            }
17677                            creator__ = Some(map_.next_value()?);
17678                        }
17679                        GeneratedField::Tags => {
17680                            if tags__.is_some() {
17681                                return Err(serde::de::Error::duplicate_field("tags"));
17682                            }
17683                            tags__ = Some(
17684                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
17685                            );
17686                        }
17687                        GeneratedField::__SkipField__ => {
17688                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17689                        }
17690                    }
17691                }
17692                Ok(SecurityGroup {
17693                    name: name__.unwrap_or_default(),
17694                    urn: urn__.unwrap_or_default(),
17695                    vpc: vpc__.unwrap_or_default(),
17696                    vpc_default: vpc_default__.unwrap_or_default(),
17697                    create_time: create_time__,
17698                    creator: creator__.unwrap_or_default(),
17699                    tags: tags__.unwrap_or_default(),
17700                })
17701            }
17702        }
17703        deserializer
17704            .deserialize_struct(
17705                "origincloud.network.v1beta1.SecurityGroup",
17706                FIELDS,
17707                GeneratedVisitor,
17708            )
17709    }
17710}
17711impl serde::Serialize for SecurityGroupAssociation {
17712    #[allow(deprecated)]
17713    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17714    where
17715        S: serde::Serializer,
17716    {
17717        use serde::ser::SerializeStruct;
17718        let mut len = 0;
17719        if !self.name.is_empty() {
17720            len += 1;
17721        }
17722        if !self.security_group.is_empty() {
17723            len += 1;
17724        }
17725        let mut struct_ser = serializer
17726            .serialize_struct(
17727                "origincloud.network.v1beta1.SecurityGroupAssociation",
17728                len,
17729            )?;
17730        if !self.name.is_empty() {
17731            struct_ser.serialize_field("name", &self.name)?;
17732        }
17733        if !self.security_group.is_empty() {
17734            struct_ser.serialize_field("securityGroup", &self.security_group)?;
17735        }
17736        struct_ser.end()
17737    }
17738}
17739impl<'de> serde::Deserialize<'de> for SecurityGroupAssociation {
17740    #[allow(deprecated)]
17741    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17742    where
17743        D: serde::Deserializer<'de>,
17744    {
17745        const FIELDS: &[&str] = &["name", "security_group", "securityGroup"];
17746        #[allow(clippy::enum_variant_names)]
17747        enum GeneratedField {
17748            Name,
17749            SecurityGroup,
17750            __SkipField__,
17751        }
17752        impl<'de> serde::Deserialize<'de> for GeneratedField {
17753            fn deserialize<D>(
17754                deserializer: D,
17755            ) -> std::result::Result<GeneratedField, D::Error>
17756            where
17757                D: serde::Deserializer<'de>,
17758            {
17759                struct GeneratedVisitor;
17760                impl serde::de::Visitor<'_> for GeneratedVisitor {
17761                    type Value = GeneratedField;
17762                    fn expecting(
17763                        &self,
17764                        formatter: &mut std::fmt::Formatter<'_>,
17765                    ) -> std::fmt::Result {
17766                        write!(formatter, "expected one of: {:?}", & FIELDS)
17767                    }
17768                    #[allow(unused_variables)]
17769                    fn visit_str<E>(
17770                        self,
17771                        value: &str,
17772                    ) -> std::result::Result<GeneratedField, E>
17773                    where
17774                        E: serde::de::Error,
17775                    {
17776                        match value {
17777                            "name" => Ok(GeneratedField::Name),
17778                            "securityGroup" | "security_group" => {
17779                                Ok(GeneratedField::SecurityGroup)
17780                            }
17781                            _ => Ok(GeneratedField::__SkipField__),
17782                        }
17783                    }
17784                }
17785                deserializer.deserialize_identifier(GeneratedVisitor)
17786            }
17787        }
17788        struct GeneratedVisitor;
17789        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17790            type Value = SecurityGroupAssociation;
17791            fn expecting(
17792                &self,
17793                formatter: &mut std::fmt::Formatter<'_>,
17794            ) -> std::fmt::Result {
17795                formatter
17796                    .write_str(
17797                        "struct origincloud.network.v1beta1.SecurityGroupAssociation",
17798                    )
17799            }
17800            fn visit_map<V>(
17801                self,
17802                mut map_: V,
17803            ) -> std::result::Result<SecurityGroupAssociation, V::Error>
17804            where
17805                V: serde::de::MapAccess<'de>,
17806            {
17807                let mut name__ = None;
17808                let mut security_group__ = None;
17809                while let Some(k) = map_.next_key()? {
17810                    match k {
17811                        GeneratedField::Name => {
17812                            if name__.is_some() {
17813                                return Err(serde::de::Error::duplicate_field("name"));
17814                            }
17815                            name__ = Some(map_.next_value()?);
17816                        }
17817                        GeneratedField::SecurityGroup => {
17818                            if security_group__.is_some() {
17819                                return Err(
17820                                    serde::de::Error::duplicate_field("securityGroup"),
17821                                );
17822                            }
17823                            security_group__ = Some(map_.next_value()?);
17824                        }
17825                        GeneratedField::__SkipField__ => {
17826                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17827                        }
17828                    }
17829                }
17830                Ok(SecurityGroupAssociation {
17831                    name: name__.unwrap_or_default(),
17832                    security_group: security_group__.unwrap_or_default(),
17833                })
17834            }
17835        }
17836        deserializer
17837            .deserialize_struct(
17838                "origincloud.network.v1beta1.SecurityGroupAssociation",
17839                FIELDS,
17840                GeneratedVisitor,
17841            )
17842    }
17843}
17844impl serde::Serialize for SecurityGroupRule {
17845    #[allow(deprecated)]
17846    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17847    where
17848        S: serde::Serializer,
17849    {
17850        use serde::ser::SerializeStruct;
17851        let mut len = 0;
17852        if !self.name.is_empty() {
17853            len += 1;
17854        }
17855        if self.direction != 0 {
17856            len += 1;
17857        }
17858        if self.protocol != 0 {
17859            len += 1;
17860        }
17861        if self.first_port != 0 {
17862            len += 1;
17863        }
17864        if self.last_port != 0 {
17865            len += 1;
17866        }
17867        if !self.cidr_block.is_empty() {
17868            len += 1;
17869        }
17870        if !self.peer_security_group.is_empty() {
17871            len += 1;
17872        }
17873        if self.same_group {
17874            len += 1;
17875        }
17876        if !self.description.is_empty() {
17877            len += 1;
17878        }
17879        let mut struct_ser = serializer
17880            .serialize_struct("origincloud.network.v1beta1.SecurityGroupRule", len)?;
17881        if !self.name.is_empty() {
17882            struct_ser.serialize_field("name", &self.name)?;
17883        }
17884        if self.direction != 0 {
17885            let v = security_group_rule::Direction::try_from(self.direction)
17886                .map_err(|_| serde::ser::Error::custom(
17887                    format!("Invalid variant {}", self.direction),
17888                ))?;
17889            struct_ser.serialize_field("direction", &v)?;
17890        }
17891        if self.protocol != 0 {
17892            let v = security_group_rule::Protocol::try_from(self.protocol)
17893                .map_err(|_| serde::ser::Error::custom(
17894                    format!("Invalid variant {}", self.protocol),
17895                ))?;
17896            struct_ser.serialize_field("protocol", &v)?;
17897        }
17898        if self.first_port != 0 {
17899            struct_ser.serialize_field("firstPort", &self.first_port)?;
17900        }
17901        if self.last_port != 0 {
17902            struct_ser.serialize_field("lastPort", &self.last_port)?;
17903        }
17904        if !self.cidr_block.is_empty() {
17905            struct_ser.serialize_field("cidrBlock", &self.cidr_block)?;
17906        }
17907        if !self.peer_security_group.is_empty() {
17908            struct_ser.serialize_field("peerSecurityGroup", &self.peer_security_group)?;
17909        }
17910        if self.same_group {
17911            struct_ser.serialize_field("sameGroup", &self.same_group)?;
17912        }
17913        if !self.description.is_empty() {
17914            struct_ser.serialize_field("description", &self.description)?;
17915        }
17916        struct_ser.end()
17917    }
17918}
17919impl<'de> serde::Deserialize<'de> for SecurityGroupRule {
17920    #[allow(deprecated)]
17921    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17922    where
17923        D: serde::Deserializer<'de>,
17924    {
17925        const FIELDS: &[&str] = &[
17926            "name",
17927            "direction",
17928            "protocol",
17929            "first_port",
17930            "firstPort",
17931            "last_port",
17932            "lastPort",
17933            "cidr_block",
17934            "cidrBlock",
17935            "peer_security_group",
17936            "peerSecurityGroup",
17937            "same_group",
17938            "sameGroup",
17939            "description",
17940        ];
17941        #[allow(clippy::enum_variant_names)]
17942        enum GeneratedField {
17943            Name,
17944            Direction,
17945            Protocol,
17946            FirstPort,
17947            LastPort,
17948            CidrBlock,
17949            PeerSecurityGroup,
17950            SameGroup,
17951            Description,
17952            __SkipField__,
17953        }
17954        impl<'de> serde::Deserialize<'de> for GeneratedField {
17955            fn deserialize<D>(
17956                deserializer: D,
17957            ) -> std::result::Result<GeneratedField, D::Error>
17958            where
17959                D: serde::Deserializer<'de>,
17960            {
17961                struct GeneratedVisitor;
17962                impl serde::de::Visitor<'_> for GeneratedVisitor {
17963                    type Value = GeneratedField;
17964                    fn expecting(
17965                        &self,
17966                        formatter: &mut std::fmt::Formatter<'_>,
17967                    ) -> std::fmt::Result {
17968                        write!(formatter, "expected one of: {:?}", & FIELDS)
17969                    }
17970                    #[allow(unused_variables)]
17971                    fn visit_str<E>(
17972                        self,
17973                        value: &str,
17974                    ) -> std::result::Result<GeneratedField, E>
17975                    where
17976                        E: serde::de::Error,
17977                    {
17978                        match value {
17979                            "name" => Ok(GeneratedField::Name),
17980                            "direction" => Ok(GeneratedField::Direction),
17981                            "protocol" => Ok(GeneratedField::Protocol),
17982                            "firstPort" | "first_port" => Ok(GeneratedField::FirstPort),
17983                            "lastPort" | "last_port" => Ok(GeneratedField::LastPort),
17984                            "cidrBlock" | "cidr_block" => Ok(GeneratedField::CidrBlock),
17985                            "peerSecurityGroup" | "peer_security_group" => {
17986                                Ok(GeneratedField::PeerSecurityGroup)
17987                            }
17988                            "sameGroup" | "same_group" => Ok(GeneratedField::SameGroup),
17989                            "description" => Ok(GeneratedField::Description),
17990                            _ => Ok(GeneratedField::__SkipField__),
17991                        }
17992                    }
17993                }
17994                deserializer.deserialize_identifier(GeneratedVisitor)
17995            }
17996        }
17997        struct GeneratedVisitor;
17998        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17999            type Value = SecurityGroupRule;
18000            fn expecting(
18001                &self,
18002                formatter: &mut std::fmt::Formatter<'_>,
18003            ) -> std::fmt::Result {
18004                formatter
18005                    .write_str("struct origincloud.network.v1beta1.SecurityGroupRule")
18006            }
18007            fn visit_map<V>(
18008                self,
18009                mut map_: V,
18010            ) -> std::result::Result<SecurityGroupRule, V::Error>
18011            where
18012                V: serde::de::MapAccess<'de>,
18013            {
18014                let mut name__ = None;
18015                let mut direction__ = None;
18016                let mut protocol__ = None;
18017                let mut first_port__ = None;
18018                let mut last_port__ = None;
18019                let mut cidr_block__ = None;
18020                let mut peer_security_group__ = None;
18021                let mut same_group__ = None;
18022                let mut description__ = None;
18023                while let Some(k) = map_.next_key()? {
18024                    match k {
18025                        GeneratedField::Name => {
18026                            if name__.is_some() {
18027                                return Err(serde::de::Error::duplicate_field("name"));
18028                            }
18029                            name__ = Some(map_.next_value()?);
18030                        }
18031                        GeneratedField::Direction => {
18032                            if direction__.is_some() {
18033                                return Err(serde::de::Error::duplicate_field("direction"));
18034                            }
18035                            direction__ = Some(
18036                                map_.next_value::<security_group_rule::Direction>()? as i32,
18037                            );
18038                        }
18039                        GeneratedField::Protocol => {
18040                            if protocol__.is_some() {
18041                                return Err(serde::de::Error::duplicate_field("protocol"));
18042                            }
18043                            protocol__ = Some(
18044                                map_.next_value::<security_group_rule::Protocol>()? as i32,
18045                            );
18046                        }
18047                        GeneratedField::FirstPort => {
18048                            if first_port__.is_some() {
18049                                return Err(serde::de::Error::duplicate_field("firstPort"));
18050                            }
18051                            first_port__ = Some(
18052                                map_
18053                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18054                                    .0,
18055                            );
18056                        }
18057                        GeneratedField::LastPort => {
18058                            if last_port__.is_some() {
18059                                return Err(serde::de::Error::duplicate_field("lastPort"));
18060                            }
18061                            last_port__ = Some(
18062                                map_
18063                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18064                                    .0,
18065                            );
18066                        }
18067                        GeneratedField::CidrBlock => {
18068                            if cidr_block__.is_some() {
18069                                return Err(serde::de::Error::duplicate_field("cidrBlock"));
18070                            }
18071                            cidr_block__ = Some(map_.next_value()?);
18072                        }
18073                        GeneratedField::PeerSecurityGroup => {
18074                            if peer_security_group__.is_some() {
18075                                return Err(
18076                                    serde::de::Error::duplicate_field("peerSecurityGroup"),
18077                                );
18078                            }
18079                            peer_security_group__ = Some(map_.next_value()?);
18080                        }
18081                        GeneratedField::SameGroup => {
18082                            if same_group__.is_some() {
18083                                return Err(serde::de::Error::duplicate_field("sameGroup"));
18084                            }
18085                            same_group__ = Some(map_.next_value()?);
18086                        }
18087                        GeneratedField::Description => {
18088                            if description__.is_some() {
18089                                return Err(
18090                                    serde::de::Error::duplicate_field("description"),
18091                                );
18092                            }
18093                            description__ = Some(map_.next_value()?);
18094                        }
18095                        GeneratedField::__SkipField__ => {
18096                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18097                        }
18098                    }
18099                }
18100                Ok(SecurityGroupRule {
18101                    name: name__.unwrap_or_default(),
18102                    direction: direction__.unwrap_or_default(),
18103                    protocol: protocol__.unwrap_or_default(),
18104                    first_port: first_port__.unwrap_or_default(),
18105                    last_port: last_port__.unwrap_or_default(),
18106                    cidr_block: cidr_block__.unwrap_or_default(),
18107                    peer_security_group: peer_security_group__.unwrap_or_default(),
18108                    same_group: same_group__.unwrap_or_default(),
18109                    description: description__.unwrap_or_default(),
18110                })
18111            }
18112        }
18113        deserializer
18114            .deserialize_struct(
18115                "origincloud.network.v1beta1.SecurityGroupRule",
18116                FIELDS,
18117                GeneratedVisitor,
18118            )
18119    }
18120}
18121impl serde::Serialize for security_group_rule::Direction {
18122    #[allow(deprecated)]
18123    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18124    where
18125        S: serde::Serializer,
18126    {
18127        let variant = match self {
18128            Self::Unspecified => "DIRECTION_UNSPECIFIED",
18129            Self::Ingress => "INGRESS",
18130            Self::Egress => "EGRESS",
18131        };
18132        serializer.serialize_str(variant)
18133    }
18134}
18135impl<'de> serde::Deserialize<'de> for security_group_rule::Direction {
18136    #[allow(deprecated)]
18137    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18138    where
18139        D: serde::Deserializer<'de>,
18140    {
18141        const FIELDS: &[&str] = &["DIRECTION_UNSPECIFIED", "INGRESS", "EGRESS"];
18142        struct GeneratedVisitor;
18143        impl serde::de::Visitor<'_> for GeneratedVisitor {
18144            type Value = security_group_rule::Direction;
18145            fn expecting(
18146                &self,
18147                formatter: &mut std::fmt::Formatter<'_>,
18148            ) -> std::fmt::Result {
18149                write!(formatter, "expected one of: {:?}", & FIELDS)
18150            }
18151            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
18152            where
18153                E: serde::de::Error,
18154            {
18155                i32::try_from(v)
18156                    .ok()
18157                    .and_then(|x| {
18158                        x
18159                            .try_into()
18160                            .ok()
18161                            .or_else(|| Some(security_group_rule::Direction::default()))
18162                    })
18163                    .ok_or_else(|| {
18164                        serde::de::Error::invalid_value(
18165                            serde::de::Unexpected::Signed(v),
18166                            &self,
18167                        )
18168                    })
18169            }
18170            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
18171            where
18172                E: serde::de::Error,
18173            {
18174                i32::try_from(v)
18175                    .ok()
18176                    .and_then(|x| {
18177                        x
18178                            .try_into()
18179                            .ok()
18180                            .or_else(|| Some(security_group_rule::Direction::default()))
18181                    })
18182                    .ok_or_else(|| {
18183                        serde::de::Error::invalid_value(
18184                            serde::de::Unexpected::Unsigned(v),
18185                            &self,
18186                        )
18187                    })
18188            }
18189            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18190            where
18191                E: serde::de::Error,
18192            {
18193                match value {
18194                    "DIRECTION_UNSPECIFIED" => {
18195                        Ok(security_group_rule::Direction::Unspecified)
18196                    }
18197                    "INGRESS" => Ok(security_group_rule::Direction::Ingress),
18198                    "EGRESS" => Ok(security_group_rule::Direction::Egress),
18199                    _ => Ok(security_group_rule::Direction::default()),
18200                }
18201            }
18202        }
18203        deserializer.deserialize_any(GeneratedVisitor)
18204    }
18205}
18206impl serde::Serialize for security_group_rule::Protocol {
18207    #[allow(deprecated)]
18208    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18209    where
18210        S: serde::Serializer,
18211    {
18212        let variant = match self {
18213            Self::Unspecified => "PROTOCOL_UNSPECIFIED",
18214            Self::All => "ALL",
18215            Self::Tcp => "TCP",
18216            Self::Udp => "UDP",
18217            Self::Icmp => "ICMP",
18218        };
18219        serializer.serialize_str(variant)
18220    }
18221}
18222impl<'de> serde::Deserialize<'de> for security_group_rule::Protocol {
18223    #[allow(deprecated)]
18224    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18225    where
18226        D: serde::Deserializer<'de>,
18227    {
18228        const FIELDS: &[&str] = &["PROTOCOL_UNSPECIFIED", "ALL", "TCP", "UDP", "ICMP"];
18229        struct GeneratedVisitor;
18230        impl serde::de::Visitor<'_> for GeneratedVisitor {
18231            type Value = security_group_rule::Protocol;
18232            fn expecting(
18233                &self,
18234                formatter: &mut std::fmt::Formatter<'_>,
18235            ) -> std::fmt::Result {
18236                write!(formatter, "expected one of: {:?}", & FIELDS)
18237            }
18238            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
18239            where
18240                E: serde::de::Error,
18241            {
18242                i32::try_from(v)
18243                    .ok()
18244                    .and_then(|x| {
18245                        x
18246                            .try_into()
18247                            .ok()
18248                            .or_else(|| Some(security_group_rule::Protocol::default()))
18249                    })
18250                    .ok_or_else(|| {
18251                        serde::de::Error::invalid_value(
18252                            serde::de::Unexpected::Signed(v),
18253                            &self,
18254                        )
18255                    })
18256            }
18257            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
18258            where
18259                E: serde::de::Error,
18260            {
18261                i32::try_from(v)
18262                    .ok()
18263                    .and_then(|x| {
18264                        x
18265                            .try_into()
18266                            .ok()
18267                            .or_else(|| Some(security_group_rule::Protocol::default()))
18268                    })
18269                    .ok_or_else(|| {
18270                        serde::de::Error::invalid_value(
18271                            serde::de::Unexpected::Unsigned(v),
18272                            &self,
18273                        )
18274                    })
18275            }
18276            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18277            where
18278                E: serde::de::Error,
18279            {
18280                match value {
18281                    "PROTOCOL_UNSPECIFIED" => {
18282                        Ok(security_group_rule::Protocol::Unspecified)
18283                    }
18284                    "ALL" => Ok(security_group_rule::Protocol::All),
18285                    "TCP" => Ok(security_group_rule::Protocol::Tcp),
18286                    "UDP" => Ok(security_group_rule::Protocol::Udp),
18287                    "ICMP" => Ok(security_group_rule::Protocol::Icmp),
18288                    _ => Ok(security_group_rule::Protocol::default()),
18289                }
18290            }
18291        }
18292        deserializer.deserialize_any(GeneratedVisitor)
18293    }
18294}
18295impl serde::Serialize for SetDefaultDnsPolicyRequest {
18296    #[allow(deprecated)]
18297    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18298    where
18299        S: serde::Serializer,
18300    {
18301        use serde::ser::SerializeStruct;
18302        let mut len = 0;
18303        if !self.name.is_empty() {
18304            len += 1;
18305        }
18306        if !self.request_id.is_empty() {
18307            len += 1;
18308        }
18309        let mut struct_ser = serializer
18310            .serialize_struct(
18311                "origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18312                len,
18313            )?;
18314        if !self.name.is_empty() {
18315            struct_ser.serialize_field("name", &self.name)?;
18316        }
18317        if !self.request_id.is_empty() {
18318            struct_ser.serialize_field("requestId", &self.request_id)?;
18319        }
18320        struct_ser.end()
18321    }
18322}
18323impl<'de> serde::Deserialize<'de> for SetDefaultDnsPolicyRequest {
18324    #[allow(deprecated)]
18325    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18326    where
18327        D: serde::Deserializer<'de>,
18328    {
18329        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
18330        #[allow(clippy::enum_variant_names)]
18331        enum GeneratedField {
18332            Name,
18333            RequestId,
18334            __SkipField__,
18335        }
18336        impl<'de> serde::Deserialize<'de> for GeneratedField {
18337            fn deserialize<D>(
18338                deserializer: D,
18339            ) -> std::result::Result<GeneratedField, D::Error>
18340            where
18341                D: serde::Deserializer<'de>,
18342            {
18343                struct GeneratedVisitor;
18344                impl serde::de::Visitor<'_> for GeneratedVisitor {
18345                    type Value = GeneratedField;
18346                    fn expecting(
18347                        &self,
18348                        formatter: &mut std::fmt::Formatter<'_>,
18349                    ) -> std::fmt::Result {
18350                        write!(formatter, "expected one of: {:?}", & FIELDS)
18351                    }
18352                    #[allow(unused_variables)]
18353                    fn visit_str<E>(
18354                        self,
18355                        value: &str,
18356                    ) -> std::result::Result<GeneratedField, E>
18357                    where
18358                        E: serde::de::Error,
18359                    {
18360                        match value {
18361                            "name" => Ok(GeneratedField::Name),
18362                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
18363                            _ => Ok(GeneratedField::__SkipField__),
18364                        }
18365                    }
18366                }
18367                deserializer.deserialize_identifier(GeneratedVisitor)
18368            }
18369        }
18370        struct GeneratedVisitor;
18371        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18372            type Value = SetDefaultDnsPolicyRequest;
18373            fn expecting(
18374                &self,
18375                formatter: &mut std::fmt::Formatter<'_>,
18376            ) -> std::fmt::Result {
18377                formatter
18378                    .write_str(
18379                        "struct origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18380                    )
18381            }
18382            fn visit_map<V>(
18383                self,
18384                mut map_: V,
18385            ) -> std::result::Result<SetDefaultDnsPolicyRequest, V::Error>
18386            where
18387                V: serde::de::MapAccess<'de>,
18388            {
18389                let mut name__ = None;
18390                let mut request_id__ = None;
18391                while let Some(k) = map_.next_key()? {
18392                    match k {
18393                        GeneratedField::Name => {
18394                            if name__.is_some() {
18395                                return Err(serde::de::Error::duplicate_field("name"));
18396                            }
18397                            name__ = Some(map_.next_value()?);
18398                        }
18399                        GeneratedField::RequestId => {
18400                            if request_id__.is_some() {
18401                                return Err(serde::de::Error::duplicate_field("requestId"));
18402                            }
18403                            request_id__ = Some(map_.next_value()?);
18404                        }
18405                        GeneratedField::__SkipField__ => {
18406                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18407                        }
18408                    }
18409                }
18410                Ok(SetDefaultDnsPolicyRequest {
18411                    name: name__.unwrap_or_default(),
18412                    request_id: request_id__.unwrap_or_default(),
18413                })
18414            }
18415        }
18416        deserializer
18417            .deserialize_struct(
18418                "origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18419                FIELDS,
18420                GeneratedVisitor,
18421            )
18422    }
18423}
18424impl serde::Serialize for Subnet {
18425    #[allow(deprecated)]
18426    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18427    where
18428        S: serde::Serializer,
18429    {
18430        use serde::ser::SerializeStruct;
18431        let mut len = 0;
18432        if !self.name.is_empty() {
18433            len += 1;
18434        }
18435        if !self.urn.is_empty() {
18436            len += 1;
18437        }
18438        if !self.vpc.is_empty() {
18439            len += 1;
18440        }
18441        if !self.route_table.is_empty() {
18442            len += 1;
18443        }
18444        if !self.acl.is_empty() {
18445            len += 1;
18446        }
18447        if self.auto_assign_public_ip {
18448            len += 1;
18449        }
18450        if !self.ipv4_cidr_block.is_empty() {
18451            len += 1;
18452        }
18453        if !self.ipv6_cidr_block.is_empty() {
18454            len += 1;
18455        }
18456        if !self.ipv4_gateway.is_empty() {
18457            len += 1;
18458        }
18459        if !self.ipv6_gateway.is_empty() {
18460            len += 1;
18461        }
18462        if !self.ipv4_dns_servers.is_empty() {
18463            len += 1;
18464        }
18465        if !self.ipv6_dns_servers.is_empty() {
18466            len += 1;
18467        }
18468        if self.available_ipv4_address_count != 0 {
18469            len += 1;
18470        }
18471        if self.create_time.is_some() {
18472            len += 1;
18473        }
18474        if !self.creator.is_empty() {
18475            len += 1;
18476        }
18477        if !self.tags.is_empty() {
18478            len += 1;
18479        }
18480        let mut struct_ser = serializer
18481            .serialize_struct("origincloud.network.v1beta1.Subnet", len)?;
18482        if !self.name.is_empty() {
18483            struct_ser.serialize_field("name", &self.name)?;
18484        }
18485        if !self.urn.is_empty() {
18486            struct_ser.serialize_field("urn", &self.urn)?;
18487        }
18488        if !self.vpc.is_empty() {
18489            struct_ser.serialize_field("vpc", &self.vpc)?;
18490        }
18491        if !self.route_table.is_empty() {
18492            struct_ser.serialize_field("routeTable", &self.route_table)?;
18493        }
18494        if !self.acl.is_empty() {
18495            struct_ser.serialize_field("acl", &self.acl)?;
18496        }
18497        if self.auto_assign_public_ip {
18498            struct_ser
18499                .serialize_field("autoAssignPublicIp", &self.auto_assign_public_ip)?;
18500        }
18501        if !self.ipv4_cidr_block.is_empty() {
18502            struct_ser.serialize_field("ipv4CidrBlock", &self.ipv4_cidr_block)?;
18503        }
18504        if !self.ipv6_cidr_block.is_empty() {
18505            struct_ser.serialize_field("ipv6CidrBlock", &self.ipv6_cidr_block)?;
18506        }
18507        if !self.ipv4_gateway.is_empty() {
18508            struct_ser.serialize_field("ipv4Gateway", &self.ipv4_gateway)?;
18509        }
18510        if !self.ipv6_gateway.is_empty() {
18511            struct_ser.serialize_field("ipv6Gateway", &self.ipv6_gateway)?;
18512        }
18513        if !self.ipv4_dns_servers.is_empty() {
18514            struct_ser.serialize_field("ipv4DnsServers", &self.ipv4_dns_servers)?;
18515        }
18516        if !self.ipv6_dns_servers.is_empty() {
18517            struct_ser.serialize_field("ipv6DnsServers", &self.ipv6_dns_servers)?;
18518        }
18519        if self.available_ipv4_address_count != 0 {
18520            #[allow(clippy::needless_borrow)]
18521            #[allow(clippy::needless_borrows_for_generic_args)]
18522            struct_ser
18523                .serialize_field(
18524                    "availableIpv4AddressCount",
18525                    ToString::to_string(&self.available_ipv4_address_count).as_str(),
18526                )?;
18527        }
18528        if let Some(v) = self.create_time.as_ref() {
18529            struct_ser.serialize_field("createTime", v)?;
18530        }
18531        if !self.creator.is_empty() {
18532            struct_ser.serialize_field("creator", &self.creator)?;
18533        }
18534        if !self.tags.is_empty() {
18535            struct_ser.serialize_field("tags", &self.tags)?;
18536        }
18537        struct_ser.end()
18538    }
18539}
18540impl<'de> serde::Deserialize<'de> for Subnet {
18541    #[allow(deprecated)]
18542    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18543    where
18544        D: serde::Deserializer<'de>,
18545    {
18546        const FIELDS: &[&str] = &[
18547            "name",
18548            "urn",
18549            "vpc",
18550            "route_table",
18551            "routeTable",
18552            "acl",
18553            "auto_assign_public_ip",
18554            "autoAssignPublicIp",
18555            "ipv4_cidr_block",
18556            "ipv4CidrBlock",
18557            "ipv6_cidr_block",
18558            "ipv6CidrBlock",
18559            "ipv4_gateway",
18560            "ipv4Gateway",
18561            "ipv6_gateway",
18562            "ipv6Gateway",
18563            "ipv4_dns_servers",
18564            "ipv4DnsServers",
18565            "ipv6_dns_servers",
18566            "ipv6DnsServers",
18567            "available_ipv4_address_count",
18568            "availableIpv4AddressCount",
18569            "create_time",
18570            "createTime",
18571            "creator",
18572            "tags",
18573        ];
18574        #[allow(clippy::enum_variant_names)]
18575        enum GeneratedField {
18576            Name,
18577            Urn,
18578            Vpc,
18579            RouteTable,
18580            Acl,
18581            AutoAssignPublicIp,
18582            Ipv4CidrBlock,
18583            Ipv6CidrBlock,
18584            Ipv4Gateway,
18585            Ipv6Gateway,
18586            Ipv4DnsServers,
18587            Ipv6DnsServers,
18588            AvailableIpv4AddressCount,
18589            CreateTime,
18590            Creator,
18591            Tags,
18592            __SkipField__,
18593        }
18594        impl<'de> serde::Deserialize<'de> for GeneratedField {
18595            fn deserialize<D>(
18596                deserializer: D,
18597            ) -> std::result::Result<GeneratedField, D::Error>
18598            where
18599                D: serde::Deserializer<'de>,
18600            {
18601                struct GeneratedVisitor;
18602                impl serde::de::Visitor<'_> for GeneratedVisitor {
18603                    type Value = GeneratedField;
18604                    fn expecting(
18605                        &self,
18606                        formatter: &mut std::fmt::Formatter<'_>,
18607                    ) -> std::fmt::Result {
18608                        write!(formatter, "expected one of: {:?}", & FIELDS)
18609                    }
18610                    #[allow(unused_variables)]
18611                    fn visit_str<E>(
18612                        self,
18613                        value: &str,
18614                    ) -> std::result::Result<GeneratedField, E>
18615                    where
18616                        E: serde::de::Error,
18617                    {
18618                        match value {
18619                            "name" => Ok(GeneratedField::Name),
18620                            "urn" => Ok(GeneratedField::Urn),
18621                            "vpc" => Ok(GeneratedField::Vpc),
18622                            "routeTable" | "route_table" => {
18623                                Ok(GeneratedField::RouteTable)
18624                            }
18625                            "acl" => Ok(GeneratedField::Acl),
18626                            "autoAssignPublicIp" | "auto_assign_public_ip" => {
18627                                Ok(GeneratedField::AutoAssignPublicIp)
18628                            }
18629                            "ipv4CidrBlock" | "ipv4_cidr_block" => {
18630                                Ok(GeneratedField::Ipv4CidrBlock)
18631                            }
18632                            "ipv6CidrBlock" | "ipv6_cidr_block" => {
18633                                Ok(GeneratedField::Ipv6CidrBlock)
18634                            }
18635                            "ipv4Gateway" | "ipv4_gateway" => {
18636                                Ok(GeneratedField::Ipv4Gateway)
18637                            }
18638                            "ipv6Gateway" | "ipv6_gateway" => {
18639                                Ok(GeneratedField::Ipv6Gateway)
18640                            }
18641                            "ipv4DnsServers" | "ipv4_dns_servers" => {
18642                                Ok(GeneratedField::Ipv4DnsServers)
18643                            }
18644                            "ipv6DnsServers" | "ipv6_dns_servers" => {
18645                                Ok(GeneratedField::Ipv6DnsServers)
18646                            }
18647                            "availableIpv4AddressCount"
18648                            | "available_ipv4_address_count" => {
18649                                Ok(GeneratedField::AvailableIpv4AddressCount)
18650                            }
18651                            "createTime" | "create_time" => {
18652                                Ok(GeneratedField::CreateTime)
18653                            }
18654                            "creator" => Ok(GeneratedField::Creator),
18655                            "tags" => Ok(GeneratedField::Tags),
18656                            _ => Ok(GeneratedField::__SkipField__),
18657                        }
18658                    }
18659                }
18660                deserializer.deserialize_identifier(GeneratedVisitor)
18661            }
18662        }
18663        struct GeneratedVisitor;
18664        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18665            type Value = Subnet;
18666            fn expecting(
18667                &self,
18668                formatter: &mut std::fmt::Formatter<'_>,
18669            ) -> std::fmt::Result {
18670                formatter.write_str("struct origincloud.network.v1beta1.Subnet")
18671            }
18672            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Subnet, V::Error>
18673            where
18674                V: serde::de::MapAccess<'de>,
18675            {
18676                let mut name__ = None;
18677                let mut urn__ = None;
18678                let mut vpc__ = None;
18679                let mut route_table__ = None;
18680                let mut acl__ = None;
18681                let mut auto_assign_public_ip__ = None;
18682                let mut ipv4_cidr_block__ = None;
18683                let mut ipv6_cidr_block__ = None;
18684                let mut ipv4_gateway__ = None;
18685                let mut ipv6_gateway__ = None;
18686                let mut ipv4_dns_servers__ = None;
18687                let mut ipv6_dns_servers__ = None;
18688                let mut available_ipv4_address_count__ = None;
18689                let mut create_time__ = None;
18690                let mut creator__ = None;
18691                let mut tags__ = None;
18692                while let Some(k) = map_.next_key()? {
18693                    match k {
18694                        GeneratedField::Name => {
18695                            if name__.is_some() {
18696                                return Err(serde::de::Error::duplicate_field("name"));
18697                            }
18698                            name__ = Some(map_.next_value()?);
18699                        }
18700                        GeneratedField::Urn => {
18701                            if urn__.is_some() {
18702                                return Err(serde::de::Error::duplicate_field("urn"));
18703                            }
18704                            urn__ = Some(map_.next_value()?);
18705                        }
18706                        GeneratedField::Vpc => {
18707                            if vpc__.is_some() {
18708                                return Err(serde::de::Error::duplicate_field("vpc"));
18709                            }
18710                            vpc__ = Some(map_.next_value()?);
18711                        }
18712                        GeneratedField::RouteTable => {
18713                            if route_table__.is_some() {
18714                                return Err(serde::de::Error::duplicate_field("routeTable"));
18715                            }
18716                            route_table__ = Some(map_.next_value()?);
18717                        }
18718                        GeneratedField::Acl => {
18719                            if acl__.is_some() {
18720                                return Err(serde::de::Error::duplicate_field("acl"));
18721                            }
18722                            acl__ = Some(map_.next_value()?);
18723                        }
18724                        GeneratedField::AutoAssignPublicIp => {
18725                            if auto_assign_public_ip__.is_some() {
18726                                return Err(
18727                                    serde::de::Error::duplicate_field("autoAssignPublicIp"),
18728                                );
18729                            }
18730                            auto_assign_public_ip__ = Some(map_.next_value()?);
18731                        }
18732                        GeneratedField::Ipv4CidrBlock => {
18733                            if ipv4_cidr_block__.is_some() {
18734                                return Err(
18735                                    serde::de::Error::duplicate_field("ipv4CidrBlock"),
18736                                );
18737                            }
18738                            ipv4_cidr_block__ = Some(map_.next_value()?);
18739                        }
18740                        GeneratedField::Ipv6CidrBlock => {
18741                            if ipv6_cidr_block__.is_some() {
18742                                return Err(
18743                                    serde::de::Error::duplicate_field("ipv6CidrBlock"),
18744                                );
18745                            }
18746                            ipv6_cidr_block__ = Some(map_.next_value()?);
18747                        }
18748                        GeneratedField::Ipv4Gateway => {
18749                            if ipv4_gateway__.is_some() {
18750                                return Err(
18751                                    serde::de::Error::duplicate_field("ipv4Gateway"),
18752                                );
18753                            }
18754                            ipv4_gateway__ = Some(map_.next_value()?);
18755                        }
18756                        GeneratedField::Ipv6Gateway => {
18757                            if ipv6_gateway__.is_some() {
18758                                return Err(
18759                                    serde::de::Error::duplicate_field("ipv6Gateway"),
18760                                );
18761                            }
18762                            ipv6_gateway__ = Some(map_.next_value()?);
18763                        }
18764                        GeneratedField::Ipv4DnsServers => {
18765                            if ipv4_dns_servers__.is_some() {
18766                                return Err(
18767                                    serde::de::Error::duplicate_field("ipv4DnsServers"),
18768                                );
18769                            }
18770                            ipv4_dns_servers__ = Some(map_.next_value()?);
18771                        }
18772                        GeneratedField::Ipv6DnsServers => {
18773                            if ipv6_dns_servers__.is_some() {
18774                                return Err(
18775                                    serde::de::Error::duplicate_field("ipv6DnsServers"),
18776                                );
18777                            }
18778                            ipv6_dns_servers__ = Some(map_.next_value()?);
18779                        }
18780                        GeneratedField::AvailableIpv4AddressCount => {
18781                            if available_ipv4_address_count__.is_some() {
18782                                return Err(
18783                                    serde::de::Error::duplicate_field(
18784                                        "availableIpv4AddressCount",
18785                                    ),
18786                                );
18787                            }
18788                            available_ipv4_address_count__ = Some(
18789                                map_
18790                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18791                                    .0,
18792                            );
18793                        }
18794                        GeneratedField::CreateTime => {
18795                            if create_time__.is_some() {
18796                                return Err(serde::de::Error::duplicate_field("createTime"));
18797                            }
18798                            create_time__ = map_.next_value()?;
18799                        }
18800                        GeneratedField::Creator => {
18801                            if creator__.is_some() {
18802                                return Err(serde::de::Error::duplicate_field("creator"));
18803                            }
18804                            creator__ = Some(map_.next_value()?);
18805                        }
18806                        GeneratedField::Tags => {
18807                            if tags__.is_some() {
18808                                return Err(serde::de::Error::duplicate_field("tags"));
18809                            }
18810                            tags__ = Some(
18811                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
18812                            );
18813                        }
18814                        GeneratedField::__SkipField__ => {
18815                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18816                        }
18817                    }
18818                }
18819                Ok(Subnet {
18820                    name: name__.unwrap_or_default(),
18821                    urn: urn__.unwrap_or_default(),
18822                    vpc: vpc__.unwrap_or_default(),
18823                    route_table: route_table__.unwrap_or_default(),
18824                    acl: acl__.unwrap_or_default(),
18825                    auto_assign_public_ip: auto_assign_public_ip__.unwrap_or_default(),
18826                    ipv4_cidr_block: ipv4_cidr_block__.unwrap_or_default(),
18827                    ipv6_cidr_block: ipv6_cidr_block__.unwrap_or_default(),
18828                    ipv4_gateway: ipv4_gateway__.unwrap_or_default(),
18829                    ipv6_gateway: ipv6_gateway__.unwrap_or_default(),
18830                    ipv4_dns_servers: ipv4_dns_servers__.unwrap_or_default(),
18831                    ipv6_dns_servers: ipv6_dns_servers__.unwrap_or_default(),
18832                    available_ipv4_address_count: available_ipv4_address_count__
18833                        .unwrap_or_default(),
18834                    create_time: create_time__,
18835                    creator: creator__.unwrap_or_default(),
18836                    tags: tags__.unwrap_or_default(),
18837                })
18838            }
18839        }
18840        deserializer
18841            .deserialize_struct(
18842                "origincloud.network.v1beta1.Subnet",
18843                FIELDS,
18844                GeneratedVisitor,
18845            )
18846    }
18847}
18848impl serde::Serialize for UpdateAclRequest {
18849    #[allow(deprecated)]
18850    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18851    where
18852        S: serde::Serializer,
18853    {
18854        use serde::ser::SerializeStruct;
18855        let mut len = 0;
18856        if self.acl.is_some() {
18857            len += 1;
18858        }
18859        if self.update_mask.is_some() {
18860            len += 1;
18861        }
18862        if !self.request_id.is_empty() {
18863            len += 1;
18864        }
18865        let mut struct_ser = serializer
18866            .serialize_struct("origincloud.network.v1beta1.UpdateAclRequest", len)?;
18867        if let Some(v) = self.acl.as_ref() {
18868            struct_ser.serialize_field("acl", v)?;
18869        }
18870        if let Some(v) = self.update_mask.as_ref() {
18871            struct_ser.serialize_field("updateMask", v)?;
18872        }
18873        if !self.request_id.is_empty() {
18874            struct_ser.serialize_field("requestId", &self.request_id)?;
18875        }
18876        struct_ser.end()
18877    }
18878}
18879impl<'de> serde::Deserialize<'de> for UpdateAclRequest {
18880    #[allow(deprecated)]
18881    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18882    where
18883        D: serde::Deserializer<'de>,
18884    {
18885        const FIELDS: &[&str] = &[
18886            "acl",
18887            "update_mask",
18888            "updateMask",
18889            "request_id",
18890            "requestId",
18891        ];
18892        #[allow(clippy::enum_variant_names)]
18893        enum GeneratedField {
18894            Acl,
18895            UpdateMask,
18896            RequestId,
18897            __SkipField__,
18898        }
18899        impl<'de> serde::Deserialize<'de> for GeneratedField {
18900            fn deserialize<D>(
18901                deserializer: D,
18902            ) -> std::result::Result<GeneratedField, D::Error>
18903            where
18904                D: serde::Deserializer<'de>,
18905            {
18906                struct GeneratedVisitor;
18907                impl serde::de::Visitor<'_> for GeneratedVisitor {
18908                    type Value = GeneratedField;
18909                    fn expecting(
18910                        &self,
18911                        formatter: &mut std::fmt::Formatter<'_>,
18912                    ) -> std::fmt::Result {
18913                        write!(formatter, "expected one of: {:?}", & FIELDS)
18914                    }
18915                    #[allow(unused_variables)]
18916                    fn visit_str<E>(
18917                        self,
18918                        value: &str,
18919                    ) -> std::result::Result<GeneratedField, E>
18920                    where
18921                        E: serde::de::Error,
18922                    {
18923                        match value {
18924                            "acl" => Ok(GeneratedField::Acl),
18925                            "updateMask" | "update_mask" => {
18926                                Ok(GeneratedField::UpdateMask)
18927                            }
18928                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
18929                            _ => Ok(GeneratedField::__SkipField__),
18930                        }
18931                    }
18932                }
18933                deserializer.deserialize_identifier(GeneratedVisitor)
18934            }
18935        }
18936        struct GeneratedVisitor;
18937        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18938            type Value = UpdateAclRequest;
18939            fn expecting(
18940                &self,
18941                formatter: &mut std::fmt::Formatter<'_>,
18942            ) -> std::fmt::Result {
18943                formatter
18944                    .write_str("struct origincloud.network.v1beta1.UpdateAclRequest")
18945            }
18946            fn visit_map<V>(
18947                self,
18948                mut map_: V,
18949            ) -> std::result::Result<UpdateAclRequest, V::Error>
18950            where
18951                V: serde::de::MapAccess<'de>,
18952            {
18953                let mut acl__ = None;
18954                let mut update_mask__ = None;
18955                let mut request_id__ = None;
18956                while let Some(k) = map_.next_key()? {
18957                    match k {
18958                        GeneratedField::Acl => {
18959                            if acl__.is_some() {
18960                                return Err(serde::de::Error::duplicate_field("acl"));
18961                            }
18962                            acl__ = map_.next_value()?;
18963                        }
18964                        GeneratedField::UpdateMask => {
18965                            if update_mask__.is_some() {
18966                                return Err(serde::de::Error::duplicate_field("updateMask"));
18967                            }
18968                            update_mask__ = map_.next_value()?;
18969                        }
18970                        GeneratedField::RequestId => {
18971                            if request_id__.is_some() {
18972                                return Err(serde::de::Error::duplicate_field("requestId"));
18973                            }
18974                            request_id__ = Some(map_.next_value()?);
18975                        }
18976                        GeneratedField::__SkipField__ => {
18977                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18978                        }
18979                    }
18980                }
18981                Ok(UpdateAclRequest {
18982                    acl: acl__,
18983                    update_mask: update_mask__,
18984                    request_id: request_id__.unwrap_or_default(),
18985                })
18986            }
18987        }
18988        deserializer
18989            .deserialize_struct(
18990                "origincloud.network.v1beta1.UpdateAclRequest",
18991                FIELDS,
18992                GeneratedVisitor,
18993            )
18994    }
18995}
18996impl serde::Serialize for UpdateDnsPolicyRequest {
18997    #[allow(deprecated)]
18998    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18999    where
19000        S: serde::Serializer,
19001    {
19002        use serde::ser::SerializeStruct;
19003        let mut len = 0;
19004        if self.dns_policy.is_some() {
19005            len += 1;
19006        }
19007        if self.update_mask.is_some() {
19008            len += 1;
19009        }
19010        if !self.request_id.is_empty() {
19011            len += 1;
19012        }
19013        let mut struct_ser = serializer
19014            .serialize_struct(
19015                "origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19016                len,
19017            )?;
19018        if let Some(v) = self.dns_policy.as_ref() {
19019            struct_ser.serialize_field("dnsPolicy", v)?;
19020        }
19021        if let Some(v) = self.update_mask.as_ref() {
19022            struct_ser.serialize_field("updateMask", v)?;
19023        }
19024        if !self.request_id.is_empty() {
19025            struct_ser.serialize_field("requestId", &self.request_id)?;
19026        }
19027        struct_ser.end()
19028    }
19029}
19030impl<'de> serde::Deserialize<'de> for UpdateDnsPolicyRequest {
19031    #[allow(deprecated)]
19032    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19033    where
19034        D: serde::Deserializer<'de>,
19035    {
19036        const FIELDS: &[&str] = &[
19037            "dns_policy",
19038            "dnsPolicy",
19039            "update_mask",
19040            "updateMask",
19041            "request_id",
19042            "requestId",
19043        ];
19044        #[allow(clippy::enum_variant_names)]
19045        enum GeneratedField {
19046            DnsPolicy,
19047            UpdateMask,
19048            RequestId,
19049            __SkipField__,
19050        }
19051        impl<'de> serde::Deserialize<'de> for GeneratedField {
19052            fn deserialize<D>(
19053                deserializer: D,
19054            ) -> std::result::Result<GeneratedField, D::Error>
19055            where
19056                D: serde::Deserializer<'de>,
19057            {
19058                struct GeneratedVisitor;
19059                impl serde::de::Visitor<'_> for GeneratedVisitor {
19060                    type Value = GeneratedField;
19061                    fn expecting(
19062                        &self,
19063                        formatter: &mut std::fmt::Formatter<'_>,
19064                    ) -> std::fmt::Result {
19065                        write!(formatter, "expected one of: {:?}", & FIELDS)
19066                    }
19067                    #[allow(unused_variables)]
19068                    fn visit_str<E>(
19069                        self,
19070                        value: &str,
19071                    ) -> std::result::Result<GeneratedField, E>
19072                    where
19073                        E: serde::de::Error,
19074                    {
19075                        match value {
19076                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
19077                            "updateMask" | "update_mask" => {
19078                                Ok(GeneratedField::UpdateMask)
19079                            }
19080                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19081                            _ => Ok(GeneratedField::__SkipField__),
19082                        }
19083                    }
19084                }
19085                deserializer.deserialize_identifier(GeneratedVisitor)
19086            }
19087        }
19088        struct GeneratedVisitor;
19089        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19090            type Value = UpdateDnsPolicyRequest;
19091            fn expecting(
19092                &self,
19093                formatter: &mut std::fmt::Formatter<'_>,
19094            ) -> std::fmt::Result {
19095                formatter
19096                    .write_str(
19097                        "struct origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19098                    )
19099            }
19100            fn visit_map<V>(
19101                self,
19102                mut map_: V,
19103            ) -> std::result::Result<UpdateDnsPolicyRequest, V::Error>
19104            where
19105                V: serde::de::MapAccess<'de>,
19106            {
19107                let mut dns_policy__ = None;
19108                let mut update_mask__ = None;
19109                let mut request_id__ = None;
19110                while let Some(k) = map_.next_key()? {
19111                    match k {
19112                        GeneratedField::DnsPolicy => {
19113                            if dns_policy__.is_some() {
19114                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
19115                            }
19116                            dns_policy__ = map_.next_value()?;
19117                        }
19118                        GeneratedField::UpdateMask => {
19119                            if update_mask__.is_some() {
19120                                return Err(serde::de::Error::duplicate_field("updateMask"));
19121                            }
19122                            update_mask__ = map_.next_value()?;
19123                        }
19124                        GeneratedField::RequestId => {
19125                            if request_id__.is_some() {
19126                                return Err(serde::de::Error::duplicate_field("requestId"));
19127                            }
19128                            request_id__ = Some(map_.next_value()?);
19129                        }
19130                        GeneratedField::__SkipField__ => {
19131                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19132                        }
19133                    }
19134                }
19135                Ok(UpdateDnsPolicyRequest {
19136                    dns_policy: dns_policy__,
19137                    update_mask: update_mask__,
19138                    request_id: request_id__.unwrap_or_default(),
19139                })
19140            }
19141        }
19142        deserializer
19143            .deserialize_struct(
19144                "origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19145                FIELDS,
19146                GeneratedVisitor,
19147            )
19148    }
19149}
19150impl serde::Serialize for UpdateFloatingIpRequest {
19151    #[allow(deprecated)]
19152    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19153    where
19154        S: serde::Serializer,
19155    {
19156        use serde::ser::SerializeStruct;
19157        let mut len = 0;
19158        if self.floating_ip.is_some() {
19159            len += 1;
19160        }
19161        if self.update_mask.is_some() {
19162            len += 1;
19163        }
19164        if !self.request_id.is_empty() {
19165            len += 1;
19166        }
19167        let mut struct_ser = serializer
19168            .serialize_struct(
19169                "origincloud.network.v1beta1.UpdateFloatingIpRequest",
19170                len,
19171            )?;
19172        if let Some(v) = self.floating_ip.as_ref() {
19173            struct_ser.serialize_field("floatingIp", v)?;
19174        }
19175        if let Some(v) = self.update_mask.as_ref() {
19176            struct_ser.serialize_field("updateMask", v)?;
19177        }
19178        if !self.request_id.is_empty() {
19179            struct_ser.serialize_field("requestId", &self.request_id)?;
19180        }
19181        struct_ser.end()
19182    }
19183}
19184impl<'de> serde::Deserialize<'de> for UpdateFloatingIpRequest {
19185    #[allow(deprecated)]
19186    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19187    where
19188        D: serde::Deserializer<'de>,
19189    {
19190        const FIELDS: &[&str] = &[
19191            "floating_ip",
19192            "floatingIp",
19193            "update_mask",
19194            "updateMask",
19195            "request_id",
19196            "requestId",
19197        ];
19198        #[allow(clippy::enum_variant_names)]
19199        enum GeneratedField {
19200            FloatingIp,
19201            UpdateMask,
19202            RequestId,
19203            __SkipField__,
19204        }
19205        impl<'de> serde::Deserialize<'de> for GeneratedField {
19206            fn deserialize<D>(
19207                deserializer: D,
19208            ) -> std::result::Result<GeneratedField, D::Error>
19209            where
19210                D: serde::Deserializer<'de>,
19211            {
19212                struct GeneratedVisitor;
19213                impl serde::de::Visitor<'_> for GeneratedVisitor {
19214                    type Value = GeneratedField;
19215                    fn expecting(
19216                        &self,
19217                        formatter: &mut std::fmt::Formatter<'_>,
19218                    ) -> std::fmt::Result {
19219                        write!(formatter, "expected one of: {:?}", & FIELDS)
19220                    }
19221                    #[allow(unused_variables)]
19222                    fn visit_str<E>(
19223                        self,
19224                        value: &str,
19225                    ) -> std::result::Result<GeneratedField, E>
19226                    where
19227                        E: serde::de::Error,
19228                    {
19229                        match value {
19230                            "floatingIp" | "floating_ip" => {
19231                                Ok(GeneratedField::FloatingIp)
19232                            }
19233                            "updateMask" | "update_mask" => {
19234                                Ok(GeneratedField::UpdateMask)
19235                            }
19236                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19237                            _ => Ok(GeneratedField::__SkipField__),
19238                        }
19239                    }
19240                }
19241                deserializer.deserialize_identifier(GeneratedVisitor)
19242            }
19243        }
19244        struct GeneratedVisitor;
19245        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19246            type Value = UpdateFloatingIpRequest;
19247            fn expecting(
19248                &self,
19249                formatter: &mut std::fmt::Formatter<'_>,
19250            ) -> std::fmt::Result {
19251                formatter
19252                    .write_str(
19253                        "struct origincloud.network.v1beta1.UpdateFloatingIpRequest",
19254                    )
19255            }
19256            fn visit_map<V>(
19257                self,
19258                mut map_: V,
19259            ) -> std::result::Result<UpdateFloatingIpRequest, V::Error>
19260            where
19261                V: serde::de::MapAccess<'de>,
19262            {
19263                let mut floating_ip__ = None;
19264                let mut update_mask__ = None;
19265                let mut request_id__ = None;
19266                while let Some(k) = map_.next_key()? {
19267                    match k {
19268                        GeneratedField::FloatingIp => {
19269                            if floating_ip__.is_some() {
19270                                return Err(serde::de::Error::duplicate_field("floatingIp"));
19271                            }
19272                            floating_ip__ = map_.next_value()?;
19273                        }
19274                        GeneratedField::UpdateMask => {
19275                            if update_mask__.is_some() {
19276                                return Err(serde::de::Error::duplicate_field("updateMask"));
19277                            }
19278                            update_mask__ = map_.next_value()?;
19279                        }
19280                        GeneratedField::RequestId => {
19281                            if request_id__.is_some() {
19282                                return Err(serde::de::Error::duplicate_field("requestId"));
19283                            }
19284                            request_id__ = Some(map_.next_value()?);
19285                        }
19286                        GeneratedField::__SkipField__ => {
19287                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19288                        }
19289                    }
19290                }
19291                Ok(UpdateFloatingIpRequest {
19292                    floating_ip: floating_ip__,
19293                    update_mask: update_mask__,
19294                    request_id: request_id__.unwrap_or_default(),
19295                })
19296            }
19297        }
19298        deserializer
19299            .deserialize_struct(
19300                "origincloud.network.v1beta1.UpdateFloatingIpRequest",
19301                FIELDS,
19302                GeneratedVisitor,
19303            )
19304    }
19305}
19306impl serde::Serialize for UpdateInternetGatewayRequest {
19307    #[allow(deprecated)]
19308    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19309    where
19310        S: serde::Serializer,
19311    {
19312        use serde::ser::SerializeStruct;
19313        let mut len = 0;
19314        if self.internet_gateway.is_some() {
19315            len += 1;
19316        }
19317        if self.update_mask.is_some() {
19318            len += 1;
19319        }
19320        if !self.request_id.is_empty() {
19321            len += 1;
19322        }
19323        let mut struct_ser = serializer
19324            .serialize_struct(
19325                "origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19326                len,
19327            )?;
19328        if let Some(v) = self.internet_gateway.as_ref() {
19329            struct_ser.serialize_field("internetGateway", v)?;
19330        }
19331        if let Some(v) = self.update_mask.as_ref() {
19332            struct_ser.serialize_field("updateMask", v)?;
19333        }
19334        if !self.request_id.is_empty() {
19335            struct_ser.serialize_field("requestId", &self.request_id)?;
19336        }
19337        struct_ser.end()
19338    }
19339}
19340impl<'de> serde::Deserialize<'de> for UpdateInternetGatewayRequest {
19341    #[allow(deprecated)]
19342    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19343    where
19344        D: serde::Deserializer<'de>,
19345    {
19346        const FIELDS: &[&str] = &[
19347            "internet_gateway",
19348            "internetGateway",
19349            "update_mask",
19350            "updateMask",
19351            "request_id",
19352            "requestId",
19353        ];
19354        #[allow(clippy::enum_variant_names)]
19355        enum GeneratedField {
19356            InternetGateway,
19357            UpdateMask,
19358            RequestId,
19359            __SkipField__,
19360        }
19361        impl<'de> serde::Deserialize<'de> for GeneratedField {
19362            fn deserialize<D>(
19363                deserializer: D,
19364            ) -> std::result::Result<GeneratedField, D::Error>
19365            where
19366                D: serde::Deserializer<'de>,
19367            {
19368                struct GeneratedVisitor;
19369                impl serde::de::Visitor<'_> for GeneratedVisitor {
19370                    type Value = GeneratedField;
19371                    fn expecting(
19372                        &self,
19373                        formatter: &mut std::fmt::Formatter<'_>,
19374                    ) -> std::fmt::Result {
19375                        write!(formatter, "expected one of: {:?}", & FIELDS)
19376                    }
19377                    #[allow(unused_variables)]
19378                    fn visit_str<E>(
19379                        self,
19380                        value: &str,
19381                    ) -> std::result::Result<GeneratedField, E>
19382                    where
19383                        E: serde::de::Error,
19384                    {
19385                        match value {
19386                            "internetGateway" | "internet_gateway" => {
19387                                Ok(GeneratedField::InternetGateway)
19388                            }
19389                            "updateMask" | "update_mask" => {
19390                                Ok(GeneratedField::UpdateMask)
19391                            }
19392                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19393                            _ => Ok(GeneratedField::__SkipField__),
19394                        }
19395                    }
19396                }
19397                deserializer.deserialize_identifier(GeneratedVisitor)
19398            }
19399        }
19400        struct GeneratedVisitor;
19401        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19402            type Value = UpdateInternetGatewayRequest;
19403            fn expecting(
19404                &self,
19405                formatter: &mut std::fmt::Formatter<'_>,
19406            ) -> std::fmt::Result {
19407                formatter
19408                    .write_str(
19409                        "struct origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19410                    )
19411            }
19412            fn visit_map<V>(
19413                self,
19414                mut map_: V,
19415            ) -> std::result::Result<UpdateInternetGatewayRequest, V::Error>
19416            where
19417                V: serde::de::MapAccess<'de>,
19418            {
19419                let mut internet_gateway__ = None;
19420                let mut update_mask__ = None;
19421                let mut request_id__ = None;
19422                while let Some(k) = map_.next_key()? {
19423                    match k {
19424                        GeneratedField::InternetGateway => {
19425                            if internet_gateway__.is_some() {
19426                                return Err(
19427                                    serde::de::Error::duplicate_field("internetGateway"),
19428                                );
19429                            }
19430                            internet_gateway__ = map_.next_value()?;
19431                        }
19432                        GeneratedField::UpdateMask => {
19433                            if update_mask__.is_some() {
19434                                return Err(serde::de::Error::duplicate_field("updateMask"));
19435                            }
19436                            update_mask__ = map_.next_value()?;
19437                        }
19438                        GeneratedField::RequestId => {
19439                            if request_id__.is_some() {
19440                                return Err(serde::de::Error::duplicate_field("requestId"));
19441                            }
19442                            request_id__ = Some(map_.next_value()?);
19443                        }
19444                        GeneratedField::__SkipField__ => {
19445                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19446                        }
19447                    }
19448                }
19449                Ok(UpdateInternetGatewayRequest {
19450                    internet_gateway: internet_gateway__,
19451                    update_mask: update_mask__,
19452                    request_id: request_id__.unwrap_or_default(),
19453                })
19454            }
19455        }
19456        deserializer
19457            .deserialize_struct(
19458                "origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19459                FIELDS,
19460                GeneratedVisitor,
19461            )
19462    }
19463}
19464impl serde::Serialize for UpdateNatGatewayRequest {
19465    #[allow(deprecated)]
19466    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19467    where
19468        S: serde::Serializer,
19469    {
19470        use serde::ser::SerializeStruct;
19471        let mut len = 0;
19472        if self.nat_gateway.is_some() {
19473            len += 1;
19474        }
19475        if self.update_mask.is_some() {
19476            len += 1;
19477        }
19478        if !self.request_id.is_empty() {
19479            len += 1;
19480        }
19481        let mut struct_ser = serializer
19482            .serialize_struct(
19483                "origincloud.network.v1beta1.UpdateNatGatewayRequest",
19484                len,
19485            )?;
19486        if let Some(v) = self.nat_gateway.as_ref() {
19487            struct_ser.serialize_field("natGateway", v)?;
19488        }
19489        if let Some(v) = self.update_mask.as_ref() {
19490            struct_ser.serialize_field("updateMask", v)?;
19491        }
19492        if !self.request_id.is_empty() {
19493            struct_ser.serialize_field("requestId", &self.request_id)?;
19494        }
19495        struct_ser.end()
19496    }
19497}
19498impl<'de> serde::Deserialize<'de> for UpdateNatGatewayRequest {
19499    #[allow(deprecated)]
19500    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19501    where
19502        D: serde::Deserializer<'de>,
19503    {
19504        const FIELDS: &[&str] = &[
19505            "nat_gateway",
19506            "natGateway",
19507            "update_mask",
19508            "updateMask",
19509            "request_id",
19510            "requestId",
19511        ];
19512        #[allow(clippy::enum_variant_names)]
19513        enum GeneratedField {
19514            NatGateway,
19515            UpdateMask,
19516            RequestId,
19517            __SkipField__,
19518        }
19519        impl<'de> serde::Deserialize<'de> for GeneratedField {
19520            fn deserialize<D>(
19521                deserializer: D,
19522            ) -> std::result::Result<GeneratedField, D::Error>
19523            where
19524                D: serde::Deserializer<'de>,
19525            {
19526                struct GeneratedVisitor;
19527                impl serde::de::Visitor<'_> for GeneratedVisitor {
19528                    type Value = GeneratedField;
19529                    fn expecting(
19530                        &self,
19531                        formatter: &mut std::fmt::Formatter<'_>,
19532                    ) -> std::fmt::Result {
19533                        write!(formatter, "expected one of: {:?}", & FIELDS)
19534                    }
19535                    #[allow(unused_variables)]
19536                    fn visit_str<E>(
19537                        self,
19538                        value: &str,
19539                    ) -> std::result::Result<GeneratedField, E>
19540                    where
19541                        E: serde::de::Error,
19542                    {
19543                        match value {
19544                            "natGateway" | "nat_gateway" => {
19545                                Ok(GeneratedField::NatGateway)
19546                            }
19547                            "updateMask" | "update_mask" => {
19548                                Ok(GeneratedField::UpdateMask)
19549                            }
19550                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19551                            _ => Ok(GeneratedField::__SkipField__),
19552                        }
19553                    }
19554                }
19555                deserializer.deserialize_identifier(GeneratedVisitor)
19556            }
19557        }
19558        struct GeneratedVisitor;
19559        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19560            type Value = UpdateNatGatewayRequest;
19561            fn expecting(
19562                &self,
19563                formatter: &mut std::fmt::Formatter<'_>,
19564            ) -> std::fmt::Result {
19565                formatter
19566                    .write_str(
19567                        "struct origincloud.network.v1beta1.UpdateNatGatewayRequest",
19568                    )
19569            }
19570            fn visit_map<V>(
19571                self,
19572                mut map_: V,
19573            ) -> std::result::Result<UpdateNatGatewayRequest, V::Error>
19574            where
19575                V: serde::de::MapAccess<'de>,
19576            {
19577                let mut nat_gateway__ = None;
19578                let mut update_mask__ = None;
19579                let mut request_id__ = None;
19580                while let Some(k) = map_.next_key()? {
19581                    match k {
19582                        GeneratedField::NatGateway => {
19583                            if nat_gateway__.is_some() {
19584                                return Err(serde::de::Error::duplicate_field("natGateway"));
19585                            }
19586                            nat_gateway__ = map_.next_value()?;
19587                        }
19588                        GeneratedField::UpdateMask => {
19589                            if update_mask__.is_some() {
19590                                return Err(serde::de::Error::duplicate_field("updateMask"));
19591                            }
19592                            update_mask__ = map_.next_value()?;
19593                        }
19594                        GeneratedField::RequestId => {
19595                            if request_id__.is_some() {
19596                                return Err(serde::de::Error::duplicate_field("requestId"));
19597                            }
19598                            request_id__ = Some(map_.next_value()?);
19599                        }
19600                        GeneratedField::__SkipField__ => {
19601                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19602                        }
19603                    }
19604                }
19605                Ok(UpdateNatGatewayRequest {
19606                    nat_gateway: nat_gateway__,
19607                    update_mask: update_mask__,
19608                    request_id: request_id__.unwrap_or_default(),
19609                })
19610            }
19611        }
19612        deserializer
19613            .deserialize_struct(
19614                "origincloud.network.v1beta1.UpdateNatGatewayRequest",
19615                FIELDS,
19616                GeneratedVisitor,
19617            )
19618    }
19619}
19620impl serde::Serialize for UpdateNetworkInterfaceRequest {
19621    #[allow(deprecated)]
19622    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19623    where
19624        S: serde::Serializer,
19625    {
19626        use serde::ser::SerializeStruct;
19627        let mut len = 0;
19628        if self.network_interface.is_some() {
19629            len += 1;
19630        }
19631        if self.update_mask.is_some() {
19632            len += 1;
19633        }
19634        if !self.request_id.is_empty() {
19635            len += 1;
19636        }
19637        let mut struct_ser = serializer
19638            .serialize_struct(
19639                "origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19640                len,
19641            )?;
19642        if let Some(v) = self.network_interface.as_ref() {
19643            struct_ser.serialize_field("networkInterface", v)?;
19644        }
19645        if let Some(v) = self.update_mask.as_ref() {
19646            struct_ser.serialize_field("updateMask", v)?;
19647        }
19648        if !self.request_id.is_empty() {
19649            struct_ser.serialize_field("requestId", &self.request_id)?;
19650        }
19651        struct_ser.end()
19652    }
19653}
19654impl<'de> serde::Deserialize<'de> for UpdateNetworkInterfaceRequest {
19655    #[allow(deprecated)]
19656    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19657    where
19658        D: serde::Deserializer<'de>,
19659    {
19660        const FIELDS: &[&str] = &[
19661            "network_interface",
19662            "networkInterface",
19663            "update_mask",
19664            "updateMask",
19665            "request_id",
19666            "requestId",
19667        ];
19668        #[allow(clippy::enum_variant_names)]
19669        enum GeneratedField {
19670            NetworkInterface,
19671            UpdateMask,
19672            RequestId,
19673            __SkipField__,
19674        }
19675        impl<'de> serde::Deserialize<'de> for GeneratedField {
19676            fn deserialize<D>(
19677                deserializer: D,
19678            ) -> std::result::Result<GeneratedField, D::Error>
19679            where
19680                D: serde::Deserializer<'de>,
19681            {
19682                struct GeneratedVisitor;
19683                impl serde::de::Visitor<'_> for GeneratedVisitor {
19684                    type Value = GeneratedField;
19685                    fn expecting(
19686                        &self,
19687                        formatter: &mut std::fmt::Formatter<'_>,
19688                    ) -> std::fmt::Result {
19689                        write!(formatter, "expected one of: {:?}", & FIELDS)
19690                    }
19691                    #[allow(unused_variables)]
19692                    fn visit_str<E>(
19693                        self,
19694                        value: &str,
19695                    ) -> std::result::Result<GeneratedField, E>
19696                    where
19697                        E: serde::de::Error,
19698                    {
19699                        match value {
19700                            "networkInterface" | "network_interface" => {
19701                                Ok(GeneratedField::NetworkInterface)
19702                            }
19703                            "updateMask" | "update_mask" => {
19704                                Ok(GeneratedField::UpdateMask)
19705                            }
19706                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19707                            _ => Ok(GeneratedField::__SkipField__),
19708                        }
19709                    }
19710                }
19711                deserializer.deserialize_identifier(GeneratedVisitor)
19712            }
19713        }
19714        struct GeneratedVisitor;
19715        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19716            type Value = UpdateNetworkInterfaceRequest;
19717            fn expecting(
19718                &self,
19719                formatter: &mut std::fmt::Formatter<'_>,
19720            ) -> std::fmt::Result {
19721                formatter
19722                    .write_str(
19723                        "struct origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19724                    )
19725            }
19726            fn visit_map<V>(
19727                self,
19728                mut map_: V,
19729            ) -> std::result::Result<UpdateNetworkInterfaceRequest, V::Error>
19730            where
19731                V: serde::de::MapAccess<'de>,
19732            {
19733                let mut network_interface__ = None;
19734                let mut update_mask__ = None;
19735                let mut request_id__ = None;
19736                while let Some(k) = map_.next_key()? {
19737                    match k {
19738                        GeneratedField::NetworkInterface => {
19739                            if network_interface__.is_some() {
19740                                return Err(
19741                                    serde::de::Error::duplicate_field("networkInterface"),
19742                                );
19743                            }
19744                            network_interface__ = map_.next_value()?;
19745                        }
19746                        GeneratedField::UpdateMask => {
19747                            if update_mask__.is_some() {
19748                                return Err(serde::de::Error::duplicate_field("updateMask"));
19749                            }
19750                            update_mask__ = map_.next_value()?;
19751                        }
19752                        GeneratedField::RequestId => {
19753                            if request_id__.is_some() {
19754                                return Err(serde::de::Error::duplicate_field("requestId"));
19755                            }
19756                            request_id__ = Some(map_.next_value()?);
19757                        }
19758                        GeneratedField::__SkipField__ => {
19759                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19760                        }
19761                    }
19762                }
19763                Ok(UpdateNetworkInterfaceRequest {
19764                    network_interface: network_interface__,
19765                    update_mask: update_mask__,
19766                    request_id: request_id__.unwrap_or_default(),
19767                })
19768            }
19769        }
19770        deserializer
19771            .deserialize_struct(
19772                "origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19773                FIELDS,
19774                GeneratedVisitor,
19775            )
19776    }
19777}
19778impl serde::Serialize for UpdateRouteTableRequest {
19779    #[allow(deprecated)]
19780    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19781    where
19782        S: serde::Serializer,
19783    {
19784        use serde::ser::SerializeStruct;
19785        let mut len = 0;
19786        if self.route_table.is_some() {
19787            len += 1;
19788        }
19789        if self.update_mask.is_some() {
19790            len += 1;
19791        }
19792        if !self.request_id.is_empty() {
19793            len += 1;
19794        }
19795        let mut struct_ser = serializer
19796            .serialize_struct(
19797                "origincloud.network.v1beta1.UpdateRouteTableRequest",
19798                len,
19799            )?;
19800        if let Some(v) = self.route_table.as_ref() {
19801            struct_ser.serialize_field("routeTable", v)?;
19802        }
19803        if let Some(v) = self.update_mask.as_ref() {
19804            struct_ser.serialize_field("updateMask", v)?;
19805        }
19806        if !self.request_id.is_empty() {
19807            struct_ser.serialize_field("requestId", &self.request_id)?;
19808        }
19809        struct_ser.end()
19810    }
19811}
19812impl<'de> serde::Deserialize<'de> for UpdateRouteTableRequest {
19813    #[allow(deprecated)]
19814    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19815    where
19816        D: serde::Deserializer<'de>,
19817    {
19818        const FIELDS: &[&str] = &[
19819            "route_table",
19820            "routeTable",
19821            "update_mask",
19822            "updateMask",
19823            "request_id",
19824            "requestId",
19825        ];
19826        #[allow(clippy::enum_variant_names)]
19827        enum GeneratedField {
19828            RouteTable,
19829            UpdateMask,
19830            RequestId,
19831            __SkipField__,
19832        }
19833        impl<'de> serde::Deserialize<'de> for GeneratedField {
19834            fn deserialize<D>(
19835                deserializer: D,
19836            ) -> std::result::Result<GeneratedField, D::Error>
19837            where
19838                D: serde::Deserializer<'de>,
19839            {
19840                struct GeneratedVisitor;
19841                impl serde::de::Visitor<'_> for GeneratedVisitor {
19842                    type Value = GeneratedField;
19843                    fn expecting(
19844                        &self,
19845                        formatter: &mut std::fmt::Formatter<'_>,
19846                    ) -> std::fmt::Result {
19847                        write!(formatter, "expected one of: {:?}", & FIELDS)
19848                    }
19849                    #[allow(unused_variables)]
19850                    fn visit_str<E>(
19851                        self,
19852                        value: &str,
19853                    ) -> std::result::Result<GeneratedField, E>
19854                    where
19855                        E: serde::de::Error,
19856                    {
19857                        match value {
19858                            "routeTable" | "route_table" => {
19859                                Ok(GeneratedField::RouteTable)
19860                            }
19861                            "updateMask" | "update_mask" => {
19862                                Ok(GeneratedField::UpdateMask)
19863                            }
19864                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19865                            _ => Ok(GeneratedField::__SkipField__),
19866                        }
19867                    }
19868                }
19869                deserializer.deserialize_identifier(GeneratedVisitor)
19870            }
19871        }
19872        struct GeneratedVisitor;
19873        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19874            type Value = UpdateRouteTableRequest;
19875            fn expecting(
19876                &self,
19877                formatter: &mut std::fmt::Formatter<'_>,
19878            ) -> std::fmt::Result {
19879                formatter
19880                    .write_str(
19881                        "struct origincloud.network.v1beta1.UpdateRouteTableRequest",
19882                    )
19883            }
19884            fn visit_map<V>(
19885                self,
19886                mut map_: V,
19887            ) -> std::result::Result<UpdateRouteTableRequest, V::Error>
19888            where
19889                V: serde::de::MapAccess<'de>,
19890            {
19891                let mut route_table__ = None;
19892                let mut update_mask__ = None;
19893                let mut request_id__ = None;
19894                while let Some(k) = map_.next_key()? {
19895                    match k {
19896                        GeneratedField::RouteTable => {
19897                            if route_table__.is_some() {
19898                                return Err(serde::de::Error::duplicate_field("routeTable"));
19899                            }
19900                            route_table__ = map_.next_value()?;
19901                        }
19902                        GeneratedField::UpdateMask => {
19903                            if update_mask__.is_some() {
19904                                return Err(serde::de::Error::duplicate_field("updateMask"));
19905                            }
19906                            update_mask__ = map_.next_value()?;
19907                        }
19908                        GeneratedField::RequestId => {
19909                            if request_id__.is_some() {
19910                                return Err(serde::de::Error::duplicate_field("requestId"));
19911                            }
19912                            request_id__ = Some(map_.next_value()?);
19913                        }
19914                        GeneratedField::__SkipField__ => {
19915                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19916                        }
19917                    }
19918                }
19919                Ok(UpdateRouteTableRequest {
19920                    route_table: route_table__,
19921                    update_mask: update_mask__,
19922                    request_id: request_id__.unwrap_or_default(),
19923                })
19924            }
19925        }
19926        deserializer
19927            .deserialize_struct(
19928                "origincloud.network.v1beta1.UpdateRouteTableRequest",
19929                FIELDS,
19930                GeneratedVisitor,
19931            )
19932    }
19933}
19934impl serde::Serialize for UpdateSecurityGroupRequest {
19935    #[allow(deprecated)]
19936    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19937    where
19938        S: serde::Serializer,
19939    {
19940        use serde::ser::SerializeStruct;
19941        let mut len = 0;
19942        if self.security_group.is_some() {
19943            len += 1;
19944        }
19945        if self.update_mask.is_some() {
19946            len += 1;
19947        }
19948        if !self.request_id.is_empty() {
19949            len += 1;
19950        }
19951        let mut struct_ser = serializer
19952            .serialize_struct(
19953                "origincloud.network.v1beta1.UpdateSecurityGroupRequest",
19954                len,
19955            )?;
19956        if let Some(v) = self.security_group.as_ref() {
19957            struct_ser.serialize_field("securityGroup", v)?;
19958        }
19959        if let Some(v) = self.update_mask.as_ref() {
19960            struct_ser.serialize_field("updateMask", v)?;
19961        }
19962        if !self.request_id.is_empty() {
19963            struct_ser.serialize_field("requestId", &self.request_id)?;
19964        }
19965        struct_ser.end()
19966    }
19967}
19968impl<'de> serde::Deserialize<'de> for UpdateSecurityGroupRequest {
19969    #[allow(deprecated)]
19970    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19971    where
19972        D: serde::Deserializer<'de>,
19973    {
19974        const FIELDS: &[&str] = &[
19975            "security_group",
19976            "securityGroup",
19977            "update_mask",
19978            "updateMask",
19979            "request_id",
19980            "requestId",
19981        ];
19982        #[allow(clippy::enum_variant_names)]
19983        enum GeneratedField {
19984            SecurityGroup,
19985            UpdateMask,
19986            RequestId,
19987            __SkipField__,
19988        }
19989        impl<'de> serde::Deserialize<'de> for GeneratedField {
19990            fn deserialize<D>(
19991                deserializer: D,
19992            ) -> std::result::Result<GeneratedField, D::Error>
19993            where
19994                D: serde::Deserializer<'de>,
19995            {
19996                struct GeneratedVisitor;
19997                impl serde::de::Visitor<'_> for GeneratedVisitor {
19998                    type Value = GeneratedField;
19999                    fn expecting(
20000                        &self,
20001                        formatter: &mut std::fmt::Formatter<'_>,
20002                    ) -> std::fmt::Result {
20003                        write!(formatter, "expected one of: {:?}", & FIELDS)
20004                    }
20005                    #[allow(unused_variables)]
20006                    fn visit_str<E>(
20007                        self,
20008                        value: &str,
20009                    ) -> std::result::Result<GeneratedField, E>
20010                    where
20011                        E: serde::de::Error,
20012                    {
20013                        match value {
20014                            "securityGroup" | "security_group" => {
20015                                Ok(GeneratedField::SecurityGroup)
20016                            }
20017                            "updateMask" | "update_mask" => {
20018                                Ok(GeneratedField::UpdateMask)
20019                            }
20020                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20021                            _ => Ok(GeneratedField::__SkipField__),
20022                        }
20023                    }
20024                }
20025                deserializer.deserialize_identifier(GeneratedVisitor)
20026            }
20027        }
20028        struct GeneratedVisitor;
20029        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20030            type Value = UpdateSecurityGroupRequest;
20031            fn expecting(
20032                &self,
20033                formatter: &mut std::fmt::Formatter<'_>,
20034            ) -> std::fmt::Result {
20035                formatter
20036                    .write_str(
20037                        "struct origincloud.network.v1beta1.UpdateSecurityGroupRequest",
20038                    )
20039            }
20040            fn visit_map<V>(
20041                self,
20042                mut map_: V,
20043            ) -> std::result::Result<UpdateSecurityGroupRequest, V::Error>
20044            where
20045                V: serde::de::MapAccess<'de>,
20046            {
20047                let mut security_group__ = None;
20048                let mut update_mask__ = None;
20049                let mut request_id__ = None;
20050                while let Some(k) = map_.next_key()? {
20051                    match k {
20052                        GeneratedField::SecurityGroup => {
20053                            if security_group__.is_some() {
20054                                return Err(
20055                                    serde::de::Error::duplicate_field("securityGroup"),
20056                                );
20057                            }
20058                            security_group__ = map_.next_value()?;
20059                        }
20060                        GeneratedField::UpdateMask => {
20061                            if update_mask__.is_some() {
20062                                return Err(serde::de::Error::duplicate_field("updateMask"));
20063                            }
20064                            update_mask__ = map_.next_value()?;
20065                        }
20066                        GeneratedField::RequestId => {
20067                            if request_id__.is_some() {
20068                                return Err(serde::de::Error::duplicate_field("requestId"));
20069                            }
20070                            request_id__ = Some(map_.next_value()?);
20071                        }
20072                        GeneratedField::__SkipField__ => {
20073                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20074                        }
20075                    }
20076                }
20077                Ok(UpdateSecurityGroupRequest {
20078                    security_group: security_group__,
20079                    update_mask: update_mask__,
20080                    request_id: request_id__.unwrap_or_default(),
20081                })
20082            }
20083        }
20084        deserializer
20085            .deserialize_struct(
20086                "origincloud.network.v1beta1.UpdateSecurityGroupRequest",
20087                FIELDS,
20088                GeneratedVisitor,
20089            )
20090    }
20091}
20092impl serde::Serialize for UpdateSubnetRequest {
20093    #[allow(deprecated)]
20094    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20095    where
20096        S: serde::Serializer,
20097    {
20098        use serde::ser::SerializeStruct;
20099        let mut len = 0;
20100        if self.subnet.is_some() {
20101            len += 1;
20102        }
20103        if self.update_mask.is_some() {
20104            len += 1;
20105        }
20106        if !self.request_id.is_empty() {
20107            len += 1;
20108        }
20109        let mut struct_ser = serializer
20110            .serialize_struct("origincloud.network.v1beta1.UpdateSubnetRequest", len)?;
20111        if let Some(v) = self.subnet.as_ref() {
20112            struct_ser.serialize_field("subnet", v)?;
20113        }
20114        if let Some(v) = self.update_mask.as_ref() {
20115            struct_ser.serialize_field("updateMask", v)?;
20116        }
20117        if !self.request_id.is_empty() {
20118            struct_ser.serialize_field("requestId", &self.request_id)?;
20119        }
20120        struct_ser.end()
20121    }
20122}
20123impl<'de> serde::Deserialize<'de> for UpdateSubnetRequest {
20124    #[allow(deprecated)]
20125    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20126    where
20127        D: serde::Deserializer<'de>,
20128    {
20129        const FIELDS: &[&str] = &[
20130            "subnet",
20131            "update_mask",
20132            "updateMask",
20133            "request_id",
20134            "requestId",
20135        ];
20136        #[allow(clippy::enum_variant_names)]
20137        enum GeneratedField {
20138            Subnet,
20139            UpdateMask,
20140            RequestId,
20141            __SkipField__,
20142        }
20143        impl<'de> serde::Deserialize<'de> for GeneratedField {
20144            fn deserialize<D>(
20145                deserializer: D,
20146            ) -> std::result::Result<GeneratedField, D::Error>
20147            where
20148                D: serde::Deserializer<'de>,
20149            {
20150                struct GeneratedVisitor;
20151                impl serde::de::Visitor<'_> for GeneratedVisitor {
20152                    type Value = GeneratedField;
20153                    fn expecting(
20154                        &self,
20155                        formatter: &mut std::fmt::Formatter<'_>,
20156                    ) -> std::fmt::Result {
20157                        write!(formatter, "expected one of: {:?}", & FIELDS)
20158                    }
20159                    #[allow(unused_variables)]
20160                    fn visit_str<E>(
20161                        self,
20162                        value: &str,
20163                    ) -> std::result::Result<GeneratedField, E>
20164                    where
20165                        E: serde::de::Error,
20166                    {
20167                        match value {
20168                            "subnet" => Ok(GeneratedField::Subnet),
20169                            "updateMask" | "update_mask" => {
20170                                Ok(GeneratedField::UpdateMask)
20171                            }
20172                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20173                            _ => Ok(GeneratedField::__SkipField__),
20174                        }
20175                    }
20176                }
20177                deserializer.deserialize_identifier(GeneratedVisitor)
20178            }
20179        }
20180        struct GeneratedVisitor;
20181        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20182            type Value = UpdateSubnetRequest;
20183            fn expecting(
20184                &self,
20185                formatter: &mut std::fmt::Formatter<'_>,
20186            ) -> std::fmt::Result {
20187                formatter
20188                    .write_str("struct origincloud.network.v1beta1.UpdateSubnetRequest")
20189            }
20190            fn visit_map<V>(
20191                self,
20192                mut map_: V,
20193            ) -> std::result::Result<UpdateSubnetRequest, V::Error>
20194            where
20195                V: serde::de::MapAccess<'de>,
20196            {
20197                let mut subnet__ = None;
20198                let mut update_mask__ = None;
20199                let mut request_id__ = None;
20200                while let Some(k) = map_.next_key()? {
20201                    match k {
20202                        GeneratedField::Subnet => {
20203                            if subnet__.is_some() {
20204                                return Err(serde::de::Error::duplicate_field("subnet"));
20205                            }
20206                            subnet__ = map_.next_value()?;
20207                        }
20208                        GeneratedField::UpdateMask => {
20209                            if update_mask__.is_some() {
20210                                return Err(serde::de::Error::duplicate_field("updateMask"));
20211                            }
20212                            update_mask__ = map_.next_value()?;
20213                        }
20214                        GeneratedField::RequestId => {
20215                            if request_id__.is_some() {
20216                                return Err(serde::de::Error::duplicate_field("requestId"));
20217                            }
20218                            request_id__ = Some(map_.next_value()?);
20219                        }
20220                        GeneratedField::__SkipField__ => {
20221                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20222                        }
20223                    }
20224                }
20225                Ok(UpdateSubnetRequest {
20226                    subnet: subnet__,
20227                    update_mask: update_mask__,
20228                    request_id: request_id__.unwrap_or_default(),
20229                })
20230            }
20231        }
20232        deserializer
20233            .deserialize_struct(
20234                "origincloud.network.v1beta1.UpdateSubnetRequest",
20235                FIELDS,
20236                GeneratedVisitor,
20237            )
20238    }
20239}
20240impl serde::Serialize for UpdateVpcRequest {
20241    #[allow(deprecated)]
20242    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20243    where
20244        S: serde::Serializer,
20245    {
20246        use serde::ser::SerializeStruct;
20247        let mut len = 0;
20248        if self.vpc.is_some() {
20249            len += 1;
20250        }
20251        if self.update_mask.is_some() {
20252            len += 1;
20253        }
20254        if !self.request_id.is_empty() {
20255            len += 1;
20256        }
20257        let mut struct_ser = serializer
20258            .serialize_struct("origincloud.network.v1beta1.UpdateVpcRequest", len)?;
20259        if let Some(v) = self.vpc.as_ref() {
20260            struct_ser.serialize_field("vpc", v)?;
20261        }
20262        if let Some(v) = self.update_mask.as_ref() {
20263            struct_ser.serialize_field("updateMask", v)?;
20264        }
20265        if !self.request_id.is_empty() {
20266            struct_ser.serialize_field("requestId", &self.request_id)?;
20267        }
20268        struct_ser.end()
20269    }
20270}
20271impl<'de> serde::Deserialize<'de> for UpdateVpcRequest {
20272    #[allow(deprecated)]
20273    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20274    where
20275        D: serde::Deserializer<'de>,
20276    {
20277        const FIELDS: &[&str] = &[
20278            "vpc",
20279            "update_mask",
20280            "updateMask",
20281            "request_id",
20282            "requestId",
20283        ];
20284        #[allow(clippy::enum_variant_names)]
20285        enum GeneratedField {
20286            Vpc,
20287            UpdateMask,
20288            RequestId,
20289            __SkipField__,
20290        }
20291        impl<'de> serde::Deserialize<'de> for GeneratedField {
20292            fn deserialize<D>(
20293                deserializer: D,
20294            ) -> std::result::Result<GeneratedField, D::Error>
20295            where
20296                D: serde::Deserializer<'de>,
20297            {
20298                struct GeneratedVisitor;
20299                impl serde::de::Visitor<'_> for GeneratedVisitor {
20300                    type Value = GeneratedField;
20301                    fn expecting(
20302                        &self,
20303                        formatter: &mut std::fmt::Formatter<'_>,
20304                    ) -> std::fmt::Result {
20305                        write!(formatter, "expected one of: {:?}", & FIELDS)
20306                    }
20307                    #[allow(unused_variables)]
20308                    fn visit_str<E>(
20309                        self,
20310                        value: &str,
20311                    ) -> std::result::Result<GeneratedField, E>
20312                    where
20313                        E: serde::de::Error,
20314                    {
20315                        match value {
20316                            "vpc" => Ok(GeneratedField::Vpc),
20317                            "updateMask" | "update_mask" => {
20318                                Ok(GeneratedField::UpdateMask)
20319                            }
20320                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20321                            _ => Ok(GeneratedField::__SkipField__),
20322                        }
20323                    }
20324                }
20325                deserializer.deserialize_identifier(GeneratedVisitor)
20326            }
20327        }
20328        struct GeneratedVisitor;
20329        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20330            type Value = UpdateVpcRequest;
20331            fn expecting(
20332                &self,
20333                formatter: &mut std::fmt::Formatter<'_>,
20334            ) -> std::fmt::Result {
20335                formatter
20336                    .write_str("struct origincloud.network.v1beta1.UpdateVpcRequest")
20337            }
20338            fn visit_map<V>(
20339                self,
20340                mut map_: V,
20341            ) -> std::result::Result<UpdateVpcRequest, V::Error>
20342            where
20343                V: serde::de::MapAccess<'de>,
20344            {
20345                let mut vpc__ = None;
20346                let mut update_mask__ = None;
20347                let mut request_id__ = None;
20348                while let Some(k) = map_.next_key()? {
20349                    match k {
20350                        GeneratedField::Vpc => {
20351                            if vpc__.is_some() {
20352                                return Err(serde::de::Error::duplicate_field("vpc"));
20353                            }
20354                            vpc__ = map_.next_value()?;
20355                        }
20356                        GeneratedField::UpdateMask => {
20357                            if update_mask__.is_some() {
20358                                return Err(serde::de::Error::duplicate_field("updateMask"));
20359                            }
20360                            update_mask__ = map_.next_value()?;
20361                        }
20362                        GeneratedField::RequestId => {
20363                            if request_id__.is_some() {
20364                                return Err(serde::de::Error::duplicate_field("requestId"));
20365                            }
20366                            request_id__ = Some(map_.next_value()?);
20367                        }
20368                        GeneratedField::__SkipField__ => {
20369                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20370                        }
20371                    }
20372                }
20373                Ok(UpdateVpcRequest {
20374                    vpc: vpc__,
20375                    update_mask: update_mask__,
20376                    request_id: request_id__.unwrap_or_default(),
20377                })
20378            }
20379        }
20380        deserializer
20381            .deserialize_struct(
20382                "origincloud.network.v1beta1.UpdateVpcRequest",
20383                FIELDS,
20384                GeneratedVisitor,
20385            )
20386    }
20387}
20388impl serde::Serialize for Vpc {
20389    #[allow(deprecated)]
20390    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20391    where
20392        S: serde::Serializer,
20393    {
20394        use serde::ser::SerializeStruct;
20395        let mut len = 0;
20396        if !self.name.is_empty() {
20397            len += 1;
20398        }
20399        if !self.urn.is_empty() {
20400            len += 1;
20401        }
20402        if !self.ipv4_cidr_block.is_empty() {
20403            len += 1;
20404        }
20405        if !self.ipv6_cidr_block.is_empty() {
20406            len += 1;
20407        }
20408        if self.subnet_ipv4_prefix_length != 0 {
20409            len += 1;
20410        }
20411        if self.available_subnet_count != 0 {
20412            len += 1;
20413        }
20414        if !self.dns_policy.is_empty() {
20415            len += 1;
20416        }
20417        if !self.internet_gateway.is_empty() {
20418            len += 1;
20419        }
20420        if self.project_default {
20421            len += 1;
20422        }
20423        if self.create_time.is_some() {
20424            len += 1;
20425        }
20426        if !self.creator.is_empty() {
20427            len += 1;
20428        }
20429        if !self.tags.is_empty() {
20430            len += 1;
20431        }
20432        let mut struct_ser = serializer
20433            .serialize_struct("origincloud.network.v1beta1.Vpc", len)?;
20434        if !self.name.is_empty() {
20435            struct_ser.serialize_field("name", &self.name)?;
20436        }
20437        if !self.urn.is_empty() {
20438            struct_ser.serialize_field("urn", &self.urn)?;
20439        }
20440        if !self.ipv4_cidr_block.is_empty() {
20441            struct_ser.serialize_field("ipv4CidrBlock", &self.ipv4_cidr_block)?;
20442        }
20443        if !self.ipv6_cidr_block.is_empty() {
20444            struct_ser.serialize_field("ipv6CidrBlock", &self.ipv6_cidr_block)?;
20445        }
20446        if self.subnet_ipv4_prefix_length != 0 {
20447            struct_ser
20448                .serialize_field(
20449                    "subnetIpv4PrefixLength",
20450                    &self.subnet_ipv4_prefix_length,
20451                )?;
20452        }
20453        if self.available_subnet_count != 0 {
20454            struct_ser
20455                .serialize_field("availableSubnetCount", &self.available_subnet_count)?;
20456        }
20457        if !self.dns_policy.is_empty() {
20458            struct_ser.serialize_field("dnsPolicy", &self.dns_policy)?;
20459        }
20460        if !self.internet_gateway.is_empty() {
20461            struct_ser.serialize_field("internetGateway", &self.internet_gateway)?;
20462        }
20463        if self.project_default {
20464            struct_ser.serialize_field("projectDefault", &self.project_default)?;
20465        }
20466        if let Some(v) = self.create_time.as_ref() {
20467            struct_ser.serialize_field("createTime", v)?;
20468        }
20469        if !self.creator.is_empty() {
20470            struct_ser.serialize_field("creator", &self.creator)?;
20471        }
20472        if !self.tags.is_empty() {
20473            struct_ser.serialize_field("tags", &self.tags)?;
20474        }
20475        struct_ser.end()
20476    }
20477}
20478impl<'de> serde::Deserialize<'de> for Vpc {
20479    #[allow(deprecated)]
20480    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20481    where
20482        D: serde::Deserializer<'de>,
20483    {
20484        const FIELDS: &[&str] = &[
20485            "name",
20486            "urn",
20487            "ipv4_cidr_block",
20488            "ipv4CidrBlock",
20489            "ipv6_cidr_block",
20490            "ipv6CidrBlock",
20491            "subnet_ipv4_prefix_length",
20492            "subnetIpv4PrefixLength",
20493            "available_subnet_count",
20494            "availableSubnetCount",
20495            "dns_policy",
20496            "dnsPolicy",
20497            "internet_gateway",
20498            "internetGateway",
20499            "project_default",
20500            "projectDefault",
20501            "create_time",
20502            "createTime",
20503            "creator",
20504            "tags",
20505        ];
20506        #[allow(clippy::enum_variant_names)]
20507        enum GeneratedField {
20508            Name,
20509            Urn,
20510            Ipv4CidrBlock,
20511            Ipv6CidrBlock,
20512            SubnetIpv4PrefixLength,
20513            AvailableSubnetCount,
20514            DnsPolicy,
20515            InternetGateway,
20516            ProjectDefault,
20517            CreateTime,
20518            Creator,
20519            Tags,
20520            __SkipField__,
20521        }
20522        impl<'de> serde::Deserialize<'de> for GeneratedField {
20523            fn deserialize<D>(
20524                deserializer: D,
20525            ) -> std::result::Result<GeneratedField, D::Error>
20526            where
20527                D: serde::Deserializer<'de>,
20528            {
20529                struct GeneratedVisitor;
20530                impl serde::de::Visitor<'_> for GeneratedVisitor {
20531                    type Value = GeneratedField;
20532                    fn expecting(
20533                        &self,
20534                        formatter: &mut std::fmt::Formatter<'_>,
20535                    ) -> std::fmt::Result {
20536                        write!(formatter, "expected one of: {:?}", & FIELDS)
20537                    }
20538                    #[allow(unused_variables)]
20539                    fn visit_str<E>(
20540                        self,
20541                        value: &str,
20542                    ) -> std::result::Result<GeneratedField, E>
20543                    where
20544                        E: serde::de::Error,
20545                    {
20546                        match value {
20547                            "name" => Ok(GeneratedField::Name),
20548                            "urn" => Ok(GeneratedField::Urn),
20549                            "ipv4CidrBlock" | "ipv4_cidr_block" => {
20550                                Ok(GeneratedField::Ipv4CidrBlock)
20551                            }
20552                            "ipv6CidrBlock" | "ipv6_cidr_block" => {
20553                                Ok(GeneratedField::Ipv6CidrBlock)
20554                            }
20555                            "subnetIpv4PrefixLength" | "subnet_ipv4_prefix_length" => {
20556                                Ok(GeneratedField::SubnetIpv4PrefixLength)
20557                            }
20558                            "availableSubnetCount" | "available_subnet_count" => {
20559                                Ok(GeneratedField::AvailableSubnetCount)
20560                            }
20561                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
20562                            "internetGateway" | "internet_gateway" => {
20563                                Ok(GeneratedField::InternetGateway)
20564                            }
20565                            "projectDefault" | "project_default" => {
20566                                Ok(GeneratedField::ProjectDefault)
20567                            }
20568                            "createTime" | "create_time" => {
20569                                Ok(GeneratedField::CreateTime)
20570                            }
20571                            "creator" => Ok(GeneratedField::Creator),
20572                            "tags" => Ok(GeneratedField::Tags),
20573                            _ => Ok(GeneratedField::__SkipField__),
20574                        }
20575                    }
20576                }
20577                deserializer.deserialize_identifier(GeneratedVisitor)
20578            }
20579        }
20580        struct GeneratedVisitor;
20581        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20582            type Value = Vpc;
20583            fn expecting(
20584                &self,
20585                formatter: &mut std::fmt::Formatter<'_>,
20586            ) -> std::fmt::Result {
20587                formatter.write_str("struct origincloud.network.v1beta1.Vpc")
20588            }
20589            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Vpc, V::Error>
20590            where
20591                V: serde::de::MapAccess<'de>,
20592            {
20593                let mut name__ = None;
20594                let mut urn__ = None;
20595                let mut ipv4_cidr_block__ = None;
20596                let mut ipv6_cidr_block__ = None;
20597                let mut subnet_ipv4_prefix_length__ = None;
20598                let mut available_subnet_count__ = None;
20599                let mut dns_policy__ = None;
20600                let mut internet_gateway__ = None;
20601                let mut project_default__ = None;
20602                let mut create_time__ = None;
20603                let mut creator__ = None;
20604                let mut tags__ = None;
20605                while let Some(k) = map_.next_key()? {
20606                    match k {
20607                        GeneratedField::Name => {
20608                            if name__.is_some() {
20609                                return Err(serde::de::Error::duplicate_field("name"));
20610                            }
20611                            name__ = Some(map_.next_value()?);
20612                        }
20613                        GeneratedField::Urn => {
20614                            if urn__.is_some() {
20615                                return Err(serde::de::Error::duplicate_field("urn"));
20616                            }
20617                            urn__ = Some(map_.next_value()?);
20618                        }
20619                        GeneratedField::Ipv4CidrBlock => {
20620                            if ipv4_cidr_block__.is_some() {
20621                                return Err(
20622                                    serde::de::Error::duplicate_field("ipv4CidrBlock"),
20623                                );
20624                            }
20625                            ipv4_cidr_block__ = Some(map_.next_value()?);
20626                        }
20627                        GeneratedField::Ipv6CidrBlock => {
20628                            if ipv6_cidr_block__.is_some() {
20629                                return Err(
20630                                    serde::de::Error::duplicate_field("ipv6CidrBlock"),
20631                                );
20632                            }
20633                            ipv6_cidr_block__ = Some(map_.next_value()?);
20634                        }
20635                        GeneratedField::SubnetIpv4PrefixLength => {
20636                            if subnet_ipv4_prefix_length__.is_some() {
20637                                return Err(
20638                                    serde::de::Error::duplicate_field("subnetIpv4PrefixLength"),
20639                                );
20640                            }
20641                            subnet_ipv4_prefix_length__ = Some(
20642                                map_
20643                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
20644                                    .0,
20645                            );
20646                        }
20647                        GeneratedField::AvailableSubnetCount => {
20648                            if available_subnet_count__.is_some() {
20649                                return Err(
20650                                    serde::de::Error::duplicate_field("availableSubnetCount"),
20651                                );
20652                            }
20653                            available_subnet_count__ = Some(
20654                                map_
20655                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
20656                                    .0,
20657                            );
20658                        }
20659                        GeneratedField::DnsPolicy => {
20660                            if dns_policy__.is_some() {
20661                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
20662                            }
20663                            dns_policy__ = Some(map_.next_value()?);
20664                        }
20665                        GeneratedField::InternetGateway => {
20666                            if internet_gateway__.is_some() {
20667                                return Err(
20668                                    serde::de::Error::duplicate_field("internetGateway"),
20669                                );
20670                            }
20671                            internet_gateway__ = Some(map_.next_value()?);
20672                        }
20673                        GeneratedField::ProjectDefault => {
20674                            if project_default__.is_some() {
20675                                return Err(
20676                                    serde::de::Error::duplicate_field("projectDefault"),
20677                                );
20678                            }
20679                            project_default__ = Some(map_.next_value()?);
20680                        }
20681                        GeneratedField::CreateTime => {
20682                            if create_time__.is_some() {
20683                                return Err(serde::de::Error::duplicate_field("createTime"));
20684                            }
20685                            create_time__ = map_.next_value()?;
20686                        }
20687                        GeneratedField::Creator => {
20688                            if creator__.is_some() {
20689                                return Err(serde::de::Error::duplicate_field("creator"));
20690                            }
20691                            creator__ = Some(map_.next_value()?);
20692                        }
20693                        GeneratedField::Tags => {
20694                            if tags__.is_some() {
20695                                return Err(serde::de::Error::duplicate_field("tags"));
20696                            }
20697                            tags__ = Some(
20698                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
20699                            );
20700                        }
20701                        GeneratedField::__SkipField__ => {
20702                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20703                        }
20704                    }
20705                }
20706                Ok(Vpc {
20707                    name: name__.unwrap_or_default(),
20708                    urn: urn__.unwrap_or_default(),
20709                    ipv4_cidr_block: ipv4_cidr_block__.unwrap_or_default(),
20710                    ipv6_cidr_block: ipv6_cidr_block__.unwrap_or_default(),
20711                    subnet_ipv4_prefix_length: subnet_ipv4_prefix_length__
20712                        .unwrap_or_default(),
20713                    available_subnet_count: available_subnet_count__.unwrap_or_default(),
20714                    dns_policy: dns_policy__.unwrap_or_default(),
20715                    internet_gateway: internet_gateway__.unwrap_or_default(),
20716                    project_default: project_default__.unwrap_or_default(),
20717                    create_time: create_time__,
20718                    creator: creator__.unwrap_or_default(),
20719                    tags: tags__.unwrap_or_default(),
20720                })
20721            }
20722        }
20723        deserializer
20724            .deserialize_struct(
20725                "origincloud.network.v1beta1.Vpc",
20726                FIELDS,
20727                GeneratedVisitor,
20728            )
20729    }
20730}
20731/// Calls `AclService`.
20732///
20733/// ACLs: stateless filters at the edge of a subnet. An ACL holds rules
20734/// (`AclRuleService`), and applies to the subnets that an ACL association
20735/// names it for (`AclAssociationService`). Each packet entering or leaving
20736/// such a subnet meets the rules of its direction in `priority` order; the
20737/// first that matches accepts or drops it, and a packet no rule matches is
20738/// dropped.
20739#[derive(Clone, Debug)]
20740pub struct AclClient {
20741    service: ::origincloud_core::Service,
20742}
20743impl AclClient {
20744    /// Returns a client of `AclService` that sends its calls through `client`.
20745    pub fn new(client: &::origincloud_core::Client) -> Self {
20746        Self {
20747            service: client.service("network", true),
20748        }
20749    }
20750    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
20751    pub fn service(&self) -> &::origincloud_core::Service {
20752        &self.service
20753    }
20754    /// Returns an ACL.
20755    pub async fn get_acl(
20756        &self,
20757        request: GetAclRequest,
20758    ) -> ::core::result::Result<Acl, ::origincloud_core::Error> {
20759        let p0 = ::origincloud_core::path_value(
20760            "name",
20761            &request.name,
20762            "projects/*/regions/*/acls/*",
20763        )?;
20764        let query = ::origincloud_core::query(&request, &["name"])?;
20765        let call = ::origincloud_core::Request::new(
20766                ::origincloud_core::Method::GET,
20767                format!("/v1beta1/{p0}"),
20768            )
20769            .with_query(query)
20770            .idempotent();
20771        self.service.call(call).await
20772    }
20773    /// Lists the ACLs in a region, oldest first.
20774    pub async fn list_acls(
20775        &self,
20776        request: ListAclsRequest,
20777    ) -> ::core::result::Result<ListAclsResponse, ::origincloud_core::Error> {
20778        let p0 = ::origincloud_core::path_value(
20779            "parent",
20780            &request.parent,
20781            "projects/*/regions/*",
20782        )?;
20783        let query = ::origincloud_core::query(&request, &["parent"])?;
20784        let call = ::origincloud_core::Request::new(
20785                ::origincloud_core::Method::GET,
20786                format!("/v1beta1/{p0}/acls"),
20787            )
20788            .with_query(query)
20789            .idempotent();
20790        self.service.call(call).await
20791    }
20792    /// 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.
20793    pub fn all_acls(&self, request: ListAclsRequest) -> ::origincloud_core::Pages<Acl> {
20794        let client = self.clone();
20795        ::origincloud_core::Pages::new(
20796            request,
20797            move |request: ListAclsRequest| {
20798                let client = client.clone();
20799                async move {
20800                    let page = client.list_acls(request).await?;
20801                    Ok((page.acls, page.next_page_token))
20802                }
20803            },
20804            |request: &mut ListAclsRequest, token: ::std::string::String| {
20805                request.page_token = token;
20806            },
20807        )
20808    }
20809    /// Creates an ACL in a VPC, with no rules: it drops everything until
20810    /// rules are added. The operation is done once the ACL is recorded.
20811    ///
20812    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Acl`] once the change is done.
20813    pub async fn create_acl(
20814        &self,
20815        mut request: CreateAclRequest,
20816    ) -> ::core::result::Result<
20817        ::origincloud_core::Operation<Acl>,
20818        ::origincloud_core::Error,
20819    > {
20820        if request.request_id.is_empty() {
20821            request.request_id = ::origincloud_core::new_request_id();
20822        }
20823        let p0 = ::origincloud_core::path_value(
20824            "parent",
20825            &request.parent,
20826            "projects/*/regions/*",
20827        )?;
20828        let body = ::origincloud_core::json_body(
20829            request.acl.as_ref().unwrap_or(&::core::default::Default::default()),
20830        )?;
20831        let query = ::origincloud_core::query(&request, &["parent", "acl"])?;
20832        let call = ::origincloud_core::Request::new(
20833                ::origincloud_core::Method::POST,
20834                format!("/v1beta1/{p0}/acls"),
20835            )
20836            .with_body(body)
20837            .with_query(query)
20838            .idempotent();
20839        let operation = self.service.call(call).await?;
20840        Ok(
20841            ::origincloud_core::Operation::new(
20842                self.service.clone(),
20843                operation,
20844                "origincloud.network.v1beta1.Acl",
20845            ),
20846        )
20847    }
20848    /// Changes an ACL's tags. The operation is done once the change is
20849    /// recorded.
20850    ///
20851    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Acl`] once the change is done.
20852    pub async fn update_acl(
20853        &self,
20854        mut request: UpdateAclRequest,
20855    ) -> ::core::result::Result<
20856        ::origincloud_core::Operation<Acl>,
20857        ::origincloud_core::Error,
20858    > {
20859        if request.request_id.is_empty() {
20860            request.request_id = ::origincloud_core::new_request_id();
20861        }
20862        let p0 = ::origincloud_core::path_value(
20863            "acl.name",
20864            request.acl.as_ref().map_or("", |m| m.name.as_str()),
20865            "projects/*/regions/*/acls/*",
20866        )?;
20867        let body = ::origincloud_core::json_body(
20868            request.acl.as_ref().unwrap_or(&::core::default::Default::default()),
20869        )?;
20870        let query = ::origincloud_core::query(&request, &["acl.name", "acl"])?;
20871        let call = ::origincloud_core::Request::new(
20872                ::origincloud_core::Method::PATCH,
20873                format!("/v1beta1/{p0}"),
20874            )
20875            .with_body(body)
20876            .with_query(query)
20877            .idempotent();
20878        let operation = self.service.call(call).await?;
20879        Ok(
20880            ::origincloud_core::Operation::new(
20881                self.service.clone(),
20882                operation,
20883                "origincloud.network.v1beta1.Acl",
20884            ),
20885        )
20886    }
20887    /// Deletes an ACL with its rules. Refused for an ACL the platform created
20888    /// with its VPC, which goes with the VPC, and while an ACL association
20889    /// names it. The operation is done once the change is recorded; the
20890    /// network applies it within seconds.
20891    ///
20892    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
20893    pub async fn delete_acl(
20894        &self,
20895        mut request: DeleteAclRequest,
20896    ) -> ::core::result::Result<
20897        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
20898        ::origincloud_core::Error,
20899    > {
20900        if request.request_id.is_empty() {
20901            request.request_id = ::origincloud_core::new_request_id();
20902        }
20903        let p0 = ::origincloud_core::path_value(
20904            "name",
20905            &request.name,
20906            "projects/*/regions/*/acls/*",
20907        )?;
20908        let query = ::origincloud_core::query(&request, &["name"])?;
20909        let call = ::origincloud_core::Request::new(
20910                ::origincloud_core::Method::DELETE,
20911                format!("/v1beta1/{p0}"),
20912            )
20913            .with_query(query)
20914            .idempotent();
20915        let operation = self.service.call(call).await?;
20916        Ok(
20917            ::origincloud_core::Operation::new(
20918                self.service.clone(),
20919                operation,
20920                "google.protobuf.Empty",
20921            ),
20922        )
20923    }
20924}
20925/// Calls `AclAssociationService`.
20926///
20927/// ACL associations: which ACL filters a subnet's traffic at its edge. A
20928/// subnet has at most one; without one, nothing is filtered at its edge (see
20929/// the subnet's `acl`). An association's id is the id of the ACL it names, so
20930/// a client that knows the subnet and the ACL names the association without
20931/// listing. To move a subnet to another ACL, delete its association and
20932/// create another.
20933#[derive(Clone, Debug)]
20934pub struct AclAssociationClient {
20935    service: ::origincloud_core::Service,
20936}
20937impl AclAssociationClient {
20938    /// Returns a client of `AclAssociationService` that sends its calls through `client`.
20939    pub fn new(client: &::origincloud_core::Client) -> Self {
20940        Self {
20941            service: client.service("network", true),
20942        }
20943    }
20944    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
20945    pub fn service(&self) -> &::origincloud_core::Service {
20946        &self.service
20947    }
20948    /// Returns an ACL association.
20949    pub async fn get_acl_association(
20950        &self,
20951        request: GetAclAssociationRequest,
20952    ) -> ::core::result::Result<AclAssociation, ::origincloud_core::Error> {
20953        let p0 = ::origincloud_core::path_value(
20954            "name",
20955            &request.name,
20956            "projects/*/zones/*/subnets/*/aclAssociations/*",
20957        )?;
20958        let query = ::origincloud_core::query(&request, &["name"])?;
20959        let call = ::origincloud_core::Request::new(
20960                ::origincloud_core::Method::GET,
20961                format!("/v1beta1/{p0}"),
20962            )
20963            .with_query(query)
20964            .idempotent();
20965        self.service.call(call).await
20966    }
20967    /// Lists a subnet's ACL associations: none or one.
20968    pub async fn list_acl_associations(
20969        &self,
20970        request: ListAclAssociationsRequest,
20971    ) -> ::core::result::Result<ListAclAssociationsResponse, ::origincloud_core::Error> {
20972        let p0 = ::origincloud_core::path_value(
20973            "parent",
20974            &request.parent,
20975            "projects/*/zones/*/subnets/*",
20976        )?;
20977        let query = ::origincloud_core::query(&request, &["parent"])?;
20978        let call = ::origincloud_core::Request::new(
20979                ::origincloud_core::Method::GET,
20980                format!("/v1beta1/{p0}/aclAssociations"),
20981            )
20982            .with_query(query)
20983            .idempotent();
20984        self.service.call(call).await
20985    }
20986    /// 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.
20987    pub fn all_acl_associations(
20988        &self,
20989        request: ListAclAssociationsRequest,
20990    ) -> ::origincloud_core::Pages<AclAssociation> {
20991        let client = self.clone();
20992        ::origincloud_core::Pages::new(
20993            request,
20994            move |request: ListAclAssociationsRequest| {
20995                let client = client.clone();
20996                async move {
20997                    let page = client.list_acl_associations(request).await?;
20998                    Ok((page.acl_associations, page.next_page_token))
20999                }
21000            },
21001            |request: &mut ListAclAssociationsRequest, token: ::std::string::String| {
21002                request.page_token = token;
21003            },
21004        )
21005    }
21006    /// Associates an ACL with a subnet. Refused with `FAILED_PRECONDITION`
21007    /// when the subnet has an ACL association. The operation is done once the
21008    /// change is recorded; the network applies it within seconds.
21009    ///
21010    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`AclAssociation`] once the change is done.
21011    pub async fn create_acl_association(
21012        &self,
21013        mut request: CreateAclAssociationRequest,
21014    ) -> ::core::result::Result<
21015        ::origincloud_core::Operation<AclAssociation>,
21016        ::origincloud_core::Error,
21017    > {
21018        if request.request_id.is_empty() {
21019            request.request_id = ::origincloud_core::new_request_id();
21020        }
21021        let p0 = ::origincloud_core::path_value(
21022            "parent",
21023            &request.parent,
21024            "projects/*/zones/*/subnets/*",
21025        )?;
21026        let body = ::origincloud_core::json_body(
21027            request
21028                .acl_association
21029                .as_ref()
21030                .unwrap_or(&::core::default::Default::default()),
21031        )?;
21032        let query = ::origincloud_core::query(&request, &["parent", "aclAssociation"])?;
21033        let call = ::origincloud_core::Request::new(
21034                ::origincloud_core::Method::POST,
21035                format!("/v1beta1/{p0}/aclAssociations"),
21036            )
21037            .with_body(body)
21038            .with_query(query)
21039            .idempotent();
21040        let operation = self.service.call(call).await?;
21041        Ok(
21042            ::origincloud_core::Operation::new(
21043                self.service.clone(),
21044                operation,
21045                "origincloud.network.v1beta1.AclAssociation",
21046            ),
21047        )
21048    }
21049    /// Removes a subnet's ACL association: nothing is filtered at its edge any
21050    /// more, and its interfaces' security groups still apply. The operation is
21051    /// done once the change is recorded; the network applies it within seconds.
21052    ///
21053    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21054    pub async fn delete_acl_association(
21055        &self,
21056        mut request: DeleteAclAssociationRequest,
21057    ) -> ::core::result::Result<
21058        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21059        ::origincloud_core::Error,
21060    > {
21061        if request.request_id.is_empty() {
21062            request.request_id = ::origincloud_core::new_request_id();
21063        }
21064        let p0 = ::origincloud_core::path_value(
21065            "name",
21066            &request.name,
21067            "projects/*/zones/*/subnets/*/aclAssociations/*",
21068        )?;
21069        let query = ::origincloud_core::query(&request, &["name"])?;
21070        let call = ::origincloud_core::Request::new(
21071                ::origincloud_core::Method::DELETE,
21072                format!("/v1beta1/{p0}"),
21073            )
21074            .with_query(query)
21075            .idempotent();
21076        let operation = self.service.call(call).await?;
21077        Ok(
21078            ::origincloud_core::Operation::new(
21079                self.service.clone(),
21080                operation,
21081                "google.protobuf.Empty",
21082            ),
21083        )
21084    }
21085}
21086/// Calls `AclRuleService`.
21087///
21088/// ACL rules: what an ACL accepts or drops, each rule in its place in one
21089/// direction. A rule is immutable: it is created and deleted, never changed,
21090/// so to change one, delete it and create its replacement. A direction
21091/// holds one rule per `priority`, so a replacement at the same priority can
21092/// only be created once the old rule is deleted: between the two, neither
21093/// rule applies. A replacement at a free priority can be created first.
21094#[derive(Clone, Debug)]
21095pub struct AclRuleClient {
21096    service: ::origincloud_core::Service,
21097}
21098impl AclRuleClient {
21099    /// Returns a client of `AclRuleService` that sends its calls through `client`.
21100    pub fn new(client: &::origincloud_core::Client) -> Self {
21101        Self {
21102            service: client.service("network", true),
21103        }
21104    }
21105    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21106    pub fn service(&self) -> &::origincloud_core::Service {
21107        &self.service
21108    }
21109    /// Returns an ACL rule.
21110    pub async fn get_acl_rule(
21111        &self,
21112        request: GetAclRuleRequest,
21113    ) -> ::core::result::Result<AclRule, ::origincloud_core::Error> {
21114        let p0 = ::origincloud_core::path_value(
21115            "name",
21116            &request.name,
21117            "projects/*/regions/*/acls/*/rules/*",
21118        )?;
21119        let query = ::origincloud_core::query(&request, &["name"])?;
21120        let call = ::origincloud_core::Request::new(
21121                ::origincloud_core::Method::GET,
21122                format!("/v1beta1/{p0}"),
21123            )
21124            .with_query(query)
21125            .idempotent();
21126        self.service.call(call).await
21127    }
21128    /// Lists an ACL's rules of both directions, oldest first.
21129    pub async fn list_acl_rules(
21130        &self,
21131        request: ListAclRulesRequest,
21132    ) -> ::core::result::Result<ListAclRulesResponse, ::origincloud_core::Error> {
21133        let p0 = ::origincloud_core::path_value(
21134            "parent",
21135            &request.parent,
21136            "projects/*/regions/*/acls/*",
21137        )?;
21138        let query = ::origincloud_core::query(&request, &["parent"])?;
21139        let call = ::origincloud_core::Request::new(
21140                ::origincloud_core::Method::GET,
21141                format!("/v1beta1/{p0}/rules"),
21142            )
21143            .with_query(query)
21144            .idempotent();
21145        self.service.call(call).await
21146    }
21147    /// 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.
21148    pub fn all_acl_rules(
21149        &self,
21150        request: ListAclRulesRequest,
21151    ) -> ::origincloud_core::Pages<AclRule> {
21152        let client = self.clone();
21153        ::origincloud_core::Pages::new(
21154            request,
21155            move |request: ListAclRulesRequest| {
21156                let client = client.clone();
21157                async move {
21158                    let page = client.list_acl_rules(request).await?;
21159                    Ok((page.acl_rules, page.next_page_token))
21160                }
21161            },
21162            |request: &mut ListAclRulesRequest, token: ::std::string::String| {
21163                request.page_token = token;
21164            },
21165        )
21166    }
21167    /// Adds a rule to an ACL. Refused with `FAILED_PRECONDITION` when a rule
21168    /// of the same direction has the same `priority`. An ACL holds at most 40
21169    /// rules by default, both directions together, as the quota sets. The
21170    /// operation is done once the change is recorded; the network applies it
21171    /// within seconds.
21172    ///
21173    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`AclRule`] once the change is done.
21174    pub async fn create_acl_rule(
21175        &self,
21176        mut request: CreateAclRuleRequest,
21177    ) -> ::core::result::Result<
21178        ::origincloud_core::Operation<AclRule>,
21179        ::origincloud_core::Error,
21180    > {
21181        if request.request_id.is_empty() {
21182            request.request_id = ::origincloud_core::new_request_id();
21183        }
21184        let p0 = ::origincloud_core::path_value(
21185            "parent",
21186            &request.parent,
21187            "projects/*/regions/*/acls/*",
21188        )?;
21189        let body = ::origincloud_core::json_body(
21190            request.acl_rule.as_ref().unwrap_or(&::core::default::Default::default()),
21191        )?;
21192        let query = ::origincloud_core::query(&request, &["parent", "aclRule"])?;
21193        let call = ::origincloud_core::Request::new(
21194                ::origincloud_core::Method::POST,
21195                format!("/v1beta1/{p0}/rules"),
21196            )
21197            .with_body(body)
21198            .with_query(query)
21199            .idempotent();
21200        let operation = self.service.call(call).await?;
21201        Ok(
21202            ::origincloud_core::Operation::new(
21203                self.service.clone(),
21204                operation,
21205                "origincloud.network.v1beta1.AclRule",
21206            ),
21207        )
21208    }
21209    /// Removes a rule from its ACL. The operation is done once the change is
21210    /// recorded; the network applies it within seconds.
21211    ///
21212    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21213    pub async fn delete_acl_rule(
21214        &self,
21215        mut request: DeleteAclRuleRequest,
21216    ) -> ::core::result::Result<
21217        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21218        ::origincloud_core::Error,
21219    > {
21220        if request.request_id.is_empty() {
21221            request.request_id = ::origincloud_core::new_request_id();
21222        }
21223        let p0 = ::origincloud_core::path_value(
21224            "name",
21225            &request.name,
21226            "projects/*/regions/*/acls/*/rules/*",
21227        )?;
21228        let query = ::origincloud_core::query(&request, &["name"])?;
21229        let call = ::origincloud_core::Request::new(
21230                ::origincloud_core::Method::DELETE,
21231                format!("/v1beta1/{p0}"),
21232            )
21233            .with_query(query)
21234            .idempotent();
21235        let operation = self.service.call(call).await?;
21236        Ok(
21237            ::origincloud_core::Operation::new(
21238                self.service.clone(),
21239                operation,
21240                "google.protobuf.Empty",
21241            ),
21242        )
21243    }
21244}
21245/// Calls `DnsPolicyService`.
21246///
21247/// DNS policies: how a VPC's resolver answers names it isn't authoritative
21248/// for. A VPC relays through the policy its DNS policy association names
21249/// (`DnsPolicyAssociationService`), or else through the project's default
21250/// policy in its region.
21251#[derive(Clone, Debug)]
21252pub struct DnsPolicyClient {
21253    service: ::origincloud_core::Service,
21254}
21255impl DnsPolicyClient {
21256    /// Returns a client of `DnsPolicyService` that sends its calls through `client`.
21257    pub fn new(client: &::origincloud_core::Client) -> Self {
21258        Self {
21259            service: client.service("network", true),
21260        }
21261    }
21262    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21263    pub fn service(&self) -> &::origincloud_core::Service {
21264        &self.service
21265    }
21266    /// Returns a DNS policy.
21267    pub async fn get_dns_policy(
21268        &self,
21269        request: GetDnsPolicyRequest,
21270    ) -> ::core::result::Result<DnsPolicy, ::origincloud_core::Error> {
21271        let p0 = ::origincloud_core::path_value(
21272            "name",
21273            &request.name,
21274            "projects/*/regions/*/dnsPolicies/*",
21275        )?;
21276        let query = ::origincloud_core::query(&request, &["name"])?;
21277        let call = ::origincloud_core::Request::new(
21278                ::origincloud_core::Method::GET,
21279                format!("/v1beta1/{p0}"),
21280            )
21281            .with_query(query)
21282            .idempotent();
21283        self.service.call(call).await
21284    }
21285    /// Lists the DNS policies in a region, oldest first, the project's
21286    /// default included.
21287    pub async fn list_dns_policies(
21288        &self,
21289        request: ListDnsPoliciesRequest,
21290    ) -> ::core::result::Result<ListDnsPoliciesResponse, ::origincloud_core::Error> {
21291        let p0 = ::origincloud_core::path_value(
21292            "parent",
21293            &request.parent,
21294            "projects/*/regions/*",
21295        )?;
21296        let query = ::origincloud_core::query(&request, &["parent"])?;
21297        let call = ::origincloud_core::Request::new(
21298                ::origincloud_core::Method::GET,
21299                format!("/v1beta1/{p0}/dnsPolicies"),
21300            )
21301            .with_query(query)
21302            .idempotent();
21303        self.service.call(call).await
21304    }
21305    /// 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.
21306    pub fn all_dns_policies(
21307        &self,
21308        request: ListDnsPoliciesRequest,
21309    ) -> ::origincloud_core::Pages<DnsPolicy> {
21310        let client = self.clone();
21311        ::origincloud_core::Pages::new(
21312            request,
21313            move |request: ListDnsPoliciesRequest| {
21314                let client = client.clone();
21315                async move {
21316                    let page = client.list_dns_policies(request).await?;
21317                    Ok((page.dns_policies, page.next_page_token))
21318                }
21319            },
21320            |request: &mut ListDnsPoliciesRequest, token: ::std::string::String| {
21321                request.page_token = token;
21322            },
21323        )
21324    }
21325    /// Creates a DNS policy. It isn't the default: associate it with a VPC,
21326    /// or make it the default with `SetDefaultDnsPolicy`. The operation is
21327    /// done once the DNS policy is recorded.
21328    ///
21329    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21330    pub async fn create_dns_policy(
21331        &self,
21332        mut request: CreateDnsPolicyRequest,
21333    ) -> ::core::result::Result<
21334        ::origincloud_core::Operation<DnsPolicy>,
21335        ::origincloud_core::Error,
21336    > {
21337        if request.request_id.is_empty() {
21338            request.request_id = ::origincloud_core::new_request_id();
21339        }
21340        let p0 = ::origincloud_core::path_value(
21341            "parent",
21342            &request.parent,
21343            "projects/*/regions/*",
21344        )?;
21345        let body = ::origincloud_core::json_body(
21346            request.dns_policy.as_ref().unwrap_or(&::core::default::Default::default()),
21347        )?;
21348        let query = ::origincloud_core::query(&request, &["parent", "dnsPolicy"])?;
21349        let call = ::origincloud_core::Request::new(
21350                ::origincloud_core::Method::POST,
21351                format!("/v1beta1/{p0}/dnsPolicies"),
21352            )
21353            .with_body(body)
21354            .with_query(query)
21355            .idempotent();
21356        let operation = self.service.call(call).await?;
21357        Ok(
21358            ::origincloud_core::Operation::new(
21359                self.service.clone(),
21360                operation,
21361                "origincloud.network.v1beta1.DnsPolicy",
21362            ),
21363        )
21364    }
21365    /// Changes a DNS policy's relay settings or tags. The operation is done
21366    /// once the change is recorded; the resolvers of every VPC relaying
21367    /// through the policy apply it within seconds.
21368    ///
21369    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21370    pub async fn update_dns_policy(
21371        &self,
21372        mut request: UpdateDnsPolicyRequest,
21373    ) -> ::core::result::Result<
21374        ::origincloud_core::Operation<DnsPolicy>,
21375        ::origincloud_core::Error,
21376    > {
21377        if request.request_id.is_empty() {
21378            request.request_id = ::origincloud_core::new_request_id();
21379        }
21380        let p0 = ::origincloud_core::path_value(
21381            "dnsPolicy.name",
21382            request.dns_policy.as_ref().map_or("", |m| m.name.as_str()),
21383            "projects/*/regions/*/dnsPolicies/*",
21384        )?;
21385        let body = ::origincloud_core::json_body(
21386            request.dns_policy.as_ref().unwrap_or(&::core::default::Default::default()),
21387        )?;
21388        let query = ::origincloud_core::query(
21389            &request,
21390            &["dnsPolicy.name", "dnsPolicy"],
21391        )?;
21392        let call = ::origincloud_core::Request::new(
21393                ::origincloud_core::Method::PATCH,
21394                format!("/v1beta1/{p0}"),
21395            )
21396            .with_body(body)
21397            .with_query(query)
21398            .idempotent();
21399        let operation = self.service.call(call).await?;
21400        Ok(
21401            ::origincloud_core::Operation::new(
21402                self.service.clone(),
21403                operation,
21404                "origincloud.network.v1beta1.DnsPolicy",
21405            ),
21406        )
21407    }
21408    /// Deletes a DNS policy. Refused for the project's default policy and
21409    /// while a DNS policy association names it. The operation is done once
21410    /// the change is recorded.
21411    ///
21412    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21413    pub async fn delete_dns_policy(
21414        &self,
21415        mut request: DeleteDnsPolicyRequest,
21416    ) -> ::core::result::Result<
21417        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21418        ::origincloud_core::Error,
21419    > {
21420        if request.request_id.is_empty() {
21421            request.request_id = ::origincloud_core::new_request_id();
21422        }
21423        let p0 = ::origincloud_core::path_value(
21424            "name",
21425            &request.name,
21426            "projects/*/regions/*/dnsPolicies/*",
21427        )?;
21428        let query = ::origincloud_core::query(&request, &["name"])?;
21429        let call = ::origincloud_core::Request::new(
21430                ::origincloud_core::Method::DELETE,
21431                format!("/v1beta1/{p0}"),
21432            )
21433            .with_query(query)
21434            .idempotent();
21435        let operation = self.service.call(call).await?;
21436        Ok(
21437            ::origincloud_core::Operation::new(
21438                self.service.clone(),
21439                operation,
21440                "google.protobuf.Empty",
21441            ),
21442        )
21443    }
21444    /// Makes a DNS policy the project's default in its region, in place of
21445    /// the one before. Every VPC of the region without a DNS policy
21446    /// association relays through it from then on. Making the default the
21447    /// default changes nothing. The operation is done once the change is
21448    /// recorded; the resolvers apply it within seconds.
21449    ///
21450    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21451    pub async fn set_default_dns_policy(
21452        &self,
21453        mut request: SetDefaultDnsPolicyRequest,
21454    ) -> ::core::result::Result<
21455        ::origincloud_core::Operation<DnsPolicy>,
21456        ::origincloud_core::Error,
21457    > {
21458        if request.request_id.is_empty() {
21459            request.request_id = ::origincloud_core::new_request_id();
21460        }
21461        let p0 = ::origincloud_core::path_value(
21462            "name",
21463            &request.name,
21464            "projects/*/regions/*/dnsPolicies/*",
21465        )?;
21466        let body = ::origincloud_core::json_body(&request)?;
21467        let call = ::origincloud_core::Request::new(
21468                ::origincloud_core::Method::POST,
21469                format!("/v1beta1/{p0}:setDefault"),
21470            )
21471            .with_body(body)
21472            .idempotent();
21473        let operation = self.service.call(call).await?;
21474        Ok(
21475            ::origincloud_core::Operation::new(
21476                self.service.clone(),
21477                operation,
21478                "origincloud.network.v1beta1.DnsPolicy",
21479            ),
21480        )
21481    }
21482}
21483/// Calls `DnsPolicyAssociationService`.
21484///
21485/// DNS policy associations: which DNS policy a VPC's resolver relays through.
21486/// A VPC has at most one; without one, it relays through the project's
21487/// default DNS policy in its region (see the VPC's `dns_policy`). An
21488/// association's id is the id of the DNS policy it names, so a client that
21489/// knows the VPC and the policy names the association without listing. To
21490/// move a VPC to another policy, delete its association and create another.
21491#[derive(Clone, Debug)]
21492pub struct DnsPolicyAssociationClient {
21493    service: ::origincloud_core::Service,
21494}
21495impl DnsPolicyAssociationClient {
21496    /// Returns a client of `DnsPolicyAssociationService` that sends its calls through `client`.
21497    pub fn new(client: &::origincloud_core::Client) -> Self {
21498        Self {
21499            service: client.service("network", true),
21500        }
21501    }
21502    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21503    pub fn service(&self) -> &::origincloud_core::Service {
21504        &self.service
21505    }
21506    /// Returns a DNS policy association.
21507    pub async fn get_dns_policy_association(
21508        &self,
21509        request: GetDnsPolicyAssociationRequest,
21510    ) -> ::core::result::Result<DnsPolicyAssociation, ::origincloud_core::Error> {
21511        let p0 = ::origincloud_core::path_value(
21512            "name",
21513            &request.name,
21514            "projects/*/regions/*/vpcs/*/dnsPolicyAssociations/*",
21515        )?;
21516        let query = ::origincloud_core::query(&request, &["name"])?;
21517        let call = ::origincloud_core::Request::new(
21518                ::origincloud_core::Method::GET,
21519                format!("/v1beta1/{p0}"),
21520            )
21521            .with_query(query)
21522            .idempotent();
21523        self.service.call(call).await
21524    }
21525    /// Lists a VPC's DNS policy associations: none or one.
21526    pub async fn list_dns_policy_associations(
21527        &self,
21528        request: ListDnsPolicyAssociationsRequest,
21529    ) -> ::core::result::Result<
21530        ListDnsPolicyAssociationsResponse,
21531        ::origincloud_core::Error,
21532    > {
21533        let p0 = ::origincloud_core::path_value(
21534            "parent",
21535            &request.parent,
21536            "projects/*/regions/*/vpcs/*",
21537        )?;
21538        let query = ::origincloud_core::query(&request, &["parent"])?;
21539        let call = ::origincloud_core::Request::new(
21540                ::origincloud_core::Method::GET,
21541                format!("/v1beta1/{p0}/dnsPolicyAssociations"),
21542            )
21543            .with_query(query)
21544            .idempotent();
21545        self.service.call(call).await
21546    }
21547    /// 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.
21548    pub fn all_dns_policy_associations(
21549        &self,
21550        request: ListDnsPolicyAssociationsRequest,
21551    ) -> ::origincloud_core::Pages<DnsPolicyAssociation> {
21552        let client = self.clone();
21553        ::origincloud_core::Pages::new(
21554            request,
21555            move |request: ListDnsPolicyAssociationsRequest| {
21556                let client = client.clone();
21557                async move {
21558                    let page = client.list_dns_policy_associations(request).await?;
21559                    Ok((page.dns_policy_associations, page.next_page_token))
21560                }
21561            },
21562            |
21563                request: &mut ListDnsPolicyAssociationsRequest,
21564                token: ::std::string::String|
21565            request.page_token = token,
21566        )
21567    }
21568    /// Associates a DNS policy with a VPC. Refused with `FAILED_PRECONDITION`
21569    /// when the VPC has a DNS policy association. The operation is done once
21570    /// the change is recorded; the VPC's resolver applies it within seconds.
21571    ///
21572    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicyAssociation`] once the change is done.
21573    pub async fn create_dns_policy_association(
21574        &self,
21575        mut request: CreateDnsPolicyAssociationRequest,
21576    ) -> ::core::result::Result<
21577        ::origincloud_core::Operation<DnsPolicyAssociation>,
21578        ::origincloud_core::Error,
21579    > {
21580        if request.request_id.is_empty() {
21581            request.request_id = ::origincloud_core::new_request_id();
21582        }
21583        let p0 = ::origincloud_core::path_value(
21584            "parent",
21585            &request.parent,
21586            "projects/*/regions/*/vpcs/*",
21587        )?;
21588        let body = ::origincloud_core::json_body(
21589            request
21590                .dns_policy_association
21591                .as_ref()
21592                .unwrap_or(&::core::default::Default::default()),
21593        )?;
21594        let query = ::origincloud_core::query(
21595            &request,
21596            &["parent", "dnsPolicyAssociation"],
21597        )?;
21598        let call = ::origincloud_core::Request::new(
21599                ::origincloud_core::Method::POST,
21600                format!("/v1beta1/{p0}/dnsPolicyAssociations"),
21601            )
21602            .with_body(body)
21603            .with_query(query)
21604            .idempotent();
21605        let operation = self.service.call(call).await?;
21606        Ok(
21607            ::origincloud_core::Operation::new(
21608                self.service.clone(),
21609                operation,
21610                "origincloud.network.v1beta1.DnsPolicyAssociation",
21611            ),
21612        )
21613    }
21614    /// Removes a VPC's DNS policy association: the VPC relays through the
21615    /// project's default DNS policy in its region again. The operation is done
21616    /// once the change is recorded; the VPC's resolver applies it within
21617    /// seconds.
21618    ///
21619    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21620    pub async fn delete_dns_policy_association(
21621        &self,
21622        mut request: DeleteDnsPolicyAssociationRequest,
21623    ) -> ::core::result::Result<
21624        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21625        ::origincloud_core::Error,
21626    > {
21627        if request.request_id.is_empty() {
21628            request.request_id = ::origincloud_core::new_request_id();
21629        }
21630        let p0 = ::origincloud_core::path_value(
21631            "name",
21632            &request.name,
21633            "projects/*/regions/*/vpcs/*/dnsPolicyAssociations/*",
21634        )?;
21635        let query = ::origincloud_core::query(&request, &["name"])?;
21636        let call = ::origincloud_core::Request::new(
21637                ::origincloud_core::Method::DELETE,
21638                format!("/v1beta1/{p0}"),
21639            )
21640            .with_query(query)
21641            .idempotent();
21642        let operation = self.service.call(call).await?;
21643        Ok(
21644            ::origincloud_core::Operation::new(
21645                self.service.clone(),
21646                operation,
21647                "google.protobuf.Empty",
21648            ),
21649        )
21650    }
21651}
21652/// Calls `FloatingIpService`.
21653///
21654/// Floating IPs: public IPv4 addresses of your own in one zone, kept until
21655/// released. Associated with a network interface
21656/// (`FloatingIpAssociationService`), the address reaches the interface's
21657/// private IPv4 address both ways (static 1:1 NAT). The interface's subnet
21658/// reaches, and is reached from, the internet over IPv4 only if its own
21659/// route table has the IPv4 default route (see the subnet's `route_table`).
21660#[derive(Clone, Debug)]
21661pub struct FloatingIpClient {
21662    service: ::origincloud_core::Service,
21663}
21664impl FloatingIpClient {
21665    /// Returns a client of `FloatingIpService` that sends its calls through `client`.
21666    pub fn new(client: &::origincloud_core::Client) -> Self {
21667        Self {
21668            service: client.service("network", true),
21669        }
21670    }
21671    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21672    pub fn service(&self) -> &::origincloud_core::Service {
21673        &self.service
21674    }
21675    /// Returns a floating IP.
21676    pub async fn get_floating_ip(
21677        &self,
21678        request: GetFloatingIpRequest,
21679    ) -> ::core::result::Result<FloatingIp, ::origincloud_core::Error> {
21680        let p0 = ::origincloud_core::path_value(
21681            "name",
21682            &request.name,
21683            "projects/*/zones/*/floatingIps/*",
21684        )?;
21685        let query = ::origincloud_core::query(&request, &["name"])?;
21686        let call = ::origincloud_core::Request::new(
21687                ::origincloud_core::Method::GET,
21688                format!("/v1beta1/{p0}"),
21689            )
21690            .with_query(query)
21691            .idempotent();
21692        self.service.call(call).await
21693    }
21694    /// Lists the floating IPs in a zone, oldest first, those the platform
21695    /// assigned at launch included.
21696    pub async fn list_floating_ips(
21697        &self,
21698        request: ListFloatingIpsRequest,
21699    ) -> ::core::result::Result<ListFloatingIpsResponse, ::origincloud_core::Error> {
21700        let p0 = ::origincloud_core::path_value(
21701            "parent",
21702            &request.parent,
21703            "projects/*/zones/*",
21704        )?;
21705        let query = ::origincloud_core::query(&request, &["parent"])?;
21706        let call = ::origincloud_core::Request::new(
21707                ::origincloud_core::Method::GET,
21708                format!("/v1beta1/{p0}/floatingIps"),
21709            )
21710            .with_query(query)
21711            .idempotent();
21712        self.service.call(call).await
21713    }
21714    /// 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.
21715    pub fn all_floating_ips(
21716        &self,
21717        request: ListFloatingIpsRequest,
21718    ) -> ::origincloud_core::Pages<FloatingIp> {
21719        let client = self.clone();
21720        ::origincloud_core::Pages::new(
21721            request,
21722            move |request: ListFloatingIpsRequest| {
21723                let client = client.clone();
21724                async move {
21725                    let page = client.list_floating_ips(request).await?;
21726                    Ok((page.floating_ips, page.next_page_token))
21727                }
21728            },
21729            |request: &mut ListFloatingIpsRequest, token: ::std::string::String| {
21730                request.page_token = token;
21731            },
21732        )
21733    }
21734    /// Allocates a floating IP from the zone's public addresses, associated
21735    /// with nothing. The operation is done once the address is recorded as
21736    /// yours.
21737    ///
21738    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIp`] once the change is done.
21739    pub async fn create_floating_ip(
21740        &self,
21741        mut request: CreateFloatingIpRequest,
21742    ) -> ::core::result::Result<
21743        ::origincloud_core::Operation<FloatingIp>,
21744        ::origincloud_core::Error,
21745    > {
21746        if request.request_id.is_empty() {
21747            request.request_id = ::origincloud_core::new_request_id();
21748        }
21749        let p0 = ::origincloud_core::path_value(
21750            "parent",
21751            &request.parent,
21752            "projects/*/zones/*",
21753        )?;
21754        let body = ::origincloud_core::json_body(
21755            request.floating_ip.as_ref().unwrap_or(&::core::default::Default::default()),
21756        )?;
21757        let query = ::origincloud_core::query(&request, &["parent", "floatingIp"])?;
21758        let call = ::origincloud_core::Request::new(
21759                ::origincloud_core::Method::POST,
21760                format!("/v1beta1/{p0}/floatingIps"),
21761            )
21762            .with_body(body)
21763            .with_query(query)
21764            .idempotent();
21765        let operation = self.service.call(call).await?;
21766        Ok(
21767            ::origincloud_core::Operation::new(
21768                self.service.clone(),
21769                operation,
21770                "origincloud.network.v1beta1.FloatingIp",
21771            ),
21772        )
21773    }
21774    /// Changes a floating IP's tags. The operation is done once the change is
21775    /// recorded.
21776    ///
21777    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIp`] once the change is done.
21778    pub async fn update_floating_ip(
21779        &self,
21780        mut request: UpdateFloatingIpRequest,
21781    ) -> ::core::result::Result<
21782        ::origincloud_core::Operation<FloatingIp>,
21783        ::origincloud_core::Error,
21784    > {
21785        if request.request_id.is_empty() {
21786            request.request_id = ::origincloud_core::new_request_id();
21787        }
21788        let p0 = ::origincloud_core::path_value(
21789            "floatingIp.name",
21790            request.floating_ip.as_ref().map_or("", |m| m.name.as_str()),
21791            "projects/*/zones/*/floatingIps/*",
21792        )?;
21793        let body = ::origincloud_core::json_body(
21794            request.floating_ip.as_ref().unwrap_or(&::core::default::Default::default()),
21795        )?;
21796        let query = ::origincloud_core::query(
21797            &request,
21798            &["floatingIp.name", "floatingIp"],
21799        )?;
21800        let call = ::origincloud_core::Request::new(
21801                ::origincloud_core::Method::PATCH,
21802                format!("/v1beta1/{p0}"),
21803            )
21804            .with_body(body)
21805            .with_query(query)
21806            .idempotent();
21807        let operation = self.service.call(call).await?;
21808        Ok(
21809            ::origincloud_core::Operation::new(
21810                self.service.clone(),
21811                operation,
21812                "origincloud.network.v1beta1.FloatingIp",
21813            ),
21814        )
21815    }
21816    /// Releases a floating IP: its address goes back to the zone. Refused
21817    /// while it is associated with a network interface or a NAT gateway uses
21818    /// it. The operation is done once the change is recorded.
21819    ///
21820    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21821    pub async fn delete_floating_ip(
21822        &self,
21823        mut request: DeleteFloatingIpRequest,
21824    ) -> ::core::result::Result<
21825        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21826        ::origincloud_core::Error,
21827    > {
21828        if request.request_id.is_empty() {
21829            request.request_id = ::origincloud_core::new_request_id();
21830        }
21831        let p0 = ::origincloud_core::path_value(
21832            "name",
21833            &request.name,
21834            "projects/*/zones/*/floatingIps/*",
21835        )?;
21836        let query = ::origincloud_core::query(&request, &["name"])?;
21837        let call = ::origincloud_core::Request::new(
21838                ::origincloud_core::Method::DELETE,
21839                format!("/v1beta1/{p0}"),
21840            )
21841            .with_query(query)
21842            .idempotent();
21843        let operation = self.service.call(call).await?;
21844        Ok(
21845            ::origincloud_core::Operation::new(
21846                self.service.clone(),
21847                operation,
21848                "google.protobuf.Empty",
21849            ),
21850        )
21851    }
21852}
21853/// Calls `FloatingIpAssociationService`.
21854///
21855/// Floating IP associations: which network interface a floating IP reaches. A
21856/// floating IP has at most one (see the floating IP's `network_interface`).
21857/// An association's id is the id of the network interface it names, so a
21858/// client that knows the floating IP and the interface names the association
21859/// without listing. To move an address to another interface, delete its
21860/// association and create another.
21861#[derive(Clone, Debug)]
21862pub struct FloatingIpAssociationClient {
21863    service: ::origincloud_core::Service,
21864}
21865impl FloatingIpAssociationClient {
21866    /// Returns a client of `FloatingIpAssociationService` that sends its calls through `client`.
21867    pub fn new(client: &::origincloud_core::Client) -> Self {
21868        Self {
21869            service: client.service("network", true),
21870        }
21871    }
21872    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21873    pub fn service(&self) -> &::origincloud_core::Service {
21874        &self.service
21875    }
21876    /// Returns a floating IP association.
21877    pub async fn get_floating_ip_association(
21878        &self,
21879        request: GetFloatingIpAssociationRequest,
21880    ) -> ::core::result::Result<FloatingIpAssociation, ::origincloud_core::Error> {
21881        let p0 = ::origincloud_core::path_value(
21882            "name",
21883            &request.name,
21884            "projects/*/zones/*/floatingIps/*/associations/*",
21885        )?;
21886        let query = ::origincloud_core::query(&request, &["name"])?;
21887        let call = ::origincloud_core::Request::new(
21888                ::origincloud_core::Method::GET,
21889                format!("/v1beta1/{p0}"),
21890            )
21891            .with_query(query)
21892            .idempotent();
21893        self.service.call(call).await
21894    }
21895    /// Lists a floating IP's associations: none or one.
21896    pub async fn list_floating_ip_associations(
21897        &self,
21898        request: ListFloatingIpAssociationsRequest,
21899    ) -> ::core::result::Result<
21900        ListFloatingIpAssociationsResponse,
21901        ::origincloud_core::Error,
21902    > {
21903        let p0 = ::origincloud_core::path_value(
21904            "parent",
21905            &request.parent,
21906            "projects/*/zones/*/floatingIps/*",
21907        )?;
21908        let query = ::origincloud_core::query(&request, &["parent"])?;
21909        let call = ::origincloud_core::Request::new(
21910                ::origincloud_core::Method::GET,
21911                format!("/v1beta1/{p0}/associations"),
21912            )
21913            .with_query(query)
21914            .idempotent();
21915        self.service.call(call).await
21916    }
21917    /// 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.
21918    pub fn all_floating_ip_associations(
21919        &self,
21920        request: ListFloatingIpAssociationsRequest,
21921    ) -> ::origincloud_core::Pages<FloatingIpAssociation> {
21922        let client = self.clone();
21923        ::origincloud_core::Pages::new(
21924            request,
21925            move |request: ListFloatingIpAssociationsRequest| {
21926                let client = client.clone();
21927                async move {
21928                    let page = client.list_floating_ip_associations(request).await?;
21929                    Ok((page.floating_ip_associations, page.next_page_token))
21930                }
21931            },
21932            |
21933                request: &mut ListFloatingIpAssociationsRequest,
21934                token: ::std::string::String|
21935            request.page_token = token,
21936        )
21937    }
21938    /// Associates a floating IP with a network interface. Refused with
21939    /// `FAILED_PRECONDITION` when the floating IP has an association, and
21940    /// while the address backs a NAT gateway. The operation is done once the
21941    /// change is recorded; the network applies it within seconds.
21942    ///
21943    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIpAssociation`] once the change is done.
21944    pub async fn create_floating_ip_association(
21945        &self,
21946        mut request: CreateFloatingIpAssociationRequest,
21947    ) -> ::core::result::Result<
21948        ::origincloud_core::Operation<FloatingIpAssociation>,
21949        ::origincloud_core::Error,
21950    > {
21951        if request.request_id.is_empty() {
21952            request.request_id = ::origincloud_core::new_request_id();
21953        }
21954        let p0 = ::origincloud_core::path_value(
21955            "parent",
21956            &request.parent,
21957            "projects/*/zones/*/floatingIps/*",
21958        )?;
21959        let body = ::origincloud_core::json_body(
21960            request
21961                .floating_ip_association
21962                .as_ref()
21963                .unwrap_or(&::core::default::Default::default()),
21964        )?;
21965        let query = ::origincloud_core::query(
21966            &request,
21967            &["parent", "floatingIpAssociation"],
21968        )?;
21969        let call = ::origincloud_core::Request::new(
21970                ::origincloud_core::Method::POST,
21971                format!("/v1beta1/{p0}/associations"),
21972            )
21973            .with_body(body)
21974            .with_query(query)
21975            .idempotent();
21976        let operation = self.service.call(call).await?;
21977        Ok(
21978            ::origincloud_core::Operation::new(
21979                self.service.clone(),
21980                operation,
21981                "origincloud.network.v1beta1.FloatingIpAssociation",
21982            ),
21983        )
21984    }
21985    /// Removes a floating IP's association: the address reaches nothing, and
21986    /// stays allocated. The operation is done once the change is recorded; the
21987    /// network applies it within seconds.
21988    ///
21989    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21990    pub async fn delete_floating_ip_association(
21991        &self,
21992        mut request: DeleteFloatingIpAssociationRequest,
21993    ) -> ::core::result::Result<
21994        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21995        ::origincloud_core::Error,
21996    > {
21997        if request.request_id.is_empty() {
21998            request.request_id = ::origincloud_core::new_request_id();
21999        }
22000        let p0 = ::origincloud_core::path_value(
22001            "name",
22002            &request.name,
22003            "projects/*/zones/*/floatingIps/*/associations/*",
22004        )?;
22005        let query = ::origincloud_core::query(&request, &["name"])?;
22006        let call = ::origincloud_core::Request::new(
22007                ::origincloud_core::Method::DELETE,
22008                format!("/v1beta1/{p0}"),
22009            )
22010            .with_query(query)
22011            .idempotent();
22012        let operation = self.service.call(call).await?;
22013        Ok(
22014            ::origincloud_core::Operation::new(
22015                self.service.clone(),
22016                operation,
22017                "google.protobuf.Empty",
22018            ),
22019        )
22020    }
22021}
22022/// Calls `InternetGatewayService`.
22023///
22024/// Internet gateways: a VPC's way to and from the internet, for its
22025/// instances' floating IPs and IPv6 addresses and for its NAT gateways. A VPC
22026/// has at most one, and a subnet reaches it through a route that targets it.
22027/// Internet access is decided per VPC and address family: while any route
22028/// table the VPC's subnets use has a family's default route to the gateway,
22029/// traffic of that family leaves the VPC and reaches its floating IPs and
22030/// IPv6 addresses.
22031#[derive(Clone, Debug)]
22032pub struct InternetGatewayClient {
22033    service: ::origincloud_core::Service,
22034}
22035impl InternetGatewayClient {
22036    /// Returns a client of `InternetGatewayService` that sends its calls through `client`.
22037    pub fn new(client: &::origincloud_core::Client) -> Self {
22038        Self {
22039            service: client.service("network", true),
22040        }
22041    }
22042    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22043    pub fn service(&self) -> &::origincloud_core::Service {
22044        &self.service
22045    }
22046    /// Returns an internet gateway.
22047    pub async fn get_internet_gateway(
22048        &self,
22049        request: GetInternetGatewayRequest,
22050    ) -> ::core::result::Result<InternetGateway, ::origincloud_core::Error> {
22051        let p0 = ::origincloud_core::path_value(
22052            "name",
22053            &request.name,
22054            "projects/*/regions/*/internetGateways/*",
22055        )?;
22056        let query = ::origincloud_core::query(&request, &["name"])?;
22057        let call = ::origincloud_core::Request::new(
22058                ::origincloud_core::Method::GET,
22059                format!("/v1beta1/{p0}"),
22060            )
22061            .with_query(query)
22062            .idempotent();
22063        self.service.call(call).await
22064    }
22065    /// Lists the internet gateways in a region, oldest first.
22066    pub async fn list_internet_gateways(
22067        &self,
22068        request: ListInternetGatewaysRequest,
22069    ) -> ::core::result::Result<
22070        ListInternetGatewaysResponse,
22071        ::origincloud_core::Error,
22072    > {
22073        let p0 = ::origincloud_core::path_value(
22074            "parent",
22075            &request.parent,
22076            "projects/*/regions/*",
22077        )?;
22078        let query = ::origincloud_core::query(&request, &["parent"])?;
22079        let call = ::origincloud_core::Request::new(
22080                ::origincloud_core::Method::GET,
22081                format!("/v1beta1/{p0}/internetGateways"),
22082            )
22083            .with_query(query)
22084            .idempotent();
22085        self.service.call(call).await
22086    }
22087    /// 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.
22088    pub fn all_internet_gateways(
22089        &self,
22090        request: ListInternetGatewaysRequest,
22091    ) -> ::origincloud_core::Pages<InternetGateway> {
22092        let client = self.clone();
22093        ::origincloud_core::Pages::new(
22094            request,
22095            move |request: ListInternetGatewaysRequest| {
22096                let client = client.clone();
22097                async move {
22098                    let page = client.list_internet_gateways(request).await?;
22099                    Ok((page.internet_gateways, page.next_page_token))
22100                }
22101            },
22102            |request: &mut ListInternetGatewaysRequest, token: ::std::string::String| {
22103                request.page_token = token;
22104            },
22105        )
22106    }
22107    /// Creates a VPC's internet gateway. Refused with `FAILED_PRECONDITION`
22108    /// when the VPC has one. The operation is done once the change is recorded;
22109    /// the network applies it within seconds.
22110    ///
22111    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`InternetGateway`] once the change is done.
22112    pub async fn create_internet_gateway(
22113        &self,
22114        mut request: CreateInternetGatewayRequest,
22115    ) -> ::core::result::Result<
22116        ::origincloud_core::Operation<InternetGateway>,
22117        ::origincloud_core::Error,
22118    > {
22119        if request.request_id.is_empty() {
22120            request.request_id = ::origincloud_core::new_request_id();
22121        }
22122        let p0 = ::origincloud_core::path_value(
22123            "parent",
22124            &request.parent,
22125            "projects/*/regions/*",
22126        )?;
22127        let body = ::origincloud_core::json_body(
22128            request
22129                .internet_gateway
22130                .as_ref()
22131                .unwrap_or(&::core::default::Default::default()),
22132        )?;
22133        let query = ::origincloud_core::query(&request, &["parent", "internetGateway"])?;
22134        let call = ::origincloud_core::Request::new(
22135                ::origincloud_core::Method::POST,
22136                format!("/v1beta1/{p0}/internetGateways"),
22137            )
22138            .with_body(body)
22139            .with_query(query)
22140            .idempotent();
22141        let operation = self.service.call(call).await?;
22142        Ok(
22143            ::origincloud_core::Operation::new(
22144                self.service.clone(),
22145                operation,
22146                "origincloud.network.v1beta1.InternetGateway",
22147            ),
22148        )
22149    }
22150    /// Changes an internet gateway's tags. The operation is done once the
22151    /// change is recorded.
22152    ///
22153    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`InternetGateway`] once the change is done.
22154    pub async fn update_internet_gateway(
22155        &self,
22156        mut request: UpdateInternetGatewayRequest,
22157    ) -> ::core::result::Result<
22158        ::origincloud_core::Operation<InternetGateway>,
22159        ::origincloud_core::Error,
22160    > {
22161        if request.request_id.is_empty() {
22162            request.request_id = ::origincloud_core::new_request_id();
22163        }
22164        let p0 = ::origincloud_core::path_value(
22165            "internetGateway.name",
22166            request.internet_gateway.as_ref().map_or("", |m| m.name.as_str()),
22167            "projects/*/regions/*/internetGateways/*",
22168        )?;
22169        let body = ::origincloud_core::json_body(
22170            request
22171                .internet_gateway
22172                .as_ref()
22173                .unwrap_or(&::core::default::Default::default()),
22174        )?;
22175        let query = ::origincloud_core::query(
22176            &request,
22177            &["internetGateway.name", "internetGateway"],
22178        )?;
22179        let call = ::origincloud_core::Request::new(
22180                ::origincloud_core::Method::PATCH,
22181                format!("/v1beta1/{p0}"),
22182            )
22183            .with_body(body)
22184            .with_query(query)
22185            .idempotent();
22186        let operation = self.service.call(call).await?;
22187        Ok(
22188            ::origincloud_core::Operation::new(
22189                self.service.clone(),
22190                operation,
22191                "origincloud.network.v1beta1.InternetGateway",
22192            ),
22193        )
22194    }
22195    /// Deletes an internet gateway, which cuts the VPC off from the internet.
22196    /// Refused while a route targets it. The operation is done once the
22197    /// change is recorded; the network applies it within seconds.
22198    ///
22199    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22200    pub async fn delete_internet_gateway(
22201        &self,
22202        mut request: DeleteInternetGatewayRequest,
22203    ) -> ::core::result::Result<
22204        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22205        ::origincloud_core::Error,
22206    > {
22207        if request.request_id.is_empty() {
22208            request.request_id = ::origincloud_core::new_request_id();
22209        }
22210        let p0 = ::origincloud_core::path_value(
22211            "name",
22212            &request.name,
22213            "projects/*/regions/*/internetGateways/*",
22214        )?;
22215        let query = ::origincloud_core::query(&request, &["name"])?;
22216        let call = ::origincloud_core::Request::new(
22217                ::origincloud_core::Method::DELETE,
22218                format!("/v1beta1/{p0}"),
22219            )
22220            .with_query(query)
22221            .idempotent();
22222        let operation = self.service.call(call).await?;
22223        Ok(
22224            ::origincloud_core::Operation::new(
22225                self.service.clone(),
22226                operation,
22227                "google.protobuf.Empty",
22228            ),
22229        )
22230    }
22231}
22232/// Calls `NatGatewayService`.
22233///
22234/// NAT gateways: shared IPv4 egress for instances without a floating IP of
22235/// their own. Instances in a subnet whose route table sends the IPv4 default
22236/// route to a NAT gateway reach the internet as the gateway's floating IP,
22237/// and can't be reached from it.
22238#[derive(Clone, Debug)]
22239pub struct NatGatewayClient {
22240    service: ::origincloud_core::Service,
22241}
22242impl NatGatewayClient {
22243    /// Returns a client of `NatGatewayService` that sends its calls through `client`.
22244    pub fn new(client: &::origincloud_core::Client) -> Self {
22245        Self {
22246            service: client.service("network", true),
22247        }
22248    }
22249    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22250    pub fn service(&self) -> &::origincloud_core::Service {
22251        &self.service
22252    }
22253    /// Returns a NAT gateway.
22254    pub async fn get_nat_gateway(
22255        &self,
22256        request: GetNatGatewayRequest,
22257    ) -> ::core::result::Result<NatGateway, ::origincloud_core::Error> {
22258        let p0 = ::origincloud_core::path_value(
22259            "name",
22260            &request.name,
22261            "projects/*/zones/*/natGateways/*",
22262        )?;
22263        let query = ::origincloud_core::query(&request, &["name"])?;
22264        let call = ::origincloud_core::Request::new(
22265                ::origincloud_core::Method::GET,
22266                format!("/v1beta1/{p0}"),
22267            )
22268            .with_query(query)
22269            .idempotent();
22270        self.service.call(call).await
22271    }
22272    /// Lists the NAT gateways in a zone, oldest first.
22273    pub async fn list_nat_gateways(
22274        &self,
22275        request: ListNatGatewaysRequest,
22276    ) -> ::core::result::Result<ListNatGatewaysResponse, ::origincloud_core::Error> {
22277        let p0 = ::origincloud_core::path_value(
22278            "parent",
22279            &request.parent,
22280            "projects/*/zones/*",
22281        )?;
22282        let query = ::origincloud_core::query(&request, &["parent"])?;
22283        let call = ::origincloud_core::Request::new(
22284                ::origincloud_core::Method::GET,
22285                format!("/v1beta1/{p0}/natGateways"),
22286            )
22287            .with_query(query)
22288            .idempotent();
22289        self.service.call(call).await
22290    }
22291    /// 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.
22292    pub fn all_nat_gateways(
22293        &self,
22294        request: ListNatGatewaysRequest,
22295    ) -> ::origincloud_core::Pages<NatGateway> {
22296        let client = self.clone();
22297        ::origincloud_core::Pages::new(
22298            request,
22299            move |request: ListNatGatewaysRequest| {
22300                let client = client.clone();
22301                async move {
22302                    let page = client.list_nat_gateways(request).await?;
22303                    Ok((page.nat_gateways, page.next_page_token))
22304                }
22305            },
22306            |request: &mut ListNatGatewaysRequest, token: ::std::string::String| {
22307                request.page_token = token;
22308            },
22309        )
22310    }
22311    /// Creates a NAT gateway in a public subnet, one whose route table sends
22312    /// the IPv4 default route to an internet gateway, with a floating IP that
22313    /// has no association and backs no other NAT gateway. The operation is
22314    /// done once the change is recorded; the network applies it within
22315    /// seconds.
22316    ///
22317    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NatGateway`] once the change is done.
22318    pub async fn create_nat_gateway(
22319        &self,
22320        mut request: CreateNatGatewayRequest,
22321    ) -> ::core::result::Result<
22322        ::origincloud_core::Operation<NatGateway>,
22323        ::origincloud_core::Error,
22324    > {
22325        if request.request_id.is_empty() {
22326            request.request_id = ::origincloud_core::new_request_id();
22327        }
22328        let p0 = ::origincloud_core::path_value(
22329            "parent",
22330            &request.parent,
22331            "projects/*/zones/*",
22332        )?;
22333        let body = ::origincloud_core::json_body(
22334            request.nat_gateway.as_ref().unwrap_or(&::core::default::Default::default()),
22335        )?;
22336        let query = ::origincloud_core::query(&request, &["parent", "natGateway"])?;
22337        let call = ::origincloud_core::Request::new(
22338                ::origincloud_core::Method::POST,
22339                format!("/v1beta1/{p0}/natGateways"),
22340            )
22341            .with_body(body)
22342            .with_query(query)
22343            .idempotent();
22344        let operation = self.service.call(call).await?;
22345        Ok(
22346            ::origincloud_core::Operation::new(
22347                self.service.clone(),
22348                operation,
22349                "origincloud.network.v1beta1.NatGateway",
22350            ),
22351        )
22352    }
22353    /// Changes a NAT gateway's tags. The operation is done once the change is
22354    /// recorded.
22355    ///
22356    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NatGateway`] once the change is done.
22357    pub async fn update_nat_gateway(
22358        &self,
22359        mut request: UpdateNatGatewayRequest,
22360    ) -> ::core::result::Result<
22361        ::origincloud_core::Operation<NatGateway>,
22362        ::origincloud_core::Error,
22363    > {
22364        if request.request_id.is_empty() {
22365            request.request_id = ::origincloud_core::new_request_id();
22366        }
22367        let p0 = ::origincloud_core::path_value(
22368            "natGateway.name",
22369            request.nat_gateway.as_ref().map_or("", |m| m.name.as_str()),
22370            "projects/*/zones/*/natGateways/*",
22371        )?;
22372        let body = ::origincloud_core::json_body(
22373            request.nat_gateway.as_ref().unwrap_or(&::core::default::Default::default()),
22374        )?;
22375        let query = ::origincloud_core::query(
22376            &request,
22377            &["natGateway.name", "natGateway"],
22378        )?;
22379        let call = ::origincloud_core::Request::new(
22380                ::origincloud_core::Method::PATCH,
22381                format!("/v1beta1/{p0}"),
22382            )
22383            .with_body(body)
22384            .with_query(query)
22385            .idempotent();
22386        let operation = self.service.call(call).await?;
22387        Ok(
22388            ::origincloud_core::Operation::new(
22389                self.service.clone(),
22390                operation,
22391                "origincloud.network.v1beta1.NatGateway",
22392            ),
22393        )
22394    }
22395    /// Deletes a NAT gateway. Its floating IP stays allocated. Refused while
22396    /// a route targets it. The operation is done once the change is recorded;
22397    /// the network applies it within seconds.
22398    ///
22399    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22400    pub async fn delete_nat_gateway(
22401        &self,
22402        mut request: DeleteNatGatewayRequest,
22403    ) -> ::core::result::Result<
22404        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22405        ::origincloud_core::Error,
22406    > {
22407        if request.request_id.is_empty() {
22408            request.request_id = ::origincloud_core::new_request_id();
22409        }
22410        let p0 = ::origincloud_core::path_value(
22411            "name",
22412            &request.name,
22413            "projects/*/zones/*/natGateways/*",
22414        )?;
22415        let query = ::origincloud_core::query(&request, &["name"])?;
22416        let call = ::origincloud_core::Request::new(
22417                ::origincloud_core::Method::DELETE,
22418                format!("/v1beta1/{p0}"),
22419            )
22420            .with_query(query)
22421            .idempotent();
22422        let operation = self.service.call(call).await?;
22423        Ok(
22424            ::origincloud_core::Operation::new(
22425                self.service.clone(),
22426                operation,
22427                "google.protobuf.Empty",
22428            ),
22429        )
22430    }
22431}
22432/// Calls `NetworkInterfaceService`.
22433///
22434/// Network interfaces: private IPv4 and IPv6 addresses in a subnet, with the
22435/// security groups that filter their traffic. Launching an instance attaches
22436/// existing interfaces, which are created here first; an interface starts
22437/// closed until security group associations open it.
22438#[derive(Clone, Debug)]
22439pub struct NetworkInterfaceClient {
22440    service: ::origincloud_core::Service,
22441}
22442impl NetworkInterfaceClient {
22443    /// Returns a client of `NetworkInterfaceService` that sends its calls through `client`.
22444    pub fn new(client: &::origincloud_core::Client) -> Self {
22445        Self {
22446            service: client.service("network", true),
22447        }
22448    }
22449    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22450    pub fn service(&self) -> &::origincloud_core::Service {
22451        &self.service
22452    }
22453    /// Returns a network interface.
22454    pub async fn get_network_interface(
22455        &self,
22456        request: GetNetworkInterfaceRequest,
22457    ) -> ::core::result::Result<NetworkInterface, ::origincloud_core::Error> {
22458        let p0 = ::origincloud_core::path_value(
22459            "name",
22460            &request.name,
22461            "projects/*/zones/*/networkInterfaces/*",
22462        )?;
22463        let query = ::origincloud_core::query(&request, &["name"])?;
22464        let call = ::origincloud_core::Request::new(
22465                ::origincloud_core::Method::GET,
22466                format!("/v1beta1/{p0}"),
22467            )
22468            .with_query(query)
22469            .idempotent();
22470        self.service.call(call).await
22471    }
22472    /// Lists the network interfaces in a zone, oldest first.
22473    pub async fn list_network_interfaces(
22474        &self,
22475        request: ListNetworkInterfacesRequest,
22476    ) -> ::core::result::Result<
22477        ListNetworkInterfacesResponse,
22478        ::origincloud_core::Error,
22479    > {
22480        let p0 = ::origincloud_core::path_value(
22481            "parent",
22482            &request.parent,
22483            "projects/*/zones/*",
22484        )?;
22485        let query = ::origincloud_core::query(&request, &["parent"])?;
22486        let call = ::origincloud_core::Request::new(
22487                ::origincloud_core::Method::GET,
22488                format!("/v1beta1/{p0}/networkInterfaces"),
22489            )
22490            .with_query(query)
22491            .idempotent();
22492        self.service.call(call).await
22493    }
22494    /// 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.
22495    pub fn all_network_interfaces(
22496        &self,
22497        request: ListNetworkInterfacesRequest,
22498    ) -> ::origincloud_core::Pages<NetworkInterface> {
22499        let client = self.clone();
22500        ::origincloud_core::Pages::new(
22501            request,
22502            move |request: ListNetworkInterfacesRequest| {
22503                let client = client.clone();
22504                async move {
22505                    let page = client.list_network_interfaces(request).await?;
22506                    Ok((page.network_interfaces, page.next_page_token))
22507                }
22508            },
22509            |request: &mut ListNetworkInterfacesRequest, token: ::std::string::String| {
22510                request.page_token = token;
22511            },
22512        )
22513    }
22514    /// Creates an unattached network interface with the next free addresses
22515    /// of its subnet and no security group: it admits and sends nothing until
22516    /// a security group association opens it. The operation is done once the
22517    /// change is recorded; the network applies it within seconds.
22518    ///
22519    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NetworkInterface`] once the change is done.
22520    pub async fn create_network_interface(
22521        &self,
22522        mut request: CreateNetworkInterfaceRequest,
22523    ) -> ::core::result::Result<
22524        ::origincloud_core::Operation<NetworkInterface>,
22525        ::origincloud_core::Error,
22526    > {
22527        if request.request_id.is_empty() {
22528            request.request_id = ::origincloud_core::new_request_id();
22529        }
22530        let p0 = ::origincloud_core::path_value(
22531            "parent",
22532            &request.parent,
22533            "projects/*/zones/*",
22534        )?;
22535        let body = ::origincloud_core::json_body(
22536            request
22537                .network_interface
22538                .as_ref()
22539                .unwrap_or(&::core::default::Default::default()),
22540        )?;
22541        let query = ::origincloud_core::query(
22542            &request,
22543            &["parent", "networkInterface"],
22544        )?;
22545        let call = ::origincloud_core::Request::new(
22546                ::origincloud_core::Method::POST,
22547                format!("/v1beta1/{p0}/networkInterfaces"),
22548            )
22549            .with_body(body)
22550            .with_query(query)
22551            .idempotent();
22552        let operation = self.service.call(call).await?;
22553        Ok(
22554            ::origincloud_core::Operation::new(
22555                self.service.clone(),
22556                operation,
22557                "origincloud.network.v1beta1.NetworkInterface",
22558            ),
22559        )
22560    }
22561    /// Changes a network interface's source-address check or tags, also while
22562    /// it is attached. The operation is done once the change is recorded; the
22563    /// network applies it within seconds.
22564    ///
22565    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NetworkInterface`] once the change is done.
22566    pub async fn update_network_interface(
22567        &self,
22568        mut request: UpdateNetworkInterfaceRequest,
22569    ) -> ::core::result::Result<
22570        ::origincloud_core::Operation<NetworkInterface>,
22571        ::origincloud_core::Error,
22572    > {
22573        if request.request_id.is_empty() {
22574            request.request_id = ::origincloud_core::new_request_id();
22575        }
22576        let p0 = ::origincloud_core::path_value(
22577            "networkInterface.name",
22578            request.network_interface.as_ref().map_or("", |m| m.name.as_str()),
22579            "projects/*/zones/*/networkInterfaces/*",
22580        )?;
22581        let body = ::origincloud_core::json_body(
22582            request
22583                .network_interface
22584                .as_ref()
22585                .unwrap_or(&::core::default::Default::default()),
22586        )?;
22587        let query = ::origincloud_core::query(
22588            &request,
22589            &["networkInterface.name", "networkInterface"],
22590        )?;
22591        let call = ::origincloud_core::Request::new(
22592                ::origincloud_core::Method::PATCH,
22593                format!("/v1beta1/{p0}"),
22594            )
22595            .with_body(body)
22596            .with_query(query)
22597            .idempotent();
22598        let operation = self.service.call(call).await?;
22599        Ok(
22600            ::origincloud_core::Operation::new(
22601                self.service.clone(),
22602                operation,
22603                "origincloud.network.v1beta1.NetworkInterface",
22604            ),
22605        )
22606    }
22607    /// Deletes a network interface with its security group associations.
22608    /// Refused while it is attached to an instance or a floating IP is
22609    /// associated with it. The operation is done once the change is
22610    /// recorded; the network applies it within seconds.
22611    ///
22612    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22613    pub async fn delete_network_interface(
22614        &self,
22615        mut request: DeleteNetworkInterfaceRequest,
22616    ) -> ::core::result::Result<
22617        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22618        ::origincloud_core::Error,
22619    > {
22620        if request.request_id.is_empty() {
22621            request.request_id = ::origincloud_core::new_request_id();
22622        }
22623        let p0 = ::origincloud_core::path_value(
22624            "name",
22625            &request.name,
22626            "projects/*/zones/*/networkInterfaces/*",
22627        )?;
22628        let query = ::origincloud_core::query(&request, &["name"])?;
22629        let call = ::origincloud_core::Request::new(
22630                ::origincloud_core::Method::DELETE,
22631                format!("/v1beta1/{p0}"),
22632            )
22633            .with_query(query)
22634            .idempotent();
22635        let operation = self.service.call(call).await?;
22636        Ok(
22637            ::origincloud_core::Operation::new(
22638                self.service.clone(),
22639                operation,
22640                "google.protobuf.Empty",
22641            ),
22642        )
22643    }
22644}
22645/// Calls `RouteService`.
22646///
22647/// Routes: where a route table sends traffic to a destination outside the
22648/// VPC. A route is immutable: it is created and deleted, never changed, so to
22649/// change one, delete it and create its replacement. A table has at most one
22650/// route per destination, so the replacement can only be created once the old
22651/// route is deleted: between the two, the table has no route to that
22652/// destination.
22653#[derive(Clone, Debug)]
22654pub struct RouteClient {
22655    service: ::origincloud_core::Service,
22656}
22657impl RouteClient {
22658    /// Returns a client of `RouteService` that sends its calls through `client`.
22659    pub fn new(client: &::origincloud_core::Client) -> Self {
22660        Self {
22661            service: client.service("network", true),
22662        }
22663    }
22664    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22665    pub fn service(&self) -> &::origincloud_core::Service {
22666        &self.service
22667    }
22668    /// Returns a route.
22669    pub async fn get_route(
22670        &self,
22671        request: GetRouteRequest,
22672    ) -> ::core::result::Result<Route, ::origincloud_core::Error> {
22673        let p0 = ::origincloud_core::path_value(
22674            "name",
22675            &request.name,
22676            "projects/*/regions/*/routeTables/*/routes/*",
22677        )?;
22678        let query = ::origincloud_core::query(&request, &["name"])?;
22679        let call = ::origincloud_core::Request::new(
22680                ::origincloud_core::Method::GET,
22681                format!("/v1beta1/{p0}"),
22682            )
22683            .with_query(query)
22684            .idempotent();
22685        self.service.call(call).await
22686    }
22687    /// Lists a route table's routes, oldest first. Its local routes aren't
22688    /// listed: they are the table's `local_routes`.
22689    pub async fn list_routes(
22690        &self,
22691        request: ListRoutesRequest,
22692    ) -> ::core::result::Result<ListRoutesResponse, ::origincloud_core::Error> {
22693        let p0 = ::origincloud_core::path_value(
22694            "parent",
22695            &request.parent,
22696            "projects/*/regions/*/routeTables/*",
22697        )?;
22698        let query = ::origincloud_core::query(&request, &["parent"])?;
22699        let call = ::origincloud_core::Request::new(
22700                ::origincloud_core::Method::GET,
22701                format!("/v1beta1/{p0}/routes"),
22702            )
22703            .with_query(query)
22704            .idempotent();
22705        self.service.call(call).await
22706    }
22707    /// 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.
22708    pub fn all_routes(
22709        &self,
22710        request: ListRoutesRequest,
22711    ) -> ::origincloud_core::Pages<Route> {
22712        let client = self.clone();
22713        ::origincloud_core::Pages::new(
22714            request,
22715            move |request: ListRoutesRequest| {
22716                let client = client.clone();
22717                async move {
22718                    let page = client.list_routes(request).await?;
22719                    Ok((page.routes, page.next_page_token))
22720                }
22721            },
22722            |request: &mut ListRoutesRequest, token: ::std::string::String| {
22723                request.page_token = token;
22724            },
22725        )
22726    }
22727    /// Adds a route to a route table. Refused with `FAILED_PRECONDITION` when
22728    /// the table has a route to the same destination. The operation is done
22729    /// once the change is recorded; the network applies it within seconds.
22730    ///
22731    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Route`] once the change is done.
22732    pub async fn create_route(
22733        &self,
22734        mut request: CreateRouteRequest,
22735    ) -> ::core::result::Result<
22736        ::origincloud_core::Operation<Route>,
22737        ::origincloud_core::Error,
22738    > {
22739        if request.request_id.is_empty() {
22740            request.request_id = ::origincloud_core::new_request_id();
22741        }
22742        let p0 = ::origincloud_core::path_value(
22743            "parent",
22744            &request.parent,
22745            "projects/*/regions/*/routeTables/*",
22746        )?;
22747        let body = ::origincloud_core::json_body(
22748            request.route.as_ref().unwrap_or(&::core::default::Default::default()),
22749        )?;
22750        let query = ::origincloud_core::query(&request, &["parent", "route"])?;
22751        let call = ::origincloud_core::Request::new(
22752                ::origincloud_core::Method::POST,
22753                format!("/v1beta1/{p0}/routes"),
22754            )
22755            .with_body(body)
22756            .with_query(query)
22757            .idempotent();
22758        let operation = self.service.call(call).await?;
22759        Ok(
22760            ::origincloud_core::Operation::new(
22761                self.service.clone(),
22762                operation,
22763                "origincloud.network.v1beta1.Route",
22764            ),
22765        )
22766    }
22767    /// Removes a route from its route table. The operation is done once the
22768    /// change is recorded; the network applies it within seconds.
22769    ///
22770    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22771    pub async fn delete_route(
22772        &self,
22773        mut request: DeleteRouteRequest,
22774    ) -> ::core::result::Result<
22775        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22776        ::origincloud_core::Error,
22777    > {
22778        if request.request_id.is_empty() {
22779            request.request_id = ::origincloud_core::new_request_id();
22780        }
22781        let p0 = ::origincloud_core::path_value(
22782            "name",
22783            &request.name,
22784            "projects/*/regions/*/routeTables/*/routes/*",
22785        )?;
22786        let query = ::origincloud_core::query(&request, &["name"])?;
22787        let call = ::origincloud_core::Request::new(
22788                ::origincloud_core::Method::DELETE,
22789                format!("/v1beta1/{p0}"),
22790            )
22791            .with_query(query)
22792            .idempotent();
22793        let operation = self.service.call(call).await?;
22794        Ok(
22795            ::origincloud_core::Operation::new(
22796                self.service.clone(),
22797                operation,
22798                "google.protobuf.Empty",
22799            ),
22800        )
22801    }
22802}
22803/// Calls `RouteTableService`.
22804///
22805/// Route tables: where a subnet's traffic leaves the VPC. A table holds
22806/// routes (`RouteService`), and applies to the subnets that a route table
22807/// association names it for (`RouteTableAssociationService`).
22808#[derive(Clone, Debug)]
22809pub struct RouteTableClient {
22810    service: ::origincloud_core::Service,
22811}
22812impl RouteTableClient {
22813    /// Returns a client of `RouteTableService` that sends its calls through `client`.
22814    pub fn new(client: &::origincloud_core::Client) -> Self {
22815        Self {
22816            service: client.service("network", true),
22817        }
22818    }
22819    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22820    pub fn service(&self) -> &::origincloud_core::Service {
22821        &self.service
22822    }
22823    /// Returns a route table.
22824    pub async fn get_route_table(
22825        &self,
22826        request: GetRouteTableRequest,
22827    ) -> ::core::result::Result<RouteTable, ::origincloud_core::Error> {
22828        let p0 = ::origincloud_core::path_value(
22829            "name",
22830            &request.name,
22831            "projects/*/regions/*/routeTables/*",
22832        )?;
22833        let query = ::origincloud_core::query(&request, &["name"])?;
22834        let call = ::origincloud_core::Request::new(
22835                ::origincloud_core::Method::GET,
22836                format!("/v1beta1/{p0}"),
22837            )
22838            .with_query(query)
22839            .idempotent();
22840        self.service.call(call).await
22841    }
22842    /// Lists the route tables in a region, oldest first.
22843    pub async fn list_route_tables(
22844        &self,
22845        request: ListRouteTablesRequest,
22846    ) -> ::core::result::Result<ListRouteTablesResponse, ::origincloud_core::Error> {
22847        let p0 = ::origincloud_core::path_value(
22848            "parent",
22849            &request.parent,
22850            "projects/*/regions/*",
22851        )?;
22852        let query = ::origincloud_core::query(&request, &["parent"])?;
22853        let call = ::origincloud_core::Request::new(
22854                ::origincloud_core::Method::GET,
22855                format!("/v1beta1/{p0}/routeTables"),
22856            )
22857            .with_query(query)
22858            .idempotent();
22859        self.service.call(call).await
22860    }
22861    /// 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.
22862    pub fn all_route_tables(
22863        &self,
22864        request: ListRouteTablesRequest,
22865    ) -> ::origincloud_core::Pages<RouteTable> {
22866        let client = self.clone();
22867        ::origincloud_core::Pages::new(
22868            request,
22869            move |request: ListRouteTablesRequest| {
22870                let client = client.clone();
22871                async move {
22872                    let page = client.list_route_tables(request).await?;
22873                    Ok((page.route_tables, page.next_page_token))
22874                }
22875            },
22876            |request: &mut ListRouteTablesRequest, token: ::std::string::String| {
22877                request.page_token = token;
22878            },
22879        )
22880    }
22881    /// Creates a route table in a VPC, with the VPC's local routes and no
22882    /// other. The operation is done once the route table is recorded.
22883    ///
22884    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTable`] once the change is done.
22885    pub async fn create_route_table(
22886        &self,
22887        mut request: CreateRouteTableRequest,
22888    ) -> ::core::result::Result<
22889        ::origincloud_core::Operation<RouteTable>,
22890        ::origincloud_core::Error,
22891    > {
22892        if request.request_id.is_empty() {
22893            request.request_id = ::origincloud_core::new_request_id();
22894        }
22895        let p0 = ::origincloud_core::path_value(
22896            "parent",
22897            &request.parent,
22898            "projects/*/regions/*",
22899        )?;
22900        let body = ::origincloud_core::json_body(
22901            request.route_table.as_ref().unwrap_or(&::core::default::Default::default()),
22902        )?;
22903        let query = ::origincloud_core::query(&request, &["parent", "routeTable"])?;
22904        let call = ::origincloud_core::Request::new(
22905                ::origincloud_core::Method::POST,
22906                format!("/v1beta1/{p0}/routeTables"),
22907            )
22908            .with_body(body)
22909            .with_query(query)
22910            .idempotent();
22911        let operation = self.service.call(call).await?;
22912        Ok(
22913            ::origincloud_core::Operation::new(
22914                self.service.clone(),
22915                operation,
22916                "origincloud.network.v1beta1.RouteTable",
22917            ),
22918        )
22919    }
22920    /// Changes a route table's tags. The operation is done once the change is
22921    /// recorded.
22922    ///
22923    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTable`] once the change is done.
22924    pub async fn update_route_table(
22925        &self,
22926        mut request: UpdateRouteTableRequest,
22927    ) -> ::core::result::Result<
22928        ::origincloud_core::Operation<RouteTable>,
22929        ::origincloud_core::Error,
22930    > {
22931        if request.request_id.is_empty() {
22932            request.request_id = ::origincloud_core::new_request_id();
22933        }
22934        let p0 = ::origincloud_core::path_value(
22935            "routeTable.name",
22936            request.route_table.as_ref().map_or("", |m| m.name.as_str()),
22937            "projects/*/regions/*/routeTables/*",
22938        )?;
22939        let body = ::origincloud_core::json_body(
22940            request.route_table.as_ref().unwrap_or(&::core::default::Default::default()),
22941        )?;
22942        let query = ::origincloud_core::query(
22943            &request,
22944            &["routeTable.name", "routeTable"],
22945        )?;
22946        let call = ::origincloud_core::Request::new(
22947                ::origincloud_core::Method::PATCH,
22948                format!("/v1beta1/{p0}"),
22949            )
22950            .with_body(body)
22951            .with_query(query)
22952            .idempotent();
22953        let operation = self.service.call(call).await?;
22954        Ok(
22955            ::origincloud_core::Operation::new(
22956                self.service.clone(),
22957                operation,
22958                "origincloud.network.v1beta1.RouteTable",
22959            ),
22960        )
22961    }
22962    /// Deletes a route table with its routes. Refused for a main route table,
22963    /// which goes with its VPC, and while a route table association names
22964    /// the table. The operation is done once the change is recorded; the
22965    /// network applies it within seconds.
22966    ///
22967    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22968    pub async fn delete_route_table(
22969        &self,
22970        mut request: DeleteRouteTableRequest,
22971    ) -> ::core::result::Result<
22972        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22973        ::origincloud_core::Error,
22974    > {
22975        if request.request_id.is_empty() {
22976            request.request_id = ::origincloud_core::new_request_id();
22977        }
22978        let p0 = ::origincloud_core::path_value(
22979            "name",
22980            &request.name,
22981            "projects/*/regions/*/routeTables/*",
22982        )?;
22983        let query = ::origincloud_core::query(&request, &["name"])?;
22984        let call = ::origincloud_core::Request::new(
22985                ::origincloud_core::Method::DELETE,
22986                format!("/v1beta1/{p0}"),
22987            )
22988            .with_query(query)
22989            .idempotent();
22990        let operation = self.service.call(call).await?;
22991        Ok(
22992            ::origincloud_core::Operation::new(
22993                self.service.clone(),
22994                operation,
22995                "google.protobuf.Empty",
22996            ),
22997        )
22998    }
22999}
23000/// Calls `RouteTableAssociationService`.
23001///
23002/// Route table associations: which route table a subnet uses. A subnet has at
23003/// most one; with none it has no route out of its VPC and counts as a subnet
23004/// whose route table has no default route. Internet access is decided per VPC
23005/// and address family, so a subnet without a default route still reaches, and
23006/// is reached from, the internet through a floating IP or an IPv6 address
23007/// while another subnet of its VPC routes out; network ACL and security group
23008/// rules are what keep its traffic in. An
23009/// association's id is the id of the route table it names, so a client that
23010/// knows the subnet and the table names the association without listing. To
23011/// move a subnet to another table, delete its association and create
23012/// another.
23013#[derive(Clone, Debug)]
23014pub struct RouteTableAssociationClient {
23015    service: ::origincloud_core::Service,
23016}
23017impl RouteTableAssociationClient {
23018    /// Returns a client of `RouteTableAssociationService` that sends its calls through `client`.
23019    pub fn new(client: &::origincloud_core::Client) -> Self {
23020        Self {
23021            service: client.service("network", true),
23022        }
23023    }
23024    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23025    pub fn service(&self) -> &::origincloud_core::Service {
23026        &self.service
23027    }
23028    /// Returns a route table association.
23029    pub async fn get_route_table_association(
23030        &self,
23031        request: GetRouteTableAssociationRequest,
23032    ) -> ::core::result::Result<RouteTableAssociation, ::origincloud_core::Error> {
23033        let p0 = ::origincloud_core::path_value(
23034            "name",
23035            &request.name,
23036            "projects/*/zones/*/subnets/*/routeTableAssociations/*",
23037        )?;
23038        let query = ::origincloud_core::query(&request, &["name"])?;
23039        let call = ::origincloud_core::Request::new(
23040                ::origincloud_core::Method::GET,
23041                format!("/v1beta1/{p0}"),
23042            )
23043            .with_query(query)
23044            .idempotent();
23045        self.service.call(call).await
23046    }
23047    /// Lists a subnet's route table associations: none or one.
23048    pub async fn list_route_table_associations(
23049        &self,
23050        request: ListRouteTableAssociationsRequest,
23051    ) -> ::core::result::Result<
23052        ListRouteTableAssociationsResponse,
23053        ::origincloud_core::Error,
23054    > {
23055        let p0 = ::origincloud_core::path_value(
23056            "parent",
23057            &request.parent,
23058            "projects/*/zones/*/subnets/*",
23059        )?;
23060        let query = ::origincloud_core::query(&request, &["parent"])?;
23061        let call = ::origincloud_core::Request::new(
23062                ::origincloud_core::Method::GET,
23063                format!("/v1beta1/{p0}/routeTableAssociations"),
23064            )
23065            .with_query(query)
23066            .idempotent();
23067        self.service.call(call).await
23068    }
23069    /// 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.
23070    pub fn all_route_table_associations(
23071        &self,
23072        request: ListRouteTableAssociationsRequest,
23073    ) -> ::origincloud_core::Pages<RouteTableAssociation> {
23074        let client = self.clone();
23075        ::origincloud_core::Pages::new(
23076            request,
23077            move |request: ListRouteTableAssociationsRequest| {
23078                let client = client.clone();
23079                async move {
23080                    let page = client.list_route_table_associations(request).await?;
23081                    Ok((page.route_table_associations, page.next_page_token))
23082                }
23083            },
23084            |
23085                request: &mut ListRouteTableAssociationsRequest,
23086                token: ::std::string::String|
23087            request.page_token = token,
23088        )
23089    }
23090    /// Associates a route table with a subnet. Refused with
23091    /// `FAILED_PRECONDITION` when the subnet has a route table association. The operation is done
23092    /// once the change is recorded; the network applies it within seconds.
23093    ///
23094    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTableAssociation`] once the change is done.
23095    pub async fn create_route_table_association(
23096        &self,
23097        mut request: CreateRouteTableAssociationRequest,
23098    ) -> ::core::result::Result<
23099        ::origincloud_core::Operation<RouteTableAssociation>,
23100        ::origincloud_core::Error,
23101    > {
23102        if request.request_id.is_empty() {
23103            request.request_id = ::origincloud_core::new_request_id();
23104        }
23105        let p0 = ::origincloud_core::path_value(
23106            "parent",
23107            &request.parent,
23108            "projects/*/zones/*/subnets/*",
23109        )?;
23110        let body = ::origincloud_core::json_body(
23111            request
23112                .route_table_association
23113                .as_ref()
23114                .unwrap_or(&::core::default::Default::default()),
23115        )?;
23116        let query = ::origincloud_core::query(
23117            &request,
23118            &["parent", "routeTableAssociation"],
23119        )?;
23120        let call = ::origincloud_core::Request::new(
23121                ::origincloud_core::Method::POST,
23122                format!("/v1beta1/{p0}/routeTableAssociations"),
23123            )
23124            .with_body(body)
23125            .with_query(query)
23126            .idempotent();
23127        let operation = self.service.call(call).await?;
23128        Ok(
23129            ::origincloud_core::Operation::new(
23130                self.service.clone(),
23131                operation,
23132                "origincloud.network.v1beta1.RouteTableAssociation",
23133            ),
23134        )
23135    }
23136    /// Removes a subnet's route table association. The subnet then has no
23137    /// route out of its VPC and counts as a subnet whose route table has no
23138    /// default route. The
23139    /// operation is done once the change is recorded; the network applies it
23140    /// within seconds.
23141    ///
23142    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23143    pub async fn delete_route_table_association(
23144        &self,
23145        mut request: DeleteRouteTableAssociationRequest,
23146    ) -> ::core::result::Result<
23147        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23148        ::origincloud_core::Error,
23149    > {
23150        if request.request_id.is_empty() {
23151            request.request_id = ::origincloud_core::new_request_id();
23152        }
23153        let p0 = ::origincloud_core::path_value(
23154            "name",
23155            &request.name,
23156            "projects/*/zones/*/subnets/*/routeTableAssociations/*",
23157        )?;
23158        let query = ::origincloud_core::query(&request, &["name"])?;
23159        let call = ::origincloud_core::Request::new(
23160                ::origincloud_core::Method::DELETE,
23161                format!("/v1beta1/{p0}"),
23162            )
23163            .with_query(query)
23164            .idempotent();
23165        let operation = self.service.call(call).await?;
23166        Ok(
23167            ::origincloud_core::Operation::new(
23168                self.service.clone(),
23169                operation,
23170                "google.protobuf.Empty",
23171            ),
23172        )
23173    }
23174}
23175/// Calls `SecurityGroupService`.
23176///
23177/// Security groups: stateful filters on network interfaces. A group holds
23178/// rules (`SecurityGroupRuleService`), and applies to the interfaces that a
23179/// security group association names it for
23180/// (`SecurityGroupAssociationService`). An interface admits the traffic any
23181/// of its groups allows, and the replies to what it sends; everything else
23182/// is dropped.
23183#[derive(Clone, Debug)]
23184pub struct SecurityGroupClient {
23185    service: ::origincloud_core::Service,
23186}
23187impl SecurityGroupClient {
23188    /// Returns a client of `SecurityGroupService` that sends its calls through `client`.
23189    pub fn new(client: &::origincloud_core::Client) -> Self {
23190        Self {
23191            service: client.service("network", true),
23192        }
23193    }
23194    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23195    pub fn service(&self) -> &::origincloud_core::Service {
23196        &self.service
23197    }
23198    /// Returns a security group.
23199    pub async fn get_security_group(
23200        &self,
23201        request: GetSecurityGroupRequest,
23202    ) -> ::core::result::Result<SecurityGroup, ::origincloud_core::Error> {
23203        let p0 = ::origincloud_core::path_value(
23204            "name",
23205            &request.name,
23206            "projects/*/regions/*/securityGroups/*",
23207        )?;
23208        let query = ::origincloud_core::query(&request, &["name"])?;
23209        let call = ::origincloud_core::Request::new(
23210                ::origincloud_core::Method::GET,
23211                format!("/v1beta1/{p0}"),
23212            )
23213            .with_query(query)
23214            .idempotent();
23215        self.service.call(call).await
23216    }
23217    /// Lists the security groups in a region, oldest first.
23218    pub async fn list_security_groups(
23219        &self,
23220        request: ListSecurityGroupsRequest,
23221    ) -> ::core::result::Result<ListSecurityGroupsResponse, ::origincloud_core::Error> {
23222        let p0 = ::origincloud_core::path_value(
23223            "parent",
23224            &request.parent,
23225            "projects/*/regions/*",
23226        )?;
23227        let query = ::origincloud_core::query(&request, &["parent"])?;
23228        let call = ::origincloud_core::Request::new(
23229                ::origincloud_core::Method::GET,
23230                format!("/v1beta1/{p0}/securityGroups"),
23231            )
23232            .with_query(query)
23233            .idempotent();
23234        self.service.call(call).await
23235    }
23236    /// 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.
23237    pub fn all_security_groups(
23238        &self,
23239        request: ListSecurityGroupsRequest,
23240    ) -> ::origincloud_core::Pages<SecurityGroup> {
23241        let client = self.clone();
23242        ::origincloud_core::Pages::new(
23243            request,
23244            move |request: ListSecurityGroupsRequest| {
23245                let client = client.clone();
23246                async move {
23247                    let page = client.list_security_groups(request).await?;
23248                    Ok((page.security_groups, page.next_page_token))
23249                }
23250            },
23251            |request: &mut ListSecurityGroupsRequest, token: ::std::string::String| {
23252                request.page_token = token;
23253            },
23254        )
23255    }
23256    /// Creates a security group in a VPC, with no rules: it allows nothing
23257    /// until rules are added. The operation is done once the security group
23258    /// is recorded.
23259    ///
23260    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroup`] once the change is done.
23261    pub async fn create_security_group(
23262        &self,
23263        mut request: CreateSecurityGroupRequest,
23264    ) -> ::core::result::Result<
23265        ::origincloud_core::Operation<SecurityGroup>,
23266        ::origincloud_core::Error,
23267    > {
23268        if request.request_id.is_empty() {
23269            request.request_id = ::origincloud_core::new_request_id();
23270        }
23271        let p0 = ::origincloud_core::path_value(
23272            "parent",
23273            &request.parent,
23274            "projects/*/regions/*",
23275        )?;
23276        let body = ::origincloud_core::json_body(
23277            request
23278                .security_group
23279                .as_ref()
23280                .unwrap_or(&::core::default::Default::default()),
23281        )?;
23282        let query = ::origincloud_core::query(&request, &["parent", "securityGroup"])?;
23283        let call = ::origincloud_core::Request::new(
23284                ::origincloud_core::Method::POST,
23285                format!("/v1beta1/{p0}/securityGroups"),
23286            )
23287            .with_body(body)
23288            .with_query(query)
23289            .idempotent();
23290        let operation = self.service.call(call).await?;
23291        Ok(
23292            ::origincloud_core::Operation::new(
23293                self.service.clone(),
23294                operation,
23295                "origincloud.network.v1beta1.SecurityGroup",
23296            ),
23297        )
23298    }
23299    /// Changes a security group's tags. The operation is done once the change
23300    /// is recorded.
23301    ///
23302    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroup`] once the change is done.
23303    pub async fn update_security_group(
23304        &self,
23305        mut request: UpdateSecurityGroupRequest,
23306    ) -> ::core::result::Result<
23307        ::origincloud_core::Operation<SecurityGroup>,
23308        ::origincloud_core::Error,
23309    > {
23310        if request.request_id.is_empty() {
23311            request.request_id = ::origincloud_core::new_request_id();
23312        }
23313        let p0 = ::origincloud_core::path_value(
23314            "securityGroup.name",
23315            request.security_group.as_ref().map_or("", |m| m.name.as_str()),
23316            "projects/*/regions/*/securityGroups/*",
23317        )?;
23318        let body = ::origincloud_core::json_body(
23319            request
23320                .security_group
23321                .as_ref()
23322                .unwrap_or(&::core::default::Default::default()),
23323        )?;
23324        let query = ::origincloud_core::query(
23325            &request,
23326            &["securityGroup.name", "securityGroup"],
23327        )?;
23328        let call = ::origincloud_core::Request::new(
23329                ::origincloud_core::Method::PATCH,
23330                format!("/v1beta1/{p0}"),
23331            )
23332            .with_body(body)
23333            .with_query(query)
23334            .idempotent();
23335        let operation = self.service.call(call).await?;
23336        Ok(
23337            ::origincloud_core::Operation::new(
23338                self.service.clone(),
23339                operation,
23340                "origincloud.network.v1beta1.SecurityGroup",
23341            ),
23342        )
23343    }
23344    /// Deletes a security group with its rules. Refused for a group the
23345    /// platform created with its VPC, which goes with the VPC, and while a
23346    /// security group association names it. The operation is done once the
23347    /// change is recorded; the network applies it within seconds.
23348    ///
23349    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23350    pub async fn delete_security_group(
23351        &self,
23352        mut request: DeleteSecurityGroupRequest,
23353    ) -> ::core::result::Result<
23354        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23355        ::origincloud_core::Error,
23356    > {
23357        if request.request_id.is_empty() {
23358            request.request_id = ::origincloud_core::new_request_id();
23359        }
23360        let p0 = ::origincloud_core::path_value(
23361            "name",
23362            &request.name,
23363            "projects/*/regions/*/securityGroups/*",
23364        )?;
23365        let query = ::origincloud_core::query(&request, &["name"])?;
23366        let call = ::origincloud_core::Request::new(
23367                ::origincloud_core::Method::DELETE,
23368                format!("/v1beta1/{p0}"),
23369            )
23370            .with_query(query)
23371            .idempotent();
23372        let operation = self.service.call(call).await?;
23373        Ok(
23374            ::origincloud_core::Operation::new(
23375                self.service.clone(),
23376                operation,
23377                "google.protobuf.Empty",
23378            ),
23379        )
23380    }
23381}
23382/// Calls `SecurityGroupAssociationService`.
23383///
23384/// Security group associations: which security groups filter a network
23385/// interface's traffic. An interface can have many, and admits the traffic
23386/// any of them allows; without one, it is closed (see the interface's
23387/// `security_groups`). An association's id is the id of the security group it
23388/// names, so a client that knows the interface and the group names the
23389/// association without listing.
23390#[derive(Clone, Debug)]
23391pub struct SecurityGroupAssociationClient {
23392    service: ::origincloud_core::Service,
23393}
23394impl SecurityGroupAssociationClient {
23395    /// Returns a client of `SecurityGroupAssociationService` that sends its calls through `client`.
23396    pub fn new(client: &::origincloud_core::Client) -> Self {
23397        Self {
23398            service: client.service("network", true),
23399        }
23400    }
23401    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23402    pub fn service(&self) -> &::origincloud_core::Service {
23403        &self.service
23404    }
23405    /// Returns a security group association.
23406    pub async fn get_security_group_association(
23407        &self,
23408        request: GetSecurityGroupAssociationRequest,
23409    ) -> ::core::result::Result<SecurityGroupAssociation, ::origincloud_core::Error> {
23410        let p0 = ::origincloud_core::path_value(
23411            "name",
23412            &request.name,
23413            "projects/*/zones/*/networkInterfaces/*/securityGroupAssociations/*",
23414        )?;
23415        let query = ::origincloud_core::query(&request, &["name"])?;
23416        let call = ::origincloud_core::Request::new(
23417                ::origincloud_core::Method::GET,
23418                format!("/v1beta1/{p0}"),
23419            )
23420            .with_query(query)
23421            .idempotent();
23422        self.service.call(call).await
23423    }
23424    /// Lists a network interface's security group associations, oldest first.
23425    pub async fn list_security_group_associations(
23426        &self,
23427        request: ListSecurityGroupAssociationsRequest,
23428    ) -> ::core::result::Result<
23429        ListSecurityGroupAssociationsResponse,
23430        ::origincloud_core::Error,
23431    > {
23432        let p0 = ::origincloud_core::path_value(
23433            "parent",
23434            &request.parent,
23435            "projects/*/zones/*/networkInterfaces/*",
23436        )?;
23437        let query = ::origincloud_core::query(&request, &["parent"])?;
23438        let call = ::origincloud_core::Request::new(
23439                ::origincloud_core::Method::GET,
23440                format!("/v1beta1/{p0}/securityGroupAssociations"),
23441            )
23442            .with_query(query)
23443            .idempotent();
23444        self.service.call(call).await
23445    }
23446    /// 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.
23447    pub fn all_security_group_associations(
23448        &self,
23449        request: ListSecurityGroupAssociationsRequest,
23450    ) -> ::origincloud_core::Pages<SecurityGroupAssociation> {
23451        let client = self.clone();
23452        ::origincloud_core::Pages::new(
23453            request,
23454            move |request: ListSecurityGroupAssociationsRequest| {
23455                let client = client.clone();
23456                async move {
23457                    let page = client.list_security_group_associations(request).await?;
23458                    Ok((page.security_group_associations, page.next_page_token))
23459                }
23460            },
23461            |
23462                request: &mut ListSecurityGroupAssociationsRequest,
23463                token: ::std::string::String|
23464            request.page_token = token,
23465        )
23466    }
23467    /// Associates a security group with a network interface, also while it is
23468    /// attached. Refused with `FAILED_PRECONDITION` when the interface is
23469    /// associated with that group. The operation is done once the change is recorded; the
23470    /// network applies it within seconds.
23471    ///
23472    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroupAssociation`] once the change is done.
23473    pub async fn create_security_group_association(
23474        &self,
23475        mut request: CreateSecurityGroupAssociationRequest,
23476    ) -> ::core::result::Result<
23477        ::origincloud_core::Operation<SecurityGroupAssociation>,
23478        ::origincloud_core::Error,
23479    > {
23480        if request.request_id.is_empty() {
23481            request.request_id = ::origincloud_core::new_request_id();
23482        }
23483        let p0 = ::origincloud_core::path_value(
23484            "parent",
23485            &request.parent,
23486            "projects/*/zones/*/networkInterfaces/*",
23487        )?;
23488        let body = ::origincloud_core::json_body(
23489            request
23490                .security_group_association
23491                .as_ref()
23492                .unwrap_or(&::core::default::Default::default()),
23493        )?;
23494        let query = ::origincloud_core::query(
23495            &request,
23496            &["parent", "securityGroupAssociation"],
23497        )?;
23498        let call = ::origincloud_core::Request::new(
23499                ::origincloud_core::Method::POST,
23500                format!("/v1beta1/{p0}/securityGroupAssociations"),
23501            )
23502            .with_body(body)
23503            .with_query(query)
23504            .idempotent();
23505        let operation = self.service.call(call).await?;
23506        Ok(
23507            ::origincloud_core::Operation::new(
23508                self.service.clone(),
23509                operation,
23510                "origincloud.network.v1beta1.SecurityGroupAssociation",
23511            ),
23512        )
23513    }
23514    /// Removes a security group from a network interface. Without any, the
23515    /// interface admits and sends nothing except replies to its own traffic and
23516    /// address resolution. The operation is done once the change is recorded;
23517    /// the network applies it within seconds.
23518    ///
23519    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23520    pub async fn delete_security_group_association(
23521        &self,
23522        mut request: DeleteSecurityGroupAssociationRequest,
23523    ) -> ::core::result::Result<
23524        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23525        ::origincloud_core::Error,
23526    > {
23527        if request.request_id.is_empty() {
23528            request.request_id = ::origincloud_core::new_request_id();
23529        }
23530        let p0 = ::origincloud_core::path_value(
23531            "name",
23532            &request.name,
23533            "projects/*/zones/*/networkInterfaces/*/securityGroupAssociations/*",
23534        )?;
23535        let query = ::origincloud_core::query(&request, &["name"])?;
23536        let call = ::origincloud_core::Request::new(
23537                ::origincloud_core::Method::DELETE,
23538                format!("/v1beta1/{p0}"),
23539            )
23540            .with_query(query)
23541            .idempotent();
23542        let operation = self.service.call(call).await?;
23543        Ok(
23544            ::origincloud_core::Operation::new(
23545                self.service.clone(),
23546                operation,
23547                "google.protobuf.Empty",
23548            ),
23549        )
23550    }
23551}
23552/// Calls `SecurityGroupRuleService`.
23553///
23554/// Security group rules: the traffic a security group allows, each rule to
23555/// or from one peer. Rules only allow, so their order doesn't matter. A rule
23556/// is immutable: it is created and deleted, never changed, so to change one,
23557/// delete it and create its replacement. Creating the replacement first
23558/// leaves no window in which neither rule allows the traffic.
23559#[derive(Clone, Debug)]
23560pub struct SecurityGroupRuleClient {
23561    service: ::origincloud_core::Service,
23562}
23563impl SecurityGroupRuleClient {
23564    /// Returns a client of `SecurityGroupRuleService` that sends its calls through `client`.
23565    pub fn new(client: &::origincloud_core::Client) -> Self {
23566        Self {
23567            service: client.service("network", true),
23568        }
23569    }
23570    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23571    pub fn service(&self) -> &::origincloud_core::Service {
23572        &self.service
23573    }
23574    /// Returns a security group rule.
23575    pub async fn get_security_group_rule(
23576        &self,
23577        request: GetSecurityGroupRuleRequest,
23578    ) -> ::core::result::Result<SecurityGroupRule, ::origincloud_core::Error> {
23579        let p0 = ::origincloud_core::path_value(
23580            "name",
23581            &request.name,
23582            "projects/*/regions/*/securityGroups/*/rules/*",
23583        )?;
23584        let query = ::origincloud_core::query(&request, &["name"])?;
23585        let call = ::origincloud_core::Request::new(
23586                ::origincloud_core::Method::GET,
23587                format!("/v1beta1/{p0}"),
23588            )
23589            .with_query(query)
23590            .idempotent();
23591        self.service.call(call).await
23592    }
23593    /// Lists a security group's rules of both directions, oldest first.
23594    pub async fn list_security_group_rules(
23595        &self,
23596        request: ListSecurityGroupRulesRequest,
23597    ) -> ::core::result::Result<
23598        ListSecurityGroupRulesResponse,
23599        ::origincloud_core::Error,
23600    > {
23601        let p0 = ::origincloud_core::path_value(
23602            "parent",
23603            &request.parent,
23604            "projects/*/regions/*/securityGroups/*",
23605        )?;
23606        let query = ::origincloud_core::query(&request, &["parent"])?;
23607        let call = ::origincloud_core::Request::new(
23608                ::origincloud_core::Method::GET,
23609                format!("/v1beta1/{p0}/rules"),
23610            )
23611            .with_query(query)
23612            .idempotent();
23613        self.service.call(call).await
23614    }
23615    /// 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.
23616    pub fn all_security_group_rules(
23617        &self,
23618        request: ListSecurityGroupRulesRequest,
23619    ) -> ::origincloud_core::Pages<SecurityGroupRule> {
23620        let client = self.clone();
23621        ::origincloud_core::Pages::new(
23622            request,
23623            move |request: ListSecurityGroupRulesRequest| {
23624                let client = client.clone();
23625                async move {
23626                    let page = client.list_security_group_rules(request).await?;
23627                    Ok((page.security_group_rules, page.next_page_token))
23628                }
23629            },
23630            |request: &mut ListSecurityGroupRulesRequest, token: ::std::string::String| {
23631                request.page_token = token;
23632            },
23633        )
23634    }
23635    /// Adds a rule to a security group. A rule identical to one the group
23636    /// has in every field, `description` included, is refused with
23637    /// `FAILED_PRECONDITION`. A group holds at most 120 rules by default, both
23638    /// directions together, as the quota sets. The operation is done once the
23639    /// change is recorded; the network applies it within seconds.
23640    ///
23641    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroupRule`] once the change is done.
23642    pub async fn create_security_group_rule(
23643        &self,
23644        mut request: CreateSecurityGroupRuleRequest,
23645    ) -> ::core::result::Result<
23646        ::origincloud_core::Operation<SecurityGroupRule>,
23647        ::origincloud_core::Error,
23648    > {
23649        if request.request_id.is_empty() {
23650            request.request_id = ::origincloud_core::new_request_id();
23651        }
23652        let p0 = ::origincloud_core::path_value(
23653            "parent",
23654            &request.parent,
23655            "projects/*/regions/*/securityGroups/*",
23656        )?;
23657        let body = ::origincloud_core::json_body(
23658            request
23659                .security_group_rule
23660                .as_ref()
23661                .unwrap_or(&::core::default::Default::default()),
23662        )?;
23663        let query = ::origincloud_core::query(
23664            &request,
23665            &["parent", "securityGroupRule"],
23666        )?;
23667        let call = ::origincloud_core::Request::new(
23668                ::origincloud_core::Method::POST,
23669                format!("/v1beta1/{p0}/rules"),
23670            )
23671            .with_body(body)
23672            .with_query(query)
23673            .idempotent();
23674        let operation = self.service.call(call).await?;
23675        Ok(
23676            ::origincloud_core::Operation::new(
23677                self.service.clone(),
23678                operation,
23679                "origincloud.network.v1beta1.SecurityGroupRule",
23680            ),
23681        )
23682    }
23683    /// Removes a rule from its security group. The operation is done once the
23684    /// change is recorded; the network applies it within seconds.
23685    ///
23686    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23687    pub async fn delete_security_group_rule(
23688        &self,
23689        mut request: DeleteSecurityGroupRuleRequest,
23690    ) -> ::core::result::Result<
23691        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23692        ::origincloud_core::Error,
23693    > {
23694        if request.request_id.is_empty() {
23695            request.request_id = ::origincloud_core::new_request_id();
23696        }
23697        let p0 = ::origincloud_core::path_value(
23698            "name",
23699            &request.name,
23700            "projects/*/regions/*/securityGroups/*/rules/*",
23701        )?;
23702        let query = ::origincloud_core::query(&request, &["name"])?;
23703        let call = ::origincloud_core::Request::new(
23704                ::origincloud_core::Method::DELETE,
23705                format!("/v1beta1/{p0}"),
23706            )
23707            .with_query(query)
23708            .idempotent();
23709        let operation = self.service.call(call).await?;
23710        Ok(
23711            ::origincloud_core::Operation::new(
23712                self.service.clone(),
23713                operation,
23714                "google.protobuf.Empty",
23715            ),
23716        )
23717    }
23718}
23719/// Calls `SubnetService`.
23720///
23721/// Subnets: the part of a VPC in one zone. Network interfaces get their
23722/// private addresses from a subnet. Its route table association decides
23723/// where its traffic goes, and its ACL association what crosses its edge.
23724#[derive(Clone, Debug)]
23725pub struct SubnetClient {
23726    service: ::origincloud_core::Service,
23727}
23728impl SubnetClient {
23729    /// Returns a client of `SubnetService` that sends its calls through `client`.
23730    pub fn new(client: &::origincloud_core::Client) -> Self {
23731        Self {
23732            service: client.service("network", true),
23733        }
23734    }
23735    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23736    pub fn service(&self) -> &::origincloud_core::Service {
23737        &self.service
23738    }
23739    /// Returns a subnet.
23740    pub async fn get_subnet(
23741        &self,
23742        request: GetSubnetRequest,
23743    ) -> ::core::result::Result<Subnet, ::origincloud_core::Error> {
23744        let p0 = ::origincloud_core::path_value(
23745            "name",
23746            &request.name,
23747            "projects/*/zones/*/subnets/*",
23748        )?;
23749        let query = ::origincloud_core::query(&request, &["name"])?;
23750        let call = ::origincloud_core::Request::new(
23751                ::origincloud_core::Method::GET,
23752                format!("/v1beta1/{p0}"),
23753            )
23754            .with_query(query)
23755            .idempotent();
23756        self.service.call(call).await
23757    }
23758    /// Lists the subnets in a zone, oldest first. For every zone's subnets,
23759    /// list the zones whose `services` name `network` with the location
23760    /// service (`location.origincloudapis.eu`), then each zone's subnets.
23761    pub async fn list_subnets(
23762        &self,
23763        request: ListSubnetsRequest,
23764    ) -> ::core::result::Result<ListSubnetsResponse, ::origincloud_core::Error> {
23765        let p0 = ::origincloud_core::path_value(
23766            "parent",
23767            &request.parent,
23768            "projects/*/zones/*",
23769        )?;
23770        let query = ::origincloud_core::query(&request, &["parent"])?;
23771        let call = ::origincloud_core::Request::new(
23772                ::origincloud_core::Method::GET,
23773                format!("/v1beta1/{p0}/subnets"),
23774            )
23775            .with_query(query)
23776            .idempotent();
23777        self.service.call(call).await
23778    }
23779    /// 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.
23780    pub fn all_subnets(
23781        &self,
23782        request: ListSubnetsRequest,
23783    ) -> ::origincloud_core::Pages<Subnet> {
23784        let client = self.clone();
23785        ::origincloud_core::Pages::new(
23786            request,
23787            move |request: ListSubnetsRequest| {
23788                let client = client.clone();
23789                async move {
23790                    let page = client.list_subnets(request).await?;
23791                    Ok((page.subnets, page.next_page_token))
23792                }
23793            },
23794            |request: &mut ListSubnetsRequest, token: ::std::string::String| {
23795                request.page_token = token;
23796            },
23797        )
23798    }
23799    /// Creates a subnet in a VPC, with the next free IPv4 and IPv6 ranges of
23800    /// the VPC's address space, and no route table or ACL association. The
23801    /// operation is done once the change is recorded; the network applies it
23802    /// within seconds.
23803    ///
23804    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Subnet`] once the change is done.
23805    pub async fn create_subnet(
23806        &self,
23807        mut request: CreateSubnetRequest,
23808    ) -> ::core::result::Result<
23809        ::origincloud_core::Operation<Subnet>,
23810        ::origincloud_core::Error,
23811    > {
23812        if request.request_id.is_empty() {
23813            request.request_id = ::origincloud_core::new_request_id();
23814        }
23815        let p0 = ::origincloud_core::path_value(
23816            "parent",
23817            &request.parent,
23818            "projects/*/zones/*",
23819        )?;
23820        let body = ::origincloud_core::json_body(
23821            request.subnet.as_ref().unwrap_or(&::core::default::Default::default()),
23822        )?;
23823        let query = ::origincloud_core::query(&request, &["parent", "subnet"])?;
23824        let call = ::origincloud_core::Request::new(
23825                ::origincloud_core::Method::POST,
23826                format!("/v1beta1/{p0}/subnets"),
23827            )
23828            .with_body(body)
23829            .with_query(query)
23830            .idempotent();
23831        let operation = self.service.call(call).await?;
23832        Ok(
23833            ::origincloud_core::Operation::new(
23834                self.service.clone(),
23835                operation,
23836                "origincloud.network.v1beta1.Subnet",
23837            ),
23838        )
23839    }
23840    /// Changes a subnet's public address assignment or tags.
23841    /// `auto_assign_public_ip` applies to launches afterwards that create
23842    /// their interface. The operation is done once the change is recorded.
23843    ///
23844    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Subnet`] once the change is done.
23845    pub async fn update_subnet(
23846        &self,
23847        mut request: UpdateSubnetRequest,
23848    ) -> ::core::result::Result<
23849        ::origincloud_core::Operation<Subnet>,
23850        ::origincloud_core::Error,
23851    > {
23852        if request.request_id.is_empty() {
23853            request.request_id = ::origincloud_core::new_request_id();
23854        }
23855        let p0 = ::origincloud_core::path_value(
23856            "subnet.name",
23857            request.subnet.as_ref().map_or("", |m| m.name.as_str()),
23858            "projects/*/zones/*/subnets/*",
23859        )?;
23860        let body = ::origincloud_core::json_body(
23861            request.subnet.as_ref().unwrap_or(&::core::default::Default::default()),
23862        )?;
23863        let query = ::origincloud_core::query(&request, &["subnet.name", "subnet"])?;
23864        let call = ::origincloud_core::Request::new(
23865                ::origincloud_core::Method::PATCH,
23866                format!("/v1beta1/{p0}"),
23867            )
23868            .with_body(body)
23869            .with_query(query)
23870            .idempotent();
23871        let operation = self.service.call(call).await?;
23872        Ok(
23873            ::origincloud_core::Operation::new(
23874                self.service.clone(),
23875                operation,
23876                "origincloud.network.v1beta1.Subnet",
23877            ),
23878        )
23879    }
23880    /// Deletes a subnet with its route table and ACL associations and its
23881    /// unattached network interfaces. Refused while an interface in it is
23882    /// attached or a NAT gateway lives in it. The operation is done once the
23883    /// change is recorded; the network applies it within seconds.
23884    ///
23885    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23886    pub async fn delete_subnet(
23887        &self,
23888        mut request: DeleteSubnetRequest,
23889    ) -> ::core::result::Result<
23890        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23891        ::origincloud_core::Error,
23892    > {
23893        if request.request_id.is_empty() {
23894            request.request_id = ::origincloud_core::new_request_id();
23895        }
23896        let p0 = ::origincloud_core::path_value(
23897            "name",
23898            &request.name,
23899            "projects/*/zones/*/subnets/*",
23900        )?;
23901        let query = ::origincloud_core::query(&request, &["name"])?;
23902        let call = ::origincloud_core::Request::new(
23903                ::origincloud_core::Method::DELETE,
23904                format!("/v1beta1/{p0}"),
23905            )
23906            .with_query(query)
23907            .idempotent();
23908        let operation = self.service.call(call).await?;
23909        Ok(
23910            ::origincloud_core::Operation::new(
23911                self.service.clone(),
23912                operation,
23913                "google.protobuf.Empty",
23914            ),
23915        )
23916    }
23917}
23918/// Calls `VpcService`.
23919///
23920/// VPCs: private networks in a region, each with its own IPv4 and IPv6
23921/// address space, isolated from every other VPC. A VPC is created empty: its
23922/// subnets, security groups, ACLs, route tables and internet gateway are
23923/// created on their own.
23924#[derive(Clone, Debug)]
23925pub struct VpcClient {
23926    service: ::origincloud_core::Service,
23927}
23928impl VpcClient {
23929    /// Returns a client of `VpcService` that sends its calls through `client`.
23930    pub fn new(client: &::origincloud_core::Client) -> Self {
23931        Self {
23932            service: client.service("network", true),
23933        }
23934    }
23935    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23936    pub fn service(&self) -> &::origincloud_core::Service {
23937        &self.service
23938    }
23939    /// Returns a VPC.
23940    pub async fn get_vpc(
23941        &self,
23942        request: GetVpcRequest,
23943    ) -> ::core::result::Result<Vpc, ::origincloud_core::Error> {
23944        let p0 = ::origincloud_core::path_value(
23945            "name",
23946            &request.name,
23947            "projects/*/regions/*/vpcs/*",
23948        )?;
23949        let query = ::origincloud_core::query(&request, &["name"])?;
23950        let call = ::origincloud_core::Request::new(
23951                ::origincloud_core::Method::GET,
23952                format!("/v1beta1/{p0}"),
23953            )
23954            .with_query(query)
23955            .idempotent();
23956        self.service.call(call).await
23957    }
23958    /// Lists the VPCs in a region, oldest first.
23959    pub async fn list_vpcs(
23960        &self,
23961        request: ListVpcsRequest,
23962    ) -> ::core::result::Result<ListVpcsResponse, ::origincloud_core::Error> {
23963        let p0 = ::origincloud_core::path_value(
23964            "parent",
23965            &request.parent,
23966            "projects/*/regions/*",
23967        )?;
23968        let query = ::origincloud_core::query(&request, &["parent"])?;
23969        let call = ::origincloud_core::Request::new(
23970                ::origincloud_core::Method::GET,
23971                format!("/v1beta1/{p0}/vpcs"),
23972            )
23973            .with_query(query)
23974            .idempotent();
23975        self.service.call(call).await
23976    }
23977    /// 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.
23978    pub fn all_vpcs(&self, request: ListVpcsRequest) -> ::origincloud_core::Pages<Vpc> {
23979        let client = self.clone();
23980        ::origincloud_core::Pages::new(
23981            request,
23982            move |request: ListVpcsRequest| {
23983                let client = client.clone();
23984                async move {
23985                    let page = client.list_vpcs(request).await?;
23986                    Ok((page.vpcs, page.next_page_token))
23987                }
23988            },
23989            |request: &mut ListVpcsRequest, token: ::std::string::String| {
23990                request.page_token = token;
23991            },
23992        )
23993    }
23994    /// Creates an empty VPC: no subnets, security groups, ACLs, route tables
23995    /// or internet gateway. It relays DNS through the project's default DNS
23996    /// policy in its region until a DNS policy association names another. The
23997    /// operation is done once the VPC is recorded.
23998    ///
23999    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Vpc`] once the change is done.
24000    pub async fn create_vpc(
24001        &self,
24002        mut request: CreateVpcRequest,
24003    ) -> ::core::result::Result<
24004        ::origincloud_core::Operation<Vpc>,
24005        ::origincloud_core::Error,
24006    > {
24007        if request.request_id.is_empty() {
24008            request.request_id = ::origincloud_core::new_request_id();
24009        }
24010        let p0 = ::origincloud_core::path_value(
24011            "parent",
24012            &request.parent,
24013            "projects/*/regions/*",
24014        )?;
24015        let body = ::origincloud_core::json_body(
24016            request.vpc.as_ref().unwrap_or(&::core::default::Default::default()),
24017        )?;
24018        let query = ::origincloud_core::query(&request, &["parent", "vpc"])?;
24019        let call = ::origincloud_core::Request::new(
24020                ::origincloud_core::Method::POST,
24021                format!("/v1beta1/{p0}/vpcs"),
24022            )
24023            .with_body(body)
24024            .with_query(query)
24025            .idempotent();
24026        let operation = self.service.call(call).await?;
24027        Ok(
24028            ::origincloud_core::Operation::new(
24029                self.service.clone(),
24030                operation,
24031                "origincloud.network.v1beta1.Vpc",
24032            ),
24033        )
24034    }
24035    /// Changes a VPC's tags. The operation is done once the change is
24036    /// recorded.
24037    ///
24038    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Vpc`] once the change is done.
24039    pub async fn update_vpc(
24040        &self,
24041        mut request: UpdateVpcRequest,
24042    ) -> ::core::result::Result<
24043        ::origincloud_core::Operation<Vpc>,
24044        ::origincloud_core::Error,
24045    > {
24046        if request.request_id.is_empty() {
24047            request.request_id = ::origincloud_core::new_request_id();
24048        }
24049        let p0 = ::origincloud_core::path_value(
24050            "vpc.name",
24051            request.vpc.as_ref().map_or("", |m| m.name.as_str()),
24052            "projects/*/regions/*/vpcs/*",
24053        )?;
24054        let body = ::origincloud_core::json_body(
24055            request.vpc.as_ref().unwrap_or(&::core::default::Default::default()),
24056        )?;
24057        let query = ::origincloud_core::query(&request, &["vpc.name", "vpc"])?;
24058        let call = ::origincloud_core::Request::new(
24059                ::origincloud_core::Method::PATCH,
24060                format!("/v1beta1/{p0}"),
24061            )
24062            .with_body(body)
24063            .with_query(query)
24064            .idempotent();
24065        let operation = self.service.call(call).await?;
24066        Ok(
24067            ::origincloud_core::Operation::new(
24068                self.service.clone(),
24069                operation,
24070                "origincloud.network.v1beta1.Vpc",
24071            ),
24072        )
24073    }
24074    /// Deletes a VPC with its DNS policy association. Refused with
24075    /// `FAILED_PRECONDITION` while the VPC has subnets, security groups,
24076    /// ACLs, route tables or an internet gateway, except those the platform
24077    /// created with it, which are deleted with it. The operation is done once
24078    /// the change is recorded; the network applies it within seconds.
24079    ///
24080    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
24081    pub async fn delete_vpc(
24082        &self,
24083        mut request: DeleteVpcRequest,
24084    ) -> ::core::result::Result<
24085        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
24086        ::origincloud_core::Error,
24087    > {
24088        if request.request_id.is_empty() {
24089            request.request_id = ::origincloud_core::new_request_id();
24090        }
24091        let p0 = ::origincloud_core::path_value(
24092            "name",
24093            &request.name,
24094            "projects/*/regions/*/vpcs/*",
24095        )?;
24096        let query = ::origincloud_core::query(&request, &["name"])?;
24097        let call = ::origincloud_core::Request::new(
24098                ::origincloud_core::Method::DELETE,
24099                format!("/v1beta1/{p0}"),
24100            )
24101            .with_query(query)
24102            .idempotent();
24103        let operation = self.service.call(call).await?;
24104        Ok(
24105            ::origincloud_core::Operation::new(
24106                self.service.clone(),
24107                operation,
24108                "google.protobuf.Empty",
24109            ),
24110        )
24111    }
24112}