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    /// A subnet reaches, and is reached from, the internet for an address
1852    /// family only if its own route table has that family's default route (a
1853    /// `Route` with that family's default destination). Empty while it has
1854    /// none: a subnet with no route table has no route out of its VPC and isn't
1855    /// reachable from the internet, even when the VPC has an internet gateway.
1856    #[prost(string, tag = "4")]
1857    pub route_table: ::prost::alloc::string::String,
1858    /// The ACL that filters traffic in and out of the subnet, as the subnet's
1859    /// ACL association (an `AclAssociation`) sets it. Empty while it has
1860    /// none: nothing is filtered at the subnet's edge, and its interfaces'
1861    /// security groups still apply.
1862    #[prost(string, tag = "5")]
1863    pub acl: ::prost::alloc::string::String,
1864    /// Whether a launch that creates its network interface in the subnet,
1865    /// as the GraphQL API's `launchInstance` does, gives that interface a
1866    /// floating IP of its own, released when the instance is terminated.
1867    /// `CreateInstance` takes existing interfaces, so an instance it launches
1868    /// gets none: create a floating IP and a floating IP association for its
1869    /// interface instead.
1870    #[prost(bool, tag = "6")]
1871    pub auto_assign_public_ip: bool,
1872    /// The subnet's IPv4 range.
1873    #[prost(string, tag = "7")]
1874    pub ipv4_cidr_block: ::prost::alloc::string::String,
1875    /// The subnet's IPv6 range, a `/72`.
1876    #[prost(string, tag = "8")]
1877    pub ipv6_cidr_block: ::prost::alloc::string::String,
1878    /// The IPv4 address of the subnet's router.
1879    #[prost(string, tag = "9")]
1880    pub ipv4_gateway: ::prost::alloc::string::String,
1881    /// The IPv6 address of the subnet's router.
1882    #[prost(string, tag = "10")]
1883    pub ipv6_gateway: ::prost::alloc::string::String,
1884    /// The DNS servers instances in the subnet use over IPv4.
1885    #[prost(string, repeated, tag = "11")]
1886    pub ipv4_dns_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1887    /// The DNS servers instances in the subnet use over IPv6.
1888    #[prost(string, repeated, tag = "12")]
1889    pub ipv6_dns_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1890    /// How many IPv4 addresses in the subnet are free for interfaces.
1891    #[prost(int64, tag = "13")]
1892    pub available_ipv4_address_count: i64,
1893    /// When the subnet was created.
1894    #[prost(message, optional, tag = "14")]
1895    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1896    /// The principal that created the subnet, such as `user:<id>` or
1897    /// `service_account:<id>`; empty for one the platform created.
1898    #[prost(string, tag = "15")]
1899    pub creator: ::prost::alloc::string::String,
1900    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1901    /// console shows.
1902    #[prost(btree_map = "string, string", tag = "16")]
1903    pub tags: ::prost::alloc::collections::BTreeMap<
1904        ::prost::alloc::string::String,
1905        ::prost::alloc::string::String,
1906    >,
1907}
1908/// The request for GetSubnet.
1909#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1910pub struct GetSubnetRequest {
1911    /// The subnet to return.
1912    #[prost(string, tag = "1")]
1913    pub name: ::prost::alloc::string::String,
1914}
1915/// The request for ListSubnets.
1916#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1917pub struct ListSubnetsRequest {
1918    /// The zone whose subnets to list, `projects/{project}/zones/{zone}`.
1919    #[prost(string, tag = "1")]
1920    pub parent: ::prost::alloc::string::String,
1921    /// The most subnets to return; the server clamps it, and 0 means its
1922    /// default.
1923    #[prost(int32, tag = "2")]
1924    pub page_size: i32,
1925    /// A previous response's `next_page_token`, for the page after it.
1926    #[prost(string, tag = "3")]
1927    pub page_token: ::prost::alloc::string::String,
1928    /// Only the subnets of this VPC, when set.
1929    #[prost(string, tag = "4")]
1930    pub vpc: ::prost::alloc::string::String,
1931}
1932/// The response for ListSubnets.
1933#[derive(Clone, PartialEq, ::prost::Message)]
1934pub struct ListSubnetsResponse {
1935    /// The subnets on this page.
1936    #[prost(message, repeated, tag = "1")]
1937    pub subnets: ::prost::alloc::vec::Vec<Subnet>,
1938    /// The token for the next page; empty on the last one.
1939    #[prost(string, tag = "2")]
1940    pub next_page_token: ::prost::alloc::string::String,
1941}
1942/// The request for CreateSubnet.
1943#[derive(Clone, PartialEq, ::prost::Message)]
1944pub struct CreateSubnetRequest {
1945    /// The zone to create the subnet in, `projects/{project}/zones/{zone}`.
1946    #[prost(string, tag = "1")]
1947    pub parent: ::prost::alloc::string::String,
1948    /// The subnet to create: its VPC, and optionally its public address
1949    /// assignment and tags.
1950    #[prost(message, optional, tag = "2")]
1951    pub subnet: ::core::option::Option<Subnet>,
1952    /// A UUID; a repeat with the same id returns the first request's
1953    /// operation instead of creating a second subnet.
1954    #[prost(string, tag = "3")]
1955    pub request_id: ::prost::alloc::string::String,
1956}
1957/// The request for UpdateSubnet.
1958#[derive(Clone, PartialEq, ::prost::Message)]
1959pub struct UpdateSubnetRequest {
1960    /// The subnet, by its name, with the fields to change.
1961    #[prost(message, optional, tag = "1")]
1962    pub subnet: ::core::option::Option<Subnet>,
1963    /// The fields to change: `auto_assign_public_ip`, `tags`, or both. `*`
1964    /// is both.
1965    #[prost(message, optional, tag = "2")]
1966    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1967    /// A UUID; a repeat with the same id returns the first request's
1968    /// operation instead of changing the subnet again.
1969    #[prost(string, tag = "3")]
1970    pub request_id: ::prost::alloc::string::String,
1971}
1972/// The request for DeleteSubnet.
1973#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1974pub struct DeleteSubnetRequest {
1975    /// The subnet to delete.
1976    #[prost(string, tag = "1")]
1977    pub name: ::prost::alloc::string::String,
1978    /// A UUID; a repeat with the same id returns the first request's
1979    /// operation.
1980    #[prost(string, tag = "2")]
1981    pub request_id: ::prost::alloc::string::String,
1982}
1983/// A private network in one region.
1984#[derive(Clone, PartialEq, ::prost::Message)]
1985pub struct Vpc {
1986    /// The VPC's resource name.
1987    #[prost(string, tag = "1")]
1988    pub name: ::prost::alloc::string::String,
1989    /// The VPC's URN, the identifier access policies and the audit log use.
1990    #[prost(string, tag = "2")]
1991    pub urn: ::prost::alloc::string::String,
1992    /// The private IPv4 range (RFC 1918), from `/16` to `/28`. A free `/16`
1993    /// of the `172.16` private block when left empty. Subnets are carved from
1994    /// it in equal sizes.
1995    #[prost(string, tag = "3")]
1996    pub ipv4_cidr_block: ::prost::alloc::string::String,
1997    /// The IPv6 range the platform assigned, a `/56`. Each subnet gets a
1998    /// `/72` of it.
1999    #[prost(string, tag = "4")]
2000    pub ipv6_cidr_block: ::prost::alloc::string::String,
2001    /// The prefix length of every subnet's IPv4 range.
2002    #[prost(int32, tag = "5")]
2003    pub subnet_ipv4_prefix_length: i32,
2004    /// How many more subnets the VPC's address space holds.
2005    #[prost(int32, tag = "6")]
2006    pub available_subnet_count: i32,
2007    /// The DNS policy the VPC's resolver relays through, as the VPC's DNS
2008    /// policy association (a `DnsPolicyAssociation`) sets it. Empty while it
2009    /// has none: the VPC then relays through the project's default DNS policy
2010    /// in its region.
2011    #[prost(string, tag = "7")]
2012    pub dns_policy: ::prost::alloc::string::String,
2013    /// The VPC's internet gateway; empty while it has none.
2014    #[prost(string, tag = "8")]
2015    pub internet_gateway: ::prost::alloc::string::String,
2016    /// Whether this is the project's default VPC. Unlike a VPC you create, the
2017    /// platform creates it with defaults: an internet gateway, and a security
2018    /// group, an ACL and a main route table marked as created with the VPC
2019    /// (`vpc_default` on the group and the ACL, `main` on the route table).
2020    #[prost(bool, tag = "9")]
2021    pub project_default: bool,
2022    /// When the VPC was created.
2023    #[prost(message, optional, tag = "10")]
2024    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
2025    /// The principal that created the VPC, such as `user:<id>` or
2026    /// `service_account:<id>`; empty for one the platform created.
2027    #[prost(string, tag = "11")]
2028    pub creator: ::prost::alloc::string::String,
2029    /// Labels of your own, at most 50. The `origin:name` tag is the name the
2030    /// console shows.
2031    #[prost(btree_map = "string, string", tag = "12")]
2032    pub tags: ::prost::alloc::collections::BTreeMap<
2033        ::prost::alloc::string::String,
2034        ::prost::alloc::string::String,
2035    >,
2036}
2037/// The request for GetVpc.
2038#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2039pub struct GetVpcRequest {
2040    /// The VPC to return.
2041    #[prost(string, tag = "1")]
2042    pub name: ::prost::alloc::string::String,
2043}
2044/// The request for ListVpcs.
2045#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2046pub struct ListVpcsRequest {
2047    /// The region whose VPCs to list, `projects/{project}/regions/{region}`.
2048    #[prost(string, tag = "1")]
2049    pub parent: ::prost::alloc::string::String,
2050    /// The most VPCs to return; the server clamps it, and 0 means its
2051    /// default.
2052    #[prost(int32, tag = "2")]
2053    pub page_size: i32,
2054    /// A previous response's `next_page_token`, for the page after it.
2055    #[prost(string, tag = "3")]
2056    pub page_token: ::prost::alloc::string::String,
2057}
2058/// The response for ListVpcs.
2059#[derive(Clone, PartialEq, ::prost::Message)]
2060pub struct ListVpcsResponse {
2061    /// The VPCs on this page.
2062    #[prost(message, repeated, tag = "1")]
2063    pub vpcs: ::prost::alloc::vec::Vec<Vpc>,
2064    /// The token for the next page; empty on the last one.
2065    #[prost(string, tag = "2")]
2066    pub next_page_token: ::prost::alloc::string::String,
2067}
2068/// The request for CreateVpc.
2069#[derive(Clone, PartialEq, ::prost::Message)]
2070pub struct CreateVpcRequest {
2071    /// The region to create the VPC in, `projects/{project}/regions/{region}`.
2072    #[prost(string, tag = "1")]
2073    pub parent: ::prost::alloc::string::String,
2074    /// The VPC to create: optionally its IPv4 range and tags.
2075    #[prost(message, optional, tag = "2")]
2076    pub vpc: ::core::option::Option<Vpc>,
2077    /// A UUID; a repeat with the same id returns the first request's
2078    /// operation instead of creating a second VPC.
2079    #[prost(string, tag = "3")]
2080    pub request_id: ::prost::alloc::string::String,
2081}
2082/// The request for UpdateVpc.
2083#[derive(Clone, PartialEq, ::prost::Message)]
2084pub struct UpdateVpcRequest {
2085    /// The VPC, by its name, with the fields to change.
2086    #[prost(message, optional, tag = "1")]
2087    pub vpc: ::core::option::Option<Vpc>,
2088    /// The fields to change: `tags`, or `*`.
2089    #[prost(message, optional, tag = "2")]
2090    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
2091    /// A UUID; a repeat with the same id returns the first request's
2092    /// operation instead of changing the VPC again.
2093    #[prost(string, tag = "3")]
2094    pub request_id: ::prost::alloc::string::String,
2095}
2096/// The request for DeleteVpc.
2097#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2098pub struct DeleteVpcRequest {
2099    /// The VPC to delete.
2100    #[prost(string, tag = "1")]
2101    pub name: ::prost::alloc::string::String,
2102    /// A UUID; a repeat with the same id returns the first request's
2103    /// operation.
2104    #[prost(string, tag = "2")]
2105    pub request_id: ::prost::alloc::string::String,
2106}
2107impl serde::Serialize for Acl {
2108    #[allow(deprecated)]
2109    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2110    where
2111        S: serde::Serializer,
2112    {
2113        use serde::ser::SerializeStruct;
2114        let mut len = 0;
2115        if !self.name.is_empty() {
2116            len += 1;
2117        }
2118        if !self.urn.is_empty() {
2119            len += 1;
2120        }
2121        if !self.vpc.is_empty() {
2122            len += 1;
2123        }
2124        if self.vpc_default {
2125            len += 1;
2126        }
2127        if self.create_time.is_some() {
2128            len += 1;
2129        }
2130        if !self.creator.is_empty() {
2131            len += 1;
2132        }
2133        if !self.tags.is_empty() {
2134            len += 1;
2135        }
2136        let mut struct_ser = serializer
2137            .serialize_struct("origincloud.network.v1beta1.Acl", len)?;
2138        if !self.name.is_empty() {
2139            struct_ser.serialize_field("name", &self.name)?;
2140        }
2141        if !self.urn.is_empty() {
2142            struct_ser.serialize_field("urn", &self.urn)?;
2143        }
2144        if !self.vpc.is_empty() {
2145            struct_ser.serialize_field("vpc", &self.vpc)?;
2146        }
2147        if self.vpc_default {
2148            struct_ser.serialize_field("vpcDefault", &self.vpc_default)?;
2149        }
2150        if let Some(v) = self.create_time.as_ref() {
2151            struct_ser.serialize_field("createTime", v)?;
2152        }
2153        if !self.creator.is_empty() {
2154            struct_ser.serialize_field("creator", &self.creator)?;
2155        }
2156        if !self.tags.is_empty() {
2157            struct_ser.serialize_field("tags", &self.tags)?;
2158        }
2159        struct_ser.end()
2160    }
2161}
2162impl<'de> serde::Deserialize<'de> for Acl {
2163    #[allow(deprecated)]
2164    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2165    where
2166        D: serde::Deserializer<'de>,
2167    {
2168        const FIELDS: &[&str] = &[
2169            "name",
2170            "urn",
2171            "vpc",
2172            "vpc_default",
2173            "vpcDefault",
2174            "create_time",
2175            "createTime",
2176            "creator",
2177            "tags",
2178        ];
2179        #[allow(clippy::enum_variant_names)]
2180        enum GeneratedField {
2181            Name,
2182            Urn,
2183            Vpc,
2184            VpcDefault,
2185            CreateTime,
2186            Creator,
2187            Tags,
2188            __SkipField__,
2189        }
2190        impl<'de> serde::Deserialize<'de> for GeneratedField {
2191            fn deserialize<D>(
2192                deserializer: D,
2193            ) -> std::result::Result<GeneratedField, D::Error>
2194            where
2195                D: serde::Deserializer<'de>,
2196            {
2197                struct GeneratedVisitor;
2198                impl serde::de::Visitor<'_> for GeneratedVisitor {
2199                    type Value = GeneratedField;
2200                    fn expecting(
2201                        &self,
2202                        formatter: &mut std::fmt::Formatter<'_>,
2203                    ) -> std::fmt::Result {
2204                        write!(formatter, "expected one of: {:?}", & FIELDS)
2205                    }
2206                    #[allow(unused_variables)]
2207                    fn visit_str<E>(
2208                        self,
2209                        value: &str,
2210                    ) -> std::result::Result<GeneratedField, E>
2211                    where
2212                        E: serde::de::Error,
2213                    {
2214                        match value {
2215                            "name" => Ok(GeneratedField::Name),
2216                            "urn" => Ok(GeneratedField::Urn),
2217                            "vpc" => Ok(GeneratedField::Vpc),
2218                            "vpcDefault" | "vpc_default" => {
2219                                Ok(GeneratedField::VpcDefault)
2220                            }
2221                            "createTime" | "create_time" => {
2222                                Ok(GeneratedField::CreateTime)
2223                            }
2224                            "creator" => Ok(GeneratedField::Creator),
2225                            "tags" => Ok(GeneratedField::Tags),
2226                            _ => Ok(GeneratedField::__SkipField__),
2227                        }
2228                    }
2229                }
2230                deserializer.deserialize_identifier(GeneratedVisitor)
2231            }
2232        }
2233        struct GeneratedVisitor;
2234        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2235            type Value = Acl;
2236            fn expecting(
2237                &self,
2238                formatter: &mut std::fmt::Formatter<'_>,
2239            ) -> std::fmt::Result {
2240                formatter.write_str("struct origincloud.network.v1beta1.Acl")
2241            }
2242            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Acl, V::Error>
2243            where
2244                V: serde::de::MapAccess<'de>,
2245            {
2246                let mut name__ = None;
2247                let mut urn__ = None;
2248                let mut vpc__ = None;
2249                let mut vpc_default__ = None;
2250                let mut create_time__ = None;
2251                let mut creator__ = None;
2252                let mut tags__ = None;
2253                while let Some(k) = map_.next_key()? {
2254                    match k {
2255                        GeneratedField::Name => {
2256                            if name__.is_some() {
2257                                return Err(serde::de::Error::duplicate_field("name"));
2258                            }
2259                            name__ = Some(map_.next_value()?);
2260                        }
2261                        GeneratedField::Urn => {
2262                            if urn__.is_some() {
2263                                return Err(serde::de::Error::duplicate_field("urn"));
2264                            }
2265                            urn__ = Some(map_.next_value()?);
2266                        }
2267                        GeneratedField::Vpc => {
2268                            if vpc__.is_some() {
2269                                return Err(serde::de::Error::duplicate_field("vpc"));
2270                            }
2271                            vpc__ = Some(map_.next_value()?);
2272                        }
2273                        GeneratedField::VpcDefault => {
2274                            if vpc_default__.is_some() {
2275                                return Err(serde::de::Error::duplicate_field("vpcDefault"));
2276                            }
2277                            vpc_default__ = Some(map_.next_value()?);
2278                        }
2279                        GeneratedField::CreateTime => {
2280                            if create_time__.is_some() {
2281                                return Err(serde::de::Error::duplicate_field("createTime"));
2282                            }
2283                            create_time__ = map_.next_value()?;
2284                        }
2285                        GeneratedField::Creator => {
2286                            if creator__.is_some() {
2287                                return Err(serde::de::Error::duplicate_field("creator"));
2288                            }
2289                            creator__ = Some(map_.next_value()?);
2290                        }
2291                        GeneratedField::Tags => {
2292                            if tags__.is_some() {
2293                                return Err(serde::de::Error::duplicate_field("tags"));
2294                            }
2295                            tags__ = Some(
2296                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
2297                            );
2298                        }
2299                        GeneratedField::__SkipField__ => {
2300                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2301                        }
2302                    }
2303                }
2304                Ok(Acl {
2305                    name: name__.unwrap_or_default(),
2306                    urn: urn__.unwrap_or_default(),
2307                    vpc: vpc__.unwrap_or_default(),
2308                    vpc_default: vpc_default__.unwrap_or_default(),
2309                    create_time: create_time__,
2310                    creator: creator__.unwrap_or_default(),
2311                    tags: tags__.unwrap_or_default(),
2312                })
2313            }
2314        }
2315        deserializer
2316            .deserialize_struct(
2317                "origincloud.network.v1beta1.Acl",
2318                FIELDS,
2319                GeneratedVisitor,
2320            )
2321    }
2322}
2323impl serde::Serialize for AclAssociation {
2324    #[allow(deprecated)]
2325    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2326    where
2327        S: serde::Serializer,
2328    {
2329        use serde::ser::SerializeStruct;
2330        let mut len = 0;
2331        if !self.name.is_empty() {
2332            len += 1;
2333        }
2334        if !self.acl.is_empty() {
2335            len += 1;
2336        }
2337        let mut struct_ser = serializer
2338            .serialize_struct("origincloud.network.v1beta1.AclAssociation", len)?;
2339        if !self.name.is_empty() {
2340            struct_ser.serialize_field("name", &self.name)?;
2341        }
2342        if !self.acl.is_empty() {
2343            struct_ser.serialize_field("acl", &self.acl)?;
2344        }
2345        struct_ser.end()
2346    }
2347}
2348impl<'de> serde::Deserialize<'de> for AclAssociation {
2349    #[allow(deprecated)]
2350    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2351    where
2352        D: serde::Deserializer<'de>,
2353    {
2354        const FIELDS: &[&str] = &["name", "acl"];
2355        #[allow(clippy::enum_variant_names)]
2356        enum GeneratedField {
2357            Name,
2358            Acl,
2359            __SkipField__,
2360        }
2361        impl<'de> serde::Deserialize<'de> for GeneratedField {
2362            fn deserialize<D>(
2363                deserializer: D,
2364            ) -> std::result::Result<GeneratedField, D::Error>
2365            where
2366                D: serde::Deserializer<'de>,
2367            {
2368                struct GeneratedVisitor;
2369                impl serde::de::Visitor<'_> for GeneratedVisitor {
2370                    type Value = GeneratedField;
2371                    fn expecting(
2372                        &self,
2373                        formatter: &mut std::fmt::Formatter<'_>,
2374                    ) -> std::fmt::Result {
2375                        write!(formatter, "expected one of: {:?}", & FIELDS)
2376                    }
2377                    #[allow(unused_variables)]
2378                    fn visit_str<E>(
2379                        self,
2380                        value: &str,
2381                    ) -> std::result::Result<GeneratedField, E>
2382                    where
2383                        E: serde::de::Error,
2384                    {
2385                        match value {
2386                            "name" => Ok(GeneratedField::Name),
2387                            "acl" => Ok(GeneratedField::Acl),
2388                            _ => Ok(GeneratedField::__SkipField__),
2389                        }
2390                    }
2391                }
2392                deserializer.deserialize_identifier(GeneratedVisitor)
2393            }
2394        }
2395        struct GeneratedVisitor;
2396        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2397            type Value = AclAssociation;
2398            fn expecting(
2399                &self,
2400                formatter: &mut std::fmt::Formatter<'_>,
2401            ) -> std::fmt::Result {
2402                formatter.write_str("struct origincloud.network.v1beta1.AclAssociation")
2403            }
2404            fn visit_map<V>(
2405                self,
2406                mut map_: V,
2407            ) -> std::result::Result<AclAssociation, V::Error>
2408            where
2409                V: serde::de::MapAccess<'de>,
2410            {
2411                let mut name__ = None;
2412                let mut acl__ = None;
2413                while let Some(k) = map_.next_key()? {
2414                    match k {
2415                        GeneratedField::Name => {
2416                            if name__.is_some() {
2417                                return Err(serde::de::Error::duplicate_field("name"));
2418                            }
2419                            name__ = Some(map_.next_value()?);
2420                        }
2421                        GeneratedField::Acl => {
2422                            if acl__.is_some() {
2423                                return Err(serde::de::Error::duplicate_field("acl"));
2424                            }
2425                            acl__ = Some(map_.next_value()?);
2426                        }
2427                        GeneratedField::__SkipField__ => {
2428                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2429                        }
2430                    }
2431                }
2432                Ok(AclAssociation {
2433                    name: name__.unwrap_or_default(),
2434                    acl: acl__.unwrap_or_default(),
2435                })
2436            }
2437        }
2438        deserializer
2439            .deserialize_struct(
2440                "origincloud.network.v1beta1.AclAssociation",
2441                FIELDS,
2442                GeneratedVisitor,
2443            )
2444    }
2445}
2446impl serde::Serialize for AclRule {
2447    #[allow(deprecated)]
2448    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2449    where
2450        S: serde::Serializer,
2451    {
2452        use serde::ser::SerializeStruct;
2453        let mut len = 0;
2454        if !self.name.is_empty() {
2455            len += 1;
2456        }
2457        if self.direction != 0 {
2458            len += 1;
2459        }
2460        if self.priority != 0 {
2461            len += 1;
2462        }
2463        if self.protocol != 0 {
2464            len += 1;
2465        }
2466        if self.first_port != 0 {
2467            len += 1;
2468        }
2469        if self.last_port != 0 {
2470            len += 1;
2471        }
2472        if !self.cidr_block.is_empty() {
2473            len += 1;
2474        }
2475        if self.action != 0 {
2476            len += 1;
2477        }
2478        let mut struct_ser = serializer
2479            .serialize_struct("origincloud.network.v1beta1.AclRule", len)?;
2480        if !self.name.is_empty() {
2481            struct_ser.serialize_field("name", &self.name)?;
2482        }
2483        if self.direction != 0 {
2484            let v = acl_rule::Direction::try_from(self.direction)
2485                .map_err(|_| serde::ser::Error::custom(
2486                    format!("Invalid variant {}", self.direction),
2487                ))?;
2488            struct_ser.serialize_field("direction", &v)?;
2489        }
2490        if self.priority != 0 {
2491            struct_ser.serialize_field("priority", &self.priority)?;
2492        }
2493        if self.protocol != 0 {
2494            let v = acl_rule::Protocol::try_from(self.protocol)
2495                .map_err(|_| serde::ser::Error::custom(
2496                    format!("Invalid variant {}", self.protocol),
2497                ))?;
2498            struct_ser.serialize_field("protocol", &v)?;
2499        }
2500        if self.first_port != 0 {
2501            struct_ser.serialize_field("firstPort", &self.first_port)?;
2502        }
2503        if self.last_port != 0 {
2504            struct_ser.serialize_field("lastPort", &self.last_port)?;
2505        }
2506        if !self.cidr_block.is_empty() {
2507            struct_ser.serialize_field("cidrBlock", &self.cidr_block)?;
2508        }
2509        if self.action != 0 {
2510            let v = acl_rule::Action::try_from(self.action)
2511                .map_err(|_| serde::ser::Error::custom(
2512                    format!("Invalid variant {}", self.action),
2513                ))?;
2514            struct_ser.serialize_field("action", &v)?;
2515        }
2516        struct_ser.end()
2517    }
2518}
2519impl<'de> serde::Deserialize<'de> for AclRule {
2520    #[allow(deprecated)]
2521    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2522    where
2523        D: serde::Deserializer<'de>,
2524    {
2525        const FIELDS: &[&str] = &[
2526            "name",
2527            "direction",
2528            "priority",
2529            "protocol",
2530            "first_port",
2531            "firstPort",
2532            "last_port",
2533            "lastPort",
2534            "cidr_block",
2535            "cidrBlock",
2536            "action",
2537        ];
2538        #[allow(clippy::enum_variant_names)]
2539        enum GeneratedField {
2540            Name,
2541            Direction,
2542            Priority,
2543            Protocol,
2544            FirstPort,
2545            LastPort,
2546            CidrBlock,
2547            Action,
2548            __SkipField__,
2549        }
2550        impl<'de> serde::Deserialize<'de> for GeneratedField {
2551            fn deserialize<D>(
2552                deserializer: D,
2553            ) -> std::result::Result<GeneratedField, D::Error>
2554            where
2555                D: serde::Deserializer<'de>,
2556            {
2557                struct GeneratedVisitor;
2558                impl serde::de::Visitor<'_> for GeneratedVisitor {
2559                    type Value = GeneratedField;
2560                    fn expecting(
2561                        &self,
2562                        formatter: &mut std::fmt::Formatter<'_>,
2563                    ) -> std::fmt::Result {
2564                        write!(formatter, "expected one of: {:?}", & FIELDS)
2565                    }
2566                    #[allow(unused_variables)]
2567                    fn visit_str<E>(
2568                        self,
2569                        value: &str,
2570                    ) -> std::result::Result<GeneratedField, E>
2571                    where
2572                        E: serde::de::Error,
2573                    {
2574                        match value {
2575                            "name" => Ok(GeneratedField::Name),
2576                            "direction" => Ok(GeneratedField::Direction),
2577                            "priority" => Ok(GeneratedField::Priority),
2578                            "protocol" => Ok(GeneratedField::Protocol),
2579                            "firstPort" | "first_port" => Ok(GeneratedField::FirstPort),
2580                            "lastPort" | "last_port" => Ok(GeneratedField::LastPort),
2581                            "cidrBlock" | "cidr_block" => Ok(GeneratedField::CidrBlock),
2582                            "action" => Ok(GeneratedField::Action),
2583                            _ => Ok(GeneratedField::__SkipField__),
2584                        }
2585                    }
2586                }
2587                deserializer.deserialize_identifier(GeneratedVisitor)
2588            }
2589        }
2590        struct GeneratedVisitor;
2591        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2592            type Value = AclRule;
2593            fn expecting(
2594                &self,
2595                formatter: &mut std::fmt::Formatter<'_>,
2596            ) -> std::fmt::Result {
2597                formatter.write_str("struct origincloud.network.v1beta1.AclRule")
2598            }
2599            fn visit_map<V>(self, mut map_: V) -> std::result::Result<AclRule, V::Error>
2600            where
2601                V: serde::de::MapAccess<'de>,
2602            {
2603                let mut name__ = None;
2604                let mut direction__ = None;
2605                let mut priority__ = None;
2606                let mut protocol__ = None;
2607                let mut first_port__ = None;
2608                let mut last_port__ = None;
2609                let mut cidr_block__ = None;
2610                let mut action__ = None;
2611                while let Some(k) = map_.next_key()? {
2612                    match k {
2613                        GeneratedField::Name => {
2614                            if name__.is_some() {
2615                                return Err(serde::de::Error::duplicate_field("name"));
2616                            }
2617                            name__ = Some(map_.next_value()?);
2618                        }
2619                        GeneratedField::Direction => {
2620                            if direction__.is_some() {
2621                                return Err(serde::de::Error::duplicate_field("direction"));
2622                            }
2623                            direction__ = Some(
2624                                map_.next_value::<acl_rule::Direction>()? as i32,
2625                            );
2626                        }
2627                        GeneratedField::Priority => {
2628                            if priority__.is_some() {
2629                                return Err(serde::de::Error::duplicate_field("priority"));
2630                            }
2631                            priority__ = Some(
2632                                map_
2633                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2634                                    .0,
2635                            );
2636                        }
2637                        GeneratedField::Protocol => {
2638                            if protocol__.is_some() {
2639                                return Err(serde::de::Error::duplicate_field("protocol"));
2640                            }
2641                            protocol__ = Some(
2642                                map_.next_value::<acl_rule::Protocol>()? as i32,
2643                            );
2644                        }
2645                        GeneratedField::FirstPort => {
2646                            if first_port__.is_some() {
2647                                return Err(serde::de::Error::duplicate_field("firstPort"));
2648                            }
2649                            first_port__ = Some(
2650                                map_
2651                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2652                                    .0,
2653                            );
2654                        }
2655                        GeneratedField::LastPort => {
2656                            if last_port__.is_some() {
2657                                return Err(serde::de::Error::duplicate_field("lastPort"));
2658                            }
2659                            last_port__ = Some(
2660                                map_
2661                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2662                                    .0,
2663                            );
2664                        }
2665                        GeneratedField::CidrBlock => {
2666                            if cidr_block__.is_some() {
2667                                return Err(serde::de::Error::duplicate_field("cidrBlock"));
2668                            }
2669                            cidr_block__ = Some(map_.next_value()?);
2670                        }
2671                        GeneratedField::Action => {
2672                            if action__.is_some() {
2673                                return Err(serde::de::Error::duplicate_field("action"));
2674                            }
2675                            action__ = Some(
2676                                map_.next_value::<acl_rule::Action>()? as i32,
2677                            );
2678                        }
2679                        GeneratedField::__SkipField__ => {
2680                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2681                        }
2682                    }
2683                }
2684                Ok(AclRule {
2685                    name: name__.unwrap_or_default(),
2686                    direction: direction__.unwrap_or_default(),
2687                    priority: priority__.unwrap_or_default(),
2688                    protocol: protocol__.unwrap_or_default(),
2689                    first_port: first_port__.unwrap_or_default(),
2690                    last_port: last_port__.unwrap_or_default(),
2691                    cidr_block: cidr_block__.unwrap_or_default(),
2692                    action: action__.unwrap_or_default(),
2693                })
2694            }
2695        }
2696        deserializer
2697            .deserialize_struct(
2698                "origincloud.network.v1beta1.AclRule",
2699                FIELDS,
2700                GeneratedVisitor,
2701            )
2702    }
2703}
2704impl serde::Serialize for acl_rule::Action {
2705    #[allow(deprecated)]
2706    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2707    where
2708        S: serde::Serializer,
2709    {
2710        let variant = match self {
2711            Self::Unspecified => "ACTION_UNSPECIFIED",
2712            Self::Accept => "ACCEPT",
2713            Self::Drop => "DROP",
2714        };
2715        serializer.serialize_str(variant)
2716    }
2717}
2718impl<'de> serde::Deserialize<'de> for acl_rule::Action {
2719    #[allow(deprecated)]
2720    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2721    where
2722        D: serde::Deserializer<'de>,
2723    {
2724        const FIELDS: &[&str] = &["ACTION_UNSPECIFIED", "ACCEPT", "DROP"];
2725        struct GeneratedVisitor;
2726        impl serde::de::Visitor<'_> for GeneratedVisitor {
2727            type Value = acl_rule::Action;
2728            fn expecting(
2729                &self,
2730                formatter: &mut std::fmt::Formatter<'_>,
2731            ) -> std::fmt::Result {
2732                write!(formatter, "expected one of: {:?}", & FIELDS)
2733            }
2734            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2735            where
2736                E: serde::de::Error,
2737            {
2738                i32::try_from(v)
2739                    .ok()
2740                    .and_then(|x| {
2741                        x.try_into().ok().or_else(|| Some(acl_rule::Action::default()))
2742                    })
2743                    .ok_or_else(|| {
2744                        serde::de::Error::invalid_value(
2745                            serde::de::Unexpected::Signed(v),
2746                            &self,
2747                        )
2748                    })
2749            }
2750            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2751            where
2752                E: serde::de::Error,
2753            {
2754                i32::try_from(v)
2755                    .ok()
2756                    .and_then(|x| {
2757                        x.try_into().ok().or_else(|| Some(acl_rule::Action::default()))
2758                    })
2759                    .ok_or_else(|| {
2760                        serde::de::Error::invalid_value(
2761                            serde::de::Unexpected::Unsigned(v),
2762                            &self,
2763                        )
2764                    })
2765            }
2766            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2767            where
2768                E: serde::de::Error,
2769            {
2770                match value {
2771                    "ACTION_UNSPECIFIED" => Ok(acl_rule::Action::Unspecified),
2772                    "ACCEPT" => Ok(acl_rule::Action::Accept),
2773                    "DROP" => Ok(acl_rule::Action::Drop),
2774                    _ => Ok(acl_rule::Action::default()),
2775                }
2776            }
2777        }
2778        deserializer.deserialize_any(GeneratedVisitor)
2779    }
2780}
2781impl serde::Serialize for acl_rule::Direction {
2782    #[allow(deprecated)]
2783    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2784    where
2785        S: serde::Serializer,
2786    {
2787        let variant = match self {
2788            Self::Unspecified => "DIRECTION_UNSPECIFIED",
2789            Self::Ingress => "INGRESS",
2790            Self::Egress => "EGRESS",
2791        };
2792        serializer.serialize_str(variant)
2793    }
2794}
2795impl<'de> serde::Deserialize<'de> for acl_rule::Direction {
2796    #[allow(deprecated)]
2797    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2798    where
2799        D: serde::Deserializer<'de>,
2800    {
2801        const FIELDS: &[&str] = &["DIRECTION_UNSPECIFIED", "INGRESS", "EGRESS"];
2802        struct GeneratedVisitor;
2803        impl serde::de::Visitor<'_> for GeneratedVisitor {
2804            type Value = acl_rule::Direction;
2805            fn expecting(
2806                &self,
2807                formatter: &mut std::fmt::Formatter<'_>,
2808            ) -> std::fmt::Result {
2809                write!(formatter, "expected one of: {:?}", & FIELDS)
2810            }
2811            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2812            where
2813                E: serde::de::Error,
2814            {
2815                i32::try_from(v)
2816                    .ok()
2817                    .and_then(|x| {
2818                        x
2819                            .try_into()
2820                            .ok()
2821                            .or_else(|| Some(acl_rule::Direction::default()))
2822                    })
2823                    .ok_or_else(|| {
2824                        serde::de::Error::invalid_value(
2825                            serde::de::Unexpected::Signed(v),
2826                            &self,
2827                        )
2828                    })
2829            }
2830            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2831            where
2832                E: serde::de::Error,
2833            {
2834                i32::try_from(v)
2835                    .ok()
2836                    .and_then(|x| {
2837                        x
2838                            .try_into()
2839                            .ok()
2840                            .or_else(|| Some(acl_rule::Direction::default()))
2841                    })
2842                    .ok_or_else(|| {
2843                        serde::de::Error::invalid_value(
2844                            serde::de::Unexpected::Unsigned(v),
2845                            &self,
2846                        )
2847                    })
2848            }
2849            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2850            where
2851                E: serde::de::Error,
2852            {
2853                match value {
2854                    "DIRECTION_UNSPECIFIED" => Ok(acl_rule::Direction::Unspecified),
2855                    "INGRESS" => Ok(acl_rule::Direction::Ingress),
2856                    "EGRESS" => Ok(acl_rule::Direction::Egress),
2857                    _ => Ok(acl_rule::Direction::default()),
2858                }
2859            }
2860        }
2861        deserializer.deserialize_any(GeneratedVisitor)
2862    }
2863}
2864impl serde::Serialize for acl_rule::Protocol {
2865    #[allow(deprecated)]
2866    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2867    where
2868        S: serde::Serializer,
2869    {
2870        let variant = match self {
2871            Self::Unspecified => "PROTOCOL_UNSPECIFIED",
2872            Self::All => "ALL",
2873            Self::Tcp => "TCP",
2874            Self::Udp => "UDP",
2875            Self::Icmp => "ICMP",
2876        };
2877        serializer.serialize_str(variant)
2878    }
2879}
2880impl<'de> serde::Deserialize<'de> for acl_rule::Protocol {
2881    #[allow(deprecated)]
2882    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2883    where
2884        D: serde::Deserializer<'de>,
2885    {
2886        const FIELDS: &[&str] = &["PROTOCOL_UNSPECIFIED", "ALL", "TCP", "UDP", "ICMP"];
2887        struct GeneratedVisitor;
2888        impl serde::de::Visitor<'_> for GeneratedVisitor {
2889            type Value = acl_rule::Protocol;
2890            fn expecting(
2891                &self,
2892                formatter: &mut std::fmt::Formatter<'_>,
2893            ) -> std::fmt::Result {
2894                write!(formatter, "expected one of: {:?}", & FIELDS)
2895            }
2896            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2897            where
2898                E: serde::de::Error,
2899            {
2900                i32::try_from(v)
2901                    .ok()
2902                    .and_then(|x| {
2903                        x.try_into().ok().or_else(|| Some(acl_rule::Protocol::default()))
2904                    })
2905                    .ok_or_else(|| {
2906                        serde::de::Error::invalid_value(
2907                            serde::de::Unexpected::Signed(v),
2908                            &self,
2909                        )
2910                    })
2911            }
2912            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2913            where
2914                E: serde::de::Error,
2915            {
2916                i32::try_from(v)
2917                    .ok()
2918                    .and_then(|x| {
2919                        x.try_into().ok().or_else(|| Some(acl_rule::Protocol::default()))
2920                    })
2921                    .ok_or_else(|| {
2922                        serde::de::Error::invalid_value(
2923                            serde::de::Unexpected::Unsigned(v),
2924                            &self,
2925                        )
2926                    })
2927            }
2928            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2929            where
2930                E: serde::de::Error,
2931            {
2932                match value {
2933                    "PROTOCOL_UNSPECIFIED" => Ok(acl_rule::Protocol::Unspecified),
2934                    "ALL" => Ok(acl_rule::Protocol::All),
2935                    "TCP" => Ok(acl_rule::Protocol::Tcp),
2936                    "UDP" => Ok(acl_rule::Protocol::Udp),
2937                    "ICMP" => Ok(acl_rule::Protocol::Icmp),
2938                    _ => Ok(acl_rule::Protocol::default()),
2939                }
2940            }
2941        }
2942        deserializer.deserialize_any(GeneratedVisitor)
2943    }
2944}
2945impl serde::Serialize for CreateAclAssociationRequest {
2946    #[allow(deprecated)]
2947    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2948    where
2949        S: serde::Serializer,
2950    {
2951        use serde::ser::SerializeStruct;
2952        let mut len = 0;
2953        if !self.parent.is_empty() {
2954            len += 1;
2955        }
2956        if self.acl_association.is_some() {
2957            len += 1;
2958        }
2959        if !self.request_id.is_empty() {
2960            len += 1;
2961        }
2962        let mut struct_ser = serializer
2963            .serialize_struct(
2964                "origincloud.network.v1beta1.CreateAclAssociationRequest",
2965                len,
2966            )?;
2967        if !self.parent.is_empty() {
2968            struct_ser.serialize_field("parent", &self.parent)?;
2969        }
2970        if let Some(v) = self.acl_association.as_ref() {
2971            struct_ser.serialize_field("aclAssociation", v)?;
2972        }
2973        if !self.request_id.is_empty() {
2974            struct_ser.serialize_field("requestId", &self.request_id)?;
2975        }
2976        struct_ser.end()
2977    }
2978}
2979impl<'de> serde::Deserialize<'de> for CreateAclAssociationRequest {
2980    #[allow(deprecated)]
2981    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2982    where
2983        D: serde::Deserializer<'de>,
2984    {
2985        const FIELDS: &[&str] = &[
2986            "parent",
2987            "acl_association",
2988            "aclAssociation",
2989            "request_id",
2990            "requestId",
2991        ];
2992        #[allow(clippy::enum_variant_names)]
2993        enum GeneratedField {
2994            Parent,
2995            AclAssociation,
2996            RequestId,
2997            __SkipField__,
2998        }
2999        impl<'de> serde::Deserialize<'de> for GeneratedField {
3000            fn deserialize<D>(
3001                deserializer: D,
3002            ) -> std::result::Result<GeneratedField, D::Error>
3003            where
3004                D: serde::Deserializer<'de>,
3005            {
3006                struct GeneratedVisitor;
3007                impl serde::de::Visitor<'_> for GeneratedVisitor {
3008                    type Value = GeneratedField;
3009                    fn expecting(
3010                        &self,
3011                        formatter: &mut std::fmt::Formatter<'_>,
3012                    ) -> std::fmt::Result {
3013                        write!(formatter, "expected one of: {:?}", & FIELDS)
3014                    }
3015                    #[allow(unused_variables)]
3016                    fn visit_str<E>(
3017                        self,
3018                        value: &str,
3019                    ) -> std::result::Result<GeneratedField, E>
3020                    where
3021                        E: serde::de::Error,
3022                    {
3023                        match value {
3024                            "parent" => Ok(GeneratedField::Parent),
3025                            "aclAssociation" | "acl_association" => {
3026                                Ok(GeneratedField::AclAssociation)
3027                            }
3028                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3029                            _ => Ok(GeneratedField::__SkipField__),
3030                        }
3031                    }
3032                }
3033                deserializer.deserialize_identifier(GeneratedVisitor)
3034            }
3035        }
3036        struct GeneratedVisitor;
3037        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3038            type Value = CreateAclAssociationRequest;
3039            fn expecting(
3040                &self,
3041                formatter: &mut std::fmt::Formatter<'_>,
3042            ) -> std::fmt::Result {
3043                formatter
3044                    .write_str(
3045                        "struct origincloud.network.v1beta1.CreateAclAssociationRequest",
3046                    )
3047            }
3048            fn visit_map<V>(
3049                self,
3050                mut map_: V,
3051            ) -> std::result::Result<CreateAclAssociationRequest, V::Error>
3052            where
3053                V: serde::de::MapAccess<'de>,
3054            {
3055                let mut parent__ = None;
3056                let mut acl_association__ = None;
3057                let mut request_id__ = None;
3058                while let Some(k) = map_.next_key()? {
3059                    match k {
3060                        GeneratedField::Parent => {
3061                            if parent__.is_some() {
3062                                return Err(serde::de::Error::duplicate_field("parent"));
3063                            }
3064                            parent__ = Some(map_.next_value()?);
3065                        }
3066                        GeneratedField::AclAssociation => {
3067                            if acl_association__.is_some() {
3068                                return Err(
3069                                    serde::de::Error::duplicate_field("aclAssociation"),
3070                                );
3071                            }
3072                            acl_association__ = map_.next_value()?;
3073                        }
3074                        GeneratedField::RequestId => {
3075                            if request_id__.is_some() {
3076                                return Err(serde::de::Error::duplicate_field("requestId"));
3077                            }
3078                            request_id__ = Some(map_.next_value()?);
3079                        }
3080                        GeneratedField::__SkipField__ => {
3081                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3082                        }
3083                    }
3084                }
3085                Ok(CreateAclAssociationRequest {
3086                    parent: parent__.unwrap_or_default(),
3087                    acl_association: acl_association__,
3088                    request_id: request_id__.unwrap_or_default(),
3089                })
3090            }
3091        }
3092        deserializer
3093            .deserialize_struct(
3094                "origincloud.network.v1beta1.CreateAclAssociationRequest",
3095                FIELDS,
3096                GeneratedVisitor,
3097            )
3098    }
3099}
3100impl serde::Serialize for CreateAclRequest {
3101    #[allow(deprecated)]
3102    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3103    where
3104        S: serde::Serializer,
3105    {
3106        use serde::ser::SerializeStruct;
3107        let mut len = 0;
3108        if !self.parent.is_empty() {
3109            len += 1;
3110        }
3111        if self.acl.is_some() {
3112            len += 1;
3113        }
3114        if !self.request_id.is_empty() {
3115            len += 1;
3116        }
3117        let mut struct_ser = serializer
3118            .serialize_struct("origincloud.network.v1beta1.CreateAclRequest", len)?;
3119        if !self.parent.is_empty() {
3120            struct_ser.serialize_field("parent", &self.parent)?;
3121        }
3122        if let Some(v) = self.acl.as_ref() {
3123            struct_ser.serialize_field("acl", v)?;
3124        }
3125        if !self.request_id.is_empty() {
3126            struct_ser.serialize_field("requestId", &self.request_id)?;
3127        }
3128        struct_ser.end()
3129    }
3130}
3131impl<'de> serde::Deserialize<'de> for CreateAclRequest {
3132    #[allow(deprecated)]
3133    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3134    where
3135        D: serde::Deserializer<'de>,
3136    {
3137        const FIELDS: &[&str] = &["parent", "acl", "request_id", "requestId"];
3138        #[allow(clippy::enum_variant_names)]
3139        enum GeneratedField {
3140            Parent,
3141            Acl,
3142            RequestId,
3143            __SkipField__,
3144        }
3145        impl<'de> serde::Deserialize<'de> for GeneratedField {
3146            fn deserialize<D>(
3147                deserializer: D,
3148            ) -> std::result::Result<GeneratedField, D::Error>
3149            where
3150                D: serde::Deserializer<'de>,
3151            {
3152                struct GeneratedVisitor;
3153                impl serde::de::Visitor<'_> for GeneratedVisitor {
3154                    type Value = GeneratedField;
3155                    fn expecting(
3156                        &self,
3157                        formatter: &mut std::fmt::Formatter<'_>,
3158                    ) -> std::fmt::Result {
3159                        write!(formatter, "expected one of: {:?}", & FIELDS)
3160                    }
3161                    #[allow(unused_variables)]
3162                    fn visit_str<E>(
3163                        self,
3164                        value: &str,
3165                    ) -> std::result::Result<GeneratedField, E>
3166                    where
3167                        E: serde::de::Error,
3168                    {
3169                        match value {
3170                            "parent" => Ok(GeneratedField::Parent),
3171                            "acl" => Ok(GeneratedField::Acl),
3172                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3173                            _ => Ok(GeneratedField::__SkipField__),
3174                        }
3175                    }
3176                }
3177                deserializer.deserialize_identifier(GeneratedVisitor)
3178            }
3179        }
3180        struct GeneratedVisitor;
3181        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3182            type Value = CreateAclRequest;
3183            fn expecting(
3184                &self,
3185                formatter: &mut std::fmt::Formatter<'_>,
3186            ) -> std::fmt::Result {
3187                formatter
3188                    .write_str("struct origincloud.network.v1beta1.CreateAclRequest")
3189            }
3190            fn visit_map<V>(
3191                self,
3192                mut map_: V,
3193            ) -> std::result::Result<CreateAclRequest, V::Error>
3194            where
3195                V: serde::de::MapAccess<'de>,
3196            {
3197                let mut parent__ = None;
3198                let mut acl__ = None;
3199                let mut request_id__ = None;
3200                while let Some(k) = map_.next_key()? {
3201                    match k {
3202                        GeneratedField::Parent => {
3203                            if parent__.is_some() {
3204                                return Err(serde::de::Error::duplicate_field("parent"));
3205                            }
3206                            parent__ = Some(map_.next_value()?);
3207                        }
3208                        GeneratedField::Acl => {
3209                            if acl__.is_some() {
3210                                return Err(serde::de::Error::duplicate_field("acl"));
3211                            }
3212                            acl__ = map_.next_value()?;
3213                        }
3214                        GeneratedField::RequestId => {
3215                            if request_id__.is_some() {
3216                                return Err(serde::de::Error::duplicate_field("requestId"));
3217                            }
3218                            request_id__ = Some(map_.next_value()?);
3219                        }
3220                        GeneratedField::__SkipField__ => {
3221                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3222                        }
3223                    }
3224                }
3225                Ok(CreateAclRequest {
3226                    parent: parent__.unwrap_or_default(),
3227                    acl: acl__,
3228                    request_id: request_id__.unwrap_or_default(),
3229                })
3230            }
3231        }
3232        deserializer
3233            .deserialize_struct(
3234                "origincloud.network.v1beta1.CreateAclRequest",
3235                FIELDS,
3236                GeneratedVisitor,
3237            )
3238    }
3239}
3240impl serde::Serialize for CreateAclRuleRequest {
3241    #[allow(deprecated)]
3242    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3243    where
3244        S: serde::Serializer,
3245    {
3246        use serde::ser::SerializeStruct;
3247        let mut len = 0;
3248        if !self.parent.is_empty() {
3249            len += 1;
3250        }
3251        if self.acl_rule.is_some() {
3252            len += 1;
3253        }
3254        if !self.request_id.is_empty() {
3255            len += 1;
3256        }
3257        let mut struct_ser = serializer
3258            .serialize_struct("origincloud.network.v1beta1.CreateAclRuleRequest", len)?;
3259        if !self.parent.is_empty() {
3260            struct_ser.serialize_field("parent", &self.parent)?;
3261        }
3262        if let Some(v) = self.acl_rule.as_ref() {
3263            struct_ser.serialize_field("aclRule", v)?;
3264        }
3265        if !self.request_id.is_empty() {
3266            struct_ser.serialize_field("requestId", &self.request_id)?;
3267        }
3268        struct_ser.end()
3269    }
3270}
3271impl<'de> serde::Deserialize<'de> for CreateAclRuleRequest {
3272    #[allow(deprecated)]
3273    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3274    where
3275        D: serde::Deserializer<'de>,
3276    {
3277        const FIELDS: &[&str] = &[
3278            "parent",
3279            "acl_rule",
3280            "aclRule",
3281            "request_id",
3282            "requestId",
3283        ];
3284        #[allow(clippy::enum_variant_names)]
3285        enum GeneratedField {
3286            Parent,
3287            AclRule,
3288            RequestId,
3289            __SkipField__,
3290        }
3291        impl<'de> serde::Deserialize<'de> for GeneratedField {
3292            fn deserialize<D>(
3293                deserializer: D,
3294            ) -> std::result::Result<GeneratedField, D::Error>
3295            where
3296                D: serde::Deserializer<'de>,
3297            {
3298                struct GeneratedVisitor;
3299                impl serde::de::Visitor<'_> for GeneratedVisitor {
3300                    type Value = GeneratedField;
3301                    fn expecting(
3302                        &self,
3303                        formatter: &mut std::fmt::Formatter<'_>,
3304                    ) -> std::fmt::Result {
3305                        write!(formatter, "expected one of: {:?}", & FIELDS)
3306                    }
3307                    #[allow(unused_variables)]
3308                    fn visit_str<E>(
3309                        self,
3310                        value: &str,
3311                    ) -> std::result::Result<GeneratedField, E>
3312                    where
3313                        E: serde::de::Error,
3314                    {
3315                        match value {
3316                            "parent" => Ok(GeneratedField::Parent),
3317                            "aclRule" | "acl_rule" => Ok(GeneratedField::AclRule),
3318                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3319                            _ => Ok(GeneratedField::__SkipField__),
3320                        }
3321                    }
3322                }
3323                deserializer.deserialize_identifier(GeneratedVisitor)
3324            }
3325        }
3326        struct GeneratedVisitor;
3327        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3328            type Value = CreateAclRuleRequest;
3329            fn expecting(
3330                &self,
3331                formatter: &mut std::fmt::Formatter<'_>,
3332            ) -> std::fmt::Result {
3333                formatter
3334                    .write_str("struct origincloud.network.v1beta1.CreateAclRuleRequest")
3335            }
3336            fn visit_map<V>(
3337                self,
3338                mut map_: V,
3339            ) -> std::result::Result<CreateAclRuleRequest, V::Error>
3340            where
3341                V: serde::de::MapAccess<'de>,
3342            {
3343                let mut parent__ = None;
3344                let mut acl_rule__ = None;
3345                let mut request_id__ = None;
3346                while let Some(k) = map_.next_key()? {
3347                    match k {
3348                        GeneratedField::Parent => {
3349                            if parent__.is_some() {
3350                                return Err(serde::de::Error::duplicate_field("parent"));
3351                            }
3352                            parent__ = Some(map_.next_value()?);
3353                        }
3354                        GeneratedField::AclRule => {
3355                            if acl_rule__.is_some() {
3356                                return Err(serde::de::Error::duplicate_field("aclRule"));
3357                            }
3358                            acl_rule__ = map_.next_value()?;
3359                        }
3360                        GeneratedField::RequestId => {
3361                            if request_id__.is_some() {
3362                                return Err(serde::de::Error::duplicate_field("requestId"));
3363                            }
3364                            request_id__ = Some(map_.next_value()?);
3365                        }
3366                        GeneratedField::__SkipField__ => {
3367                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3368                        }
3369                    }
3370                }
3371                Ok(CreateAclRuleRequest {
3372                    parent: parent__.unwrap_or_default(),
3373                    acl_rule: acl_rule__,
3374                    request_id: request_id__.unwrap_or_default(),
3375                })
3376            }
3377        }
3378        deserializer
3379            .deserialize_struct(
3380                "origincloud.network.v1beta1.CreateAclRuleRequest",
3381                FIELDS,
3382                GeneratedVisitor,
3383            )
3384    }
3385}
3386impl serde::Serialize for CreateDnsPolicyAssociationRequest {
3387    #[allow(deprecated)]
3388    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3389    where
3390        S: serde::Serializer,
3391    {
3392        use serde::ser::SerializeStruct;
3393        let mut len = 0;
3394        if !self.parent.is_empty() {
3395            len += 1;
3396        }
3397        if self.dns_policy_association.is_some() {
3398            len += 1;
3399        }
3400        if !self.request_id.is_empty() {
3401            len += 1;
3402        }
3403        let mut struct_ser = serializer
3404            .serialize_struct(
3405                "origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3406                len,
3407            )?;
3408        if !self.parent.is_empty() {
3409            struct_ser.serialize_field("parent", &self.parent)?;
3410        }
3411        if let Some(v) = self.dns_policy_association.as_ref() {
3412            struct_ser.serialize_field("dnsPolicyAssociation", v)?;
3413        }
3414        if !self.request_id.is_empty() {
3415            struct_ser.serialize_field("requestId", &self.request_id)?;
3416        }
3417        struct_ser.end()
3418    }
3419}
3420impl<'de> serde::Deserialize<'de> for CreateDnsPolicyAssociationRequest {
3421    #[allow(deprecated)]
3422    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3423    where
3424        D: serde::Deserializer<'de>,
3425    {
3426        const FIELDS: &[&str] = &[
3427            "parent",
3428            "dns_policy_association",
3429            "dnsPolicyAssociation",
3430            "request_id",
3431            "requestId",
3432        ];
3433        #[allow(clippy::enum_variant_names)]
3434        enum GeneratedField {
3435            Parent,
3436            DnsPolicyAssociation,
3437            RequestId,
3438            __SkipField__,
3439        }
3440        impl<'de> serde::Deserialize<'de> for GeneratedField {
3441            fn deserialize<D>(
3442                deserializer: D,
3443            ) -> std::result::Result<GeneratedField, D::Error>
3444            where
3445                D: serde::Deserializer<'de>,
3446            {
3447                struct GeneratedVisitor;
3448                impl serde::de::Visitor<'_> for GeneratedVisitor {
3449                    type Value = GeneratedField;
3450                    fn expecting(
3451                        &self,
3452                        formatter: &mut std::fmt::Formatter<'_>,
3453                    ) -> std::fmt::Result {
3454                        write!(formatter, "expected one of: {:?}", & FIELDS)
3455                    }
3456                    #[allow(unused_variables)]
3457                    fn visit_str<E>(
3458                        self,
3459                        value: &str,
3460                    ) -> std::result::Result<GeneratedField, E>
3461                    where
3462                        E: serde::de::Error,
3463                    {
3464                        match value {
3465                            "parent" => Ok(GeneratedField::Parent),
3466                            "dnsPolicyAssociation" | "dns_policy_association" => {
3467                                Ok(GeneratedField::DnsPolicyAssociation)
3468                            }
3469                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3470                            _ => Ok(GeneratedField::__SkipField__),
3471                        }
3472                    }
3473                }
3474                deserializer.deserialize_identifier(GeneratedVisitor)
3475            }
3476        }
3477        struct GeneratedVisitor;
3478        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3479            type Value = CreateDnsPolicyAssociationRequest;
3480            fn expecting(
3481                &self,
3482                formatter: &mut std::fmt::Formatter<'_>,
3483            ) -> std::fmt::Result {
3484                formatter
3485                    .write_str(
3486                        "struct origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3487                    )
3488            }
3489            fn visit_map<V>(
3490                self,
3491                mut map_: V,
3492            ) -> std::result::Result<CreateDnsPolicyAssociationRequest, V::Error>
3493            where
3494                V: serde::de::MapAccess<'de>,
3495            {
3496                let mut parent__ = None;
3497                let mut dns_policy_association__ = None;
3498                let mut request_id__ = None;
3499                while let Some(k) = map_.next_key()? {
3500                    match k {
3501                        GeneratedField::Parent => {
3502                            if parent__.is_some() {
3503                                return Err(serde::de::Error::duplicate_field("parent"));
3504                            }
3505                            parent__ = Some(map_.next_value()?);
3506                        }
3507                        GeneratedField::DnsPolicyAssociation => {
3508                            if dns_policy_association__.is_some() {
3509                                return Err(
3510                                    serde::de::Error::duplicate_field("dnsPolicyAssociation"),
3511                                );
3512                            }
3513                            dns_policy_association__ = map_.next_value()?;
3514                        }
3515                        GeneratedField::RequestId => {
3516                            if request_id__.is_some() {
3517                                return Err(serde::de::Error::duplicate_field("requestId"));
3518                            }
3519                            request_id__ = Some(map_.next_value()?);
3520                        }
3521                        GeneratedField::__SkipField__ => {
3522                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3523                        }
3524                    }
3525                }
3526                Ok(CreateDnsPolicyAssociationRequest {
3527                    parent: parent__.unwrap_or_default(),
3528                    dns_policy_association: dns_policy_association__,
3529                    request_id: request_id__.unwrap_or_default(),
3530                })
3531            }
3532        }
3533        deserializer
3534            .deserialize_struct(
3535                "origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3536                FIELDS,
3537                GeneratedVisitor,
3538            )
3539    }
3540}
3541impl serde::Serialize for CreateDnsPolicyRequest {
3542    #[allow(deprecated)]
3543    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3544    where
3545        S: serde::Serializer,
3546    {
3547        use serde::ser::SerializeStruct;
3548        let mut len = 0;
3549        if !self.parent.is_empty() {
3550            len += 1;
3551        }
3552        if self.dns_policy.is_some() {
3553            len += 1;
3554        }
3555        if !self.request_id.is_empty() {
3556            len += 1;
3557        }
3558        let mut struct_ser = serializer
3559            .serialize_struct(
3560                "origincloud.network.v1beta1.CreateDnsPolicyRequest",
3561                len,
3562            )?;
3563        if !self.parent.is_empty() {
3564            struct_ser.serialize_field("parent", &self.parent)?;
3565        }
3566        if let Some(v) = self.dns_policy.as_ref() {
3567            struct_ser.serialize_field("dnsPolicy", v)?;
3568        }
3569        if !self.request_id.is_empty() {
3570            struct_ser.serialize_field("requestId", &self.request_id)?;
3571        }
3572        struct_ser.end()
3573    }
3574}
3575impl<'de> serde::Deserialize<'de> for CreateDnsPolicyRequest {
3576    #[allow(deprecated)]
3577    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3578    where
3579        D: serde::Deserializer<'de>,
3580    {
3581        const FIELDS: &[&str] = &[
3582            "parent",
3583            "dns_policy",
3584            "dnsPolicy",
3585            "request_id",
3586            "requestId",
3587        ];
3588        #[allow(clippy::enum_variant_names)]
3589        enum GeneratedField {
3590            Parent,
3591            DnsPolicy,
3592            RequestId,
3593            __SkipField__,
3594        }
3595        impl<'de> serde::Deserialize<'de> for GeneratedField {
3596            fn deserialize<D>(
3597                deserializer: D,
3598            ) -> std::result::Result<GeneratedField, D::Error>
3599            where
3600                D: serde::Deserializer<'de>,
3601            {
3602                struct GeneratedVisitor;
3603                impl serde::de::Visitor<'_> for GeneratedVisitor {
3604                    type Value = GeneratedField;
3605                    fn expecting(
3606                        &self,
3607                        formatter: &mut std::fmt::Formatter<'_>,
3608                    ) -> std::fmt::Result {
3609                        write!(formatter, "expected one of: {:?}", & FIELDS)
3610                    }
3611                    #[allow(unused_variables)]
3612                    fn visit_str<E>(
3613                        self,
3614                        value: &str,
3615                    ) -> std::result::Result<GeneratedField, E>
3616                    where
3617                        E: serde::de::Error,
3618                    {
3619                        match value {
3620                            "parent" => Ok(GeneratedField::Parent),
3621                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
3622                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3623                            _ => Ok(GeneratedField::__SkipField__),
3624                        }
3625                    }
3626                }
3627                deserializer.deserialize_identifier(GeneratedVisitor)
3628            }
3629        }
3630        struct GeneratedVisitor;
3631        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3632            type Value = CreateDnsPolicyRequest;
3633            fn expecting(
3634                &self,
3635                formatter: &mut std::fmt::Formatter<'_>,
3636            ) -> std::fmt::Result {
3637                formatter
3638                    .write_str(
3639                        "struct origincloud.network.v1beta1.CreateDnsPolicyRequest",
3640                    )
3641            }
3642            fn visit_map<V>(
3643                self,
3644                mut map_: V,
3645            ) -> std::result::Result<CreateDnsPolicyRequest, V::Error>
3646            where
3647                V: serde::de::MapAccess<'de>,
3648            {
3649                let mut parent__ = None;
3650                let mut dns_policy__ = None;
3651                let mut request_id__ = None;
3652                while let Some(k) = map_.next_key()? {
3653                    match k {
3654                        GeneratedField::Parent => {
3655                            if parent__.is_some() {
3656                                return Err(serde::de::Error::duplicate_field("parent"));
3657                            }
3658                            parent__ = Some(map_.next_value()?);
3659                        }
3660                        GeneratedField::DnsPolicy => {
3661                            if dns_policy__.is_some() {
3662                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
3663                            }
3664                            dns_policy__ = map_.next_value()?;
3665                        }
3666                        GeneratedField::RequestId => {
3667                            if request_id__.is_some() {
3668                                return Err(serde::de::Error::duplicate_field("requestId"));
3669                            }
3670                            request_id__ = Some(map_.next_value()?);
3671                        }
3672                        GeneratedField::__SkipField__ => {
3673                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3674                        }
3675                    }
3676                }
3677                Ok(CreateDnsPolicyRequest {
3678                    parent: parent__.unwrap_or_default(),
3679                    dns_policy: dns_policy__,
3680                    request_id: request_id__.unwrap_or_default(),
3681                })
3682            }
3683        }
3684        deserializer
3685            .deserialize_struct(
3686                "origincloud.network.v1beta1.CreateDnsPolicyRequest",
3687                FIELDS,
3688                GeneratedVisitor,
3689            )
3690    }
3691}
3692impl serde::Serialize for CreateFloatingIpAssociationRequest {
3693    #[allow(deprecated)]
3694    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3695    where
3696        S: serde::Serializer,
3697    {
3698        use serde::ser::SerializeStruct;
3699        let mut len = 0;
3700        if !self.parent.is_empty() {
3701            len += 1;
3702        }
3703        if self.floating_ip_association.is_some() {
3704            len += 1;
3705        }
3706        if !self.request_id.is_empty() {
3707            len += 1;
3708        }
3709        let mut struct_ser = serializer
3710            .serialize_struct(
3711                "origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3712                len,
3713            )?;
3714        if !self.parent.is_empty() {
3715            struct_ser.serialize_field("parent", &self.parent)?;
3716        }
3717        if let Some(v) = self.floating_ip_association.as_ref() {
3718            struct_ser.serialize_field("floatingIpAssociation", v)?;
3719        }
3720        if !self.request_id.is_empty() {
3721            struct_ser.serialize_field("requestId", &self.request_id)?;
3722        }
3723        struct_ser.end()
3724    }
3725}
3726impl<'de> serde::Deserialize<'de> for CreateFloatingIpAssociationRequest {
3727    #[allow(deprecated)]
3728    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3729    where
3730        D: serde::Deserializer<'de>,
3731    {
3732        const FIELDS: &[&str] = &[
3733            "parent",
3734            "floating_ip_association",
3735            "floatingIpAssociation",
3736            "request_id",
3737            "requestId",
3738        ];
3739        #[allow(clippy::enum_variant_names)]
3740        enum GeneratedField {
3741            Parent,
3742            FloatingIpAssociation,
3743            RequestId,
3744            __SkipField__,
3745        }
3746        impl<'de> serde::Deserialize<'de> for GeneratedField {
3747            fn deserialize<D>(
3748                deserializer: D,
3749            ) -> std::result::Result<GeneratedField, D::Error>
3750            where
3751                D: serde::Deserializer<'de>,
3752            {
3753                struct GeneratedVisitor;
3754                impl serde::de::Visitor<'_> for GeneratedVisitor {
3755                    type Value = GeneratedField;
3756                    fn expecting(
3757                        &self,
3758                        formatter: &mut std::fmt::Formatter<'_>,
3759                    ) -> std::fmt::Result {
3760                        write!(formatter, "expected one of: {:?}", & FIELDS)
3761                    }
3762                    #[allow(unused_variables)]
3763                    fn visit_str<E>(
3764                        self,
3765                        value: &str,
3766                    ) -> std::result::Result<GeneratedField, E>
3767                    where
3768                        E: serde::de::Error,
3769                    {
3770                        match value {
3771                            "parent" => Ok(GeneratedField::Parent),
3772                            "floatingIpAssociation" | "floating_ip_association" => {
3773                                Ok(GeneratedField::FloatingIpAssociation)
3774                            }
3775                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3776                            _ => Ok(GeneratedField::__SkipField__),
3777                        }
3778                    }
3779                }
3780                deserializer.deserialize_identifier(GeneratedVisitor)
3781            }
3782        }
3783        struct GeneratedVisitor;
3784        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3785            type Value = CreateFloatingIpAssociationRequest;
3786            fn expecting(
3787                &self,
3788                formatter: &mut std::fmt::Formatter<'_>,
3789            ) -> std::fmt::Result {
3790                formatter
3791                    .write_str(
3792                        "struct origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3793                    )
3794            }
3795            fn visit_map<V>(
3796                self,
3797                mut map_: V,
3798            ) -> std::result::Result<CreateFloatingIpAssociationRequest, V::Error>
3799            where
3800                V: serde::de::MapAccess<'de>,
3801            {
3802                let mut parent__ = None;
3803                let mut floating_ip_association__ = None;
3804                let mut request_id__ = None;
3805                while let Some(k) = map_.next_key()? {
3806                    match k {
3807                        GeneratedField::Parent => {
3808                            if parent__.is_some() {
3809                                return Err(serde::de::Error::duplicate_field("parent"));
3810                            }
3811                            parent__ = Some(map_.next_value()?);
3812                        }
3813                        GeneratedField::FloatingIpAssociation => {
3814                            if floating_ip_association__.is_some() {
3815                                return Err(
3816                                    serde::de::Error::duplicate_field("floatingIpAssociation"),
3817                                );
3818                            }
3819                            floating_ip_association__ = map_.next_value()?;
3820                        }
3821                        GeneratedField::RequestId => {
3822                            if request_id__.is_some() {
3823                                return Err(serde::de::Error::duplicate_field("requestId"));
3824                            }
3825                            request_id__ = Some(map_.next_value()?);
3826                        }
3827                        GeneratedField::__SkipField__ => {
3828                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3829                        }
3830                    }
3831                }
3832                Ok(CreateFloatingIpAssociationRequest {
3833                    parent: parent__.unwrap_or_default(),
3834                    floating_ip_association: floating_ip_association__,
3835                    request_id: request_id__.unwrap_or_default(),
3836                })
3837            }
3838        }
3839        deserializer
3840            .deserialize_struct(
3841                "origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3842                FIELDS,
3843                GeneratedVisitor,
3844            )
3845    }
3846}
3847impl serde::Serialize for CreateFloatingIpRequest {
3848    #[allow(deprecated)]
3849    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3850    where
3851        S: serde::Serializer,
3852    {
3853        use serde::ser::SerializeStruct;
3854        let mut len = 0;
3855        if !self.parent.is_empty() {
3856            len += 1;
3857        }
3858        if self.floating_ip.is_some() {
3859            len += 1;
3860        }
3861        if !self.request_id.is_empty() {
3862            len += 1;
3863        }
3864        let mut struct_ser = serializer
3865            .serialize_struct(
3866                "origincloud.network.v1beta1.CreateFloatingIpRequest",
3867                len,
3868            )?;
3869        if !self.parent.is_empty() {
3870            struct_ser.serialize_field("parent", &self.parent)?;
3871        }
3872        if let Some(v) = self.floating_ip.as_ref() {
3873            struct_ser.serialize_field("floatingIp", v)?;
3874        }
3875        if !self.request_id.is_empty() {
3876            struct_ser.serialize_field("requestId", &self.request_id)?;
3877        }
3878        struct_ser.end()
3879    }
3880}
3881impl<'de> serde::Deserialize<'de> for CreateFloatingIpRequest {
3882    #[allow(deprecated)]
3883    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3884    where
3885        D: serde::Deserializer<'de>,
3886    {
3887        const FIELDS: &[&str] = &[
3888            "parent",
3889            "floating_ip",
3890            "floatingIp",
3891            "request_id",
3892            "requestId",
3893        ];
3894        #[allow(clippy::enum_variant_names)]
3895        enum GeneratedField {
3896            Parent,
3897            FloatingIp,
3898            RequestId,
3899            __SkipField__,
3900        }
3901        impl<'de> serde::Deserialize<'de> for GeneratedField {
3902            fn deserialize<D>(
3903                deserializer: D,
3904            ) -> std::result::Result<GeneratedField, D::Error>
3905            where
3906                D: serde::Deserializer<'de>,
3907            {
3908                struct GeneratedVisitor;
3909                impl serde::de::Visitor<'_> for GeneratedVisitor {
3910                    type Value = GeneratedField;
3911                    fn expecting(
3912                        &self,
3913                        formatter: &mut std::fmt::Formatter<'_>,
3914                    ) -> std::fmt::Result {
3915                        write!(formatter, "expected one of: {:?}", & FIELDS)
3916                    }
3917                    #[allow(unused_variables)]
3918                    fn visit_str<E>(
3919                        self,
3920                        value: &str,
3921                    ) -> std::result::Result<GeneratedField, E>
3922                    where
3923                        E: serde::de::Error,
3924                    {
3925                        match value {
3926                            "parent" => Ok(GeneratedField::Parent),
3927                            "floatingIp" | "floating_ip" => {
3928                                Ok(GeneratedField::FloatingIp)
3929                            }
3930                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3931                            _ => Ok(GeneratedField::__SkipField__),
3932                        }
3933                    }
3934                }
3935                deserializer.deserialize_identifier(GeneratedVisitor)
3936            }
3937        }
3938        struct GeneratedVisitor;
3939        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3940            type Value = CreateFloatingIpRequest;
3941            fn expecting(
3942                &self,
3943                formatter: &mut std::fmt::Formatter<'_>,
3944            ) -> std::fmt::Result {
3945                formatter
3946                    .write_str(
3947                        "struct origincloud.network.v1beta1.CreateFloatingIpRequest",
3948                    )
3949            }
3950            fn visit_map<V>(
3951                self,
3952                mut map_: V,
3953            ) -> std::result::Result<CreateFloatingIpRequest, V::Error>
3954            where
3955                V: serde::de::MapAccess<'de>,
3956            {
3957                let mut parent__ = None;
3958                let mut floating_ip__ = None;
3959                let mut request_id__ = None;
3960                while let Some(k) = map_.next_key()? {
3961                    match k {
3962                        GeneratedField::Parent => {
3963                            if parent__.is_some() {
3964                                return Err(serde::de::Error::duplicate_field("parent"));
3965                            }
3966                            parent__ = Some(map_.next_value()?);
3967                        }
3968                        GeneratedField::FloatingIp => {
3969                            if floating_ip__.is_some() {
3970                                return Err(serde::de::Error::duplicate_field("floatingIp"));
3971                            }
3972                            floating_ip__ = map_.next_value()?;
3973                        }
3974                        GeneratedField::RequestId => {
3975                            if request_id__.is_some() {
3976                                return Err(serde::de::Error::duplicate_field("requestId"));
3977                            }
3978                            request_id__ = Some(map_.next_value()?);
3979                        }
3980                        GeneratedField::__SkipField__ => {
3981                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3982                        }
3983                    }
3984                }
3985                Ok(CreateFloatingIpRequest {
3986                    parent: parent__.unwrap_or_default(),
3987                    floating_ip: floating_ip__,
3988                    request_id: request_id__.unwrap_or_default(),
3989                })
3990            }
3991        }
3992        deserializer
3993            .deserialize_struct(
3994                "origincloud.network.v1beta1.CreateFloatingIpRequest",
3995                FIELDS,
3996                GeneratedVisitor,
3997            )
3998    }
3999}
4000impl serde::Serialize for CreateInternetGatewayRequest {
4001    #[allow(deprecated)]
4002    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4003    where
4004        S: serde::Serializer,
4005    {
4006        use serde::ser::SerializeStruct;
4007        let mut len = 0;
4008        if !self.parent.is_empty() {
4009            len += 1;
4010        }
4011        if self.internet_gateway.is_some() {
4012            len += 1;
4013        }
4014        if !self.request_id.is_empty() {
4015            len += 1;
4016        }
4017        let mut struct_ser = serializer
4018            .serialize_struct(
4019                "origincloud.network.v1beta1.CreateInternetGatewayRequest",
4020                len,
4021            )?;
4022        if !self.parent.is_empty() {
4023            struct_ser.serialize_field("parent", &self.parent)?;
4024        }
4025        if let Some(v) = self.internet_gateway.as_ref() {
4026            struct_ser.serialize_field("internetGateway", v)?;
4027        }
4028        if !self.request_id.is_empty() {
4029            struct_ser.serialize_field("requestId", &self.request_id)?;
4030        }
4031        struct_ser.end()
4032    }
4033}
4034impl<'de> serde::Deserialize<'de> for CreateInternetGatewayRequest {
4035    #[allow(deprecated)]
4036    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4037    where
4038        D: serde::Deserializer<'de>,
4039    {
4040        const FIELDS: &[&str] = &[
4041            "parent",
4042            "internet_gateway",
4043            "internetGateway",
4044            "request_id",
4045            "requestId",
4046        ];
4047        #[allow(clippy::enum_variant_names)]
4048        enum GeneratedField {
4049            Parent,
4050            InternetGateway,
4051            RequestId,
4052            __SkipField__,
4053        }
4054        impl<'de> serde::Deserialize<'de> for GeneratedField {
4055            fn deserialize<D>(
4056                deserializer: D,
4057            ) -> std::result::Result<GeneratedField, D::Error>
4058            where
4059                D: serde::Deserializer<'de>,
4060            {
4061                struct GeneratedVisitor;
4062                impl serde::de::Visitor<'_> for GeneratedVisitor {
4063                    type Value = GeneratedField;
4064                    fn expecting(
4065                        &self,
4066                        formatter: &mut std::fmt::Formatter<'_>,
4067                    ) -> std::fmt::Result {
4068                        write!(formatter, "expected one of: {:?}", & FIELDS)
4069                    }
4070                    #[allow(unused_variables)]
4071                    fn visit_str<E>(
4072                        self,
4073                        value: &str,
4074                    ) -> std::result::Result<GeneratedField, E>
4075                    where
4076                        E: serde::de::Error,
4077                    {
4078                        match value {
4079                            "parent" => Ok(GeneratedField::Parent),
4080                            "internetGateway" | "internet_gateway" => {
4081                                Ok(GeneratedField::InternetGateway)
4082                            }
4083                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4084                            _ => Ok(GeneratedField::__SkipField__),
4085                        }
4086                    }
4087                }
4088                deserializer.deserialize_identifier(GeneratedVisitor)
4089            }
4090        }
4091        struct GeneratedVisitor;
4092        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4093            type Value = CreateInternetGatewayRequest;
4094            fn expecting(
4095                &self,
4096                formatter: &mut std::fmt::Formatter<'_>,
4097            ) -> std::fmt::Result {
4098                formatter
4099                    .write_str(
4100                        "struct origincloud.network.v1beta1.CreateInternetGatewayRequest",
4101                    )
4102            }
4103            fn visit_map<V>(
4104                self,
4105                mut map_: V,
4106            ) -> std::result::Result<CreateInternetGatewayRequest, V::Error>
4107            where
4108                V: serde::de::MapAccess<'de>,
4109            {
4110                let mut parent__ = None;
4111                let mut internet_gateway__ = None;
4112                let mut request_id__ = None;
4113                while let Some(k) = map_.next_key()? {
4114                    match k {
4115                        GeneratedField::Parent => {
4116                            if parent__.is_some() {
4117                                return Err(serde::de::Error::duplicate_field("parent"));
4118                            }
4119                            parent__ = Some(map_.next_value()?);
4120                        }
4121                        GeneratedField::InternetGateway => {
4122                            if internet_gateway__.is_some() {
4123                                return Err(
4124                                    serde::de::Error::duplicate_field("internetGateway"),
4125                                );
4126                            }
4127                            internet_gateway__ = map_.next_value()?;
4128                        }
4129                        GeneratedField::RequestId => {
4130                            if request_id__.is_some() {
4131                                return Err(serde::de::Error::duplicate_field("requestId"));
4132                            }
4133                            request_id__ = Some(map_.next_value()?);
4134                        }
4135                        GeneratedField::__SkipField__ => {
4136                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4137                        }
4138                    }
4139                }
4140                Ok(CreateInternetGatewayRequest {
4141                    parent: parent__.unwrap_or_default(),
4142                    internet_gateway: internet_gateway__,
4143                    request_id: request_id__.unwrap_or_default(),
4144                })
4145            }
4146        }
4147        deserializer
4148            .deserialize_struct(
4149                "origincloud.network.v1beta1.CreateInternetGatewayRequest",
4150                FIELDS,
4151                GeneratedVisitor,
4152            )
4153    }
4154}
4155impl serde::Serialize for CreateNatGatewayRequest {
4156    #[allow(deprecated)]
4157    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4158    where
4159        S: serde::Serializer,
4160    {
4161        use serde::ser::SerializeStruct;
4162        let mut len = 0;
4163        if !self.parent.is_empty() {
4164            len += 1;
4165        }
4166        if self.nat_gateway.is_some() {
4167            len += 1;
4168        }
4169        if !self.request_id.is_empty() {
4170            len += 1;
4171        }
4172        let mut struct_ser = serializer
4173            .serialize_struct(
4174                "origincloud.network.v1beta1.CreateNatGatewayRequest",
4175                len,
4176            )?;
4177        if !self.parent.is_empty() {
4178            struct_ser.serialize_field("parent", &self.parent)?;
4179        }
4180        if let Some(v) = self.nat_gateway.as_ref() {
4181            struct_ser.serialize_field("natGateway", v)?;
4182        }
4183        if !self.request_id.is_empty() {
4184            struct_ser.serialize_field("requestId", &self.request_id)?;
4185        }
4186        struct_ser.end()
4187    }
4188}
4189impl<'de> serde::Deserialize<'de> for CreateNatGatewayRequest {
4190    #[allow(deprecated)]
4191    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4192    where
4193        D: serde::Deserializer<'de>,
4194    {
4195        const FIELDS: &[&str] = &[
4196            "parent",
4197            "nat_gateway",
4198            "natGateway",
4199            "request_id",
4200            "requestId",
4201        ];
4202        #[allow(clippy::enum_variant_names)]
4203        enum GeneratedField {
4204            Parent,
4205            NatGateway,
4206            RequestId,
4207            __SkipField__,
4208        }
4209        impl<'de> serde::Deserialize<'de> for GeneratedField {
4210            fn deserialize<D>(
4211                deserializer: D,
4212            ) -> std::result::Result<GeneratedField, D::Error>
4213            where
4214                D: serde::Deserializer<'de>,
4215            {
4216                struct GeneratedVisitor;
4217                impl serde::de::Visitor<'_> for GeneratedVisitor {
4218                    type Value = GeneratedField;
4219                    fn expecting(
4220                        &self,
4221                        formatter: &mut std::fmt::Formatter<'_>,
4222                    ) -> std::fmt::Result {
4223                        write!(formatter, "expected one of: {:?}", & FIELDS)
4224                    }
4225                    #[allow(unused_variables)]
4226                    fn visit_str<E>(
4227                        self,
4228                        value: &str,
4229                    ) -> std::result::Result<GeneratedField, E>
4230                    where
4231                        E: serde::de::Error,
4232                    {
4233                        match value {
4234                            "parent" => Ok(GeneratedField::Parent),
4235                            "natGateway" | "nat_gateway" => {
4236                                Ok(GeneratedField::NatGateway)
4237                            }
4238                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4239                            _ => Ok(GeneratedField::__SkipField__),
4240                        }
4241                    }
4242                }
4243                deserializer.deserialize_identifier(GeneratedVisitor)
4244            }
4245        }
4246        struct GeneratedVisitor;
4247        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4248            type Value = CreateNatGatewayRequest;
4249            fn expecting(
4250                &self,
4251                formatter: &mut std::fmt::Formatter<'_>,
4252            ) -> std::fmt::Result {
4253                formatter
4254                    .write_str(
4255                        "struct origincloud.network.v1beta1.CreateNatGatewayRequest",
4256                    )
4257            }
4258            fn visit_map<V>(
4259                self,
4260                mut map_: V,
4261            ) -> std::result::Result<CreateNatGatewayRequest, V::Error>
4262            where
4263                V: serde::de::MapAccess<'de>,
4264            {
4265                let mut parent__ = None;
4266                let mut nat_gateway__ = None;
4267                let mut request_id__ = None;
4268                while let Some(k) = map_.next_key()? {
4269                    match k {
4270                        GeneratedField::Parent => {
4271                            if parent__.is_some() {
4272                                return Err(serde::de::Error::duplicate_field("parent"));
4273                            }
4274                            parent__ = Some(map_.next_value()?);
4275                        }
4276                        GeneratedField::NatGateway => {
4277                            if nat_gateway__.is_some() {
4278                                return Err(serde::de::Error::duplicate_field("natGateway"));
4279                            }
4280                            nat_gateway__ = map_.next_value()?;
4281                        }
4282                        GeneratedField::RequestId => {
4283                            if request_id__.is_some() {
4284                                return Err(serde::de::Error::duplicate_field("requestId"));
4285                            }
4286                            request_id__ = Some(map_.next_value()?);
4287                        }
4288                        GeneratedField::__SkipField__ => {
4289                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4290                        }
4291                    }
4292                }
4293                Ok(CreateNatGatewayRequest {
4294                    parent: parent__.unwrap_or_default(),
4295                    nat_gateway: nat_gateway__,
4296                    request_id: request_id__.unwrap_or_default(),
4297                })
4298            }
4299        }
4300        deserializer
4301            .deserialize_struct(
4302                "origincloud.network.v1beta1.CreateNatGatewayRequest",
4303                FIELDS,
4304                GeneratedVisitor,
4305            )
4306    }
4307}
4308impl serde::Serialize for CreateNetworkInterfaceRequest {
4309    #[allow(deprecated)]
4310    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4311    where
4312        S: serde::Serializer,
4313    {
4314        use serde::ser::SerializeStruct;
4315        let mut len = 0;
4316        if !self.parent.is_empty() {
4317            len += 1;
4318        }
4319        if self.network_interface.is_some() {
4320            len += 1;
4321        }
4322        if !self.request_id.is_empty() {
4323            len += 1;
4324        }
4325        let mut struct_ser = serializer
4326            .serialize_struct(
4327                "origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4328                len,
4329            )?;
4330        if !self.parent.is_empty() {
4331            struct_ser.serialize_field("parent", &self.parent)?;
4332        }
4333        if let Some(v) = self.network_interface.as_ref() {
4334            struct_ser.serialize_field("networkInterface", v)?;
4335        }
4336        if !self.request_id.is_empty() {
4337            struct_ser.serialize_field("requestId", &self.request_id)?;
4338        }
4339        struct_ser.end()
4340    }
4341}
4342impl<'de> serde::Deserialize<'de> for CreateNetworkInterfaceRequest {
4343    #[allow(deprecated)]
4344    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4345    where
4346        D: serde::Deserializer<'de>,
4347    {
4348        const FIELDS: &[&str] = &[
4349            "parent",
4350            "network_interface",
4351            "networkInterface",
4352            "request_id",
4353            "requestId",
4354        ];
4355        #[allow(clippy::enum_variant_names)]
4356        enum GeneratedField {
4357            Parent,
4358            NetworkInterface,
4359            RequestId,
4360            __SkipField__,
4361        }
4362        impl<'de> serde::Deserialize<'de> for GeneratedField {
4363            fn deserialize<D>(
4364                deserializer: D,
4365            ) -> std::result::Result<GeneratedField, D::Error>
4366            where
4367                D: serde::Deserializer<'de>,
4368            {
4369                struct GeneratedVisitor;
4370                impl serde::de::Visitor<'_> for GeneratedVisitor {
4371                    type Value = GeneratedField;
4372                    fn expecting(
4373                        &self,
4374                        formatter: &mut std::fmt::Formatter<'_>,
4375                    ) -> std::fmt::Result {
4376                        write!(formatter, "expected one of: {:?}", & FIELDS)
4377                    }
4378                    #[allow(unused_variables)]
4379                    fn visit_str<E>(
4380                        self,
4381                        value: &str,
4382                    ) -> std::result::Result<GeneratedField, E>
4383                    where
4384                        E: serde::de::Error,
4385                    {
4386                        match value {
4387                            "parent" => Ok(GeneratedField::Parent),
4388                            "networkInterface" | "network_interface" => {
4389                                Ok(GeneratedField::NetworkInterface)
4390                            }
4391                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4392                            _ => Ok(GeneratedField::__SkipField__),
4393                        }
4394                    }
4395                }
4396                deserializer.deserialize_identifier(GeneratedVisitor)
4397            }
4398        }
4399        struct GeneratedVisitor;
4400        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4401            type Value = CreateNetworkInterfaceRequest;
4402            fn expecting(
4403                &self,
4404                formatter: &mut std::fmt::Formatter<'_>,
4405            ) -> std::fmt::Result {
4406                formatter
4407                    .write_str(
4408                        "struct origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4409                    )
4410            }
4411            fn visit_map<V>(
4412                self,
4413                mut map_: V,
4414            ) -> std::result::Result<CreateNetworkInterfaceRequest, V::Error>
4415            where
4416                V: serde::de::MapAccess<'de>,
4417            {
4418                let mut parent__ = None;
4419                let mut network_interface__ = None;
4420                let mut request_id__ = None;
4421                while let Some(k) = map_.next_key()? {
4422                    match k {
4423                        GeneratedField::Parent => {
4424                            if parent__.is_some() {
4425                                return Err(serde::de::Error::duplicate_field("parent"));
4426                            }
4427                            parent__ = Some(map_.next_value()?);
4428                        }
4429                        GeneratedField::NetworkInterface => {
4430                            if network_interface__.is_some() {
4431                                return Err(
4432                                    serde::de::Error::duplicate_field("networkInterface"),
4433                                );
4434                            }
4435                            network_interface__ = map_.next_value()?;
4436                        }
4437                        GeneratedField::RequestId => {
4438                            if request_id__.is_some() {
4439                                return Err(serde::de::Error::duplicate_field("requestId"));
4440                            }
4441                            request_id__ = Some(map_.next_value()?);
4442                        }
4443                        GeneratedField::__SkipField__ => {
4444                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4445                        }
4446                    }
4447                }
4448                Ok(CreateNetworkInterfaceRequest {
4449                    parent: parent__.unwrap_or_default(),
4450                    network_interface: network_interface__,
4451                    request_id: request_id__.unwrap_or_default(),
4452                })
4453            }
4454        }
4455        deserializer
4456            .deserialize_struct(
4457                "origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4458                FIELDS,
4459                GeneratedVisitor,
4460            )
4461    }
4462}
4463impl serde::Serialize for CreateRouteRequest {
4464    #[allow(deprecated)]
4465    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4466    where
4467        S: serde::Serializer,
4468    {
4469        use serde::ser::SerializeStruct;
4470        let mut len = 0;
4471        if !self.parent.is_empty() {
4472            len += 1;
4473        }
4474        if self.route.is_some() {
4475            len += 1;
4476        }
4477        if !self.request_id.is_empty() {
4478            len += 1;
4479        }
4480        let mut struct_ser = serializer
4481            .serialize_struct("origincloud.network.v1beta1.CreateRouteRequest", len)?;
4482        if !self.parent.is_empty() {
4483            struct_ser.serialize_field("parent", &self.parent)?;
4484        }
4485        if let Some(v) = self.route.as_ref() {
4486            struct_ser.serialize_field("route", v)?;
4487        }
4488        if !self.request_id.is_empty() {
4489            struct_ser.serialize_field("requestId", &self.request_id)?;
4490        }
4491        struct_ser.end()
4492    }
4493}
4494impl<'de> serde::Deserialize<'de> for CreateRouteRequest {
4495    #[allow(deprecated)]
4496    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4497    where
4498        D: serde::Deserializer<'de>,
4499    {
4500        const FIELDS: &[&str] = &["parent", "route", "request_id", "requestId"];
4501        #[allow(clippy::enum_variant_names)]
4502        enum GeneratedField {
4503            Parent,
4504            Route,
4505            RequestId,
4506            __SkipField__,
4507        }
4508        impl<'de> serde::Deserialize<'de> for GeneratedField {
4509            fn deserialize<D>(
4510                deserializer: D,
4511            ) -> std::result::Result<GeneratedField, D::Error>
4512            where
4513                D: serde::Deserializer<'de>,
4514            {
4515                struct GeneratedVisitor;
4516                impl serde::de::Visitor<'_> for GeneratedVisitor {
4517                    type Value = GeneratedField;
4518                    fn expecting(
4519                        &self,
4520                        formatter: &mut std::fmt::Formatter<'_>,
4521                    ) -> std::fmt::Result {
4522                        write!(formatter, "expected one of: {:?}", & FIELDS)
4523                    }
4524                    #[allow(unused_variables)]
4525                    fn visit_str<E>(
4526                        self,
4527                        value: &str,
4528                    ) -> std::result::Result<GeneratedField, E>
4529                    where
4530                        E: serde::de::Error,
4531                    {
4532                        match value {
4533                            "parent" => Ok(GeneratedField::Parent),
4534                            "route" => Ok(GeneratedField::Route),
4535                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4536                            _ => Ok(GeneratedField::__SkipField__),
4537                        }
4538                    }
4539                }
4540                deserializer.deserialize_identifier(GeneratedVisitor)
4541            }
4542        }
4543        struct GeneratedVisitor;
4544        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4545            type Value = CreateRouteRequest;
4546            fn expecting(
4547                &self,
4548                formatter: &mut std::fmt::Formatter<'_>,
4549            ) -> std::fmt::Result {
4550                formatter
4551                    .write_str("struct origincloud.network.v1beta1.CreateRouteRequest")
4552            }
4553            fn visit_map<V>(
4554                self,
4555                mut map_: V,
4556            ) -> std::result::Result<CreateRouteRequest, V::Error>
4557            where
4558                V: serde::de::MapAccess<'de>,
4559            {
4560                let mut parent__ = None;
4561                let mut route__ = None;
4562                let mut request_id__ = None;
4563                while let Some(k) = map_.next_key()? {
4564                    match k {
4565                        GeneratedField::Parent => {
4566                            if parent__.is_some() {
4567                                return Err(serde::de::Error::duplicate_field("parent"));
4568                            }
4569                            parent__ = Some(map_.next_value()?);
4570                        }
4571                        GeneratedField::Route => {
4572                            if route__.is_some() {
4573                                return Err(serde::de::Error::duplicate_field("route"));
4574                            }
4575                            route__ = map_.next_value()?;
4576                        }
4577                        GeneratedField::RequestId => {
4578                            if request_id__.is_some() {
4579                                return Err(serde::de::Error::duplicate_field("requestId"));
4580                            }
4581                            request_id__ = Some(map_.next_value()?);
4582                        }
4583                        GeneratedField::__SkipField__ => {
4584                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4585                        }
4586                    }
4587                }
4588                Ok(CreateRouteRequest {
4589                    parent: parent__.unwrap_or_default(),
4590                    route: route__,
4591                    request_id: request_id__.unwrap_or_default(),
4592                })
4593            }
4594        }
4595        deserializer
4596            .deserialize_struct(
4597                "origincloud.network.v1beta1.CreateRouteRequest",
4598                FIELDS,
4599                GeneratedVisitor,
4600            )
4601    }
4602}
4603impl serde::Serialize for CreateRouteTableAssociationRequest {
4604    #[allow(deprecated)]
4605    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4606    where
4607        S: serde::Serializer,
4608    {
4609        use serde::ser::SerializeStruct;
4610        let mut len = 0;
4611        if !self.parent.is_empty() {
4612            len += 1;
4613        }
4614        if self.route_table_association.is_some() {
4615            len += 1;
4616        }
4617        if !self.request_id.is_empty() {
4618            len += 1;
4619        }
4620        let mut struct_ser = serializer
4621            .serialize_struct(
4622                "origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4623                len,
4624            )?;
4625        if !self.parent.is_empty() {
4626            struct_ser.serialize_field("parent", &self.parent)?;
4627        }
4628        if let Some(v) = self.route_table_association.as_ref() {
4629            struct_ser.serialize_field("routeTableAssociation", v)?;
4630        }
4631        if !self.request_id.is_empty() {
4632            struct_ser.serialize_field("requestId", &self.request_id)?;
4633        }
4634        struct_ser.end()
4635    }
4636}
4637impl<'de> serde::Deserialize<'de> for CreateRouteTableAssociationRequest {
4638    #[allow(deprecated)]
4639    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4640    where
4641        D: serde::Deserializer<'de>,
4642    {
4643        const FIELDS: &[&str] = &[
4644            "parent",
4645            "route_table_association",
4646            "routeTableAssociation",
4647            "request_id",
4648            "requestId",
4649        ];
4650        #[allow(clippy::enum_variant_names)]
4651        enum GeneratedField {
4652            Parent,
4653            RouteTableAssociation,
4654            RequestId,
4655            __SkipField__,
4656        }
4657        impl<'de> serde::Deserialize<'de> for GeneratedField {
4658            fn deserialize<D>(
4659                deserializer: D,
4660            ) -> std::result::Result<GeneratedField, D::Error>
4661            where
4662                D: serde::Deserializer<'de>,
4663            {
4664                struct GeneratedVisitor;
4665                impl serde::de::Visitor<'_> for GeneratedVisitor {
4666                    type Value = GeneratedField;
4667                    fn expecting(
4668                        &self,
4669                        formatter: &mut std::fmt::Formatter<'_>,
4670                    ) -> std::fmt::Result {
4671                        write!(formatter, "expected one of: {:?}", & FIELDS)
4672                    }
4673                    #[allow(unused_variables)]
4674                    fn visit_str<E>(
4675                        self,
4676                        value: &str,
4677                    ) -> std::result::Result<GeneratedField, E>
4678                    where
4679                        E: serde::de::Error,
4680                    {
4681                        match value {
4682                            "parent" => Ok(GeneratedField::Parent),
4683                            "routeTableAssociation" | "route_table_association" => {
4684                                Ok(GeneratedField::RouteTableAssociation)
4685                            }
4686                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4687                            _ => Ok(GeneratedField::__SkipField__),
4688                        }
4689                    }
4690                }
4691                deserializer.deserialize_identifier(GeneratedVisitor)
4692            }
4693        }
4694        struct GeneratedVisitor;
4695        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4696            type Value = CreateRouteTableAssociationRequest;
4697            fn expecting(
4698                &self,
4699                formatter: &mut std::fmt::Formatter<'_>,
4700            ) -> std::fmt::Result {
4701                formatter
4702                    .write_str(
4703                        "struct origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4704                    )
4705            }
4706            fn visit_map<V>(
4707                self,
4708                mut map_: V,
4709            ) -> std::result::Result<CreateRouteTableAssociationRequest, V::Error>
4710            where
4711                V: serde::de::MapAccess<'de>,
4712            {
4713                let mut parent__ = None;
4714                let mut route_table_association__ = None;
4715                let mut request_id__ = None;
4716                while let Some(k) = map_.next_key()? {
4717                    match k {
4718                        GeneratedField::Parent => {
4719                            if parent__.is_some() {
4720                                return Err(serde::de::Error::duplicate_field("parent"));
4721                            }
4722                            parent__ = Some(map_.next_value()?);
4723                        }
4724                        GeneratedField::RouteTableAssociation => {
4725                            if route_table_association__.is_some() {
4726                                return Err(
4727                                    serde::de::Error::duplicate_field("routeTableAssociation"),
4728                                );
4729                            }
4730                            route_table_association__ = map_.next_value()?;
4731                        }
4732                        GeneratedField::RequestId => {
4733                            if request_id__.is_some() {
4734                                return Err(serde::de::Error::duplicate_field("requestId"));
4735                            }
4736                            request_id__ = Some(map_.next_value()?);
4737                        }
4738                        GeneratedField::__SkipField__ => {
4739                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4740                        }
4741                    }
4742                }
4743                Ok(CreateRouteTableAssociationRequest {
4744                    parent: parent__.unwrap_or_default(),
4745                    route_table_association: route_table_association__,
4746                    request_id: request_id__.unwrap_or_default(),
4747                })
4748            }
4749        }
4750        deserializer
4751            .deserialize_struct(
4752                "origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4753                FIELDS,
4754                GeneratedVisitor,
4755            )
4756    }
4757}
4758impl serde::Serialize for CreateRouteTableRequest {
4759    #[allow(deprecated)]
4760    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4761    where
4762        S: serde::Serializer,
4763    {
4764        use serde::ser::SerializeStruct;
4765        let mut len = 0;
4766        if !self.parent.is_empty() {
4767            len += 1;
4768        }
4769        if self.route_table.is_some() {
4770            len += 1;
4771        }
4772        if !self.request_id.is_empty() {
4773            len += 1;
4774        }
4775        let mut struct_ser = serializer
4776            .serialize_struct(
4777                "origincloud.network.v1beta1.CreateRouteTableRequest",
4778                len,
4779            )?;
4780        if !self.parent.is_empty() {
4781            struct_ser.serialize_field("parent", &self.parent)?;
4782        }
4783        if let Some(v) = self.route_table.as_ref() {
4784            struct_ser.serialize_field("routeTable", v)?;
4785        }
4786        if !self.request_id.is_empty() {
4787            struct_ser.serialize_field("requestId", &self.request_id)?;
4788        }
4789        struct_ser.end()
4790    }
4791}
4792impl<'de> serde::Deserialize<'de> for CreateRouteTableRequest {
4793    #[allow(deprecated)]
4794    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4795    where
4796        D: serde::Deserializer<'de>,
4797    {
4798        const FIELDS: &[&str] = &[
4799            "parent",
4800            "route_table",
4801            "routeTable",
4802            "request_id",
4803            "requestId",
4804        ];
4805        #[allow(clippy::enum_variant_names)]
4806        enum GeneratedField {
4807            Parent,
4808            RouteTable,
4809            RequestId,
4810            __SkipField__,
4811        }
4812        impl<'de> serde::Deserialize<'de> for GeneratedField {
4813            fn deserialize<D>(
4814                deserializer: D,
4815            ) -> std::result::Result<GeneratedField, D::Error>
4816            where
4817                D: serde::Deserializer<'de>,
4818            {
4819                struct GeneratedVisitor;
4820                impl serde::de::Visitor<'_> for GeneratedVisitor {
4821                    type Value = GeneratedField;
4822                    fn expecting(
4823                        &self,
4824                        formatter: &mut std::fmt::Formatter<'_>,
4825                    ) -> std::fmt::Result {
4826                        write!(formatter, "expected one of: {:?}", & FIELDS)
4827                    }
4828                    #[allow(unused_variables)]
4829                    fn visit_str<E>(
4830                        self,
4831                        value: &str,
4832                    ) -> std::result::Result<GeneratedField, E>
4833                    where
4834                        E: serde::de::Error,
4835                    {
4836                        match value {
4837                            "parent" => Ok(GeneratedField::Parent),
4838                            "routeTable" | "route_table" => {
4839                                Ok(GeneratedField::RouteTable)
4840                            }
4841                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4842                            _ => Ok(GeneratedField::__SkipField__),
4843                        }
4844                    }
4845                }
4846                deserializer.deserialize_identifier(GeneratedVisitor)
4847            }
4848        }
4849        struct GeneratedVisitor;
4850        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4851            type Value = CreateRouteTableRequest;
4852            fn expecting(
4853                &self,
4854                formatter: &mut std::fmt::Formatter<'_>,
4855            ) -> std::fmt::Result {
4856                formatter
4857                    .write_str(
4858                        "struct origincloud.network.v1beta1.CreateRouteTableRequest",
4859                    )
4860            }
4861            fn visit_map<V>(
4862                self,
4863                mut map_: V,
4864            ) -> std::result::Result<CreateRouteTableRequest, V::Error>
4865            where
4866                V: serde::de::MapAccess<'de>,
4867            {
4868                let mut parent__ = None;
4869                let mut route_table__ = None;
4870                let mut request_id__ = None;
4871                while let Some(k) = map_.next_key()? {
4872                    match k {
4873                        GeneratedField::Parent => {
4874                            if parent__.is_some() {
4875                                return Err(serde::de::Error::duplicate_field("parent"));
4876                            }
4877                            parent__ = Some(map_.next_value()?);
4878                        }
4879                        GeneratedField::RouteTable => {
4880                            if route_table__.is_some() {
4881                                return Err(serde::de::Error::duplicate_field("routeTable"));
4882                            }
4883                            route_table__ = map_.next_value()?;
4884                        }
4885                        GeneratedField::RequestId => {
4886                            if request_id__.is_some() {
4887                                return Err(serde::de::Error::duplicate_field("requestId"));
4888                            }
4889                            request_id__ = Some(map_.next_value()?);
4890                        }
4891                        GeneratedField::__SkipField__ => {
4892                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4893                        }
4894                    }
4895                }
4896                Ok(CreateRouteTableRequest {
4897                    parent: parent__.unwrap_or_default(),
4898                    route_table: route_table__,
4899                    request_id: request_id__.unwrap_or_default(),
4900                })
4901            }
4902        }
4903        deserializer
4904            .deserialize_struct(
4905                "origincloud.network.v1beta1.CreateRouteTableRequest",
4906                FIELDS,
4907                GeneratedVisitor,
4908            )
4909    }
4910}
4911impl serde::Serialize for CreateSecurityGroupAssociationRequest {
4912    #[allow(deprecated)]
4913    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4914    where
4915        S: serde::Serializer,
4916    {
4917        use serde::ser::SerializeStruct;
4918        let mut len = 0;
4919        if !self.parent.is_empty() {
4920            len += 1;
4921        }
4922        if self.security_group_association.is_some() {
4923            len += 1;
4924        }
4925        if !self.request_id.is_empty() {
4926            len += 1;
4927        }
4928        let mut struct_ser = serializer
4929            .serialize_struct(
4930                "origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
4931                len,
4932            )?;
4933        if !self.parent.is_empty() {
4934            struct_ser.serialize_field("parent", &self.parent)?;
4935        }
4936        if let Some(v) = self.security_group_association.as_ref() {
4937            struct_ser.serialize_field("securityGroupAssociation", v)?;
4938        }
4939        if !self.request_id.is_empty() {
4940            struct_ser.serialize_field("requestId", &self.request_id)?;
4941        }
4942        struct_ser.end()
4943    }
4944}
4945impl<'de> serde::Deserialize<'de> for CreateSecurityGroupAssociationRequest {
4946    #[allow(deprecated)]
4947    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4948    where
4949        D: serde::Deserializer<'de>,
4950    {
4951        const FIELDS: &[&str] = &[
4952            "parent",
4953            "security_group_association",
4954            "securityGroupAssociation",
4955            "request_id",
4956            "requestId",
4957        ];
4958        #[allow(clippy::enum_variant_names)]
4959        enum GeneratedField {
4960            Parent,
4961            SecurityGroupAssociation,
4962            RequestId,
4963            __SkipField__,
4964        }
4965        impl<'de> serde::Deserialize<'de> for GeneratedField {
4966            fn deserialize<D>(
4967                deserializer: D,
4968            ) -> std::result::Result<GeneratedField, D::Error>
4969            where
4970                D: serde::Deserializer<'de>,
4971            {
4972                struct GeneratedVisitor;
4973                impl serde::de::Visitor<'_> for GeneratedVisitor {
4974                    type Value = GeneratedField;
4975                    fn expecting(
4976                        &self,
4977                        formatter: &mut std::fmt::Formatter<'_>,
4978                    ) -> std::fmt::Result {
4979                        write!(formatter, "expected one of: {:?}", & FIELDS)
4980                    }
4981                    #[allow(unused_variables)]
4982                    fn visit_str<E>(
4983                        self,
4984                        value: &str,
4985                    ) -> std::result::Result<GeneratedField, E>
4986                    where
4987                        E: serde::de::Error,
4988                    {
4989                        match value {
4990                            "parent" => Ok(GeneratedField::Parent),
4991                            "securityGroupAssociation" | "security_group_association" => {
4992                                Ok(GeneratedField::SecurityGroupAssociation)
4993                            }
4994                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4995                            _ => Ok(GeneratedField::__SkipField__),
4996                        }
4997                    }
4998                }
4999                deserializer.deserialize_identifier(GeneratedVisitor)
5000            }
5001        }
5002        struct GeneratedVisitor;
5003        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5004            type Value = CreateSecurityGroupAssociationRequest;
5005            fn expecting(
5006                &self,
5007                formatter: &mut std::fmt::Formatter<'_>,
5008            ) -> std::fmt::Result {
5009                formatter
5010                    .write_str(
5011                        "struct origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
5012                    )
5013            }
5014            fn visit_map<V>(
5015                self,
5016                mut map_: V,
5017            ) -> std::result::Result<CreateSecurityGroupAssociationRequest, V::Error>
5018            where
5019                V: serde::de::MapAccess<'de>,
5020            {
5021                let mut parent__ = None;
5022                let mut security_group_association__ = None;
5023                let mut request_id__ = None;
5024                while let Some(k) = map_.next_key()? {
5025                    match k {
5026                        GeneratedField::Parent => {
5027                            if parent__.is_some() {
5028                                return Err(serde::de::Error::duplicate_field("parent"));
5029                            }
5030                            parent__ = Some(map_.next_value()?);
5031                        }
5032                        GeneratedField::SecurityGroupAssociation => {
5033                            if security_group_association__.is_some() {
5034                                return Err(
5035                                    serde::de::Error::duplicate_field(
5036                                        "securityGroupAssociation",
5037                                    ),
5038                                );
5039                            }
5040                            security_group_association__ = map_.next_value()?;
5041                        }
5042                        GeneratedField::RequestId => {
5043                            if request_id__.is_some() {
5044                                return Err(serde::de::Error::duplicate_field("requestId"));
5045                            }
5046                            request_id__ = Some(map_.next_value()?);
5047                        }
5048                        GeneratedField::__SkipField__ => {
5049                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5050                        }
5051                    }
5052                }
5053                Ok(CreateSecurityGroupAssociationRequest {
5054                    parent: parent__.unwrap_or_default(),
5055                    security_group_association: security_group_association__,
5056                    request_id: request_id__.unwrap_or_default(),
5057                })
5058            }
5059        }
5060        deserializer
5061            .deserialize_struct(
5062                "origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
5063                FIELDS,
5064                GeneratedVisitor,
5065            )
5066    }
5067}
5068impl serde::Serialize for CreateSecurityGroupRequest {
5069    #[allow(deprecated)]
5070    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5071    where
5072        S: serde::Serializer,
5073    {
5074        use serde::ser::SerializeStruct;
5075        let mut len = 0;
5076        if !self.parent.is_empty() {
5077            len += 1;
5078        }
5079        if self.security_group.is_some() {
5080            len += 1;
5081        }
5082        if !self.request_id.is_empty() {
5083            len += 1;
5084        }
5085        let mut struct_ser = serializer
5086            .serialize_struct(
5087                "origincloud.network.v1beta1.CreateSecurityGroupRequest",
5088                len,
5089            )?;
5090        if !self.parent.is_empty() {
5091            struct_ser.serialize_field("parent", &self.parent)?;
5092        }
5093        if let Some(v) = self.security_group.as_ref() {
5094            struct_ser.serialize_field("securityGroup", v)?;
5095        }
5096        if !self.request_id.is_empty() {
5097            struct_ser.serialize_field("requestId", &self.request_id)?;
5098        }
5099        struct_ser.end()
5100    }
5101}
5102impl<'de> serde::Deserialize<'de> for CreateSecurityGroupRequest {
5103    #[allow(deprecated)]
5104    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5105    where
5106        D: serde::Deserializer<'de>,
5107    {
5108        const FIELDS: &[&str] = &[
5109            "parent",
5110            "security_group",
5111            "securityGroup",
5112            "request_id",
5113            "requestId",
5114        ];
5115        #[allow(clippy::enum_variant_names)]
5116        enum GeneratedField {
5117            Parent,
5118            SecurityGroup,
5119            RequestId,
5120            __SkipField__,
5121        }
5122        impl<'de> serde::Deserialize<'de> for GeneratedField {
5123            fn deserialize<D>(
5124                deserializer: D,
5125            ) -> std::result::Result<GeneratedField, D::Error>
5126            where
5127                D: serde::Deserializer<'de>,
5128            {
5129                struct GeneratedVisitor;
5130                impl serde::de::Visitor<'_> for GeneratedVisitor {
5131                    type Value = GeneratedField;
5132                    fn expecting(
5133                        &self,
5134                        formatter: &mut std::fmt::Formatter<'_>,
5135                    ) -> std::fmt::Result {
5136                        write!(formatter, "expected one of: {:?}", & FIELDS)
5137                    }
5138                    #[allow(unused_variables)]
5139                    fn visit_str<E>(
5140                        self,
5141                        value: &str,
5142                    ) -> std::result::Result<GeneratedField, E>
5143                    where
5144                        E: serde::de::Error,
5145                    {
5146                        match value {
5147                            "parent" => Ok(GeneratedField::Parent),
5148                            "securityGroup" | "security_group" => {
5149                                Ok(GeneratedField::SecurityGroup)
5150                            }
5151                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5152                            _ => Ok(GeneratedField::__SkipField__),
5153                        }
5154                    }
5155                }
5156                deserializer.deserialize_identifier(GeneratedVisitor)
5157            }
5158        }
5159        struct GeneratedVisitor;
5160        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5161            type Value = CreateSecurityGroupRequest;
5162            fn expecting(
5163                &self,
5164                formatter: &mut std::fmt::Formatter<'_>,
5165            ) -> std::fmt::Result {
5166                formatter
5167                    .write_str(
5168                        "struct origincloud.network.v1beta1.CreateSecurityGroupRequest",
5169                    )
5170            }
5171            fn visit_map<V>(
5172                self,
5173                mut map_: V,
5174            ) -> std::result::Result<CreateSecurityGroupRequest, V::Error>
5175            where
5176                V: serde::de::MapAccess<'de>,
5177            {
5178                let mut parent__ = None;
5179                let mut security_group__ = None;
5180                let mut request_id__ = None;
5181                while let Some(k) = map_.next_key()? {
5182                    match k {
5183                        GeneratedField::Parent => {
5184                            if parent__.is_some() {
5185                                return Err(serde::de::Error::duplicate_field("parent"));
5186                            }
5187                            parent__ = Some(map_.next_value()?);
5188                        }
5189                        GeneratedField::SecurityGroup => {
5190                            if security_group__.is_some() {
5191                                return Err(
5192                                    serde::de::Error::duplicate_field("securityGroup"),
5193                                );
5194                            }
5195                            security_group__ = map_.next_value()?;
5196                        }
5197                        GeneratedField::RequestId => {
5198                            if request_id__.is_some() {
5199                                return Err(serde::de::Error::duplicate_field("requestId"));
5200                            }
5201                            request_id__ = Some(map_.next_value()?);
5202                        }
5203                        GeneratedField::__SkipField__ => {
5204                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5205                        }
5206                    }
5207                }
5208                Ok(CreateSecurityGroupRequest {
5209                    parent: parent__.unwrap_or_default(),
5210                    security_group: security_group__,
5211                    request_id: request_id__.unwrap_or_default(),
5212                })
5213            }
5214        }
5215        deserializer
5216            .deserialize_struct(
5217                "origincloud.network.v1beta1.CreateSecurityGroupRequest",
5218                FIELDS,
5219                GeneratedVisitor,
5220            )
5221    }
5222}
5223impl serde::Serialize for CreateSecurityGroupRuleRequest {
5224    #[allow(deprecated)]
5225    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5226    where
5227        S: serde::Serializer,
5228    {
5229        use serde::ser::SerializeStruct;
5230        let mut len = 0;
5231        if !self.parent.is_empty() {
5232            len += 1;
5233        }
5234        if self.security_group_rule.is_some() {
5235            len += 1;
5236        }
5237        if !self.request_id.is_empty() {
5238            len += 1;
5239        }
5240        let mut struct_ser = serializer
5241            .serialize_struct(
5242                "origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5243                len,
5244            )?;
5245        if !self.parent.is_empty() {
5246            struct_ser.serialize_field("parent", &self.parent)?;
5247        }
5248        if let Some(v) = self.security_group_rule.as_ref() {
5249            struct_ser.serialize_field("securityGroupRule", v)?;
5250        }
5251        if !self.request_id.is_empty() {
5252            struct_ser.serialize_field("requestId", &self.request_id)?;
5253        }
5254        struct_ser.end()
5255    }
5256}
5257impl<'de> serde::Deserialize<'de> for CreateSecurityGroupRuleRequest {
5258    #[allow(deprecated)]
5259    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5260    where
5261        D: serde::Deserializer<'de>,
5262    {
5263        const FIELDS: &[&str] = &[
5264            "parent",
5265            "security_group_rule",
5266            "securityGroupRule",
5267            "request_id",
5268            "requestId",
5269        ];
5270        #[allow(clippy::enum_variant_names)]
5271        enum GeneratedField {
5272            Parent,
5273            SecurityGroupRule,
5274            RequestId,
5275            __SkipField__,
5276        }
5277        impl<'de> serde::Deserialize<'de> for GeneratedField {
5278            fn deserialize<D>(
5279                deserializer: D,
5280            ) -> std::result::Result<GeneratedField, D::Error>
5281            where
5282                D: serde::Deserializer<'de>,
5283            {
5284                struct GeneratedVisitor;
5285                impl serde::de::Visitor<'_> for GeneratedVisitor {
5286                    type Value = GeneratedField;
5287                    fn expecting(
5288                        &self,
5289                        formatter: &mut std::fmt::Formatter<'_>,
5290                    ) -> std::fmt::Result {
5291                        write!(formatter, "expected one of: {:?}", & FIELDS)
5292                    }
5293                    #[allow(unused_variables)]
5294                    fn visit_str<E>(
5295                        self,
5296                        value: &str,
5297                    ) -> std::result::Result<GeneratedField, E>
5298                    where
5299                        E: serde::de::Error,
5300                    {
5301                        match value {
5302                            "parent" => Ok(GeneratedField::Parent),
5303                            "securityGroupRule" | "security_group_rule" => {
5304                                Ok(GeneratedField::SecurityGroupRule)
5305                            }
5306                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5307                            _ => Ok(GeneratedField::__SkipField__),
5308                        }
5309                    }
5310                }
5311                deserializer.deserialize_identifier(GeneratedVisitor)
5312            }
5313        }
5314        struct GeneratedVisitor;
5315        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5316            type Value = CreateSecurityGroupRuleRequest;
5317            fn expecting(
5318                &self,
5319                formatter: &mut std::fmt::Formatter<'_>,
5320            ) -> std::fmt::Result {
5321                formatter
5322                    .write_str(
5323                        "struct origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5324                    )
5325            }
5326            fn visit_map<V>(
5327                self,
5328                mut map_: V,
5329            ) -> std::result::Result<CreateSecurityGroupRuleRequest, V::Error>
5330            where
5331                V: serde::de::MapAccess<'de>,
5332            {
5333                let mut parent__ = None;
5334                let mut security_group_rule__ = None;
5335                let mut request_id__ = None;
5336                while let Some(k) = map_.next_key()? {
5337                    match k {
5338                        GeneratedField::Parent => {
5339                            if parent__.is_some() {
5340                                return Err(serde::de::Error::duplicate_field("parent"));
5341                            }
5342                            parent__ = Some(map_.next_value()?);
5343                        }
5344                        GeneratedField::SecurityGroupRule => {
5345                            if security_group_rule__.is_some() {
5346                                return Err(
5347                                    serde::de::Error::duplicate_field("securityGroupRule"),
5348                                );
5349                            }
5350                            security_group_rule__ = map_.next_value()?;
5351                        }
5352                        GeneratedField::RequestId => {
5353                            if request_id__.is_some() {
5354                                return Err(serde::de::Error::duplicate_field("requestId"));
5355                            }
5356                            request_id__ = Some(map_.next_value()?);
5357                        }
5358                        GeneratedField::__SkipField__ => {
5359                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5360                        }
5361                    }
5362                }
5363                Ok(CreateSecurityGroupRuleRequest {
5364                    parent: parent__.unwrap_or_default(),
5365                    security_group_rule: security_group_rule__,
5366                    request_id: request_id__.unwrap_or_default(),
5367                })
5368            }
5369        }
5370        deserializer
5371            .deserialize_struct(
5372                "origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5373                FIELDS,
5374                GeneratedVisitor,
5375            )
5376    }
5377}
5378impl serde::Serialize for CreateSubnetRequest {
5379    #[allow(deprecated)]
5380    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5381    where
5382        S: serde::Serializer,
5383    {
5384        use serde::ser::SerializeStruct;
5385        let mut len = 0;
5386        if !self.parent.is_empty() {
5387            len += 1;
5388        }
5389        if self.subnet.is_some() {
5390            len += 1;
5391        }
5392        if !self.request_id.is_empty() {
5393            len += 1;
5394        }
5395        let mut struct_ser = serializer
5396            .serialize_struct("origincloud.network.v1beta1.CreateSubnetRequest", len)?;
5397        if !self.parent.is_empty() {
5398            struct_ser.serialize_field("parent", &self.parent)?;
5399        }
5400        if let Some(v) = self.subnet.as_ref() {
5401            struct_ser.serialize_field("subnet", v)?;
5402        }
5403        if !self.request_id.is_empty() {
5404            struct_ser.serialize_field("requestId", &self.request_id)?;
5405        }
5406        struct_ser.end()
5407    }
5408}
5409impl<'de> serde::Deserialize<'de> for CreateSubnetRequest {
5410    #[allow(deprecated)]
5411    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5412    where
5413        D: serde::Deserializer<'de>,
5414    {
5415        const FIELDS: &[&str] = &["parent", "subnet", "request_id", "requestId"];
5416        #[allow(clippy::enum_variant_names)]
5417        enum GeneratedField {
5418            Parent,
5419            Subnet,
5420            RequestId,
5421            __SkipField__,
5422        }
5423        impl<'de> serde::Deserialize<'de> for GeneratedField {
5424            fn deserialize<D>(
5425                deserializer: D,
5426            ) -> std::result::Result<GeneratedField, D::Error>
5427            where
5428                D: serde::Deserializer<'de>,
5429            {
5430                struct GeneratedVisitor;
5431                impl serde::de::Visitor<'_> for GeneratedVisitor {
5432                    type Value = GeneratedField;
5433                    fn expecting(
5434                        &self,
5435                        formatter: &mut std::fmt::Formatter<'_>,
5436                    ) -> std::fmt::Result {
5437                        write!(formatter, "expected one of: {:?}", & FIELDS)
5438                    }
5439                    #[allow(unused_variables)]
5440                    fn visit_str<E>(
5441                        self,
5442                        value: &str,
5443                    ) -> std::result::Result<GeneratedField, E>
5444                    where
5445                        E: serde::de::Error,
5446                    {
5447                        match value {
5448                            "parent" => Ok(GeneratedField::Parent),
5449                            "subnet" => Ok(GeneratedField::Subnet),
5450                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5451                            _ => Ok(GeneratedField::__SkipField__),
5452                        }
5453                    }
5454                }
5455                deserializer.deserialize_identifier(GeneratedVisitor)
5456            }
5457        }
5458        struct GeneratedVisitor;
5459        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5460            type Value = CreateSubnetRequest;
5461            fn expecting(
5462                &self,
5463                formatter: &mut std::fmt::Formatter<'_>,
5464            ) -> std::fmt::Result {
5465                formatter
5466                    .write_str("struct origincloud.network.v1beta1.CreateSubnetRequest")
5467            }
5468            fn visit_map<V>(
5469                self,
5470                mut map_: V,
5471            ) -> std::result::Result<CreateSubnetRequest, V::Error>
5472            where
5473                V: serde::de::MapAccess<'de>,
5474            {
5475                let mut parent__ = None;
5476                let mut subnet__ = None;
5477                let mut request_id__ = None;
5478                while let Some(k) = map_.next_key()? {
5479                    match k {
5480                        GeneratedField::Parent => {
5481                            if parent__.is_some() {
5482                                return Err(serde::de::Error::duplicate_field("parent"));
5483                            }
5484                            parent__ = Some(map_.next_value()?);
5485                        }
5486                        GeneratedField::Subnet => {
5487                            if subnet__.is_some() {
5488                                return Err(serde::de::Error::duplicate_field("subnet"));
5489                            }
5490                            subnet__ = map_.next_value()?;
5491                        }
5492                        GeneratedField::RequestId => {
5493                            if request_id__.is_some() {
5494                                return Err(serde::de::Error::duplicate_field("requestId"));
5495                            }
5496                            request_id__ = Some(map_.next_value()?);
5497                        }
5498                        GeneratedField::__SkipField__ => {
5499                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5500                        }
5501                    }
5502                }
5503                Ok(CreateSubnetRequest {
5504                    parent: parent__.unwrap_or_default(),
5505                    subnet: subnet__,
5506                    request_id: request_id__.unwrap_or_default(),
5507                })
5508            }
5509        }
5510        deserializer
5511            .deserialize_struct(
5512                "origincloud.network.v1beta1.CreateSubnetRequest",
5513                FIELDS,
5514                GeneratedVisitor,
5515            )
5516    }
5517}
5518impl serde::Serialize for CreateVpcRequest {
5519    #[allow(deprecated)]
5520    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5521    where
5522        S: serde::Serializer,
5523    {
5524        use serde::ser::SerializeStruct;
5525        let mut len = 0;
5526        if !self.parent.is_empty() {
5527            len += 1;
5528        }
5529        if self.vpc.is_some() {
5530            len += 1;
5531        }
5532        if !self.request_id.is_empty() {
5533            len += 1;
5534        }
5535        let mut struct_ser = serializer
5536            .serialize_struct("origincloud.network.v1beta1.CreateVpcRequest", len)?;
5537        if !self.parent.is_empty() {
5538            struct_ser.serialize_field("parent", &self.parent)?;
5539        }
5540        if let Some(v) = self.vpc.as_ref() {
5541            struct_ser.serialize_field("vpc", v)?;
5542        }
5543        if !self.request_id.is_empty() {
5544            struct_ser.serialize_field("requestId", &self.request_id)?;
5545        }
5546        struct_ser.end()
5547    }
5548}
5549impl<'de> serde::Deserialize<'de> for CreateVpcRequest {
5550    #[allow(deprecated)]
5551    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5552    where
5553        D: serde::Deserializer<'de>,
5554    {
5555        const FIELDS: &[&str] = &["parent", "vpc", "request_id", "requestId"];
5556        #[allow(clippy::enum_variant_names)]
5557        enum GeneratedField {
5558            Parent,
5559            Vpc,
5560            RequestId,
5561            __SkipField__,
5562        }
5563        impl<'de> serde::Deserialize<'de> for GeneratedField {
5564            fn deserialize<D>(
5565                deserializer: D,
5566            ) -> std::result::Result<GeneratedField, D::Error>
5567            where
5568                D: serde::Deserializer<'de>,
5569            {
5570                struct GeneratedVisitor;
5571                impl serde::de::Visitor<'_> for GeneratedVisitor {
5572                    type Value = GeneratedField;
5573                    fn expecting(
5574                        &self,
5575                        formatter: &mut std::fmt::Formatter<'_>,
5576                    ) -> std::fmt::Result {
5577                        write!(formatter, "expected one of: {:?}", & FIELDS)
5578                    }
5579                    #[allow(unused_variables)]
5580                    fn visit_str<E>(
5581                        self,
5582                        value: &str,
5583                    ) -> std::result::Result<GeneratedField, E>
5584                    where
5585                        E: serde::de::Error,
5586                    {
5587                        match value {
5588                            "parent" => Ok(GeneratedField::Parent),
5589                            "vpc" => Ok(GeneratedField::Vpc),
5590                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5591                            _ => Ok(GeneratedField::__SkipField__),
5592                        }
5593                    }
5594                }
5595                deserializer.deserialize_identifier(GeneratedVisitor)
5596            }
5597        }
5598        struct GeneratedVisitor;
5599        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5600            type Value = CreateVpcRequest;
5601            fn expecting(
5602                &self,
5603                formatter: &mut std::fmt::Formatter<'_>,
5604            ) -> std::fmt::Result {
5605                formatter
5606                    .write_str("struct origincloud.network.v1beta1.CreateVpcRequest")
5607            }
5608            fn visit_map<V>(
5609                self,
5610                mut map_: V,
5611            ) -> std::result::Result<CreateVpcRequest, V::Error>
5612            where
5613                V: serde::de::MapAccess<'de>,
5614            {
5615                let mut parent__ = None;
5616                let mut vpc__ = None;
5617                let mut request_id__ = None;
5618                while let Some(k) = map_.next_key()? {
5619                    match k {
5620                        GeneratedField::Parent => {
5621                            if parent__.is_some() {
5622                                return Err(serde::de::Error::duplicate_field("parent"));
5623                            }
5624                            parent__ = Some(map_.next_value()?);
5625                        }
5626                        GeneratedField::Vpc => {
5627                            if vpc__.is_some() {
5628                                return Err(serde::de::Error::duplicate_field("vpc"));
5629                            }
5630                            vpc__ = map_.next_value()?;
5631                        }
5632                        GeneratedField::RequestId => {
5633                            if request_id__.is_some() {
5634                                return Err(serde::de::Error::duplicate_field("requestId"));
5635                            }
5636                            request_id__ = Some(map_.next_value()?);
5637                        }
5638                        GeneratedField::__SkipField__ => {
5639                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5640                        }
5641                    }
5642                }
5643                Ok(CreateVpcRequest {
5644                    parent: parent__.unwrap_or_default(),
5645                    vpc: vpc__,
5646                    request_id: request_id__.unwrap_or_default(),
5647                })
5648            }
5649        }
5650        deserializer
5651            .deserialize_struct(
5652                "origincloud.network.v1beta1.CreateVpcRequest",
5653                FIELDS,
5654                GeneratedVisitor,
5655            )
5656    }
5657}
5658impl serde::Serialize for DeleteAclAssociationRequest {
5659    #[allow(deprecated)]
5660    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5661    where
5662        S: serde::Serializer,
5663    {
5664        use serde::ser::SerializeStruct;
5665        let mut len = 0;
5666        if !self.name.is_empty() {
5667            len += 1;
5668        }
5669        if !self.request_id.is_empty() {
5670            len += 1;
5671        }
5672        let mut struct_ser = serializer
5673            .serialize_struct(
5674                "origincloud.network.v1beta1.DeleteAclAssociationRequest",
5675                len,
5676            )?;
5677        if !self.name.is_empty() {
5678            struct_ser.serialize_field("name", &self.name)?;
5679        }
5680        if !self.request_id.is_empty() {
5681            struct_ser.serialize_field("requestId", &self.request_id)?;
5682        }
5683        struct_ser.end()
5684    }
5685}
5686impl<'de> serde::Deserialize<'de> for DeleteAclAssociationRequest {
5687    #[allow(deprecated)]
5688    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5689    where
5690        D: serde::Deserializer<'de>,
5691    {
5692        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5693        #[allow(clippy::enum_variant_names)]
5694        enum GeneratedField {
5695            Name,
5696            RequestId,
5697            __SkipField__,
5698        }
5699        impl<'de> serde::Deserialize<'de> for GeneratedField {
5700            fn deserialize<D>(
5701                deserializer: D,
5702            ) -> std::result::Result<GeneratedField, D::Error>
5703            where
5704                D: serde::Deserializer<'de>,
5705            {
5706                struct GeneratedVisitor;
5707                impl serde::de::Visitor<'_> for GeneratedVisitor {
5708                    type Value = GeneratedField;
5709                    fn expecting(
5710                        &self,
5711                        formatter: &mut std::fmt::Formatter<'_>,
5712                    ) -> std::fmt::Result {
5713                        write!(formatter, "expected one of: {:?}", & FIELDS)
5714                    }
5715                    #[allow(unused_variables)]
5716                    fn visit_str<E>(
5717                        self,
5718                        value: &str,
5719                    ) -> std::result::Result<GeneratedField, E>
5720                    where
5721                        E: serde::de::Error,
5722                    {
5723                        match value {
5724                            "name" => Ok(GeneratedField::Name),
5725                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5726                            _ => Ok(GeneratedField::__SkipField__),
5727                        }
5728                    }
5729                }
5730                deserializer.deserialize_identifier(GeneratedVisitor)
5731            }
5732        }
5733        struct GeneratedVisitor;
5734        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5735            type Value = DeleteAclAssociationRequest;
5736            fn expecting(
5737                &self,
5738                formatter: &mut std::fmt::Formatter<'_>,
5739            ) -> std::fmt::Result {
5740                formatter
5741                    .write_str(
5742                        "struct origincloud.network.v1beta1.DeleteAclAssociationRequest",
5743                    )
5744            }
5745            fn visit_map<V>(
5746                self,
5747                mut map_: V,
5748            ) -> std::result::Result<DeleteAclAssociationRequest, V::Error>
5749            where
5750                V: serde::de::MapAccess<'de>,
5751            {
5752                let mut name__ = None;
5753                let mut request_id__ = None;
5754                while let Some(k) = map_.next_key()? {
5755                    match k {
5756                        GeneratedField::Name => {
5757                            if name__.is_some() {
5758                                return Err(serde::de::Error::duplicate_field("name"));
5759                            }
5760                            name__ = Some(map_.next_value()?);
5761                        }
5762                        GeneratedField::RequestId => {
5763                            if request_id__.is_some() {
5764                                return Err(serde::de::Error::duplicate_field("requestId"));
5765                            }
5766                            request_id__ = Some(map_.next_value()?);
5767                        }
5768                        GeneratedField::__SkipField__ => {
5769                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5770                        }
5771                    }
5772                }
5773                Ok(DeleteAclAssociationRequest {
5774                    name: name__.unwrap_or_default(),
5775                    request_id: request_id__.unwrap_or_default(),
5776                })
5777            }
5778        }
5779        deserializer
5780            .deserialize_struct(
5781                "origincloud.network.v1beta1.DeleteAclAssociationRequest",
5782                FIELDS,
5783                GeneratedVisitor,
5784            )
5785    }
5786}
5787impl serde::Serialize for DeleteAclRequest {
5788    #[allow(deprecated)]
5789    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5790    where
5791        S: serde::Serializer,
5792    {
5793        use serde::ser::SerializeStruct;
5794        let mut len = 0;
5795        if !self.name.is_empty() {
5796            len += 1;
5797        }
5798        if !self.request_id.is_empty() {
5799            len += 1;
5800        }
5801        let mut struct_ser = serializer
5802            .serialize_struct("origincloud.network.v1beta1.DeleteAclRequest", len)?;
5803        if !self.name.is_empty() {
5804            struct_ser.serialize_field("name", &self.name)?;
5805        }
5806        if !self.request_id.is_empty() {
5807            struct_ser.serialize_field("requestId", &self.request_id)?;
5808        }
5809        struct_ser.end()
5810    }
5811}
5812impl<'de> serde::Deserialize<'de> for DeleteAclRequest {
5813    #[allow(deprecated)]
5814    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5815    where
5816        D: serde::Deserializer<'de>,
5817    {
5818        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5819        #[allow(clippy::enum_variant_names)]
5820        enum GeneratedField {
5821            Name,
5822            RequestId,
5823            __SkipField__,
5824        }
5825        impl<'de> serde::Deserialize<'de> for GeneratedField {
5826            fn deserialize<D>(
5827                deserializer: D,
5828            ) -> std::result::Result<GeneratedField, D::Error>
5829            where
5830                D: serde::Deserializer<'de>,
5831            {
5832                struct GeneratedVisitor;
5833                impl serde::de::Visitor<'_> for GeneratedVisitor {
5834                    type Value = GeneratedField;
5835                    fn expecting(
5836                        &self,
5837                        formatter: &mut std::fmt::Formatter<'_>,
5838                    ) -> std::fmt::Result {
5839                        write!(formatter, "expected one of: {:?}", & FIELDS)
5840                    }
5841                    #[allow(unused_variables)]
5842                    fn visit_str<E>(
5843                        self,
5844                        value: &str,
5845                    ) -> std::result::Result<GeneratedField, E>
5846                    where
5847                        E: serde::de::Error,
5848                    {
5849                        match value {
5850                            "name" => Ok(GeneratedField::Name),
5851                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5852                            _ => Ok(GeneratedField::__SkipField__),
5853                        }
5854                    }
5855                }
5856                deserializer.deserialize_identifier(GeneratedVisitor)
5857            }
5858        }
5859        struct GeneratedVisitor;
5860        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5861            type Value = DeleteAclRequest;
5862            fn expecting(
5863                &self,
5864                formatter: &mut std::fmt::Formatter<'_>,
5865            ) -> std::fmt::Result {
5866                formatter
5867                    .write_str("struct origincloud.network.v1beta1.DeleteAclRequest")
5868            }
5869            fn visit_map<V>(
5870                self,
5871                mut map_: V,
5872            ) -> std::result::Result<DeleteAclRequest, V::Error>
5873            where
5874                V: serde::de::MapAccess<'de>,
5875            {
5876                let mut name__ = None;
5877                let mut request_id__ = None;
5878                while let Some(k) = map_.next_key()? {
5879                    match k {
5880                        GeneratedField::Name => {
5881                            if name__.is_some() {
5882                                return Err(serde::de::Error::duplicate_field("name"));
5883                            }
5884                            name__ = Some(map_.next_value()?);
5885                        }
5886                        GeneratedField::RequestId => {
5887                            if request_id__.is_some() {
5888                                return Err(serde::de::Error::duplicate_field("requestId"));
5889                            }
5890                            request_id__ = Some(map_.next_value()?);
5891                        }
5892                        GeneratedField::__SkipField__ => {
5893                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5894                        }
5895                    }
5896                }
5897                Ok(DeleteAclRequest {
5898                    name: name__.unwrap_or_default(),
5899                    request_id: request_id__.unwrap_or_default(),
5900                })
5901            }
5902        }
5903        deserializer
5904            .deserialize_struct(
5905                "origincloud.network.v1beta1.DeleteAclRequest",
5906                FIELDS,
5907                GeneratedVisitor,
5908            )
5909    }
5910}
5911impl serde::Serialize for DeleteAclRuleRequest {
5912    #[allow(deprecated)]
5913    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5914    where
5915        S: serde::Serializer,
5916    {
5917        use serde::ser::SerializeStruct;
5918        let mut len = 0;
5919        if !self.name.is_empty() {
5920            len += 1;
5921        }
5922        if !self.request_id.is_empty() {
5923            len += 1;
5924        }
5925        let mut struct_ser = serializer
5926            .serialize_struct("origincloud.network.v1beta1.DeleteAclRuleRequest", len)?;
5927        if !self.name.is_empty() {
5928            struct_ser.serialize_field("name", &self.name)?;
5929        }
5930        if !self.request_id.is_empty() {
5931            struct_ser.serialize_field("requestId", &self.request_id)?;
5932        }
5933        struct_ser.end()
5934    }
5935}
5936impl<'de> serde::Deserialize<'de> for DeleteAclRuleRequest {
5937    #[allow(deprecated)]
5938    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5939    where
5940        D: serde::Deserializer<'de>,
5941    {
5942        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5943        #[allow(clippy::enum_variant_names)]
5944        enum GeneratedField {
5945            Name,
5946            RequestId,
5947            __SkipField__,
5948        }
5949        impl<'de> serde::Deserialize<'de> for GeneratedField {
5950            fn deserialize<D>(
5951                deserializer: D,
5952            ) -> std::result::Result<GeneratedField, D::Error>
5953            where
5954                D: serde::Deserializer<'de>,
5955            {
5956                struct GeneratedVisitor;
5957                impl serde::de::Visitor<'_> for GeneratedVisitor {
5958                    type Value = GeneratedField;
5959                    fn expecting(
5960                        &self,
5961                        formatter: &mut std::fmt::Formatter<'_>,
5962                    ) -> std::fmt::Result {
5963                        write!(formatter, "expected one of: {:?}", & FIELDS)
5964                    }
5965                    #[allow(unused_variables)]
5966                    fn visit_str<E>(
5967                        self,
5968                        value: &str,
5969                    ) -> std::result::Result<GeneratedField, E>
5970                    where
5971                        E: serde::de::Error,
5972                    {
5973                        match value {
5974                            "name" => Ok(GeneratedField::Name),
5975                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5976                            _ => Ok(GeneratedField::__SkipField__),
5977                        }
5978                    }
5979                }
5980                deserializer.deserialize_identifier(GeneratedVisitor)
5981            }
5982        }
5983        struct GeneratedVisitor;
5984        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5985            type Value = DeleteAclRuleRequest;
5986            fn expecting(
5987                &self,
5988                formatter: &mut std::fmt::Formatter<'_>,
5989            ) -> std::fmt::Result {
5990                formatter
5991                    .write_str("struct origincloud.network.v1beta1.DeleteAclRuleRequest")
5992            }
5993            fn visit_map<V>(
5994                self,
5995                mut map_: V,
5996            ) -> std::result::Result<DeleteAclRuleRequest, V::Error>
5997            where
5998                V: serde::de::MapAccess<'de>,
5999            {
6000                let mut name__ = None;
6001                let mut request_id__ = None;
6002                while let Some(k) = map_.next_key()? {
6003                    match k {
6004                        GeneratedField::Name => {
6005                            if name__.is_some() {
6006                                return Err(serde::de::Error::duplicate_field("name"));
6007                            }
6008                            name__ = Some(map_.next_value()?);
6009                        }
6010                        GeneratedField::RequestId => {
6011                            if request_id__.is_some() {
6012                                return Err(serde::de::Error::duplicate_field("requestId"));
6013                            }
6014                            request_id__ = Some(map_.next_value()?);
6015                        }
6016                        GeneratedField::__SkipField__ => {
6017                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6018                        }
6019                    }
6020                }
6021                Ok(DeleteAclRuleRequest {
6022                    name: name__.unwrap_or_default(),
6023                    request_id: request_id__.unwrap_or_default(),
6024                })
6025            }
6026        }
6027        deserializer
6028            .deserialize_struct(
6029                "origincloud.network.v1beta1.DeleteAclRuleRequest",
6030                FIELDS,
6031                GeneratedVisitor,
6032            )
6033    }
6034}
6035impl serde::Serialize for DeleteDnsPolicyAssociationRequest {
6036    #[allow(deprecated)]
6037    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6038    where
6039        S: serde::Serializer,
6040    {
6041        use serde::ser::SerializeStruct;
6042        let mut len = 0;
6043        if !self.name.is_empty() {
6044            len += 1;
6045        }
6046        if !self.request_id.is_empty() {
6047            len += 1;
6048        }
6049        let mut struct_ser = serializer
6050            .serialize_struct(
6051                "origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6052                len,
6053            )?;
6054        if !self.name.is_empty() {
6055            struct_ser.serialize_field("name", &self.name)?;
6056        }
6057        if !self.request_id.is_empty() {
6058            struct_ser.serialize_field("requestId", &self.request_id)?;
6059        }
6060        struct_ser.end()
6061    }
6062}
6063impl<'de> serde::Deserialize<'de> for DeleteDnsPolicyAssociationRequest {
6064    #[allow(deprecated)]
6065    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6066    where
6067        D: serde::Deserializer<'de>,
6068    {
6069        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6070        #[allow(clippy::enum_variant_names)]
6071        enum GeneratedField {
6072            Name,
6073            RequestId,
6074            __SkipField__,
6075        }
6076        impl<'de> serde::Deserialize<'de> for GeneratedField {
6077            fn deserialize<D>(
6078                deserializer: D,
6079            ) -> std::result::Result<GeneratedField, D::Error>
6080            where
6081                D: serde::Deserializer<'de>,
6082            {
6083                struct GeneratedVisitor;
6084                impl serde::de::Visitor<'_> for GeneratedVisitor {
6085                    type Value = GeneratedField;
6086                    fn expecting(
6087                        &self,
6088                        formatter: &mut std::fmt::Formatter<'_>,
6089                    ) -> std::fmt::Result {
6090                        write!(formatter, "expected one of: {:?}", & FIELDS)
6091                    }
6092                    #[allow(unused_variables)]
6093                    fn visit_str<E>(
6094                        self,
6095                        value: &str,
6096                    ) -> std::result::Result<GeneratedField, E>
6097                    where
6098                        E: serde::de::Error,
6099                    {
6100                        match value {
6101                            "name" => Ok(GeneratedField::Name),
6102                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6103                            _ => Ok(GeneratedField::__SkipField__),
6104                        }
6105                    }
6106                }
6107                deserializer.deserialize_identifier(GeneratedVisitor)
6108            }
6109        }
6110        struct GeneratedVisitor;
6111        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6112            type Value = DeleteDnsPolicyAssociationRequest;
6113            fn expecting(
6114                &self,
6115                formatter: &mut std::fmt::Formatter<'_>,
6116            ) -> std::fmt::Result {
6117                formatter
6118                    .write_str(
6119                        "struct origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6120                    )
6121            }
6122            fn visit_map<V>(
6123                self,
6124                mut map_: V,
6125            ) -> std::result::Result<DeleteDnsPolicyAssociationRequest, V::Error>
6126            where
6127                V: serde::de::MapAccess<'de>,
6128            {
6129                let mut name__ = None;
6130                let mut request_id__ = None;
6131                while let Some(k) = map_.next_key()? {
6132                    match k {
6133                        GeneratedField::Name => {
6134                            if name__.is_some() {
6135                                return Err(serde::de::Error::duplicate_field("name"));
6136                            }
6137                            name__ = Some(map_.next_value()?);
6138                        }
6139                        GeneratedField::RequestId => {
6140                            if request_id__.is_some() {
6141                                return Err(serde::de::Error::duplicate_field("requestId"));
6142                            }
6143                            request_id__ = Some(map_.next_value()?);
6144                        }
6145                        GeneratedField::__SkipField__ => {
6146                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6147                        }
6148                    }
6149                }
6150                Ok(DeleteDnsPolicyAssociationRequest {
6151                    name: name__.unwrap_or_default(),
6152                    request_id: request_id__.unwrap_or_default(),
6153                })
6154            }
6155        }
6156        deserializer
6157            .deserialize_struct(
6158                "origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6159                FIELDS,
6160                GeneratedVisitor,
6161            )
6162    }
6163}
6164impl serde::Serialize for DeleteDnsPolicyRequest {
6165    #[allow(deprecated)]
6166    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6167    where
6168        S: serde::Serializer,
6169    {
6170        use serde::ser::SerializeStruct;
6171        let mut len = 0;
6172        if !self.name.is_empty() {
6173            len += 1;
6174        }
6175        if !self.request_id.is_empty() {
6176            len += 1;
6177        }
6178        let mut struct_ser = serializer
6179            .serialize_struct(
6180                "origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6181                len,
6182            )?;
6183        if !self.name.is_empty() {
6184            struct_ser.serialize_field("name", &self.name)?;
6185        }
6186        if !self.request_id.is_empty() {
6187            struct_ser.serialize_field("requestId", &self.request_id)?;
6188        }
6189        struct_ser.end()
6190    }
6191}
6192impl<'de> serde::Deserialize<'de> for DeleteDnsPolicyRequest {
6193    #[allow(deprecated)]
6194    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6195    where
6196        D: serde::Deserializer<'de>,
6197    {
6198        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6199        #[allow(clippy::enum_variant_names)]
6200        enum GeneratedField {
6201            Name,
6202            RequestId,
6203            __SkipField__,
6204        }
6205        impl<'de> serde::Deserialize<'de> for GeneratedField {
6206            fn deserialize<D>(
6207                deserializer: D,
6208            ) -> std::result::Result<GeneratedField, D::Error>
6209            where
6210                D: serde::Deserializer<'de>,
6211            {
6212                struct GeneratedVisitor;
6213                impl serde::de::Visitor<'_> for GeneratedVisitor {
6214                    type Value = GeneratedField;
6215                    fn expecting(
6216                        &self,
6217                        formatter: &mut std::fmt::Formatter<'_>,
6218                    ) -> std::fmt::Result {
6219                        write!(formatter, "expected one of: {:?}", & FIELDS)
6220                    }
6221                    #[allow(unused_variables)]
6222                    fn visit_str<E>(
6223                        self,
6224                        value: &str,
6225                    ) -> std::result::Result<GeneratedField, E>
6226                    where
6227                        E: serde::de::Error,
6228                    {
6229                        match value {
6230                            "name" => Ok(GeneratedField::Name),
6231                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6232                            _ => Ok(GeneratedField::__SkipField__),
6233                        }
6234                    }
6235                }
6236                deserializer.deserialize_identifier(GeneratedVisitor)
6237            }
6238        }
6239        struct GeneratedVisitor;
6240        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6241            type Value = DeleteDnsPolicyRequest;
6242            fn expecting(
6243                &self,
6244                formatter: &mut std::fmt::Formatter<'_>,
6245            ) -> std::fmt::Result {
6246                formatter
6247                    .write_str(
6248                        "struct origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6249                    )
6250            }
6251            fn visit_map<V>(
6252                self,
6253                mut map_: V,
6254            ) -> std::result::Result<DeleteDnsPolicyRequest, V::Error>
6255            where
6256                V: serde::de::MapAccess<'de>,
6257            {
6258                let mut name__ = None;
6259                let mut request_id__ = None;
6260                while let Some(k) = map_.next_key()? {
6261                    match k {
6262                        GeneratedField::Name => {
6263                            if name__.is_some() {
6264                                return Err(serde::de::Error::duplicate_field("name"));
6265                            }
6266                            name__ = Some(map_.next_value()?);
6267                        }
6268                        GeneratedField::RequestId => {
6269                            if request_id__.is_some() {
6270                                return Err(serde::de::Error::duplicate_field("requestId"));
6271                            }
6272                            request_id__ = Some(map_.next_value()?);
6273                        }
6274                        GeneratedField::__SkipField__ => {
6275                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6276                        }
6277                    }
6278                }
6279                Ok(DeleteDnsPolicyRequest {
6280                    name: name__.unwrap_or_default(),
6281                    request_id: request_id__.unwrap_or_default(),
6282                })
6283            }
6284        }
6285        deserializer
6286            .deserialize_struct(
6287                "origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6288                FIELDS,
6289                GeneratedVisitor,
6290            )
6291    }
6292}
6293impl serde::Serialize for DeleteFloatingIpAssociationRequest {
6294    #[allow(deprecated)]
6295    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6296    where
6297        S: serde::Serializer,
6298    {
6299        use serde::ser::SerializeStruct;
6300        let mut len = 0;
6301        if !self.name.is_empty() {
6302            len += 1;
6303        }
6304        if !self.request_id.is_empty() {
6305            len += 1;
6306        }
6307        let mut struct_ser = serializer
6308            .serialize_struct(
6309                "origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6310                len,
6311            )?;
6312        if !self.name.is_empty() {
6313            struct_ser.serialize_field("name", &self.name)?;
6314        }
6315        if !self.request_id.is_empty() {
6316            struct_ser.serialize_field("requestId", &self.request_id)?;
6317        }
6318        struct_ser.end()
6319    }
6320}
6321impl<'de> serde::Deserialize<'de> for DeleteFloatingIpAssociationRequest {
6322    #[allow(deprecated)]
6323    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6324    where
6325        D: serde::Deserializer<'de>,
6326    {
6327        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6328        #[allow(clippy::enum_variant_names)]
6329        enum GeneratedField {
6330            Name,
6331            RequestId,
6332            __SkipField__,
6333        }
6334        impl<'de> serde::Deserialize<'de> for GeneratedField {
6335            fn deserialize<D>(
6336                deserializer: D,
6337            ) -> std::result::Result<GeneratedField, D::Error>
6338            where
6339                D: serde::Deserializer<'de>,
6340            {
6341                struct GeneratedVisitor;
6342                impl serde::de::Visitor<'_> for GeneratedVisitor {
6343                    type Value = GeneratedField;
6344                    fn expecting(
6345                        &self,
6346                        formatter: &mut std::fmt::Formatter<'_>,
6347                    ) -> std::fmt::Result {
6348                        write!(formatter, "expected one of: {:?}", & FIELDS)
6349                    }
6350                    #[allow(unused_variables)]
6351                    fn visit_str<E>(
6352                        self,
6353                        value: &str,
6354                    ) -> std::result::Result<GeneratedField, E>
6355                    where
6356                        E: serde::de::Error,
6357                    {
6358                        match value {
6359                            "name" => Ok(GeneratedField::Name),
6360                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6361                            _ => Ok(GeneratedField::__SkipField__),
6362                        }
6363                    }
6364                }
6365                deserializer.deserialize_identifier(GeneratedVisitor)
6366            }
6367        }
6368        struct GeneratedVisitor;
6369        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6370            type Value = DeleteFloatingIpAssociationRequest;
6371            fn expecting(
6372                &self,
6373                formatter: &mut std::fmt::Formatter<'_>,
6374            ) -> std::fmt::Result {
6375                formatter
6376                    .write_str(
6377                        "struct origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6378                    )
6379            }
6380            fn visit_map<V>(
6381                self,
6382                mut map_: V,
6383            ) -> std::result::Result<DeleteFloatingIpAssociationRequest, V::Error>
6384            where
6385                V: serde::de::MapAccess<'de>,
6386            {
6387                let mut name__ = None;
6388                let mut request_id__ = None;
6389                while let Some(k) = map_.next_key()? {
6390                    match k {
6391                        GeneratedField::Name => {
6392                            if name__.is_some() {
6393                                return Err(serde::de::Error::duplicate_field("name"));
6394                            }
6395                            name__ = Some(map_.next_value()?);
6396                        }
6397                        GeneratedField::RequestId => {
6398                            if request_id__.is_some() {
6399                                return Err(serde::de::Error::duplicate_field("requestId"));
6400                            }
6401                            request_id__ = Some(map_.next_value()?);
6402                        }
6403                        GeneratedField::__SkipField__ => {
6404                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6405                        }
6406                    }
6407                }
6408                Ok(DeleteFloatingIpAssociationRequest {
6409                    name: name__.unwrap_or_default(),
6410                    request_id: request_id__.unwrap_or_default(),
6411                })
6412            }
6413        }
6414        deserializer
6415            .deserialize_struct(
6416                "origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6417                FIELDS,
6418                GeneratedVisitor,
6419            )
6420    }
6421}
6422impl serde::Serialize for DeleteFloatingIpRequest {
6423    #[allow(deprecated)]
6424    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6425    where
6426        S: serde::Serializer,
6427    {
6428        use serde::ser::SerializeStruct;
6429        let mut len = 0;
6430        if !self.name.is_empty() {
6431            len += 1;
6432        }
6433        if !self.request_id.is_empty() {
6434            len += 1;
6435        }
6436        let mut struct_ser = serializer
6437            .serialize_struct(
6438                "origincloud.network.v1beta1.DeleteFloatingIpRequest",
6439                len,
6440            )?;
6441        if !self.name.is_empty() {
6442            struct_ser.serialize_field("name", &self.name)?;
6443        }
6444        if !self.request_id.is_empty() {
6445            struct_ser.serialize_field("requestId", &self.request_id)?;
6446        }
6447        struct_ser.end()
6448    }
6449}
6450impl<'de> serde::Deserialize<'de> for DeleteFloatingIpRequest {
6451    #[allow(deprecated)]
6452    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6453    where
6454        D: serde::Deserializer<'de>,
6455    {
6456        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6457        #[allow(clippy::enum_variant_names)]
6458        enum GeneratedField {
6459            Name,
6460            RequestId,
6461            __SkipField__,
6462        }
6463        impl<'de> serde::Deserialize<'de> for GeneratedField {
6464            fn deserialize<D>(
6465                deserializer: D,
6466            ) -> std::result::Result<GeneratedField, D::Error>
6467            where
6468                D: serde::Deserializer<'de>,
6469            {
6470                struct GeneratedVisitor;
6471                impl serde::de::Visitor<'_> for GeneratedVisitor {
6472                    type Value = GeneratedField;
6473                    fn expecting(
6474                        &self,
6475                        formatter: &mut std::fmt::Formatter<'_>,
6476                    ) -> std::fmt::Result {
6477                        write!(formatter, "expected one of: {:?}", & FIELDS)
6478                    }
6479                    #[allow(unused_variables)]
6480                    fn visit_str<E>(
6481                        self,
6482                        value: &str,
6483                    ) -> std::result::Result<GeneratedField, E>
6484                    where
6485                        E: serde::de::Error,
6486                    {
6487                        match value {
6488                            "name" => Ok(GeneratedField::Name),
6489                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6490                            _ => Ok(GeneratedField::__SkipField__),
6491                        }
6492                    }
6493                }
6494                deserializer.deserialize_identifier(GeneratedVisitor)
6495            }
6496        }
6497        struct GeneratedVisitor;
6498        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6499            type Value = DeleteFloatingIpRequest;
6500            fn expecting(
6501                &self,
6502                formatter: &mut std::fmt::Formatter<'_>,
6503            ) -> std::fmt::Result {
6504                formatter
6505                    .write_str(
6506                        "struct origincloud.network.v1beta1.DeleteFloatingIpRequest",
6507                    )
6508            }
6509            fn visit_map<V>(
6510                self,
6511                mut map_: V,
6512            ) -> std::result::Result<DeleteFloatingIpRequest, V::Error>
6513            where
6514                V: serde::de::MapAccess<'de>,
6515            {
6516                let mut name__ = None;
6517                let mut request_id__ = None;
6518                while let Some(k) = map_.next_key()? {
6519                    match k {
6520                        GeneratedField::Name => {
6521                            if name__.is_some() {
6522                                return Err(serde::de::Error::duplicate_field("name"));
6523                            }
6524                            name__ = Some(map_.next_value()?);
6525                        }
6526                        GeneratedField::RequestId => {
6527                            if request_id__.is_some() {
6528                                return Err(serde::de::Error::duplicate_field("requestId"));
6529                            }
6530                            request_id__ = Some(map_.next_value()?);
6531                        }
6532                        GeneratedField::__SkipField__ => {
6533                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6534                        }
6535                    }
6536                }
6537                Ok(DeleteFloatingIpRequest {
6538                    name: name__.unwrap_or_default(),
6539                    request_id: request_id__.unwrap_or_default(),
6540                })
6541            }
6542        }
6543        deserializer
6544            .deserialize_struct(
6545                "origincloud.network.v1beta1.DeleteFloatingIpRequest",
6546                FIELDS,
6547                GeneratedVisitor,
6548            )
6549    }
6550}
6551impl serde::Serialize for DeleteInternetGatewayRequest {
6552    #[allow(deprecated)]
6553    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6554    where
6555        S: serde::Serializer,
6556    {
6557        use serde::ser::SerializeStruct;
6558        let mut len = 0;
6559        if !self.name.is_empty() {
6560            len += 1;
6561        }
6562        if !self.request_id.is_empty() {
6563            len += 1;
6564        }
6565        let mut struct_ser = serializer
6566            .serialize_struct(
6567                "origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6568                len,
6569            )?;
6570        if !self.name.is_empty() {
6571            struct_ser.serialize_field("name", &self.name)?;
6572        }
6573        if !self.request_id.is_empty() {
6574            struct_ser.serialize_field("requestId", &self.request_id)?;
6575        }
6576        struct_ser.end()
6577    }
6578}
6579impl<'de> serde::Deserialize<'de> for DeleteInternetGatewayRequest {
6580    #[allow(deprecated)]
6581    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6582    where
6583        D: serde::Deserializer<'de>,
6584    {
6585        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6586        #[allow(clippy::enum_variant_names)]
6587        enum GeneratedField {
6588            Name,
6589            RequestId,
6590            __SkipField__,
6591        }
6592        impl<'de> serde::Deserialize<'de> for GeneratedField {
6593            fn deserialize<D>(
6594                deserializer: D,
6595            ) -> std::result::Result<GeneratedField, D::Error>
6596            where
6597                D: serde::Deserializer<'de>,
6598            {
6599                struct GeneratedVisitor;
6600                impl serde::de::Visitor<'_> for GeneratedVisitor {
6601                    type Value = GeneratedField;
6602                    fn expecting(
6603                        &self,
6604                        formatter: &mut std::fmt::Formatter<'_>,
6605                    ) -> std::fmt::Result {
6606                        write!(formatter, "expected one of: {:?}", & FIELDS)
6607                    }
6608                    #[allow(unused_variables)]
6609                    fn visit_str<E>(
6610                        self,
6611                        value: &str,
6612                    ) -> std::result::Result<GeneratedField, E>
6613                    where
6614                        E: serde::de::Error,
6615                    {
6616                        match value {
6617                            "name" => Ok(GeneratedField::Name),
6618                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6619                            _ => Ok(GeneratedField::__SkipField__),
6620                        }
6621                    }
6622                }
6623                deserializer.deserialize_identifier(GeneratedVisitor)
6624            }
6625        }
6626        struct GeneratedVisitor;
6627        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6628            type Value = DeleteInternetGatewayRequest;
6629            fn expecting(
6630                &self,
6631                formatter: &mut std::fmt::Formatter<'_>,
6632            ) -> std::fmt::Result {
6633                formatter
6634                    .write_str(
6635                        "struct origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6636                    )
6637            }
6638            fn visit_map<V>(
6639                self,
6640                mut map_: V,
6641            ) -> std::result::Result<DeleteInternetGatewayRequest, V::Error>
6642            where
6643                V: serde::de::MapAccess<'de>,
6644            {
6645                let mut name__ = None;
6646                let mut request_id__ = None;
6647                while let Some(k) = map_.next_key()? {
6648                    match k {
6649                        GeneratedField::Name => {
6650                            if name__.is_some() {
6651                                return Err(serde::de::Error::duplicate_field("name"));
6652                            }
6653                            name__ = Some(map_.next_value()?);
6654                        }
6655                        GeneratedField::RequestId => {
6656                            if request_id__.is_some() {
6657                                return Err(serde::de::Error::duplicate_field("requestId"));
6658                            }
6659                            request_id__ = Some(map_.next_value()?);
6660                        }
6661                        GeneratedField::__SkipField__ => {
6662                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6663                        }
6664                    }
6665                }
6666                Ok(DeleteInternetGatewayRequest {
6667                    name: name__.unwrap_or_default(),
6668                    request_id: request_id__.unwrap_or_default(),
6669                })
6670            }
6671        }
6672        deserializer
6673            .deserialize_struct(
6674                "origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6675                FIELDS,
6676                GeneratedVisitor,
6677            )
6678    }
6679}
6680impl serde::Serialize for DeleteNatGatewayRequest {
6681    #[allow(deprecated)]
6682    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6683    where
6684        S: serde::Serializer,
6685    {
6686        use serde::ser::SerializeStruct;
6687        let mut len = 0;
6688        if !self.name.is_empty() {
6689            len += 1;
6690        }
6691        if !self.request_id.is_empty() {
6692            len += 1;
6693        }
6694        let mut struct_ser = serializer
6695            .serialize_struct(
6696                "origincloud.network.v1beta1.DeleteNatGatewayRequest",
6697                len,
6698            )?;
6699        if !self.name.is_empty() {
6700            struct_ser.serialize_field("name", &self.name)?;
6701        }
6702        if !self.request_id.is_empty() {
6703            struct_ser.serialize_field("requestId", &self.request_id)?;
6704        }
6705        struct_ser.end()
6706    }
6707}
6708impl<'de> serde::Deserialize<'de> for DeleteNatGatewayRequest {
6709    #[allow(deprecated)]
6710    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6711    where
6712        D: serde::Deserializer<'de>,
6713    {
6714        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6715        #[allow(clippy::enum_variant_names)]
6716        enum GeneratedField {
6717            Name,
6718            RequestId,
6719            __SkipField__,
6720        }
6721        impl<'de> serde::Deserialize<'de> for GeneratedField {
6722            fn deserialize<D>(
6723                deserializer: D,
6724            ) -> std::result::Result<GeneratedField, D::Error>
6725            where
6726                D: serde::Deserializer<'de>,
6727            {
6728                struct GeneratedVisitor;
6729                impl serde::de::Visitor<'_> for GeneratedVisitor {
6730                    type Value = GeneratedField;
6731                    fn expecting(
6732                        &self,
6733                        formatter: &mut std::fmt::Formatter<'_>,
6734                    ) -> std::fmt::Result {
6735                        write!(formatter, "expected one of: {:?}", & FIELDS)
6736                    }
6737                    #[allow(unused_variables)]
6738                    fn visit_str<E>(
6739                        self,
6740                        value: &str,
6741                    ) -> std::result::Result<GeneratedField, E>
6742                    where
6743                        E: serde::de::Error,
6744                    {
6745                        match value {
6746                            "name" => Ok(GeneratedField::Name),
6747                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6748                            _ => Ok(GeneratedField::__SkipField__),
6749                        }
6750                    }
6751                }
6752                deserializer.deserialize_identifier(GeneratedVisitor)
6753            }
6754        }
6755        struct GeneratedVisitor;
6756        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6757            type Value = DeleteNatGatewayRequest;
6758            fn expecting(
6759                &self,
6760                formatter: &mut std::fmt::Formatter<'_>,
6761            ) -> std::fmt::Result {
6762                formatter
6763                    .write_str(
6764                        "struct origincloud.network.v1beta1.DeleteNatGatewayRequest",
6765                    )
6766            }
6767            fn visit_map<V>(
6768                self,
6769                mut map_: V,
6770            ) -> std::result::Result<DeleteNatGatewayRequest, V::Error>
6771            where
6772                V: serde::de::MapAccess<'de>,
6773            {
6774                let mut name__ = None;
6775                let mut request_id__ = None;
6776                while let Some(k) = map_.next_key()? {
6777                    match k {
6778                        GeneratedField::Name => {
6779                            if name__.is_some() {
6780                                return Err(serde::de::Error::duplicate_field("name"));
6781                            }
6782                            name__ = Some(map_.next_value()?);
6783                        }
6784                        GeneratedField::RequestId => {
6785                            if request_id__.is_some() {
6786                                return Err(serde::de::Error::duplicate_field("requestId"));
6787                            }
6788                            request_id__ = Some(map_.next_value()?);
6789                        }
6790                        GeneratedField::__SkipField__ => {
6791                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6792                        }
6793                    }
6794                }
6795                Ok(DeleteNatGatewayRequest {
6796                    name: name__.unwrap_or_default(),
6797                    request_id: request_id__.unwrap_or_default(),
6798                })
6799            }
6800        }
6801        deserializer
6802            .deserialize_struct(
6803                "origincloud.network.v1beta1.DeleteNatGatewayRequest",
6804                FIELDS,
6805                GeneratedVisitor,
6806            )
6807    }
6808}
6809impl serde::Serialize for DeleteNetworkInterfaceRequest {
6810    #[allow(deprecated)]
6811    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6812    where
6813        S: serde::Serializer,
6814    {
6815        use serde::ser::SerializeStruct;
6816        let mut len = 0;
6817        if !self.name.is_empty() {
6818            len += 1;
6819        }
6820        if !self.request_id.is_empty() {
6821            len += 1;
6822        }
6823        let mut struct_ser = serializer
6824            .serialize_struct(
6825                "origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6826                len,
6827            )?;
6828        if !self.name.is_empty() {
6829            struct_ser.serialize_field("name", &self.name)?;
6830        }
6831        if !self.request_id.is_empty() {
6832            struct_ser.serialize_field("requestId", &self.request_id)?;
6833        }
6834        struct_ser.end()
6835    }
6836}
6837impl<'de> serde::Deserialize<'de> for DeleteNetworkInterfaceRequest {
6838    #[allow(deprecated)]
6839    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6840    where
6841        D: serde::Deserializer<'de>,
6842    {
6843        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6844        #[allow(clippy::enum_variant_names)]
6845        enum GeneratedField {
6846            Name,
6847            RequestId,
6848            __SkipField__,
6849        }
6850        impl<'de> serde::Deserialize<'de> for GeneratedField {
6851            fn deserialize<D>(
6852                deserializer: D,
6853            ) -> std::result::Result<GeneratedField, D::Error>
6854            where
6855                D: serde::Deserializer<'de>,
6856            {
6857                struct GeneratedVisitor;
6858                impl serde::de::Visitor<'_> for GeneratedVisitor {
6859                    type Value = GeneratedField;
6860                    fn expecting(
6861                        &self,
6862                        formatter: &mut std::fmt::Formatter<'_>,
6863                    ) -> std::fmt::Result {
6864                        write!(formatter, "expected one of: {:?}", & FIELDS)
6865                    }
6866                    #[allow(unused_variables)]
6867                    fn visit_str<E>(
6868                        self,
6869                        value: &str,
6870                    ) -> std::result::Result<GeneratedField, E>
6871                    where
6872                        E: serde::de::Error,
6873                    {
6874                        match value {
6875                            "name" => Ok(GeneratedField::Name),
6876                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6877                            _ => Ok(GeneratedField::__SkipField__),
6878                        }
6879                    }
6880                }
6881                deserializer.deserialize_identifier(GeneratedVisitor)
6882            }
6883        }
6884        struct GeneratedVisitor;
6885        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6886            type Value = DeleteNetworkInterfaceRequest;
6887            fn expecting(
6888                &self,
6889                formatter: &mut std::fmt::Formatter<'_>,
6890            ) -> std::fmt::Result {
6891                formatter
6892                    .write_str(
6893                        "struct origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6894                    )
6895            }
6896            fn visit_map<V>(
6897                self,
6898                mut map_: V,
6899            ) -> std::result::Result<DeleteNetworkInterfaceRequest, V::Error>
6900            where
6901                V: serde::de::MapAccess<'de>,
6902            {
6903                let mut name__ = None;
6904                let mut request_id__ = None;
6905                while let Some(k) = map_.next_key()? {
6906                    match k {
6907                        GeneratedField::Name => {
6908                            if name__.is_some() {
6909                                return Err(serde::de::Error::duplicate_field("name"));
6910                            }
6911                            name__ = Some(map_.next_value()?);
6912                        }
6913                        GeneratedField::RequestId => {
6914                            if request_id__.is_some() {
6915                                return Err(serde::de::Error::duplicate_field("requestId"));
6916                            }
6917                            request_id__ = Some(map_.next_value()?);
6918                        }
6919                        GeneratedField::__SkipField__ => {
6920                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6921                        }
6922                    }
6923                }
6924                Ok(DeleteNetworkInterfaceRequest {
6925                    name: name__.unwrap_or_default(),
6926                    request_id: request_id__.unwrap_or_default(),
6927                })
6928            }
6929        }
6930        deserializer
6931            .deserialize_struct(
6932                "origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6933                FIELDS,
6934                GeneratedVisitor,
6935            )
6936    }
6937}
6938impl serde::Serialize for DeleteRouteRequest {
6939    #[allow(deprecated)]
6940    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6941    where
6942        S: serde::Serializer,
6943    {
6944        use serde::ser::SerializeStruct;
6945        let mut len = 0;
6946        if !self.name.is_empty() {
6947            len += 1;
6948        }
6949        if !self.request_id.is_empty() {
6950            len += 1;
6951        }
6952        let mut struct_ser = serializer
6953            .serialize_struct("origincloud.network.v1beta1.DeleteRouteRequest", len)?;
6954        if !self.name.is_empty() {
6955            struct_ser.serialize_field("name", &self.name)?;
6956        }
6957        if !self.request_id.is_empty() {
6958            struct_ser.serialize_field("requestId", &self.request_id)?;
6959        }
6960        struct_ser.end()
6961    }
6962}
6963impl<'de> serde::Deserialize<'de> for DeleteRouteRequest {
6964    #[allow(deprecated)]
6965    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6966    where
6967        D: serde::Deserializer<'de>,
6968    {
6969        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6970        #[allow(clippy::enum_variant_names)]
6971        enum GeneratedField {
6972            Name,
6973            RequestId,
6974            __SkipField__,
6975        }
6976        impl<'de> serde::Deserialize<'de> for GeneratedField {
6977            fn deserialize<D>(
6978                deserializer: D,
6979            ) -> std::result::Result<GeneratedField, D::Error>
6980            where
6981                D: serde::Deserializer<'de>,
6982            {
6983                struct GeneratedVisitor;
6984                impl serde::de::Visitor<'_> for GeneratedVisitor {
6985                    type Value = GeneratedField;
6986                    fn expecting(
6987                        &self,
6988                        formatter: &mut std::fmt::Formatter<'_>,
6989                    ) -> std::fmt::Result {
6990                        write!(formatter, "expected one of: {:?}", & FIELDS)
6991                    }
6992                    #[allow(unused_variables)]
6993                    fn visit_str<E>(
6994                        self,
6995                        value: &str,
6996                    ) -> std::result::Result<GeneratedField, E>
6997                    where
6998                        E: serde::de::Error,
6999                    {
7000                        match value {
7001                            "name" => Ok(GeneratedField::Name),
7002                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7003                            _ => Ok(GeneratedField::__SkipField__),
7004                        }
7005                    }
7006                }
7007                deserializer.deserialize_identifier(GeneratedVisitor)
7008            }
7009        }
7010        struct GeneratedVisitor;
7011        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7012            type Value = DeleteRouteRequest;
7013            fn expecting(
7014                &self,
7015                formatter: &mut std::fmt::Formatter<'_>,
7016            ) -> std::fmt::Result {
7017                formatter
7018                    .write_str("struct origincloud.network.v1beta1.DeleteRouteRequest")
7019            }
7020            fn visit_map<V>(
7021                self,
7022                mut map_: V,
7023            ) -> std::result::Result<DeleteRouteRequest, V::Error>
7024            where
7025                V: serde::de::MapAccess<'de>,
7026            {
7027                let mut name__ = None;
7028                let mut request_id__ = None;
7029                while let Some(k) = map_.next_key()? {
7030                    match k {
7031                        GeneratedField::Name => {
7032                            if name__.is_some() {
7033                                return Err(serde::de::Error::duplicate_field("name"));
7034                            }
7035                            name__ = Some(map_.next_value()?);
7036                        }
7037                        GeneratedField::RequestId => {
7038                            if request_id__.is_some() {
7039                                return Err(serde::de::Error::duplicate_field("requestId"));
7040                            }
7041                            request_id__ = Some(map_.next_value()?);
7042                        }
7043                        GeneratedField::__SkipField__ => {
7044                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7045                        }
7046                    }
7047                }
7048                Ok(DeleteRouteRequest {
7049                    name: name__.unwrap_or_default(),
7050                    request_id: request_id__.unwrap_or_default(),
7051                })
7052            }
7053        }
7054        deserializer
7055            .deserialize_struct(
7056                "origincloud.network.v1beta1.DeleteRouteRequest",
7057                FIELDS,
7058                GeneratedVisitor,
7059            )
7060    }
7061}
7062impl serde::Serialize for DeleteRouteTableAssociationRequest {
7063    #[allow(deprecated)]
7064    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7065    where
7066        S: serde::Serializer,
7067    {
7068        use serde::ser::SerializeStruct;
7069        let mut len = 0;
7070        if !self.name.is_empty() {
7071            len += 1;
7072        }
7073        if !self.request_id.is_empty() {
7074            len += 1;
7075        }
7076        let mut struct_ser = serializer
7077            .serialize_struct(
7078                "origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7079                len,
7080            )?;
7081        if !self.name.is_empty() {
7082            struct_ser.serialize_field("name", &self.name)?;
7083        }
7084        if !self.request_id.is_empty() {
7085            struct_ser.serialize_field("requestId", &self.request_id)?;
7086        }
7087        struct_ser.end()
7088    }
7089}
7090impl<'de> serde::Deserialize<'de> for DeleteRouteTableAssociationRequest {
7091    #[allow(deprecated)]
7092    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7093    where
7094        D: serde::Deserializer<'de>,
7095    {
7096        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7097        #[allow(clippy::enum_variant_names)]
7098        enum GeneratedField {
7099            Name,
7100            RequestId,
7101            __SkipField__,
7102        }
7103        impl<'de> serde::Deserialize<'de> for GeneratedField {
7104            fn deserialize<D>(
7105                deserializer: D,
7106            ) -> std::result::Result<GeneratedField, D::Error>
7107            where
7108                D: serde::Deserializer<'de>,
7109            {
7110                struct GeneratedVisitor;
7111                impl serde::de::Visitor<'_> for GeneratedVisitor {
7112                    type Value = GeneratedField;
7113                    fn expecting(
7114                        &self,
7115                        formatter: &mut std::fmt::Formatter<'_>,
7116                    ) -> std::fmt::Result {
7117                        write!(formatter, "expected one of: {:?}", & FIELDS)
7118                    }
7119                    #[allow(unused_variables)]
7120                    fn visit_str<E>(
7121                        self,
7122                        value: &str,
7123                    ) -> std::result::Result<GeneratedField, E>
7124                    where
7125                        E: serde::de::Error,
7126                    {
7127                        match value {
7128                            "name" => Ok(GeneratedField::Name),
7129                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7130                            _ => Ok(GeneratedField::__SkipField__),
7131                        }
7132                    }
7133                }
7134                deserializer.deserialize_identifier(GeneratedVisitor)
7135            }
7136        }
7137        struct GeneratedVisitor;
7138        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7139            type Value = DeleteRouteTableAssociationRequest;
7140            fn expecting(
7141                &self,
7142                formatter: &mut std::fmt::Formatter<'_>,
7143            ) -> std::fmt::Result {
7144                formatter
7145                    .write_str(
7146                        "struct origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7147                    )
7148            }
7149            fn visit_map<V>(
7150                self,
7151                mut map_: V,
7152            ) -> std::result::Result<DeleteRouteTableAssociationRequest, V::Error>
7153            where
7154                V: serde::de::MapAccess<'de>,
7155            {
7156                let mut name__ = None;
7157                let mut request_id__ = None;
7158                while let Some(k) = map_.next_key()? {
7159                    match k {
7160                        GeneratedField::Name => {
7161                            if name__.is_some() {
7162                                return Err(serde::de::Error::duplicate_field("name"));
7163                            }
7164                            name__ = Some(map_.next_value()?);
7165                        }
7166                        GeneratedField::RequestId => {
7167                            if request_id__.is_some() {
7168                                return Err(serde::de::Error::duplicate_field("requestId"));
7169                            }
7170                            request_id__ = Some(map_.next_value()?);
7171                        }
7172                        GeneratedField::__SkipField__ => {
7173                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7174                        }
7175                    }
7176                }
7177                Ok(DeleteRouteTableAssociationRequest {
7178                    name: name__.unwrap_or_default(),
7179                    request_id: request_id__.unwrap_or_default(),
7180                })
7181            }
7182        }
7183        deserializer
7184            .deserialize_struct(
7185                "origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7186                FIELDS,
7187                GeneratedVisitor,
7188            )
7189    }
7190}
7191impl serde::Serialize for DeleteRouteTableRequest {
7192    #[allow(deprecated)]
7193    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7194    where
7195        S: serde::Serializer,
7196    {
7197        use serde::ser::SerializeStruct;
7198        let mut len = 0;
7199        if !self.name.is_empty() {
7200            len += 1;
7201        }
7202        if !self.request_id.is_empty() {
7203            len += 1;
7204        }
7205        let mut struct_ser = serializer
7206            .serialize_struct(
7207                "origincloud.network.v1beta1.DeleteRouteTableRequest",
7208                len,
7209            )?;
7210        if !self.name.is_empty() {
7211            struct_ser.serialize_field("name", &self.name)?;
7212        }
7213        if !self.request_id.is_empty() {
7214            struct_ser.serialize_field("requestId", &self.request_id)?;
7215        }
7216        struct_ser.end()
7217    }
7218}
7219impl<'de> serde::Deserialize<'de> for DeleteRouteTableRequest {
7220    #[allow(deprecated)]
7221    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7222    where
7223        D: serde::Deserializer<'de>,
7224    {
7225        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7226        #[allow(clippy::enum_variant_names)]
7227        enum GeneratedField {
7228            Name,
7229            RequestId,
7230            __SkipField__,
7231        }
7232        impl<'de> serde::Deserialize<'de> for GeneratedField {
7233            fn deserialize<D>(
7234                deserializer: D,
7235            ) -> std::result::Result<GeneratedField, D::Error>
7236            where
7237                D: serde::Deserializer<'de>,
7238            {
7239                struct GeneratedVisitor;
7240                impl serde::de::Visitor<'_> for GeneratedVisitor {
7241                    type Value = GeneratedField;
7242                    fn expecting(
7243                        &self,
7244                        formatter: &mut std::fmt::Formatter<'_>,
7245                    ) -> std::fmt::Result {
7246                        write!(formatter, "expected one of: {:?}", & FIELDS)
7247                    }
7248                    #[allow(unused_variables)]
7249                    fn visit_str<E>(
7250                        self,
7251                        value: &str,
7252                    ) -> std::result::Result<GeneratedField, E>
7253                    where
7254                        E: serde::de::Error,
7255                    {
7256                        match value {
7257                            "name" => Ok(GeneratedField::Name),
7258                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7259                            _ => Ok(GeneratedField::__SkipField__),
7260                        }
7261                    }
7262                }
7263                deserializer.deserialize_identifier(GeneratedVisitor)
7264            }
7265        }
7266        struct GeneratedVisitor;
7267        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7268            type Value = DeleteRouteTableRequest;
7269            fn expecting(
7270                &self,
7271                formatter: &mut std::fmt::Formatter<'_>,
7272            ) -> std::fmt::Result {
7273                formatter
7274                    .write_str(
7275                        "struct origincloud.network.v1beta1.DeleteRouteTableRequest",
7276                    )
7277            }
7278            fn visit_map<V>(
7279                self,
7280                mut map_: V,
7281            ) -> std::result::Result<DeleteRouteTableRequest, V::Error>
7282            where
7283                V: serde::de::MapAccess<'de>,
7284            {
7285                let mut name__ = None;
7286                let mut request_id__ = None;
7287                while let Some(k) = map_.next_key()? {
7288                    match k {
7289                        GeneratedField::Name => {
7290                            if name__.is_some() {
7291                                return Err(serde::de::Error::duplicate_field("name"));
7292                            }
7293                            name__ = Some(map_.next_value()?);
7294                        }
7295                        GeneratedField::RequestId => {
7296                            if request_id__.is_some() {
7297                                return Err(serde::de::Error::duplicate_field("requestId"));
7298                            }
7299                            request_id__ = Some(map_.next_value()?);
7300                        }
7301                        GeneratedField::__SkipField__ => {
7302                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7303                        }
7304                    }
7305                }
7306                Ok(DeleteRouteTableRequest {
7307                    name: name__.unwrap_or_default(),
7308                    request_id: request_id__.unwrap_or_default(),
7309                })
7310            }
7311        }
7312        deserializer
7313            .deserialize_struct(
7314                "origincloud.network.v1beta1.DeleteRouteTableRequest",
7315                FIELDS,
7316                GeneratedVisitor,
7317            )
7318    }
7319}
7320impl serde::Serialize for DeleteSecurityGroupAssociationRequest {
7321    #[allow(deprecated)]
7322    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7323    where
7324        S: serde::Serializer,
7325    {
7326        use serde::ser::SerializeStruct;
7327        let mut len = 0;
7328        if !self.name.is_empty() {
7329            len += 1;
7330        }
7331        if !self.request_id.is_empty() {
7332            len += 1;
7333        }
7334        let mut struct_ser = serializer
7335            .serialize_struct(
7336                "origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7337                len,
7338            )?;
7339        if !self.name.is_empty() {
7340            struct_ser.serialize_field("name", &self.name)?;
7341        }
7342        if !self.request_id.is_empty() {
7343            struct_ser.serialize_field("requestId", &self.request_id)?;
7344        }
7345        struct_ser.end()
7346    }
7347}
7348impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupAssociationRequest {
7349    #[allow(deprecated)]
7350    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7351    where
7352        D: serde::Deserializer<'de>,
7353    {
7354        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7355        #[allow(clippy::enum_variant_names)]
7356        enum GeneratedField {
7357            Name,
7358            RequestId,
7359            __SkipField__,
7360        }
7361        impl<'de> serde::Deserialize<'de> for GeneratedField {
7362            fn deserialize<D>(
7363                deserializer: D,
7364            ) -> std::result::Result<GeneratedField, D::Error>
7365            where
7366                D: serde::Deserializer<'de>,
7367            {
7368                struct GeneratedVisitor;
7369                impl serde::de::Visitor<'_> for GeneratedVisitor {
7370                    type Value = GeneratedField;
7371                    fn expecting(
7372                        &self,
7373                        formatter: &mut std::fmt::Formatter<'_>,
7374                    ) -> std::fmt::Result {
7375                        write!(formatter, "expected one of: {:?}", & FIELDS)
7376                    }
7377                    #[allow(unused_variables)]
7378                    fn visit_str<E>(
7379                        self,
7380                        value: &str,
7381                    ) -> std::result::Result<GeneratedField, E>
7382                    where
7383                        E: serde::de::Error,
7384                    {
7385                        match value {
7386                            "name" => Ok(GeneratedField::Name),
7387                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7388                            _ => Ok(GeneratedField::__SkipField__),
7389                        }
7390                    }
7391                }
7392                deserializer.deserialize_identifier(GeneratedVisitor)
7393            }
7394        }
7395        struct GeneratedVisitor;
7396        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7397            type Value = DeleteSecurityGroupAssociationRequest;
7398            fn expecting(
7399                &self,
7400                formatter: &mut std::fmt::Formatter<'_>,
7401            ) -> std::fmt::Result {
7402                formatter
7403                    .write_str(
7404                        "struct origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7405                    )
7406            }
7407            fn visit_map<V>(
7408                self,
7409                mut map_: V,
7410            ) -> std::result::Result<DeleteSecurityGroupAssociationRequest, V::Error>
7411            where
7412                V: serde::de::MapAccess<'de>,
7413            {
7414                let mut name__ = None;
7415                let mut request_id__ = None;
7416                while let Some(k) = map_.next_key()? {
7417                    match k {
7418                        GeneratedField::Name => {
7419                            if name__.is_some() {
7420                                return Err(serde::de::Error::duplicate_field("name"));
7421                            }
7422                            name__ = Some(map_.next_value()?);
7423                        }
7424                        GeneratedField::RequestId => {
7425                            if request_id__.is_some() {
7426                                return Err(serde::de::Error::duplicate_field("requestId"));
7427                            }
7428                            request_id__ = Some(map_.next_value()?);
7429                        }
7430                        GeneratedField::__SkipField__ => {
7431                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7432                        }
7433                    }
7434                }
7435                Ok(DeleteSecurityGroupAssociationRequest {
7436                    name: name__.unwrap_or_default(),
7437                    request_id: request_id__.unwrap_or_default(),
7438                })
7439            }
7440        }
7441        deserializer
7442            .deserialize_struct(
7443                "origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7444                FIELDS,
7445                GeneratedVisitor,
7446            )
7447    }
7448}
7449impl serde::Serialize for DeleteSecurityGroupRequest {
7450    #[allow(deprecated)]
7451    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7452    where
7453        S: serde::Serializer,
7454    {
7455        use serde::ser::SerializeStruct;
7456        let mut len = 0;
7457        if !self.name.is_empty() {
7458            len += 1;
7459        }
7460        if !self.request_id.is_empty() {
7461            len += 1;
7462        }
7463        let mut struct_ser = serializer
7464            .serialize_struct(
7465                "origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7466                len,
7467            )?;
7468        if !self.name.is_empty() {
7469            struct_ser.serialize_field("name", &self.name)?;
7470        }
7471        if !self.request_id.is_empty() {
7472            struct_ser.serialize_field("requestId", &self.request_id)?;
7473        }
7474        struct_ser.end()
7475    }
7476}
7477impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupRequest {
7478    #[allow(deprecated)]
7479    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7480    where
7481        D: serde::Deserializer<'de>,
7482    {
7483        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7484        #[allow(clippy::enum_variant_names)]
7485        enum GeneratedField {
7486            Name,
7487            RequestId,
7488            __SkipField__,
7489        }
7490        impl<'de> serde::Deserialize<'de> for GeneratedField {
7491            fn deserialize<D>(
7492                deserializer: D,
7493            ) -> std::result::Result<GeneratedField, D::Error>
7494            where
7495                D: serde::Deserializer<'de>,
7496            {
7497                struct GeneratedVisitor;
7498                impl serde::de::Visitor<'_> for GeneratedVisitor {
7499                    type Value = GeneratedField;
7500                    fn expecting(
7501                        &self,
7502                        formatter: &mut std::fmt::Formatter<'_>,
7503                    ) -> std::fmt::Result {
7504                        write!(formatter, "expected one of: {:?}", & FIELDS)
7505                    }
7506                    #[allow(unused_variables)]
7507                    fn visit_str<E>(
7508                        self,
7509                        value: &str,
7510                    ) -> std::result::Result<GeneratedField, E>
7511                    where
7512                        E: serde::de::Error,
7513                    {
7514                        match value {
7515                            "name" => Ok(GeneratedField::Name),
7516                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7517                            _ => Ok(GeneratedField::__SkipField__),
7518                        }
7519                    }
7520                }
7521                deserializer.deserialize_identifier(GeneratedVisitor)
7522            }
7523        }
7524        struct GeneratedVisitor;
7525        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7526            type Value = DeleteSecurityGroupRequest;
7527            fn expecting(
7528                &self,
7529                formatter: &mut std::fmt::Formatter<'_>,
7530            ) -> std::fmt::Result {
7531                formatter
7532                    .write_str(
7533                        "struct origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7534                    )
7535            }
7536            fn visit_map<V>(
7537                self,
7538                mut map_: V,
7539            ) -> std::result::Result<DeleteSecurityGroupRequest, V::Error>
7540            where
7541                V: serde::de::MapAccess<'de>,
7542            {
7543                let mut name__ = None;
7544                let mut request_id__ = None;
7545                while let Some(k) = map_.next_key()? {
7546                    match k {
7547                        GeneratedField::Name => {
7548                            if name__.is_some() {
7549                                return Err(serde::de::Error::duplicate_field("name"));
7550                            }
7551                            name__ = Some(map_.next_value()?);
7552                        }
7553                        GeneratedField::RequestId => {
7554                            if request_id__.is_some() {
7555                                return Err(serde::de::Error::duplicate_field("requestId"));
7556                            }
7557                            request_id__ = Some(map_.next_value()?);
7558                        }
7559                        GeneratedField::__SkipField__ => {
7560                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7561                        }
7562                    }
7563                }
7564                Ok(DeleteSecurityGroupRequest {
7565                    name: name__.unwrap_or_default(),
7566                    request_id: request_id__.unwrap_or_default(),
7567                })
7568            }
7569        }
7570        deserializer
7571            .deserialize_struct(
7572                "origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7573                FIELDS,
7574                GeneratedVisitor,
7575            )
7576    }
7577}
7578impl serde::Serialize for DeleteSecurityGroupRuleRequest {
7579    #[allow(deprecated)]
7580    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7581    where
7582        S: serde::Serializer,
7583    {
7584        use serde::ser::SerializeStruct;
7585        let mut len = 0;
7586        if !self.name.is_empty() {
7587            len += 1;
7588        }
7589        if !self.request_id.is_empty() {
7590            len += 1;
7591        }
7592        let mut struct_ser = serializer
7593            .serialize_struct(
7594                "origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7595                len,
7596            )?;
7597        if !self.name.is_empty() {
7598            struct_ser.serialize_field("name", &self.name)?;
7599        }
7600        if !self.request_id.is_empty() {
7601            struct_ser.serialize_field("requestId", &self.request_id)?;
7602        }
7603        struct_ser.end()
7604    }
7605}
7606impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupRuleRequest {
7607    #[allow(deprecated)]
7608    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7609    where
7610        D: serde::Deserializer<'de>,
7611    {
7612        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7613        #[allow(clippy::enum_variant_names)]
7614        enum GeneratedField {
7615            Name,
7616            RequestId,
7617            __SkipField__,
7618        }
7619        impl<'de> serde::Deserialize<'de> for GeneratedField {
7620            fn deserialize<D>(
7621                deserializer: D,
7622            ) -> std::result::Result<GeneratedField, D::Error>
7623            where
7624                D: serde::Deserializer<'de>,
7625            {
7626                struct GeneratedVisitor;
7627                impl serde::de::Visitor<'_> for GeneratedVisitor {
7628                    type Value = GeneratedField;
7629                    fn expecting(
7630                        &self,
7631                        formatter: &mut std::fmt::Formatter<'_>,
7632                    ) -> std::fmt::Result {
7633                        write!(formatter, "expected one of: {:?}", & FIELDS)
7634                    }
7635                    #[allow(unused_variables)]
7636                    fn visit_str<E>(
7637                        self,
7638                        value: &str,
7639                    ) -> std::result::Result<GeneratedField, E>
7640                    where
7641                        E: serde::de::Error,
7642                    {
7643                        match value {
7644                            "name" => Ok(GeneratedField::Name),
7645                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7646                            _ => Ok(GeneratedField::__SkipField__),
7647                        }
7648                    }
7649                }
7650                deserializer.deserialize_identifier(GeneratedVisitor)
7651            }
7652        }
7653        struct GeneratedVisitor;
7654        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7655            type Value = DeleteSecurityGroupRuleRequest;
7656            fn expecting(
7657                &self,
7658                formatter: &mut std::fmt::Formatter<'_>,
7659            ) -> std::fmt::Result {
7660                formatter
7661                    .write_str(
7662                        "struct origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7663                    )
7664            }
7665            fn visit_map<V>(
7666                self,
7667                mut map_: V,
7668            ) -> std::result::Result<DeleteSecurityGroupRuleRequest, V::Error>
7669            where
7670                V: serde::de::MapAccess<'de>,
7671            {
7672                let mut name__ = None;
7673                let mut request_id__ = None;
7674                while let Some(k) = map_.next_key()? {
7675                    match k {
7676                        GeneratedField::Name => {
7677                            if name__.is_some() {
7678                                return Err(serde::de::Error::duplicate_field("name"));
7679                            }
7680                            name__ = Some(map_.next_value()?);
7681                        }
7682                        GeneratedField::RequestId => {
7683                            if request_id__.is_some() {
7684                                return Err(serde::de::Error::duplicate_field("requestId"));
7685                            }
7686                            request_id__ = Some(map_.next_value()?);
7687                        }
7688                        GeneratedField::__SkipField__ => {
7689                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7690                        }
7691                    }
7692                }
7693                Ok(DeleteSecurityGroupRuleRequest {
7694                    name: name__.unwrap_or_default(),
7695                    request_id: request_id__.unwrap_or_default(),
7696                })
7697            }
7698        }
7699        deserializer
7700            .deserialize_struct(
7701                "origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7702                FIELDS,
7703                GeneratedVisitor,
7704            )
7705    }
7706}
7707impl serde::Serialize for DeleteSubnetRequest {
7708    #[allow(deprecated)]
7709    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7710    where
7711        S: serde::Serializer,
7712    {
7713        use serde::ser::SerializeStruct;
7714        let mut len = 0;
7715        if !self.name.is_empty() {
7716            len += 1;
7717        }
7718        if !self.request_id.is_empty() {
7719            len += 1;
7720        }
7721        let mut struct_ser = serializer
7722            .serialize_struct("origincloud.network.v1beta1.DeleteSubnetRequest", len)?;
7723        if !self.name.is_empty() {
7724            struct_ser.serialize_field("name", &self.name)?;
7725        }
7726        if !self.request_id.is_empty() {
7727            struct_ser.serialize_field("requestId", &self.request_id)?;
7728        }
7729        struct_ser.end()
7730    }
7731}
7732impl<'de> serde::Deserialize<'de> for DeleteSubnetRequest {
7733    #[allow(deprecated)]
7734    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7735    where
7736        D: serde::Deserializer<'de>,
7737    {
7738        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7739        #[allow(clippy::enum_variant_names)]
7740        enum GeneratedField {
7741            Name,
7742            RequestId,
7743            __SkipField__,
7744        }
7745        impl<'de> serde::Deserialize<'de> for GeneratedField {
7746            fn deserialize<D>(
7747                deserializer: D,
7748            ) -> std::result::Result<GeneratedField, D::Error>
7749            where
7750                D: serde::Deserializer<'de>,
7751            {
7752                struct GeneratedVisitor;
7753                impl serde::de::Visitor<'_> for GeneratedVisitor {
7754                    type Value = GeneratedField;
7755                    fn expecting(
7756                        &self,
7757                        formatter: &mut std::fmt::Formatter<'_>,
7758                    ) -> std::fmt::Result {
7759                        write!(formatter, "expected one of: {:?}", & FIELDS)
7760                    }
7761                    #[allow(unused_variables)]
7762                    fn visit_str<E>(
7763                        self,
7764                        value: &str,
7765                    ) -> std::result::Result<GeneratedField, E>
7766                    where
7767                        E: serde::de::Error,
7768                    {
7769                        match value {
7770                            "name" => Ok(GeneratedField::Name),
7771                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7772                            _ => Ok(GeneratedField::__SkipField__),
7773                        }
7774                    }
7775                }
7776                deserializer.deserialize_identifier(GeneratedVisitor)
7777            }
7778        }
7779        struct GeneratedVisitor;
7780        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7781            type Value = DeleteSubnetRequest;
7782            fn expecting(
7783                &self,
7784                formatter: &mut std::fmt::Formatter<'_>,
7785            ) -> std::fmt::Result {
7786                formatter
7787                    .write_str("struct origincloud.network.v1beta1.DeleteSubnetRequest")
7788            }
7789            fn visit_map<V>(
7790                self,
7791                mut map_: V,
7792            ) -> std::result::Result<DeleteSubnetRequest, V::Error>
7793            where
7794                V: serde::de::MapAccess<'de>,
7795            {
7796                let mut name__ = None;
7797                let mut request_id__ = None;
7798                while let Some(k) = map_.next_key()? {
7799                    match k {
7800                        GeneratedField::Name => {
7801                            if name__.is_some() {
7802                                return Err(serde::de::Error::duplicate_field("name"));
7803                            }
7804                            name__ = Some(map_.next_value()?);
7805                        }
7806                        GeneratedField::RequestId => {
7807                            if request_id__.is_some() {
7808                                return Err(serde::de::Error::duplicate_field("requestId"));
7809                            }
7810                            request_id__ = Some(map_.next_value()?);
7811                        }
7812                        GeneratedField::__SkipField__ => {
7813                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7814                        }
7815                    }
7816                }
7817                Ok(DeleteSubnetRequest {
7818                    name: name__.unwrap_or_default(),
7819                    request_id: request_id__.unwrap_or_default(),
7820                })
7821            }
7822        }
7823        deserializer
7824            .deserialize_struct(
7825                "origincloud.network.v1beta1.DeleteSubnetRequest",
7826                FIELDS,
7827                GeneratedVisitor,
7828            )
7829    }
7830}
7831impl serde::Serialize for DeleteVpcRequest {
7832    #[allow(deprecated)]
7833    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7834    where
7835        S: serde::Serializer,
7836    {
7837        use serde::ser::SerializeStruct;
7838        let mut len = 0;
7839        if !self.name.is_empty() {
7840            len += 1;
7841        }
7842        if !self.request_id.is_empty() {
7843            len += 1;
7844        }
7845        let mut struct_ser = serializer
7846            .serialize_struct("origincloud.network.v1beta1.DeleteVpcRequest", len)?;
7847        if !self.name.is_empty() {
7848            struct_ser.serialize_field("name", &self.name)?;
7849        }
7850        if !self.request_id.is_empty() {
7851            struct_ser.serialize_field("requestId", &self.request_id)?;
7852        }
7853        struct_ser.end()
7854    }
7855}
7856impl<'de> serde::Deserialize<'de> for DeleteVpcRequest {
7857    #[allow(deprecated)]
7858    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7859    where
7860        D: serde::Deserializer<'de>,
7861    {
7862        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7863        #[allow(clippy::enum_variant_names)]
7864        enum GeneratedField {
7865            Name,
7866            RequestId,
7867            __SkipField__,
7868        }
7869        impl<'de> serde::Deserialize<'de> for GeneratedField {
7870            fn deserialize<D>(
7871                deserializer: D,
7872            ) -> std::result::Result<GeneratedField, D::Error>
7873            where
7874                D: serde::Deserializer<'de>,
7875            {
7876                struct GeneratedVisitor;
7877                impl serde::de::Visitor<'_> for GeneratedVisitor {
7878                    type Value = GeneratedField;
7879                    fn expecting(
7880                        &self,
7881                        formatter: &mut std::fmt::Formatter<'_>,
7882                    ) -> std::fmt::Result {
7883                        write!(formatter, "expected one of: {:?}", & FIELDS)
7884                    }
7885                    #[allow(unused_variables)]
7886                    fn visit_str<E>(
7887                        self,
7888                        value: &str,
7889                    ) -> std::result::Result<GeneratedField, E>
7890                    where
7891                        E: serde::de::Error,
7892                    {
7893                        match value {
7894                            "name" => Ok(GeneratedField::Name),
7895                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7896                            _ => Ok(GeneratedField::__SkipField__),
7897                        }
7898                    }
7899                }
7900                deserializer.deserialize_identifier(GeneratedVisitor)
7901            }
7902        }
7903        struct GeneratedVisitor;
7904        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7905            type Value = DeleteVpcRequest;
7906            fn expecting(
7907                &self,
7908                formatter: &mut std::fmt::Formatter<'_>,
7909            ) -> std::fmt::Result {
7910                formatter
7911                    .write_str("struct origincloud.network.v1beta1.DeleteVpcRequest")
7912            }
7913            fn visit_map<V>(
7914                self,
7915                mut map_: V,
7916            ) -> std::result::Result<DeleteVpcRequest, V::Error>
7917            where
7918                V: serde::de::MapAccess<'de>,
7919            {
7920                let mut name__ = None;
7921                let mut request_id__ = None;
7922                while let Some(k) = map_.next_key()? {
7923                    match k {
7924                        GeneratedField::Name => {
7925                            if name__.is_some() {
7926                                return Err(serde::de::Error::duplicate_field("name"));
7927                            }
7928                            name__ = Some(map_.next_value()?);
7929                        }
7930                        GeneratedField::RequestId => {
7931                            if request_id__.is_some() {
7932                                return Err(serde::de::Error::duplicate_field("requestId"));
7933                            }
7934                            request_id__ = Some(map_.next_value()?);
7935                        }
7936                        GeneratedField::__SkipField__ => {
7937                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7938                        }
7939                    }
7940                }
7941                Ok(DeleteVpcRequest {
7942                    name: name__.unwrap_or_default(),
7943                    request_id: request_id__.unwrap_or_default(),
7944                })
7945            }
7946        }
7947        deserializer
7948            .deserialize_struct(
7949                "origincloud.network.v1beta1.DeleteVpcRequest",
7950                FIELDS,
7951                GeneratedVisitor,
7952            )
7953    }
7954}
7955impl serde::Serialize for DnsPolicy {
7956    #[allow(deprecated)]
7957    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7958    where
7959        S: serde::Serializer,
7960    {
7961        use serde::ser::SerializeStruct;
7962        let mut len = 0;
7963        if !self.name.is_empty() {
7964            len += 1;
7965        }
7966        if !self.urn.is_empty() {
7967            len += 1;
7968        }
7969        if self.project_default {
7970            len += 1;
7971        }
7972        if self.relay_enabled {
7973            len += 1;
7974        }
7975        if !self.upstream_servers.is_empty() {
7976            len += 1;
7977        }
7978        if self.create_time.is_some() {
7979            len += 1;
7980        }
7981        if !self.creator.is_empty() {
7982            len += 1;
7983        }
7984        if !self.tags.is_empty() {
7985            len += 1;
7986        }
7987        let mut struct_ser = serializer
7988            .serialize_struct("origincloud.network.v1beta1.DnsPolicy", len)?;
7989        if !self.name.is_empty() {
7990            struct_ser.serialize_field("name", &self.name)?;
7991        }
7992        if !self.urn.is_empty() {
7993            struct_ser.serialize_field("urn", &self.urn)?;
7994        }
7995        if self.project_default {
7996            struct_ser.serialize_field("projectDefault", &self.project_default)?;
7997        }
7998        if self.relay_enabled {
7999            struct_ser.serialize_field("relayEnabled", &self.relay_enabled)?;
8000        }
8001        if !self.upstream_servers.is_empty() {
8002            struct_ser.serialize_field("upstreamServers", &self.upstream_servers)?;
8003        }
8004        if let Some(v) = self.create_time.as_ref() {
8005            struct_ser.serialize_field("createTime", v)?;
8006        }
8007        if !self.creator.is_empty() {
8008            struct_ser.serialize_field("creator", &self.creator)?;
8009        }
8010        if !self.tags.is_empty() {
8011            struct_ser.serialize_field("tags", &self.tags)?;
8012        }
8013        struct_ser.end()
8014    }
8015}
8016impl<'de> serde::Deserialize<'de> for DnsPolicy {
8017    #[allow(deprecated)]
8018    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8019    where
8020        D: serde::Deserializer<'de>,
8021    {
8022        const FIELDS: &[&str] = &[
8023            "name",
8024            "urn",
8025            "project_default",
8026            "projectDefault",
8027            "relay_enabled",
8028            "relayEnabled",
8029            "upstream_servers",
8030            "upstreamServers",
8031            "create_time",
8032            "createTime",
8033            "creator",
8034            "tags",
8035        ];
8036        #[allow(clippy::enum_variant_names)]
8037        enum GeneratedField {
8038            Name,
8039            Urn,
8040            ProjectDefault,
8041            RelayEnabled,
8042            UpstreamServers,
8043            CreateTime,
8044            Creator,
8045            Tags,
8046            __SkipField__,
8047        }
8048        impl<'de> serde::Deserialize<'de> for GeneratedField {
8049            fn deserialize<D>(
8050                deserializer: D,
8051            ) -> std::result::Result<GeneratedField, D::Error>
8052            where
8053                D: serde::Deserializer<'de>,
8054            {
8055                struct GeneratedVisitor;
8056                impl serde::de::Visitor<'_> for GeneratedVisitor {
8057                    type Value = GeneratedField;
8058                    fn expecting(
8059                        &self,
8060                        formatter: &mut std::fmt::Formatter<'_>,
8061                    ) -> std::fmt::Result {
8062                        write!(formatter, "expected one of: {:?}", & FIELDS)
8063                    }
8064                    #[allow(unused_variables)]
8065                    fn visit_str<E>(
8066                        self,
8067                        value: &str,
8068                    ) -> std::result::Result<GeneratedField, E>
8069                    where
8070                        E: serde::de::Error,
8071                    {
8072                        match value {
8073                            "name" => Ok(GeneratedField::Name),
8074                            "urn" => Ok(GeneratedField::Urn),
8075                            "projectDefault" | "project_default" => {
8076                                Ok(GeneratedField::ProjectDefault)
8077                            }
8078                            "relayEnabled" | "relay_enabled" => {
8079                                Ok(GeneratedField::RelayEnabled)
8080                            }
8081                            "upstreamServers" | "upstream_servers" => {
8082                                Ok(GeneratedField::UpstreamServers)
8083                            }
8084                            "createTime" | "create_time" => {
8085                                Ok(GeneratedField::CreateTime)
8086                            }
8087                            "creator" => Ok(GeneratedField::Creator),
8088                            "tags" => Ok(GeneratedField::Tags),
8089                            _ => Ok(GeneratedField::__SkipField__),
8090                        }
8091                    }
8092                }
8093                deserializer.deserialize_identifier(GeneratedVisitor)
8094            }
8095        }
8096        struct GeneratedVisitor;
8097        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8098            type Value = DnsPolicy;
8099            fn expecting(
8100                &self,
8101                formatter: &mut std::fmt::Formatter<'_>,
8102            ) -> std::fmt::Result {
8103                formatter.write_str("struct origincloud.network.v1beta1.DnsPolicy")
8104            }
8105            fn visit_map<V>(
8106                self,
8107                mut map_: V,
8108            ) -> std::result::Result<DnsPolicy, V::Error>
8109            where
8110                V: serde::de::MapAccess<'de>,
8111            {
8112                let mut name__ = None;
8113                let mut urn__ = None;
8114                let mut project_default__ = None;
8115                let mut relay_enabled__ = None;
8116                let mut upstream_servers__ = None;
8117                let mut create_time__ = None;
8118                let mut creator__ = None;
8119                let mut tags__ = None;
8120                while let Some(k) = map_.next_key()? {
8121                    match k {
8122                        GeneratedField::Name => {
8123                            if name__.is_some() {
8124                                return Err(serde::de::Error::duplicate_field("name"));
8125                            }
8126                            name__ = Some(map_.next_value()?);
8127                        }
8128                        GeneratedField::Urn => {
8129                            if urn__.is_some() {
8130                                return Err(serde::de::Error::duplicate_field("urn"));
8131                            }
8132                            urn__ = Some(map_.next_value()?);
8133                        }
8134                        GeneratedField::ProjectDefault => {
8135                            if project_default__.is_some() {
8136                                return Err(
8137                                    serde::de::Error::duplicate_field("projectDefault"),
8138                                );
8139                            }
8140                            project_default__ = Some(map_.next_value()?);
8141                        }
8142                        GeneratedField::RelayEnabled => {
8143                            if relay_enabled__.is_some() {
8144                                return Err(
8145                                    serde::de::Error::duplicate_field("relayEnabled"),
8146                                );
8147                            }
8148                            relay_enabled__ = Some(map_.next_value()?);
8149                        }
8150                        GeneratedField::UpstreamServers => {
8151                            if upstream_servers__.is_some() {
8152                                return Err(
8153                                    serde::de::Error::duplicate_field("upstreamServers"),
8154                                );
8155                            }
8156                            upstream_servers__ = Some(map_.next_value()?);
8157                        }
8158                        GeneratedField::CreateTime => {
8159                            if create_time__.is_some() {
8160                                return Err(serde::de::Error::duplicate_field("createTime"));
8161                            }
8162                            create_time__ = map_.next_value()?;
8163                        }
8164                        GeneratedField::Creator => {
8165                            if creator__.is_some() {
8166                                return Err(serde::de::Error::duplicate_field("creator"));
8167                            }
8168                            creator__ = Some(map_.next_value()?);
8169                        }
8170                        GeneratedField::Tags => {
8171                            if tags__.is_some() {
8172                                return Err(serde::de::Error::duplicate_field("tags"));
8173                            }
8174                            tags__ = Some(
8175                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
8176                            );
8177                        }
8178                        GeneratedField::__SkipField__ => {
8179                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8180                        }
8181                    }
8182                }
8183                Ok(DnsPolicy {
8184                    name: name__.unwrap_or_default(),
8185                    urn: urn__.unwrap_or_default(),
8186                    project_default: project_default__.unwrap_or_default(),
8187                    relay_enabled: relay_enabled__.unwrap_or_default(),
8188                    upstream_servers: upstream_servers__.unwrap_or_default(),
8189                    create_time: create_time__,
8190                    creator: creator__.unwrap_or_default(),
8191                    tags: tags__.unwrap_or_default(),
8192                })
8193            }
8194        }
8195        deserializer
8196            .deserialize_struct(
8197                "origincloud.network.v1beta1.DnsPolicy",
8198                FIELDS,
8199                GeneratedVisitor,
8200            )
8201    }
8202}
8203impl serde::Serialize for DnsPolicyAssociation {
8204    #[allow(deprecated)]
8205    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8206    where
8207        S: serde::Serializer,
8208    {
8209        use serde::ser::SerializeStruct;
8210        let mut len = 0;
8211        if !self.name.is_empty() {
8212            len += 1;
8213        }
8214        if !self.dns_policy.is_empty() {
8215            len += 1;
8216        }
8217        let mut struct_ser = serializer
8218            .serialize_struct("origincloud.network.v1beta1.DnsPolicyAssociation", len)?;
8219        if !self.name.is_empty() {
8220            struct_ser.serialize_field("name", &self.name)?;
8221        }
8222        if !self.dns_policy.is_empty() {
8223            struct_ser.serialize_field("dnsPolicy", &self.dns_policy)?;
8224        }
8225        struct_ser.end()
8226    }
8227}
8228impl<'de> serde::Deserialize<'de> for DnsPolicyAssociation {
8229    #[allow(deprecated)]
8230    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8231    where
8232        D: serde::Deserializer<'de>,
8233    {
8234        const FIELDS: &[&str] = &["name", "dns_policy", "dnsPolicy"];
8235        #[allow(clippy::enum_variant_names)]
8236        enum GeneratedField {
8237            Name,
8238            DnsPolicy,
8239            __SkipField__,
8240        }
8241        impl<'de> serde::Deserialize<'de> for GeneratedField {
8242            fn deserialize<D>(
8243                deserializer: D,
8244            ) -> std::result::Result<GeneratedField, D::Error>
8245            where
8246                D: serde::Deserializer<'de>,
8247            {
8248                struct GeneratedVisitor;
8249                impl serde::de::Visitor<'_> for GeneratedVisitor {
8250                    type Value = GeneratedField;
8251                    fn expecting(
8252                        &self,
8253                        formatter: &mut std::fmt::Formatter<'_>,
8254                    ) -> std::fmt::Result {
8255                        write!(formatter, "expected one of: {:?}", & FIELDS)
8256                    }
8257                    #[allow(unused_variables)]
8258                    fn visit_str<E>(
8259                        self,
8260                        value: &str,
8261                    ) -> std::result::Result<GeneratedField, E>
8262                    where
8263                        E: serde::de::Error,
8264                    {
8265                        match value {
8266                            "name" => Ok(GeneratedField::Name),
8267                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
8268                            _ => Ok(GeneratedField::__SkipField__),
8269                        }
8270                    }
8271                }
8272                deserializer.deserialize_identifier(GeneratedVisitor)
8273            }
8274        }
8275        struct GeneratedVisitor;
8276        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8277            type Value = DnsPolicyAssociation;
8278            fn expecting(
8279                &self,
8280                formatter: &mut std::fmt::Formatter<'_>,
8281            ) -> std::fmt::Result {
8282                formatter
8283                    .write_str("struct origincloud.network.v1beta1.DnsPolicyAssociation")
8284            }
8285            fn visit_map<V>(
8286                self,
8287                mut map_: V,
8288            ) -> std::result::Result<DnsPolicyAssociation, V::Error>
8289            where
8290                V: serde::de::MapAccess<'de>,
8291            {
8292                let mut name__ = None;
8293                let mut dns_policy__ = None;
8294                while let Some(k) = map_.next_key()? {
8295                    match k {
8296                        GeneratedField::Name => {
8297                            if name__.is_some() {
8298                                return Err(serde::de::Error::duplicate_field("name"));
8299                            }
8300                            name__ = Some(map_.next_value()?);
8301                        }
8302                        GeneratedField::DnsPolicy => {
8303                            if dns_policy__.is_some() {
8304                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
8305                            }
8306                            dns_policy__ = Some(map_.next_value()?);
8307                        }
8308                        GeneratedField::__SkipField__ => {
8309                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8310                        }
8311                    }
8312                }
8313                Ok(DnsPolicyAssociation {
8314                    name: name__.unwrap_or_default(),
8315                    dns_policy: dns_policy__.unwrap_or_default(),
8316                })
8317            }
8318        }
8319        deserializer
8320            .deserialize_struct(
8321                "origincloud.network.v1beta1.DnsPolicyAssociation",
8322                FIELDS,
8323                GeneratedVisitor,
8324            )
8325    }
8326}
8327impl serde::Serialize for FloatingIp {
8328    #[allow(deprecated)]
8329    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8330    where
8331        S: serde::Serializer,
8332    {
8333        use serde::ser::SerializeStruct;
8334        let mut len = 0;
8335        if !self.name.is_empty() {
8336            len += 1;
8337        }
8338        if !self.urn.is_empty() {
8339            len += 1;
8340        }
8341        if !self.address.is_empty() {
8342            len += 1;
8343        }
8344        if !self.network_interface.is_empty() {
8345            len += 1;
8346        }
8347        if !self.private_address.is_empty() {
8348            len += 1;
8349        }
8350        if self.auto_assigned {
8351            len += 1;
8352        }
8353        if self.create_time.is_some() {
8354            len += 1;
8355        }
8356        if !self.creator.is_empty() {
8357            len += 1;
8358        }
8359        if !self.tags.is_empty() {
8360            len += 1;
8361        }
8362        let mut struct_ser = serializer
8363            .serialize_struct("origincloud.network.v1beta1.FloatingIp", len)?;
8364        if !self.name.is_empty() {
8365            struct_ser.serialize_field("name", &self.name)?;
8366        }
8367        if !self.urn.is_empty() {
8368            struct_ser.serialize_field("urn", &self.urn)?;
8369        }
8370        if !self.address.is_empty() {
8371            struct_ser.serialize_field("address", &self.address)?;
8372        }
8373        if !self.network_interface.is_empty() {
8374            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
8375        }
8376        if !self.private_address.is_empty() {
8377            struct_ser.serialize_field("privateAddress", &self.private_address)?;
8378        }
8379        if self.auto_assigned {
8380            struct_ser.serialize_field("autoAssigned", &self.auto_assigned)?;
8381        }
8382        if let Some(v) = self.create_time.as_ref() {
8383            struct_ser.serialize_field("createTime", v)?;
8384        }
8385        if !self.creator.is_empty() {
8386            struct_ser.serialize_field("creator", &self.creator)?;
8387        }
8388        if !self.tags.is_empty() {
8389            struct_ser.serialize_field("tags", &self.tags)?;
8390        }
8391        struct_ser.end()
8392    }
8393}
8394impl<'de> serde::Deserialize<'de> for FloatingIp {
8395    #[allow(deprecated)]
8396    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8397    where
8398        D: serde::Deserializer<'de>,
8399    {
8400        const FIELDS: &[&str] = &[
8401            "name",
8402            "urn",
8403            "address",
8404            "network_interface",
8405            "networkInterface",
8406            "private_address",
8407            "privateAddress",
8408            "auto_assigned",
8409            "autoAssigned",
8410            "create_time",
8411            "createTime",
8412            "creator",
8413            "tags",
8414        ];
8415        #[allow(clippy::enum_variant_names)]
8416        enum GeneratedField {
8417            Name,
8418            Urn,
8419            Address,
8420            NetworkInterface,
8421            PrivateAddress,
8422            AutoAssigned,
8423            CreateTime,
8424            Creator,
8425            Tags,
8426            __SkipField__,
8427        }
8428        impl<'de> serde::Deserialize<'de> for GeneratedField {
8429            fn deserialize<D>(
8430                deserializer: D,
8431            ) -> std::result::Result<GeneratedField, D::Error>
8432            where
8433                D: serde::Deserializer<'de>,
8434            {
8435                struct GeneratedVisitor;
8436                impl serde::de::Visitor<'_> for GeneratedVisitor {
8437                    type Value = GeneratedField;
8438                    fn expecting(
8439                        &self,
8440                        formatter: &mut std::fmt::Formatter<'_>,
8441                    ) -> std::fmt::Result {
8442                        write!(formatter, "expected one of: {:?}", & FIELDS)
8443                    }
8444                    #[allow(unused_variables)]
8445                    fn visit_str<E>(
8446                        self,
8447                        value: &str,
8448                    ) -> std::result::Result<GeneratedField, E>
8449                    where
8450                        E: serde::de::Error,
8451                    {
8452                        match value {
8453                            "name" => Ok(GeneratedField::Name),
8454                            "urn" => Ok(GeneratedField::Urn),
8455                            "address" => Ok(GeneratedField::Address),
8456                            "networkInterface" | "network_interface" => {
8457                                Ok(GeneratedField::NetworkInterface)
8458                            }
8459                            "privateAddress" | "private_address" => {
8460                                Ok(GeneratedField::PrivateAddress)
8461                            }
8462                            "autoAssigned" | "auto_assigned" => {
8463                                Ok(GeneratedField::AutoAssigned)
8464                            }
8465                            "createTime" | "create_time" => {
8466                                Ok(GeneratedField::CreateTime)
8467                            }
8468                            "creator" => Ok(GeneratedField::Creator),
8469                            "tags" => Ok(GeneratedField::Tags),
8470                            _ => Ok(GeneratedField::__SkipField__),
8471                        }
8472                    }
8473                }
8474                deserializer.deserialize_identifier(GeneratedVisitor)
8475            }
8476        }
8477        struct GeneratedVisitor;
8478        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8479            type Value = FloatingIp;
8480            fn expecting(
8481                &self,
8482                formatter: &mut std::fmt::Formatter<'_>,
8483            ) -> std::fmt::Result {
8484                formatter.write_str("struct origincloud.network.v1beta1.FloatingIp")
8485            }
8486            fn visit_map<V>(
8487                self,
8488                mut map_: V,
8489            ) -> std::result::Result<FloatingIp, V::Error>
8490            where
8491                V: serde::de::MapAccess<'de>,
8492            {
8493                let mut name__ = None;
8494                let mut urn__ = None;
8495                let mut address__ = None;
8496                let mut network_interface__ = None;
8497                let mut private_address__ = None;
8498                let mut auto_assigned__ = None;
8499                let mut create_time__ = None;
8500                let mut creator__ = None;
8501                let mut tags__ = None;
8502                while let Some(k) = map_.next_key()? {
8503                    match k {
8504                        GeneratedField::Name => {
8505                            if name__.is_some() {
8506                                return Err(serde::de::Error::duplicate_field("name"));
8507                            }
8508                            name__ = Some(map_.next_value()?);
8509                        }
8510                        GeneratedField::Urn => {
8511                            if urn__.is_some() {
8512                                return Err(serde::de::Error::duplicate_field("urn"));
8513                            }
8514                            urn__ = Some(map_.next_value()?);
8515                        }
8516                        GeneratedField::Address => {
8517                            if address__.is_some() {
8518                                return Err(serde::de::Error::duplicate_field("address"));
8519                            }
8520                            address__ = Some(map_.next_value()?);
8521                        }
8522                        GeneratedField::NetworkInterface => {
8523                            if network_interface__.is_some() {
8524                                return Err(
8525                                    serde::de::Error::duplicate_field("networkInterface"),
8526                                );
8527                            }
8528                            network_interface__ = Some(map_.next_value()?);
8529                        }
8530                        GeneratedField::PrivateAddress => {
8531                            if private_address__.is_some() {
8532                                return Err(
8533                                    serde::de::Error::duplicate_field("privateAddress"),
8534                                );
8535                            }
8536                            private_address__ = Some(map_.next_value()?);
8537                        }
8538                        GeneratedField::AutoAssigned => {
8539                            if auto_assigned__.is_some() {
8540                                return Err(
8541                                    serde::de::Error::duplicate_field("autoAssigned"),
8542                                );
8543                            }
8544                            auto_assigned__ = Some(map_.next_value()?);
8545                        }
8546                        GeneratedField::CreateTime => {
8547                            if create_time__.is_some() {
8548                                return Err(serde::de::Error::duplicate_field("createTime"));
8549                            }
8550                            create_time__ = map_.next_value()?;
8551                        }
8552                        GeneratedField::Creator => {
8553                            if creator__.is_some() {
8554                                return Err(serde::de::Error::duplicate_field("creator"));
8555                            }
8556                            creator__ = Some(map_.next_value()?);
8557                        }
8558                        GeneratedField::Tags => {
8559                            if tags__.is_some() {
8560                                return Err(serde::de::Error::duplicate_field("tags"));
8561                            }
8562                            tags__ = Some(
8563                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
8564                            );
8565                        }
8566                        GeneratedField::__SkipField__ => {
8567                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8568                        }
8569                    }
8570                }
8571                Ok(FloatingIp {
8572                    name: name__.unwrap_or_default(),
8573                    urn: urn__.unwrap_or_default(),
8574                    address: address__.unwrap_or_default(),
8575                    network_interface: network_interface__.unwrap_or_default(),
8576                    private_address: private_address__.unwrap_or_default(),
8577                    auto_assigned: auto_assigned__.unwrap_or_default(),
8578                    create_time: create_time__,
8579                    creator: creator__.unwrap_or_default(),
8580                    tags: tags__.unwrap_or_default(),
8581                })
8582            }
8583        }
8584        deserializer
8585            .deserialize_struct(
8586                "origincloud.network.v1beta1.FloatingIp",
8587                FIELDS,
8588                GeneratedVisitor,
8589            )
8590    }
8591}
8592impl serde::Serialize for FloatingIpAssociation {
8593    #[allow(deprecated)]
8594    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8595    where
8596        S: serde::Serializer,
8597    {
8598        use serde::ser::SerializeStruct;
8599        let mut len = 0;
8600        if !self.name.is_empty() {
8601            len += 1;
8602        }
8603        if !self.network_interface.is_empty() {
8604            len += 1;
8605        }
8606        if !self.private_address.is_empty() {
8607            len += 1;
8608        }
8609        let mut struct_ser = serializer
8610            .serialize_struct("origincloud.network.v1beta1.FloatingIpAssociation", len)?;
8611        if !self.name.is_empty() {
8612            struct_ser.serialize_field("name", &self.name)?;
8613        }
8614        if !self.network_interface.is_empty() {
8615            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
8616        }
8617        if !self.private_address.is_empty() {
8618            struct_ser.serialize_field("privateAddress", &self.private_address)?;
8619        }
8620        struct_ser.end()
8621    }
8622}
8623impl<'de> serde::Deserialize<'de> for FloatingIpAssociation {
8624    #[allow(deprecated)]
8625    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8626    where
8627        D: serde::Deserializer<'de>,
8628    {
8629        const FIELDS: &[&str] = &[
8630            "name",
8631            "network_interface",
8632            "networkInterface",
8633            "private_address",
8634            "privateAddress",
8635        ];
8636        #[allow(clippy::enum_variant_names)]
8637        enum GeneratedField {
8638            Name,
8639            NetworkInterface,
8640            PrivateAddress,
8641            __SkipField__,
8642        }
8643        impl<'de> serde::Deserialize<'de> for GeneratedField {
8644            fn deserialize<D>(
8645                deserializer: D,
8646            ) -> std::result::Result<GeneratedField, D::Error>
8647            where
8648                D: serde::Deserializer<'de>,
8649            {
8650                struct GeneratedVisitor;
8651                impl serde::de::Visitor<'_> for GeneratedVisitor {
8652                    type Value = GeneratedField;
8653                    fn expecting(
8654                        &self,
8655                        formatter: &mut std::fmt::Formatter<'_>,
8656                    ) -> std::fmt::Result {
8657                        write!(formatter, "expected one of: {:?}", & FIELDS)
8658                    }
8659                    #[allow(unused_variables)]
8660                    fn visit_str<E>(
8661                        self,
8662                        value: &str,
8663                    ) -> std::result::Result<GeneratedField, E>
8664                    where
8665                        E: serde::de::Error,
8666                    {
8667                        match value {
8668                            "name" => Ok(GeneratedField::Name),
8669                            "networkInterface" | "network_interface" => {
8670                                Ok(GeneratedField::NetworkInterface)
8671                            }
8672                            "privateAddress" | "private_address" => {
8673                                Ok(GeneratedField::PrivateAddress)
8674                            }
8675                            _ => Ok(GeneratedField::__SkipField__),
8676                        }
8677                    }
8678                }
8679                deserializer.deserialize_identifier(GeneratedVisitor)
8680            }
8681        }
8682        struct GeneratedVisitor;
8683        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8684            type Value = FloatingIpAssociation;
8685            fn expecting(
8686                &self,
8687                formatter: &mut std::fmt::Formatter<'_>,
8688            ) -> std::fmt::Result {
8689                formatter
8690                    .write_str(
8691                        "struct origincloud.network.v1beta1.FloatingIpAssociation",
8692                    )
8693            }
8694            fn visit_map<V>(
8695                self,
8696                mut map_: V,
8697            ) -> std::result::Result<FloatingIpAssociation, V::Error>
8698            where
8699                V: serde::de::MapAccess<'de>,
8700            {
8701                let mut name__ = None;
8702                let mut network_interface__ = None;
8703                let mut private_address__ = None;
8704                while let Some(k) = map_.next_key()? {
8705                    match k {
8706                        GeneratedField::Name => {
8707                            if name__.is_some() {
8708                                return Err(serde::de::Error::duplicate_field("name"));
8709                            }
8710                            name__ = Some(map_.next_value()?);
8711                        }
8712                        GeneratedField::NetworkInterface => {
8713                            if network_interface__.is_some() {
8714                                return Err(
8715                                    serde::de::Error::duplicate_field("networkInterface"),
8716                                );
8717                            }
8718                            network_interface__ = Some(map_.next_value()?);
8719                        }
8720                        GeneratedField::PrivateAddress => {
8721                            if private_address__.is_some() {
8722                                return Err(
8723                                    serde::de::Error::duplicate_field("privateAddress"),
8724                                );
8725                            }
8726                            private_address__ = Some(map_.next_value()?);
8727                        }
8728                        GeneratedField::__SkipField__ => {
8729                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8730                        }
8731                    }
8732                }
8733                Ok(FloatingIpAssociation {
8734                    name: name__.unwrap_or_default(),
8735                    network_interface: network_interface__.unwrap_or_default(),
8736                    private_address: private_address__.unwrap_or_default(),
8737                })
8738            }
8739        }
8740        deserializer
8741            .deserialize_struct(
8742                "origincloud.network.v1beta1.FloatingIpAssociation",
8743                FIELDS,
8744                GeneratedVisitor,
8745            )
8746    }
8747}
8748impl serde::Serialize for GetAclAssociationRequest {
8749    #[allow(deprecated)]
8750    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8751    where
8752        S: serde::Serializer,
8753    {
8754        use serde::ser::SerializeStruct;
8755        let mut len = 0;
8756        if !self.name.is_empty() {
8757            len += 1;
8758        }
8759        let mut struct_ser = serializer
8760            .serialize_struct(
8761                "origincloud.network.v1beta1.GetAclAssociationRequest",
8762                len,
8763            )?;
8764        if !self.name.is_empty() {
8765            struct_ser.serialize_field("name", &self.name)?;
8766        }
8767        struct_ser.end()
8768    }
8769}
8770impl<'de> serde::Deserialize<'de> for GetAclAssociationRequest {
8771    #[allow(deprecated)]
8772    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8773    where
8774        D: serde::Deserializer<'de>,
8775    {
8776        const FIELDS: &[&str] = &["name"];
8777        #[allow(clippy::enum_variant_names)]
8778        enum GeneratedField {
8779            Name,
8780            __SkipField__,
8781        }
8782        impl<'de> serde::Deserialize<'de> for GeneratedField {
8783            fn deserialize<D>(
8784                deserializer: D,
8785            ) -> std::result::Result<GeneratedField, D::Error>
8786            where
8787                D: serde::Deserializer<'de>,
8788            {
8789                struct GeneratedVisitor;
8790                impl serde::de::Visitor<'_> for GeneratedVisitor {
8791                    type Value = GeneratedField;
8792                    fn expecting(
8793                        &self,
8794                        formatter: &mut std::fmt::Formatter<'_>,
8795                    ) -> std::fmt::Result {
8796                        write!(formatter, "expected one of: {:?}", & FIELDS)
8797                    }
8798                    #[allow(unused_variables)]
8799                    fn visit_str<E>(
8800                        self,
8801                        value: &str,
8802                    ) -> std::result::Result<GeneratedField, E>
8803                    where
8804                        E: serde::de::Error,
8805                    {
8806                        match value {
8807                            "name" => Ok(GeneratedField::Name),
8808                            _ => Ok(GeneratedField::__SkipField__),
8809                        }
8810                    }
8811                }
8812                deserializer.deserialize_identifier(GeneratedVisitor)
8813            }
8814        }
8815        struct GeneratedVisitor;
8816        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8817            type Value = GetAclAssociationRequest;
8818            fn expecting(
8819                &self,
8820                formatter: &mut std::fmt::Formatter<'_>,
8821            ) -> std::fmt::Result {
8822                formatter
8823                    .write_str(
8824                        "struct origincloud.network.v1beta1.GetAclAssociationRequest",
8825                    )
8826            }
8827            fn visit_map<V>(
8828                self,
8829                mut map_: V,
8830            ) -> std::result::Result<GetAclAssociationRequest, V::Error>
8831            where
8832                V: serde::de::MapAccess<'de>,
8833            {
8834                let mut name__ = None;
8835                while let Some(k) = map_.next_key()? {
8836                    match k {
8837                        GeneratedField::Name => {
8838                            if name__.is_some() {
8839                                return Err(serde::de::Error::duplicate_field("name"));
8840                            }
8841                            name__ = Some(map_.next_value()?);
8842                        }
8843                        GeneratedField::__SkipField__ => {
8844                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8845                        }
8846                    }
8847                }
8848                Ok(GetAclAssociationRequest {
8849                    name: name__.unwrap_or_default(),
8850                })
8851            }
8852        }
8853        deserializer
8854            .deserialize_struct(
8855                "origincloud.network.v1beta1.GetAclAssociationRequest",
8856                FIELDS,
8857                GeneratedVisitor,
8858            )
8859    }
8860}
8861impl serde::Serialize for GetAclRequest {
8862    #[allow(deprecated)]
8863    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8864    where
8865        S: serde::Serializer,
8866    {
8867        use serde::ser::SerializeStruct;
8868        let mut len = 0;
8869        if !self.name.is_empty() {
8870            len += 1;
8871        }
8872        let mut struct_ser = serializer
8873            .serialize_struct("origincloud.network.v1beta1.GetAclRequest", len)?;
8874        if !self.name.is_empty() {
8875            struct_ser.serialize_field("name", &self.name)?;
8876        }
8877        struct_ser.end()
8878    }
8879}
8880impl<'de> serde::Deserialize<'de> for GetAclRequest {
8881    #[allow(deprecated)]
8882    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8883    where
8884        D: serde::Deserializer<'de>,
8885    {
8886        const FIELDS: &[&str] = &["name"];
8887        #[allow(clippy::enum_variant_names)]
8888        enum GeneratedField {
8889            Name,
8890            __SkipField__,
8891        }
8892        impl<'de> serde::Deserialize<'de> for GeneratedField {
8893            fn deserialize<D>(
8894                deserializer: D,
8895            ) -> std::result::Result<GeneratedField, D::Error>
8896            where
8897                D: serde::Deserializer<'de>,
8898            {
8899                struct GeneratedVisitor;
8900                impl serde::de::Visitor<'_> for GeneratedVisitor {
8901                    type Value = GeneratedField;
8902                    fn expecting(
8903                        &self,
8904                        formatter: &mut std::fmt::Formatter<'_>,
8905                    ) -> std::fmt::Result {
8906                        write!(formatter, "expected one of: {:?}", & FIELDS)
8907                    }
8908                    #[allow(unused_variables)]
8909                    fn visit_str<E>(
8910                        self,
8911                        value: &str,
8912                    ) -> std::result::Result<GeneratedField, E>
8913                    where
8914                        E: serde::de::Error,
8915                    {
8916                        match value {
8917                            "name" => Ok(GeneratedField::Name),
8918                            _ => Ok(GeneratedField::__SkipField__),
8919                        }
8920                    }
8921                }
8922                deserializer.deserialize_identifier(GeneratedVisitor)
8923            }
8924        }
8925        struct GeneratedVisitor;
8926        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8927            type Value = GetAclRequest;
8928            fn expecting(
8929                &self,
8930                formatter: &mut std::fmt::Formatter<'_>,
8931            ) -> std::fmt::Result {
8932                formatter.write_str("struct origincloud.network.v1beta1.GetAclRequest")
8933            }
8934            fn visit_map<V>(
8935                self,
8936                mut map_: V,
8937            ) -> std::result::Result<GetAclRequest, V::Error>
8938            where
8939                V: serde::de::MapAccess<'de>,
8940            {
8941                let mut name__ = None;
8942                while let Some(k) = map_.next_key()? {
8943                    match k {
8944                        GeneratedField::Name => {
8945                            if name__.is_some() {
8946                                return Err(serde::de::Error::duplicate_field("name"));
8947                            }
8948                            name__ = Some(map_.next_value()?);
8949                        }
8950                        GeneratedField::__SkipField__ => {
8951                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8952                        }
8953                    }
8954                }
8955                Ok(GetAclRequest {
8956                    name: name__.unwrap_or_default(),
8957                })
8958            }
8959        }
8960        deserializer
8961            .deserialize_struct(
8962                "origincloud.network.v1beta1.GetAclRequest",
8963                FIELDS,
8964                GeneratedVisitor,
8965            )
8966    }
8967}
8968impl serde::Serialize for GetAclRuleRequest {
8969    #[allow(deprecated)]
8970    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8971    where
8972        S: serde::Serializer,
8973    {
8974        use serde::ser::SerializeStruct;
8975        let mut len = 0;
8976        if !self.name.is_empty() {
8977            len += 1;
8978        }
8979        let mut struct_ser = serializer
8980            .serialize_struct("origincloud.network.v1beta1.GetAclRuleRequest", len)?;
8981        if !self.name.is_empty() {
8982            struct_ser.serialize_field("name", &self.name)?;
8983        }
8984        struct_ser.end()
8985    }
8986}
8987impl<'de> serde::Deserialize<'de> for GetAclRuleRequest {
8988    #[allow(deprecated)]
8989    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8990    where
8991        D: serde::Deserializer<'de>,
8992    {
8993        const FIELDS: &[&str] = &["name"];
8994        #[allow(clippy::enum_variant_names)]
8995        enum GeneratedField {
8996            Name,
8997            __SkipField__,
8998        }
8999        impl<'de> serde::Deserialize<'de> for GeneratedField {
9000            fn deserialize<D>(
9001                deserializer: D,
9002            ) -> std::result::Result<GeneratedField, D::Error>
9003            where
9004                D: serde::Deserializer<'de>,
9005            {
9006                struct GeneratedVisitor;
9007                impl serde::de::Visitor<'_> for GeneratedVisitor {
9008                    type Value = GeneratedField;
9009                    fn expecting(
9010                        &self,
9011                        formatter: &mut std::fmt::Formatter<'_>,
9012                    ) -> std::fmt::Result {
9013                        write!(formatter, "expected one of: {:?}", & FIELDS)
9014                    }
9015                    #[allow(unused_variables)]
9016                    fn visit_str<E>(
9017                        self,
9018                        value: &str,
9019                    ) -> std::result::Result<GeneratedField, E>
9020                    where
9021                        E: serde::de::Error,
9022                    {
9023                        match value {
9024                            "name" => Ok(GeneratedField::Name),
9025                            _ => Ok(GeneratedField::__SkipField__),
9026                        }
9027                    }
9028                }
9029                deserializer.deserialize_identifier(GeneratedVisitor)
9030            }
9031        }
9032        struct GeneratedVisitor;
9033        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9034            type Value = GetAclRuleRequest;
9035            fn expecting(
9036                &self,
9037                formatter: &mut std::fmt::Formatter<'_>,
9038            ) -> std::fmt::Result {
9039                formatter
9040                    .write_str("struct origincloud.network.v1beta1.GetAclRuleRequest")
9041            }
9042            fn visit_map<V>(
9043                self,
9044                mut map_: V,
9045            ) -> std::result::Result<GetAclRuleRequest, V::Error>
9046            where
9047                V: serde::de::MapAccess<'de>,
9048            {
9049                let mut name__ = None;
9050                while let Some(k) = map_.next_key()? {
9051                    match k {
9052                        GeneratedField::Name => {
9053                            if name__.is_some() {
9054                                return Err(serde::de::Error::duplicate_field("name"));
9055                            }
9056                            name__ = Some(map_.next_value()?);
9057                        }
9058                        GeneratedField::__SkipField__ => {
9059                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9060                        }
9061                    }
9062                }
9063                Ok(GetAclRuleRequest {
9064                    name: name__.unwrap_or_default(),
9065                })
9066            }
9067        }
9068        deserializer
9069            .deserialize_struct(
9070                "origincloud.network.v1beta1.GetAclRuleRequest",
9071                FIELDS,
9072                GeneratedVisitor,
9073            )
9074    }
9075}
9076impl serde::Serialize for GetDnsPolicyAssociationRequest {
9077    #[allow(deprecated)]
9078    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9079    where
9080        S: serde::Serializer,
9081    {
9082        use serde::ser::SerializeStruct;
9083        let mut len = 0;
9084        if !self.name.is_empty() {
9085            len += 1;
9086        }
9087        let mut struct_ser = serializer
9088            .serialize_struct(
9089                "origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9090                len,
9091            )?;
9092        if !self.name.is_empty() {
9093            struct_ser.serialize_field("name", &self.name)?;
9094        }
9095        struct_ser.end()
9096    }
9097}
9098impl<'de> serde::Deserialize<'de> for GetDnsPolicyAssociationRequest {
9099    #[allow(deprecated)]
9100    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9101    where
9102        D: serde::Deserializer<'de>,
9103    {
9104        const FIELDS: &[&str] = &["name"];
9105        #[allow(clippy::enum_variant_names)]
9106        enum GeneratedField {
9107            Name,
9108            __SkipField__,
9109        }
9110        impl<'de> serde::Deserialize<'de> for GeneratedField {
9111            fn deserialize<D>(
9112                deserializer: D,
9113            ) -> std::result::Result<GeneratedField, D::Error>
9114            where
9115                D: serde::Deserializer<'de>,
9116            {
9117                struct GeneratedVisitor;
9118                impl serde::de::Visitor<'_> for GeneratedVisitor {
9119                    type Value = GeneratedField;
9120                    fn expecting(
9121                        &self,
9122                        formatter: &mut std::fmt::Formatter<'_>,
9123                    ) -> std::fmt::Result {
9124                        write!(formatter, "expected one of: {:?}", & FIELDS)
9125                    }
9126                    #[allow(unused_variables)]
9127                    fn visit_str<E>(
9128                        self,
9129                        value: &str,
9130                    ) -> std::result::Result<GeneratedField, E>
9131                    where
9132                        E: serde::de::Error,
9133                    {
9134                        match value {
9135                            "name" => Ok(GeneratedField::Name),
9136                            _ => Ok(GeneratedField::__SkipField__),
9137                        }
9138                    }
9139                }
9140                deserializer.deserialize_identifier(GeneratedVisitor)
9141            }
9142        }
9143        struct GeneratedVisitor;
9144        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9145            type Value = GetDnsPolicyAssociationRequest;
9146            fn expecting(
9147                &self,
9148                formatter: &mut std::fmt::Formatter<'_>,
9149            ) -> std::fmt::Result {
9150                formatter
9151                    .write_str(
9152                        "struct origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9153                    )
9154            }
9155            fn visit_map<V>(
9156                self,
9157                mut map_: V,
9158            ) -> std::result::Result<GetDnsPolicyAssociationRequest, V::Error>
9159            where
9160                V: serde::de::MapAccess<'de>,
9161            {
9162                let mut name__ = None;
9163                while let Some(k) = map_.next_key()? {
9164                    match k {
9165                        GeneratedField::Name => {
9166                            if name__.is_some() {
9167                                return Err(serde::de::Error::duplicate_field("name"));
9168                            }
9169                            name__ = Some(map_.next_value()?);
9170                        }
9171                        GeneratedField::__SkipField__ => {
9172                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9173                        }
9174                    }
9175                }
9176                Ok(GetDnsPolicyAssociationRequest {
9177                    name: name__.unwrap_or_default(),
9178                })
9179            }
9180        }
9181        deserializer
9182            .deserialize_struct(
9183                "origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9184                FIELDS,
9185                GeneratedVisitor,
9186            )
9187    }
9188}
9189impl serde::Serialize for GetDnsPolicyRequest {
9190    #[allow(deprecated)]
9191    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9192    where
9193        S: serde::Serializer,
9194    {
9195        use serde::ser::SerializeStruct;
9196        let mut len = 0;
9197        if !self.name.is_empty() {
9198            len += 1;
9199        }
9200        let mut struct_ser = serializer
9201            .serialize_struct("origincloud.network.v1beta1.GetDnsPolicyRequest", len)?;
9202        if !self.name.is_empty() {
9203            struct_ser.serialize_field("name", &self.name)?;
9204        }
9205        struct_ser.end()
9206    }
9207}
9208impl<'de> serde::Deserialize<'de> for GetDnsPolicyRequest {
9209    #[allow(deprecated)]
9210    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9211    where
9212        D: serde::Deserializer<'de>,
9213    {
9214        const FIELDS: &[&str] = &["name"];
9215        #[allow(clippy::enum_variant_names)]
9216        enum GeneratedField {
9217            Name,
9218            __SkipField__,
9219        }
9220        impl<'de> serde::Deserialize<'de> for GeneratedField {
9221            fn deserialize<D>(
9222                deserializer: D,
9223            ) -> std::result::Result<GeneratedField, D::Error>
9224            where
9225                D: serde::Deserializer<'de>,
9226            {
9227                struct GeneratedVisitor;
9228                impl serde::de::Visitor<'_> for GeneratedVisitor {
9229                    type Value = GeneratedField;
9230                    fn expecting(
9231                        &self,
9232                        formatter: &mut std::fmt::Formatter<'_>,
9233                    ) -> std::fmt::Result {
9234                        write!(formatter, "expected one of: {:?}", & FIELDS)
9235                    }
9236                    #[allow(unused_variables)]
9237                    fn visit_str<E>(
9238                        self,
9239                        value: &str,
9240                    ) -> std::result::Result<GeneratedField, E>
9241                    where
9242                        E: serde::de::Error,
9243                    {
9244                        match value {
9245                            "name" => Ok(GeneratedField::Name),
9246                            _ => Ok(GeneratedField::__SkipField__),
9247                        }
9248                    }
9249                }
9250                deserializer.deserialize_identifier(GeneratedVisitor)
9251            }
9252        }
9253        struct GeneratedVisitor;
9254        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9255            type Value = GetDnsPolicyRequest;
9256            fn expecting(
9257                &self,
9258                formatter: &mut std::fmt::Formatter<'_>,
9259            ) -> std::fmt::Result {
9260                formatter
9261                    .write_str("struct origincloud.network.v1beta1.GetDnsPolicyRequest")
9262            }
9263            fn visit_map<V>(
9264                self,
9265                mut map_: V,
9266            ) -> std::result::Result<GetDnsPolicyRequest, V::Error>
9267            where
9268                V: serde::de::MapAccess<'de>,
9269            {
9270                let mut name__ = None;
9271                while let Some(k) = map_.next_key()? {
9272                    match k {
9273                        GeneratedField::Name => {
9274                            if name__.is_some() {
9275                                return Err(serde::de::Error::duplicate_field("name"));
9276                            }
9277                            name__ = Some(map_.next_value()?);
9278                        }
9279                        GeneratedField::__SkipField__ => {
9280                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9281                        }
9282                    }
9283                }
9284                Ok(GetDnsPolicyRequest {
9285                    name: name__.unwrap_or_default(),
9286                })
9287            }
9288        }
9289        deserializer
9290            .deserialize_struct(
9291                "origincloud.network.v1beta1.GetDnsPolicyRequest",
9292                FIELDS,
9293                GeneratedVisitor,
9294            )
9295    }
9296}
9297impl serde::Serialize for GetFloatingIpAssociationRequest {
9298    #[allow(deprecated)]
9299    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9300    where
9301        S: serde::Serializer,
9302    {
9303        use serde::ser::SerializeStruct;
9304        let mut len = 0;
9305        if !self.name.is_empty() {
9306            len += 1;
9307        }
9308        let mut struct_ser = serializer
9309            .serialize_struct(
9310                "origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9311                len,
9312            )?;
9313        if !self.name.is_empty() {
9314            struct_ser.serialize_field("name", &self.name)?;
9315        }
9316        struct_ser.end()
9317    }
9318}
9319impl<'de> serde::Deserialize<'de> for GetFloatingIpAssociationRequest {
9320    #[allow(deprecated)]
9321    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9322    where
9323        D: serde::Deserializer<'de>,
9324    {
9325        const FIELDS: &[&str] = &["name"];
9326        #[allow(clippy::enum_variant_names)]
9327        enum GeneratedField {
9328            Name,
9329            __SkipField__,
9330        }
9331        impl<'de> serde::Deserialize<'de> for GeneratedField {
9332            fn deserialize<D>(
9333                deserializer: D,
9334            ) -> std::result::Result<GeneratedField, D::Error>
9335            where
9336                D: serde::Deserializer<'de>,
9337            {
9338                struct GeneratedVisitor;
9339                impl serde::de::Visitor<'_> for GeneratedVisitor {
9340                    type Value = GeneratedField;
9341                    fn expecting(
9342                        &self,
9343                        formatter: &mut std::fmt::Formatter<'_>,
9344                    ) -> std::fmt::Result {
9345                        write!(formatter, "expected one of: {:?}", & FIELDS)
9346                    }
9347                    #[allow(unused_variables)]
9348                    fn visit_str<E>(
9349                        self,
9350                        value: &str,
9351                    ) -> std::result::Result<GeneratedField, E>
9352                    where
9353                        E: serde::de::Error,
9354                    {
9355                        match value {
9356                            "name" => Ok(GeneratedField::Name),
9357                            _ => Ok(GeneratedField::__SkipField__),
9358                        }
9359                    }
9360                }
9361                deserializer.deserialize_identifier(GeneratedVisitor)
9362            }
9363        }
9364        struct GeneratedVisitor;
9365        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9366            type Value = GetFloatingIpAssociationRequest;
9367            fn expecting(
9368                &self,
9369                formatter: &mut std::fmt::Formatter<'_>,
9370            ) -> std::fmt::Result {
9371                formatter
9372                    .write_str(
9373                        "struct origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9374                    )
9375            }
9376            fn visit_map<V>(
9377                self,
9378                mut map_: V,
9379            ) -> std::result::Result<GetFloatingIpAssociationRequest, V::Error>
9380            where
9381                V: serde::de::MapAccess<'de>,
9382            {
9383                let mut name__ = None;
9384                while let Some(k) = map_.next_key()? {
9385                    match k {
9386                        GeneratedField::Name => {
9387                            if name__.is_some() {
9388                                return Err(serde::de::Error::duplicate_field("name"));
9389                            }
9390                            name__ = Some(map_.next_value()?);
9391                        }
9392                        GeneratedField::__SkipField__ => {
9393                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9394                        }
9395                    }
9396                }
9397                Ok(GetFloatingIpAssociationRequest {
9398                    name: name__.unwrap_or_default(),
9399                })
9400            }
9401        }
9402        deserializer
9403            .deserialize_struct(
9404                "origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9405                FIELDS,
9406                GeneratedVisitor,
9407            )
9408    }
9409}
9410impl serde::Serialize for GetFloatingIpRequest {
9411    #[allow(deprecated)]
9412    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9413    where
9414        S: serde::Serializer,
9415    {
9416        use serde::ser::SerializeStruct;
9417        let mut len = 0;
9418        if !self.name.is_empty() {
9419            len += 1;
9420        }
9421        let mut struct_ser = serializer
9422            .serialize_struct("origincloud.network.v1beta1.GetFloatingIpRequest", len)?;
9423        if !self.name.is_empty() {
9424            struct_ser.serialize_field("name", &self.name)?;
9425        }
9426        struct_ser.end()
9427    }
9428}
9429impl<'de> serde::Deserialize<'de> for GetFloatingIpRequest {
9430    #[allow(deprecated)]
9431    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9432    where
9433        D: serde::Deserializer<'de>,
9434    {
9435        const FIELDS: &[&str] = &["name"];
9436        #[allow(clippy::enum_variant_names)]
9437        enum GeneratedField {
9438            Name,
9439            __SkipField__,
9440        }
9441        impl<'de> serde::Deserialize<'de> for GeneratedField {
9442            fn deserialize<D>(
9443                deserializer: D,
9444            ) -> std::result::Result<GeneratedField, D::Error>
9445            where
9446                D: serde::Deserializer<'de>,
9447            {
9448                struct GeneratedVisitor;
9449                impl serde::de::Visitor<'_> for GeneratedVisitor {
9450                    type Value = GeneratedField;
9451                    fn expecting(
9452                        &self,
9453                        formatter: &mut std::fmt::Formatter<'_>,
9454                    ) -> std::fmt::Result {
9455                        write!(formatter, "expected one of: {:?}", & FIELDS)
9456                    }
9457                    #[allow(unused_variables)]
9458                    fn visit_str<E>(
9459                        self,
9460                        value: &str,
9461                    ) -> std::result::Result<GeneratedField, E>
9462                    where
9463                        E: serde::de::Error,
9464                    {
9465                        match value {
9466                            "name" => Ok(GeneratedField::Name),
9467                            _ => Ok(GeneratedField::__SkipField__),
9468                        }
9469                    }
9470                }
9471                deserializer.deserialize_identifier(GeneratedVisitor)
9472            }
9473        }
9474        struct GeneratedVisitor;
9475        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9476            type Value = GetFloatingIpRequest;
9477            fn expecting(
9478                &self,
9479                formatter: &mut std::fmt::Formatter<'_>,
9480            ) -> std::fmt::Result {
9481                formatter
9482                    .write_str("struct origincloud.network.v1beta1.GetFloatingIpRequest")
9483            }
9484            fn visit_map<V>(
9485                self,
9486                mut map_: V,
9487            ) -> std::result::Result<GetFloatingIpRequest, V::Error>
9488            where
9489                V: serde::de::MapAccess<'de>,
9490            {
9491                let mut name__ = None;
9492                while let Some(k) = map_.next_key()? {
9493                    match k {
9494                        GeneratedField::Name => {
9495                            if name__.is_some() {
9496                                return Err(serde::de::Error::duplicate_field("name"));
9497                            }
9498                            name__ = Some(map_.next_value()?);
9499                        }
9500                        GeneratedField::__SkipField__ => {
9501                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9502                        }
9503                    }
9504                }
9505                Ok(GetFloatingIpRequest {
9506                    name: name__.unwrap_or_default(),
9507                })
9508            }
9509        }
9510        deserializer
9511            .deserialize_struct(
9512                "origincloud.network.v1beta1.GetFloatingIpRequest",
9513                FIELDS,
9514                GeneratedVisitor,
9515            )
9516    }
9517}
9518impl serde::Serialize for GetInternetGatewayRequest {
9519    #[allow(deprecated)]
9520    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9521    where
9522        S: serde::Serializer,
9523    {
9524        use serde::ser::SerializeStruct;
9525        let mut len = 0;
9526        if !self.name.is_empty() {
9527            len += 1;
9528        }
9529        let mut struct_ser = serializer
9530            .serialize_struct(
9531                "origincloud.network.v1beta1.GetInternetGatewayRequest",
9532                len,
9533            )?;
9534        if !self.name.is_empty() {
9535            struct_ser.serialize_field("name", &self.name)?;
9536        }
9537        struct_ser.end()
9538    }
9539}
9540impl<'de> serde::Deserialize<'de> for GetInternetGatewayRequest {
9541    #[allow(deprecated)]
9542    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9543    where
9544        D: serde::Deserializer<'de>,
9545    {
9546        const FIELDS: &[&str] = &["name"];
9547        #[allow(clippy::enum_variant_names)]
9548        enum GeneratedField {
9549            Name,
9550            __SkipField__,
9551        }
9552        impl<'de> serde::Deserialize<'de> for GeneratedField {
9553            fn deserialize<D>(
9554                deserializer: D,
9555            ) -> std::result::Result<GeneratedField, D::Error>
9556            where
9557                D: serde::Deserializer<'de>,
9558            {
9559                struct GeneratedVisitor;
9560                impl serde::de::Visitor<'_> for GeneratedVisitor {
9561                    type Value = GeneratedField;
9562                    fn expecting(
9563                        &self,
9564                        formatter: &mut std::fmt::Formatter<'_>,
9565                    ) -> std::fmt::Result {
9566                        write!(formatter, "expected one of: {:?}", & FIELDS)
9567                    }
9568                    #[allow(unused_variables)]
9569                    fn visit_str<E>(
9570                        self,
9571                        value: &str,
9572                    ) -> std::result::Result<GeneratedField, E>
9573                    where
9574                        E: serde::de::Error,
9575                    {
9576                        match value {
9577                            "name" => Ok(GeneratedField::Name),
9578                            _ => Ok(GeneratedField::__SkipField__),
9579                        }
9580                    }
9581                }
9582                deserializer.deserialize_identifier(GeneratedVisitor)
9583            }
9584        }
9585        struct GeneratedVisitor;
9586        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9587            type Value = GetInternetGatewayRequest;
9588            fn expecting(
9589                &self,
9590                formatter: &mut std::fmt::Formatter<'_>,
9591            ) -> std::fmt::Result {
9592                formatter
9593                    .write_str(
9594                        "struct origincloud.network.v1beta1.GetInternetGatewayRequest",
9595                    )
9596            }
9597            fn visit_map<V>(
9598                self,
9599                mut map_: V,
9600            ) -> std::result::Result<GetInternetGatewayRequest, V::Error>
9601            where
9602                V: serde::de::MapAccess<'de>,
9603            {
9604                let mut name__ = None;
9605                while let Some(k) = map_.next_key()? {
9606                    match k {
9607                        GeneratedField::Name => {
9608                            if name__.is_some() {
9609                                return Err(serde::de::Error::duplicate_field("name"));
9610                            }
9611                            name__ = Some(map_.next_value()?);
9612                        }
9613                        GeneratedField::__SkipField__ => {
9614                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9615                        }
9616                    }
9617                }
9618                Ok(GetInternetGatewayRequest {
9619                    name: name__.unwrap_or_default(),
9620                })
9621            }
9622        }
9623        deserializer
9624            .deserialize_struct(
9625                "origincloud.network.v1beta1.GetInternetGatewayRequest",
9626                FIELDS,
9627                GeneratedVisitor,
9628            )
9629    }
9630}
9631impl serde::Serialize for GetNatGatewayRequest {
9632    #[allow(deprecated)]
9633    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9634    where
9635        S: serde::Serializer,
9636    {
9637        use serde::ser::SerializeStruct;
9638        let mut len = 0;
9639        if !self.name.is_empty() {
9640            len += 1;
9641        }
9642        let mut struct_ser = serializer
9643            .serialize_struct("origincloud.network.v1beta1.GetNatGatewayRequest", len)?;
9644        if !self.name.is_empty() {
9645            struct_ser.serialize_field("name", &self.name)?;
9646        }
9647        struct_ser.end()
9648    }
9649}
9650impl<'de> serde::Deserialize<'de> for GetNatGatewayRequest {
9651    #[allow(deprecated)]
9652    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9653    where
9654        D: serde::Deserializer<'de>,
9655    {
9656        const FIELDS: &[&str] = &["name"];
9657        #[allow(clippy::enum_variant_names)]
9658        enum GeneratedField {
9659            Name,
9660            __SkipField__,
9661        }
9662        impl<'de> serde::Deserialize<'de> for GeneratedField {
9663            fn deserialize<D>(
9664                deserializer: D,
9665            ) -> std::result::Result<GeneratedField, D::Error>
9666            where
9667                D: serde::Deserializer<'de>,
9668            {
9669                struct GeneratedVisitor;
9670                impl serde::de::Visitor<'_> for GeneratedVisitor {
9671                    type Value = GeneratedField;
9672                    fn expecting(
9673                        &self,
9674                        formatter: &mut std::fmt::Formatter<'_>,
9675                    ) -> std::fmt::Result {
9676                        write!(formatter, "expected one of: {:?}", & FIELDS)
9677                    }
9678                    #[allow(unused_variables)]
9679                    fn visit_str<E>(
9680                        self,
9681                        value: &str,
9682                    ) -> std::result::Result<GeneratedField, E>
9683                    where
9684                        E: serde::de::Error,
9685                    {
9686                        match value {
9687                            "name" => Ok(GeneratedField::Name),
9688                            _ => Ok(GeneratedField::__SkipField__),
9689                        }
9690                    }
9691                }
9692                deserializer.deserialize_identifier(GeneratedVisitor)
9693            }
9694        }
9695        struct GeneratedVisitor;
9696        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9697            type Value = GetNatGatewayRequest;
9698            fn expecting(
9699                &self,
9700                formatter: &mut std::fmt::Formatter<'_>,
9701            ) -> std::fmt::Result {
9702                formatter
9703                    .write_str("struct origincloud.network.v1beta1.GetNatGatewayRequest")
9704            }
9705            fn visit_map<V>(
9706                self,
9707                mut map_: V,
9708            ) -> std::result::Result<GetNatGatewayRequest, V::Error>
9709            where
9710                V: serde::de::MapAccess<'de>,
9711            {
9712                let mut name__ = None;
9713                while let Some(k) = map_.next_key()? {
9714                    match k {
9715                        GeneratedField::Name => {
9716                            if name__.is_some() {
9717                                return Err(serde::de::Error::duplicate_field("name"));
9718                            }
9719                            name__ = Some(map_.next_value()?);
9720                        }
9721                        GeneratedField::__SkipField__ => {
9722                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9723                        }
9724                    }
9725                }
9726                Ok(GetNatGatewayRequest {
9727                    name: name__.unwrap_or_default(),
9728                })
9729            }
9730        }
9731        deserializer
9732            .deserialize_struct(
9733                "origincloud.network.v1beta1.GetNatGatewayRequest",
9734                FIELDS,
9735                GeneratedVisitor,
9736            )
9737    }
9738}
9739impl serde::Serialize for GetNetworkInterfaceRequest {
9740    #[allow(deprecated)]
9741    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9742    where
9743        S: serde::Serializer,
9744    {
9745        use serde::ser::SerializeStruct;
9746        let mut len = 0;
9747        if !self.name.is_empty() {
9748            len += 1;
9749        }
9750        let mut struct_ser = serializer
9751            .serialize_struct(
9752                "origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9753                len,
9754            )?;
9755        if !self.name.is_empty() {
9756            struct_ser.serialize_field("name", &self.name)?;
9757        }
9758        struct_ser.end()
9759    }
9760}
9761impl<'de> serde::Deserialize<'de> for GetNetworkInterfaceRequest {
9762    #[allow(deprecated)]
9763    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9764    where
9765        D: serde::Deserializer<'de>,
9766    {
9767        const FIELDS: &[&str] = &["name"];
9768        #[allow(clippy::enum_variant_names)]
9769        enum GeneratedField {
9770            Name,
9771            __SkipField__,
9772        }
9773        impl<'de> serde::Deserialize<'de> for GeneratedField {
9774            fn deserialize<D>(
9775                deserializer: D,
9776            ) -> std::result::Result<GeneratedField, D::Error>
9777            where
9778                D: serde::Deserializer<'de>,
9779            {
9780                struct GeneratedVisitor;
9781                impl serde::de::Visitor<'_> for GeneratedVisitor {
9782                    type Value = GeneratedField;
9783                    fn expecting(
9784                        &self,
9785                        formatter: &mut std::fmt::Formatter<'_>,
9786                    ) -> std::fmt::Result {
9787                        write!(formatter, "expected one of: {:?}", & FIELDS)
9788                    }
9789                    #[allow(unused_variables)]
9790                    fn visit_str<E>(
9791                        self,
9792                        value: &str,
9793                    ) -> std::result::Result<GeneratedField, E>
9794                    where
9795                        E: serde::de::Error,
9796                    {
9797                        match value {
9798                            "name" => Ok(GeneratedField::Name),
9799                            _ => Ok(GeneratedField::__SkipField__),
9800                        }
9801                    }
9802                }
9803                deserializer.deserialize_identifier(GeneratedVisitor)
9804            }
9805        }
9806        struct GeneratedVisitor;
9807        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9808            type Value = GetNetworkInterfaceRequest;
9809            fn expecting(
9810                &self,
9811                formatter: &mut std::fmt::Formatter<'_>,
9812            ) -> std::fmt::Result {
9813                formatter
9814                    .write_str(
9815                        "struct origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9816                    )
9817            }
9818            fn visit_map<V>(
9819                self,
9820                mut map_: V,
9821            ) -> std::result::Result<GetNetworkInterfaceRequest, V::Error>
9822            where
9823                V: serde::de::MapAccess<'de>,
9824            {
9825                let mut name__ = None;
9826                while let Some(k) = map_.next_key()? {
9827                    match k {
9828                        GeneratedField::Name => {
9829                            if name__.is_some() {
9830                                return Err(serde::de::Error::duplicate_field("name"));
9831                            }
9832                            name__ = Some(map_.next_value()?);
9833                        }
9834                        GeneratedField::__SkipField__ => {
9835                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9836                        }
9837                    }
9838                }
9839                Ok(GetNetworkInterfaceRequest {
9840                    name: name__.unwrap_or_default(),
9841                })
9842            }
9843        }
9844        deserializer
9845            .deserialize_struct(
9846                "origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9847                FIELDS,
9848                GeneratedVisitor,
9849            )
9850    }
9851}
9852impl serde::Serialize for GetRouteRequest {
9853    #[allow(deprecated)]
9854    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9855    where
9856        S: serde::Serializer,
9857    {
9858        use serde::ser::SerializeStruct;
9859        let mut len = 0;
9860        if !self.name.is_empty() {
9861            len += 1;
9862        }
9863        let mut struct_ser = serializer
9864            .serialize_struct("origincloud.network.v1beta1.GetRouteRequest", len)?;
9865        if !self.name.is_empty() {
9866            struct_ser.serialize_field("name", &self.name)?;
9867        }
9868        struct_ser.end()
9869    }
9870}
9871impl<'de> serde::Deserialize<'de> for GetRouteRequest {
9872    #[allow(deprecated)]
9873    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9874    where
9875        D: serde::Deserializer<'de>,
9876    {
9877        const FIELDS: &[&str] = &["name"];
9878        #[allow(clippy::enum_variant_names)]
9879        enum GeneratedField {
9880            Name,
9881            __SkipField__,
9882        }
9883        impl<'de> serde::Deserialize<'de> for GeneratedField {
9884            fn deserialize<D>(
9885                deserializer: D,
9886            ) -> std::result::Result<GeneratedField, D::Error>
9887            where
9888                D: serde::Deserializer<'de>,
9889            {
9890                struct GeneratedVisitor;
9891                impl serde::de::Visitor<'_> for GeneratedVisitor {
9892                    type Value = GeneratedField;
9893                    fn expecting(
9894                        &self,
9895                        formatter: &mut std::fmt::Formatter<'_>,
9896                    ) -> std::fmt::Result {
9897                        write!(formatter, "expected one of: {:?}", & FIELDS)
9898                    }
9899                    #[allow(unused_variables)]
9900                    fn visit_str<E>(
9901                        self,
9902                        value: &str,
9903                    ) -> std::result::Result<GeneratedField, E>
9904                    where
9905                        E: serde::de::Error,
9906                    {
9907                        match value {
9908                            "name" => Ok(GeneratedField::Name),
9909                            _ => Ok(GeneratedField::__SkipField__),
9910                        }
9911                    }
9912                }
9913                deserializer.deserialize_identifier(GeneratedVisitor)
9914            }
9915        }
9916        struct GeneratedVisitor;
9917        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9918            type Value = GetRouteRequest;
9919            fn expecting(
9920                &self,
9921                formatter: &mut std::fmt::Formatter<'_>,
9922            ) -> std::fmt::Result {
9923                formatter.write_str("struct origincloud.network.v1beta1.GetRouteRequest")
9924            }
9925            fn visit_map<V>(
9926                self,
9927                mut map_: V,
9928            ) -> std::result::Result<GetRouteRequest, V::Error>
9929            where
9930                V: serde::de::MapAccess<'de>,
9931            {
9932                let mut name__ = None;
9933                while let Some(k) = map_.next_key()? {
9934                    match k {
9935                        GeneratedField::Name => {
9936                            if name__.is_some() {
9937                                return Err(serde::de::Error::duplicate_field("name"));
9938                            }
9939                            name__ = Some(map_.next_value()?);
9940                        }
9941                        GeneratedField::__SkipField__ => {
9942                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9943                        }
9944                    }
9945                }
9946                Ok(GetRouteRequest {
9947                    name: name__.unwrap_or_default(),
9948                })
9949            }
9950        }
9951        deserializer
9952            .deserialize_struct(
9953                "origincloud.network.v1beta1.GetRouteRequest",
9954                FIELDS,
9955                GeneratedVisitor,
9956            )
9957    }
9958}
9959impl serde::Serialize for GetRouteTableAssociationRequest {
9960    #[allow(deprecated)]
9961    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9962    where
9963        S: serde::Serializer,
9964    {
9965        use serde::ser::SerializeStruct;
9966        let mut len = 0;
9967        if !self.name.is_empty() {
9968            len += 1;
9969        }
9970        let mut struct_ser = serializer
9971            .serialize_struct(
9972                "origincloud.network.v1beta1.GetRouteTableAssociationRequest",
9973                len,
9974            )?;
9975        if !self.name.is_empty() {
9976            struct_ser.serialize_field("name", &self.name)?;
9977        }
9978        struct_ser.end()
9979    }
9980}
9981impl<'de> serde::Deserialize<'de> for GetRouteTableAssociationRequest {
9982    #[allow(deprecated)]
9983    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9984    where
9985        D: serde::Deserializer<'de>,
9986    {
9987        const FIELDS: &[&str] = &["name"];
9988        #[allow(clippy::enum_variant_names)]
9989        enum GeneratedField {
9990            Name,
9991            __SkipField__,
9992        }
9993        impl<'de> serde::Deserialize<'de> for GeneratedField {
9994            fn deserialize<D>(
9995                deserializer: D,
9996            ) -> std::result::Result<GeneratedField, D::Error>
9997            where
9998                D: serde::Deserializer<'de>,
9999            {
10000                struct GeneratedVisitor;
10001                impl serde::de::Visitor<'_> for GeneratedVisitor {
10002                    type Value = GeneratedField;
10003                    fn expecting(
10004                        &self,
10005                        formatter: &mut std::fmt::Formatter<'_>,
10006                    ) -> std::fmt::Result {
10007                        write!(formatter, "expected one of: {:?}", & FIELDS)
10008                    }
10009                    #[allow(unused_variables)]
10010                    fn visit_str<E>(
10011                        self,
10012                        value: &str,
10013                    ) -> std::result::Result<GeneratedField, E>
10014                    where
10015                        E: serde::de::Error,
10016                    {
10017                        match value {
10018                            "name" => Ok(GeneratedField::Name),
10019                            _ => Ok(GeneratedField::__SkipField__),
10020                        }
10021                    }
10022                }
10023                deserializer.deserialize_identifier(GeneratedVisitor)
10024            }
10025        }
10026        struct GeneratedVisitor;
10027        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10028            type Value = GetRouteTableAssociationRequest;
10029            fn expecting(
10030                &self,
10031                formatter: &mut std::fmt::Formatter<'_>,
10032            ) -> std::fmt::Result {
10033                formatter
10034                    .write_str(
10035                        "struct origincloud.network.v1beta1.GetRouteTableAssociationRequest",
10036                    )
10037            }
10038            fn visit_map<V>(
10039                self,
10040                mut map_: V,
10041            ) -> std::result::Result<GetRouteTableAssociationRequest, V::Error>
10042            where
10043                V: serde::de::MapAccess<'de>,
10044            {
10045                let mut name__ = None;
10046                while let Some(k) = map_.next_key()? {
10047                    match k {
10048                        GeneratedField::Name => {
10049                            if name__.is_some() {
10050                                return Err(serde::de::Error::duplicate_field("name"));
10051                            }
10052                            name__ = Some(map_.next_value()?);
10053                        }
10054                        GeneratedField::__SkipField__ => {
10055                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10056                        }
10057                    }
10058                }
10059                Ok(GetRouteTableAssociationRequest {
10060                    name: name__.unwrap_or_default(),
10061                })
10062            }
10063        }
10064        deserializer
10065            .deserialize_struct(
10066                "origincloud.network.v1beta1.GetRouteTableAssociationRequest",
10067                FIELDS,
10068                GeneratedVisitor,
10069            )
10070    }
10071}
10072impl serde::Serialize for GetRouteTableRequest {
10073    #[allow(deprecated)]
10074    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10075    where
10076        S: serde::Serializer,
10077    {
10078        use serde::ser::SerializeStruct;
10079        let mut len = 0;
10080        if !self.name.is_empty() {
10081            len += 1;
10082        }
10083        let mut struct_ser = serializer
10084            .serialize_struct("origincloud.network.v1beta1.GetRouteTableRequest", len)?;
10085        if !self.name.is_empty() {
10086            struct_ser.serialize_field("name", &self.name)?;
10087        }
10088        struct_ser.end()
10089    }
10090}
10091impl<'de> serde::Deserialize<'de> for GetRouteTableRequest {
10092    #[allow(deprecated)]
10093    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10094    where
10095        D: serde::Deserializer<'de>,
10096    {
10097        const FIELDS: &[&str] = &["name"];
10098        #[allow(clippy::enum_variant_names)]
10099        enum GeneratedField {
10100            Name,
10101            __SkipField__,
10102        }
10103        impl<'de> serde::Deserialize<'de> for GeneratedField {
10104            fn deserialize<D>(
10105                deserializer: D,
10106            ) -> std::result::Result<GeneratedField, D::Error>
10107            where
10108                D: serde::Deserializer<'de>,
10109            {
10110                struct GeneratedVisitor;
10111                impl serde::de::Visitor<'_> for GeneratedVisitor {
10112                    type Value = GeneratedField;
10113                    fn expecting(
10114                        &self,
10115                        formatter: &mut std::fmt::Formatter<'_>,
10116                    ) -> std::fmt::Result {
10117                        write!(formatter, "expected one of: {:?}", & FIELDS)
10118                    }
10119                    #[allow(unused_variables)]
10120                    fn visit_str<E>(
10121                        self,
10122                        value: &str,
10123                    ) -> std::result::Result<GeneratedField, E>
10124                    where
10125                        E: serde::de::Error,
10126                    {
10127                        match value {
10128                            "name" => Ok(GeneratedField::Name),
10129                            _ => Ok(GeneratedField::__SkipField__),
10130                        }
10131                    }
10132                }
10133                deserializer.deserialize_identifier(GeneratedVisitor)
10134            }
10135        }
10136        struct GeneratedVisitor;
10137        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10138            type Value = GetRouteTableRequest;
10139            fn expecting(
10140                &self,
10141                formatter: &mut std::fmt::Formatter<'_>,
10142            ) -> std::fmt::Result {
10143                formatter
10144                    .write_str("struct origincloud.network.v1beta1.GetRouteTableRequest")
10145            }
10146            fn visit_map<V>(
10147                self,
10148                mut map_: V,
10149            ) -> std::result::Result<GetRouteTableRequest, V::Error>
10150            where
10151                V: serde::de::MapAccess<'de>,
10152            {
10153                let mut name__ = None;
10154                while let Some(k) = map_.next_key()? {
10155                    match k {
10156                        GeneratedField::Name => {
10157                            if name__.is_some() {
10158                                return Err(serde::de::Error::duplicate_field("name"));
10159                            }
10160                            name__ = Some(map_.next_value()?);
10161                        }
10162                        GeneratedField::__SkipField__ => {
10163                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10164                        }
10165                    }
10166                }
10167                Ok(GetRouteTableRequest {
10168                    name: name__.unwrap_or_default(),
10169                })
10170            }
10171        }
10172        deserializer
10173            .deserialize_struct(
10174                "origincloud.network.v1beta1.GetRouteTableRequest",
10175                FIELDS,
10176                GeneratedVisitor,
10177            )
10178    }
10179}
10180impl serde::Serialize for GetSecurityGroupAssociationRequest {
10181    #[allow(deprecated)]
10182    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10183    where
10184        S: serde::Serializer,
10185    {
10186        use serde::ser::SerializeStruct;
10187        let mut len = 0;
10188        if !self.name.is_empty() {
10189            len += 1;
10190        }
10191        let mut struct_ser = serializer
10192            .serialize_struct(
10193                "origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10194                len,
10195            )?;
10196        if !self.name.is_empty() {
10197            struct_ser.serialize_field("name", &self.name)?;
10198        }
10199        struct_ser.end()
10200    }
10201}
10202impl<'de> serde::Deserialize<'de> for GetSecurityGroupAssociationRequest {
10203    #[allow(deprecated)]
10204    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10205    where
10206        D: serde::Deserializer<'de>,
10207    {
10208        const FIELDS: &[&str] = &["name"];
10209        #[allow(clippy::enum_variant_names)]
10210        enum GeneratedField {
10211            Name,
10212            __SkipField__,
10213        }
10214        impl<'de> serde::Deserialize<'de> for GeneratedField {
10215            fn deserialize<D>(
10216                deserializer: D,
10217            ) -> std::result::Result<GeneratedField, D::Error>
10218            where
10219                D: serde::Deserializer<'de>,
10220            {
10221                struct GeneratedVisitor;
10222                impl serde::de::Visitor<'_> for GeneratedVisitor {
10223                    type Value = GeneratedField;
10224                    fn expecting(
10225                        &self,
10226                        formatter: &mut std::fmt::Formatter<'_>,
10227                    ) -> std::fmt::Result {
10228                        write!(formatter, "expected one of: {:?}", & FIELDS)
10229                    }
10230                    #[allow(unused_variables)]
10231                    fn visit_str<E>(
10232                        self,
10233                        value: &str,
10234                    ) -> std::result::Result<GeneratedField, E>
10235                    where
10236                        E: serde::de::Error,
10237                    {
10238                        match value {
10239                            "name" => Ok(GeneratedField::Name),
10240                            _ => Ok(GeneratedField::__SkipField__),
10241                        }
10242                    }
10243                }
10244                deserializer.deserialize_identifier(GeneratedVisitor)
10245            }
10246        }
10247        struct GeneratedVisitor;
10248        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10249            type Value = GetSecurityGroupAssociationRequest;
10250            fn expecting(
10251                &self,
10252                formatter: &mut std::fmt::Formatter<'_>,
10253            ) -> std::fmt::Result {
10254                formatter
10255                    .write_str(
10256                        "struct origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10257                    )
10258            }
10259            fn visit_map<V>(
10260                self,
10261                mut map_: V,
10262            ) -> std::result::Result<GetSecurityGroupAssociationRequest, V::Error>
10263            where
10264                V: serde::de::MapAccess<'de>,
10265            {
10266                let mut name__ = None;
10267                while let Some(k) = map_.next_key()? {
10268                    match k {
10269                        GeneratedField::Name => {
10270                            if name__.is_some() {
10271                                return Err(serde::de::Error::duplicate_field("name"));
10272                            }
10273                            name__ = Some(map_.next_value()?);
10274                        }
10275                        GeneratedField::__SkipField__ => {
10276                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10277                        }
10278                    }
10279                }
10280                Ok(GetSecurityGroupAssociationRequest {
10281                    name: name__.unwrap_or_default(),
10282                })
10283            }
10284        }
10285        deserializer
10286            .deserialize_struct(
10287                "origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10288                FIELDS,
10289                GeneratedVisitor,
10290            )
10291    }
10292}
10293impl serde::Serialize for GetSecurityGroupRequest {
10294    #[allow(deprecated)]
10295    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10296    where
10297        S: serde::Serializer,
10298    {
10299        use serde::ser::SerializeStruct;
10300        let mut len = 0;
10301        if !self.name.is_empty() {
10302            len += 1;
10303        }
10304        let mut struct_ser = serializer
10305            .serialize_struct(
10306                "origincloud.network.v1beta1.GetSecurityGroupRequest",
10307                len,
10308            )?;
10309        if !self.name.is_empty() {
10310            struct_ser.serialize_field("name", &self.name)?;
10311        }
10312        struct_ser.end()
10313    }
10314}
10315impl<'de> serde::Deserialize<'de> for GetSecurityGroupRequest {
10316    #[allow(deprecated)]
10317    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10318    where
10319        D: serde::Deserializer<'de>,
10320    {
10321        const FIELDS: &[&str] = &["name"];
10322        #[allow(clippy::enum_variant_names)]
10323        enum GeneratedField {
10324            Name,
10325            __SkipField__,
10326        }
10327        impl<'de> serde::Deserialize<'de> for GeneratedField {
10328            fn deserialize<D>(
10329                deserializer: D,
10330            ) -> std::result::Result<GeneratedField, D::Error>
10331            where
10332                D: serde::Deserializer<'de>,
10333            {
10334                struct GeneratedVisitor;
10335                impl serde::de::Visitor<'_> for GeneratedVisitor {
10336                    type Value = GeneratedField;
10337                    fn expecting(
10338                        &self,
10339                        formatter: &mut std::fmt::Formatter<'_>,
10340                    ) -> std::fmt::Result {
10341                        write!(formatter, "expected one of: {:?}", & FIELDS)
10342                    }
10343                    #[allow(unused_variables)]
10344                    fn visit_str<E>(
10345                        self,
10346                        value: &str,
10347                    ) -> std::result::Result<GeneratedField, E>
10348                    where
10349                        E: serde::de::Error,
10350                    {
10351                        match value {
10352                            "name" => Ok(GeneratedField::Name),
10353                            _ => Ok(GeneratedField::__SkipField__),
10354                        }
10355                    }
10356                }
10357                deserializer.deserialize_identifier(GeneratedVisitor)
10358            }
10359        }
10360        struct GeneratedVisitor;
10361        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10362            type Value = GetSecurityGroupRequest;
10363            fn expecting(
10364                &self,
10365                formatter: &mut std::fmt::Formatter<'_>,
10366            ) -> std::fmt::Result {
10367                formatter
10368                    .write_str(
10369                        "struct origincloud.network.v1beta1.GetSecurityGroupRequest",
10370                    )
10371            }
10372            fn visit_map<V>(
10373                self,
10374                mut map_: V,
10375            ) -> std::result::Result<GetSecurityGroupRequest, V::Error>
10376            where
10377                V: serde::de::MapAccess<'de>,
10378            {
10379                let mut name__ = None;
10380                while let Some(k) = map_.next_key()? {
10381                    match k {
10382                        GeneratedField::Name => {
10383                            if name__.is_some() {
10384                                return Err(serde::de::Error::duplicate_field("name"));
10385                            }
10386                            name__ = Some(map_.next_value()?);
10387                        }
10388                        GeneratedField::__SkipField__ => {
10389                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10390                        }
10391                    }
10392                }
10393                Ok(GetSecurityGroupRequest {
10394                    name: name__.unwrap_or_default(),
10395                })
10396            }
10397        }
10398        deserializer
10399            .deserialize_struct(
10400                "origincloud.network.v1beta1.GetSecurityGroupRequest",
10401                FIELDS,
10402                GeneratedVisitor,
10403            )
10404    }
10405}
10406impl serde::Serialize for GetSecurityGroupRuleRequest {
10407    #[allow(deprecated)]
10408    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10409    where
10410        S: serde::Serializer,
10411    {
10412        use serde::ser::SerializeStruct;
10413        let mut len = 0;
10414        if !self.name.is_empty() {
10415            len += 1;
10416        }
10417        let mut struct_ser = serializer
10418            .serialize_struct(
10419                "origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10420                len,
10421            )?;
10422        if !self.name.is_empty() {
10423            struct_ser.serialize_field("name", &self.name)?;
10424        }
10425        struct_ser.end()
10426    }
10427}
10428impl<'de> serde::Deserialize<'de> for GetSecurityGroupRuleRequest {
10429    #[allow(deprecated)]
10430    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10431    where
10432        D: serde::Deserializer<'de>,
10433    {
10434        const FIELDS: &[&str] = &["name"];
10435        #[allow(clippy::enum_variant_names)]
10436        enum GeneratedField {
10437            Name,
10438            __SkipField__,
10439        }
10440        impl<'de> serde::Deserialize<'de> for GeneratedField {
10441            fn deserialize<D>(
10442                deserializer: D,
10443            ) -> std::result::Result<GeneratedField, D::Error>
10444            where
10445                D: serde::Deserializer<'de>,
10446            {
10447                struct GeneratedVisitor;
10448                impl serde::de::Visitor<'_> for GeneratedVisitor {
10449                    type Value = GeneratedField;
10450                    fn expecting(
10451                        &self,
10452                        formatter: &mut std::fmt::Formatter<'_>,
10453                    ) -> std::fmt::Result {
10454                        write!(formatter, "expected one of: {:?}", & FIELDS)
10455                    }
10456                    #[allow(unused_variables)]
10457                    fn visit_str<E>(
10458                        self,
10459                        value: &str,
10460                    ) -> std::result::Result<GeneratedField, E>
10461                    where
10462                        E: serde::de::Error,
10463                    {
10464                        match value {
10465                            "name" => Ok(GeneratedField::Name),
10466                            _ => Ok(GeneratedField::__SkipField__),
10467                        }
10468                    }
10469                }
10470                deserializer.deserialize_identifier(GeneratedVisitor)
10471            }
10472        }
10473        struct GeneratedVisitor;
10474        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10475            type Value = GetSecurityGroupRuleRequest;
10476            fn expecting(
10477                &self,
10478                formatter: &mut std::fmt::Formatter<'_>,
10479            ) -> std::fmt::Result {
10480                formatter
10481                    .write_str(
10482                        "struct origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10483                    )
10484            }
10485            fn visit_map<V>(
10486                self,
10487                mut map_: V,
10488            ) -> std::result::Result<GetSecurityGroupRuleRequest, V::Error>
10489            where
10490                V: serde::de::MapAccess<'de>,
10491            {
10492                let mut name__ = None;
10493                while let Some(k) = map_.next_key()? {
10494                    match k {
10495                        GeneratedField::Name => {
10496                            if name__.is_some() {
10497                                return Err(serde::de::Error::duplicate_field("name"));
10498                            }
10499                            name__ = Some(map_.next_value()?);
10500                        }
10501                        GeneratedField::__SkipField__ => {
10502                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10503                        }
10504                    }
10505                }
10506                Ok(GetSecurityGroupRuleRequest {
10507                    name: name__.unwrap_or_default(),
10508                })
10509            }
10510        }
10511        deserializer
10512            .deserialize_struct(
10513                "origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10514                FIELDS,
10515                GeneratedVisitor,
10516            )
10517    }
10518}
10519impl serde::Serialize for GetSubnetRequest {
10520    #[allow(deprecated)]
10521    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10522    where
10523        S: serde::Serializer,
10524    {
10525        use serde::ser::SerializeStruct;
10526        let mut len = 0;
10527        if !self.name.is_empty() {
10528            len += 1;
10529        }
10530        let mut struct_ser = serializer
10531            .serialize_struct("origincloud.network.v1beta1.GetSubnetRequest", len)?;
10532        if !self.name.is_empty() {
10533            struct_ser.serialize_field("name", &self.name)?;
10534        }
10535        struct_ser.end()
10536    }
10537}
10538impl<'de> serde::Deserialize<'de> for GetSubnetRequest {
10539    #[allow(deprecated)]
10540    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10541    where
10542        D: serde::Deserializer<'de>,
10543    {
10544        const FIELDS: &[&str] = &["name"];
10545        #[allow(clippy::enum_variant_names)]
10546        enum GeneratedField {
10547            Name,
10548            __SkipField__,
10549        }
10550        impl<'de> serde::Deserialize<'de> for GeneratedField {
10551            fn deserialize<D>(
10552                deserializer: D,
10553            ) -> std::result::Result<GeneratedField, D::Error>
10554            where
10555                D: serde::Deserializer<'de>,
10556            {
10557                struct GeneratedVisitor;
10558                impl serde::de::Visitor<'_> for GeneratedVisitor {
10559                    type Value = GeneratedField;
10560                    fn expecting(
10561                        &self,
10562                        formatter: &mut std::fmt::Formatter<'_>,
10563                    ) -> std::fmt::Result {
10564                        write!(formatter, "expected one of: {:?}", & FIELDS)
10565                    }
10566                    #[allow(unused_variables)]
10567                    fn visit_str<E>(
10568                        self,
10569                        value: &str,
10570                    ) -> std::result::Result<GeneratedField, E>
10571                    where
10572                        E: serde::de::Error,
10573                    {
10574                        match value {
10575                            "name" => Ok(GeneratedField::Name),
10576                            _ => Ok(GeneratedField::__SkipField__),
10577                        }
10578                    }
10579                }
10580                deserializer.deserialize_identifier(GeneratedVisitor)
10581            }
10582        }
10583        struct GeneratedVisitor;
10584        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10585            type Value = GetSubnetRequest;
10586            fn expecting(
10587                &self,
10588                formatter: &mut std::fmt::Formatter<'_>,
10589            ) -> std::fmt::Result {
10590                formatter
10591                    .write_str("struct origincloud.network.v1beta1.GetSubnetRequest")
10592            }
10593            fn visit_map<V>(
10594                self,
10595                mut map_: V,
10596            ) -> std::result::Result<GetSubnetRequest, V::Error>
10597            where
10598                V: serde::de::MapAccess<'de>,
10599            {
10600                let mut name__ = None;
10601                while let Some(k) = map_.next_key()? {
10602                    match k {
10603                        GeneratedField::Name => {
10604                            if name__.is_some() {
10605                                return Err(serde::de::Error::duplicate_field("name"));
10606                            }
10607                            name__ = Some(map_.next_value()?);
10608                        }
10609                        GeneratedField::__SkipField__ => {
10610                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10611                        }
10612                    }
10613                }
10614                Ok(GetSubnetRequest {
10615                    name: name__.unwrap_or_default(),
10616                })
10617            }
10618        }
10619        deserializer
10620            .deserialize_struct(
10621                "origincloud.network.v1beta1.GetSubnetRequest",
10622                FIELDS,
10623                GeneratedVisitor,
10624            )
10625    }
10626}
10627impl serde::Serialize for GetVpcRequest {
10628    #[allow(deprecated)]
10629    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10630    where
10631        S: serde::Serializer,
10632    {
10633        use serde::ser::SerializeStruct;
10634        let mut len = 0;
10635        if !self.name.is_empty() {
10636            len += 1;
10637        }
10638        let mut struct_ser = serializer
10639            .serialize_struct("origincloud.network.v1beta1.GetVpcRequest", len)?;
10640        if !self.name.is_empty() {
10641            struct_ser.serialize_field("name", &self.name)?;
10642        }
10643        struct_ser.end()
10644    }
10645}
10646impl<'de> serde::Deserialize<'de> for GetVpcRequest {
10647    #[allow(deprecated)]
10648    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10649    where
10650        D: serde::Deserializer<'de>,
10651    {
10652        const FIELDS: &[&str] = &["name"];
10653        #[allow(clippy::enum_variant_names)]
10654        enum GeneratedField {
10655            Name,
10656            __SkipField__,
10657        }
10658        impl<'de> serde::Deserialize<'de> for GeneratedField {
10659            fn deserialize<D>(
10660                deserializer: D,
10661            ) -> std::result::Result<GeneratedField, D::Error>
10662            where
10663                D: serde::Deserializer<'de>,
10664            {
10665                struct GeneratedVisitor;
10666                impl serde::de::Visitor<'_> for GeneratedVisitor {
10667                    type Value = GeneratedField;
10668                    fn expecting(
10669                        &self,
10670                        formatter: &mut std::fmt::Formatter<'_>,
10671                    ) -> std::fmt::Result {
10672                        write!(formatter, "expected one of: {:?}", & FIELDS)
10673                    }
10674                    #[allow(unused_variables)]
10675                    fn visit_str<E>(
10676                        self,
10677                        value: &str,
10678                    ) -> std::result::Result<GeneratedField, E>
10679                    where
10680                        E: serde::de::Error,
10681                    {
10682                        match value {
10683                            "name" => Ok(GeneratedField::Name),
10684                            _ => Ok(GeneratedField::__SkipField__),
10685                        }
10686                    }
10687                }
10688                deserializer.deserialize_identifier(GeneratedVisitor)
10689            }
10690        }
10691        struct GeneratedVisitor;
10692        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10693            type Value = GetVpcRequest;
10694            fn expecting(
10695                &self,
10696                formatter: &mut std::fmt::Formatter<'_>,
10697            ) -> std::fmt::Result {
10698                formatter.write_str("struct origincloud.network.v1beta1.GetVpcRequest")
10699            }
10700            fn visit_map<V>(
10701                self,
10702                mut map_: V,
10703            ) -> std::result::Result<GetVpcRequest, V::Error>
10704            where
10705                V: serde::de::MapAccess<'de>,
10706            {
10707                let mut name__ = None;
10708                while let Some(k) = map_.next_key()? {
10709                    match k {
10710                        GeneratedField::Name => {
10711                            if name__.is_some() {
10712                                return Err(serde::de::Error::duplicate_field("name"));
10713                            }
10714                            name__ = Some(map_.next_value()?);
10715                        }
10716                        GeneratedField::__SkipField__ => {
10717                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10718                        }
10719                    }
10720                }
10721                Ok(GetVpcRequest {
10722                    name: name__.unwrap_or_default(),
10723                })
10724            }
10725        }
10726        deserializer
10727            .deserialize_struct(
10728                "origincloud.network.v1beta1.GetVpcRequest",
10729                FIELDS,
10730                GeneratedVisitor,
10731            )
10732    }
10733}
10734impl serde::Serialize for InternetGateway {
10735    #[allow(deprecated)]
10736    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10737    where
10738        S: serde::Serializer,
10739    {
10740        use serde::ser::SerializeStruct;
10741        let mut len = 0;
10742        if !self.name.is_empty() {
10743            len += 1;
10744        }
10745        if !self.urn.is_empty() {
10746            len += 1;
10747        }
10748        if !self.vpc.is_empty() {
10749            len += 1;
10750        }
10751        if self.create_time.is_some() {
10752            len += 1;
10753        }
10754        if !self.creator.is_empty() {
10755            len += 1;
10756        }
10757        if !self.tags.is_empty() {
10758            len += 1;
10759        }
10760        let mut struct_ser = serializer
10761            .serialize_struct("origincloud.network.v1beta1.InternetGateway", len)?;
10762        if !self.name.is_empty() {
10763            struct_ser.serialize_field("name", &self.name)?;
10764        }
10765        if !self.urn.is_empty() {
10766            struct_ser.serialize_field("urn", &self.urn)?;
10767        }
10768        if !self.vpc.is_empty() {
10769            struct_ser.serialize_field("vpc", &self.vpc)?;
10770        }
10771        if let Some(v) = self.create_time.as_ref() {
10772            struct_ser.serialize_field("createTime", v)?;
10773        }
10774        if !self.creator.is_empty() {
10775            struct_ser.serialize_field("creator", &self.creator)?;
10776        }
10777        if !self.tags.is_empty() {
10778            struct_ser.serialize_field("tags", &self.tags)?;
10779        }
10780        struct_ser.end()
10781    }
10782}
10783impl<'de> serde::Deserialize<'de> for InternetGateway {
10784    #[allow(deprecated)]
10785    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10786    where
10787        D: serde::Deserializer<'de>,
10788    {
10789        const FIELDS: &[&str] = &[
10790            "name",
10791            "urn",
10792            "vpc",
10793            "create_time",
10794            "createTime",
10795            "creator",
10796            "tags",
10797        ];
10798        #[allow(clippy::enum_variant_names)]
10799        enum GeneratedField {
10800            Name,
10801            Urn,
10802            Vpc,
10803            CreateTime,
10804            Creator,
10805            Tags,
10806            __SkipField__,
10807        }
10808        impl<'de> serde::Deserialize<'de> for GeneratedField {
10809            fn deserialize<D>(
10810                deserializer: D,
10811            ) -> std::result::Result<GeneratedField, D::Error>
10812            where
10813                D: serde::Deserializer<'de>,
10814            {
10815                struct GeneratedVisitor;
10816                impl serde::de::Visitor<'_> for GeneratedVisitor {
10817                    type Value = GeneratedField;
10818                    fn expecting(
10819                        &self,
10820                        formatter: &mut std::fmt::Formatter<'_>,
10821                    ) -> std::fmt::Result {
10822                        write!(formatter, "expected one of: {:?}", & FIELDS)
10823                    }
10824                    #[allow(unused_variables)]
10825                    fn visit_str<E>(
10826                        self,
10827                        value: &str,
10828                    ) -> std::result::Result<GeneratedField, E>
10829                    where
10830                        E: serde::de::Error,
10831                    {
10832                        match value {
10833                            "name" => Ok(GeneratedField::Name),
10834                            "urn" => Ok(GeneratedField::Urn),
10835                            "vpc" => Ok(GeneratedField::Vpc),
10836                            "createTime" | "create_time" => {
10837                                Ok(GeneratedField::CreateTime)
10838                            }
10839                            "creator" => Ok(GeneratedField::Creator),
10840                            "tags" => Ok(GeneratedField::Tags),
10841                            _ => Ok(GeneratedField::__SkipField__),
10842                        }
10843                    }
10844                }
10845                deserializer.deserialize_identifier(GeneratedVisitor)
10846            }
10847        }
10848        struct GeneratedVisitor;
10849        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10850            type Value = InternetGateway;
10851            fn expecting(
10852                &self,
10853                formatter: &mut std::fmt::Formatter<'_>,
10854            ) -> std::fmt::Result {
10855                formatter.write_str("struct origincloud.network.v1beta1.InternetGateway")
10856            }
10857            fn visit_map<V>(
10858                self,
10859                mut map_: V,
10860            ) -> std::result::Result<InternetGateway, V::Error>
10861            where
10862                V: serde::de::MapAccess<'de>,
10863            {
10864                let mut name__ = None;
10865                let mut urn__ = None;
10866                let mut vpc__ = None;
10867                let mut create_time__ = None;
10868                let mut creator__ = None;
10869                let mut tags__ = None;
10870                while let Some(k) = map_.next_key()? {
10871                    match k {
10872                        GeneratedField::Name => {
10873                            if name__.is_some() {
10874                                return Err(serde::de::Error::duplicate_field("name"));
10875                            }
10876                            name__ = Some(map_.next_value()?);
10877                        }
10878                        GeneratedField::Urn => {
10879                            if urn__.is_some() {
10880                                return Err(serde::de::Error::duplicate_field("urn"));
10881                            }
10882                            urn__ = Some(map_.next_value()?);
10883                        }
10884                        GeneratedField::Vpc => {
10885                            if vpc__.is_some() {
10886                                return Err(serde::de::Error::duplicate_field("vpc"));
10887                            }
10888                            vpc__ = Some(map_.next_value()?);
10889                        }
10890                        GeneratedField::CreateTime => {
10891                            if create_time__.is_some() {
10892                                return Err(serde::de::Error::duplicate_field("createTime"));
10893                            }
10894                            create_time__ = map_.next_value()?;
10895                        }
10896                        GeneratedField::Creator => {
10897                            if creator__.is_some() {
10898                                return Err(serde::de::Error::duplicate_field("creator"));
10899                            }
10900                            creator__ = Some(map_.next_value()?);
10901                        }
10902                        GeneratedField::Tags => {
10903                            if tags__.is_some() {
10904                                return Err(serde::de::Error::duplicate_field("tags"));
10905                            }
10906                            tags__ = Some(
10907                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
10908                            );
10909                        }
10910                        GeneratedField::__SkipField__ => {
10911                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10912                        }
10913                    }
10914                }
10915                Ok(InternetGateway {
10916                    name: name__.unwrap_or_default(),
10917                    urn: urn__.unwrap_or_default(),
10918                    vpc: vpc__.unwrap_or_default(),
10919                    create_time: create_time__,
10920                    creator: creator__.unwrap_or_default(),
10921                    tags: tags__.unwrap_or_default(),
10922                })
10923            }
10924        }
10925        deserializer
10926            .deserialize_struct(
10927                "origincloud.network.v1beta1.InternetGateway",
10928                FIELDS,
10929                GeneratedVisitor,
10930            )
10931    }
10932}
10933impl serde::Serialize for ListAclAssociationsRequest {
10934    #[allow(deprecated)]
10935    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10936    where
10937        S: serde::Serializer,
10938    {
10939        use serde::ser::SerializeStruct;
10940        let mut len = 0;
10941        if !self.parent.is_empty() {
10942            len += 1;
10943        }
10944        if self.page_size != 0 {
10945            len += 1;
10946        }
10947        if !self.page_token.is_empty() {
10948            len += 1;
10949        }
10950        let mut struct_ser = serializer
10951            .serialize_struct(
10952                "origincloud.network.v1beta1.ListAclAssociationsRequest",
10953                len,
10954            )?;
10955        if !self.parent.is_empty() {
10956            struct_ser.serialize_field("parent", &self.parent)?;
10957        }
10958        if self.page_size != 0 {
10959            struct_ser.serialize_field("pageSize", &self.page_size)?;
10960        }
10961        if !self.page_token.is_empty() {
10962            struct_ser.serialize_field("pageToken", &self.page_token)?;
10963        }
10964        struct_ser.end()
10965    }
10966}
10967impl<'de> serde::Deserialize<'de> for ListAclAssociationsRequest {
10968    #[allow(deprecated)]
10969    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10970    where
10971        D: serde::Deserializer<'de>,
10972    {
10973        const FIELDS: &[&str] = &[
10974            "parent",
10975            "page_size",
10976            "pageSize",
10977            "page_token",
10978            "pageToken",
10979        ];
10980        #[allow(clippy::enum_variant_names)]
10981        enum GeneratedField {
10982            Parent,
10983            PageSize,
10984            PageToken,
10985            __SkipField__,
10986        }
10987        impl<'de> serde::Deserialize<'de> for GeneratedField {
10988            fn deserialize<D>(
10989                deserializer: D,
10990            ) -> std::result::Result<GeneratedField, D::Error>
10991            where
10992                D: serde::Deserializer<'de>,
10993            {
10994                struct GeneratedVisitor;
10995                impl serde::de::Visitor<'_> for GeneratedVisitor {
10996                    type Value = GeneratedField;
10997                    fn expecting(
10998                        &self,
10999                        formatter: &mut std::fmt::Formatter<'_>,
11000                    ) -> std::fmt::Result {
11001                        write!(formatter, "expected one of: {:?}", & FIELDS)
11002                    }
11003                    #[allow(unused_variables)]
11004                    fn visit_str<E>(
11005                        self,
11006                        value: &str,
11007                    ) -> std::result::Result<GeneratedField, E>
11008                    where
11009                        E: serde::de::Error,
11010                    {
11011                        match value {
11012                            "parent" => Ok(GeneratedField::Parent),
11013                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11014                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11015                            _ => Ok(GeneratedField::__SkipField__),
11016                        }
11017                    }
11018                }
11019                deserializer.deserialize_identifier(GeneratedVisitor)
11020            }
11021        }
11022        struct GeneratedVisitor;
11023        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11024            type Value = ListAclAssociationsRequest;
11025            fn expecting(
11026                &self,
11027                formatter: &mut std::fmt::Formatter<'_>,
11028            ) -> std::fmt::Result {
11029                formatter
11030                    .write_str(
11031                        "struct origincloud.network.v1beta1.ListAclAssociationsRequest",
11032                    )
11033            }
11034            fn visit_map<V>(
11035                self,
11036                mut map_: V,
11037            ) -> std::result::Result<ListAclAssociationsRequest, V::Error>
11038            where
11039                V: serde::de::MapAccess<'de>,
11040            {
11041                let mut parent__ = None;
11042                let mut page_size__ = None;
11043                let mut page_token__ = None;
11044                while let Some(k) = map_.next_key()? {
11045                    match k {
11046                        GeneratedField::Parent => {
11047                            if parent__.is_some() {
11048                                return Err(serde::de::Error::duplicate_field("parent"));
11049                            }
11050                            parent__ = Some(map_.next_value()?);
11051                        }
11052                        GeneratedField::PageSize => {
11053                            if page_size__.is_some() {
11054                                return Err(serde::de::Error::duplicate_field("pageSize"));
11055                            }
11056                            page_size__ = Some(
11057                                map_
11058                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11059                                    .0,
11060                            );
11061                        }
11062                        GeneratedField::PageToken => {
11063                            if page_token__.is_some() {
11064                                return Err(serde::de::Error::duplicate_field("pageToken"));
11065                            }
11066                            page_token__ = Some(map_.next_value()?);
11067                        }
11068                        GeneratedField::__SkipField__ => {
11069                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11070                        }
11071                    }
11072                }
11073                Ok(ListAclAssociationsRequest {
11074                    parent: parent__.unwrap_or_default(),
11075                    page_size: page_size__.unwrap_or_default(),
11076                    page_token: page_token__.unwrap_or_default(),
11077                })
11078            }
11079        }
11080        deserializer
11081            .deserialize_struct(
11082                "origincloud.network.v1beta1.ListAclAssociationsRequest",
11083                FIELDS,
11084                GeneratedVisitor,
11085            )
11086    }
11087}
11088impl serde::Serialize for ListAclAssociationsResponse {
11089    #[allow(deprecated)]
11090    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11091    where
11092        S: serde::Serializer,
11093    {
11094        use serde::ser::SerializeStruct;
11095        let mut len = 0;
11096        if !self.acl_associations.is_empty() {
11097            len += 1;
11098        }
11099        if !self.next_page_token.is_empty() {
11100            len += 1;
11101        }
11102        let mut struct_ser = serializer
11103            .serialize_struct(
11104                "origincloud.network.v1beta1.ListAclAssociationsResponse",
11105                len,
11106            )?;
11107        if !self.acl_associations.is_empty() {
11108            struct_ser.serialize_field("aclAssociations", &self.acl_associations)?;
11109        }
11110        if !self.next_page_token.is_empty() {
11111            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11112        }
11113        struct_ser.end()
11114    }
11115}
11116impl<'de> serde::Deserialize<'de> for ListAclAssociationsResponse {
11117    #[allow(deprecated)]
11118    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11119    where
11120        D: serde::Deserializer<'de>,
11121    {
11122        const FIELDS: &[&str] = &[
11123            "acl_associations",
11124            "aclAssociations",
11125            "next_page_token",
11126            "nextPageToken",
11127        ];
11128        #[allow(clippy::enum_variant_names)]
11129        enum GeneratedField {
11130            AclAssociations,
11131            NextPageToken,
11132            __SkipField__,
11133        }
11134        impl<'de> serde::Deserialize<'de> for GeneratedField {
11135            fn deserialize<D>(
11136                deserializer: D,
11137            ) -> std::result::Result<GeneratedField, D::Error>
11138            where
11139                D: serde::Deserializer<'de>,
11140            {
11141                struct GeneratedVisitor;
11142                impl serde::de::Visitor<'_> for GeneratedVisitor {
11143                    type Value = GeneratedField;
11144                    fn expecting(
11145                        &self,
11146                        formatter: &mut std::fmt::Formatter<'_>,
11147                    ) -> std::fmt::Result {
11148                        write!(formatter, "expected one of: {:?}", & FIELDS)
11149                    }
11150                    #[allow(unused_variables)]
11151                    fn visit_str<E>(
11152                        self,
11153                        value: &str,
11154                    ) -> std::result::Result<GeneratedField, E>
11155                    where
11156                        E: serde::de::Error,
11157                    {
11158                        match value {
11159                            "aclAssociations" | "acl_associations" => {
11160                                Ok(GeneratedField::AclAssociations)
11161                            }
11162                            "nextPageToken" | "next_page_token" => {
11163                                Ok(GeneratedField::NextPageToken)
11164                            }
11165                            _ => Ok(GeneratedField::__SkipField__),
11166                        }
11167                    }
11168                }
11169                deserializer.deserialize_identifier(GeneratedVisitor)
11170            }
11171        }
11172        struct GeneratedVisitor;
11173        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11174            type Value = ListAclAssociationsResponse;
11175            fn expecting(
11176                &self,
11177                formatter: &mut std::fmt::Formatter<'_>,
11178            ) -> std::fmt::Result {
11179                formatter
11180                    .write_str(
11181                        "struct origincloud.network.v1beta1.ListAclAssociationsResponse",
11182                    )
11183            }
11184            fn visit_map<V>(
11185                self,
11186                mut map_: V,
11187            ) -> std::result::Result<ListAclAssociationsResponse, V::Error>
11188            where
11189                V: serde::de::MapAccess<'de>,
11190            {
11191                let mut acl_associations__ = None;
11192                let mut next_page_token__ = None;
11193                while let Some(k) = map_.next_key()? {
11194                    match k {
11195                        GeneratedField::AclAssociations => {
11196                            if acl_associations__.is_some() {
11197                                return Err(
11198                                    serde::de::Error::duplicate_field("aclAssociations"),
11199                                );
11200                            }
11201                            acl_associations__ = Some(map_.next_value()?);
11202                        }
11203                        GeneratedField::NextPageToken => {
11204                            if next_page_token__.is_some() {
11205                                return Err(
11206                                    serde::de::Error::duplicate_field("nextPageToken"),
11207                                );
11208                            }
11209                            next_page_token__ = Some(map_.next_value()?);
11210                        }
11211                        GeneratedField::__SkipField__ => {
11212                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11213                        }
11214                    }
11215                }
11216                Ok(ListAclAssociationsResponse {
11217                    acl_associations: acl_associations__.unwrap_or_default(),
11218                    next_page_token: next_page_token__.unwrap_or_default(),
11219                })
11220            }
11221        }
11222        deserializer
11223            .deserialize_struct(
11224                "origincloud.network.v1beta1.ListAclAssociationsResponse",
11225                FIELDS,
11226                GeneratedVisitor,
11227            )
11228    }
11229}
11230impl serde::Serialize for ListAclRulesRequest {
11231    #[allow(deprecated)]
11232    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11233    where
11234        S: serde::Serializer,
11235    {
11236        use serde::ser::SerializeStruct;
11237        let mut len = 0;
11238        if !self.parent.is_empty() {
11239            len += 1;
11240        }
11241        if self.page_size != 0 {
11242            len += 1;
11243        }
11244        if !self.page_token.is_empty() {
11245            len += 1;
11246        }
11247        let mut struct_ser = serializer
11248            .serialize_struct("origincloud.network.v1beta1.ListAclRulesRequest", len)?;
11249        if !self.parent.is_empty() {
11250            struct_ser.serialize_field("parent", &self.parent)?;
11251        }
11252        if self.page_size != 0 {
11253            struct_ser.serialize_field("pageSize", &self.page_size)?;
11254        }
11255        if !self.page_token.is_empty() {
11256            struct_ser.serialize_field("pageToken", &self.page_token)?;
11257        }
11258        struct_ser.end()
11259    }
11260}
11261impl<'de> serde::Deserialize<'de> for ListAclRulesRequest {
11262    #[allow(deprecated)]
11263    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11264    where
11265        D: serde::Deserializer<'de>,
11266    {
11267        const FIELDS: &[&str] = &[
11268            "parent",
11269            "page_size",
11270            "pageSize",
11271            "page_token",
11272            "pageToken",
11273        ];
11274        #[allow(clippy::enum_variant_names)]
11275        enum GeneratedField {
11276            Parent,
11277            PageSize,
11278            PageToken,
11279            __SkipField__,
11280        }
11281        impl<'de> serde::Deserialize<'de> for GeneratedField {
11282            fn deserialize<D>(
11283                deserializer: D,
11284            ) -> std::result::Result<GeneratedField, D::Error>
11285            where
11286                D: serde::Deserializer<'de>,
11287            {
11288                struct GeneratedVisitor;
11289                impl serde::de::Visitor<'_> for GeneratedVisitor {
11290                    type Value = GeneratedField;
11291                    fn expecting(
11292                        &self,
11293                        formatter: &mut std::fmt::Formatter<'_>,
11294                    ) -> std::fmt::Result {
11295                        write!(formatter, "expected one of: {:?}", & FIELDS)
11296                    }
11297                    #[allow(unused_variables)]
11298                    fn visit_str<E>(
11299                        self,
11300                        value: &str,
11301                    ) -> std::result::Result<GeneratedField, E>
11302                    where
11303                        E: serde::de::Error,
11304                    {
11305                        match value {
11306                            "parent" => Ok(GeneratedField::Parent),
11307                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11308                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11309                            _ => Ok(GeneratedField::__SkipField__),
11310                        }
11311                    }
11312                }
11313                deserializer.deserialize_identifier(GeneratedVisitor)
11314            }
11315        }
11316        struct GeneratedVisitor;
11317        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11318            type Value = ListAclRulesRequest;
11319            fn expecting(
11320                &self,
11321                formatter: &mut std::fmt::Formatter<'_>,
11322            ) -> std::fmt::Result {
11323                formatter
11324                    .write_str("struct origincloud.network.v1beta1.ListAclRulesRequest")
11325            }
11326            fn visit_map<V>(
11327                self,
11328                mut map_: V,
11329            ) -> std::result::Result<ListAclRulesRequest, V::Error>
11330            where
11331                V: serde::de::MapAccess<'de>,
11332            {
11333                let mut parent__ = None;
11334                let mut page_size__ = None;
11335                let mut page_token__ = None;
11336                while let Some(k) = map_.next_key()? {
11337                    match k {
11338                        GeneratedField::Parent => {
11339                            if parent__.is_some() {
11340                                return Err(serde::de::Error::duplicate_field("parent"));
11341                            }
11342                            parent__ = Some(map_.next_value()?);
11343                        }
11344                        GeneratedField::PageSize => {
11345                            if page_size__.is_some() {
11346                                return Err(serde::de::Error::duplicate_field("pageSize"));
11347                            }
11348                            page_size__ = Some(
11349                                map_
11350                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11351                                    .0,
11352                            );
11353                        }
11354                        GeneratedField::PageToken => {
11355                            if page_token__.is_some() {
11356                                return Err(serde::de::Error::duplicate_field("pageToken"));
11357                            }
11358                            page_token__ = Some(map_.next_value()?);
11359                        }
11360                        GeneratedField::__SkipField__ => {
11361                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11362                        }
11363                    }
11364                }
11365                Ok(ListAclRulesRequest {
11366                    parent: parent__.unwrap_or_default(),
11367                    page_size: page_size__.unwrap_or_default(),
11368                    page_token: page_token__.unwrap_or_default(),
11369                })
11370            }
11371        }
11372        deserializer
11373            .deserialize_struct(
11374                "origincloud.network.v1beta1.ListAclRulesRequest",
11375                FIELDS,
11376                GeneratedVisitor,
11377            )
11378    }
11379}
11380impl serde::Serialize for ListAclRulesResponse {
11381    #[allow(deprecated)]
11382    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11383    where
11384        S: serde::Serializer,
11385    {
11386        use serde::ser::SerializeStruct;
11387        let mut len = 0;
11388        if !self.acl_rules.is_empty() {
11389            len += 1;
11390        }
11391        if !self.next_page_token.is_empty() {
11392            len += 1;
11393        }
11394        let mut struct_ser = serializer
11395            .serialize_struct("origincloud.network.v1beta1.ListAclRulesResponse", len)?;
11396        if !self.acl_rules.is_empty() {
11397            struct_ser.serialize_field("aclRules", &self.acl_rules)?;
11398        }
11399        if !self.next_page_token.is_empty() {
11400            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11401        }
11402        struct_ser.end()
11403    }
11404}
11405impl<'de> serde::Deserialize<'de> for ListAclRulesResponse {
11406    #[allow(deprecated)]
11407    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11408    where
11409        D: serde::Deserializer<'de>,
11410    {
11411        const FIELDS: &[&str] = &[
11412            "acl_rules",
11413            "aclRules",
11414            "next_page_token",
11415            "nextPageToken",
11416        ];
11417        #[allow(clippy::enum_variant_names)]
11418        enum GeneratedField {
11419            AclRules,
11420            NextPageToken,
11421            __SkipField__,
11422        }
11423        impl<'de> serde::Deserialize<'de> for GeneratedField {
11424            fn deserialize<D>(
11425                deserializer: D,
11426            ) -> std::result::Result<GeneratedField, D::Error>
11427            where
11428                D: serde::Deserializer<'de>,
11429            {
11430                struct GeneratedVisitor;
11431                impl serde::de::Visitor<'_> for GeneratedVisitor {
11432                    type Value = GeneratedField;
11433                    fn expecting(
11434                        &self,
11435                        formatter: &mut std::fmt::Formatter<'_>,
11436                    ) -> std::fmt::Result {
11437                        write!(formatter, "expected one of: {:?}", & FIELDS)
11438                    }
11439                    #[allow(unused_variables)]
11440                    fn visit_str<E>(
11441                        self,
11442                        value: &str,
11443                    ) -> std::result::Result<GeneratedField, E>
11444                    where
11445                        E: serde::de::Error,
11446                    {
11447                        match value {
11448                            "aclRules" | "acl_rules" => Ok(GeneratedField::AclRules),
11449                            "nextPageToken" | "next_page_token" => {
11450                                Ok(GeneratedField::NextPageToken)
11451                            }
11452                            _ => Ok(GeneratedField::__SkipField__),
11453                        }
11454                    }
11455                }
11456                deserializer.deserialize_identifier(GeneratedVisitor)
11457            }
11458        }
11459        struct GeneratedVisitor;
11460        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11461            type Value = ListAclRulesResponse;
11462            fn expecting(
11463                &self,
11464                formatter: &mut std::fmt::Formatter<'_>,
11465            ) -> std::fmt::Result {
11466                formatter
11467                    .write_str("struct origincloud.network.v1beta1.ListAclRulesResponse")
11468            }
11469            fn visit_map<V>(
11470                self,
11471                mut map_: V,
11472            ) -> std::result::Result<ListAclRulesResponse, V::Error>
11473            where
11474                V: serde::de::MapAccess<'de>,
11475            {
11476                let mut acl_rules__ = None;
11477                let mut next_page_token__ = None;
11478                while let Some(k) = map_.next_key()? {
11479                    match k {
11480                        GeneratedField::AclRules => {
11481                            if acl_rules__.is_some() {
11482                                return Err(serde::de::Error::duplicate_field("aclRules"));
11483                            }
11484                            acl_rules__ = Some(map_.next_value()?);
11485                        }
11486                        GeneratedField::NextPageToken => {
11487                            if next_page_token__.is_some() {
11488                                return Err(
11489                                    serde::de::Error::duplicate_field("nextPageToken"),
11490                                );
11491                            }
11492                            next_page_token__ = Some(map_.next_value()?);
11493                        }
11494                        GeneratedField::__SkipField__ => {
11495                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11496                        }
11497                    }
11498                }
11499                Ok(ListAclRulesResponse {
11500                    acl_rules: acl_rules__.unwrap_or_default(),
11501                    next_page_token: next_page_token__.unwrap_or_default(),
11502                })
11503            }
11504        }
11505        deserializer
11506            .deserialize_struct(
11507                "origincloud.network.v1beta1.ListAclRulesResponse",
11508                FIELDS,
11509                GeneratedVisitor,
11510            )
11511    }
11512}
11513impl serde::Serialize for ListAclsRequest {
11514    #[allow(deprecated)]
11515    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11516    where
11517        S: serde::Serializer,
11518    {
11519        use serde::ser::SerializeStruct;
11520        let mut len = 0;
11521        if !self.parent.is_empty() {
11522            len += 1;
11523        }
11524        if self.page_size != 0 {
11525            len += 1;
11526        }
11527        if !self.page_token.is_empty() {
11528            len += 1;
11529        }
11530        if !self.vpc.is_empty() {
11531            len += 1;
11532        }
11533        let mut struct_ser = serializer
11534            .serialize_struct("origincloud.network.v1beta1.ListAclsRequest", len)?;
11535        if !self.parent.is_empty() {
11536            struct_ser.serialize_field("parent", &self.parent)?;
11537        }
11538        if self.page_size != 0 {
11539            struct_ser.serialize_field("pageSize", &self.page_size)?;
11540        }
11541        if !self.page_token.is_empty() {
11542            struct_ser.serialize_field("pageToken", &self.page_token)?;
11543        }
11544        if !self.vpc.is_empty() {
11545            struct_ser.serialize_field("vpc", &self.vpc)?;
11546        }
11547        struct_ser.end()
11548    }
11549}
11550impl<'de> serde::Deserialize<'de> for ListAclsRequest {
11551    #[allow(deprecated)]
11552    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11553    where
11554        D: serde::Deserializer<'de>,
11555    {
11556        const FIELDS: &[&str] = &[
11557            "parent",
11558            "page_size",
11559            "pageSize",
11560            "page_token",
11561            "pageToken",
11562            "vpc",
11563        ];
11564        #[allow(clippy::enum_variant_names)]
11565        enum GeneratedField {
11566            Parent,
11567            PageSize,
11568            PageToken,
11569            Vpc,
11570            __SkipField__,
11571        }
11572        impl<'de> serde::Deserialize<'de> for GeneratedField {
11573            fn deserialize<D>(
11574                deserializer: D,
11575            ) -> std::result::Result<GeneratedField, D::Error>
11576            where
11577                D: serde::Deserializer<'de>,
11578            {
11579                struct GeneratedVisitor;
11580                impl serde::de::Visitor<'_> for GeneratedVisitor {
11581                    type Value = GeneratedField;
11582                    fn expecting(
11583                        &self,
11584                        formatter: &mut std::fmt::Formatter<'_>,
11585                    ) -> std::fmt::Result {
11586                        write!(formatter, "expected one of: {:?}", & FIELDS)
11587                    }
11588                    #[allow(unused_variables)]
11589                    fn visit_str<E>(
11590                        self,
11591                        value: &str,
11592                    ) -> std::result::Result<GeneratedField, E>
11593                    where
11594                        E: serde::de::Error,
11595                    {
11596                        match value {
11597                            "parent" => Ok(GeneratedField::Parent),
11598                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11599                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11600                            "vpc" => Ok(GeneratedField::Vpc),
11601                            _ => Ok(GeneratedField::__SkipField__),
11602                        }
11603                    }
11604                }
11605                deserializer.deserialize_identifier(GeneratedVisitor)
11606            }
11607        }
11608        struct GeneratedVisitor;
11609        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11610            type Value = ListAclsRequest;
11611            fn expecting(
11612                &self,
11613                formatter: &mut std::fmt::Formatter<'_>,
11614            ) -> std::fmt::Result {
11615                formatter.write_str("struct origincloud.network.v1beta1.ListAclsRequest")
11616            }
11617            fn visit_map<V>(
11618                self,
11619                mut map_: V,
11620            ) -> std::result::Result<ListAclsRequest, V::Error>
11621            where
11622                V: serde::de::MapAccess<'de>,
11623            {
11624                let mut parent__ = None;
11625                let mut page_size__ = None;
11626                let mut page_token__ = None;
11627                let mut vpc__ = None;
11628                while let Some(k) = map_.next_key()? {
11629                    match k {
11630                        GeneratedField::Parent => {
11631                            if parent__.is_some() {
11632                                return Err(serde::de::Error::duplicate_field("parent"));
11633                            }
11634                            parent__ = Some(map_.next_value()?);
11635                        }
11636                        GeneratedField::PageSize => {
11637                            if page_size__.is_some() {
11638                                return Err(serde::de::Error::duplicate_field("pageSize"));
11639                            }
11640                            page_size__ = Some(
11641                                map_
11642                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11643                                    .0,
11644                            );
11645                        }
11646                        GeneratedField::PageToken => {
11647                            if page_token__.is_some() {
11648                                return Err(serde::de::Error::duplicate_field("pageToken"));
11649                            }
11650                            page_token__ = Some(map_.next_value()?);
11651                        }
11652                        GeneratedField::Vpc => {
11653                            if vpc__.is_some() {
11654                                return Err(serde::de::Error::duplicate_field("vpc"));
11655                            }
11656                            vpc__ = Some(map_.next_value()?);
11657                        }
11658                        GeneratedField::__SkipField__ => {
11659                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11660                        }
11661                    }
11662                }
11663                Ok(ListAclsRequest {
11664                    parent: parent__.unwrap_or_default(),
11665                    page_size: page_size__.unwrap_or_default(),
11666                    page_token: page_token__.unwrap_or_default(),
11667                    vpc: vpc__.unwrap_or_default(),
11668                })
11669            }
11670        }
11671        deserializer
11672            .deserialize_struct(
11673                "origincloud.network.v1beta1.ListAclsRequest",
11674                FIELDS,
11675                GeneratedVisitor,
11676            )
11677    }
11678}
11679impl serde::Serialize for ListAclsResponse {
11680    #[allow(deprecated)]
11681    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11682    where
11683        S: serde::Serializer,
11684    {
11685        use serde::ser::SerializeStruct;
11686        let mut len = 0;
11687        if !self.acls.is_empty() {
11688            len += 1;
11689        }
11690        if !self.next_page_token.is_empty() {
11691            len += 1;
11692        }
11693        let mut struct_ser = serializer
11694            .serialize_struct("origincloud.network.v1beta1.ListAclsResponse", len)?;
11695        if !self.acls.is_empty() {
11696            struct_ser.serialize_field("acls", &self.acls)?;
11697        }
11698        if !self.next_page_token.is_empty() {
11699            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11700        }
11701        struct_ser.end()
11702    }
11703}
11704impl<'de> serde::Deserialize<'de> for ListAclsResponse {
11705    #[allow(deprecated)]
11706    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11707    where
11708        D: serde::Deserializer<'de>,
11709    {
11710        const FIELDS: &[&str] = &["acls", "next_page_token", "nextPageToken"];
11711        #[allow(clippy::enum_variant_names)]
11712        enum GeneratedField {
11713            Acls,
11714            NextPageToken,
11715            __SkipField__,
11716        }
11717        impl<'de> serde::Deserialize<'de> for GeneratedField {
11718            fn deserialize<D>(
11719                deserializer: D,
11720            ) -> std::result::Result<GeneratedField, D::Error>
11721            where
11722                D: serde::Deserializer<'de>,
11723            {
11724                struct GeneratedVisitor;
11725                impl serde::de::Visitor<'_> for GeneratedVisitor {
11726                    type Value = GeneratedField;
11727                    fn expecting(
11728                        &self,
11729                        formatter: &mut std::fmt::Formatter<'_>,
11730                    ) -> std::fmt::Result {
11731                        write!(formatter, "expected one of: {:?}", & FIELDS)
11732                    }
11733                    #[allow(unused_variables)]
11734                    fn visit_str<E>(
11735                        self,
11736                        value: &str,
11737                    ) -> std::result::Result<GeneratedField, E>
11738                    where
11739                        E: serde::de::Error,
11740                    {
11741                        match value {
11742                            "acls" => Ok(GeneratedField::Acls),
11743                            "nextPageToken" | "next_page_token" => {
11744                                Ok(GeneratedField::NextPageToken)
11745                            }
11746                            _ => Ok(GeneratedField::__SkipField__),
11747                        }
11748                    }
11749                }
11750                deserializer.deserialize_identifier(GeneratedVisitor)
11751            }
11752        }
11753        struct GeneratedVisitor;
11754        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11755            type Value = ListAclsResponse;
11756            fn expecting(
11757                &self,
11758                formatter: &mut std::fmt::Formatter<'_>,
11759            ) -> std::fmt::Result {
11760                formatter
11761                    .write_str("struct origincloud.network.v1beta1.ListAclsResponse")
11762            }
11763            fn visit_map<V>(
11764                self,
11765                mut map_: V,
11766            ) -> std::result::Result<ListAclsResponse, V::Error>
11767            where
11768                V: serde::de::MapAccess<'de>,
11769            {
11770                let mut acls__ = None;
11771                let mut next_page_token__ = None;
11772                while let Some(k) = map_.next_key()? {
11773                    match k {
11774                        GeneratedField::Acls => {
11775                            if acls__.is_some() {
11776                                return Err(serde::de::Error::duplicate_field("acls"));
11777                            }
11778                            acls__ = Some(map_.next_value()?);
11779                        }
11780                        GeneratedField::NextPageToken => {
11781                            if next_page_token__.is_some() {
11782                                return Err(
11783                                    serde::de::Error::duplicate_field("nextPageToken"),
11784                                );
11785                            }
11786                            next_page_token__ = Some(map_.next_value()?);
11787                        }
11788                        GeneratedField::__SkipField__ => {
11789                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11790                        }
11791                    }
11792                }
11793                Ok(ListAclsResponse {
11794                    acls: acls__.unwrap_or_default(),
11795                    next_page_token: next_page_token__.unwrap_or_default(),
11796                })
11797            }
11798        }
11799        deserializer
11800            .deserialize_struct(
11801                "origincloud.network.v1beta1.ListAclsResponse",
11802                FIELDS,
11803                GeneratedVisitor,
11804            )
11805    }
11806}
11807impl serde::Serialize for ListDnsPoliciesRequest {
11808    #[allow(deprecated)]
11809    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11810    where
11811        S: serde::Serializer,
11812    {
11813        use serde::ser::SerializeStruct;
11814        let mut len = 0;
11815        if !self.parent.is_empty() {
11816            len += 1;
11817        }
11818        if self.page_size != 0 {
11819            len += 1;
11820        }
11821        if !self.page_token.is_empty() {
11822            len += 1;
11823        }
11824        let mut struct_ser = serializer
11825            .serialize_struct(
11826                "origincloud.network.v1beta1.ListDnsPoliciesRequest",
11827                len,
11828            )?;
11829        if !self.parent.is_empty() {
11830            struct_ser.serialize_field("parent", &self.parent)?;
11831        }
11832        if self.page_size != 0 {
11833            struct_ser.serialize_field("pageSize", &self.page_size)?;
11834        }
11835        if !self.page_token.is_empty() {
11836            struct_ser.serialize_field("pageToken", &self.page_token)?;
11837        }
11838        struct_ser.end()
11839    }
11840}
11841impl<'de> serde::Deserialize<'de> for ListDnsPoliciesRequest {
11842    #[allow(deprecated)]
11843    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11844    where
11845        D: serde::Deserializer<'de>,
11846    {
11847        const FIELDS: &[&str] = &[
11848            "parent",
11849            "page_size",
11850            "pageSize",
11851            "page_token",
11852            "pageToken",
11853        ];
11854        #[allow(clippy::enum_variant_names)]
11855        enum GeneratedField {
11856            Parent,
11857            PageSize,
11858            PageToken,
11859            __SkipField__,
11860        }
11861        impl<'de> serde::Deserialize<'de> for GeneratedField {
11862            fn deserialize<D>(
11863                deserializer: D,
11864            ) -> std::result::Result<GeneratedField, D::Error>
11865            where
11866                D: serde::Deserializer<'de>,
11867            {
11868                struct GeneratedVisitor;
11869                impl serde::de::Visitor<'_> for GeneratedVisitor {
11870                    type Value = GeneratedField;
11871                    fn expecting(
11872                        &self,
11873                        formatter: &mut std::fmt::Formatter<'_>,
11874                    ) -> std::fmt::Result {
11875                        write!(formatter, "expected one of: {:?}", & FIELDS)
11876                    }
11877                    #[allow(unused_variables)]
11878                    fn visit_str<E>(
11879                        self,
11880                        value: &str,
11881                    ) -> std::result::Result<GeneratedField, E>
11882                    where
11883                        E: serde::de::Error,
11884                    {
11885                        match value {
11886                            "parent" => Ok(GeneratedField::Parent),
11887                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11888                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11889                            _ => Ok(GeneratedField::__SkipField__),
11890                        }
11891                    }
11892                }
11893                deserializer.deserialize_identifier(GeneratedVisitor)
11894            }
11895        }
11896        struct GeneratedVisitor;
11897        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11898            type Value = ListDnsPoliciesRequest;
11899            fn expecting(
11900                &self,
11901                formatter: &mut std::fmt::Formatter<'_>,
11902            ) -> std::fmt::Result {
11903                formatter
11904                    .write_str(
11905                        "struct origincloud.network.v1beta1.ListDnsPoliciesRequest",
11906                    )
11907            }
11908            fn visit_map<V>(
11909                self,
11910                mut map_: V,
11911            ) -> std::result::Result<ListDnsPoliciesRequest, V::Error>
11912            where
11913                V: serde::de::MapAccess<'de>,
11914            {
11915                let mut parent__ = None;
11916                let mut page_size__ = None;
11917                let mut page_token__ = None;
11918                while let Some(k) = map_.next_key()? {
11919                    match k {
11920                        GeneratedField::Parent => {
11921                            if parent__.is_some() {
11922                                return Err(serde::de::Error::duplicate_field("parent"));
11923                            }
11924                            parent__ = Some(map_.next_value()?);
11925                        }
11926                        GeneratedField::PageSize => {
11927                            if page_size__.is_some() {
11928                                return Err(serde::de::Error::duplicate_field("pageSize"));
11929                            }
11930                            page_size__ = Some(
11931                                map_
11932                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11933                                    .0,
11934                            );
11935                        }
11936                        GeneratedField::PageToken => {
11937                            if page_token__.is_some() {
11938                                return Err(serde::de::Error::duplicate_field("pageToken"));
11939                            }
11940                            page_token__ = Some(map_.next_value()?);
11941                        }
11942                        GeneratedField::__SkipField__ => {
11943                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11944                        }
11945                    }
11946                }
11947                Ok(ListDnsPoliciesRequest {
11948                    parent: parent__.unwrap_or_default(),
11949                    page_size: page_size__.unwrap_or_default(),
11950                    page_token: page_token__.unwrap_or_default(),
11951                })
11952            }
11953        }
11954        deserializer
11955            .deserialize_struct(
11956                "origincloud.network.v1beta1.ListDnsPoliciesRequest",
11957                FIELDS,
11958                GeneratedVisitor,
11959            )
11960    }
11961}
11962impl serde::Serialize for ListDnsPoliciesResponse {
11963    #[allow(deprecated)]
11964    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11965    where
11966        S: serde::Serializer,
11967    {
11968        use serde::ser::SerializeStruct;
11969        let mut len = 0;
11970        if !self.dns_policies.is_empty() {
11971            len += 1;
11972        }
11973        if !self.next_page_token.is_empty() {
11974            len += 1;
11975        }
11976        let mut struct_ser = serializer
11977            .serialize_struct(
11978                "origincloud.network.v1beta1.ListDnsPoliciesResponse",
11979                len,
11980            )?;
11981        if !self.dns_policies.is_empty() {
11982            struct_ser.serialize_field("dnsPolicies", &self.dns_policies)?;
11983        }
11984        if !self.next_page_token.is_empty() {
11985            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11986        }
11987        struct_ser.end()
11988    }
11989}
11990impl<'de> serde::Deserialize<'de> for ListDnsPoliciesResponse {
11991    #[allow(deprecated)]
11992    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11993    where
11994        D: serde::Deserializer<'de>,
11995    {
11996        const FIELDS: &[&str] = &[
11997            "dns_policies",
11998            "dnsPolicies",
11999            "next_page_token",
12000            "nextPageToken",
12001        ];
12002        #[allow(clippy::enum_variant_names)]
12003        enum GeneratedField {
12004            DnsPolicies,
12005            NextPageToken,
12006            __SkipField__,
12007        }
12008        impl<'de> serde::Deserialize<'de> for GeneratedField {
12009            fn deserialize<D>(
12010                deserializer: D,
12011            ) -> std::result::Result<GeneratedField, D::Error>
12012            where
12013                D: serde::Deserializer<'de>,
12014            {
12015                struct GeneratedVisitor;
12016                impl serde::de::Visitor<'_> for GeneratedVisitor {
12017                    type Value = GeneratedField;
12018                    fn expecting(
12019                        &self,
12020                        formatter: &mut std::fmt::Formatter<'_>,
12021                    ) -> std::fmt::Result {
12022                        write!(formatter, "expected one of: {:?}", & FIELDS)
12023                    }
12024                    #[allow(unused_variables)]
12025                    fn visit_str<E>(
12026                        self,
12027                        value: &str,
12028                    ) -> std::result::Result<GeneratedField, E>
12029                    where
12030                        E: serde::de::Error,
12031                    {
12032                        match value {
12033                            "dnsPolicies" | "dns_policies" => {
12034                                Ok(GeneratedField::DnsPolicies)
12035                            }
12036                            "nextPageToken" | "next_page_token" => {
12037                                Ok(GeneratedField::NextPageToken)
12038                            }
12039                            _ => Ok(GeneratedField::__SkipField__),
12040                        }
12041                    }
12042                }
12043                deserializer.deserialize_identifier(GeneratedVisitor)
12044            }
12045        }
12046        struct GeneratedVisitor;
12047        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12048            type Value = ListDnsPoliciesResponse;
12049            fn expecting(
12050                &self,
12051                formatter: &mut std::fmt::Formatter<'_>,
12052            ) -> std::fmt::Result {
12053                formatter
12054                    .write_str(
12055                        "struct origincloud.network.v1beta1.ListDnsPoliciesResponse",
12056                    )
12057            }
12058            fn visit_map<V>(
12059                self,
12060                mut map_: V,
12061            ) -> std::result::Result<ListDnsPoliciesResponse, V::Error>
12062            where
12063                V: serde::de::MapAccess<'de>,
12064            {
12065                let mut dns_policies__ = None;
12066                let mut next_page_token__ = None;
12067                while let Some(k) = map_.next_key()? {
12068                    match k {
12069                        GeneratedField::DnsPolicies => {
12070                            if dns_policies__.is_some() {
12071                                return Err(
12072                                    serde::de::Error::duplicate_field("dnsPolicies"),
12073                                );
12074                            }
12075                            dns_policies__ = Some(map_.next_value()?);
12076                        }
12077                        GeneratedField::NextPageToken => {
12078                            if next_page_token__.is_some() {
12079                                return Err(
12080                                    serde::de::Error::duplicate_field("nextPageToken"),
12081                                );
12082                            }
12083                            next_page_token__ = Some(map_.next_value()?);
12084                        }
12085                        GeneratedField::__SkipField__ => {
12086                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12087                        }
12088                    }
12089                }
12090                Ok(ListDnsPoliciesResponse {
12091                    dns_policies: dns_policies__.unwrap_or_default(),
12092                    next_page_token: next_page_token__.unwrap_or_default(),
12093                })
12094            }
12095        }
12096        deserializer
12097            .deserialize_struct(
12098                "origincloud.network.v1beta1.ListDnsPoliciesResponse",
12099                FIELDS,
12100                GeneratedVisitor,
12101            )
12102    }
12103}
12104impl serde::Serialize for ListDnsPolicyAssociationsRequest {
12105    #[allow(deprecated)]
12106    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12107    where
12108        S: serde::Serializer,
12109    {
12110        use serde::ser::SerializeStruct;
12111        let mut len = 0;
12112        if !self.parent.is_empty() {
12113            len += 1;
12114        }
12115        if self.page_size != 0 {
12116            len += 1;
12117        }
12118        if !self.page_token.is_empty() {
12119            len += 1;
12120        }
12121        let mut struct_ser = serializer
12122            .serialize_struct(
12123                "origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12124                len,
12125            )?;
12126        if !self.parent.is_empty() {
12127            struct_ser.serialize_field("parent", &self.parent)?;
12128        }
12129        if self.page_size != 0 {
12130            struct_ser.serialize_field("pageSize", &self.page_size)?;
12131        }
12132        if !self.page_token.is_empty() {
12133            struct_ser.serialize_field("pageToken", &self.page_token)?;
12134        }
12135        struct_ser.end()
12136    }
12137}
12138impl<'de> serde::Deserialize<'de> for ListDnsPolicyAssociationsRequest {
12139    #[allow(deprecated)]
12140    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12141    where
12142        D: serde::Deserializer<'de>,
12143    {
12144        const FIELDS: &[&str] = &[
12145            "parent",
12146            "page_size",
12147            "pageSize",
12148            "page_token",
12149            "pageToken",
12150        ];
12151        #[allow(clippy::enum_variant_names)]
12152        enum GeneratedField {
12153            Parent,
12154            PageSize,
12155            PageToken,
12156            __SkipField__,
12157        }
12158        impl<'de> serde::Deserialize<'de> for GeneratedField {
12159            fn deserialize<D>(
12160                deserializer: D,
12161            ) -> std::result::Result<GeneratedField, D::Error>
12162            where
12163                D: serde::Deserializer<'de>,
12164            {
12165                struct GeneratedVisitor;
12166                impl serde::de::Visitor<'_> for GeneratedVisitor {
12167                    type Value = GeneratedField;
12168                    fn expecting(
12169                        &self,
12170                        formatter: &mut std::fmt::Formatter<'_>,
12171                    ) -> std::fmt::Result {
12172                        write!(formatter, "expected one of: {:?}", & FIELDS)
12173                    }
12174                    #[allow(unused_variables)]
12175                    fn visit_str<E>(
12176                        self,
12177                        value: &str,
12178                    ) -> std::result::Result<GeneratedField, E>
12179                    where
12180                        E: serde::de::Error,
12181                    {
12182                        match value {
12183                            "parent" => Ok(GeneratedField::Parent),
12184                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12185                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12186                            _ => Ok(GeneratedField::__SkipField__),
12187                        }
12188                    }
12189                }
12190                deserializer.deserialize_identifier(GeneratedVisitor)
12191            }
12192        }
12193        struct GeneratedVisitor;
12194        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12195            type Value = ListDnsPolicyAssociationsRequest;
12196            fn expecting(
12197                &self,
12198                formatter: &mut std::fmt::Formatter<'_>,
12199            ) -> std::fmt::Result {
12200                formatter
12201                    .write_str(
12202                        "struct origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12203                    )
12204            }
12205            fn visit_map<V>(
12206                self,
12207                mut map_: V,
12208            ) -> std::result::Result<ListDnsPolicyAssociationsRequest, V::Error>
12209            where
12210                V: serde::de::MapAccess<'de>,
12211            {
12212                let mut parent__ = None;
12213                let mut page_size__ = None;
12214                let mut page_token__ = None;
12215                while let Some(k) = map_.next_key()? {
12216                    match k {
12217                        GeneratedField::Parent => {
12218                            if parent__.is_some() {
12219                                return Err(serde::de::Error::duplicate_field("parent"));
12220                            }
12221                            parent__ = Some(map_.next_value()?);
12222                        }
12223                        GeneratedField::PageSize => {
12224                            if page_size__.is_some() {
12225                                return Err(serde::de::Error::duplicate_field("pageSize"));
12226                            }
12227                            page_size__ = Some(
12228                                map_
12229                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12230                                    .0,
12231                            );
12232                        }
12233                        GeneratedField::PageToken => {
12234                            if page_token__.is_some() {
12235                                return Err(serde::de::Error::duplicate_field("pageToken"));
12236                            }
12237                            page_token__ = Some(map_.next_value()?);
12238                        }
12239                        GeneratedField::__SkipField__ => {
12240                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12241                        }
12242                    }
12243                }
12244                Ok(ListDnsPolicyAssociationsRequest {
12245                    parent: parent__.unwrap_or_default(),
12246                    page_size: page_size__.unwrap_or_default(),
12247                    page_token: page_token__.unwrap_or_default(),
12248                })
12249            }
12250        }
12251        deserializer
12252            .deserialize_struct(
12253                "origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12254                FIELDS,
12255                GeneratedVisitor,
12256            )
12257    }
12258}
12259impl serde::Serialize for ListDnsPolicyAssociationsResponse {
12260    #[allow(deprecated)]
12261    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12262    where
12263        S: serde::Serializer,
12264    {
12265        use serde::ser::SerializeStruct;
12266        let mut len = 0;
12267        if !self.dns_policy_associations.is_empty() {
12268            len += 1;
12269        }
12270        if !self.next_page_token.is_empty() {
12271            len += 1;
12272        }
12273        let mut struct_ser = serializer
12274            .serialize_struct(
12275                "origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12276                len,
12277            )?;
12278        if !self.dns_policy_associations.is_empty() {
12279            struct_ser
12280                .serialize_field(
12281                    "dnsPolicyAssociations",
12282                    &self.dns_policy_associations,
12283                )?;
12284        }
12285        if !self.next_page_token.is_empty() {
12286            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12287        }
12288        struct_ser.end()
12289    }
12290}
12291impl<'de> serde::Deserialize<'de> for ListDnsPolicyAssociationsResponse {
12292    #[allow(deprecated)]
12293    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12294    where
12295        D: serde::Deserializer<'de>,
12296    {
12297        const FIELDS: &[&str] = &[
12298            "dns_policy_associations",
12299            "dnsPolicyAssociations",
12300            "next_page_token",
12301            "nextPageToken",
12302        ];
12303        #[allow(clippy::enum_variant_names)]
12304        enum GeneratedField {
12305            DnsPolicyAssociations,
12306            NextPageToken,
12307            __SkipField__,
12308        }
12309        impl<'de> serde::Deserialize<'de> for GeneratedField {
12310            fn deserialize<D>(
12311                deserializer: D,
12312            ) -> std::result::Result<GeneratedField, D::Error>
12313            where
12314                D: serde::Deserializer<'de>,
12315            {
12316                struct GeneratedVisitor;
12317                impl serde::de::Visitor<'_> for GeneratedVisitor {
12318                    type Value = GeneratedField;
12319                    fn expecting(
12320                        &self,
12321                        formatter: &mut std::fmt::Formatter<'_>,
12322                    ) -> std::fmt::Result {
12323                        write!(formatter, "expected one of: {:?}", & FIELDS)
12324                    }
12325                    #[allow(unused_variables)]
12326                    fn visit_str<E>(
12327                        self,
12328                        value: &str,
12329                    ) -> std::result::Result<GeneratedField, E>
12330                    where
12331                        E: serde::de::Error,
12332                    {
12333                        match value {
12334                            "dnsPolicyAssociations" | "dns_policy_associations" => {
12335                                Ok(GeneratedField::DnsPolicyAssociations)
12336                            }
12337                            "nextPageToken" | "next_page_token" => {
12338                                Ok(GeneratedField::NextPageToken)
12339                            }
12340                            _ => Ok(GeneratedField::__SkipField__),
12341                        }
12342                    }
12343                }
12344                deserializer.deserialize_identifier(GeneratedVisitor)
12345            }
12346        }
12347        struct GeneratedVisitor;
12348        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12349            type Value = ListDnsPolicyAssociationsResponse;
12350            fn expecting(
12351                &self,
12352                formatter: &mut std::fmt::Formatter<'_>,
12353            ) -> std::fmt::Result {
12354                formatter
12355                    .write_str(
12356                        "struct origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12357                    )
12358            }
12359            fn visit_map<V>(
12360                self,
12361                mut map_: V,
12362            ) -> std::result::Result<ListDnsPolicyAssociationsResponse, V::Error>
12363            where
12364                V: serde::de::MapAccess<'de>,
12365            {
12366                let mut dns_policy_associations__ = None;
12367                let mut next_page_token__ = None;
12368                while let Some(k) = map_.next_key()? {
12369                    match k {
12370                        GeneratedField::DnsPolicyAssociations => {
12371                            if dns_policy_associations__.is_some() {
12372                                return Err(
12373                                    serde::de::Error::duplicate_field("dnsPolicyAssociations"),
12374                                );
12375                            }
12376                            dns_policy_associations__ = Some(map_.next_value()?);
12377                        }
12378                        GeneratedField::NextPageToken => {
12379                            if next_page_token__.is_some() {
12380                                return Err(
12381                                    serde::de::Error::duplicate_field("nextPageToken"),
12382                                );
12383                            }
12384                            next_page_token__ = Some(map_.next_value()?);
12385                        }
12386                        GeneratedField::__SkipField__ => {
12387                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12388                        }
12389                    }
12390                }
12391                Ok(ListDnsPolicyAssociationsResponse {
12392                    dns_policy_associations: dns_policy_associations__
12393                        .unwrap_or_default(),
12394                    next_page_token: next_page_token__.unwrap_or_default(),
12395                })
12396            }
12397        }
12398        deserializer
12399            .deserialize_struct(
12400                "origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12401                FIELDS,
12402                GeneratedVisitor,
12403            )
12404    }
12405}
12406impl serde::Serialize for ListFloatingIpAssociationsRequest {
12407    #[allow(deprecated)]
12408    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12409    where
12410        S: serde::Serializer,
12411    {
12412        use serde::ser::SerializeStruct;
12413        let mut len = 0;
12414        if !self.parent.is_empty() {
12415            len += 1;
12416        }
12417        if self.page_size != 0 {
12418            len += 1;
12419        }
12420        if !self.page_token.is_empty() {
12421            len += 1;
12422        }
12423        let mut struct_ser = serializer
12424            .serialize_struct(
12425                "origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12426                len,
12427            )?;
12428        if !self.parent.is_empty() {
12429            struct_ser.serialize_field("parent", &self.parent)?;
12430        }
12431        if self.page_size != 0 {
12432            struct_ser.serialize_field("pageSize", &self.page_size)?;
12433        }
12434        if !self.page_token.is_empty() {
12435            struct_ser.serialize_field("pageToken", &self.page_token)?;
12436        }
12437        struct_ser.end()
12438    }
12439}
12440impl<'de> serde::Deserialize<'de> for ListFloatingIpAssociationsRequest {
12441    #[allow(deprecated)]
12442    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12443    where
12444        D: serde::Deserializer<'de>,
12445    {
12446        const FIELDS: &[&str] = &[
12447            "parent",
12448            "page_size",
12449            "pageSize",
12450            "page_token",
12451            "pageToken",
12452        ];
12453        #[allow(clippy::enum_variant_names)]
12454        enum GeneratedField {
12455            Parent,
12456            PageSize,
12457            PageToken,
12458            __SkipField__,
12459        }
12460        impl<'de> serde::Deserialize<'de> for GeneratedField {
12461            fn deserialize<D>(
12462                deserializer: D,
12463            ) -> std::result::Result<GeneratedField, D::Error>
12464            where
12465                D: serde::Deserializer<'de>,
12466            {
12467                struct GeneratedVisitor;
12468                impl serde::de::Visitor<'_> for GeneratedVisitor {
12469                    type Value = GeneratedField;
12470                    fn expecting(
12471                        &self,
12472                        formatter: &mut std::fmt::Formatter<'_>,
12473                    ) -> std::fmt::Result {
12474                        write!(formatter, "expected one of: {:?}", & FIELDS)
12475                    }
12476                    #[allow(unused_variables)]
12477                    fn visit_str<E>(
12478                        self,
12479                        value: &str,
12480                    ) -> std::result::Result<GeneratedField, E>
12481                    where
12482                        E: serde::de::Error,
12483                    {
12484                        match value {
12485                            "parent" => Ok(GeneratedField::Parent),
12486                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12487                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12488                            _ => Ok(GeneratedField::__SkipField__),
12489                        }
12490                    }
12491                }
12492                deserializer.deserialize_identifier(GeneratedVisitor)
12493            }
12494        }
12495        struct GeneratedVisitor;
12496        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12497            type Value = ListFloatingIpAssociationsRequest;
12498            fn expecting(
12499                &self,
12500                formatter: &mut std::fmt::Formatter<'_>,
12501            ) -> std::fmt::Result {
12502                formatter
12503                    .write_str(
12504                        "struct origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12505                    )
12506            }
12507            fn visit_map<V>(
12508                self,
12509                mut map_: V,
12510            ) -> std::result::Result<ListFloatingIpAssociationsRequest, V::Error>
12511            where
12512                V: serde::de::MapAccess<'de>,
12513            {
12514                let mut parent__ = None;
12515                let mut page_size__ = None;
12516                let mut page_token__ = None;
12517                while let Some(k) = map_.next_key()? {
12518                    match k {
12519                        GeneratedField::Parent => {
12520                            if parent__.is_some() {
12521                                return Err(serde::de::Error::duplicate_field("parent"));
12522                            }
12523                            parent__ = Some(map_.next_value()?);
12524                        }
12525                        GeneratedField::PageSize => {
12526                            if page_size__.is_some() {
12527                                return Err(serde::de::Error::duplicate_field("pageSize"));
12528                            }
12529                            page_size__ = Some(
12530                                map_
12531                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12532                                    .0,
12533                            );
12534                        }
12535                        GeneratedField::PageToken => {
12536                            if page_token__.is_some() {
12537                                return Err(serde::de::Error::duplicate_field("pageToken"));
12538                            }
12539                            page_token__ = Some(map_.next_value()?);
12540                        }
12541                        GeneratedField::__SkipField__ => {
12542                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12543                        }
12544                    }
12545                }
12546                Ok(ListFloatingIpAssociationsRequest {
12547                    parent: parent__.unwrap_or_default(),
12548                    page_size: page_size__.unwrap_or_default(),
12549                    page_token: page_token__.unwrap_or_default(),
12550                })
12551            }
12552        }
12553        deserializer
12554            .deserialize_struct(
12555                "origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12556                FIELDS,
12557                GeneratedVisitor,
12558            )
12559    }
12560}
12561impl serde::Serialize for ListFloatingIpAssociationsResponse {
12562    #[allow(deprecated)]
12563    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12564    where
12565        S: serde::Serializer,
12566    {
12567        use serde::ser::SerializeStruct;
12568        let mut len = 0;
12569        if !self.floating_ip_associations.is_empty() {
12570            len += 1;
12571        }
12572        if !self.next_page_token.is_empty() {
12573            len += 1;
12574        }
12575        let mut struct_ser = serializer
12576            .serialize_struct(
12577                "origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12578                len,
12579            )?;
12580        if !self.floating_ip_associations.is_empty() {
12581            struct_ser
12582                .serialize_field(
12583                    "floatingIpAssociations",
12584                    &self.floating_ip_associations,
12585                )?;
12586        }
12587        if !self.next_page_token.is_empty() {
12588            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12589        }
12590        struct_ser.end()
12591    }
12592}
12593impl<'de> serde::Deserialize<'de> for ListFloatingIpAssociationsResponse {
12594    #[allow(deprecated)]
12595    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12596    where
12597        D: serde::Deserializer<'de>,
12598    {
12599        const FIELDS: &[&str] = &[
12600            "floating_ip_associations",
12601            "floatingIpAssociations",
12602            "next_page_token",
12603            "nextPageToken",
12604        ];
12605        #[allow(clippy::enum_variant_names)]
12606        enum GeneratedField {
12607            FloatingIpAssociations,
12608            NextPageToken,
12609            __SkipField__,
12610        }
12611        impl<'de> serde::Deserialize<'de> for GeneratedField {
12612            fn deserialize<D>(
12613                deserializer: D,
12614            ) -> std::result::Result<GeneratedField, D::Error>
12615            where
12616                D: serde::Deserializer<'de>,
12617            {
12618                struct GeneratedVisitor;
12619                impl serde::de::Visitor<'_> for GeneratedVisitor {
12620                    type Value = GeneratedField;
12621                    fn expecting(
12622                        &self,
12623                        formatter: &mut std::fmt::Formatter<'_>,
12624                    ) -> std::fmt::Result {
12625                        write!(formatter, "expected one of: {:?}", & FIELDS)
12626                    }
12627                    #[allow(unused_variables)]
12628                    fn visit_str<E>(
12629                        self,
12630                        value: &str,
12631                    ) -> std::result::Result<GeneratedField, E>
12632                    where
12633                        E: serde::de::Error,
12634                    {
12635                        match value {
12636                            "floatingIpAssociations" | "floating_ip_associations" => {
12637                                Ok(GeneratedField::FloatingIpAssociations)
12638                            }
12639                            "nextPageToken" | "next_page_token" => {
12640                                Ok(GeneratedField::NextPageToken)
12641                            }
12642                            _ => Ok(GeneratedField::__SkipField__),
12643                        }
12644                    }
12645                }
12646                deserializer.deserialize_identifier(GeneratedVisitor)
12647            }
12648        }
12649        struct GeneratedVisitor;
12650        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12651            type Value = ListFloatingIpAssociationsResponse;
12652            fn expecting(
12653                &self,
12654                formatter: &mut std::fmt::Formatter<'_>,
12655            ) -> std::fmt::Result {
12656                formatter
12657                    .write_str(
12658                        "struct origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12659                    )
12660            }
12661            fn visit_map<V>(
12662                self,
12663                mut map_: V,
12664            ) -> std::result::Result<ListFloatingIpAssociationsResponse, V::Error>
12665            where
12666                V: serde::de::MapAccess<'de>,
12667            {
12668                let mut floating_ip_associations__ = None;
12669                let mut next_page_token__ = None;
12670                while let Some(k) = map_.next_key()? {
12671                    match k {
12672                        GeneratedField::FloatingIpAssociations => {
12673                            if floating_ip_associations__.is_some() {
12674                                return Err(
12675                                    serde::de::Error::duplicate_field("floatingIpAssociations"),
12676                                );
12677                            }
12678                            floating_ip_associations__ = Some(map_.next_value()?);
12679                        }
12680                        GeneratedField::NextPageToken => {
12681                            if next_page_token__.is_some() {
12682                                return Err(
12683                                    serde::de::Error::duplicate_field("nextPageToken"),
12684                                );
12685                            }
12686                            next_page_token__ = Some(map_.next_value()?);
12687                        }
12688                        GeneratedField::__SkipField__ => {
12689                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12690                        }
12691                    }
12692                }
12693                Ok(ListFloatingIpAssociationsResponse {
12694                    floating_ip_associations: floating_ip_associations__
12695                        .unwrap_or_default(),
12696                    next_page_token: next_page_token__.unwrap_or_default(),
12697                })
12698            }
12699        }
12700        deserializer
12701            .deserialize_struct(
12702                "origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12703                FIELDS,
12704                GeneratedVisitor,
12705            )
12706    }
12707}
12708impl serde::Serialize for ListFloatingIpsRequest {
12709    #[allow(deprecated)]
12710    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12711    where
12712        S: serde::Serializer,
12713    {
12714        use serde::ser::SerializeStruct;
12715        let mut len = 0;
12716        if !self.parent.is_empty() {
12717            len += 1;
12718        }
12719        if self.page_size != 0 {
12720            len += 1;
12721        }
12722        if !self.page_token.is_empty() {
12723            len += 1;
12724        }
12725        let mut struct_ser = serializer
12726            .serialize_struct(
12727                "origincloud.network.v1beta1.ListFloatingIpsRequest",
12728                len,
12729            )?;
12730        if !self.parent.is_empty() {
12731            struct_ser.serialize_field("parent", &self.parent)?;
12732        }
12733        if self.page_size != 0 {
12734            struct_ser.serialize_field("pageSize", &self.page_size)?;
12735        }
12736        if !self.page_token.is_empty() {
12737            struct_ser.serialize_field("pageToken", &self.page_token)?;
12738        }
12739        struct_ser.end()
12740    }
12741}
12742impl<'de> serde::Deserialize<'de> for ListFloatingIpsRequest {
12743    #[allow(deprecated)]
12744    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12745    where
12746        D: serde::Deserializer<'de>,
12747    {
12748        const FIELDS: &[&str] = &[
12749            "parent",
12750            "page_size",
12751            "pageSize",
12752            "page_token",
12753            "pageToken",
12754        ];
12755        #[allow(clippy::enum_variant_names)]
12756        enum GeneratedField {
12757            Parent,
12758            PageSize,
12759            PageToken,
12760            __SkipField__,
12761        }
12762        impl<'de> serde::Deserialize<'de> for GeneratedField {
12763            fn deserialize<D>(
12764                deserializer: D,
12765            ) -> std::result::Result<GeneratedField, D::Error>
12766            where
12767                D: serde::Deserializer<'de>,
12768            {
12769                struct GeneratedVisitor;
12770                impl serde::de::Visitor<'_> for GeneratedVisitor {
12771                    type Value = GeneratedField;
12772                    fn expecting(
12773                        &self,
12774                        formatter: &mut std::fmt::Formatter<'_>,
12775                    ) -> std::fmt::Result {
12776                        write!(formatter, "expected one of: {:?}", & FIELDS)
12777                    }
12778                    #[allow(unused_variables)]
12779                    fn visit_str<E>(
12780                        self,
12781                        value: &str,
12782                    ) -> std::result::Result<GeneratedField, E>
12783                    where
12784                        E: serde::de::Error,
12785                    {
12786                        match value {
12787                            "parent" => Ok(GeneratedField::Parent),
12788                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12789                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12790                            _ => Ok(GeneratedField::__SkipField__),
12791                        }
12792                    }
12793                }
12794                deserializer.deserialize_identifier(GeneratedVisitor)
12795            }
12796        }
12797        struct GeneratedVisitor;
12798        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12799            type Value = ListFloatingIpsRequest;
12800            fn expecting(
12801                &self,
12802                formatter: &mut std::fmt::Formatter<'_>,
12803            ) -> std::fmt::Result {
12804                formatter
12805                    .write_str(
12806                        "struct origincloud.network.v1beta1.ListFloatingIpsRequest",
12807                    )
12808            }
12809            fn visit_map<V>(
12810                self,
12811                mut map_: V,
12812            ) -> std::result::Result<ListFloatingIpsRequest, V::Error>
12813            where
12814                V: serde::de::MapAccess<'de>,
12815            {
12816                let mut parent__ = None;
12817                let mut page_size__ = None;
12818                let mut page_token__ = None;
12819                while let Some(k) = map_.next_key()? {
12820                    match k {
12821                        GeneratedField::Parent => {
12822                            if parent__.is_some() {
12823                                return Err(serde::de::Error::duplicate_field("parent"));
12824                            }
12825                            parent__ = Some(map_.next_value()?);
12826                        }
12827                        GeneratedField::PageSize => {
12828                            if page_size__.is_some() {
12829                                return Err(serde::de::Error::duplicate_field("pageSize"));
12830                            }
12831                            page_size__ = Some(
12832                                map_
12833                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12834                                    .0,
12835                            );
12836                        }
12837                        GeneratedField::PageToken => {
12838                            if page_token__.is_some() {
12839                                return Err(serde::de::Error::duplicate_field("pageToken"));
12840                            }
12841                            page_token__ = Some(map_.next_value()?);
12842                        }
12843                        GeneratedField::__SkipField__ => {
12844                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12845                        }
12846                    }
12847                }
12848                Ok(ListFloatingIpsRequest {
12849                    parent: parent__.unwrap_or_default(),
12850                    page_size: page_size__.unwrap_or_default(),
12851                    page_token: page_token__.unwrap_or_default(),
12852                })
12853            }
12854        }
12855        deserializer
12856            .deserialize_struct(
12857                "origincloud.network.v1beta1.ListFloatingIpsRequest",
12858                FIELDS,
12859                GeneratedVisitor,
12860            )
12861    }
12862}
12863impl serde::Serialize for ListFloatingIpsResponse {
12864    #[allow(deprecated)]
12865    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12866    where
12867        S: serde::Serializer,
12868    {
12869        use serde::ser::SerializeStruct;
12870        let mut len = 0;
12871        if !self.floating_ips.is_empty() {
12872            len += 1;
12873        }
12874        if !self.next_page_token.is_empty() {
12875            len += 1;
12876        }
12877        let mut struct_ser = serializer
12878            .serialize_struct(
12879                "origincloud.network.v1beta1.ListFloatingIpsResponse",
12880                len,
12881            )?;
12882        if !self.floating_ips.is_empty() {
12883            struct_ser.serialize_field("floatingIps", &self.floating_ips)?;
12884        }
12885        if !self.next_page_token.is_empty() {
12886            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12887        }
12888        struct_ser.end()
12889    }
12890}
12891impl<'de> serde::Deserialize<'de> for ListFloatingIpsResponse {
12892    #[allow(deprecated)]
12893    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12894    where
12895        D: serde::Deserializer<'de>,
12896    {
12897        const FIELDS: &[&str] = &[
12898            "floating_ips",
12899            "floatingIps",
12900            "next_page_token",
12901            "nextPageToken",
12902        ];
12903        #[allow(clippy::enum_variant_names)]
12904        enum GeneratedField {
12905            FloatingIps,
12906            NextPageToken,
12907            __SkipField__,
12908        }
12909        impl<'de> serde::Deserialize<'de> for GeneratedField {
12910            fn deserialize<D>(
12911                deserializer: D,
12912            ) -> std::result::Result<GeneratedField, D::Error>
12913            where
12914                D: serde::Deserializer<'de>,
12915            {
12916                struct GeneratedVisitor;
12917                impl serde::de::Visitor<'_> for GeneratedVisitor {
12918                    type Value = GeneratedField;
12919                    fn expecting(
12920                        &self,
12921                        formatter: &mut std::fmt::Formatter<'_>,
12922                    ) -> std::fmt::Result {
12923                        write!(formatter, "expected one of: {:?}", & FIELDS)
12924                    }
12925                    #[allow(unused_variables)]
12926                    fn visit_str<E>(
12927                        self,
12928                        value: &str,
12929                    ) -> std::result::Result<GeneratedField, E>
12930                    where
12931                        E: serde::de::Error,
12932                    {
12933                        match value {
12934                            "floatingIps" | "floating_ips" => {
12935                                Ok(GeneratedField::FloatingIps)
12936                            }
12937                            "nextPageToken" | "next_page_token" => {
12938                                Ok(GeneratedField::NextPageToken)
12939                            }
12940                            _ => Ok(GeneratedField::__SkipField__),
12941                        }
12942                    }
12943                }
12944                deserializer.deserialize_identifier(GeneratedVisitor)
12945            }
12946        }
12947        struct GeneratedVisitor;
12948        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12949            type Value = ListFloatingIpsResponse;
12950            fn expecting(
12951                &self,
12952                formatter: &mut std::fmt::Formatter<'_>,
12953            ) -> std::fmt::Result {
12954                formatter
12955                    .write_str(
12956                        "struct origincloud.network.v1beta1.ListFloatingIpsResponse",
12957                    )
12958            }
12959            fn visit_map<V>(
12960                self,
12961                mut map_: V,
12962            ) -> std::result::Result<ListFloatingIpsResponse, V::Error>
12963            where
12964                V: serde::de::MapAccess<'de>,
12965            {
12966                let mut floating_ips__ = None;
12967                let mut next_page_token__ = None;
12968                while let Some(k) = map_.next_key()? {
12969                    match k {
12970                        GeneratedField::FloatingIps => {
12971                            if floating_ips__.is_some() {
12972                                return Err(
12973                                    serde::de::Error::duplicate_field("floatingIps"),
12974                                );
12975                            }
12976                            floating_ips__ = Some(map_.next_value()?);
12977                        }
12978                        GeneratedField::NextPageToken => {
12979                            if next_page_token__.is_some() {
12980                                return Err(
12981                                    serde::de::Error::duplicate_field("nextPageToken"),
12982                                );
12983                            }
12984                            next_page_token__ = Some(map_.next_value()?);
12985                        }
12986                        GeneratedField::__SkipField__ => {
12987                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12988                        }
12989                    }
12990                }
12991                Ok(ListFloatingIpsResponse {
12992                    floating_ips: floating_ips__.unwrap_or_default(),
12993                    next_page_token: next_page_token__.unwrap_or_default(),
12994                })
12995            }
12996        }
12997        deserializer
12998            .deserialize_struct(
12999                "origincloud.network.v1beta1.ListFloatingIpsResponse",
13000                FIELDS,
13001                GeneratedVisitor,
13002            )
13003    }
13004}
13005impl serde::Serialize for ListInternetGatewaysRequest {
13006    #[allow(deprecated)]
13007    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13008    where
13009        S: serde::Serializer,
13010    {
13011        use serde::ser::SerializeStruct;
13012        let mut len = 0;
13013        if !self.parent.is_empty() {
13014            len += 1;
13015        }
13016        if self.page_size != 0 {
13017            len += 1;
13018        }
13019        if !self.page_token.is_empty() {
13020            len += 1;
13021        }
13022        if !self.vpc.is_empty() {
13023            len += 1;
13024        }
13025        let mut struct_ser = serializer
13026            .serialize_struct(
13027                "origincloud.network.v1beta1.ListInternetGatewaysRequest",
13028                len,
13029            )?;
13030        if !self.parent.is_empty() {
13031            struct_ser.serialize_field("parent", &self.parent)?;
13032        }
13033        if self.page_size != 0 {
13034            struct_ser.serialize_field("pageSize", &self.page_size)?;
13035        }
13036        if !self.page_token.is_empty() {
13037            struct_ser.serialize_field("pageToken", &self.page_token)?;
13038        }
13039        if !self.vpc.is_empty() {
13040            struct_ser.serialize_field("vpc", &self.vpc)?;
13041        }
13042        struct_ser.end()
13043    }
13044}
13045impl<'de> serde::Deserialize<'de> for ListInternetGatewaysRequest {
13046    #[allow(deprecated)]
13047    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13048    where
13049        D: serde::Deserializer<'de>,
13050    {
13051        const FIELDS: &[&str] = &[
13052            "parent",
13053            "page_size",
13054            "pageSize",
13055            "page_token",
13056            "pageToken",
13057            "vpc",
13058        ];
13059        #[allow(clippy::enum_variant_names)]
13060        enum GeneratedField {
13061            Parent,
13062            PageSize,
13063            PageToken,
13064            Vpc,
13065            __SkipField__,
13066        }
13067        impl<'de> serde::Deserialize<'de> for GeneratedField {
13068            fn deserialize<D>(
13069                deserializer: D,
13070            ) -> std::result::Result<GeneratedField, D::Error>
13071            where
13072                D: serde::Deserializer<'de>,
13073            {
13074                struct GeneratedVisitor;
13075                impl serde::de::Visitor<'_> for GeneratedVisitor {
13076                    type Value = GeneratedField;
13077                    fn expecting(
13078                        &self,
13079                        formatter: &mut std::fmt::Formatter<'_>,
13080                    ) -> std::fmt::Result {
13081                        write!(formatter, "expected one of: {:?}", & FIELDS)
13082                    }
13083                    #[allow(unused_variables)]
13084                    fn visit_str<E>(
13085                        self,
13086                        value: &str,
13087                    ) -> std::result::Result<GeneratedField, E>
13088                    where
13089                        E: serde::de::Error,
13090                    {
13091                        match value {
13092                            "parent" => Ok(GeneratedField::Parent),
13093                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13094                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13095                            "vpc" => Ok(GeneratedField::Vpc),
13096                            _ => Ok(GeneratedField::__SkipField__),
13097                        }
13098                    }
13099                }
13100                deserializer.deserialize_identifier(GeneratedVisitor)
13101            }
13102        }
13103        struct GeneratedVisitor;
13104        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13105            type Value = ListInternetGatewaysRequest;
13106            fn expecting(
13107                &self,
13108                formatter: &mut std::fmt::Formatter<'_>,
13109            ) -> std::fmt::Result {
13110                formatter
13111                    .write_str(
13112                        "struct origincloud.network.v1beta1.ListInternetGatewaysRequest",
13113                    )
13114            }
13115            fn visit_map<V>(
13116                self,
13117                mut map_: V,
13118            ) -> std::result::Result<ListInternetGatewaysRequest, V::Error>
13119            where
13120                V: serde::de::MapAccess<'de>,
13121            {
13122                let mut parent__ = None;
13123                let mut page_size__ = None;
13124                let mut page_token__ = None;
13125                let mut vpc__ = None;
13126                while let Some(k) = map_.next_key()? {
13127                    match k {
13128                        GeneratedField::Parent => {
13129                            if parent__.is_some() {
13130                                return Err(serde::de::Error::duplicate_field("parent"));
13131                            }
13132                            parent__ = Some(map_.next_value()?);
13133                        }
13134                        GeneratedField::PageSize => {
13135                            if page_size__.is_some() {
13136                                return Err(serde::de::Error::duplicate_field("pageSize"));
13137                            }
13138                            page_size__ = Some(
13139                                map_
13140                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13141                                    .0,
13142                            );
13143                        }
13144                        GeneratedField::PageToken => {
13145                            if page_token__.is_some() {
13146                                return Err(serde::de::Error::duplicate_field("pageToken"));
13147                            }
13148                            page_token__ = Some(map_.next_value()?);
13149                        }
13150                        GeneratedField::Vpc => {
13151                            if vpc__.is_some() {
13152                                return Err(serde::de::Error::duplicate_field("vpc"));
13153                            }
13154                            vpc__ = Some(map_.next_value()?);
13155                        }
13156                        GeneratedField::__SkipField__ => {
13157                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13158                        }
13159                    }
13160                }
13161                Ok(ListInternetGatewaysRequest {
13162                    parent: parent__.unwrap_or_default(),
13163                    page_size: page_size__.unwrap_or_default(),
13164                    page_token: page_token__.unwrap_or_default(),
13165                    vpc: vpc__.unwrap_or_default(),
13166                })
13167            }
13168        }
13169        deserializer
13170            .deserialize_struct(
13171                "origincloud.network.v1beta1.ListInternetGatewaysRequest",
13172                FIELDS,
13173                GeneratedVisitor,
13174            )
13175    }
13176}
13177impl serde::Serialize for ListInternetGatewaysResponse {
13178    #[allow(deprecated)]
13179    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13180    where
13181        S: serde::Serializer,
13182    {
13183        use serde::ser::SerializeStruct;
13184        let mut len = 0;
13185        if !self.internet_gateways.is_empty() {
13186            len += 1;
13187        }
13188        if !self.next_page_token.is_empty() {
13189            len += 1;
13190        }
13191        let mut struct_ser = serializer
13192            .serialize_struct(
13193                "origincloud.network.v1beta1.ListInternetGatewaysResponse",
13194                len,
13195            )?;
13196        if !self.internet_gateways.is_empty() {
13197            struct_ser.serialize_field("internetGateways", &self.internet_gateways)?;
13198        }
13199        if !self.next_page_token.is_empty() {
13200            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13201        }
13202        struct_ser.end()
13203    }
13204}
13205impl<'de> serde::Deserialize<'de> for ListInternetGatewaysResponse {
13206    #[allow(deprecated)]
13207    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13208    where
13209        D: serde::Deserializer<'de>,
13210    {
13211        const FIELDS: &[&str] = &[
13212            "internet_gateways",
13213            "internetGateways",
13214            "next_page_token",
13215            "nextPageToken",
13216        ];
13217        #[allow(clippy::enum_variant_names)]
13218        enum GeneratedField {
13219            InternetGateways,
13220            NextPageToken,
13221            __SkipField__,
13222        }
13223        impl<'de> serde::Deserialize<'de> for GeneratedField {
13224            fn deserialize<D>(
13225                deserializer: D,
13226            ) -> std::result::Result<GeneratedField, D::Error>
13227            where
13228                D: serde::Deserializer<'de>,
13229            {
13230                struct GeneratedVisitor;
13231                impl serde::de::Visitor<'_> for GeneratedVisitor {
13232                    type Value = GeneratedField;
13233                    fn expecting(
13234                        &self,
13235                        formatter: &mut std::fmt::Formatter<'_>,
13236                    ) -> std::fmt::Result {
13237                        write!(formatter, "expected one of: {:?}", & FIELDS)
13238                    }
13239                    #[allow(unused_variables)]
13240                    fn visit_str<E>(
13241                        self,
13242                        value: &str,
13243                    ) -> std::result::Result<GeneratedField, E>
13244                    where
13245                        E: serde::de::Error,
13246                    {
13247                        match value {
13248                            "internetGateways" | "internet_gateways" => {
13249                                Ok(GeneratedField::InternetGateways)
13250                            }
13251                            "nextPageToken" | "next_page_token" => {
13252                                Ok(GeneratedField::NextPageToken)
13253                            }
13254                            _ => Ok(GeneratedField::__SkipField__),
13255                        }
13256                    }
13257                }
13258                deserializer.deserialize_identifier(GeneratedVisitor)
13259            }
13260        }
13261        struct GeneratedVisitor;
13262        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13263            type Value = ListInternetGatewaysResponse;
13264            fn expecting(
13265                &self,
13266                formatter: &mut std::fmt::Formatter<'_>,
13267            ) -> std::fmt::Result {
13268                formatter
13269                    .write_str(
13270                        "struct origincloud.network.v1beta1.ListInternetGatewaysResponse",
13271                    )
13272            }
13273            fn visit_map<V>(
13274                self,
13275                mut map_: V,
13276            ) -> std::result::Result<ListInternetGatewaysResponse, V::Error>
13277            where
13278                V: serde::de::MapAccess<'de>,
13279            {
13280                let mut internet_gateways__ = None;
13281                let mut next_page_token__ = None;
13282                while let Some(k) = map_.next_key()? {
13283                    match k {
13284                        GeneratedField::InternetGateways => {
13285                            if internet_gateways__.is_some() {
13286                                return Err(
13287                                    serde::de::Error::duplicate_field("internetGateways"),
13288                                );
13289                            }
13290                            internet_gateways__ = Some(map_.next_value()?);
13291                        }
13292                        GeneratedField::NextPageToken => {
13293                            if next_page_token__.is_some() {
13294                                return Err(
13295                                    serde::de::Error::duplicate_field("nextPageToken"),
13296                                );
13297                            }
13298                            next_page_token__ = Some(map_.next_value()?);
13299                        }
13300                        GeneratedField::__SkipField__ => {
13301                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13302                        }
13303                    }
13304                }
13305                Ok(ListInternetGatewaysResponse {
13306                    internet_gateways: internet_gateways__.unwrap_or_default(),
13307                    next_page_token: next_page_token__.unwrap_or_default(),
13308                })
13309            }
13310        }
13311        deserializer
13312            .deserialize_struct(
13313                "origincloud.network.v1beta1.ListInternetGatewaysResponse",
13314                FIELDS,
13315                GeneratedVisitor,
13316            )
13317    }
13318}
13319impl serde::Serialize for ListNatGatewaysRequest {
13320    #[allow(deprecated)]
13321    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13322    where
13323        S: serde::Serializer,
13324    {
13325        use serde::ser::SerializeStruct;
13326        let mut len = 0;
13327        if !self.parent.is_empty() {
13328            len += 1;
13329        }
13330        if self.page_size != 0 {
13331            len += 1;
13332        }
13333        if !self.page_token.is_empty() {
13334            len += 1;
13335        }
13336        let mut struct_ser = serializer
13337            .serialize_struct(
13338                "origincloud.network.v1beta1.ListNatGatewaysRequest",
13339                len,
13340            )?;
13341        if !self.parent.is_empty() {
13342            struct_ser.serialize_field("parent", &self.parent)?;
13343        }
13344        if self.page_size != 0 {
13345            struct_ser.serialize_field("pageSize", &self.page_size)?;
13346        }
13347        if !self.page_token.is_empty() {
13348            struct_ser.serialize_field("pageToken", &self.page_token)?;
13349        }
13350        struct_ser.end()
13351    }
13352}
13353impl<'de> serde::Deserialize<'de> for ListNatGatewaysRequest {
13354    #[allow(deprecated)]
13355    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13356    where
13357        D: serde::Deserializer<'de>,
13358    {
13359        const FIELDS: &[&str] = &[
13360            "parent",
13361            "page_size",
13362            "pageSize",
13363            "page_token",
13364            "pageToken",
13365        ];
13366        #[allow(clippy::enum_variant_names)]
13367        enum GeneratedField {
13368            Parent,
13369            PageSize,
13370            PageToken,
13371            __SkipField__,
13372        }
13373        impl<'de> serde::Deserialize<'de> for GeneratedField {
13374            fn deserialize<D>(
13375                deserializer: D,
13376            ) -> std::result::Result<GeneratedField, D::Error>
13377            where
13378                D: serde::Deserializer<'de>,
13379            {
13380                struct GeneratedVisitor;
13381                impl serde::de::Visitor<'_> for GeneratedVisitor {
13382                    type Value = GeneratedField;
13383                    fn expecting(
13384                        &self,
13385                        formatter: &mut std::fmt::Formatter<'_>,
13386                    ) -> std::fmt::Result {
13387                        write!(formatter, "expected one of: {:?}", & FIELDS)
13388                    }
13389                    #[allow(unused_variables)]
13390                    fn visit_str<E>(
13391                        self,
13392                        value: &str,
13393                    ) -> std::result::Result<GeneratedField, E>
13394                    where
13395                        E: serde::de::Error,
13396                    {
13397                        match value {
13398                            "parent" => Ok(GeneratedField::Parent),
13399                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13400                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13401                            _ => Ok(GeneratedField::__SkipField__),
13402                        }
13403                    }
13404                }
13405                deserializer.deserialize_identifier(GeneratedVisitor)
13406            }
13407        }
13408        struct GeneratedVisitor;
13409        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13410            type Value = ListNatGatewaysRequest;
13411            fn expecting(
13412                &self,
13413                formatter: &mut std::fmt::Formatter<'_>,
13414            ) -> std::fmt::Result {
13415                formatter
13416                    .write_str(
13417                        "struct origincloud.network.v1beta1.ListNatGatewaysRequest",
13418                    )
13419            }
13420            fn visit_map<V>(
13421                self,
13422                mut map_: V,
13423            ) -> std::result::Result<ListNatGatewaysRequest, V::Error>
13424            where
13425                V: serde::de::MapAccess<'de>,
13426            {
13427                let mut parent__ = None;
13428                let mut page_size__ = None;
13429                let mut page_token__ = None;
13430                while let Some(k) = map_.next_key()? {
13431                    match k {
13432                        GeneratedField::Parent => {
13433                            if parent__.is_some() {
13434                                return Err(serde::de::Error::duplicate_field("parent"));
13435                            }
13436                            parent__ = Some(map_.next_value()?);
13437                        }
13438                        GeneratedField::PageSize => {
13439                            if page_size__.is_some() {
13440                                return Err(serde::de::Error::duplicate_field("pageSize"));
13441                            }
13442                            page_size__ = Some(
13443                                map_
13444                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13445                                    .0,
13446                            );
13447                        }
13448                        GeneratedField::PageToken => {
13449                            if page_token__.is_some() {
13450                                return Err(serde::de::Error::duplicate_field("pageToken"));
13451                            }
13452                            page_token__ = Some(map_.next_value()?);
13453                        }
13454                        GeneratedField::__SkipField__ => {
13455                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13456                        }
13457                    }
13458                }
13459                Ok(ListNatGatewaysRequest {
13460                    parent: parent__.unwrap_or_default(),
13461                    page_size: page_size__.unwrap_or_default(),
13462                    page_token: page_token__.unwrap_or_default(),
13463                })
13464            }
13465        }
13466        deserializer
13467            .deserialize_struct(
13468                "origincloud.network.v1beta1.ListNatGatewaysRequest",
13469                FIELDS,
13470                GeneratedVisitor,
13471            )
13472    }
13473}
13474impl serde::Serialize for ListNatGatewaysResponse {
13475    #[allow(deprecated)]
13476    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13477    where
13478        S: serde::Serializer,
13479    {
13480        use serde::ser::SerializeStruct;
13481        let mut len = 0;
13482        if !self.nat_gateways.is_empty() {
13483            len += 1;
13484        }
13485        if !self.next_page_token.is_empty() {
13486            len += 1;
13487        }
13488        let mut struct_ser = serializer
13489            .serialize_struct(
13490                "origincloud.network.v1beta1.ListNatGatewaysResponse",
13491                len,
13492            )?;
13493        if !self.nat_gateways.is_empty() {
13494            struct_ser.serialize_field("natGateways", &self.nat_gateways)?;
13495        }
13496        if !self.next_page_token.is_empty() {
13497            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13498        }
13499        struct_ser.end()
13500    }
13501}
13502impl<'de> serde::Deserialize<'de> for ListNatGatewaysResponse {
13503    #[allow(deprecated)]
13504    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13505    where
13506        D: serde::Deserializer<'de>,
13507    {
13508        const FIELDS: &[&str] = &[
13509            "nat_gateways",
13510            "natGateways",
13511            "next_page_token",
13512            "nextPageToken",
13513        ];
13514        #[allow(clippy::enum_variant_names)]
13515        enum GeneratedField {
13516            NatGateways,
13517            NextPageToken,
13518            __SkipField__,
13519        }
13520        impl<'de> serde::Deserialize<'de> for GeneratedField {
13521            fn deserialize<D>(
13522                deserializer: D,
13523            ) -> std::result::Result<GeneratedField, D::Error>
13524            where
13525                D: serde::Deserializer<'de>,
13526            {
13527                struct GeneratedVisitor;
13528                impl serde::de::Visitor<'_> for GeneratedVisitor {
13529                    type Value = GeneratedField;
13530                    fn expecting(
13531                        &self,
13532                        formatter: &mut std::fmt::Formatter<'_>,
13533                    ) -> std::fmt::Result {
13534                        write!(formatter, "expected one of: {:?}", & FIELDS)
13535                    }
13536                    #[allow(unused_variables)]
13537                    fn visit_str<E>(
13538                        self,
13539                        value: &str,
13540                    ) -> std::result::Result<GeneratedField, E>
13541                    where
13542                        E: serde::de::Error,
13543                    {
13544                        match value {
13545                            "natGateways" | "nat_gateways" => {
13546                                Ok(GeneratedField::NatGateways)
13547                            }
13548                            "nextPageToken" | "next_page_token" => {
13549                                Ok(GeneratedField::NextPageToken)
13550                            }
13551                            _ => Ok(GeneratedField::__SkipField__),
13552                        }
13553                    }
13554                }
13555                deserializer.deserialize_identifier(GeneratedVisitor)
13556            }
13557        }
13558        struct GeneratedVisitor;
13559        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13560            type Value = ListNatGatewaysResponse;
13561            fn expecting(
13562                &self,
13563                formatter: &mut std::fmt::Formatter<'_>,
13564            ) -> std::fmt::Result {
13565                formatter
13566                    .write_str(
13567                        "struct origincloud.network.v1beta1.ListNatGatewaysResponse",
13568                    )
13569            }
13570            fn visit_map<V>(
13571                self,
13572                mut map_: V,
13573            ) -> std::result::Result<ListNatGatewaysResponse, V::Error>
13574            where
13575                V: serde::de::MapAccess<'de>,
13576            {
13577                let mut nat_gateways__ = None;
13578                let mut next_page_token__ = None;
13579                while let Some(k) = map_.next_key()? {
13580                    match k {
13581                        GeneratedField::NatGateways => {
13582                            if nat_gateways__.is_some() {
13583                                return Err(
13584                                    serde::de::Error::duplicate_field("natGateways"),
13585                                );
13586                            }
13587                            nat_gateways__ = Some(map_.next_value()?);
13588                        }
13589                        GeneratedField::NextPageToken => {
13590                            if next_page_token__.is_some() {
13591                                return Err(
13592                                    serde::de::Error::duplicate_field("nextPageToken"),
13593                                );
13594                            }
13595                            next_page_token__ = Some(map_.next_value()?);
13596                        }
13597                        GeneratedField::__SkipField__ => {
13598                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13599                        }
13600                    }
13601                }
13602                Ok(ListNatGatewaysResponse {
13603                    nat_gateways: nat_gateways__.unwrap_or_default(),
13604                    next_page_token: next_page_token__.unwrap_or_default(),
13605                })
13606            }
13607        }
13608        deserializer
13609            .deserialize_struct(
13610                "origincloud.network.v1beta1.ListNatGatewaysResponse",
13611                FIELDS,
13612                GeneratedVisitor,
13613            )
13614    }
13615}
13616impl serde::Serialize for ListNetworkInterfacesRequest {
13617    #[allow(deprecated)]
13618    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13619    where
13620        S: serde::Serializer,
13621    {
13622        use serde::ser::SerializeStruct;
13623        let mut len = 0;
13624        if !self.parent.is_empty() {
13625            len += 1;
13626        }
13627        if self.page_size != 0 {
13628            len += 1;
13629        }
13630        if !self.page_token.is_empty() {
13631            len += 1;
13632        }
13633        if !self.subnet.is_empty() {
13634            len += 1;
13635        }
13636        let mut struct_ser = serializer
13637            .serialize_struct(
13638                "origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13639                len,
13640            )?;
13641        if !self.parent.is_empty() {
13642            struct_ser.serialize_field("parent", &self.parent)?;
13643        }
13644        if self.page_size != 0 {
13645            struct_ser.serialize_field("pageSize", &self.page_size)?;
13646        }
13647        if !self.page_token.is_empty() {
13648            struct_ser.serialize_field("pageToken", &self.page_token)?;
13649        }
13650        if !self.subnet.is_empty() {
13651            struct_ser.serialize_field("subnet", &self.subnet)?;
13652        }
13653        struct_ser.end()
13654    }
13655}
13656impl<'de> serde::Deserialize<'de> for ListNetworkInterfacesRequest {
13657    #[allow(deprecated)]
13658    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13659    where
13660        D: serde::Deserializer<'de>,
13661    {
13662        const FIELDS: &[&str] = &[
13663            "parent",
13664            "page_size",
13665            "pageSize",
13666            "page_token",
13667            "pageToken",
13668            "subnet",
13669        ];
13670        #[allow(clippy::enum_variant_names)]
13671        enum GeneratedField {
13672            Parent,
13673            PageSize,
13674            PageToken,
13675            Subnet,
13676            __SkipField__,
13677        }
13678        impl<'de> serde::Deserialize<'de> for GeneratedField {
13679            fn deserialize<D>(
13680                deserializer: D,
13681            ) -> std::result::Result<GeneratedField, D::Error>
13682            where
13683                D: serde::Deserializer<'de>,
13684            {
13685                struct GeneratedVisitor;
13686                impl serde::de::Visitor<'_> for GeneratedVisitor {
13687                    type Value = GeneratedField;
13688                    fn expecting(
13689                        &self,
13690                        formatter: &mut std::fmt::Formatter<'_>,
13691                    ) -> std::fmt::Result {
13692                        write!(formatter, "expected one of: {:?}", & FIELDS)
13693                    }
13694                    #[allow(unused_variables)]
13695                    fn visit_str<E>(
13696                        self,
13697                        value: &str,
13698                    ) -> std::result::Result<GeneratedField, E>
13699                    where
13700                        E: serde::de::Error,
13701                    {
13702                        match value {
13703                            "parent" => Ok(GeneratedField::Parent),
13704                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13705                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13706                            "subnet" => Ok(GeneratedField::Subnet),
13707                            _ => Ok(GeneratedField::__SkipField__),
13708                        }
13709                    }
13710                }
13711                deserializer.deserialize_identifier(GeneratedVisitor)
13712            }
13713        }
13714        struct GeneratedVisitor;
13715        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13716            type Value = ListNetworkInterfacesRequest;
13717            fn expecting(
13718                &self,
13719                formatter: &mut std::fmt::Formatter<'_>,
13720            ) -> std::fmt::Result {
13721                formatter
13722                    .write_str(
13723                        "struct origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13724                    )
13725            }
13726            fn visit_map<V>(
13727                self,
13728                mut map_: V,
13729            ) -> std::result::Result<ListNetworkInterfacesRequest, V::Error>
13730            where
13731                V: serde::de::MapAccess<'de>,
13732            {
13733                let mut parent__ = None;
13734                let mut page_size__ = None;
13735                let mut page_token__ = None;
13736                let mut subnet__ = None;
13737                while let Some(k) = map_.next_key()? {
13738                    match k {
13739                        GeneratedField::Parent => {
13740                            if parent__.is_some() {
13741                                return Err(serde::de::Error::duplicate_field("parent"));
13742                            }
13743                            parent__ = Some(map_.next_value()?);
13744                        }
13745                        GeneratedField::PageSize => {
13746                            if page_size__.is_some() {
13747                                return Err(serde::de::Error::duplicate_field("pageSize"));
13748                            }
13749                            page_size__ = Some(
13750                                map_
13751                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13752                                    .0,
13753                            );
13754                        }
13755                        GeneratedField::PageToken => {
13756                            if page_token__.is_some() {
13757                                return Err(serde::de::Error::duplicate_field("pageToken"));
13758                            }
13759                            page_token__ = Some(map_.next_value()?);
13760                        }
13761                        GeneratedField::Subnet => {
13762                            if subnet__.is_some() {
13763                                return Err(serde::de::Error::duplicate_field("subnet"));
13764                            }
13765                            subnet__ = Some(map_.next_value()?);
13766                        }
13767                        GeneratedField::__SkipField__ => {
13768                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13769                        }
13770                    }
13771                }
13772                Ok(ListNetworkInterfacesRequest {
13773                    parent: parent__.unwrap_or_default(),
13774                    page_size: page_size__.unwrap_or_default(),
13775                    page_token: page_token__.unwrap_or_default(),
13776                    subnet: subnet__.unwrap_or_default(),
13777                })
13778            }
13779        }
13780        deserializer
13781            .deserialize_struct(
13782                "origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13783                FIELDS,
13784                GeneratedVisitor,
13785            )
13786    }
13787}
13788impl serde::Serialize for ListNetworkInterfacesResponse {
13789    #[allow(deprecated)]
13790    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13791    where
13792        S: serde::Serializer,
13793    {
13794        use serde::ser::SerializeStruct;
13795        let mut len = 0;
13796        if !self.network_interfaces.is_empty() {
13797            len += 1;
13798        }
13799        if !self.next_page_token.is_empty() {
13800            len += 1;
13801        }
13802        let mut struct_ser = serializer
13803            .serialize_struct(
13804                "origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13805                len,
13806            )?;
13807        if !self.network_interfaces.is_empty() {
13808            struct_ser.serialize_field("networkInterfaces", &self.network_interfaces)?;
13809        }
13810        if !self.next_page_token.is_empty() {
13811            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13812        }
13813        struct_ser.end()
13814    }
13815}
13816impl<'de> serde::Deserialize<'de> for ListNetworkInterfacesResponse {
13817    #[allow(deprecated)]
13818    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13819    where
13820        D: serde::Deserializer<'de>,
13821    {
13822        const FIELDS: &[&str] = &[
13823            "network_interfaces",
13824            "networkInterfaces",
13825            "next_page_token",
13826            "nextPageToken",
13827        ];
13828        #[allow(clippy::enum_variant_names)]
13829        enum GeneratedField {
13830            NetworkInterfaces,
13831            NextPageToken,
13832            __SkipField__,
13833        }
13834        impl<'de> serde::Deserialize<'de> for GeneratedField {
13835            fn deserialize<D>(
13836                deserializer: D,
13837            ) -> std::result::Result<GeneratedField, D::Error>
13838            where
13839                D: serde::Deserializer<'de>,
13840            {
13841                struct GeneratedVisitor;
13842                impl serde::de::Visitor<'_> for GeneratedVisitor {
13843                    type Value = GeneratedField;
13844                    fn expecting(
13845                        &self,
13846                        formatter: &mut std::fmt::Formatter<'_>,
13847                    ) -> std::fmt::Result {
13848                        write!(formatter, "expected one of: {:?}", & FIELDS)
13849                    }
13850                    #[allow(unused_variables)]
13851                    fn visit_str<E>(
13852                        self,
13853                        value: &str,
13854                    ) -> std::result::Result<GeneratedField, E>
13855                    where
13856                        E: serde::de::Error,
13857                    {
13858                        match value {
13859                            "networkInterfaces" | "network_interfaces" => {
13860                                Ok(GeneratedField::NetworkInterfaces)
13861                            }
13862                            "nextPageToken" | "next_page_token" => {
13863                                Ok(GeneratedField::NextPageToken)
13864                            }
13865                            _ => Ok(GeneratedField::__SkipField__),
13866                        }
13867                    }
13868                }
13869                deserializer.deserialize_identifier(GeneratedVisitor)
13870            }
13871        }
13872        struct GeneratedVisitor;
13873        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13874            type Value = ListNetworkInterfacesResponse;
13875            fn expecting(
13876                &self,
13877                formatter: &mut std::fmt::Formatter<'_>,
13878            ) -> std::fmt::Result {
13879                formatter
13880                    .write_str(
13881                        "struct origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13882                    )
13883            }
13884            fn visit_map<V>(
13885                self,
13886                mut map_: V,
13887            ) -> std::result::Result<ListNetworkInterfacesResponse, V::Error>
13888            where
13889                V: serde::de::MapAccess<'de>,
13890            {
13891                let mut network_interfaces__ = None;
13892                let mut next_page_token__ = None;
13893                while let Some(k) = map_.next_key()? {
13894                    match k {
13895                        GeneratedField::NetworkInterfaces => {
13896                            if network_interfaces__.is_some() {
13897                                return Err(
13898                                    serde::de::Error::duplicate_field("networkInterfaces"),
13899                                );
13900                            }
13901                            network_interfaces__ = Some(map_.next_value()?);
13902                        }
13903                        GeneratedField::NextPageToken => {
13904                            if next_page_token__.is_some() {
13905                                return Err(
13906                                    serde::de::Error::duplicate_field("nextPageToken"),
13907                                );
13908                            }
13909                            next_page_token__ = Some(map_.next_value()?);
13910                        }
13911                        GeneratedField::__SkipField__ => {
13912                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13913                        }
13914                    }
13915                }
13916                Ok(ListNetworkInterfacesResponse {
13917                    network_interfaces: network_interfaces__.unwrap_or_default(),
13918                    next_page_token: next_page_token__.unwrap_or_default(),
13919                })
13920            }
13921        }
13922        deserializer
13923            .deserialize_struct(
13924                "origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13925                FIELDS,
13926                GeneratedVisitor,
13927            )
13928    }
13929}
13930impl serde::Serialize for ListRouteTableAssociationsRequest {
13931    #[allow(deprecated)]
13932    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13933    where
13934        S: serde::Serializer,
13935    {
13936        use serde::ser::SerializeStruct;
13937        let mut len = 0;
13938        if !self.parent.is_empty() {
13939            len += 1;
13940        }
13941        if self.page_size != 0 {
13942            len += 1;
13943        }
13944        if !self.page_token.is_empty() {
13945            len += 1;
13946        }
13947        let mut struct_ser = serializer
13948            .serialize_struct(
13949                "origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
13950                len,
13951            )?;
13952        if !self.parent.is_empty() {
13953            struct_ser.serialize_field("parent", &self.parent)?;
13954        }
13955        if self.page_size != 0 {
13956            struct_ser.serialize_field("pageSize", &self.page_size)?;
13957        }
13958        if !self.page_token.is_empty() {
13959            struct_ser.serialize_field("pageToken", &self.page_token)?;
13960        }
13961        struct_ser.end()
13962    }
13963}
13964impl<'de> serde::Deserialize<'de> for ListRouteTableAssociationsRequest {
13965    #[allow(deprecated)]
13966    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13967    where
13968        D: serde::Deserializer<'de>,
13969    {
13970        const FIELDS: &[&str] = &[
13971            "parent",
13972            "page_size",
13973            "pageSize",
13974            "page_token",
13975            "pageToken",
13976        ];
13977        #[allow(clippy::enum_variant_names)]
13978        enum GeneratedField {
13979            Parent,
13980            PageSize,
13981            PageToken,
13982            __SkipField__,
13983        }
13984        impl<'de> serde::Deserialize<'de> for GeneratedField {
13985            fn deserialize<D>(
13986                deserializer: D,
13987            ) -> std::result::Result<GeneratedField, D::Error>
13988            where
13989                D: serde::Deserializer<'de>,
13990            {
13991                struct GeneratedVisitor;
13992                impl serde::de::Visitor<'_> for GeneratedVisitor {
13993                    type Value = GeneratedField;
13994                    fn expecting(
13995                        &self,
13996                        formatter: &mut std::fmt::Formatter<'_>,
13997                    ) -> std::fmt::Result {
13998                        write!(formatter, "expected one of: {:?}", & FIELDS)
13999                    }
14000                    #[allow(unused_variables)]
14001                    fn visit_str<E>(
14002                        self,
14003                        value: &str,
14004                    ) -> std::result::Result<GeneratedField, E>
14005                    where
14006                        E: serde::de::Error,
14007                    {
14008                        match value {
14009                            "parent" => Ok(GeneratedField::Parent),
14010                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14011                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14012                            _ => Ok(GeneratedField::__SkipField__),
14013                        }
14014                    }
14015                }
14016                deserializer.deserialize_identifier(GeneratedVisitor)
14017            }
14018        }
14019        struct GeneratedVisitor;
14020        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14021            type Value = ListRouteTableAssociationsRequest;
14022            fn expecting(
14023                &self,
14024                formatter: &mut std::fmt::Formatter<'_>,
14025            ) -> std::fmt::Result {
14026                formatter
14027                    .write_str(
14028                        "struct origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
14029                    )
14030            }
14031            fn visit_map<V>(
14032                self,
14033                mut map_: V,
14034            ) -> std::result::Result<ListRouteTableAssociationsRequest, V::Error>
14035            where
14036                V: serde::de::MapAccess<'de>,
14037            {
14038                let mut parent__ = None;
14039                let mut page_size__ = None;
14040                let mut page_token__ = None;
14041                while let Some(k) = map_.next_key()? {
14042                    match k {
14043                        GeneratedField::Parent => {
14044                            if parent__.is_some() {
14045                                return Err(serde::de::Error::duplicate_field("parent"));
14046                            }
14047                            parent__ = Some(map_.next_value()?);
14048                        }
14049                        GeneratedField::PageSize => {
14050                            if page_size__.is_some() {
14051                                return Err(serde::de::Error::duplicate_field("pageSize"));
14052                            }
14053                            page_size__ = Some(
14054                                map_
14055                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14056                                    .0,
14057                            );
14058                        }
14059                        GeneratedField::PageToken => {
14060                            if page_token__.is_some() {
14061                                return Err(serde::de::Error::duplicate_field("pageToken"));
14062                            }
14063                            page_token__ = Some(map_.next_value()?);
14064                        }
14065                        GeneratedField::__SkipField__ => {
14066                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14067                        }
14068                    }
14069                }
14070                Ok(ListRouteTableAssociationsRequest {
14071                    parent: parent__.unwrap_or_default(),
14072                    page_size: page_size__.unwrap_or_default(),
14073                    page_token: page_token__.unwrap_or_default(),
14074                })
14075            }
14076        }
14077        deserializer
14078            .deserialize_struct(
14079                "origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
14080                FIELDS,
14081                GeneratedVisitor,
14082            )
14083    }
14084}
14085impl serde::Serialize for ListRouteTableAssociationsResponse {
14086    #[allow(deprecated)]
14087    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14088    where
14089        S: serde::Serializer,
14090    {
14091        use serde::ser::SerializeStruct;
14092        let mut len = 0;
14093        if !self.route_table_associations.is_empty() {
14094            len += 1;
14095        }
14096        if !self.next_page_token.is_empty() {
14097            len += 1;
14098        }
14099        let mut struct_ser = serializer
14100            .serialize_struct(
14101                "origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14102                len,
14103            )?;
14104        if !self.route_table_associations.is_empty() {
14105            struct_ser
14106                .serialize_field(
14107                    "routeTableAssociations",
14108                    &self.route_table_associations,
14109                )?;
14110        }
14111        if !self.next_page_token.is_empty() {
14112            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14113        }
14114        struct_ser.end()
14115    }
14116}
14117impl<'de> serde::Deserialize<'de> for ListRouteTableAssociationsResponse {
14118    #[allow(deprecated)]
14119    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14120    where
14121        D: serde::Deserializer<'de>,
14122    {
14123        const FIELDS: &[&str] = &[
14124            "route_table_associations",
14125            "routeTableAssociations",
14126            "next_page_token",
14127            "nextPageToken",
14128        ];
14129        #[allow(clippy::enum_variant_names)]
14130        enum GeneratedField {
14131            RouteTableAssociations,
14132            NextPageToken,
14133            __SkipField__,
14134        }
14135        impl<'de> serde::Deserialize<'de> for GeneratedField {
14136            fn deserialize<D>(
14137                deserializer: D,
14138            ) -> std::result::Result<GeneratedField, D::Error>
14139            where
14140                D: serde::Deserializer<'de>,
14141            {
14142                struct GeneratedVisitor;
14143                impl serde::de::Visitor<'_> for GeneratedVisitor {
14144                    type Value = GeneratedField;
14145                    fn expecting(
14146                        &self,
14147                        formatter: &mut std::fmt::Formatter<'_>,
14148                    ) -> std::fmt::Result {
14149                        write!(formatter, "expected one of: {:?}", & FIELDS)
14150                    }
14151                    #[allow(unused_variables)]
14152                    fn visit_str<E>(
14153                        self,
14154                        value: &str,
14155                    ) -> std::result::Result<GeneratedField, E>
14156                    where
14157                        E: serde::de::Error,
14158                    {
14159                        match value {
14160                            "routeTableAssociations" | "route_table_associations" => {
14161                                Ok(GeneratedField::RouteTableAssociations)
14162                            }
14163                            "nextPageToken" | "next_page_token" => {
14164                                Ok(GeneratedField::NextPageToken)
14165                            }
14166                            _ => Ok(GeneratedField::__SkipField__),
14167                        }
14168                    }
14169                }
14170                deserializer.deserialize_identifier(GeneratedVisitor)
14171            }
14172        }
14173        struct GeneratedVisitor;
14174        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14175            type Value = ListRouteTableAssociationsResponse;
14176            fn expecting(
14177                &self,
14178                formatter: &mut std::fmt::Formatter<'_>,
14179            ) -> std::fmt::Result {
14180                formatter
14181                    .write_str(
14182                        "struct origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14183                    )
14184            }
14185            fn visit_map<V>(
14186                self,
14187                mut map_: V,
14188            ) -> std::result::Result<ListRouteTableAssociationsResponse, V::Error>
14189            where
14190                V: serde::de::MapAccess<'de>,
14191            {
14192                let mut route_table_associations__ = None;
14193                let mut next_page_token__ = None;
14194                while let Some(k) = map_.next_key()? {
14195                    match k {
14196                        GeneratedField::RouteTableAssociations => {
14197                            if route_table_associations__.is_some() {
14198                                return Err(
14199                                    serde::de::Error::duplicate_field("routeTableAssociations"),
14200                                );
14201                            }
14202                            route_table_associations__ = Some(map_.next_value()?);
14203                        }
14204                        GeneratedField::NextPageToken => {
14205                            if next_page_token__.is_some() {
14206                                return Err(
14207                                    serde::de::Error::duplicate_field("nextPageToken"),
14208                                );
14209                            }
14210                            next_page_token__ = Some(map_.next_value()?);
14211                        }
14212                        GeneratedField::__SkipField__ => {
14213                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14214                        }
14215                    }
14216                }
14217                Ok(ListRouteTableAssociationsResponse {
14218                    route_table_associations: route_table_associations__
14219                        .unwrap_or_default(),
14220                    next_page_token: next_page_token__.unwrap_or_default(),
14221                })
14222            }
14223        }
14224        deserializer
14225            .deserialize_struct(
14226                "origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14227                FIELDS,
14228                GeneratedVisitor,
14229            )
14230    }
14231}
14232impl serde::Serialize for ListRouteTablesRequest {
14233    #[allow(deprecated)]
14234    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14235    where
14236        S: serde::Serializer,
14237    {
14238        use serde::ser::SerializeStruct;
14239        let mut len = 0;
14240        if !self.parent.is_empty() {
14241            len += 1;
14242        }
14243        if self.page_size != 0 {
14244            len += 1;
14245        }
14246        if !self.page_token.is_empty() {
14247            len += 1;
14248        }
14249        if !self.vpc.is_empty() {
14250            len += 1;
14251        }
14252        let mut struct_ser = serializer
14253            .serialize_struct(
14254                "origincloud.network.v1beta1.ListRouteTablesRequest",
14255                len,
14256            )?;
14257        if !self.parent.is_empty() {
14258            struct_ser.serialize_field("parent", &self.parent)?;
14259        }
14260        if self.page_size != 0 {
14261            struct_ser.serialize_field("pageSize", &self.page_size)?;
14262        }
14263        if !self.page_token.is_empty() {
14264            struct_ser.serialize_field("pageToken", &self.page_token)?;
14265        }
14266        if !self.vpc.is_empty() {
14267            struct_ser.serialize_field("vpc", &self.vpc)?;
14268        }
14269        struct_ser.end()
14270    }
14271}
14272impl<'de> serde::Deserialize<'de> for ListRouteTablesRequest {
14273    #[allow(deprecated)]
14274    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14275    where
14276        D: serde::Deserializer<'de>,
14277    {
14278        const FIELDS: &[&str] = &[
14279            "parent",
14280            "page_size",
14281            "pageSize",
14282            "page_token",
14283            "pageToken",
14284            "vpc",
14285        ];
14286        #[allow(clippy::enum_variant_names)]
14287        enum GeneratedField {
14288            Parent,
14289            PageSize,
14290            PageToken,
14291            Vpc,
14292            __SkipField__,
14293        }
14294        impl<'de> serde::Deserialize<'de> for GeneratedField {
14295            fn deserialize<D>(
14296                deserializer: D,
14297            ) -> std::result::Result<GeneratedField, D::Error>
14298            where
14299                D: serde::Deserializer<'de>,
14300            {
14301                struct GeneratedVisitor;
14302                impl serde::de::Visitor<'_> for GeneratedVisitor {
14303                    type Value = GeneratedField;
14304                    fn expecting(
14305                        &self,
14306                        formatter: &mut std::fmt::Formatter<'_>,
14307                    ) -> std::fmt::Result {
14308                        write!(formatter, "expected one of: {:?}", & FIELDS)
14309                    }
14310                    #[allow(unused_variables)]
14311                    fn visit_str<E>(
14312                        self,
14313                        value: &str,
14314                    ) -> std::result::Result<GeneratedField, E>
14315                    where
14316                        E: serde::de::Error,
14317                    {
14318                        match value {
14319                            "parent" => Ok(GeneratedField::Parent),
14320                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14321                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14322                            "vpc" => Ok(GeneratedField::Vpc),
14323                            _ => Ok(GeneratedField::__SkipField__),
14324                        }
14325                    }
14326                }
14327                deserializer.deserialize_identifier(GeneratedVisitor)
14328            }
14329        }
14330        struct GeneratedVisitor;
14331        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14332            type Value = ListRouteTablesRequest;
14333            fn expecting(
14334                &self,
14335                formatter: &mut std::fmt::Formatter<'_>,
14336            ) -> std::fmt::Result {
14337                formatter
14338                    .write_str(
14339                        "struct origincloud.network.v1beta1.ListRouteTablesRequest",
14340                    )
14341            }
14342            fn visit_map<V>(
14343                self,
14344                mut map_: V,
14345            ) -> std::result::Result<ListRouteTablesRequest, V::Error>
14346            where
14347                V: serde::de::MapAccess<'de>,
14348            {
14349                let mut parent__ = None;
14350                let mut page_size__ = None;
14351                let mut page_token__ = None;
14352                let mut vpc__ = None;
14353                while let Some(k) = map_.next_key()? {
14354                    match k {
14355                        GeneratedField::Parent => {
14356                            if parent__.is_some() {
14357                                return Err(serde::de::Error::duplicate_field("parent"));
14358                            }
14359                            parent__ = Some(map_.next_value()?);
14360                        }
14361                        GeneratedField::PageSize => {
14362                            if page_size__.is_some() {
14363                                return Err(serde::de::Error::duplicate_field("pageSize"));
14364                            }
14365                            page_size__ = Some(
14366                                map_
14367                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14368                                    .0,
14369                            );
14370                        }
14371                        GeneratedField::PageToken => {
14372                            if page_token__.is_some() {
14373                                return Err(serde::de::Error::duplicate_field("pageToken"));
14374                            }
14375                            page_token__ = Some(map_.next_value()?);
14376                        }
14377                        GeneratedField::Vpc => {
14378                            if vpc__.is_some() {
14379                                return Err(serde::de::Error::duplicate_field("vpc"));
14380                            }
14381                            vpc__ = Some(map_.next_value()?);
14382                        }
14383                        GeneratedField::__SkipField__ => {
14384                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14385                        }
14386                    }
14387                }
14388                Ok(ListRouteTablesRequest {
14389                    parent: parent__.unwrap_or_default(),
14390                    page_size: page_size__.unwrap_or_default(),
14391                    page_token: page_token__.unwrap_or_default(),
14392                    vpc: vpc__.unwrap_or_default(),
14393                })
14394            }
14395        }
14396        deserializer
14397            .deserialize_struct(
14398                "origincloud.network.v1beta1.ListRouteTablesRequest",
14399                FIELDS,
14400                GeneratedVisitor,
14401            )
14402    }
14403}
14404impl serde::Serialize for ListRouteTablesResponse {
14405    #[allow(deprecated)]
14406    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14407    where
14408        S: serde::Serializer,
14409    {
14410        use serde::ser::SerializeStruct;
14411        let mut len = 0;
14412        if !self.route_tables.is_empty() {
14413            len += 1;
14414        }
14415        if !self.next_page_token.is_empty() {
14416            len += 1;
14417        }
14418        let mut struct_ser = serializer
14419            .serialize_struct(
14420                "origincloud.network.v1beta1.ListRouteTablesResponse",
14421                len,
14422            )?;
14423        if !self.route_tables.is_empty() {
14424            struct_ser.serialize_field("routeTables", &self.route_tables)?;
14425        }
14426        if !self.next_page_token.is_empty() {
14427            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14428        }
14429        struct_ser.end()
14430    }
14431}
14432impl<'de> serde::Deserialize<'de> for ListRouteTablesResponse {
14433    #[allow(deprecated)]
14434    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14435    where
14436        D: serde::Deserializer<'de>,
14437    {
14438        const FIELDS: &[&str] = &[
14439            "route_tables",
14440            "routeTables",
14441            "next_page_token",
14442            "nextPageToken",
14443        ];
14444        #[allow(clippy::enum_variant_names)]
14445        enum GeneratedField {
14446            RouteTables,
14447            NextPageToken,
14448            __SkipField__,
14449        }
14450        impl<'de> serde::Deserialize<'de> for GeneratedField {
14451            fn deserialize<D>(
14452                deserializer: D,
14453            ) -> std::result::Result<GeneratedField, D::Error>
14454            where
14455                D: serde::Deserializer<'de>,
14456            {
14457                struct GeneratedVisitor;
14458                impl serde::de::Visitor<'_> for GeneratedVisitor {
14459                    type Value = GeneratedField;
14460                    fn expecting(
14461                        &self,
14462                        formatter: &mut std::fmt::Formatter<'_>,
14463                    ) -> std::fmt::Result {
14464                        write!(formatter, "expected one of: {:?}", & FIELDS)
14465                    }
14466                    #[allow(unused_variables)]
14467                    fn visit_str<E>(
14468                        self,
14469                        value: &str,
14470                    ) -> std::result::Result<GeneratedField, E>
14471                    where
14472                        E: serde::de::Error,
14473                    {
14474                        match value {
14475                            "routeTables" | "route_tables" => {
14476                                Ok(GeneratedField::RouteTables)
14477                            }
14478                            "nextPageToken" | "next_page_token" => {
14479                                Ok(GeneratedField::NextPageToken)
14480                            }
14481                            _ => Ok(GeneratedField::__SkipField__),
14482                        }
14483                    }
14484                }
14485                deserializer.deserialize_identifier(GeneratedVisitor)
14486            }
14487        }
14488        struct GeneratedVisitor;
14489        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14490            type Value = ListRouteTablesResponse;
14491            fn expecting(
14492                &self,
14493                formatter: &mut std::fmt::Formatter<'_>,
14494            ) -> std::fmt::Result {
14495                formatter
14496                    .write_str(
14497                        "struct origincloud.network.v1beta1.ListRouteTablesResponse",
14498                    )
14499            }
14500            fn visit_map<V>(
14501                self,
14502                mut map_: V,
14503            ) -> std::result::Result<ListRouteTablesResponse, V::Error>
14504            where
14505                V: serde::de::MapAccess<'de>,
14506            {
14507                let mut route_tables__ = None;
14508                let mut next_page_token__ = None;
14509                while let Some(k) = map_.next_key()? {
14510                    match k {
14511                        GeneratedField::RouteTables => {
14512                            if route_tables__.is_some() {
14513                                return Err(
14514                                    serde::de::Error::duplicate_field("routeTables"),
14515                                );
14516                            }
14517                            route_tables__ = Some(map_.next_value()?);
14518                        }
14519                        GeneratedField::NextPageToken => {
14520                            if next_page_token__.is_some() {
14521                                return Err(
14522                                    serde::de::Error::duplicate_field("nextPageToken"),
14523                                );
14524                            }
14525                            next_page_token__ = Some(map_.next_value()?);
14526                        }
14527                        GeneratedField::__SkipField__ => {
14528                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14529                        }
14530                    }
14531                }
14532                Ok(ListRouteTablesResponse {
14533                    route_tables: route_tables__.unwrap_or_default(),
14534                    next_page_token: next_page_token__.unwrap_or_default(),
14535                })
14536            }
14537        }
14538        deserializer
14539            .deserialize_struct(
14540                "origincloud.network.v1beta1.ListRouteTablesResponse",
14541                FIELDS,
14542                GeneratedVisitor,
14543            )
14544    }
14545}
14546impl serde::Serialize for ListRoutesRequest {
14547    #[allow(deprecated)]
14548    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14549    where
14550        S: serde::Serializer,
14551    {
14552        use serde::ser::SerializeStruct;
14553        let mut len = 0;
14554        if !self.parent.is_empty() {
14555            len += 1;
14556        }
14557        if self.page_size != 0 {
14558            len += 1;
14559        }
14560        if !self.page_token.is_empty() {
14561            len += 1;
14562        }
14563        let mut struct_ser = serializer
14564            .serialize_struct("origincloud.network.v1beta1.ListRoutesRequest", len)?;
14565        if !self.parent.is_empty() {
14566            struct_ser.serialize_field("parent", &self.parent)?;
14567        }
14568        if self.page_size != 0 {
14569            struct_ser.serialize_field("pageSize", &self.page_size)?;
14570        }
14571        if !self.page_token.is_empty() {
14572            struct_ser.serialize_field("pageToken", &self.page_token)?;
14573        }
14574        struct_ser.end()
14575    }
14576}
14577impl<'de> serde::Deserialize<'de> for ListRoutesRequest {
14578    #[allow(deprecated)]
14579    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14580    where
14581        D: serde::Deserializer<'de>,
14582    {
14583        const FIELDS: &[&str] = &[
14584            "parent",
14585            "page_size",
14586            "pageSize",
14587            "page_token",
14588            "pageToken",
14589        ];
14590        #[allow(clippy::enum_variant_names)]
14591        enum GeneratedField {
14592            Parent,
14593            PageSize,
14594            PageToken,
14595            __SkipField__,
14596        }
14597        impl<'de> serde::Deserialize<'de> for GeneratedField {
14598            fn deserialize<D>(
14599                deserializer: D,
14600            ) -> std::result::Result<GeneratedField, D::Error>
14601            where
14602                D: serde::Deserializer<'de>,
14603            {
14604                struct GeneratedVisitor;
14605                impl serde::de::Visitor<'_> for GeneratedVisitor {
14606                    type Value = GeneratedField;
14607                    fn expecting(
14608                        &self,
14609                        formatter: &mut std::fmt::Formatter<'_>,
14610                    ) -> std::fmt::Result {
14611                        write!(formatter, "expected one of: {:?}", & FIELDS)
14612                    }
14613                    #[allow(unused_variables)]
14614                    fn visit_str<E>(
14615                        self,
14616                        value: &str,
14617                    ) -> std::result::Result<GeneratedField, E>
14618                    where
14619                        E: serde::de::Error,
14620                    {
14621                        match value {
14622                            "parent" => Ok(GeneratedField::Parent),
14623                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14624                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14625                            _ => Ok(GeneratedField::__SkipField__),
14626                        }
14627                    }
14628                }
14629                deserializer.deserialize_identifier(GeneratedVisitor)
14630            }
14631        }
14632        struct GeneratedVisitor;
14633        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14634            type Value = ListRoutesRequest;
14635            fn expecting(
14636                &self,
14637                formatter: &mut std::fmt::Formatter<'_>,
14638            ) -> std::fmt::Result {
14639                formatter
14640                    .write_str("struct origincloud.network.v1beta1.ListRoutesRequest")
14641            }
14642            fn visit_map<V>(
14643                self,
14644                mut map_: V,
14645            ) -> std::result::Result<ListRoutesRequest, V::Error>
14646            where
14647                V: serde::de::MapAccess<'de>,
14648            {
14649                let mut parent__ = None;
14650                let mut page_size__ = None;
14651                let mut page_token__ = None;
14652                while let Some(k) = map_.next_key()? {
14653                    match k {
14654                        GeneratedField::Parent => {
14655                            if parent__.is_some() {
14656                                return Err(serde::de::Error::duplicate_field("parent"));
14657                            }
14658                            parent__ = Some(map_.next_value()?);
14659                        }
14660                        GeneratedField::PageSize => {
14661                            if page_size__.is_some() {
14662                                return Err(serde::de::Error::duplicate_field("pageSize"));
14663                            }
14664                            page_size__ = Some(
14665                                map_
14666                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14667                                    .0,
14668                            );
14669                        }
14670                        GeneratedField::PageToken => {
14671                            if page_token__.is_some() {
14672                                return Err(serde::de::Error::duplicate_field("pageToken"));
14673                            }
14674                            page_token__ = Some(map_.next_value()?);
14675                        }
14676                        GeneratedField::__SkipField__ => {
14677                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14678                        }
14679                    }
14680                }
14681                Ok(ListRoutesRequest {
14682                    parent: parent__.unwrap_or_default(),
14683                    page_size: page_size__.unwrap_or_default(),
14684                    page_token: page_token__.unwrap_or_default(),
14685                })
14686            }
14687        }
14688        deserializer
14689            .deserialize_struct(
14690                "origincloud.network.v1beta1.ListRoutesRequest",
14691                FIELDS,
14692                GeneratedVisitor,
14693            )
14694    }
14695}
14696impl serde::Serialize for ListRoutesResponse {
14697    #[allow(deprecated)]
14698    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14699    where
14700        S: serde::Serializer,
14701    {
14702        use serde::ser::SerializeStruct;
14703        let mut len = 0;
14704        if !self.routes.is_empty() {
14705            len += 1;
14706        }
14707        if !self.next_page_token.is_empty() {
14708            len += 1;
14709        }
14710        let mut struct_ser = serializer
14711            .serialize_struct("origincloud.network.v1beta1.ListRoutesResponse", len)?;
14712        if !self.routes.is_empty() {
14713            struct_ser.serialize_field("routes", &self.routes)?;
14714        }
14715        if !self.next_page_token.is_empty() {
14716            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14717        }
14718        struct_ser.end()
14719    }
14720}
14721impl<'de> serde::Deserialize<'de> for ListRoutesResponse {
14722    #[allow(deprecated)]
14723    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14724    where
14725        D: serde::Deserializer<'de>,
14726    {
14727        const FIELDS: &[&str] = &["routes", "next_page_token", "nextPageToken"];
14728        #[allow(clippy::enum_variant_names)]
14729        enum GeneratedField {
14730            Routes,
14731            NextPageToken,
14732            __SkipField__,
14733        }
14734        impl<'de> serde::Deserialize<'de> for GeneratedField {
14735            fn deserialize<D>(
14736                deserializer: D,
14737            ) -> std::result::Result<GeneratedField, D::Error>
14738            where
14739                D: serde::Deserializer<'de>,
14740            {
14741                struct GeneratedVisitor;
14742                impl serde::de::Visitor<'_> for GeneratedVisitor {
14743                    type Value = GeneratedField;
14744                    fn expecting(
14745                        &self,
14746                        formatter: &mut std::fmt::Formatter<'_>,
14747                    ) -> std::fmt::Result {
14748                        write!(formatter, "expected one of: {:?}", & FIELDS)
14749                    }
14750                    #[allow(unused_variables)]
14751                    fn visit_str<E>(
14752                        self,
14753                        value: &str,
14754                    ) -> std::result::Result<GeneratedField, E>
14755                    where
14756                        E: serde::de::Error,
14757                    {
14758                        match value {
14759                            "routes" => Ok(GeneratedField::Routes),
14760                            "nextPageToken" | "next_page_token" => {
14761                                Ok(GeneratedField::NextPageToken)
14762                            }
14763                            _ => Ok(GeneratedField::__SkipField__),
14764                        }
14765                    }
14766                }
14767                deserializer.deserialize_identifier(GeneratedVisitor)
14768            }
14769        }
14770        struct GeneratedVisitor;
14771        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14772            type Value = ListRoutesResponse;
14773            fn expecting(
14774                &self,
14775                formatter: &mut std::fmt::Formatter<'_>,
14776            ) -> std::fmt::Result {
14777                formatter
14778                    .write_str("struct origincloud.network.v1beta1.ListRoutesResponse")
14779            }
14780            fn visit_map<V>(
14781                self,
14782                mut map_: V,
14783            ) -> std::result::Result<ListRoutesResponse, V::Error>
14784            where
14785                V: serde::de::MapAccess<'de>,
14786            {
14787                let mut routes__ = None;
14788                let mut next_page_token__ = None;
14789                while let Some(k) = map_.next_key()? {
14790                    match k {
14791                        GeneratedField::Routes => {
14792                            if routes__.is_some() {
14793                                return Err(serde::de::Error::duplicate_field("routes"));
14794                            }
14795                            routes__ = Some(map_.next_value()?);
14796                        }
14797                        GeneratedField::NextPageToken => {
14798                            if next_page_token__.is_some() {
14799                                return Err(
14800                                    serde::de::Error::duplicate_field("nextPageToken"),
14801                                );
14802                            }
14803                            next_page_token__ = Some(map_.next_value()?);
14804                        }
14805                        GeneratedField::__SkipField__ => {
14806                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14807                        }
14808                    }
14809                }
14810                Ok(ListRoutesResponse {
14811                    routes: routes__.unwrap_or_default(),
14812                    next_page_token: next_page_token__.unwrap_or_default(),
14813                })
14814            }
14815        }
14816        deserializer
14817            .deserialize_struct(
14818                "origincloud.network.v1beta1.ListRoutesResponse",
14819                FIELDS,
14820                GeneratedVisitor,
14821            )
14822    }
14823}
14824impl serde::Serialize for ListSecurityGroupAssociationsRequest {
14825    #[allow(deprecated)]
14826    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14827    where
14828        S: serde::Serializer,
14829    {
14830        use serde::ser::SerializeStruct;
14831        let mut len = 0;
14832        if !self.parent.is_empty() {
14833            len += 1;
14834        }
14835        if self.page_size != 0 {
14836            len += 1;
14837        }
14838        if !self.page_token.is_empty() {
14839            len += 1;
14840        }
14841        let mut struct_ser = serializer
14842            .serialize_struct(
14843                "origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14844                len,
14845            )?;
14846        if !self.parent.is_empty() {
14847            struct_ser.serialize_field("parent", &self.parent)?;
14848        }
14849        if self.page_size != 0 {
14850            struct_ser.serialize_field("pageSize", &self.page_size)?;
14851        }
14852        if !self.page_token.is_empty() {
14853            struct_ser.serialize_field("pageToken", &self.page_token)?;
14854        }
14855        struct_ser.end()
14856    }
14857}
14858impl<'de> serde::Deserialize<'de> for ListSecurityGroupAssociationsRequest {
14859    #[allow(deprecated)]
14860    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14861    where
14862        D: serde::Deserializer<'de>,
14863    {
14864        const FIELDS: &[&str] = &[
14865            "parent",
14866            "page_size",
14867            "pageSize",
14868            "page_token",
14869            "pageToken",
14870        ];
14871        #[allow(clippy::enum_variant_names)]
14872        enum GeneratedField {
14873            Parent,
14874            PageSize,
14875            PageToken,
14876            __SkipField__,
14877        }
14878        impl<'de> serde::Deserialize<'de> for GeneratedField {
14879            fn deserialize<D>(
14880                deserializer: D,
14881            ) -> std::result::Result<GeneratedField, D::Error>
14882            where
14883                D: serde::Deserializer<'de>,
14884            {
14885                struct GeneratedVisitor;
14886                impl serde::de::Visitor<'_> for GeneratedVisitor {
14887                    type Value = GeneratedField;
14888                    fn expecting(
14889                        &self,
14890                        formatter: &mut std::fmt::Formatter<'_>,
14891                    ) -> std::fmt::Result {
14892                        write!(formatter, "expected one of: {:?}", & FIELDS)
14893                    }
14894                    #[allow(unused_variables)]
14895                    fn visit_str<E>(
14896                        self,
14897                        value: &str,
14898                    ) -> std::result::Result<GeneratedField, E>
14899                    where
14900                        E: serde::de::Error,
14901                    {
14902                        match value {
14903                            "parent" => Ok(GeneratedField::Parent),
14904                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14905                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14906                            _ => Ok(GeneratedField::__SkipField__),
14907                        }
14908                    }
14909                }
14910                deserializer.deserialize_identifier(GeneratedVisitor)
14911            }
14912        }
14913        struct GeneratedVisitor;
14914        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14915            type Value = ListSecurityGroupAssociationsRequest;
14916            fn expecting(
14917                &self,
14918                formatter: &mut std::fmt::Formatter<'_>,
14919            ) -> std::fmt::Result {
14920                formatter
14921                    .write_str(
14922                        "struct origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14923                    )
14924            }
14925            fn visit_map<V>(
14926                self,
14927                mut map_: V,
14928            ) -> std::result::Result<ListSecurityGroupAssociationsRequest, V::Error>
14929            where
14930                V: serde::de::MapAccess<'de>,
14931            {
14932                let mut parent__ = None;
14933                let mut page_size__ = None;
14934                let mut page_token__ = None;
14935                while let Some(k) = map_.next_key()? {
14936                    match k {
14937                        GeneratedField::Parent => {
14938                            if parent__.is_some() {
14939                                return Err(serde::de::Error::duplicate_field("parent"));
14940                            }
14941                            parent__ = Some(map_.next_value()?);
14942                        }
14943                        GeneratedField::PageSize => {
14944                            if page_size__.is_some() {
14945                                return Err(serde::de::Error::duplicate_field("pageSize"));
14946                            }
14947                            page_size__ = Some(
14948                                map_
14949                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14950                                    .0,
14951                            );
14952                        }
14953                        GeneratedField::PageToken => {
14954                            if page_token__.is_some() {
14955                                return Err(serde::de::Error::duplicate_field("pageToken"));
14956                            }
14957                            page_token__ = Some(map_.next_value()?);
14958                        }
14959                        GeneratedField::__SkipField__ => {
14960                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14961                        }
14962                    }
14963                }
14964                Ok(ListSecurityGroupAssociationsRequest {
14965                    parent: parent__.unwrap_or_default(),
14966                    page_size: page_size__.unwrap_or_default(),
14967                    page_token: page_token__.unwrap_or_default(),
14968                })
14969            }
14970        }
14971        deserializer
14972            .deserialize_struct(
14973                "origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14974                FIELDS,
14975                GeneratedVisitor,
14976            )
14977    }
14978}
14979impl serde::Serialize for ListSecurityGroupAssociationsResponse {
14980    #[allow(deprecated)]
14981    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14982    where
14983        S: serde::Serializer,
14984    {
14985        use serde::ser::SerializeStruct;
14986        let mut len = 0;
14987        if !self.security_group_associations.is_empty() {
14988            len += 1;
14989        }
14990        if !self.next_page_token.is_empty() {
14991            len += 1;
14992        }
14993        let mut struct_ser = serializer
14994            .serialize_struct(
14995                "origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
14996                len,
14997            )?;
14998        if !self.security_group_associations.is_empty() {
14999            struct_ser
15000                .serialize_field(
15001                    "securityGroupAssociations",
15002                    &self.security_group_associations,
15003                )?;
15004        }
15005        if !self.next_page_token.is_empty() {
15006            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15007        }
15008        struct_ser.end()
15009    }
15010}
15011impl<'de> serde::Deserialize<'de> for ListSecurityGroupAssociationsResponse {
15012    #[allow(deprecated)]
15013    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15014    where
15015        D: serde::Deserializer<'de>,
15016    {
15017        const FIELDS: &[&str] = &[
15018            "security_group_associations",
15019            "securityGroupAssociations",
15020            "next_page_token",
15021            "nextPageToken",
15022        ];
15023        #[allow(clippy::enum_variant_names)]
15024        enum GeneratedField {
15025            SecurityGroupAssociations,
15026            NextPageToken,
15027            __SkipField__,
15028        }
15029        impl<'de> serde::Deserialize<'de> for GeneratedField {
15030            fn deserialize<D>(
15031                deserializer: D,
15032            ) -> std::result::Result<GeneratedField, D::Error>
15033            where
15034                D: serde::Deserializer<'de>,
15035            {
15036                struct GeneratedVisitor;
15037                impl serde::de::Visitor<'_> for GeneratedVisitor {
15038                    type Value = GeneratedField;
15039                    fn expecting(
15040                        &self,
15041                        formatter: &mut std::fmt::Formatter<'_>,
15042                    ) -> std::fmt::Result {
15043                        write!(formatter, "expected one of: {:?}", & FIELDS)
15044                    }
15045                    #[allow(unused_variables)]
15046                    fn visit_str<E>(
15047                        self,
15048                        value: &str,
15049                    ) -> std::result::Result<GeneratedField, E>
15050                    where
15051                        E: serde::de::Error,
15052                    {
15053                        match value {
15054                            "securityGroupAssociations"
15055                            | "security_group_associations" => {
15056                                Ok(GeneratedField::SecurityGroupAssociations)
15057                            }
15058                            "nextPageToken" | "next_page_token" => {
15059                                Ok(GeneratedField::NextPageToken)
15060                            }
15061                            _ => Ok(GeneratedField::__SkipField__),
15062                        }
15063                    }
15064                }
15065                deserializer.deserialize_identifier(GeneratedVisitor)
15066            }
15067        }
15068        struct GeneratedVisitor;
15069        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15070            type Value = ListSecurityGroupAssociationsResponse;
15071            fn expecting(
15072                &self,
15073                formatter: &mut std::fmt::Formatter<'_>,
15074            ) -> std::fmt::Result {
15075                formatter
15076                    .write_str(
15077                        "struct origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15078                    )
15079            }
15080            fn visit_map<V>(
15081                self,
15082                mut map_: V,
15083            ) -> std::result::Result<ListSecurityGroupAssociationsResponse, V::Error>
15084            where
15085                V: serde::de::MapAccess<'de>,
15086            {
15087                let mut security_group_associations__ = None;
15088                let mut next_page_token__ = None;
15089                while let Some(k) = map_.next_key()? {
15090                    match k {
15091                        GeneratedField::SecurityGroupAssociations => {
15092                            if security_group_associations__.is_some() {
15093                                return Err(
15094                                    serde::de::Error::duplicate_field(
15095                                        "securityGroupAssociations",
15096                                    ),
15097                                );
15098                            }
15099                            security_group_associations__ = Some(map_.next_value()?);
15100                        }
15101                        GeneratedField::NextPageToken => {
15102                            if next_page_token__.is_some() {
15103                                return Err(
15104                                    serde::de::Error::duplicate_field("nextPageToken"),
15105                                );
15106                            }
15107                            next_page_token__ = Some(map_.next_value()?);
15108                        }
15109                        GeneratedField::__SkipField__ => {
15110                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15111                        }
15112                    }
15113                }
15114                Ok(ListSecurityGroupAssociationsResponse {
15115                    security_group_associations: security_group_associations__
15116                        .unwrap_or_default(),
15117                    next_page_token: next_page_token__.unwrap_or_default(),
15118                })
15119            }
15120        }
15121        deserializer
15122            .deserialize_struct(
15123                "origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15124                FIELDS,
15125                GeneratedVisitor,
15126            )
15127    }
15128}
15129impl serde::Serialize for ListSecurityGroupRulesRequest {
15130    #[allow(deprecated)]
15131    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15132    where
15133        S: serde::Serializer,
15134    {
15135        use serde::ser::SerializeStruct;
15136        let mut len = 0;
15137        if !self.parent.is_empty() {
15138            len += 1;
15139        }
15140        if self.page_size != 0 {
15141            len += 1;
15142        }
15143        if !self.page_token.is_empty() {
15144            len += 1;
15145        }
15146        let mut struct_ser = serializer
15147            .serialize_struct(
15148                "origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15149                len,
15150            )?;
15151        if !self.parent.is_empty() {
15152            struct_ser.serialize_field("parent", &self.parent)?;
15153        }
15154        if self.page_size != 0 {
15155            struct_ser.serialize_field("pageSize", &self.page_size)?;
15156        }
15157        if !self.page_token.is_empty() {
15158            struct_ser.serialize_field("pageToken", &self.page_token)?;
15159        }
15160        struct_ser.end()
15161    }
15162}
15163impl<'de> serde::Deserialize<'de> for ListSecurityGroupRulesRequest {
15164    #[allow(deprecated)]
15165    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15166    where
15167        D: serde::Deserializer<'de>,
15168    {
15169        const FIELDS: &[&str] = &[
15170            "parent",
15171            "page_size",
15172            "pageSize",
15173            "page_token",
15174            "pageToken",
15175        ];
15176        #[allow(clippy::enum_variant_names)]
15177        enum GeneratedField {
15178            Parent,
15179            PageSize,
15180            PageToken,
15181            __SkipField__,
15182        }
15183        impl<'de> serde::Deserialize<'de> for GeneratedField {
15184            fn deserialize<D>(
15185                deserializer: D,
15186            ) -> std::result::Result<GeneratedField, D::Error>
15187            where
15188                D: serde::Deserializer<'de>,
15189            {
15190                struct GeneratedVisitor;
15191                impl serde::de::Visitor<'_> for GeneratedVisitor {
15192                    type Value = GeneratedField;
15193                    fn expecting(
15194                        &self,
15195                        formatter: &mut std::fmt::Formatter<'_>,
15196                    ) -> std::fmt::Result {
15197                        write!(formatter, "expected one of: {:?}", & FIELDS)
15198                    }
15199                    #[allow(unused_variables)]
15200                    fn visit_str<E>(
15201                        self,
15202                        value: &str,
15203                    ) -> std::result::Result<GeneratedField, E>
15204                    where
15205                        E: serde::de::Error,
15206                    {
15207                        match value {
15208                            "parent" => Ok(GeneratedField::Parent),
15209                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15210                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15211                            _ => Ok(GeneratedField::__SkipField__),
15212                        }
15213                    }
15214                }
15215                deserializer.deserialize_identifier(GeneratedVisitor)
15216            }
15217        }
15218        struct GeneratedVisitor;
15219        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15220            type Value = ListSecurityGroupRulesRequest;
15221            fn expecting(
15222                &self,
15223                formatter: &mut std::fmt::Formatter<'_>,
15224            ) -> std::fmt::Result {
15225                formatter
15226                    .write_str(
15227                        "struct origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15228                    )
15229            }
15230            fn visit_map<V>(
15231                self,
15232                mut map_: V,
15233            ) -> std::result::Result<ListSecurityGroupRulesRequest, V::Error>
15234            where
15235                V: serde::de::MapAccess<'de>,
15236            {
15237                let mut parent__ = None;
15238                let mut page_size__ = None;
15239                let mut page_token__ = None;
15240                while let Some(k) = map_.next_key()? {
15241                    match k {
15242                        GeneratedField::Parent => {
15243                            if parent__.is_some() {
15244                                return Err(serde::de::Error::duplicate_field("parent"));
15245                            }
15246                            parent__ = Some(map_.next_value()?);
15247                        }
15248                        GeneratedField::PageSize => {
15249                            if page_size__.is_some() {
15250                                return Err(serde::de::Error::duplicate_field("pageSize"));
15251                            }
15252                            page_size__ = Some(
15253                                map_
15254                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15255                                    .0,
15256                            );
15257                        }
15258                        GeneratedField::PageToken => {
15259                            if page_token__.is_some() {
15260                                return Err(serde::de::Error::duplicate_field("pageToken"));
15261                            }
15262                            page_token__ = Some(map_.next_value()?);
15263                        }
15264                        GeneratedField::__SkipField__ => {
15265                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15266                        }
15267                    }
15268                }
15269                Ok(ListSecurityGroupRulesRequest {
15270                    parent: parent__.unwrap_or_default(),
15271                    page_size: page_size__.unwrap_or_default(),
15272                    page_token: page_token__.unwrap_or_default(),
15273                })
15274            }
15275        }
15276        deserializer
15277            .deserialize_struct(
15278                "origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15279                FIELDS,
15280                GeneratedVisitor,
15281            )
15282    }
15283}
15284impl serde::Serialize for ListSecurityGroupRulesResponse {
15285    #[allow(deprecated)]
15286    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15287    where
15288        S: serde::Serializer,
15289    {
15290        use serde::ser::SerializeStruct;
15291        let mut len = 0;
15292        if !self.security_group_rules.is_empty() {
15293            len += 1;
15294        }
15295        if !self.next_page_token.is_empty() {
15296            len += 1;
15297        }
15298        let mut struct_ser = serializer
15299            .serialize_struct(
15300                "origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15301                len,
15302            )?;
15303        if !self.security_group_rules.is_empty() {
15304            struct_ser
15305                .serialize_field("securityGroupRules", &self.security_group_rules)?;
15306        }
15307        if !self.next_page_token.is_empty() {
15308            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15309        }
15310        struct_ser.end()
15311    }
15312}
15313impl<'de> serde::Deserialize<'de> for ListSecurityGroupRulesResponse {
15314    #[allow(deprecated)]
15315    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15316    where
15317        D: serde::Deserializer<'de>,
15318    {
15319        const FIELDS: &[&str] = &[
15320            "security_group_rules",
15321            "securityGroupRules",
15322            "next_page_token",
15323            "nextPageToken",
15324        ];
15325        #[allow(clippy::enum_variant_names)]
15326        enum GeneratedField {
15327            SecurityGroupRules,
15328            NextPageToken,
15329            __SkipField__,
15330        }
15331        impl<'de> serde::Deserialize<'de> for GeneratedField {
15332            fn deserialize<D>(
15333                deserializer: D,
15334            ) -> std::result::Result<GeneratedField, D::Error>
15335            where
15336                D: serde::Deserializer<'de>,
15337            {
15338                struct GeneratedVisitor;
15339                impl serde::de::Visitor<'_> for GeneratedVisitor {
15340                    type Value = GeneratedField;
15341                    fn expecting(
15342                        &self,
15343                        formatter: &mut std::fmt::Formatter<'_>,
15344                    ) -> std::fmt::Result {
15345                        write!(formatter, "expected one of: {:?}", & FIELDS)
15346                    }
15347                    #[allow(unused_variables)]
15348                    fn visit_str<E>(
15349                        self,
15350                        value: &str,
15351                    ) -> std::result::Result<GeneratedField, E>
15352                    where
15353                        E: serde::de::Error,
15354                    {
15355                        match value {
15356                            "securityGroupRules" | "security_group_rules" => {
15357                                Ok(GeneratedField::SecurityGroupRules)
15358                            }
15359                            "nextPageToken" | "next_page_token" => {
15360                                Ok(GeneratedField::NextPageToken)
15361                            }
15362                            _ => Ok(GeneratedField::__SkipField__),
15363                        }
15364                    }
15365                }
15366                deserializer.deserialize_identifier(GeneratedVisitor)
15367            }
15368        }
15369        struct GeneratedVisitor;
15370        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15371            type Value = ListSecurityGroupRulesResponse;
15372            fn expecting(
15373                &self,
15374                formatter: &mut std::fmt::Formatter<'_>,
15375            ) -> std::fmt::Result {
15376                formatter
15377                    .write_str(
15378                        "struct origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15379                    )
15380            }
15381            fn visit_map<V>(
15382                self,
15383                mut map_: V,
15384            ) -> std::result::Result<ListSecurityGroupRulesResponse, V::Error>
15385            where
15386                V: serde::de::MapAccess<'de>,
15387            {
15388                let mut security_group_rules__ = None;
15389                let mut next_page_token__ = None;
15390                while let Some(k) = map_.next_key()? {
15391                    match k {
15392                        GeneratedField::SecurityGroupRules => {
15393                            if security_group_rules__.is_some() {
15394                                return Err(
15395                                    serde::de::Error::duplicate_field("securityGroupRules"),
15396                                );
15397                            }
15398                            security_group_rules__ = Some(map_.next_value()?);
15399                        }
15400                        GeneratedField::NextPageToken => {
15401                            if next_page_token__.is_some() {
15402                                return Err(
15403                                    serde::de::Error::duplicate_field("nextPageToken"),
15404                                );
15405                            }
15406                            next_page_token__ = Some(map_.next_value()?);
15407                        }
15408                        GeneratedField::__SkipField__ => {
15409                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15410                        }
15411                    }
15412                }
15413                Ok(ListSecurityGroupRulesResponse {
15414                    security_group_rules: security_group_rules__.unwrap_or_default(),
15415                    next_page_token: next_page_token__.unwrap_or_default(),
15416                })
15417            }
15418        }
15419        deserializer
15420            .deserialize_struct(
15421                "origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15422                FIELDS,
15423                GeneratedVisitor,
15424            )
15425    }
15426}
15427impl serde::Serialize for ListSecurityGroupsRequest {
15428    #[allow(deprecated)]
15429    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15430    where
15431        S: serde::Serializer,
15432    {
15433        use serde::ser::SerializeStruct;
15434        let mut len = 0;
15435        if !self.parent.is_empty() {
15436            len += 1;
15437        }
15438        if self.page_size != 0 {
15439            len += 1;
15440        }
15441        if !self.page_token.is_empty() {
15442            len += 1;
15443        }
15444        if !self.vpc.is_empty() {
15445            len += 1;
15446        }
15447        let mut struct_ser = serializer
15448            .serialize_struct(
15449                "origincloud.network.v1beta1.ListSecurityGroupsRequest",
15450                len,
15451            )?;
15452        if !self.parent.is_empty() {
15453            struct_ser.serialize_field("parent", &self.parent)?;
15454        }
15455        if self.page_size != 0 {
15456            struct_ser.serialize_field("pageSize", &self.page_size)?;
15457        }
15458        if !self.page_token.is_empty() {
15459            struct_ser.serialize_field("pageToken", &self.page_token)?;
15460        }
15461        if !self.vpc.is_empty() {
15462            struct_ser.serialize_field("vpc", &self.vpc)?;
15463        }
15464        struct_ser.end()
15465    }
15466}
15467impl<'de> serde::Deserialize<'de> for ListSecurityGroupsRequest {
15468    #[allow(deprecated)]
15469    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15470    where
15471        D: serde::Deserializer<'de>,
15472    {
15473        const FIELDS: &[&str] = &[
15474            "parent",
15475            "page_size",
15476            "pageSize",
15477            "page_token",
15478            "pageToken",
15479            "vpc",
15480        ];
15481        #[allow(clippy::enum_variant_names)]
15482        enum GeneratedField {
15483            Parent,
15484            PageSize,
15485            PageToken,
15486            Vpc,
15487            __SkipField__,
15488        }
15489        impl<'de> serde::Deserialize<'de> for GeneratedField {
15490            fn deserialize<D>(
15491                deserializer: D,
15492            ) -> std::result::Result<GeneratedField, D::Error>
15493            where
15494                D: serde::Deserializer<'de>,
15495            {
15496                struct GeneratedVisitor;
15497                impl serde::de::Visitor<'_> for GeneratedVisitor {
15498                    type Value = GeneratedField;
15499                    fn expecting(
15500                        &self,
15501                        formatter: &mut std::fmt::Formatter<'_>,
15502                    ) -> std::fmt::Result {
15503                        write!(formatter, "expected one of: {:?}", & FIELDS)
15504                    }
15505                    #[allow(unused_variables)]
15506                    fn visit_str<E>(
15507                        self,
15508                        value: &str,
15509                    ) -> std::result::Result<GeneratedField, E>
15510                    where
15511                        E: serde::de::Error,
15512                    {
15513                        match value {
15514                            "parent" => Ok(GeneratedField::Parent),
15515                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15516                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15517                            "vpc" => Ok(GeneratedField::Vpc),
15518                            _ => Ok(GeneratedField::__SkipField__),
15519                        }
15520                    }
15521                }
15522                deserializer.deserialize_identifier(GeneratedVisitor)
15523            }
15524        }
15525        struct GeneratedVisitor;
15526        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15527            type Value = ListSecurityGroupsRequest;
15528            fn expecting(
15529                &self,
15530                formatter: &mut std::fmt::Formatter<'_>,
15531            ) -> std::fmt::Result {
15532                formatter
15533                    .write_str(
15534                        "struct origincloud.network.v1beta1.ListSecurityGroupsRequest",
15535                    )
15536            }
15537            fn visit_map<V>(
15538                self,
15539                mut map_: V,
15540            ) -> std::result::Result<ListSecurityGroupsRequest, V::Error>
15541            where
15542                V: serde::de::MapAccess<'de>,
15543            {
15544                let mut parent__ = None;
15545                let mut page_size__ = None;
15546                let mut page_token__ = None;
15547                let mut vpc__ = None;
15548                while let Some(k) = map_.next_key()? {
15549                    match k {
15550                        GeneratedField::Parent => {
15551                            if parent__.is_some() {
15552                                return Err(serde::de::Error::duplicate_field("parent"));
15553                            }
15554                            parent__ = Some(map_.next_value()?);
15555                        }
15556                        GeneratedField::PageSize => {
15557                            if page_size__.is_some() {
15558                                return Err(serde::de::Error::duplicate_field("pageSize"));
15559                            }
15560                            page_size__ = Some(
15561                                map_
15562                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15563                                    .0,
15564                            );
15565                        }
15566                        GeneratedField::PageToken => {
15567                            if page_token__.is_some() {
15568                                return Err(serde::de::Error::duplicate_field("pageToken"));
15569                            }
15570                            page_token__ = Some(map_.next_value()?);
15571                        }
15572                        GeneratedField::Vpc => {
15573                            if vpc__.is_some() {
15574                                return Err(serde::de::Error::duplicate_field("vpc"));
15575                            }
15576                            vpc__ = Some(map_.next_value()?);
15577                        }
15578                        GeneratedField::__SkipField__ => {
15579                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15580                        }
15581                    }
15582                }
15583                Ok(ListSecurityGroupsRequest {
15584                    parent: parent__.unwrap_or_default(),
15585                    page_size: page_size__.unwrap_or_default(),
15586                    page_token: page_token__.unwrap_or_default(),
15587                    vpc: vpc__.unwrap_or_default(),
15588                })
15589            }
15590        }
15591        deserializer
15592            .deserialize_struct(
15593                "origincloud.network.v1beta1.ListSecurityGroupsRequest",
15594                FIELDS,
15595                GeneratedVisitor,
15596            )
15597    }
15598}
15599impl serde::Serialize for ListSecurityGroupsResponse {
15600    #[allow(deprecated)]
15601    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15602    where
15603        S: serde::Serializer,
15604    {
15605        use serde::ser::SerializeStruct;
15606        let mut len = 0;
15607        if !self.security_groups.is_empty() {
15608            len += 1;
15609        }
15610        if !self.next_page_token.is_empty() {
15611            len += 1;
15612        }
15613        let mut struct_ser = serializer
15614            .serialize_struct(
15615                "origincloud.network.v1beta1.ListSecurityGroupsResponse",
15616                len,
15617            )?;
15618        if !self.security_groups.is_empty() {
15619            struct_ser.serialize_field("securityGroups", &self.security_groups)?;
15620        }
15621        if !self.next_page_token.is_empty() {
15622            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15623        }
15624        struct_ser.end()
15625    }
15626}
15627impl<'de> serde::Deserialize<'de> for ListSecurityGroupsResponse {
15628    #[allow(deprecated)]
15629    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15630    where
15631        D: serde::Deserializer<'de>,
15632    {
15633        const FIELDS: &[&str] = &[
15634            "security_groups",
15635            "securityGroups",
15636            "next_page_token",
15637            "nextPageToken",
15638        ];
15639        #[allow(clippy::enum_variant_names)]
15640        enum GeneratedField {
15641            SecurityGroups,
15642            NextPageToken,
15643            __SkipField__,
15644        }
15645        impl<'de> serde::Deserialize<'de> for GeneratedField {
15646            fn deserialize<D>(
15647                deserializer: D,
15648            ) -> std::result::Result<GeneratedField, D::Error>
15649            where
15650                D: serde::Deserializer<'de>,
15651            {
15652                struct GeneratedVisitor;
15653                impl serde::de::Visitor<'_> for GeneratedVisitor {
15654                    type Value = GeneratedField;
15655                    fn expecting(
15656                        &self,
15657                        formatter: &mut std::fmt::Formatter<'_>,
15658                    ) -> std::fmt::Result {
15659                        write!(formatter, "expected one of: {:?}", & FIELDS)
15660                    }
15661                    #[allow(unused_variables)]
15662                    fn visit_str<E>(
15663                        self,
15664                        value: &str,
15665                    ) -> std::result::Result<GeneratedField, E>
15666                    where
15667                        E: serde::de::Error,
15668                    {
15669                        match value {
15670                            "securityGroups" | "security_groups" => {
15671                                Ok(GeneratedField::SecurityGroups)
15672                            }
15673                            "nextPageToken" | "next_page_token" => {
15674                                Ok(GeneratedField::NextPageToken)
15675                            }
15676                            _ => Ok(GeneratedField::__SkipField__),
15677                        }
15678                    }
15679                }
15680                deserializer.deserialize_identifier(GeneratedVisitor)
15681            }
15682        }
15683        struct GeneratedVisitor;
15684        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15685            type Value = ListSecurityGroupsResponse;
15686            fn expecting(
15687                &self,
15688                formatter: &mut std::fmt::Formatter<'_>,
15689            ) -> std::fmt::Result {
15690                formatter
15691                    .write_str(
15692                        "struct origincloud.network.v1beta1.ListSecurityGroupsResponse",
15693                    )
15694            }
15695            fn visit_map<V>(
15696                self,
15697                mut map_: V,
15698            ) -> std::result::Result<ListSecurityGroupsResponse, V::Error>
15699            where
15700                V: serde::de::MapAccess<'de>,
15701            {
15702                let mut security_groups__ = None;
15703                let mut next_page_token__ = None;
15704                while let Some(k) = map_.next_key()? {
15705                    match k {
15706                        GeneratedField::SecurityGroups => {
15707                            if security_groups__.is_some() {
15708                                return Err(
15709                                    serde::de::Error::duplicate_field("securityGroups"),
15710                                );
15711                            }
15712                            security_groups__ = Some(map_.next_value()?);
15713                        }
15714                        GeneratedField::NextPageToken => {
15715                            if next_page_token__.is_some() {
15716                                return Err(
15717                                    serde::de::Error::duplicate_field("nextPageToken"),
15718                                );
15719                            }
15720                            next_page_token__ = Some(map_.next_value()?);
15721                        }
15722                        GeneratedField::__SkipField__ => {
15723                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15724                        }
15725                    }
15726                }
15727                Ok(ListSecurityGroupsResponse {
15728                    security_groups: security_groups__.unwrap_or_default(),
15729                    next_page_token: next_page_token__.unwrap_or_default(),
15730                })
15731            }
15732        }
15733        deserializer
15734            .deserialize_struct(
15735                "origincloud.network.v1beta1.ListSecurityGroupsResponse",
15736                FIELDS,
15737                GeneratedVisitor,
15738            )
15739    }
15740}
15741impl serde::Serialize for ListSubnetsRequest {
15742    #[allow(deprecated)]
15743    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15744    where
15745        S: serde::Serializer,
15746    {
15747        use serde::ser::SerializeStruct;
15748        let mut len = 0;
15749        if !self.parent.is_empty() {
15750            len += 1;
15751        }
15752        if self.page_size != 0 {
15753            len += 1;
15754        }
15755        if !self.page_token.is_empty() {
15756            len += 1;
15757        }
15758        if !self.vpc.is_empty() {
15759            len += 1;
15760        }
15761        let mut struct_ser = serializer
15762            .serialize_struct("origincloud.network.v1beta1.ListSubnetsRequest", len)?;
15763        if !self.parent.is_empty() {
15764            struct_ser.serialize_field("parent", &self.parent)?;
15765        }
15766        if self.page_size != 0 {
15767            struct_ser.serialize_field("pageSize", &self.page_size)?;
15768        }
15769        if !self.page_token.is_empty() {
15770            struct_ser.serialize_field("pageToken", &self.page_token)?;
15771        }
15772        if !self.vpc.is_empty() {
15773            struct_ser.serialize_field("vpc", &self.vpc)?;
15774        }
15775        struct_ser.end()
15776    }
15777}
15778impl<'de> serde::Deserialize<'de> for ListSubnetsRequest {
15779    #[allow(deprecated)]
15780    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15781    where
15782        D: serde::Deserializer<'de>,
15783    {
15784        const FIELDS: &[&str] = &[
15785            "parent",
15786            "page_size",
15787            "pageSize",
15788            "page_token",
15789            "pageToken",
15790            "vpc",
15791        ];
15792        #[allow(clippy::enum_variant_names)]
15793        enum GeneratedField {
15794            Parent,
15795            PageSize,
15796            PageToken,
15797            Vpc,
15798            __SkipField__,
15799        }
15800        impl<'de> serde::Deserialize<'de> for GeneratedField {
15801            fn deserialize<D>(
15802                deserializer: D,
15803            ) -> std::result::Result<GeneratedField, D::Error>
15804            where
15805                D: serde::Deserializer<'de>,
15806            {
15807                struct GeneratedVisitor;
15808                impl serde::de::Visitor<'_> for GeneratedVisitor {
15809                    type Value = GeneratedField;
15810                    fn expecting(
15811                        &self,
15812                        formatter: &mut std::fmt::Formatter<'_>,
15813                    ) -> std::fmt::Result {
15814                        write!(formatter, "expected one of: {:?}", & FIELDS)
15815                    }
15816                    #[allow(unused_variables)]
15817                    fn visit_str<E>(
15818                        self,
15819                        value: &str,
15820                    ) -> std::result::Result<GeneratedField, E>
15821                    where
15822                        E: serde::de::Error,
15823                    {
15824                        match value {
15825                            "parent" => Ok(GeneratedField::Parent),
15826                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15827                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15828                            "vpc" => Ok(GeneratedField::Vpc),
15829                            _ => Ok(GeneratedField::__SkipField__),
15830                        }
15831                    }
15832                }
15833                deserializer.deserialize_identifier(GeneratedVisitor)
15834            }
15835        }
15836        struct GeneratedVisitor;
15837        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15838            type Value = ListSubnetsRequest;
15839            fn expecting(
15840                &self,
15841                formatter: &mut std::fmt::Formatter<'_>,
15842            ) -> std::fmt::Result {
15843                formatter
15844                    .write_str("struct origincloud.network.v1beta1.ListSubnetsRequest")
15845            }
15846            fn visit_map<V>(
15847                self,
15848                mut map_: V,
15849            ) -> std::result::Result<ListSubnetsRequest, V::Error>
15850            where
15851                V: serde::de::MapAccess<'de>,
15852            {
15853                let mut parent__ = None;
15854                let mut page_size__ = None;
15855                let mut page_token__ = None;
15856                let mut vpc__ = None;
15857                while let Some(k) = map_.next_key()? {
15858                    match k {
15859                        GeneratedField::Parent => {
15860                            if parent__.is_some() {
15861                                return Err(serde::de::Error::duplicate_field("parent"));
15862                            }
15863                            parent__ = Some(map_.next_value()?);
15864                        }
15865                        GeneratedField::PageSize => {
15866                            if page_size__.is_some() {
15867                                return Err(serde::de::Error::duplicate_field("pageSize"));
15868                            }
15869                            page_size__ = Some(
15870                                map_
15871                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15872                                    .0,
15873                            );
15874                        }
15875                        GeneratedField::PageToken => {
15876                            if page_token__.is_some() {
15877                                return Err(serde::de::Error::duplicate_field("pageToken"));
15878                            }
15879                            page_token__ = Some(map_.next_value()?);
15880                        }
15881                        GeneratedField::Vpc => {
15882                            if vpc__.is_some() {
15883                                return Err(serde::de::Error::duplicate_field("vpc"));
15884                            }
15885                            vpc__ = Some(map_.next_value()?);
15886                        }
15887                        GeneratedField::__SkipField__ => {
15888                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15889                        }
15890                    }
15891                }
15892                Ok(ListSubnetsRequest {
15893                    parent: parent__.unwrap_or_default(),
15894                    page_size: page_size__.unwrap_or_default(),
15895                    page_token: page_token__.unwrap_or_default(),
15896                    vpc: vpc__.unwrap_or_default(),
15897                })
15898            }
15899        }
15900        deserializer
15901            .deserialize_struct(
15902                "origincloud.network.v1beta1.ListSubnetsRequest",
15903                FIELDS,
15904                GeneratedVisitor,
15905            )
15906    }
15907}
15908impl serde::Serialize for ListSubnetsResponse {
15909    #[allow(deprecated)]
15910    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15911    where
15912        S: serde::Serializer,
15913    {
15914        use serde::ser::SerializeStruct;
15915        let mut len = 0;
15916        if !self.subnets.is_empty() {
15917            len += 1;
15918        }
15919        if !self.next_page_token.is_empty() {
15920            len += 1;
15921        }
15922        let mut struct_ser = serializer
15923            .serialize_struct("origincloud.network.v1beta1.ListSubnetsResponse", len)?;
15924        if !self.subnets.is_empty() {
15925            struct_ser.serialize_field("subnets", &self.subnets)?;
15926        }
15927        if !self.next_page_token.is_empty() {
15928            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15929        }
15930        struct_ser.end()
15931    }
15932}
15933impl<'de> serde::Deserialize<'de> for ListSubnetsResponse {
15934    #[allow(deprecated)]
15935    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15936    where
15937        D: serde::Deserializer<'de>,
15938    {
15939        const FIELDS: &[&str] = &["subnets", "next_page_token", "nextPageToken"];
15940        #[allow(clippy::enum_variant_names)]
15941        enum GeneratedField {
15942            Subnets,
15943            NextPageToken,
15944            __SkipField__,
15945        }
15946        impl<'de> serde::Deserialize<'de> for GeneratedField {
15947            fn deserialize<D>(
15948                deserializer: D,
15949            ) -> std::result::Result<GeneratedField, D::Error>
15950            where
15951                D: serde::Deserializer<'de>,
15952            {
15953                struct GeneratedVisitor;
15954                impl serde::de::Visitor<'_> for GeneratedVisitor {
15955                    type Value = GeneratedField;
15956                    fn expecting(
15957                        &self,
15958                        formatter: &mut std::fmt::Formatter<'_>,
15959                    ) -> std::fmt::Result {
15960                        write!(formatter, "expected one of: {:?}", & FIELDS)
15961                    }
15962                    #[allow(unused_variables)]
15963                    fn visit_str<E>(
15964                        self,
15965                        value: &str,
15966                    ) -> std::result::Result<GeneratedField, E>
15967                    where
15968                        E: serde::de::Error,
15969                    {
15970                        match value {
15971                            "subnets" => Ok(GeneratedField::Subnets),
15972                            "nextPageToken" | "next_page_token" => {
15973                                Ok(GeneratedField::NextPageToken)
15974                            }
15975                            _ => Ok(GeneratedField::__SkipField__),
15976                        }
15977                    }
15978                }
15979                deserializer.deserialize_identifier(GeneratedVisitor)
15980            }
15981        }
15982        struct GeneratedVisitor;
15983        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15984            type Value = ListSubnetsResponse;
15985            fn expecting(
15986                &self,
15987                formatter: &mut std::fmt::Formatter<'_>,
15988            ) -> std::fmt::Result {
15989                formatter
15990                    .write_str("struct origincloud.network.v1beta1.ListSubnetsResponse")
15991            }
15992            fn visit_map<V>(
15993                self,
15994                mut map_: V,
15995            ) -> std::result::Result<ListSubnetsResponse, V::Error>
15996            where
15997                V: serde::de::MapAccess<'de>,
15998            {
15999                let mut subnets__ = None;
16000                let mut next_page_token__ = None;
16001                while let Some(k) = map_.next_key()? {
16002                    match k {
16003                        GeneratedField::Subnets => {
16004                            if subnets__.is_some() {
16005                                return Err(serde::de::Error::duplicate_field("subnets"));
16006                            }
16007                            subnets__ = Some(map_.next_value()?);
16008                        }
16009                        GeneratedField::NextPageToken => {
16010                            if next_page_token__.is_some() {
16011                                return Err(
16012                                    serde::de::Error::duplicate_field("nextPageToken"),
16013                                );
16014                            }
16015                            next_page_token__ = Some(map_.next_value()?);
16016                        }
16017                        GeneratedField::__SkipField__ => {
16018                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16019                        }
16020                    }
16021                }
16022                Ok(ListSubnetsResponse {
16023                    subnets: subnets__.unwrap_or_default(),
16024                    next_page_token: next_page_token__.unwrap_or_default(),
16025                })
16026            }
16027        }
16028        deserializer
16029            .deserialize_struct(
16030                "origincloud.network.v1beta1.ListSubnetsResponse",
16031                FIELDS,
16032                GeneratedVisitor,
16033            )
16034    }
16035}
16036impl serde::Serialize for ListVpcsRequest {
16037    #[allow(deprecated)]
16038    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16039    where
16040        S: serde::Serializer,
16041    {
16042        use serde::ser::SerializeStruct;
16043        let mut len = 0;
16044        if !self.parent.is_empty() {
16045            len += 1;
16046        }
16047        if self.page_size != 0 {
16048            len += 1;
16049        }
16050        if !self.page_token.is_empty() {
16051            len += 1;
16052        }
16053        let mut struct_ser = serializer
16054            .serialize_struct("origincloud.network.v1beta1.ListVpcsRequest", len)?;
16055        if !self.parent.is_empty() {
16056            struct_ser.serialize_field("parent", &self.parent)?;
16057        }
16058        if self.page_size != 0 {
16059            struct_ser.serialize_field("pageSize", &self.page_size)?;
16060        }
16061        if !self.page_token.is_empty() {
16062            struct_ser.serialize_field("pageToken", &self.page_token)?;
16063        }
16064        struct_ser.end()
16065    }
16066}
16067impl<'de> serde::Deserialize<'de> for ListVpcsRequest {
16068    #[allow(deprecated)]
16069    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16070    where
16071        D: serde::Deserializer<'de>,
16072    {
16073        const FIELDS: &[&str] = &[
16074            "parent",
16075            "page_size",
16076            "pageSize",
16077            "page_token",
16078            "pageToken",
16079        ];
16080        #[allow(clippy::enum_variant_names)]
16081        enum GeneratedField {
16082            Parent,
16083            PageSize,
16084            PageToken,
16085            __SkipField__,
16086        }
16087        impl<'de> serde::Deserialize<'de> for GeneratedField {
16088            fn deserialize<D>(
16089                deserializer: D,
16090            ) -> std::result::Result<GeneratedField, D::Error>
16091            where
16092                D: serde::Deserializer<'de>,
16093            {
16094                struct GeneratedVisitor;
16095                impl serde::de::Visitor<'_> for GeneratedVisitor {
16096                    type Value = GeneratedField;
16097                    fn expecting(
16098                        &self,
16099                        formatter: &mut std::fmt::Formatter<'_>,
16100                    ) -> std::fmt::Result {
16101                        write!(formatter, "expected one of: {:?}", & FIELDS)
16102                    }
16103                    #[allow(unused_variables)]
16104                    fn visit_str<E>(
16105                        self,
16106                        value: &str,
16107                    ) -> std::result::Result<GeneratedField, E>
16108                    where
16109                        E: serde::de::Error,
16110                    {
16111                        match value {
16112                            "parent" => Ok(GeneratedField::Parent),
16113                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
16114                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
16115                            _ => Ok(GeneratedField::__SkipField__),
16116                        }
16117                    }
16118                }
16119                deserializer.deserialize_identifier(GeneratedVisitor)
16120            }
16121        }
16122        struct GeneratedVisitor;
16123        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16124            type Value = ListVpcsRequest;
16125            fn expecting(
16126                &self,
16127                formatter: &mut std::fmt::Formatter<'_>,
16128            ) -> std::fmt::Result {
16129                formatter.write_str("struct origincloud.network.v1beta1.ListVpcsRequest")
16130            }
16131            fn visit_map<V>(
16132                self,
16133                mut map_: V,
16134            ) -> std::result::Result<ListVpcsRequest, V::Error>
16135            where
16136                V: serde::de::MapAccess<'de>,
16137            {
16138                let mut parent__ = None;
16139                let mut page_size__ = None;
16140                let mut page_token__ = None;
16141                while let Some(k) = map_.next_key()? {
16142                    match k {
16143                        GeneratedField::Parent => {
16144                            if parent__.is_some() {
16145                                return Err(serde::de::Error::duplicate_field("parent"));
16146                            }
16147                            parent__ = Some(map_.next_value()?);
16148                        }
16149                        GeneratedField::PageSize => {
16150                            if page_size__.is_some() {
16151                                return Err(serde::de::Error::duplicate_field("pageSize"));
16152                            }
16153                            page_size__ = Some(
16154                                map_
16155                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
16156                                    .0,
16157                            );
16158                        }
16159                        GeneratedField::PageToken => {
16160                            if page_token__.is_some() {
16161                                return Err(serde::de::Error::duplicate_field("pageToken"));
16162                            }
16163                            page_token__ = Some(map_.next_value()?);
16164                        }
16165                        GeneratedField::__SkipField__ => {
16166                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16167                        }
16168                    }
16169                }
16170                Ok(ListVpcsRequest {
16171                    parent: parent__.unwrap_or_default(),
16172                    page_size: page_size__.unwrap_or_default(),
16173                    page_token: page_token__.unwrap_or_default(),
16174                })
16175            }
16176        }
16177        deserializer
16178            .deserialize_struct(
16179                "origincloud.network.v1beta1.ListVpcsRequest",
16180                FIELDS,
16181                GeneratedVisitor,
16182            )
16183    }
16184}
16185impl serde::Serialize for ListVpcsResponse {
16186    #[allow(deprecated)]
16187    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16188    where
16189        S: serde::Serializer,
16190    {
16191        use serde::ser::SerializeStruct;
16192        let mut len = 0;
16193        if !self.vpcs.is_empty() {
16194            len += 1;
16195        }
16196        if !self.next_page_token.is_empty() {
16197            len += 1;
16198        }
16199        let mut struct_ser = serializer
16200            .serialize_struct("origincloud.network.v1beta1.ListVpcsResponse", len)?;
16201        if !self.vpcs.is_empty() {
16202            struct_ser.serialize_field("vpcs", &self.vpcs)?;
16203        }
16204        if !self.next_page_token.is_empty() {
16205            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
16206        }
16207        struct_ser.end()
16208    }
16209}
16210impl<'de> serde::Deserialize<'de> for ListVpcsResponse {
16211    #[allow(deprecated)]
16212    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16213    where
16214        D: serde::Deserializer<'de>,
16215    {
16216        const FIELDS: &[&str] = &["vpcs", "next_page_token", "nextPageToken"];
16217        #[allow(clippy::enum_variant_names)]
16218        enum GeneratedField {
16219            Vpcs,
16220            NextPageToken,
16221            __SkipField__,
16222        }
16223        impl<'de> serde::Deserialize<'de> for GeneratedField {
16224            fn deserialize<D>(
16225                deserializer: D,
16226            ) -> std::result::Result<GeneratedField, D::Error>
16227            where
16228                D: serde::Deserializer<'de>,
16229            {
16230                struct GeneratedVisitor;
16231                impl serde::de::Visitor<'_> for GeneratedVisitor {
16232                    type Value = GeneratedField;
16233                    fn expecting(
16234                        &self,
16235                        formatter: &mut std::fmt::Formatter<'_>,
16236                    ) -> std::fmt::Result {
16237                        write!(formatter, "expected one of: {:?}", & FIELDS)
16238                    }
16239                    #[allow(unused_variables)]
16240                    fn visit_str<E>(
16241                        self,
16242                        value: &str,
16243                    ) -> std::result::Result<GeneratedField, E>
16244                    where
16245                        E: serde::de::Error,
16246                    {
16247                        match value {
16248                            "vpcs" => Ok(GeneratedField::Vpcs),
16249                            "nextPageToken" | "next_page_token" => {
16250                                Ok(GeneratedField::NextPageToken)
16251                            }
16252                            _ => Ok(GeneratedField::__SkipField__),
16253                        }
16254                    }
16255                }
16256                deserializer.deserialize_identifier(GeneratedVisitor)
16257            }
16258        }
16259        struct GeneratedVisitor;
16260        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16261            type Value = ListVpcsResponse;
16262            fn expecting(
16263                &self,
16264                formatter: &mut std::fmt::Formatter<'_>,
16265            ) -> std::fmt::Result {
16266                formatter
16267                    .write_str("struct origincloud.network.v1beta1.ListVpcsResponse")
16268            }
16269            fn visit_map<V>(
16270                self,
16271                mut map_: V,
16272            ) -> std::result::Result<ListVpcsResponse, V::Error>
16273            where
16274                V: serde::de::MapAccess<'de>,
16275            {
16276                let mut vpcs__ = None;
16277                let mut next_page_token__ = None;
16278                while let Some(k) = map_.next_key()? {
16279                    match k {
16280                        GeneratedField::Vpcs => {
16281                            if vpcs__.is_some() {
16282                                return Err(serde::de::Error::duplicate_field("vpcs"));
16283                            }
16284                            vpcs__ = Some(map_.next_value()?);
16285                        }
16286                        GeneratedField::NextPageToken => {
16287                            if next_page_token__.is_some() {
16288                                return Err(
16289                                    serde::de::Error::duplicate_field("nextPageToken"),
16290                                );
16291                            }
16292                            next_page_token__ = Some(map_.next_value()?);
16293                        }
16294                        GeneratedField::__SkipField__ => {
16295                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16296                        }
16297                    }
16298                }
16299                Ok(ListVpcsResponse {
16300                    vpcs: vpcs__.unwrap_or_default(),
16301                    next_page_token: next_page_token__.unwrap_or_default(),
16302                })
16303            }
16304        }
16305        deserializer
16306            .deserialize_struct(
16307                "origincloud.network.v1beta1.ListVpcsResponse",
16308                FIELDS,
16309                GeneratedVisitor,
16310            )
16311    }
16312}
16313impl serde::Serialize for NatGateway {
16314    #[allow(deprecated)]
16315    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16316    where
16317        S: serde::Serializer,
16318    {
16319        use serde::ser::SerializeStruct;
16320        let mut len = 0;
16321        if !self.name.is_empty() {
16322            len += 1;
16323        }
16324        if !self.urn.is_empty() {
16325            len += 1;
16326        }
16327        if !self.subnet.is_empty() {
16328            len += 1;
16329        }
16330        if !self.floating_ip.is_empty() {
16331            len += 1;
16332        }
16333        if !self.vpc.is_empty() {
16334            len += 1;
16335        }
16336        if self.create_time.is_some() {
16337            len += 1;
16338        }
16339        if !self.creator.is_empty() {
16340            len += 1;
16341        }
16342        if !self.tags.is_empty() {
16343            len += 1;
16344        }
16345        let mut struct_ser = serializer
16346            .serialize_struct("origincloud.network.v1beta1.NatGateway", len)?;
16347        if !self.name.is_empty() {
16348            struct_ser.serialize_field("name", &self.name)?;
16349        }
16350        if !self.urn.is_empty() {
16351            struct_ser.serialize_field("urn", &self.urn)?;
16352        }
16353        if !self.subnet.is_empty() {
16354            struct_ser.serialize_field("subnet", &self.subnet)?;
16355        }
16356        if !self.floating_ip.is_empty() {
16357            struct_ser.serialize_field("floatingIp", &self.floating_ip)?;
16358        }
16359        if !self.vpc.is_empty() {
16360            struct_ser.serialize_field("vpc", &self.vpc)?;
16361        }
16362        if let Some(v) = self.create_time.as_ref() {
16363            struct_ser.serialize_field("createTime", v)?;
16364        }
16365        if !self.creator.is_empty() {
16366            struct_ser.serialize_field("creator", &self.creator)?;
16367        }
16368        if !self.tags.is_empty() {
16369            struct_ser.serialize_field("tags", &self.tags)?;
16370        }
16371        struct_ser.end()
16372    }
16373}
16374impl<'de> serde::Deserialize<'de> for NatGateway {
16375    #[allow(deprecated)]
16376    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16377    where
16378        D: serde::Deserializer<'de>,
16379    {
16380        const FIELDS: &[&str] = &[
16381            "name",
16382            "urn",
16383            "subnet",
16384            "floating_ip",
16385            "floatingIp",
16386            "vpc",
16387            "create_time",
16388            "createTime",
16389            "creator",
16390            "tags",
16391        ];
16392        #[allow(clippy::enum_variant_names)]
16393        enum GeneratedField {
16394            Name,
16395            Urn,
16396            Subnet,
16397            FloatingIp,
16398            Vpc,
16399            CreateTime,
16400            Creator,
16401            Tags,
16402            __SkipField__,
16403        }
16404        impl<'de> serde::Deserialize<'de> for GeneratedField {
16405            fn deserialize<D>(
16406                deserializer: D,
16407            ) -> std::result::Result<GeneratedField, D::Error>
16408            where
16409                D: serde::Deserializer<'de>,
16410            {
16411                struct GeneratedVisitor;
16412                impl serde::de::Visitor<'_> for GeneratedVisitor {
16413                    type Value = GeneratedField;
16414                    fn expecting(
16415                        &self,
16416                        formatter: &mut std::fmt::Formatter<'_>,
16417                    ) -> std::fmt::Result {
16418                        write!(formatter, "expected one of: {:?}", & FIELDS)
16419                    }
16420                    #[allow(unused_variables)]
16421                    fn visit_str<E>(
16422                        self,
16423                        value: &str,
16424                    ) -> std::result::Result<GeneratedField, E>
16425                    where
16426                        E: serde::de::Error,
16427                    {
16428                        match value {
16429                            "name" => Ok(GeneratedField::Name),
16430                            "urn" => Ok(GeneratedField::Urn),
16431                            "subnet" => Ok(GeneratedField::Subnet),
16432                            "floatingIp" | "floating_ip" => {
16433                                Ok(GeneratedField::FloatingIp)
16434                            }
16435                            "vpc" => Ok(GeneratedField::Vpc),
16436                            "createTime" | "create_time" => {
16437                                Ok(GeneratedField::CreateTime)
16438                            }
16439                            "creator" => Ok(GeneratedField::Creator),
16440                            "tags" => Ok(GeneratedField::Tags),
16441                            _ => Ok(GeneratedField::__SkipField__),
16442                        }
16443                    }
16444                }
16445                deserializer.deserialize_identifier(GeneratedVisitor)
16446            }
16447        }
16448        struct GeneratedVisitor;
16449        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16450            type Value = NatGateway;
16451            fn expecting(
16452                &self,
16453                formatter: &mut std::fmt::Formatter<'_>,
16454            ) -> std::fmt::Result {
16455                formatter.write_str("struct origincloud.network.v1beta1.NatGateway")
16456            }
16457            fn visit_map<V>(
16458                self,
16459                mut map_: V,
16460            ) -> std::result::Result<NatGateway, V::Error>
16461            where
16462                V: serde::de::MapAccess<'de>,
16463            {
16464                let mut name__ = None;
16465                let mut urn__ = None;
16466                let mut subnet__ = None;
16467                let mut floating_ip__ = None;
16468                let mut vpc__ = None;
16469                let mut create_time__ = None;
16470                let mut creator__ = None;
16471                let mut tags__ = None;
16472                while let Some(k) = map_.next_key()? {
16473                    match k {
16474                        GeneratedField::Name => {
16475                            if name__.is_some() {
16476                                return Err(serde::de::Error::duplicate_field("name"));
16477                            }
16478                            name__ = Some(map_.next_value()?);
16479                        }
16480                        GeneratedField::Urn => {
16481                            if urn__.is_some() {
16482                                return Err(serde::de::Error::duplicate_field("urn"));
16483                            }
16484                            urn__ = Some(map_.next_value()?);
16485                        }
16486                        GeneratedField::Subnet => {
16487                            if subnet__.is_some() {
16488                                return Err(serde::de::Error::duplicate_field("subnet"));
16489                            }
16490                            subnet__ = Some(map_.next_value()?);
16491                        }
16492                        GeneratedField::FloatingIp => {
16493                            if floating_ip__.is_some() {
16494                                return Err(serde::de::Error::duplicate_field("floatingIp"));
16495                            }
16496                            floating_ip__ = Some(map_.next_value()?);
16497                        }
16498                        GeneratedField::Vpc => {
16499                            if vpc__.is_some() {
16500                                return Err(serde::de::Error::duplicate_field("vpc"));
16501                            }
16502                            vpc__ = Some(map_.next_value()?);
16503                        }
16504                        GeneratedField::CreateTime => {
16505                            if create_time__.is_some() {
16506                                return Err(serde::de::Error::duplicate_field("createTime"));
16507                            }
16508                            create_time__ = map_.next_value()?;
16509                        }
16510                        GeneratedField::Creator => {
16511                            if creator__.is_some() {
16512                                return Err(serde::de::Error::duplicate_field("creator"));
16513                            }
16514                            creator__ = Some(map_.next_value()?);
16515                        }
16516                        GeneratedField::Tags => {
16517                            if tags__.is_some() {
16518                                return Err(serde::de::Error::duplicate_field("tags"));
16519                            }
16520                            tags__ = Some(
16521                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
16522                            );
16523                        }
16524                        GeneratedField::__SkipField__ => {
16525                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16526                        }
16527                    }
16528                }
16529                Ok(NatGateway {
16530                    name: name__.unwrap_or_default(),
16531                    urn: urn__.unwrap_or_default(),
16532                    subnet: subnet__.unwrap_or_default(),
16533                    floating_ip: floating_ip__.unwrap_or_default(),
16534                    vpc: vpc__.unwrap_or_default(),
16535                    create_time: create_time__,
16536                    creator: creator__.unwrap_or_default(),
16537                    tags: tags__.unwrap_or_default(),
16538                })
16539            }
16540        }
16541        deserializer
16542            .deserialize_struct(
16543                "origincloud.network.v1beta1.NatGateway",
16544                FIELDS,
16545                GeneratedVisitor,
16546            )
16547    }
16548}
16549impl serde::Serialize for NetworkInterface {
16550    #[allow(deprecated)]
16551    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16552    where
16553        S: serde::Serializer,
16554    {
16555        use serde::ser::SerializeStruct;
16556        let mut len = 0;
16557        if !self.name.is_empty() {
16558            len += 1;
16559        }
16560        if !self.urn.is_empty() {
16561            len += 1;
16562        }
16563        if !self.subnet.is_empty() {
16564            len += 1;
16565        }
16566        if !self.security_groups.is_empty() {
16567            len += 1;
16568        }
16569        if self.source_address_check.is_some() {
16570            len += 1;
16571        }
16572        if !self.ipv4_address.is_empty() {
16573            len += 1;
16574        }
16575        if !self.ipv6_address.is_empty() {
16576            len += 1;
16577        }
16578        if self.state != 0 {
16579            len += 1;
16580        }
16581        if !self.instance.is_empty() {
16582            len += 1;
16583        }
16584        if self.create_time.is_some() {
16585            len += 1;
16586        }
16587        if !self.creator.is_empty() {
16588            len += 1;
16589        }
16590        if !self.tags.is_empty() {
16591            len += 1;
16592        }
16593        let mut struct_ser = serializer
16594            .serialize_struct("origincloud.network.v1beta1.NetworkInterface", len)?;
16595        if !self.name.is_empty() {
16596            struct_ser.serialize_field("name", &self.name)?;
16597        }
16598        if !self.urn.is_empty() {
16599            struct_ser.serialize_field("urn", &self.urn)?;
16600        }
16601        if !self.subnet.is_empty() {
16602            struct_ser.serialize_field("subnet", &self.subnet)?;
16603        }
16604        if !self.security_groups.is_empty() {
16605            struct_ser.serialize_field("securityGroups", &self.security_groups)?;
16606        }
16607        if let Some(v) = self.source_address_check.as_ref() {
16608            struct_ser.serialize_field("sourceAddressCheck", v)?;
16609        }
16610        if !self.ipv4_address.is_empty() {
16611            struct_ser.serialize_field("ipv4Address", &self.ipv4_address)?;
16612        }
16613        if !self.ipv6_address.is_empty() {
16614            struct_ser.serialize_field("ipv6Address", &self.ipv6_address)?;
16615        }
16616        if self.state != 0 {
16617            let v = network_interface::State::try_from(self.state)
16618                .map_err(|_| serde::ser::Error::custom(
16619                    format!("Invalid variant {}", self.state),
16620                ))?;
16621            struct_ser.serialize_field("state", &v)?;
16622        }
16623        if !self.instance.is_empty() {
16624            struct_ser.serialize_field("instance", &self.instance)?;
16625        }
16626        if let Some(v) = self.create_time.as_ref() {
16627            struct_ser.serialize_field("createTime", v)?;
16628        }
16629        if !self.creator.is_empty() {
16630            struct_ser.serialize_field("creator", &self.creator)?;
16631        }
16632        if !self.tags.is_empty() {
16633            struct_ser.serialize_field("tags", &self.tags)?;
16634        }
16635        struct_ser.end()
16636    }
16637}
16638impl<'de> serde::Deserialize<'de> for NetworkInterface {
16639    #[allow(deprecated)]
16640    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16641    where
16642        D: serde::Deserializer<'de>,
16643    {
16644        const FIELDS: &[&str] = &[
16645            "name",
16646            "urn",
16647            "subnet",
16648            "security_groups",
16649            "securityGroups",
16650            "source_address_check",
16651            "sourceAddressCheck",
16652            "ipv4_address",
16653            "ipv4Address",
16654            "ipv6_address",
16655            "ipv6Address",
16656            "state",
16657            "instance",
16658            "create_time",
16659            "createTime",
16660            "creator",
16661            "tags",
16662        ];
16663        #[allow(clippy::enum_variant_names)]
16664        enum GeneratedField {
16665            Name,
16666            Urn,
16667            Subnet,
16668            SecurityGroups,
16669            SourceAddressCheck,
16670            Ipv4Address,
16671            Ipv6Address,
16672            State,
16673            Instance,
16674            CreateTime,
16675            Creator,
16676            Tags,
16677            __SkipField__,
16678        }
16679        impl<'de> serde::Deserialize<'de> for GeneratedField {
16680            fn deserialize<D>(
16681                deserializer: D,
16682            ) -> std::result::Result<GeneratedField, D::Error>
16683            where
16684                D: serde::Deserializer<'de>,
16685            {
16686                struct GeneratedVisitor;
16687                impl serde::de::Visitor<'_> for GeneratedVisitor {
16688                    type Value = GeneratedField;
16689                    fn expecting(
16690                        &self,
16691                        formatter: &mut std::fmt::Formatter<'_>,
16692                    ) -> std::fmt::Result {
16693                        write!(formatter, "expected one of: {:?}", & FIELDS)
16694                    }
16695                    #[allow(unused_variables)]
16696                    fn visit_str<E>(
16697                        self,
16698                        value: &str,
16699                    ) -> std::result::Result<GeneratedField, E>
16700                    where
16701                        E: serde::de::Error,
16702                    {
16703                        match value {
16704                            "name" => Ok(GeneratedField::Name),
16705                            "urn" => Ok(GeneratedField::Urn),
16706                            "subnet" => Ok(GeneratedField::Subnet),
16707                            "securityGroups" | "security_groups" => {
16708                                Ok(GeneratedField::SecurityGroups)
16709                            }
16710                            "sourceAddressCheck" | "source_address_check" => {
16711                                Ok(GeneratedField::SourceAddressCheck)
16712                            }
16713                            "ipv4Address" | "ipv4_address" => {
16714                                Ok(GeneratedField::Ipv4Address)
16715                            }
16716                            "ipv6Address" | "ipv6_address" => {
16717                                Ok(GeneratedField::Ipv6Address)
16718                            }
16719                            "state" => Ok(GeneratedField::State),
16720                            "instance" => Ok(GeneratedField::Instance),
16721                            "createTime" | "create_time" => {
16722                                Ok(GeneratedField::CreateTime)
16723                            }
16724                            "creator" => Ok(GeneratedField::Creator),
16725                            "tags" => Ok(GeneratedField::Tags),
16726                            _ => Ok(GeneratedField::__SkipField__),
16727                        }
16728                    }
16729                }
16730                deserializer.deserialize_identifier(GeneratedVisitor)
16731            }
16732        }
16733        struct GeneratedVisitor;
16734        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16735            type Value = NetworkInterface;
16736            fn expecting(
16737                &self,
16738                formatter: &mut std::fmt::Formatter<'_>,
16739            ) -> std::fmt::Result {
16740                formatter
16741                    .write_str("struct origincloud.network.v1beta1.NetworkInterface")
16742            }
16743            fn visit_map<V>(
16744                self,
16745                mut map_: V,
16746            ) -> std::result::Result<NetworkInterface, V::Error>
16747            where
16748                V: serde::de::MapAccess<'de>,
16749            {
16750                let mut name__ = None;
16751                let mut urn__ = None;
16752                let mut subnet__ = None;
16753                let mut security_groups__ = None;
16754                let mut source_address_check__ = None;
16755                let mut ipv4_address__ = None;
16756                let mut ipv6_address__ = None;
16757                let mut state__ = None;
16758                let mut instance__ = None;
16759                let mut create_time__ = None;
16760                let mut creator__ = None;
16761                let mut tags__ = None;
16762                while let Some(k) = map_.next_key()? {
16763                    match k {
16764                        GeneratedField::Name => {
16765                            if name__.is_some() {
16766                                return Err(serde::de::Error::duplicate_field("name"));
16767                            }
16768                            name__ = Some(map_.next_value()?);
16769                        }
16770                        GeneratedField::Urn => {
16771                            if urn__.is_some() {
16772                                return Err(serde::de::Error::duplicate_field("urn"));
16773                            }
16774                            urn__ = Some(map_.next_value()?);
16775                        }
16776                        GeneratedField::Subnet => {
16777                            if subnet__.is_some() {
16778                                return Err(serde::de::Error::duplicate_field("subnet"));
16779                            }
16780                            subnet__ = Some(map_.next_value()?);
16781                        }
16782                        GeneratedField::SecurityGroups => {
16783                            if security_groups__.is_some() {
16784                                return Err(
16785                                    serde::de::Error::duplicate_field("securityGroups"),
16786                                );
16787                            }
16788                            security_groups__ = Some(map_.next_value()?);
16789                        }
16790                        GeneratedField::SourceAddressCheck => {
16791                            if source_address_check__.is_some() {
16792                                return Err(
16793                                    serde::de::Error::duplicate_field("sourceAddressCheck"),
16794                                );
16795                            }
16796                            source_address_check__ = map_.next_value()?;
16797                        }
16798                        GeneratedField::Ipv4Address => {
16799                            if ipv4_address__.is_some() {
16800                                return Err(
16801                                    serde::de::Error::duplicate_field("ipv4Address"),
16802                                );
16803                            }
16804                            ipv4_address__ = Some(map_.next_value()?);
16805                        }
16806                        GeneratedField::Ipv6Address => {
16807                            if ipv6_address__.is_some() {
16808                                return Err(
16809                                    serde::de::Error::duplicate_field("ipv6Address"),
16810                                );
16811                            }
16812                            ipv6_address__ = Some(map_.next_value()?);
16813                        }
16814                        GeneratedField::State => {
16815                            if state__.is_some() {
16816                                return Err(serde::de::Error::duplicate_field("state"));
16817                            }
16818                            state__ = Some(
16819                                map_.next_value::<network_interface::State>()? as i32,
16820                            );
16821                        }
16822                        GeneratedField::Instance => {
16823                            if instance__.is_some() {
16824                                return Err(serde::de::Error::duplicate_field("instance"));
16825                            }
16826                            instance__ = Some(map_.next_value()?);
16827                        }
16828                        GeneratedField::CreateTime => {
16829                            if create_time__.is_some() {
16830                                return Err(serde::de::Error::duplicate_field("createTime"));
16831                            }
16832                            create_time__ = map_.next_value()?;
16833                        }
16834                        GeneratedField::Creator => {
16835                            if creator__.is_some() {
16836                                return Err(serde::de::Error::duplicate_field("creator"));
16837                            }
16838                            creator__ = Some(map_.next_value()?);
16839                        }
16840                        GeneratedField::Tags => {
16841                            if tags__.is_some() {
16842                                return Err(serde::de::Error::duplicate_field("tags"));
16843                            }
16844                            tags__ = Some(
16845                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
16846                            );
16847                        }
16848                        GeneratedField::__SkipField__ => {
16849                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16850                        }
16851                    }
16852                }
16853                Ok(NetworkInterface {
16854                    name: name__.unwrap_or_default(),
16855                    urn: urn__.unwrap_or_default(),
16856                    subnet: subnet__.unwrap_or_default(),
16857                    security_groups: security_groups__.unwrap_or_default(),
16858                    source_address_check: source_address_check__,
16859                    ipv4_address: ipv4_address__.unwrap_or_default(),
16860                    ipv6_address: ipv6_address__.unwrap_or_default(),
16861                    state: state__.unwrap_or_default(),
16862                    instance: instance__.unwrap_or_default(),
16863                    create_time: create_time__,
16864                    creator: creator__.unwrap_or_default(),
16865                    tags: tags__.unwrap_or_default(),
16866                })
16867            }
16868        }
16869        deserializer
16870            .deserialize_struct(
16871                "origincloud.network.v1beta1.NetworkInterface",
16872                FIELDS,
16873                GeneratedVisitor,
16874            )
16875    }
16876}
16877impl serde::Serialize for network_interface::State {
16878    #[allow(deprecated)]
16879    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16880    where
16881        S: serde::Serializer,
16882    {
16883        let variant = match self {
16884            Self::Unspecified => "STATE_UNSPECIFIED",
16885            Self::Available => "AVAILABLE",
16886            Self::Attached => "ATTACHED",
16887        };
16888        serializer.serialize_str(variant)
16889    }
16890}
16891impl<'de> serde::Deserialize<'de> for network_interface::State {
16892    #[allow(deprecated)]
16893    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16894    where
16895        D: serde::Deserializer<'de>,
16896    {
16897        const FIELDS: &[&str] = &["STATE_UNSPECIFIED", "AVAILABLE", "ATTACHED"];
16898        struct GeneratedVisitor;
16899        impl serde::de::Visitor<'_> for GeneratedVisitor {
16900            type Value = network_interface::State;
16901            fn expecting(
16902                &self,
16903                formatter: &mut std::fmt::Formatter<'_>,
16904            ) -> std::fmt::Result {
16905                write!(formatter, "expected one of: {:?}", & FIELDS)
16906            }
16907            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
16908            where
16909                E: serde::de::Error,
16910            {
16911                i32::try_from(v)
16912                    .ok()
16913                    .and_then(|x| {
16914                        x
16915                            .try_into()
16916                            .ok()
16917                            .or_else(|| Some(network_interface::State::default()))
16918                    })
16919                    .ok_or_else(|| {
16920                        serde::de::Error::invalid_value(
16921                            serde::de::Unexpected::Signed(v),
16922                            &self,
16923                        )
16924                    })
16925            }
16926            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
16927            where
16928                E: serde::de::Error,
16929            {
16930                i32::try_from(v)
16931                    .ok()
16932                    .and_then(|x| {
16933                        x
16934                            .try_into()
16935                            .ok()
16936                            .or_else(|| Some(network_interface::State::default()))
16937                    })
16938                    .ok_or_else(|| {
16939                        serde::de::Error::invalid_value(
16940                            serde::de::Unexpected::Unsigned(v),
16941                            &self,
16942                        )
16943                    })
16944            }
16945            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
16946            where
16947                E: serde::de::Error,
16948            {
16949                match value {
16950                    "STATE_UNSPECIFIED" => Ok(network_interface::State::Unspecified),
16951                    "AVAILABLE" => Ok(network_interface::State::Available),
16952                    "ATTACHED" => Ok(network_interface::State::Attached),
16953                    _ => Ok(network_interface::State::default()),
16954                }
16955            }
16956        }
16957        deserializer.deserialize_any(GeneratedVisitor)
16958    }
16959}
16960impl serde::Serialize for Route {
16961    #[allow(deprecated)]
16962    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16963    where
16964        S: serde::Serializer,
16965    {
16966        use serde::ser::SerializeStruct;
16967        let mut len = 0;
16968        if !self.name.is_empty() {
16969            len += 1;
16970        }
16971        if !self.destination.is_empty() {
16972            len += 1;
16973        }
16974        if !self.internet_gateway.is_empty() {
16975            len += 1;
16976        }
16977        if !self.nat_gateway.is_empty() {
16978            len += 1;
16979        }
16980        let mut struct_ser = serializer
16981            .serialize_struct("origincloud.network.v1beta1.Route", len)?;
16982        if !self.name.is_empty() {
16983            struct_ser.serialize_field("name", &self.name)?;
16984        }
16985        if !self.destination.is_empty() {
16986            struct_ser.serialize_field("destination", &self.destination)?;
16987        }
16988        if !self.internet_gateway.is_empty() {
16989            struct_ser.serialize_field("internetGateway", &self.internet_gateway)?;
16990        }
16991        if !self.nat_gateway.is_empty() {
16992            struct_ser.serialize_field("natGateway", &self.nat_gateway)?;
16993        }
16994        struct_ser.end()
16995    }
16996}
16997impl<'de> serde::Deserialize<'de> for Route {
16998    #[allow(deprecated)]
16999    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17000    where
17001        D: serde::Deserializer<'de>,
17002    {
17003        const FIELDS: &[&str] = &[
17004            "name",
17005            "destination",
17006            "internet_gateway",
17007            "internetGateway",
17008            "nat_gateway",
17009            "natGateway",
17010        ];
17011        #[allow(clippy::enum_variant_names)]
17012        enum GeneratedField {
17013            Name,
17014            Destination,
17015            InternetGateway,
17016            NatGateway,
17017            __SkipField__,
17018        }
17019        impl<'de> serde::Deserialize<'de> for GeneratedField {
17020            fn deserialize<D>(
17021                deserializer: D,
17022            ) -> std::result::Result<GeneratedField, D::Error>
17023            where
17024                D: serde::Deserializer<'de>,
17025            {
17026                struct GeneratedVisitor;
17027                impl serde::de::Visitor<'_> for GeneratedVisitor {
17028                    type Value = GeneratedField;
17029                    fn expecting(
17030                        &self,
17031                        formatter: &mut std::fmt::Formatter<'_>,
17032                    ) -> std::fmt::Result {
17033                        write!(formatter, "expected one of: {:?}", & FIELDS)
17034                    }
17035                    #[allow(unused_variables)]
17036                    fn visit_str<E>(
17037                        self,
17038                        value: &str,
17039                    ) -> std::result::Result<GeneratedField, E>
17040                    where
17041                        E: serde::de::Error,
17042                    {
17043                        match value {
17044                            "name" => Ok(GeneratedField::Name),
17045                            "destination" => Ok(GeneratedField::Destination),
17046                            "internetGateway" | "internet_gateway" => {
17047                                Ok(GeneratedField::InternetGateway)
17048                            }
17049                            "natGateway" | "nat_gateway" => {
17050                                Ok(GeneratedField::NatGateway)
17051                            }
17052                            _ => Ok(GeneratedField::__SkipField__),
17053                        }
17054                    }
17055                }
17056                deserializer.deserialize_identifier(GeneratedVisitor)
17057            }
17058        }
17059        struct GeneratedVisitor;
17060        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17061            type Value = Route;
17062            fn expecting(
17063                &self,
17064                formatter: &mut std::fmt::Formatter<'_>,
17065            ) -> std::fmt::Result {
17066                formatter.write_str("struct origincloud.network.v1beta1.Route")
17067            }
17068            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Route, V::Error>
17069            where
17070                V: serde::de::MapAccess<'de>,
17071            {
17072                let mut name__ = None;
17073                let mut destination__ = None;
17074                let mut internet_gateway__ = None;
17075                let mut nat_gateway__ = None;
17076                while let Some(k) = map_.next_key()? {
17077                    match k {
17078                        GeneratedField::Name => {
17079                            if name__.is_some() {
17080                                return Err(serde::de::Error::duplicate_field("name"));
17081                            }
17082                            name__ = Some(map_.next_value()?);
17083                        }
17084                        GeneratedField::Destination => {
17085                            if destination__.is_some() {
17086                                return Err(
17087                                    serde::de::Error::duplicate_field("destination"),
17088                                );
17089                            }
17090                            destination__ = Some(map_.next_value()?);
17091                        }
17092                        GeneratedField::InternetGateway => {
17093                            if internet_gateway__.is_some() {
17094                                return Err(
17095                                    serde::de::Error::duplicate_field("internetGateway"),
17096                                );
17097                            }
17098                            internet_gateway__ = Some(map_.next_value()?);
17099                        }
17100                        GeneratedField::NatGateway => {
17101                            if nat_gateway__.is_some() {
17102                                return Err(serde::de::Error::duplicate_field("natGateway"));
17103                            }
17104                            nat_gateway__ = Some(map_.next_value()?);
17105                        }
17106                        GeneratedField::__SkipField__ => {
17107                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17108                        }
17109                    }
17110                }
17111                Ok(Route {
17112                    name: name__.unwrap_or_default(),
17113                    destination: destination__.unwrap_or_default(),
17114                    internet_gateway: internet_gateway__.unwrap_or_default(),
17115                    nat_gateway: nat_gateway__.unwrap_or_default(),
17116                })
17117            }
17118        }
17119        deserializer
17120            .deserialize_struct(
17121                "origincloud.network.v1beta1.Route",
17122                FIELDS,
17123                GeneratedVisitor,
17124            )
17125    }
17126}
17127impl serde::Serialize for RouteTable {
17128    #[allow(deprecated)]
17129    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17130    where
17131        S: serde::Serializer,
17132    {
17133        use serde::ser::SerializeStruct;
17134        let mut len = 0;
17135        if !self.name.is_empty() {
17136            len += 1;
17137        }
17138        if !self.urn.is_empty() {
17139            len += 1;
17140        }
17141        if !self.vpc.is_empty() {
17142            len += 1;
17143        }
17144        if self.main {
17145            len += 1;
17146        }
17147        if !self.local_routes.is_empty() {
17148            len += 1;
17149        }
17150        if self.create_time.is_some() {
17151            len += 1;
17152        }
17153        if !self.creator.is_empty() {
17154            len += 1;
17155        }
17156        if !self.tags.is_empty() {
17157            len += 1;
17158        }
17159        let mut struct_ser = serializer
17160            .serialize_struct("origincloud.network.v1beta1.RouteTable", len)?;
17161        if !self.name.is_empty() {
17162            struct_ser.serialize_field("name", &self.name)?;
17163        }
17164        if !self.urn.is_empty() {
17165            struct_ser.serialize_field("urn", &self.urn)?;
17166        }
17167        if !self.vpc.is_empty() {
17168            struct_ser.serialize_field("vpc", &self.vpc)?;
17169        }
17170        if self.main {
17171            struct_ser.serialize_field("main", &self.main)?;
17172        }
17173        if !self.local_routes.is_empty() {
17174            struct_ser.serialize_field("localRoutes", &self.local_routes)?;
17175        }
17176        if let Some(v) = self.create_time.as_ref() {
17177            struct_ser.serialize_field("createTime", v)?;
17178        }
17179        if !self.creator.is_empty() {
17180            struct_ser.serialize_field("creator", &self.creator)?;
17181        }
17182        if !self.tags.is_empty() {
17183            struct_ser.serialize_field("tags", &self.tags)?;
17184        }
17185        struct_ser.end()
17186    }
17187}
17188impl<'de> serde::Deserialize<'de> for RouteTable {
17189    #[allow(deprecated)]
17190    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17191    where
17192        D: serde::Deserializer<'de>,
17193    {
17194        const FIELDS: &[&str] = &[
17195            "name",
17196            "urn",
17197            "vpc",
17198            "main",
17199            "local_routes",
17200            "localRoutes",
17201            "create_time",
17202            "createTime",
17203            "creator",
17204            "tags",
17205        ];
17206        #[allow(clippy::enum_variant_names)]
17207        enum GeneratedField {
17208            Name,
17209            Urn,
17210            Vpc,
17211            Main,
17212            LocalRoutes,
17213            CreateTime,
17214            Creator,
17215            Tags,
17216            __SkipField__,
17217        }
17218        impl<'de> serde::Deserialize<'de> for GeneratedField {
17219            fn deserialize<D>(
17220                deserializer: D,
17221            ) -> std::result::Result<GeneratedField, D::Error>
17222            where
17223                D: serde::Deserializer<'de>,
17224            {
17225                struct GeneratedVisitor;
17226                impl serde::de::Visitor<'_> for GeneratedVisitor {
17227                    type Value = GeneratedField;
17228                    fn expecting(
17229                        &self,
17230                        formatter: &mut std::fmt::Formatter<'_>,
17231                    ) -> std::fmt::Result {
17232                        write!(formatter, "expected one of: {:?}", & FIELDS)
17233                    }
17234                    #[allow(unused_variables)]
17235                    fn visit_str<E>(
17236                        self,
17237                        value: &str,
17238                    ) -> std::result::Result<GeneratedField, E>
17239                    where
17240                        E: serde::de::Error,
17241                    {
17242                        match value {
17243                            "name" => Ok(GeneratedField::Name),
17244                            "urn" => Ok(GeneratedField::Urn),
17245                            "vpc" => Ok(GeneratedField::Vpc),
17246                            "main" => Ok(GeneratedField::Main),
17247                            "localRoutes" | "local_routes" => {
17248                                Ok(GeneratedField::LocalRoutes)
17249                            }
17250                            "createTime" | "create_time" => {
17251                                Ok(GeneratedField::CreateTime)
17252                            }
17253                            "creator" => Ok(GeneratedField::Creator),
17254                            "tags" => Ok(GeneratedField::Tags),
17255                            _ => Ok(GeneratedField::__SkipField__),
17256                        }
17257                    }
17258                }
17259                deserializer.deserialize_identifier(GeneratedVisitor)
17260            }
17261        }
17262        struct GeneratedVisitor;
17263        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17264            type Value = RouteTable;
17265            fn expecting(
17266                &self,
17267                formatter: &mut std::fmt::Formatter<'_>,
17268            ) -> std::fmt::Result {
17269                formatter.write_str("struct origincloud.network.v1beta1.RouteTable")
17270            }
17271            fn visit_map<V>(
17272                self,
17273                mut map_: V,
17274            ) -> std::result::Result<RouteTable, V::Error>
17275            where
17276                V: serde::de::MapAccess<'de>,
17277            {
17278                let mut name__ = None;
17279                let mut urn__ = None;
17280                let mut vpc__ = None;
17281                let mut main__ = None;
17282                let mut local_routes__ = None;
17283                let mut create_time__ = None;
17284                let mut creator__ = None;
17285                let mut tags__ = None;
17286                while let Some(k) = map_.next_key()? {
17287                    match k {
17288                        GeneratedField::Name => {
17289                            if name__.is_some() {
17290                                return Err(serde::de::Error::duplicate_field("name"));
17291                            }
17292                            name__ = Some(map_.next_value()?);
17293                        }
17294                        GeneratedField::Urn => {
17295                            if urn__.is_some() {
17296                                return Err(serde::de::Error::duplicate_field("urn"));
17297                            }
17298                            urn__ = Some(map_.next_value()?);
17299                        }
17300                        GeneratedField::Vpc => {
17301                            if vpc__.is_some() {
17302                                return Err(serde::de::Error::duplicate_field("vpc"));
17303                            }
17304                            vpc__ = Some(map_.next_value()?);
17305                        }
17306                        GeneratedField::Main => {
17307                            if main__.is_some() {
17308                                return Err(serde::de::Error::duplicate_field("main"));
17309                            }
17310                            main__ = Some(map_.next_value()?);
17311                        }
17312                        GeneratedField::LocalRoutes => {
17313                            if local_routes__.is_some() {
17314                                return Err(
17315                                    serde::de::Error::duplicate_field("localRoutes"),
17316                                );
17317                            }
17318                            local_routes__ = Some(map_.next_value()?);
17319                        }
17320                        GeneratedField::CreateTime => {
17321                            if create_time__.is_some() {
17322                                return Err(serde::de::Error::duplicate_field("createTime"));
17323                            }
17324                            create_time__ = map_.next_value()?;
17325                        }
17326                        GeneratedField::Creator => {
17327                            if creator__.is_some() {
17328                                return Err(serde::de::Error::duplicate_field("creator"));
17329                            }
17330                            creator__ = Some(map_.next_value()?);
17331                        }
17332                        GeneratedField::Tags => {
17333                            if tags__.is_some() {
17334                                return Err(serde::de::Error::duplicate_field("tags"));
17335                            }
17336                            tags__ = Some(
17337                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
17338                            );
17339                        }
17340                        GeneratedField::__SkipField__ => {
17341                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17342                        }
17343                    }
17344                }
17345                Ok(RouteTable {
17346                    name: name__.unwrap_or_default(),
17347                    urn: urn__.unwrap_or_default(),
17348                    vpc: vpc__.unwrap_or_default(),
17349                    main: main__.unwrap_or_default(),
17350                    local_routes: local_routes__.unwrap_or_default(),
17351                    create_time: create_time__,
17352                    creator: creator__.unwrap_or_default(),
17353                    tags: tags__.unwrap_or_default(),
17354                })
17355            }
17356        }
17357        deserializer
17358            .deserialize_struct(
17359                "origincloud.network.v1beta1.RouteTable",
17360                FIELDS,
17361                GeneratedVisitor,
17362            )
17363    }
17364}
17365impl serde::Serialize for RouteTableAssociation {
17366    #[allow(deprecated)]
17367    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17368    where
17369        S: serde::Serializer,
17370    {
17371        use serde::ser::SerializeStruct;
17372        let mut len = 0;
17373        if !self.name.is_empty() {
17374            len += 1;
17375        }
17376        if !self.route_table.is_empty() {
17377            len += 1;
17378        }
17379        let mut struct_ser = serializer
17380            .serialize_struct("origincloud.network.v1beta1.RouteTableAssociation", len)?;
17381        if !self.name.is_empty() {
17382            struct_ser.serialize_field("name", &self.name)?;
17383        }
17384        if !self.route_table.is_empty() {
17385            struct_ser.serialize_field("routeTable", &self.route_table)?;
17386        }
17387        struct_ser.end()
17388    }
17389}
17390impl<'de> serde::Deserialize<'de> for RouteTableAssociation {
17391    #[allow(deprecated)]
17392    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17393    where
17394        D: serde::Deserializer<'de>,
17395    {
17396        const FIELDS: &[&str] = &["name", "route_table", "routeTable"];
17397        #[allow(clippy::enum_variant_names)]
17398        enum GeneratedField {
17399            Name,
17400            RouteTable,
17401            __SkipField__,
17402        }
17403        impl<'de> serde::Deserialize<'de> for GeneratedField {
17404            fn deserialize<D>(
17405                deserializer: D,
17406            ) -> std::result::Result<GeneratedField, D::Error>
17407            where
17408                D: serde::Deserializer<'de>,
17409            {
17410                struct GeneratedVisitor;
17411                impl serde::de::Visitor<'_> for GeneratedVisitor {
17412                    type Value = GeneratedField;
17413                    fn expecting(
17414                        &self,
17415                        formatter: &mut std::fmt::Formatter<'_>,
17416                    ) -> std::fmt::Result {
17417                        write!(formatter, "expected one of: {:?}", & FIELDS)
17418                    }
17419                    #[allow(unused_variables)]
17420                    fn visit_str<E>(
17421                        self,
17422                        value: &str,
17423                    ) -> std::result::Result<GeneratedField, E>
17424                    where
17425                        E: serde::de::Error,
17426                    {
17427                        match value {
17428                            "name" => Ok(GeneratedField::Name),
17429                            "routeTable" | "route_table" => {
17430                                Ok(GeneratedField::RouteTable)
17431                            }
17432                            _ => Ok(GeneratedField::__SkipField__),
17433                        }
17434                    }
17435                }
17436                deserializer.deserialize_identifier(GeneratedVisitor)
17437            }
17438        }
17439        struct GeneratedVisitor;
17440        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17441            type Value = RouteTableAssociation;
17442            fn expecting(
17443                &self,
17444                formatter: &mut std::fmt::Formatter<'_>,
17445            ) -> std::fmt::Result {
17446                formatter
17447                    .write_str(
17448                        "struct origincloud.network.v1beta1.RouteTableAssociation",
17449                    )
17450            }
17451            fn visit_map<V>(
17452                self,
17453                mut map_: V,
17454            ) -> std::result::Result<RouteTableAssociation, V::Error>
17455            where
17456                V: serde::de::MapAccess<'de>,
17457            {
17458                let mut name__ = None;
17459                let mut route_table__ = None;
17460                while let Some(k) = map_.next_key()? {
17461                    match k {
17462                        GeneratedField::Name => {
17463                            if name__.is_some() {
17464                                return Err(serde::de::Error::duplicate_field("name"));
17465                            }
17466                            name__ = Some(map_.next_value()?);
17467                        }
17468                        GeneratedField::RouteTable => {
17469                            if route_table__.is_some() {
17470                                return Err(serde::de::Error::duplicate_field("routeTable"));
17471                            }
17472                            route_table__ = Some(map_.next_value()?);
17473                        }
17474                        GeneratedField::__SkipField__ => {
17475                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17476                        }
17477                    }
17478                }
17479                Ok(RouteTableAssociation {
17480                    name: name__.unwrap_or_default(),
17481                    route_table: route_table__.unwrap_or_default(),
17482                })
17483            }
17484        }
17485        deserializer
17486            .deserialize_struct(
17487                "origincloud.network.v1beta1.RouteTableAssociation",
17488                FIELDS,
17489                GeneratedVisitor,
17490            )
17491    }
17492}
17493impl serde::Serialize for SecurityGroup {
17494    #[allow(deprecated)]
17495    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17496    where
17497        S: serde::Serializer,
17498    {
17499        use serde::ser::SerializeStruct;
17500        let mut len = 0;
17501        if !self.name.is_empty() {
17502            len += 1;
17503        }
17504        if !self.urn.is_empty() {
17505            len += 1;
17506        }
17507        if !self.vpc.is_empty() {
17508            len += 1;
17509        }
17510        if self.vpc_default {
17511            len += 1;
17512        }
17513        if self.create_time.is_some() {
17514            len += 1;
17515        }
17516        if !self.creator.is_empty() {
17517            len += 1;
17518        }
17519        if !self.tags.is_empty() {
17520            len += 1;
17521        }
17522        let mut struct_ser = serializer
17523            .serialize_struct("origincloud.network.v1beta1.SecurityGroup", len)?;
17524        if !self.name.is_empty() {
17525            struct_ser.serialize_field("name", &self.name)?;
17526        }
17527        if !self.urn.is_empty() {
17528            struct_ser.serialize_field("urn", &self.urn)?;
17529        }
17530        if !self.vpc.is_empty() {
17531            struct_ser.serialize_field("vpc", &self.vpc)?;
17532        }
17533        if self.vpc_default {
17534            struct_ser.serialize_field("vpcDefault", &self.vpc_default)?;
17535        }
17536        if let Some(v) = self.create_time.as_ref() {
17537            struct_ser.serialize_field("createTime", v)?;
17538        }
17539        if !self.creator.is_empty() {
17540            struct_ser.serialize_field("creator", &self.creator)?;
17541        }
17542        if !self.tags.is_empty() {
17543            struct_ser.serialize_field("tags", &self.tags)?;
17544        }
17545        struct_ser.end()
17546    }
17547}
17548impl<'de> serde::Deserialize<'de> for SecurityGroup {
17549    #[allow(deprecated)]
17550    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17551    where
17552        D: serde::Deserializer<'de>,
17553    {
17554        const FIELDS: &[&str] = &[
17555            "name",
17556            "urn",
17557            "vpc",
17558            "vpc_default",
17559            "vpcDefault",
17560            "create_time",
17561            "createTime",
17562            "creator",
17563            "tags",
17564        ];
17565        #[allow(clippy::enum_variant_names)]
17566        enum GeneratedField {
17567            Name,
17568            Urn,
17569            Vpc,
17570            VpcDefault,
17571            CreateTime,
17572            Creator,
17573            Tags,
17574            __SkipField__,
17575        }
17576        impl<'de> serde::Deserialize<'de> for GeneratedField {
17577            fn deserialize<D>(
17578                deserializer: D,
17579            ) -> std::result::Result<GeneratedField, D::Error>
17580            where
17581                D: serde::Deserializer<'de>,
17582            {
17583                struct GeneratedVisitor;
17584                impl serde::de::Visitor<'_> for GeneratedVisitor {
17585                    type Value = GeneratedField;
17586                    fn expecting(
17587                        &self,
17588                        formatter: &mut std::fmt::Formatter<'_>,
17589                    ) -> std::fmt::Result {
17590                        write!(formatter, "expected one of: {:?}", & FIELDS)
17591                    }
17592                    #[allow(unused_variables)]
17593                    fn visit_str<E>(
17594                        self,
17595                        value: &str,
17596                    ) -> std::result::Result<GeneratedField, E>
17597                    where
17598                        E: serde::de::Error,
17599                    {
17600                        match value {
17601                            "name" => Ok(GeneratedField::Name),
17602                            "urn" => Ok(GeneratedField::Urn),
17603                            "vpc" => Ok(GeneratedField::Vpc),
17604                            "vpcDefault" | "vpc_default" => {
17605                                Ok(GeneratedField::VpcDefault)
17606                            }
17607                            "createTime" | "create_time" => {
17608                                Ok(GeneratedField::CreateTime)
17609                            }
17610                            "creator" => Ok(GeneratedField::Creator),
17611                            "tags" => Ok(GeneratedField::Tags),
17612                            _ => Ok(GeneratedField::__SkipField__),
17613                        }
17614                    }
17615                }
17616                deserializer.deserialize_identifier(GeneratedVisitor)
17617            }
17618        }
17619        struct GeneratedVisitor;
17620        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17621            type Value = SecurityGroup;
17622            fn expecting(
17623                &self,
17624                formatter: &mut std::fmt::Formatter<'_>,
17625            ) -> std::fmt::Result {
17626                formatter.write_str("struct origincloud.network.v1beta1.SecurityGroup")
17627            }
17628            fn visit_map<V>(
17629                self,
17630                mut map_: V,
17631            ) -> std::result::Result<SecurityGroup, V::Error>
17632            where
17633                V: serde::de::MapAccess<'de>,
17634            {
17635                let mut name__ = None;
17636                let mut urn__ = None;
17637                let mut vpc__ = None;
17638                let mut vpc_default__ = None;
17639                let mut create_time__ = None;
17640                let mut creator__ = None;
17641                let mut tags__ = None;
17642                while let Some(k) = map_.next_key()? {
17643                    match k {
17644                        GeneratedField::Name => {
17645                            if name__.is_some() {
17646                                return Err(serde::de::Error::duplicate_field("name"));
17647                            }
17648                            name__ = Some(map_.next_value()?);
17649                        }
17650                        GeneratedField::Urn => {
17651                            if urn__.is_some() {
17652                                return Err(serde::de::Error::duplicate_field("urn"));
17653                            }
17654                            urn__ = Some(map_.next_value()?);
17655                        }
17656                        GeneratedField::Vpc => {
17657                            if vpc__.is_some() {
17658                                return Err(serde::de::Error::duplicate_field("vpc"));
17659                            }
17660                            vpc__ = Some(map_.next_value()?);
17661                        }
17662                        GeneratedField::VpcDefault => {
17663                            if vpc_default__.is_some() {
17664                                return Err(serde::de::Error::duplicate_field("vpcDefault"));
17665                            }
17666                            vpc_default__ = Some(map_.next_value()?);
17667                        }
17668                        GeneratedField::CreateTime => {
17669                            if create_time__.is_some() {
17670                                return Err(serde::de::Error::duplicate_field("createTime"));
17671                            }
17672                            create_time__ = map_.next_value()?;
17673                        }
17674                        GeneratedField::Creator => {
17675                            if creator__.is_some() {
17676                                return Err(serde::de::Error::duplicate_field("creator"));
17677                            }
17678                            creator__ = Some(map_.next_value()?);
17679                        }
17680                        GeneratedField::Tags => {
17681                            if tags__.is_some() {
17682                                return Err(serde::de::Error::duplicate_field("tags"));
17683                            }
17684                            tags__ = Some(
17685                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
17686                            );
17687                        }
17688                        GeneratedField::__SkipField__ => {
17689                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17690                        }
17691                    }
17692                }
17693                Ok(SecurityGroup {
17694                    name: name__.unwrap_or_default(),
17695                    urn: urn__.unwrap_or_default(),
17696                    vpc: vpc__.unwrap_or_default(),
17697                    vpc_default: vpc_default__.unwrap_or_default(),
17698                    create_time: create_time__,
17699                    creator: creator__.unwrap_or_default(),
17700                    tags: tags__.unwrap_or_default(),
17701                })
17702            }
17703        }
17704        deserializer
17705            .deserialize_struct(
17706                "origincloud.network.v1beta1.SecurityGroup",
17707                FIELDS,
17708                GeneratedVisitor,
17709            )
17710    }
17711}
17712impl serde::Serialize for SecurityGroupAssociation {
17713    #[allow(deprecated)]
17714    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17715    where
17716        S: serde::Serializer,
17717    {
17718        use serde::ser::SerializeStruct;
17719        let mut len = 0;
17720        if !self.name.is_empty() {
17721            len += 1;
17722        }
17723        if !self.security_group.is_empty() {
17724            len += 1;
17725        }
17726        let mut struct_ser = serializer
17727            .serialize_struct(
17728                "origincloud.network.v1beta1.SecurityGroupAssociation",
17729                len,
17730            )?;
17731        if !self.name.is_empty() {
17732            struct_ser.serialize_field("name", &self.name)?;
17733        }
17734        if !self.security_group.is_empty() {
17735            struct_ser.serialize_field("securityGroup", &self.security_group)?;
17736        }
17737        struct_ser.end()
17738    }
17739}
17740impl<'de> serde::Deserialize<'de> for SecurityGroupAssociation {
17741    #[allow(deprecated)]
17742    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17743    where
17744        D: serde::Deserializer<'de>,
17745    {
17746        const FIELDS: &[&str] = &["name", "security_group", "securityGroup"];
17747        #[allow(clippy::enum_variant_names)]
17748        enum GeneratedField {
17749            Name,
17750            SecurityGroup,
17751            __SkipField__,
17752        }
17753        impl<'de> serde::Deserialize<'de> for GeneratedField {
17754            fn deserialize<D>(
17755                deserializer: D,
17756            ) -> std::result::Result<GeneratedField, D::Error>
17757            where
17758                D: serde::Deserializer<'de>,
17759            {
17760                struct GeneratedVisitor;
17761                impl serde::de::Visitor<'_> for GeneratedVisitor {
17762                    type Value = GeneratedField;
17763                    fn expecting(
17764                        &self,
17765                        formatter: &mut std::fmt::Formatter<'_>,
17766                    ) -> std::fmt::Result {
17767                        write!(formatter, "expected one of: {:?}", & FIELDS)
17768                    }
17769                    #[allow(unused_variables)]
17770                    fn visit_str<E>(
17771                        self,
17772                        value: &str,
17773                    ) -> std::result::Result<GeneratedField, E>
17774                    where
17775                        E: serde::de::Error,
17776                    {
17777                        match value {
17778                            "name" => Ok(GeneratedField::Name),
17779                            "securityGroup" | "security_group" => {
17780                                Ok(GeneratedField::SecurityGroup)
17781                            }
17782                            _ => Ok(GeneratedField::__SkipField__),
17783                        }
17784                    }
17785                }
17786                deserializer.deserialize_identifier(GeneratedVisitor)
17787            }
17788        }
17789        struct GeneratedVisitor;
17790        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17791            type Value = SecurityGroupAssociation;
17792            fn expecting(
17793                &self,
17794                formatter: &mut std::fmt::Formatter<'_>,
17795            ) -> std::fmt::Result {
17796                formatter
17797                    .write_str(
17798                        "struct origincloud.network.v1beta1.SecurityGroupAssociation",
17799                    )
17800            }
17801            fn visit_map<V>(
17802                self,
17803                mut map_: V,
17804            ) -> std::result::Result<SecurityGroupAssociation, V::Error>
17805            where
17806                V: serde::de::MapAccess<'de>,
17807            {
17808                let mut name__ = None;
17809                let mut security_group__ = None;
17810                while let Some(k) = map_.next_key()? {
17811                    match k {
17812                        GeneratedField::Name => {
17813                            if name__.is_some() {
17814                                return Err(serde::de::Error::duplicate_field("name"));
17815                            }
17816                            name__ = Some(map_.next_value()?);
17817                        }
17818                        GeneratedField::SecurityGroup => {
17819                            if security_group__.is_some() {
17820                                return Err(
17821                                    serde::de::Error::duplicate_field("securityGroup"),
17822                                );
17823                            }
17824                            security_group__ = Some(map_.next_value()?);
17825                        }
17826                        GeneratedField::__SkipField__ => {
17827                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17828                        }
17829                    }
17830                }
17831                Ok(SecurityGroupAssociation {
17832                    name: name__.unwrap_or_default(),
17833                    security_group: security_group__.unwrap_or_default(),
17834                })
17835            }
17836        }
17837        deserializer
17838            .deserialize_struct(
17839                "origincloud.network.v1beta1.SecurityGroupAssociation",
17840                FIELDS,
17841                GeneratedVisitor,
17842            )
17843    }
17844}
17845impl serde::Serialize for SecurityGroupRule {
17846    #[allow(deprecated)]
17847    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17848    where
17849        S: serde::Serializer,
17850    {
17851        use serde::ser::SerializeStruct;
17852        let mut len = 0;
17853        if !self.name.is_empty() {
17854            len += 1;
17855        }
17856        if self.direction != 0 {
17857            len += 1;
17858        }
17859        if self.protocol != 0 {
17860            len += 1;
17861        }
17862        if self.first_port != 0 {
17863            len += 1;
17864        }
17865        if self.last_port != 0 {
17866            len += 1;
17867        }
17868        if !self.cidr_block.is_empty() {
17869            len += 1;
17870        }
17871        if !self.peer_security_group.is_empty() {
17872            len += 1;
17873        }
17874        if self.same_group {
17875            len += 1;
17876        }
17877        if !self.description.is_empty() {
17878            len += 1;
17879        }
17880        let mut struct_ser = serializer
17881            .serialize_struct("origincloud.network.v1beta1.SecurityGroupRule", len)?;
17882        if !self.name.is_empty() {
17883            struct_ser.serialize_field("name", &self.name)?;
17884        }
17885        if self.direction != 0 {
17886            let v = security_group_rule::Direction::try_from(self.direction)
17887                .map_err(|_| serde::ser::Error::custom(
17888                    format!("Invalid variant {}", self.direction),
17889                ))?;
17890            struct_ser.serialize_field("direction", &v)?;
17891        }
17892        if self.protocol != 0 {
17893            let v = security_group_rule::Protocol::try_from(self.protocol)
17894                .map_err(|_| serde::ser::Error::custom(
17895                    format!("Invalid variant {}", self.protocol),
17896                ))?;
17897            struct_ser.serialize_field("protocol", &v)?;
17898        }
17899        if self.first_port != 0 {
17900            struct_ser.serialize_field("firstPort", &self.first_port)?;
17901        }
17902        if self.last_port != 0 {
17903            struct_ser.serialize_field("lastPort", &self.last_port)?;
17904        }
17905        if !self.cidr_block.is_empty() {
17906            struct_ser.serialize_field("cidrBlock", &self.cidr_block)?;
17907        }
17908        if !self.peer_security_group.is_empty() {
17909            struct_ser.serialize_field("peerSecurityGroup", &self.peer_security_group)?;
17910        }
17911        if self.same_group {
17912            struct_ser.serialize_field("sameGroup", &self.same_group)?;
17913        }
17914        if !self.description.is_empty() {
17915            struct_ser.serialize_field("description", &self.description)?;
17916        }
17917        struct_ser.end()
17918    }
17919}
17920impl<'de> serde::Deserialize<'de> for SecurityGroupRule {
17921    #[allow(deprecated)]
17922    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17923    where
17924        D: serde::Deserializer<'de>,
17925    {
17926        const FIELDS: &[&str] = &[
17927            "name",
17928            "direction",
17929            "protocol",
17930            "first_port",
17931            "firstPort",
17932            "last_port",
17933            "lastPort",
17934            "cidr_block",
17935            "cidrBlock",
17936            "peer_security_group",
17937            "peerSecurityGroup",
17938            "same_group",
17939            "sameGroup",
17940            "description",
17941        ];
17942        #[allow(clippy::enum_variant_names)]
17943        enum GeneratedField {
17944            Name,
17945            Direction,
17946            Protocol,
17947            FirstPort,
17948            LastPort,
17949            CidrBlock,
17950            PeerSecurityGroup,
17951            SameGroup,
17952            Description,
17953            __SkipField__,
17954        }
17955        impl<'de> serde::Deserialize<'de> for GeneratedField {
17956            fn deserialize<D>(
17957                deserializer: D,
17958            ) -> std::result::Result<GeneratedField, D::Error>
17959            where
17960                D: serde::Deserializer<'de>,
17961            {
17962                struct GeneratedVisitor;
17963                impl serde::de::Visitor<'_> for GeneratedVisitor {
17964                    type Value = GeneratedField;
17965                    fn expecting(
17966                        &self,
17967                        formatter: &mut std::fmt::Formatter<'_>,
17968                    ) -> std::fmt::Result {
17969                        write!(formatter, "expected one of: {:?}", & FIELDS)
17970                    }
17971                    #[allow(unused_variables)]
17972                    fn visit_str<E>(
17973                        self,
17974                        value: &str,
17975                    ) -> std::result::Result<GeneratedField, E>
17976                    where
17977                        E: serde::de::Error,
17978                    {
17979                        match value {
17980                            "name" => Ok(GeneratedField::Name),
17981                            "direction" => Ok(GeneratedField::Direction),
17982                            "protocol" => Ok(GeneratedField::Protocol),
17983                            "firstPort" | "first_port" => Ok(GeneratedField::FirstPort),
17984                            "lastPort" | "last_port" => Ok(GeneratedField::LastPort),
17985                            "cidrBlock" | "cidr_block" => Ok(GeneratedField::CidrBlock),
17986                            "peerSecurityGroup" | "peer_security_group" => {
17987                                Ok(GeneratedField::PeerSecurityGroup)
17988                            }
17989                            "sameGroup" | "same_group" => Ok(GeneratedField::SameGroup),
17990                            "description" => Ok(GeneratedField::Description),
17991                            _ => Ok(GeneratedField::__SkipField__),
17992                        }
17993                    }
17994                }
17995                deserializer.deserialize_identifier(GeneratedVisitor)
17996            }
17997        }
17998        struct GeneratedVisitor;
17999        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18000            type Value = SecurityGroupRule;
18001            fn expecting(
18002                &self,
18003                formatter: &mut std::fmt::Formatter<'_>,
18004            ) -> std::fmt::Result {
18005                formatter
18006                    .write_str("struct origincloud.network.v1beta1.SecurityGroupRule")
18007            }
18008            fn visit_map<V>(
18009                self,
18010                mut map_: V,
18011            ) -> std::result::Result<SecurityGroupRule, V::Error>
18012            where
18013                V: serde::de::MapAccess<'de>,
18014            {
18015                let mut name__ = None;
18016                let mut direction__ = None;
18017                let mut protocol__ = None;
18018                let mut first_port__ = None;
18019                let mut last_port__ = None;
18020                let mut cidr_block__ = None;
18021                let mut peer_security_group__ = None;
18022                let mut same_group__ = None;
18023                let mut description__ = None;
18024                while let Some(k) = map_.next_key()? {
18025                    match k {
18026                        GeneratedField::Name => {
18027                            if name__.is_some() {
18028                                return Err(serde::de::Error::duplicate_field("name"));
18029                            }
18030                            name__ = Some(map_.next_value()?);
18031                        }
18032                        GeneratedField::Direction => {
18033                            if direction__.is_some() {
18034                                return Err(serde::de::Error::duplicate_field("direction"));
18035                            }
18036                            direction__ = Some(
18037                                map_.next_value::<security_group_rule::Direction>()? as i32,
18038                            );
18039                        }
18040                        GeneratedField::Protocol => {
18041                            if protocol__.is_some() {
18042                                return Err(serde::de::Error::duplicate_field("protocol"));
18043                            }
18044                            protocol__ = Some(
18045                                map_.next_value::<security_group_rule::Protocol>()? as i32,
18046                            );
18047                        }
18048                        GeneratedField::FirstPort => {
18049                            if first_port__.is_some() {
18050                                return Err(serde::de::Error::duplicate_field("firstPort"));
18051                            }
18052                            first_port__ = Some(
18053                                map_
18054                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18055                                    .0,
18056                            );
18057                        }
18058                        GeneratedField::LastPort => {
18059                            if last_port__.is_some() {
18060                                return Err(serde::de::Error::duplicate_field("lastPort"));
18061                            }
18062                            last_port__ = Some(
18063                                map_
18064                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18065                                    .0,
18066                            );
18067                        }
18068                        GeneratedField::CidrBlock => {
18069                            if cidr_block__.is_some() {
18070                                return Err(serde::de::Error::duplicate_field("cidrBlock"));
18071                            }
18072                            cidr_block__ = Some(map_.next_value()?);
18073                        }
18074                        GeneratedField::PeerSecurityGroup => {
18075                            if peer_security_group__.is_some() {
18076                                return Err(
18077                                    serde::de::Error::duplicate_field("peerSecurityGroup"),
18078                                );
18079                            }
18080                            peer_security_group__ = Some(map_.next_value()?);
18081                        }
18082                        GeneratedField::SameGroup => {
18083                            if same_group__.is_some() {
18084                                return Err(serde::de::Error::duplicate_field("sameGroup"));
18085                            }
18086                            same_group__ = Some(map_.next_value()?);
18087                        }
18088                        GeneratedField::Description => {
18089                            if description__.is_some() {
18090                                return Err(
18091                                    serde::de::Error::duplicate_field("description"),
18092                                );
18093                            }
18094                            description__ = Some(map_.next_value()?);
18095                        }
18096                        GeneratedField::__SkipField__ => {
18097                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18098                        }
18099                    }
18100                }
18101                Ok(SecurityGroupRule {
18102                    name: name__.unwrap_or_default(),
18103                    direction: direction__.unwrap_or_default(),
18104                    protocol: protocol__.unwrap_or_default(),
18105                    first_port: first_port__.unwrap_or_default(),
18106                    last_port: last_port__.unwrap_or_default(),
18107                    cidr_block: cidr_block__.unwrap_or_default(),
18108                    peer_security_group: peer_security_group__.unwrap_or_default(),
18109                    same_group: same_group__.unwrap_or_default(),
18110                    description: description__.unwrap_or_default(),
18111                })
18112            }
18113        }
18114        deserializer
18115            .deserialize_struct(
18116                "origincloud.network.v1beta1.SecurityGroupRule",
18117                FIELDS,
18118                GeneratedVisitor,
18119            )
18120    }
18121}
18122impl serde::Serialize for security_group_rule::Direction {
18123    #[allow(deprecated)]
18124    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18125    where
18126        S: serde::Serializer,
18127    {
18128        let variant = match self {
18129            Self::Unspecified => "DIRECTION_UNSPECIFIED",
18130            Self::Ingress => "INGRESS",
18131            Self::Egress => "EGRESS",
18132        };
18133        serializer.serialize_str(variant)
18134    }
18135}
18136impl<'de> serde::Deserialize<'de> for security_group_rule::Direction {
18137    #[allow(deprecated)]
18138    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18139    where
18140        D: serde::Deserializer<'de>,
18141    {
18142        const FIELDS: &[&str] = &["DIRECTION_UNSPECIFIED", "INGRESS", "EGRESS"];
18143        struct GeneratedVisitor;
18144        impl serde::de::Visitor<'_> for GeneratedVisitor {
18145            type Value = security_group_rule::Direction;
18146            fn expecting(
18147                &self,
18148                formatter: &mut std::fmt::Formatter<'_>,
18149            ) -> std::fmt::Result {
18150                write!(formatter, "expected one of: {:?}", & FIELDS)
18151            }
18152            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
18153            where
18154                E: serde::de::Error,
18155            {
18156                i32::try_from(v)
18157                    .ok()
18158                    .and_then(|x| {
18159                        x
18160                            .try_into()
18161                            .ok()
18162                            .or_else(|| Some(security_group_rule::Direction::default()))
18163                    })
18164                    .ok_or_else(|| {
18165                        serde::de::Error::invalid_value(
18166                            serde::de::Unexpected::Signed(v),
18167                            &self,
18168                        )
18169                    })
18170            }
18171            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
18172            where
18173                E: serde::de::Error,
18174            {
18175                i32::try_from(v)
18176                    .ok()
18177                    .and_then(|x| {
18178                        x
18179                            .try_into()
18180                            .ok()
18181                            .or_else(|| Some(security_group_rule::Direction::default()))
18182                    })
18183                    .ok_or_else(|| {
18184                        serde::de::Error::invalid_value(
18185                            serde::de::Unexpected::Unsigned(v),
18186                            &self,
18187                        )
18188                    })
18189            }
18190            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18191            where
18192                E: serde::de::Error,
18193            {
18194                match value {
18195                    "DIRECTION_UNSPECIFIED" => {
18196                        Ok(security_group_rule::Direction::Unspecified)
18197                    }
18198                    "INGRESS" => Ok(security_group_rule::Direction::Ingress),
18199                    "EGRESS" => Ok(security_group_rule::Direction::Egress),
18200                    _ => Ok(security_group_rule::Direction::default()),
18201                }
18202            }
18203        }
18204        deserializer.deserialize_any(GeneratedVisitor)
18205    }
18206}
18207impl serde::Serialize for security_group_rule::Protocol {
18208    #[allow(deprecated)]
18209    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18210    where
18211        S: serde::Serializer,
18212    {
18213        let variant = match self {
18214            Self::Unspecified => "PROTOCOL_UNSPECIFIED",
18215            Self::All => "ALL",
18216            Self::Tcp => "TCP",
18217            Self::Udp => "UDP",
18218            Self::Icmp => "ICMP",
18219        };
18220        serializer.serialize_str(variant)
18221    }
18222}
18223impl<'de> serde::Deserialize<'de> for security_group_rule::Protocol {
18224    #[allow(deprecated)]
18225    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18226    where
18227        D: serde::Deserializer<'de>,
18228    {
18229        const FIELDS: &[&str] = &["PROTOCOL_UNSPECIFIED", "ALL", "TCP", "UDP", "ICMP"];
18230        struct GeneratedVisitor;
18231        impl serde::de::Visitor<'_> for GeneratedVisitor {
18232            type Value = security_group_rule::Protocol;
18233            fn expecting(
18234                &self,
18235                formatter: &mut std::fmt::Formatter<'_>,
18236            ) -> std::fmt::Result {
18237                write!(formatter, "expected one of: {:?}", & FIELDS)
18238            }
18239            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
18240            where
18241                E: serde::de::Error,
18242            {
18243                i32::try_from(v)
18244                    .ok()
18245                    .and_then(|x| {
18246                        x
18247                            .try_into()
18248                            .ok()
18249                            .or_else(|| Some(security_group_rule::Protocol::default()))
18250                    })
18251                    .ok_or_else(|| {
18252                        serde::de::Error::invalid_value(
18253                            serde::de::Unexpected::Signed(v),
18254                            &self,
18255                        )
18256                    })
18257            }
18258            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
18259            where
18260                E: serde::de::Error,
18261            {
18262                i32::try_from(v)
18263                    .ok()
18264                    .and_then(|x| {
18265                        x
18266                            .try_into()
18267                            .ok()
18268                            .or_else(|| Some(security_group_rule::Protocol::default()))
18269                    })
18270                    .ok_or_else(|| {
18271                        serde::de::Error::invalid_value(
18272                            serde::de::Unexpected::Unsigned(v),
18273                            &self,
18274                        )
18275                    })
18276            }
18277            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18278            where
18279                E: serde::de::Error,
18280            {
18281                match value {
18282                    "PROTOCOL_UNSPECIFIED" => {
18283                        Ok(security_group_rule::Protocol::Unspecified)
18284                    }
18285                    "ALL" => Ok(security_group_rule::Protocol::All),
18286                    "TCP" => Ok(security_group_rule::Protocol::Tcp),
18287                    "UDP" => Ok(security_group_rule::Protocol::Udp),
18288                    "ICMP" => Ok(security_group_rule::Protocol::Icmp),
18289                    _ => Ok(security_group_rule::Protocol::default()),
18290                }
18291            }
18292        }
18293        deserializer.deserialize_any(GeneratedVisitor)
18294    }
18295}
18296impl serde::Serialize for SetDefaultDnsPolicyRequest {
18297    #[allow(deprecated)]
18298    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18299    where
18300        S: serde::Serializer,
18301    {
18302        use serde::ser::SerializeStruct;
18303        let mut len = 0;
18304        if !self.name.is_empty() {
18305            len += 1;
18306        }
18307        if !self.request_id.is_empty() {
18308            len += 1;
18309        }
18310        let mut struct_ser = serializer
18311            .serialize_struct(
18312                "origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18313                len,
18314            )?;
18315        if !self.name.is_empty() {
18316            struct_ser.serialize_field("name", &self.name)?;
18317        }
18318        if !self.request_id.is_empty() {
18319            struct_ser.serialize_field("requestId", &self.request_id)?;
18320        }
18321        struct_ser.end()
18322    }
18323}
18324impl<'de> serde::Deserialize<'de> for SetDefaultDnsPolicyRequest {
18325    #[allow(deprecated)]
18326    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18327    where
18328        D: serde::Deserializer<'de>,
18329    {
18330        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
18331        #[allow(clippy::enum_variant_names)]
18332        enum GeneratedField {
18333            Name,
18334            RequestId,
18335            __SkipField__,
18336        }
18337        impl<'de> serde::Deserialize<'de> for GeneratedField {
18338            fn deserialize<D>(
18339                deserializer: D,
18340            ) -> std::result::Result<GeneratedField, D::Error>
18341            where
18342                D: serde::Deserializer<'de>,
18343            {
18344                struct GeneratedVisitor;
18345                impl serde::de::Visitor<'_> for GeneratedVisitor {
18346                    type Value = GeneratedField;
18347                    fn expecting(
18348                        &self,
18349                        formatter: &mut std::fmt::Formatter<'_>,
18350                    ) -> std::fmt::Result {
18351                        write!(formatter, "expected one of: {:?}", & FIELDS)
18352                    }
18353                    #[allow(unused_variables)]
18354                    fn visit_str<E>(
18355                        self,
18356                        value: &str,
18357                    ) -> std::result::Result<GeneratedField, E>
18358                    where
18359                        E: serde::de::Error,
18360                    {
18361                        match value {
18362                            "name" => Ok(GeneratedField::Name),
18363                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
18364                            _ => Ok(GeneratedField::__SkipField__),
18365                        }
18366                    }
18367                }
18368                deserializer.deserialize_identifier(GeneratedVisitor)
18369            }
18370        }
18371        struct GeneratedVisitor;
18372        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18373            type Value = SetDefaultDnsPolicyRequest;
18374            fn expecting(
18375                &self,
18376                formatter: &mut std::fmt::Formatter<'_>,
18377            ) -> std::fmt::Result {
18378                formatter
18379                    .write_str(
18380                        "struct origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18381                    )
18382            }
18383            fn visit_map<V>(
18384                self,
18385                mut map_: V,
18386            ) -> std::result::Result<SetDefaultDnsPolicyRequest, V::Error>
18387            where
18388                V: serde::de::MapAccess<'de>,
18389            {
18390                let mut name__ = None;
18391                let mut request_id__ = None;
18392                while let Some(k) = map_.next_key()? {
18393                    match k {
18394                        GeneratedField::Name => {
18395                            if name__.is_some() {
18396                                return Err(serde::de::Error::duplicate_field("name"));
18397                            }
18398                            name__ = Some(map_.next_value()?);
18399                        }
18400                        GeneratedField::RequestId => {
18401                            if request_id__.is_some() {
18402                                return Err(serde::de::Error::duplicate_field("requestId"));
18403                            }
18404                            request_id__ = Some(map_.next_value()?);
18405                        }
18406                        GeneratedField::__SkipField__ => {
18407                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18408                        }
18409                    }
18410                }
18411                Ok(SetDefaultDnsPolicyRequest {
18412                    name: name__.unwrap_or_default(),
18413                    request_id: request_id__.unwrap_or_default(),
18414                })
18415            }
18416        }
18417        deserializer
18418            .deserialize_struct(
18419                "origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18420                FIELDS,
18421                GeneratedVisitor,
18422            )
18423    }
18424}
18425impl serde::Serialize for Subnet {
18426    #[allow(deprecated)]
18427    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18428    where
18429        S: serde::Serializer,
18430    {
18431        use serde::ser::SerializeStruct;
18432        let mut len = 0;
18433        if !self.name.is_empty() {
18434            len += 1;
18435        }
18436        if !self.urn.is_empty() {
18437            len += 1;
18438        }
18439        if !self.vpc.is_empty() {
18440            len += 1;
18441        }
18442        if !self.route_table.is_empty() {
18443            len += 1;
18444        }
18445        if !self.acl.is_empty() {
18446            len += 1;
18447        }
18448        if self.auto_assign_public_ip {
18449            len += 1;
18450        }
18451        if !self.ipv4_cidr_block.is_empty() {
18452            len += 1;
18453        }
18454        if !self.ipv6_cidr_block.is_empty() {
18455            len += 1;
18456        }
18457        if !self.ipv4_gateway.is_empty() {
18458            len += 1;
18459        }
18460        if !self.ipv6_gateway.is_empty() {
18461            len += 1;
18462        }
18463        if !self.ipv4_dns_servers.is_empty() {
18464            len += 1;
18465        }
18466        if !self.ipv6_dns_servers.is_empty() {
18467            len += 1;
18468        }
18469        if self.available_ipv4_address_count != 0 {
18470            len += 1;
18471        }
18472        if self.create_time.is_some() {
18473            len += 1;
18474        }
18475        if !self.creator.is_empty() {
18476            len += 1;
18477        }
18478        if !self.tags.is_empty() {
18479            len += 1;
18480        }
18481        let mut struct_ser = serializer
18482            .serialize_struct("origincloud.network.v1beta1.Subnet", len)?;
18483        if !self.name.is_empty() {
18484            struct_ser.serialize_field("name", &self.name)?;
18485        }
18486        if !self.urn.is_empty() {
18487            struct_ser.serialize_field("urn", &self.urn)?;
18488        }
18489        if !self.vpc.is_empty() {
18490            struct_ser.serialize_field("vpc", &self.vpc)?;
18491        }
18492        if !self.route_table.is_empty() {
18493            struct_ser.serialize_field("routeTable", &self.route_table)?;
18494        }
18495        if !self.acl.is_empty() {
18496            struct_ser.serialize_field("acl", &self.acl)?;
18497        }
18498        if self.auto_assign_public_ip {
18499            struct_ser
18500                .serialize_field("autoAssignPublicIp", &self.auto_assign_public_ip)?;
18501        }
18502        if !self.ipv4_cidr_block.is_empty() {
18503            struct_ser.serialize_field("ipv4CidrBlock", &self.ipv4_cidr_block)?;
18504        }
18505        if !self.ipv6_cidr_block.is_empty() {
18506            struct_ser.serialize_field("ipv6CidrBlock", &self.ipv6_cidr_block)?;
18507        }
18508        if !self.ipv4_gateway.is_empty() {
18509            struct_ser.serialize_field("ipv4Gateway", &self.ipv4_gateway)?;
18510        }
18511        if !self.ipv6_gateway.is_empty() {
18512            struct_ser.serialize_field("ipv6Gateway", &self.ipv6_gateway)?;
18513        }
18514        if !self.ipv4_dns_servers.is_empty() {
18515            struct_ser.serialize_field("ipv4DnsServers", &self.ipv4_dns_servers)?;
18516        }
18517        if !self.ipv6_dns_servers.is_empty() {
18518            struct_ser.serialize_field("ipv6DnsServers", &self.ipv6_dns_servers)?;
18519        }
18520        if self.available_ipv4_address_count != 0 {
18521            #[allow(clippy::needless_borrow)]
18522            #[allow(clippy::needless_borrows_for_generic_args)]
18523            struct_ser
18524                .serialize_field(
18525                    "availableIpv4AddressCount",
18526                    ToString::to_string(&self.available_ipv4_address_count).as_str(),
18527                )?;
18528        }
18529        if let Some(v) = self.create_time.as_ref() {
18530            struct_ser.serialize_field("createTime", v)?;
18531        }
18532        if !self.creator.is_empty() {
18533            struct_ser.serialize_field("creator", &self.creator)?;
18534        }
18535        if !self.tags.is_empty() {
18536            struct_ser.serialize_field("tags", &self.tags)?;
18537        }
18538        struct_ser.end()
18539    }
18540}
18541impl<'de> serde::Deserialize<'de> for Subnet {
18542    #[allow(deprecated)]
18543    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18544    where
18545        D: serde::Deserializer<'de>,
18546    {
18547        const FIELDS: &[&str] = &[
18548            "name",
18549            "urn",
18550            "vpc",
18551            "route_table",
18552            "routeTable",
18553            "acl",
18554            "auto_assign_public_ip",
18555            "autoAssignPublicIp",
18556            "ipv4_cidr_block",
18557            "ipv4CidrBlock",
18558            "ipv6_cidr_block",
18559            "ipv6CidrBlock",
18560            "ipv4_gateway",
18561            "ipv4Gateway",
18562            "ipv6_gateway",
18563            "ipv6Gateway",
18564            "ipv4_dns_servers",
18565            "ipv4DnsServers",
18566            "ipv6_dns_servers",
18567            "ipv6DnsServers",
18568            "available_ipv4_address_count",
18569            "availableIpv4AddressCount",
18570            "create_time",
18571            "createTime",
18572            "creator",
18573            "tags",
18574        ];
18575        #[allow(clippy::enum_variant_names)]
18576        enum GeneratedField {
18577            Name,
18578            Urn,
18579            Vpc,
18580            RouteTable,
18581            Acl,
18582            AutoAssignPublicIp,
18583            Ipv4CidrBlock,
18584            Ipv6CidrBlock,
18585            Ipv4Gateway,
18586            Ipv6Gateway,
18587            Ipv4DnsServers,
18588            Ipv6DnsServers,
18589            AvailableIpv4AddressCount,
18590            CreateTime,
18591            Creator,
18592            Tags,
18593            __SkipField__,
18594        }
18595        impl<'de> serde::Deserialize<'de> for GeneratedField {
18596            fn deserialize<D>(
18597                deserializer: D,
18598            ) -> std::result::Result<GeneratedField, D::Error>
18599            where
18600                D: serde::Deserializer<'de>,
18601            {
18602                struct GeneratedVisitor;
18603                impl serde::de::Visitor<'_> for GeneratedVisitor {
18604                    type Value = GeneratedField;
18605                    fn expecting(
18606                        &self,
18607                        formatter: &mut std::fmt::Formatter<'_>,
18608                    ) -> std::fmt::Result {
18609                        write!(formatter, "expected one of: {:?}", & FIELDS)
18610                    }
18611                    #[allow(unused_variables)]
18612                    fn visit_str<E>(
18613                        self,
18614                        value: &str,
18615                    ) -> std::result::Result<GeneratedField, E>
18616                    where
18617                        E: serde::de::Error,
18618                    {
18619                        match value {
18620                            "name" => Ok(GeneratedField::Name),
18621                            "urn" => Ok(GeneratedField::Urn),
18622                            "vpc" => Ok(GeneratedField::Vpc),
18623                            "routeTable" | "route_table" => {
18624                                Ok(GeneratedField::RouteTable)
18625                            }
18626                            "acl" => Ok(GeneratedField::Acl),
18627                            "autoAssignPublicIp" | "auto_assign_public_ip" => {
18628                                Ok(GeneratedField::AutoAssignPublicIp)
18629                            }
18630                            "ipv4CidrBlock" | "ipv4_cidr_block" => {
18631                                Ok(GeneratedField::Ipv4CidrBlock)
18632                            }
18633                            "ipv6CidrBlock" | "ipv6_cidr_block" => {
18634                                Ok(GeneratedField::Ipv6CidrBlock)
18635                            }
18636                            "ipv4Gateway" | "ipv4_gateway" => {
18637                                Ok(GeneratedField::Ipv4Gateway)
18638                            }
18639                            "ipv6Gateway" | "ipv6_gateway" => {
18640                                Ok(GeneratedField::Ipv6Gateway)
18641                            }
18642                            "ipv4DnsServers" | "ipv4_dns_servers" => {
18643                                Ok(GeneratedField::Ipv4DnsServers)
18644                            }
18645                            "ipv6DnsServers" | "ipv6_dns_servers" => {
18646                                Ok(GeneratedField::Ipv6DnsServers)
18647                            }
18648                            "availableIpv4AddressCount"
18649                            | "available_ipv4_address_count" => {
18650                                Ok(GeneratedField::AvailableIpv4AddressCount)
18651                            }
18652                            "createTime" | "create_time" => {
18653                                Ok(GeneratedField::CreateTime)
18654                            }
18655                            "creator" => Ok(GeneratedField::Creator),
18656                            "tags" => Ok(GeneratedField::Tags),
18657                            _ => Ok(GeneratedField::__SkipField__),
18658                        }
18659                    }
18660                }
18661                deserializer.deserialize_identifier(GeneratedVisitor)
18662            }
18663        }
18664        struct GeneratedVisitor;
18665        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18666            type Value = Subnet;
18667            fn expecting(
18668                &self,
18669                formatter: &mut std::fmt::Formatter<'_>,
18670            ) -> std::fmt::Result {
18671                formatter.write_str("struct origincloud.network.v1beta1.Subnet")
18672            }
18673            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Subnet, V::Error>
18674            where
18675                V: serde::de::MapAccess<'de>,
18676            {
18677                let mut name__ = None;
18678                let mut urn__ = None;
18679                let mut vpc__ = None;
18680                let mut route_table__ = None;
18681                let mut acl__ = None;
18682                let mut auto_assign_public_ip__ = None;
18683                let mut ipv4_cidr_block__ = None;
18684                let mut ipv6_cidr_block__ = None;
18685                let mut ipv4_gateway__ = None;
18686                let mut ipv6_gateway__ = None;
18687                let mut ipv4_dns_servers__ = None;
18688                let mut ipv6_dns_servers__ = None;
18689                let mut available_ipv4_address_count__ = None;
18690                let mut create_time__ = None;
18691                let mut creator__ = None;
18692                let mut tags__ = None;
18693                while let Some(k) = map_.next_key()? {
18694                    match k {
18695                        GeneratedField::Name => {
18696                            if name__.is_some() {
18697                                return Err(serde::de::Error::duplicate_field("name"));
18698                            }
18699                            name__ = Some(map_.next_value()?);
18700                        }
18701                        GeneratedField::Urn => {
18702                            if urn__.is_some() {
18703                                return Err(serde::de::Error::duplicate_field("urn"));
18704                            }
18705                            urn__ = Some(map_.next_value()?);
18706                        }
18707                        GeneratedField::Vpc => {
18708                            if vpc__.is_some() {
18709                                return Err(serde::de::Error::duplicate_field("vpc"));
18710                            }
18711                            vpc__ = Some(map_.next_value()?);
18712                        }
18713                        GeneratedField::RouteTable => {
18714                            if route_table__.is_some() {
18715                                return Err(serde::de::Error::duplicate_field("routeTable"));
18716                            }
18717                            route_table__ = Some(map_.next_value()?);
18718                        }
18719                        GeneratedField::Acl => {
18720                            if acl__.is_some() {
18721                                return Err(serde::de::Error::duplicate_field("acl"));
18722                            }
18723                            acl__ = Some(map_.next_value()?);
18724                        }
18725                        GeneratedField::AutoAssignPublicIp => {
18726                            if auto_assign_public_ip__.is_some() {
18727                                return Err(
18728                                    serde::de::Error::duplicate_field("autoAssignPublicIp"),
18729                                );
18730                            }
18731                            auto_assign_public_ip__ = Some(map_.next_value()?);
18732                        }
18733                        GeneratedField::Ipv4CidrBlock => {
18734                            if ipv4_cidr_block__.is_some() {
18735                                return Err(
18736                                    serde::de::Error::duplicate_field("ipv4CidrBlock"),
18737                                );
18738                            }
18739                            ipv4_cidr_block__ = Some(map_.next_value()?);
18740                        }
18741                        GeneratedField::Ipv6CidrBlock => {
18742                            if ipv6_cidr_block__.is_some() {
18743                                return Err(
18744                                    serde::de::Error::duplicate_field("ipv6CidrBlock"),
18745                                );
18746                            }
18747                            ipv6_cidr_block__ = Some(map_.next_value()?);
18748                        }
18749                        GeneratedField::Ipv4Gateway => {
18750                            if ipv4_gateway__.is_some() {
18751                                return Err(
18752                                    serde::de::Error::duplicate_field("ipv4Gateway"),
18753                                );
18754                            }
18755                            ipv4_gateway__ = Some(map_.next_value()?);
18756                        }
18757                        GeneratedField::Ipv6Gateway => {
18758                            if ipv6_gateway__.is_some() {
18759                                return Err(
18760                                    serde::de::Error::duplicate_field("ipv6Gateway"),
18761                                );
18762                            }
18763                            ipv6_gateway__ = Some(map_.next_value()?);
18764                        }
18765                        GeneratedField::Ipv4DnsServers => {
18766                            if ipv4_dns_servers__.is_some() {
18767                                return Err(
18768                                    serde::de::Error::duplicate_field("ipv4DnsServers"),
18769                                );
18770                            }
18771                            ipv4_dns_servers__ = Some(map_.next_value()?);
18772                        }
18773                        GeneratedField::Ipv6DnsServers => {
18774                            if ipv6_dns_servers__.is_some() {
18775                                return Err(
18776                                    serde::de::Error::duplicate_field("ipv6DnsServers"),
18777                                );
18778                            }
18779                            ipv6_dns_servers__ = Some(map_.next_value()?);
18780                        }
18781                        GeneratedField::AvailableIpv4AddressCount => {
18782                            if available_ipv4_address_count__.is_some() {
18783                                return Err(
18784                                    serde::de::Error::duplicate_field(
18785                                        "availableIpv4AddressCount",
18786                                    ),
18787                                );
18788                            }
18789                            available_ipv4_address_count__ = Some(
18790                                map_
18791                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18792                                    .0,
18793                            );
18794                        }
18795                        GeneratedField::CreateTime => {
18796                            if create_time__.is_some() {
18797                                return Err(serde::de::Error::duplicate_field("createTime"));
18798                            }
18799                            create_time__ = map_.next_value()?;
18800                        }
18801                        GeneratedField::Creator => {
18802                            if creator__.is_some() {
18803                                return Err(serde::de::Error::duplicate_field("creator"));
18804                            }
18805                            creator__ = Some(map_.next_value()?);
18806                        }
18807                        GeneratedField::Tags => {
18808                            if tags__.is_some() {
18809                                return Err(serde::de::Error::duplicate_field("tags"));
18810                            }
18811                            tags__ = Some(
18812                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
18813                            );
18814                        }
18815                        GeneratedField::__SkipField__ => {
18816                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18817                        }
18818                    }
18819                }
18820                Ok(Subnet {
18821                    name: name__.unwrap_or_default(),
18822                    urn: urn__.unwrap_or_default(),
18823                    vpc: vpc__.unwrap_or_default(),
18824                    route_table: route_table__.unwrap_or_default(),
18825                    acl: acl__.unwrap_or_default(),
18826                    auto_assign_public_ip: auto_assign_public_ip__.unwrap_or_default(),
18827                    ipv4_cidr_block: ipv4_cidr_block__.unwrap_or_default(),
18828                    ipv6_cidr_block: ipv6_cidr_block__.unwrap_or_default(),
18829                    ipv4_gateway: ipv4_gateway__.unwrap_or_default(),
18830                    ipv6_gateway: ipv6_gateway__.unwrap_or_default(),
18831                    ipv4_dns_servers: ipv4_dns_servers__.unwrap_or_default(),
18832                    ipv6_dns_servers: ipv6_dns_servers__.unwrap_or_default(),
18833                    available_ipv4_address_count: available_ipv4_address_count__
18834                        .unwrap_or_default(),
18835                    create_time: create_time__,
18836                    creator: creator__.unwrap_or_default(),
18837                    tags: tags__.unwrap_or_default(),
18838                })
18839            }
18840        }
18841        deserializer
18842            .deserialize_struct(
18843                "origincloud.network.v1beta1.Subnet",
18844                FIELDS,
18845                GeneratedVisitor,
18846            )
18847    }
18848}
18849impl serde::Serialize for UpdateAclRequest {
18850    #[allow(deprecated)]
18851    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18852    where
18853        S: serde::Serializer,
18854    {
18855        use serde::ser::SerializeStruct;
18856        let mut len = 0;
18857        if self.acl.is_some() {
18858            len += 1;
18859        }
18860        if self.update_mask.is_some() {
18861            len += 1;
18862        }
18863        if !self.request_id.is_empty() {
18864            len += 1;
18865        }
18866        let mut struct_ser = serializer
18867            .serialize_struct("origincloud.network.v1beta1.UpdateAclRequest", len)?;
18868        if let Some(v) = self.acl.as_ref() {
18869            struct_ser.serialize_field("acl", v)?;
18870        }
18871        if let Some(v) = self.update_mask.as_ref() {
18872            struct_ser.serialize_field("updateMask", v)?;
18873        }
18874        if !self.request_id.is_empty() {
18875            struct_ser.serialize_field("requestId", &self.request_id)?;
18876        }
18877        struct_ser.end()
18878    }
18879}
18880impl<'de> serde::Deserialize<'de> for UpdateAclRequest {
18881    #[allow(deprecated)]
18882    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18883    where
18884        D: serde::Deserializer<'de>,
18885    {
18886        const FIELDS: &[&str] = &[
18887            "acl",
18888            "update_mask",
18889            "updateMask",
18890            "request_id",
18891            "requestId",
18892        ];
18893        #[allow(clippy::enum_variant_names)]
18894        enum GeneratedField {
18895            Acl,
18896            UpdateMask,
18897            RequestId,
18898            __SkipField__,
18899        }
18900        impl<'de> serde::Deserialize<'de> for GeneratedField {
18901            fn deserialize<D>(
18902                deserializer: D,
18903            ) -> std::result::Result<GeneratedField, D::Error>
18904            where
18905                D: serde::Deserializer<'de>,
18906            {
18907                struct GeneratedVisitor;
18908                impl serde::de::Visitor<'_> for GeneratedVisitor {
18909                    type Value = GeneratedField;
18910                    fn expecting(
18911                        &self,
18912                        formatter: &mut std::fmt::Formatter<'_>,
18913                    ) -> std::fmt::Result {
18914                        write!(formatter, "expected one of: {:?}", & FIELDS)
18915                    }
18916                    #[allow(unused_variables)]
18917                    fn visit_str<E>(
18918                        self,
18919                        value: &str,
18920                    ) -> std::result::Result<GeneratedField, E>
18921                    where
18922                        E: serde::de::Error,
18923                    {
18924                        match value {
18925                            "acl" => Ok(GeneratedField::Acl),
18926                            "updateMask" | "update_mask" => {
18927                                Ok(GeneratedField::UpdateMask)
18928                            }
18929                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
18930                            _ => Ok(GeneratedField::__SkipField__),
18931                        }
18932                    }
18933                }
18934                deserializer.deserialize_identifier(GeneratedVisitor)
18935            }
18936        }
18937        struct GeneratedVisitor;
18938        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18939            type Value = UpdateAclRequest;
18940            fn expecting(
18941                &self,
18942                formatter: &mut std::fmt::Formatter<'_>,
18943            ) -> std::fmt::Result {
18944                formatter
18945                    .write_str("struct origincloud.network.v1beta1.UpdateAclRequest")
18946            }
18947            fn visit_map<V>(
18948                self,
18949                mut map_: V,
18950            ) -> std::result::Result<UpdateAclRequest, V::Error>
18951            where
18952                V: serde::de::MapAccess<'de>,
18953            {
18954                let mut acl__ = None;
18955                let mut update_mask__ = None;
18956                let mut request_id__ = None;
18957                while let Some(k) = map_.next_key()? {
18958                    match k {
18959                        GeneratedField::Acl => {
18960                            if acl__.is_some() {
18961                                return Err(serde::de::Error::duplicate_field("acl"));
18962                            }
18963                            acl__ = map_.next_value()?;
18964                        }
18965                        GeneratedField::UpdateMask => {
18966                            if update_mask__.is_some() {
18967                                return Err(serde::de::Error::duplicate_field("updateMask"));
18968                            }
18969                            update_mask__ = map_.next_value()?;
18970                        }
18971                        GeneratedField::RequestId => {
18972                            if request_id__.is_some() {
18973                                return Err(serde::de::Error::duplicate_field("requestId"));
18974                            }
18975                            request_id__ = Some(map_.next_value()?);
18976                        }
18977                        GeneratedField::__SkipField__ => {
18978                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18979                        }
18980                    }
18981                }
18982                Ok(UpdateAclRequest {
18983                    acl: acl__,
18984                    update_mask: update_mask__,
18985                    request_id: request_id__.unwrap_or_default(),
18986                })
18987            }
18988        }
18989        deserializer
18990            .deserialize_struct(
18991                "origincloud.network.v1beta1.UpdateAclRequest",
18992                FIELDS,
18993                GeneratedVisitor,
18994            )
18995    }
18996}
18997impl serde::Serialize for UpdateDnsPolicyRequest {
18998    #[allow(deprecated)]
18999    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19000    where
19001        S: serde::Serializer,
19002    {
19003        use serde::ser::SerializeStruct;
19004        let mut len = 0;
19005        if self.dns_policy.is_some() {
19006            len += 1;
19007        }
19008        if self.update_mask.is_some() {
19009            len += 1;
19010        }
19011        if !self.request_id.is_empty() {
19012            len += 1;
19013        }
19014        let mut struct_ser = serializer
19015            .serialize_struct(
19016                "origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19017                len,
19018            )?;
19019        if let Some(v) = self.dns_policy.as_ref() {
19020            struct_ser.serialize_field("dnsPolicy", v)?;
19021        }
19022        if let Some(v) = self.update_mask.as_ref() {
19023            struct_ser.serialize_field("updateMask", v)?;
19024        }
19025        if !self.request_id.is_empty() {
19026            struct_ser.serialize_field("requestId", &self.request_id)?;
19027        }
19028        struct_ser.end()
19029    }
19030}
19031impl<'de> serde::Deserialize<'de> for UpdateDnsPolicyRequest {
19032    #[allow(deprecated)]
19033    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19034    where
19035        D: serde::Deserializer<'de>,
19036    {
19037        const FIELDS: &[&str] = &[
19038            "dns_policy",
19039            "dnsPolicy",
19040            "update_mask",
19041            "updateMask",
19042            "request_id",
19043            "requestId",
19044        ];
19045        #[allow(clippy::enum_variant_names)]
19046        enum GeneratedField {
19047            DnsPolicy,
19048            UpdateMask,
19049            RequestId,
19050            __SkipField__,
19051        }
19052        impl<'de> serde::Deserialize<'de> for GeneratedField {
19053            fn deserialize<D>(
19054                deserializer: D,
19055            ) -> std::result::Result<GeneratedField, D::Error>
19056            where
19057                D: serde::Deserializer<'de>,
19058            {
19059                struct GeneratedVisitor;
19060                impl serde::de::Visitor<'_> for GeneratedVisitor {
19061                    type Value = GeneratedField;
19062                    fn expecting(
19063                        &self,
19064                        formatter: &mut std::fmt::Formatter<'_>,
19065                    ) -> std::fmt::Result {
19066                        write!(formatter, "expected one of: {:?}", & FIELDS)
19067                    }
19068                    #[allow(unused_variables)]
19069                    fn visit_str<E>(
19070                        self,
19071                        value: &str,
19072                    ) -> std::result::Result<GeneratedField, E>
19073                    where
19074                        E: serde::de::Error,
19075                    {
19076                        match value {
19077                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
19078                            "updateMask" | "update_mask" => {
19079                                Ok(GeneratedField::UpdateMask)
19080                            }
19081                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19082                            _ => Ok(GeneratedField::__SkipField__),
19083                        }
19084                    }
19085                }
19086                deserializer.deserialize_identifier(GeneratedVisitor)
19087            }
19088        }
19089        struct GeneratedVisitor;
19090        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19091            type Value = UpdateDnsPolicyRequest;
19092            fn expecting(
19093                &self,
19094                formatter: &mut std::fmt::Formatter<'_>,
19095            ) -> std::fmt::Result {
19096                formatter
19097                    .write_str(
19098                        "struct origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19099                    )
19100            }
19101            fn visit_map<V>(
19102                self,
19103                mut map_: V,
19104            ) -> std::result::Result<UpdateDnsPolicyRequest, V::Error>
19105            where
19106                V: serde::de::MapAccess<'de>,
19107            {
19108                let mut dns_policy__ = None;
19109                let mut update_mask__ = None;
19110                let mut request_id__ = None;
19111                while let Some(k) = map_.next_key()? {
19112                    match k {
19113                        GeneratedField::DnsPolicy => {
19114                            if dns_policy__.is_some() {
19115                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
19116                            }
19117                            dns_policy__ = map_.next_value()?;
19118                        }
19119                        GeneratedField::UpdateMask => {
19120                            if update_mask__.is_some() {
19121                                return Err(serde::de::Error::duplicate_field("updateMask"));
19122                            }
19123                            update_mask__ = map_.next_value()?;
19124                        }
19125                        GeneratedField::RequestId => {
19126                            if request_id__.is_some() {
19127                                return Err(serde::de::Error::duplicate_field("requestId"));
19128                            }
19129                            request_id__ = Some(map_.next_value()?);
19130                        }
19131                        GeneratedField::__SkipField__ => {
19132                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19133                        }
19134                    }
19135                }
19136                Ok(UpdateDnsPolicyRequest {
19137                    dns_policy: dns_policy__,
19138                    update_mask: update_mask__,
19139                    request_id: request_id__.unwrap_or_default(),
19140                })
19141            }
19142        }
19143        deserializer
19144            .deserialize_struct(
19145                "origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19146                FIELDS,
19147                GeneratedVisitor,
19148            )
19149    }
19150}
19151impl serde::Serialize for UpdateFloatingIpRequest {
19152    #[allow(deprecated)]
19153    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19154    where
19155        S: serde::Serializer,
19156    {
19157        use serde::ser::SerializeStruct;
19158        let mut len = 0;
19159        if self.floating_ip.is_some() {
19160            len += 1;
19161        }
19162        if self.update_mask.is_some() {
19163            len += 1;
19164        }
19165        if !self.request_id.is_empty() {
19166            len += 1;
19167        }
19168        let mut struct_ser = serializer
19169            .serialize_struct(
19170                "origincloud.network.v1beta1.UpdateFloatingIpRequest",
19171                len,
19172            )?;
19173        if let Some(v) = self.floating_ip.as_ref() {
19174            struct_ser.serialize_field("floatingIp", v)?;
19175        }
19176        if let Some(v) = self.update_mask.as_ref() {
19177            struct_ser.serialize_field("updateMask", v)?;
19178        }
19179        if !self.request_id.is_empty() {
19180            struct_ser.serialize_field("requestId", &self.request_id)?;
19181        }
19182        struct_ser.end()
19183    }
19184}
19185impl<'de> serde::Deserialize<'de> for UpdateFloatingIpRequest {
19186    #[allow(deprecated)]
19187    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19188    where
19189        D: serde::Deserializer<'de>,
19190    {
19191        const FIELDS: &[&str] = &[
19192            "floating_ip",
19193            "floatingIp",
19194            "update_mask",
19195            "updateMask",
19196            "request_id",
19197            "requestId",
19198        ];
19199        #[allow(clippy::enum_variant_names)]
19200        enum GeneratedField {
19201            FloatingIp,
19202            UpdateMask,
19203            RequestId,
19204            __SkipField__,
19205        }
19206        impl<'de> serde::Deserialize<'de> for GeneratedField {
19207            fn deserialize<D>(
19208                deserializer: D,
19209            ) -> std::result::Result<GeneratedField, D::Error>
19210            where
19211                D: serde::Deserializer<'de>,
19212            {
19213                struct GeneratedVisitor;
19214                impl serde::de::Visitor<'_> for GeneratedVisitor {
19215                    type Value = GeneratedField;
19216                    fn expecting(
19217                        &self,
19218                        formatter: &mut std::fmt::Formatter<'_>,
19219                    ) -> std::fmt::Result {
19220                        write!(formatter, "expected one of: {:?}", & FIELDS)
19221                    }
19222                    #[allow(unused_variables)]
19223                    fn visit_str<E>(
19224                        self,
19225                        value: &str,
19226                    ) -> std::result::Result<GeneratedField, E>
19227                    where
19228                        E: serde::de::Error,
19229                    {
19230                        match value {
19231                            "floatingIp" | "floating_ip" => {
19232                                Ok(GeneratedField::FloatingIp)
19233                            }
19234                            "updateMask" | "update_mask" => {
19235                                Ok(GeneratedField::UpdateMask)
19236                            }
19237                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19238                            _ => Ok(GeneratedField::__SkipField__),
19239                        }
19240                    }
19241                }
19242                deserializer.deserialize_identifier(GeneratedVisitor)
19243            }
19244        }
19245        struct GeneratedVisitor;
19246        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19247            type Value = UpdateFloatingIpRequest;
19248            fn expecting(
19249                &self,
19250                formatter: &mut std::fmt::Formatter<'_>,
19251            ) -> std::fmt::Result {
19252                formatter
19253                    .write_str(
19254                        "struct origincloud.network.v1beta1.UpdateFloatingIpRequest",
19255                    )
19256            }
19257            fn visit_map<V>(
19258                self,
19259                mut map_: V,
19260            ) -> std::result::Result<UpdateFloatingIpRequest, V::Error>
19261            where
19262                V: serde::de::MapAccess<'de>,
19263            {
19264                let mut floating_ip__ = None;
19265                let mut update_mask__ = None;
19266                let mut request_id__ = None;
19267                while let Some(k) = map_.next_key()? {
19268                    match k {
19269                        GeneratedField::FloatingIp => {
19270                            if floating_ip__.is_some() {
19271                                return Err(serde::de::Error::duplicate_field("floatingIp"));
19272                            }
19273                            floating_ip__ = map_.next_value()?;
19274                        }
19275                        GeneratedField::UpdateMask => {
19276                            if update_mask__.is_some() {
19277                                return Err(serde::de::Error::duplicate_field("updateMask"));
19278                            }
19279                            update_mask__ = map_.next_value()?;
19280                        }
19281                        GeneratedField::RequestId => {
19282                            if request_id__.is_some() {
19283                                return Err(serde::de::Error::duplicate_field("requestId"));
19284                            }
19285                            request_id__ = Some(map_.next_value()?);
19286                        }
19287                        GeneratedField::__SkipField__ => {
19288                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19289                        }
19290                    }
19291                }
19292                Ok(UpdateFloatingIpRequest {
19293                    floating_ip: floating_ip__,
19294                    update_mask: update_mask__,
19295                    request_id: request_id__.unwrap_or_default(),
19296                })
19297            }
19298        }
19299        deserializer
19300            .deserialize_struct(
19301                "origincloud.network.v1beta1.UpdateFloatingIpRequest",
19302                FIELDS,
19303                GeneratedVisitor,
19304            )
19305    }
19306}
19307impl serde::Serialize for UpdateInternetGatewayRequest {
19308    #[allow(deprecated)]
19309    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19310    where
19311        S: serde::Serializer,
19312    {
19313        use serde::ser::SerializeStruct;
19314        let mut len = 0;
19315        if self.internet_gateway.is_some() {
19316            len += 1;
19317        }
19318        if self.update_mask.is_some() {
19319            len += 1;
19320        }
19321        if !self.request_id.is_empty() {
19322            len += 1;
19323        }
19324        let mut struct_ser = serializer
19325            .serialize_struct(
19326                "origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19327                len,
19328            )?;
19329        if let Some(v) = self.internet_gateway.as_ref() {
19330            struct_ser.serialize_field("internetGateway", v)?;
19331        }
19332        if let Some(v) = self.update_mask.as_ref() {
19333            struct_ser.serialize_field("updateMask", v)?;
19334        }
19335        if !self.request_id.is_empty() {
19336            struct_ser.serialize_field("requestId", &self.request_id)?;
19337        }
19338        struct_ser.end()
19339    }
19340}
19341impl<'de> serde::Deserialize<'de> for UpdateInternetGatewayRequest {
19342    #[allow(deprecated)]
19343    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19344    where
19345        D: serde::Deserializer<'de>,
19346    {
19347        const FIELDS: &[&str] = &[
19348            "internet_gateway",
19349            "internetGateway",
19350            "update_mask",
19351            "updateMask",
19352            "request_id",
19353            "requestId",
19354        ];
19355        #[allow(clippy::enum_variant_names)]
19356        enum GeneratedField {
19357            InternetGateway,
19358            UpdateMask,
19359            RequestId,
19360            __SkipField__,
19361        }
19362        impl<'de> serde::Deserialize<'de> for GeneratedField {
19363            fn deserialize<D>(
19364                deserializer: D,
19365            ) -> std::result::Result<GeneratedField, D::Error>
19366            where
19367                D: serde::Deserializer<'de>,
19368            {
19369                struct GeneratedVisitor;
19370                impl serde::de::Visitor<'_> for GeneratedVisitor {
19371                    type Value = GeneratedField;
19372                    fn expecting(
19373                        &self,
19374                        formatter: &mut std::fmt::Formatter<'_>,
19375                    ) -> std::fmt::Result {
19376                        write!(formatter, "expected one of: {:?}", & FIELDS)
19377                    }
19378                    #[allow(unused_variables)]
19379                    fn visit_str<E>(
19380                        self,
19381                        value: &str,
19382                    ) -> std::result::Result<GeneratedField, E>
19383                    where
19384                        E: serde::de::Error,
19385                    {
19386                        match value {
19387                            "internetGateway" | "internet_gateway" => {
19388                                Ok(GeneratedField::InternetGateway)
19389                            }
19390                            "updateMask" | "update_mask" => {
19391                                Ok(GeneratedField::UpdateMask)
19392                            }
19393                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19394                            _ => Ok(GeneratedField::__SkipField__),
19395                        }
19396                    }
19397                }
19398                deserializer.deserialize_identifier(GeneratedVisitor)
19399            }
19400        }
19401        struct GeneratedVisitor;
19402        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19403            type Value = UpdateInternetGatewayRequest;
19404            fn expecting(
19405                &self,
19406                formatter: &mut std::fmt::Formatter<'_>,
19407            ) -> std::fmt::Result {
19408                formatter
19409                    .write_str(
19410                        "struct origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19411                    )
19412            }
19413            fn visit_map<V>(
19414                self,
19415                mut map_: V,
19416            ) -> std::result::Result<UpdateInternetGatewayRequest, V::Error>
19417            where
19418                V: serde::de::MapAccess<'de>,
19419            {
19420                let mut internet_gateway__ = None;
19421                let mut update_mask__ = None;
19422                let mut request_id__ = None;
19423                while let Some(k) = map_.next_key()? {
19424                    match k {
19425                        GeneratedField::InternetGateway => {
19426                            if internet_gateway__.is_some() {
19427                                return Err(
19428                                    serde::de::Error::duplicate_field("internetGateway"),
19429                                );
19430                            }
19431                            internet_gateway__ = map_.next_value()?;
19432                        }
19433                        GeneratedField::UpdateMask => {
19434                            if update_mask__.is_some() {
19435                                return Err(serde::de::Error::duplicate_field("updateMask"));
19436                            }
19437                            update_mask__ = map_.next_value()?;
19438                        }
19439                        GeneratedField::RequestId => {
19440                            if request_id__.is_some() {
19441                                return Err(serde::de::Error::duplicate_field("requestId"));
19442                            }
19443                            request_id__ = Some(map_.next_value()?);
19444                        }
19445                        GeneratedField::__SkipField__ => {
19446                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19447                        }
19448                    }
19449                }
19450                Ok(UpdateInternetGatewayRequest {
19451                    internet_gateway: internet_gateway__,
19452                    update_mask: update_mask__,
19453                    request_id: request_id__.unwrap_or_default(),
19454                })
19455            }
19456        }
19457        deserializer
19458            .deserialize_struct(
19459                "origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19460                FIELDS,
19461                GeneratedVisitor,
19462            )
19463    }
19464}
19465impl serde::Serialize for UpdateNatGatewayRequest {
19466    #[allow(deprecated)]
19467    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19468    where
19469        S: serde::Serializer,
19470    {
19471        use serde::ser::SerializeStruct;
19472        let mut len = 0;
19473        if self.nat_gateway.is_some() {
19474            len += 1;
19475        }
19476        if self.update_mask.is_some() {
19477            len += 1;
19478        }
19479        if !self.request_id.is_empty() {
19480            len += 1;
19481        }
19482        let mut struct_ser = serializer
19483            .serialize_struct(
19484                "origincloud.network.v1beta1.UpdateNatGatewayRequest",
19485                len,
19486            )?;
19487        if let Some(v) = self.nat_gateway.as_ref() {
19488            struct_ser.serialize_field("natGateway", v)?;
19489        }
19490        if let Some(v) = self.update_mask.as_ref() {
19491            struct_ser.serialize_field("updateMask", v)?;
19492        }
19493        if !self.request_id.is_empty() {
19494            struct_ser.serialize_field("requestId", &self.request_id)?;
19495        }
19496        struct_ser.end()
19497    }
19498}
19499impl<'de> serde::Deserialize<'de> for UpdateNatGatewayRequest {
19500    #[allow(deprecated)]
19501    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19502    where
19503        D: serde::Deserializer<'de>,
19504    {
19505        const FIELDS: &[&str] = &[
19506            "nat_gateway",
19507            "natGateway",
19508            "update_mask",
19509            "updateMask",
19510            "request_id",
19511            "requestId",
19512        ];
19513        #[allow(clippy::enum_variant_names)]
19514        enum GeneratedField {
19515            NatGateway,
19516            UpdateMask,
19517            RequestId,
19518            __SkipField__,
19519        }
19520        impl<'de> serde::Deserialize<'de> for GeneratedField {
19521            fn deserialize<D>(
19522                deserializer: D,
19523            ) -> std::result::Result<GeneratedField, D::Error>
19524            where
19525                D: serde::Deserializer<'de>,
19526            {
19527                struct GeneratedVisitor;
19528                impl serde::de::Visitor<'_> for GeneratedVisitor {
19529                    type Value = GeneratedField;
19530                    fn expecting(
19531                        &self,
19532                        formatter: &mut std::fmt::Formatter<'_>,
19533                    ) -> std::fmt::Result {
19534                        write!(formatter, "expected one of: {:?}", & FIELDS)
19535                    }
19536                    #[allow(unused_variables)]
19537                    fn visit_str<E>(
19538                        self,
19539                        value: &str,
19540                    ) -> std::result::Result<GeneratedField, E>
19541                    where
19542                        E: serde::de::Error,
19543                    {
19544                        match value {
19545                            "natGateway" | "nat_gateway" => {
19546                                Ok(GeneratedField::NatGateway)
19547                            }
19548                            "updateMask" | "update_mask" => {
19549                                Ok(GeneratedField::UpdateMask)
19550                            }
19551                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19552                            _ => Ok(GeneratedField::__SkipField__),
19553                        }
19554                    }
19555                }
19556                deserializer.deserialize_identifier(GeneratedVisitor)
19557            }
19558        }
19559        struct GeneratedVisitor;
19560        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19561            type Value = UpdateNatGatewayRequest;
19562            fn expecting(
19563                &self,
19564                formatter: &mut std::fmt::Formatter<'_>,
19565            ) -> std::fmt::Result {
19566                formatter
19567                    .write_str(
19568                        "struct origincloud.network.v1beta1.UpdateNatGatewayRequest",
19569                    )
19570            }
19571            fn visit_map<V>(
19572                self,
19573                mut map_: V,
19574            ) -> std::result::Result<UpdateNatGatewayRequest, V::Error>
19575            where
19576                V: serde::de::MapAccess<'de>,
19577            {
19578                let mut nat_gateway__ = None;
19579                let mut update_mask__ = None;
19580                let mut request_id__ = None;
19581                while let Some(k) = map_.next_key()? {
19582                    match k {
19583                        GeneratedField::NatGateway => {
19584                            if nat_gateway__.is_some() {
19585                                return Err(serde::de::Error::duplicate_field("natGateway"));
19586                            }
19587                            nat_gateway__ = map_.next_value()?;
19588                        }
19589                        GeneratedField::UpdateMask => {
19590                            if update_mask__.is_some() {
19591                                return Err(serde::de::Error::duplicate_field("updateMask"));
19592                            }
19593                            update_mask__ = map_.next_value()?;
19594                        }
19595                        GeneratedField::RequestId => {
19596                            if request_id__.is_some() {
19597                                return Err(serde::de::Error::duplicate_field("requestId"));
19598                            }
19599                            request_id__ = Some(map_.next_value()?);
19600                        }
19601                        GeneratedField::__SkipField__ => {
19602                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19603                        }
19604                    }
19605                }
19606                Ok(UpdateNatGatewayRequest {
19607                    nat_gateway: nat_gateway__,
19608                    update_mask: update_mask__,
19609                    request_id: request_id__.unwrap_or_default(),
19610                })
19611            }
19612        }
19613        deserializer
19614            .deserialize_struct(
19615                "origincloud.network.v1beta1.UpdateNatGatewayRequest",
19616                FIELDS,
19617                GeneratedVisitor,
19618            )
19619    }
19620}
19621impl serde::Serialize for UpdateNetworkInterfaceRequest {
19622    #[allow(deprecated)]
19623    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19624    where
19625        S: serde::Serializer,
19626    {
19627        use serde::ser::SerializeStruct;
19628        let mut len = 0;
19629        if self.network_interface.is_some() {
19630            len += 1;
19631        }
19632        if self.update_mask.is_some() {
19633            len += 1;
19634        }
19635        if !self.request_id.is_empty() {
19636            len += 1;
19637        }
19638        let mut struct_ser = serializer
19639            .serialize_struct(
19640                "origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19641                len,
19642            )?;
19643        if let Some(v) = self.network_interface.as_ref() {
19644            struct_ser.serialize_field("networkInterface", v)?;
19645        }
19646        if let Some(v) = self.update_mask.as_ref() {
19647            struct_ser.serialize_field("updateMask", v)?;
19648        }
19649        if !self.request_id.is_empty() {
19650            struct_ser.serialize_field("requestId", &self.request_id)?;
19651        }
19652        struct_ser.end()
19653    }
19654}
19655impl<'de> serde::Deserialize<'de> for UpdateNetworkInterfaceRequest {
19656    #[allow(deprecated)]
19657    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19658    where
19659        D: serde::Deserializer<'de>,
19660    {
19661        const FIELDS: &[&str] = &[
19662            "network_interface",
19663            "networkInterface",
19664            "update_mask",
19665            "updateMask",
19666            "request_id",
19667            "requestId",
19668        ];
19669        #[allow(clippy::enum_variant_names)]
19670        enum GeneratedField {
19671            NetworkInterface,
19672            UpdateMask,
19673            RequestId,
19674            __SkipField__,
19675        }
19676        impl<'de> serde::Deserialize<'de> for GeneratedField {
19677            fn deserialize<D>(
19678                deserializer: D,
19679            ) -> std::result::Result<GeneratedField, D::Error>
19680            where
19681                D: serde::Deserializer<'de>,
19682            {
19683                struct GeneratedVisitor;
19684                impl serde::de::Visitor<'_> for GeneratedVisitor {
19685                    type Value = GeneratedField;
19686                    fn expecting(
19687                        &self,
19688                        formatter: &mut std::fmt::Formatter<'_>,
19689                    ) -> std::fmt::Result {
19690                        write!(formatter, "expected one of: {:?}", & FIELDS)
19691                    }
19692                    #[allow(unused_variables)]
19693                    fn visit_str<E>(
19694                        self,
19695                        value: &str,
19696                    ) -> std::result::Result<GeneratedField, E>
19697                    where
19698                        E: serde::de::Error,
19699                    {
19700                        match value {
19701                            "networkInterface" | "network_interface" => {
19702                                Ok(GeneratedField::NetworkInterface)
19703                            }
19704                            "updateMask" | "update_mask" => {
19705                                Ok(GeneratedField::UpdateMask)
19706                            }
19707                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19708                            _ => Ok(GeneratedField::__SkipField__),
19709                        }
19710                    }
19711                }
19712                deserializer.deserialize_identifier(GeneratedVisitor)
19713            }
19714        }
19715        struct GeneratedVisitor;
19716        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19717            type Value = UpdateNetworkInterfaceRequest;
19718            fn expecting(
19719                &self,
19720                formatter: &mut std::fmt::Formatter<'_>,
19721            ) -> std::fmt::Result {
19722                formatter
19723                    .write_str(
19724                        "struct origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19725                    )
19726            }
19727            fn visit_map<V>(
19728                self,
19729                mut map_: V,
19730            ) -> std::result::Result<UpdateNetworkInterfaceRequest, V::Error>
19731            where
19732                V: serde::de::MapAccess<'de>,
19733            {
19734                let mut network_interface__ = None;
19735                let mut update_mask__ = None;
19736                let mut request_id__ = None;
19737                while let Some(k) = map_.next_key()? {
19738                    match k {
19739                        GeneratedField::NetworkInterface => {
19740                            if network_interface__.is_some() {
19741                                return Err(
19742                                    serde::de::Error::duplicate_field("networkInterface"),
19743                                );
19744                            }
19745                            network_interface__ = map_.next_value()?;
19746                        }
19747                        GeneratedField::UpdateMask => {
19748                            if update_mask__.is_some() {
19749                                return Err(serde::de::Error::duplicate_field("updateMask"));
19750                            }
19751                            update_mask__ = map_.next_value()?;
19752                        }
19753                        GeneratedField::RequestId => {
19754                            if request_id__.is_some() {
19755                                return Err(serde::de::Error::duplicate_field("requestId"));
19756                            }
19757                            request_id__ = Some(map_.next_value()?);
19758                        }
19759                        GeneratedField::__SkipField__ => {
19760                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19761                        }
19762                    }
19763                }
19764                Ok(UpdateNetworkInterfaceRequest {
19765                    network_interface: network_interface__,
19766                    update_mask: update_mask__,
19767                    request_id: request_id__.unwrap_or_default(),
19768                })
19769            }
19770        }
19771        deserializer
19772            .deserialize_struct(
19773                "origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19774                FIELDS,
19775                GeneratedVisitor,
19776            )
19777    }
19778}
19779impl serde::Serialize for UpdateRouteTableRequest {
19780    #[allow(deprecated)]
19781    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19782    where
19783        S: serde::Serializer,
19784    {
19785        use serde::ser::SerializeStruct;
19786        let mut len = 0;
19787        if self.route_table.is_some() {
19788            len += 1;
19789        }
19790        if self.update_mask.is_some() {
19791            len += 1;
19792        }
19793        if !self.request_id.is_empty() {
19794            len += 1;
19795        }
19796        let mut struct_ser = serializer
19797            .serialize_struct(
19798                "origincloud.network.v1beta1.UpdateRouteTableRequest",
19799                len,
19800            )?;
19801        if let Some(v) = self.route_table.as_ref() {
19802            struct_ser.serialize_field("routeTable", v)?;
19803        }
19804        if let Some(v) = self.update_mask.as_ref() {
19805            struct_ser.serialize_field("updateMask", v)?;
19806        }
19807        if !self.request_id.is_empty() {
19808            struct_ser.serialize_field("requestId", &self.request_id)?;
19809        }
19810        struct_ser.end()
19811    }
19812}
19813impl<'de> serde::Deserialize<'de> for UpdateRouteTableRequest {
19814    #[allow(deprecated)]
19815    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19816    where
19817        D: serde::Deserializer<'de>,
19818    {
19819        const FIELDS: &[&str] = &[
19820            "route_table",
19821            "routeTable",
19822            "update_mask",
19823            "updateMask",
19824            "request_id",
19825            "requestId",
19826        ];
19827        #[allow(clippy::enum_variant_names)]
19828        enum GeneratedField {
19829            RouteTable,
19830            UpdateMask,
19831            RequestId,
19832            __SkipField__,
19833        }
19834        impl<'de> serde::Deserialize<'de> for GeneratedField {
19835            fn deserialize<D>(
19836                deserializer: D,
19837            ) -> std::result::Result<GeneratedField, D::Error>
19838            where
19839                D: serde::Deserializer<'de>,
19840            {
19841                struct GeneratedVisitor;
19842                impl serde::de::Visitor<'_> for GeneratedVisitor {
19843                    type Value = GeneratedField;
19844                    fn expecting(
19845                        &self,
19846                        formatter: &mut std::fmt::Formatter<'_>,
19847                    ) -> std::fmt::Result {
19848                        write!(formatter, "expected one of: {:?}", & FIELDS)
19849                    }
19850                    #[allow(unused_variables)]
19851                    fn visit_str<E>(
19852                        self,
19853                        value: &str,
19854                    ) -> std::result::Result<GeneratedField, E>
19855                    where
19856                        E: serde::de::Error,
19857                    {
19858                        match value {
19859                            "routeTable" | "route_table" => {
19860                                Ok(GeneratedField::RouteTable)
19861                            }
19862                            "updateMask" | "update_mask" => {
19863                                Ok(GeneratedField::UpdateMask)
19864                            }
19865                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19866                            _ => Ok(GeneratedField::__SkipField__),
19867                        }
19868                    }
19869                }
19870                deserializer.deserialize_identifier(GeneratedVisitor)
19871            }
19872        }
19873        struct GeneratedVisitor;
19874        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19875            type Value = UpdateRouteTableRequest;
19876            fn expecting(
19877                &self,
19878                formatter: &mut std::fmt::Formatter<'_>,
19879            ) -> std::fmt::Result {
19880                formatter
19881                    .write_str(
19882                        "struct origincloud.network.v1beta1.UpdateRouteTableRequest",
19883                    )
19884            }
19885            fn visit_map<V>(
19886                self,
19887                mut map_: V,
19888            ) -> std::result::Result<UpdateRouteTableRequest, V::Error>
19889            where
19890                V: serde::de::MapAccess<'de>,
19891            {
19892                let mut route_table__ = None;
19893                let mut update_mask__ = None;
19894                let mut request_id__ = None;
19895                while let Some(k) = map_.next_key()? {
19896                    match k {
19897                        GeneratedField::RouteTable => {
19898                            if route_table__.is_some() {
19899                                return Err(serde::de::Error::duplicate_field("routeTable"));
19900                            }
19901                            route_table__ = map_.next_value()?;
19902                        }
19903                        GeneratedField::UpdateMask => {
19904                            if update_mask__.is_some() {
19905                                return Err(serde::de::Error::duplicate_field("updateMask"));
19906                            }
19907                            update_mask__ = map_.next_value()?;
19908                        }
19909                        GeneratedField::RequestId => {
19910                            if request_id__.is_some() {
19911                                return Err(serde::de::Error::duplicate_field("requestId"));
19912                            }
19913                            request_id__ = Some(map_.next_value()?);
19914                        }
19915                        GeneratedField::__SkipField__ => {
19916                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19917                        }
19918                    }
19919                }
19920                Ok(UpdateRouteTableRequest {
19921                    route_table: route_table__,
19922                    update_mask: update_mask__,
19923                    request_id: request_id__.unwrap_or_default(),
19924                })
19925            }
19926        }
19927        deserializer
19928            .deserialize_struct(
19929                "origincloud.network.v1beta1.UpdateRouteTableRequest",
19930                FIELDS,
19931                GeneratedVisitor,
19932            )
19933    }
19934}
19935impl serde::Serialize for UpdateSecurityGroupRequest {
19936    #[allow(deprecated)]
19937    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19938    where
19939        S: serde::Serializer,
19940    {
19941        use serde::ser::SerializeStruct;
19942        let mut len = 0;
19943        if self.security_group.is_some() {
19944            len += 1;
19945        }
19946        if self.update_mask.is_some() {
19947            len += 1;
19948        }
19949        if !self.request_id.is_empty() {
19950            len += 1;
19951        }
19952        let mut struct_ser = serializer
19953            .serialize_struct(
19954                "origincloud.network.v1beta1.UpdateSecurityGroupRequest",
19955                len,
19956            )?;
19957        if let Some(v) = self.security_group.as_ref() {
19958            struct_ser.serialize_field("securityGroup", v)?;
19959        }
19960        if let Some(v) = self.update_mask.as_ref() {
19961            struct_ser.serialize_field("updateMask", v)?;
19962        }
19963        if !self.request_id.is_empty() {
19964            struct_ser.serialize_field("requestId", &self.request_id)?;
19965        }
19966        struct_ser.end()
19967    }
19968}
19969impl<'de> serde::Deserialize<'de> for UpdateSecurityGroupRequest {
19970    #[allow(deprecated)]
19971    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19972    where
19973        D: serde::Deserializer<'de>,
19974    {
19975        const FIELDS: &[&str] = &[
19976            "security_group",
19977            "securityGroup",
19978            "update_mask",
19979            "updateMask",
19980            "request_id",
19981            "requestId",
19982        ];
19983        #[allow(clippy::enum_variant_names)]
19984        enum GeneratedField {
19985            SecurityGroup,
19986            UpdateMask,
19987            RequestId,
19988            __SkipField__,
19989        }
19990        impl<'de> serde::Deserialize<'de> for GeneratedField {
19991            fn deserialize<D>(
19992                deserializer: D,
19993            ) -> std::result::Result<GeneratedField, D::Error>
19994            where
19995                D: serde::Deserializer<'de>,
19996            {
19997                struct GeneratedVisitor;
19998                impl serde::de::Visitor<'_> for GeneratedVisitor {
19999                    type Value = GeneratedField;
20000                    fn expecting(
20001                        &self,
20002                        formatter: &mut std::fmt::Formatter<'_>,
20003                    ) -> std::fmt::Result {
20004                        write!(formatter, "expected one of: {:?}", & FIELDS)
20005                    }
20006                    #[allow(unused_variables)]
20007                    fn visit_str<E>(
20008                        self,
20009                        value: &str,
20010                    ) -> std::result::Result<GeneratedField, E>
20011                    where
20012                        E: serde::de::Error,
20013                    {
20014                        match value {
20015                            "securityGroup" | "security_group" => {
20016                                Ok(GeneratedField::SecurityGroup)
20017                            }
20018                            "updateMask" | "update_mask" => {
20019                                Ok(GeneratedField::UpdateMask)
20020                            }
20021                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20022                            _ => Ok(GeneratedField::__SkipField__),
20023                        }
20024                    }
20025                }
20026                deserializer.deserialize_identifier(GeneratedVisitor)
20027            }
20028        }
20029        struct GeneratedVisitor;
20030        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20031            type Value = UpdateSecurityGroupRequest;
20032            fn expecting(
20033                &self,
20034                formatter: &mut std::fmt::Formatter<'_>,
20035            ) -> std::fmt::Result {
20036                formatter
20037                    .write_str(
20038                        "struct origincloud.network.v1beta1.UpdateSecurityGroupRequest",
20039                    )
20040            }
20041            fn visit_map<V>(
20042                self,
20043                mut map_: V,
20044            ) -> std::result::Result<UpdateSecurityGroupRequest, V::Error>
20045            where
20046                V: serde::de::MapAccess<'de>,
20047            {
20048                let mut security_group__ = None;
20049                let mut update_mask__ = None;
20050                let mut request_id__ = None;
20051                while let Some(k) = map_.next_key()? {
20052                    match k {
20053                        GeneratedField::SecurityGroup => {
20054                            if security_group__.is_some() {
20055                                return Err(
20056                                    serde::de::Error::duplicate_field("securityGroup"),
20057                                );
20058                            }
20059                            security_group__ = map_.next_value()?;
20060                        }
20061                        GeneratedField::UpdateMask => {
20062                            if update_mask__.is_some() {
20063                                return Err(serde::de::Error::duplicate_field("updateMask"));
20064                            }
20065                            update_mask__ = map_.next_value()?;
20066                        }
20067                        GeneratedField::RequestId => {
20068                            if request_id__.is_some() {
20069                                return Err(serde::de::Error::duplicate_field("requestId"));
20070                            }
20071                            request_id__ = Some(map_.next_value()?);
20072                        }
20073                        GeneratedField::__SkipField__ => {
20074                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20075                        }
20076                    }
20077                }
20078                Ok(UpdateSecurityGroupRequest {
20079                    security_group: security_group__,
20080                    update_mask: update_mask__,
20081                    request_id: request_id__.unwrap_or_default(),
20082                })
20083            }
20084        }
20085        deserializer
20086            .deserialize_struct(
20087                "origincloud.network.v1beta1.UpdateSecurityGroupRequest",
20088                FIELDS,
20089                GeneratedVisitor,
20090            )
20091    }
20092}
20093impl serde::Serialize for UpdateSubnetRequest {
20094    #[allow(deprecated)]
20095    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20096    where
20097        S: serde::Serializer,
20098    {
20099        use serde::ser::SerializeStruct;
20100        let mut len = 0;
20101        if self.subnet.is_some() {
20102            len += 1;
20103        }
20104        if self.update_mask.is_some() {
20105            len += 1;
20106        }
20107        if !self.request_id.is_empty() {
20108            len += 1;
20109        }
20110        let mut struct_ser = serializer
20111            .serialize_struct("origincloud.network.v1beta1.UpdateSubnetRequest", len)?;
20112        if let Some(v) = self.subnet.as_ref() {
20113            struct_ser.serialize_field("subnet", v)?;
20114        }
20115        if let Some(v) = self.update_mask.as_ref() {
20116            struct_ser.serialize_field("updateMask", v)?;
20117        }
20118        if !self.request_id.is_empty() {
20119            struct_ser.serialize_field("requestId", &self.request_id)?;
20120        }
20121        struct_ser.end()
20122    }
20123}
20124impl<'de> serde::Deserialize<'de> for UpdateSubnetRequest {
20125    #[allow(deprecated)]
20126    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20127    where
20128        D: serde::Deserializer<'de>,
20129    {
20130        const FIELDS: &[&str] = &[
20131            "subnet",
20132            "update_mask",
20133            "updateMask",
20134            "request_id",
20135            "requestId",
20136        ];
20137        #[allow(clippy::enum_variant_names)]
20138        enum GeneratedField {
20139            Subnet,
20140            UpdateMask,
20141            RequestId,
20142            __SkipField__,
20143        }
20144        impl<'de> serde::Deserialize<'de> for GeneratedField {
20145            fn deserialize<D>(
20146                deserializer: D,
20147            ) -> std::result::Result<GeneratedField, D::Error>
20148            where
20149                D: serde::Deserializer<'de>,
20150            {
20151                struct GeneratedVisitor;
20152                impl serde::de::Visitor<'_> for GeneratedVisitor {
20153                    type Value = GeneratedField;
20154                    fn expecting(
20155                        &self,
20156                        formatter: &mut std::fmt::Formatter<'_>,
20157                    ) -> std::fmt::Result {
20158                        write!(formatter, "expected one of: {:?}", & FIELDS)
20159                    }
20160                    #[allow(unused_variables)]
20161                    fn visit_str<E>(
20162                        self,
20163                        value: &str,
20164                    ) -> std::result::Result<GeneratedField, E>
20165                    where
20166                        E: serde::de::Error,
20167                    {
20168                        match value {
20169                            "subnet" => Ok(GeneratedField::Subnet),
20170                            "updateMask" | "update_mask" => {
20171                                Ok(GeneratedField::UpdateMask)
20172                            }
20173                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20174                            _ => Ok(GeneratedField::__SkipField__),
20175                        }
20176                    }
20177                }
20178                deserializer.deserialize_identifier(GeneratedVisitor)
20179            }
20180        }
20181        struct GeneratedVisitor;
20182        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20183            type Value = UpdateSubnetRequest;
20184            fn expecting(
20185                &self,
20186                formatter: &mut std::fmt::Formatter<'_>,
20187            ) -> std::fmt::Result {
20188                formatter
20189                    .write_str("struct origincloud.network.v1beta1.UpdateSubnetRequest")
20190            }
20191            fn visit_map<V>(
20192                self,
20193                mut map_: V,
20194            ) -> std::result::Result<UpdateSubnetRequest, V::Error>
20195            where
20196                V: serde::de::MapAccess<'de>,
20197            {
20198                let mut subnet__ = None;
20199                let mut update_mask__ = None;
20200                let mut request_id__ = None;
20201                while let Some(k) = map_.next_key()? {
20202                    match k {
20203                        GeneratedField::Subnet => {
20204                            if subnet__.is_some() {
20205                                return Err(serde::de::Error::duplicate_field("subnet"));
20206                            }
20207                            subnet__ = map_.next_value()?;
20208                        }
20209                        GeneratedField::UpdateMask => {
20210                            if update_mask__.is_some() {
20211                                return Err(serde::de::Error::duplicate_field("updateMask"));
20212                            }
20213                            update_mask__ = map_.next_value()?;
20214                        }
20215                        GeneratedField::RequestId => {
20216                            if request_id__.is_some() {
20217                                return Err(serde::de::Error::duplicate_field("requestId"));
20218                            }
20219                            request_id__ = Some(map_.next_value()?);
20220                        }
20221                        GeneratedField::__SkipField__ => {
20222                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20223                        }
20224                    }
20225                }
20226                Ok(UpdateSubnetRequest {
20227                    subnet: subnet__,
20228                    update_mask: update_mask__,
20229                    request_id: request_id__.unwrap_or_default(),
20230                })
20231            }
20232        }
20233        deserializer
20234            .deserialize_struct(
20235                "origincloud.network.v1beta1.UpdateSubnetRequest",
20236                FIELDS,
20237                GeneratedVisitor,
20238            )
20239    }
20240}
20241impl serde::Serialize for UpdateVpcRequest {
20242    #[allow(deprecated)]
20243    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20244    where
20245        S: serde::Serializer,
20246    {
20247        use serde::ser::SerializeStruct;
20248        let mut len = 0;
20249        if self.vpc.is_some() {
20250            len += 1;
20251        }
20252        if self.update_mask.is_some() {
20253            len += 1;
20254        }
20255        if !self.request_id.is_empty() {
20256            len += 1;
20257        }
20258        let mut struct_ser = serializer
20259            .serialize_struct("origincloud.network.v1beta1.UpdateVpcRequest", len)?;
20260        if let Some(v) = self.vpc.as_ref() {
20261            struct_ser.serialize_field("vpc", v)?;
20262        }
20263        if let Some(v) = self.update_mask.as_ref() {
20264            struct_ser.serialize_field("updateMask", v)?;
20265        }
20266        if !self.request_id.is_empty() {
20267            struct_ser.serialize_field("requestId", &self.request_id)?;
20268        }
20269        struct_ser.end()
20270    }
20271}
20272impl<'de> serde::Deserialize<'de> for UpdateVpcRequest {
20273    #[allow(deprecated)]
20274    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20275    where
20276        D: serde::Deserializer<'de>,
20277    {
20278        const FIELDS: &[&str] = &[
20279            "vpc",
20280            "update_mask",
20281            "updateMask",
20282            "request_id",
20283            "requestId",
20284        ];
20285        #[allow(clippy::enum_variant_names)]
20286        enum GeneratedField {
20287            Vpc,
20288            UpdateMask,
20289            RequestId,
20290            __SkipField__,
20291        }
20292        impl<'de> serde::Deserialize<'de> for GeneratedField {
20293            fn deserialize<D>(
20294                deserializer: D,
20295            ) -> std::result::Result<GeneratedField, D::Error>
20296            where
20297                D: serde::Deserializer<'de>,
20298            {
20299                struct GeneratedVisitor;
20300                impl serde::de::Visitor<'_> for GeneratedVisitor {
20301                    type Value = GeneratedField;
20302                    fn expecting(
20303                        &self,
20304                        formatter: &mut std::fmt::Formatter<'_>,
20305                    ) -> std::fmt::Result {
20306                        write!(formatter, "expected one of: {:?}", & FIELDS)
20307                    }
20308                    #[allow(unused_variables)]
20309                    fn visit_str<E>(
20310                        self,
20311                        value: &str,
20312                    ) -> std::result::Result<GeneratedField, E>
20313                    where
20314                        E: serde::de::Error,
20315                    {
20316                        match value {
20317                            "vpc" => Ok(GeneratedField::Vpc),
20318                            "updateMask" | "update_mask" => {
20319                                Ok(GeneratedField::UpdateMask)
20320                            }
20321                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20322                            _ => Ok(GeneratedField::__SkipField__),
20323                        }
20324                    }
20325                }
20326                deserializer.deserialize_identifier(GeneratedVisitor)
20327            }
20328        }
20329        struct GeneratedVisitor;
20330        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20331            type Value = UpdateVpcRequest;
20332            fn expecting(
20333                &self,
20334                formatter: &mut std::fmt::Formatter<'_>,
20335            ) -> std::fmt::Result {
20336                formatter
20337                    .write_str("struct origincloud.network.v1beta1.UpdateVpcRequest")
20338            }
20339            fn visit_map<V>(
20340                self,
20341                mut map_: V,
20342            ) -> std::result::Result<UpdateVpcRequest, V::Error>
20343            where
20344                V: serde::de::MapAccess<'de>,
20345            {
20346                let mut vpc__ = None;
20347                let mut update_mask__ = None;
20348                let mut request_id__ = None;
20349                while let Some(k) = map_.next_key()? {
20350                    match k {
20351                        GeneratedField::Vpc => {
20352                            if vpc__.is_some() {
20353                                return Err(serde::de::Error::duplicate_field("vpc"));
20354                            }
20355                            vpc__ = map_.next_value()?;
20356                        }
20357                        GeneratedField::UpdateMask => {
20358                            if update_mask__.is_some() {
20359                                return Err(serde::de::Error::duplicate_field("updateMask"));
20360                            }
20361                            update_mask__ = map_.next_value()?;
20362                        }
20363                        GeneratedField::RequestId => {
20364                            if request_id__.is_some() {
20365                                return Err(serde::de::Error::duplicate_field("requestId"));
20366                            }
20367                            request_id__ = Some(map_.next_value()?);
20368                        }
20369                        GeneratedField::__SkipField__ => {
20370                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20371                        }
20372                    }
20373                }
20374                Ok(UpdateVpcRequest {
20375                    vpc: vpc__,
20376                    update_mask: update_mask__,
20377                    request_id: request_id__.unwrap_or_default(),
20378                })
20379            }
20380        }
20381        deserializer
20382            .deserialize_struct(
20383                "origincloud.network.v1beta1.UpdateVpcRequest",
20384                FIELDS,
20385                GeneratedVisitor,
20386            )
20387    }
20388}
20389impl serde::Serialize for Vpc {
20390    #[allow(deprecated)]
20391    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20392    where
20393        S: serde::Serializer,
20394    {
20395        use serde::ser::SerializeStruct;
20396        let mut len = 0;
20397        if !self.name.is_empty() {
20398            len += 1;
20399        }
20400        if !self.urn.is_empty() {
20401            len += 1;
20402        }
20403        if !self.ipv4_cidr_block.is_empty() {
20404            len += 1;
20405        }
20406        if !self.ipv6_cidr_block.is_empty() {
20407            len += 1;
20408        }
20409        if self.subnet_ipv4_prefix_length != 0 {
20410            len += 1;
20411        }
20412        if self.available_subnet_count != 0 {
20413            len += 1;
20414        }
20415        if !self.dns_policy.is_empty() {
20416            len += 1;
20417        }
20418        if !self.internet_gateway.is_empty() {
20419            len += 1;
20420        }
20421        if self.project_default {
20422            len += 1;
20423        }
20424        if self.create_time.is_some() {
20425            len += 1;
20426        }
20427        if !self.creator.is_empty() {
20428            len += 1;
20429        }
20430        if !self.tags.is_empty() {
20431            len += 1;
20432        }
20433        let mut struct_ser = serializer
20434            .serialize_struct("origincloud.network.v1beta1.Vpc", len)?;
20435        if !self.name.is_empty() {
20436            struct_ser.serialize_field("name", &self.name)?;
20437        }
20438        if !self.urn.is_empty() {
20439            struct_ser.serialize_field("urn", &self.urn)?;
20440        }
20441        if !self.ipv4_cidr_block.is_empty() {
20442            struct_ser.serialize_field("ipv4CidrBlock", &self.ipv4_cidr_block)?;
20443        }
20444        if !self.ipv6_cidr_block.is_empty() {
20445            struct_ser.serialize_field("ipv6CidrBlock", &self.ipv6_cidr_block)?;
20446        }
20447        if self.subnet_ipv4_prefix_length != 0 {
20448            struct_ser
20449                .serialize_field(
20450                    "subnetIpv4PrefixLength",
20451                    &self.subnet_ipv4_prefix_length,
20452                )?;
20453        }
20454        if self.available_subnet_count != 0 {
20455            struct_ser
20456                .serialize_field("availableSubnetCount", &self.available_subnet_count)?;
20457        }
20458        if !self.dns_policy.is_empty() {
20459            struct_ser.serialize_field("dnsPolicy", &self.dns_policy)?;
20460        }
20461        if !self.internet_gateway.is_empty() {
20462            struct_ser.serialize_field("internetGateway", &self.internet_gateway)?;
20463        }
20464        if self.project_default {
20465            struct_ser.serialize_field("projectDefault", &self.project_default)?;
20466        }
20467        if let Some(v) = self.create_time.as_ref() {
20468            struct_ser.serialize_field("createTime", v)?;
20469        }
20470        if !self.creator.is_empty() {
20471            struct_ser.serialize_field("creator", &self.creator)?;
20472        }
20473        if !self.tags.is_empty() {
20474            struct_ser.serialize_field("tags", &self.tags)?;
20475        }
20476        struct_ser.end()
20477    }
20478}
20479impl<'de> serde::Deserialize<'de> for Vpc {
20480    #[allow(deprecated)]
20481    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20482    where
20483        D: serde::Deserializer<'de>,
20484    {
20485        const FIELDS: &[&str] = &[
20486            "name",
20487            "urn",
20488            "ipv4_cidr_block",
20489            "ipv4CidrBlock",
20490            "ipv6_cidr_block",
20491            "ipv6CidrBlock",
20492            "subnet_ipv4_prefix_length",
20493            "subnetIpv4PrefixLength",
20494            "available_subnet_count",
20495            "availableSubnetCount",
20496            "dns_policy",
20497            "dnsPolicy",
20498            "internet_gateway",
20499            "internetGateway",
20500            "project_default",
20501            "projectDefault",
20502            "create_time",
20503            "createTime",
20504            "creator",
20505            "tags",
20506        ];
20507        #[allow(clippy::enum_variant_names)]
20508        enum GeneratedField {
20509            Name,
20510            Urn,
20511            Ipv4CidrBlock,
20512            Ipv6CidrBlock,
20513            SubnetIpv4PrefixLength,
20514            AvailableSubnetCount,
20515            DnsPolicy,
20516            InternetGateway,
20517            ProjectDefault,
20518            CreateTime,
20519            Creator,
20520            Tags,
20521            __SkipField__,
20522        }
20523        impl<'de> serde::Deserialize<'de> for GeneratedField {
20524            fn deserialize<D>(
20525                deserializer: D,
20526            ) -> std::result::Result<GeneratedField, D::Error>
20527            where
20528                D: serde::Deserializer<'de>,
20529            {
20530                struct GeneratedVisitor;
20531                impl serde::de::Visitor<'_> for GeneratedVisitor {
20532                    type Value = GeneratedField;
20533                    fn expecting(
20534                        &self,
20535                        formatter: &mut std::fmt::Formatter<'_>,
20536                    ) -> std::fmt::Result {
20537                        write!(formatter, "expected one of: {:?}", & FIELDS)
20538                    }
20539                    #[allow(unused_variables)]
20540                    fn visit_str<E>(
20541                        self,
20542                        value: &str,
20543                    ) -> std::result::Result<GeneratedField, E>
20544                    where
20545                        E: serde::de::Error,
20546                    {
20547                        match value {
20548                            "name" => Ok(GeneratedField::Name),
20549                            "urn" => Ok(GeneratedField::Urn),
20550                            "ipv4CidrBlock" | "ipv4_cidr_block" => {
20551                                Ok(GeneratedField::Ipv4CidrBlock)
20552                            }
20553                            "ipv6CidrBlock" | "ipv6_cidr_block" => {
20554                                Ok(GeneratedField::Ipv6CidrBlock)
20555                            }
20556                            "subnetIpv4PrefixLength" | "subnet_ipv4_prefix_length" => {
20557                                Ok(GeneratedField::SubnetIpv4PrefixLength)
20558                            }
20559                            "availableSubnetCount" | "available_subnet_count" => {
20560                                Ok(GeneratedField::AvailableSubnetCount)
20561                            }
20562                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
20563                            "internetGateway" | "internet_gateway" => {
20564                                Ok(GeneratedField::InternetGateway)
20565                            }
20566                            "projectDefault" | "project_default" => {
20567                                Ok(GeneratedField::ProjectDefault)
20568                            }
20569                            "createTime" | "create_time" => {
20570                                Ok(GeneratedField::CreateTime)
20571                            }
20572                            "creator" => Ok(GeneratedField::Creator),
20573                            "tags" => Ok(GeneratedField::Tags),
20574                            _ => Ok(GeneratedField::__SkipField__),
20575                        }
20576                    }
20577                }
20578                deserializer.deserialize_identifier(GeneratedVisitor)
20579            }
20580        }
20581        struct GeneratedVisitor;
20582        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20583            type Value = Vpc;
20584            fn expecting(
20585                &self,
20586                formatter: &mut std::fmt::Formatter<'_>,
20587            ) -> std::fmt::Result {
20588                formatter.write_str("struct origincloud.network.v1beta1.Vpc")
20589            }
20590            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Vpc, V::Error>
20591            where
20592                V: serde::de::MapAccess<'de>,
20593            {
20594                let mut name__ = None;
20595                let mut urn__ = None;
20596                let mut ipv4_cidr_block__ = None;
20597                let mut ipv6_cidr_block__ = None;
20598                let mut subnet_ipv4_prefix_length__ = None;
20599                let mut available_subnet_count__ = None;
20600                let mut dns_policy__ = None;
20601                let mut internet_gateway__ = None;
20602                let mut project_default__ = None;
20603                let mut create_time__ = None;
20604                let mut creator__ = None;
20605                let mut tags__ = None;
20606                while let Some(k) = map_.next_key()? {
20607                    match k {
20608                        GeneratedField::Name => {
20609                            if name__.is_some() {
20610                                return Err(serde::de::Error::duplicate_field("name"));
20611                            }
20612                            name__ = Some(map_.next_value()?);
20613                        }
20614                        GeneratedField::Urn => {
20615                            if urn__.is_some() {
20616                                return Err(serde::de::Error::duplicate_field("urn"));
20617                            }
20618                            urn__ = Some(map_.next_value()?);
20619                        }
20620                        GeneratedField::Ipv4CidrBlock => {
20621                            if ipv4_cidr_block__.is_some() {
20622                                return Err(
20623                                    serde::de::Error::duplicate_field("ipv4CidrBlock"),
20624                                );
20625                            }
20626                            ipv4_cidr_block__ = Some(map_.next_value()?);
20627                        }
20628                        GeneratedField::Ipv6CidrBlock => {
20629                            if ipv6_cidr_block__.is_some() {
20630                                return Err(
20631                                    serde::de::Error::duplicate_field("ipv6CidrBlock"),
20632                                );
20633                            }
20634                            ipv6_cidr_block__ = Some(map_.next_value()?);
20635                        }
20636                        GeneratedField::SubnetIpv4PrefixLength => {
20637                            if subnet_ipv4_prefix_length__.is_some() {
20638                                return Err(
20639                                    serde::de::Error::duplicate_field("subnetIpv4PrefixLength"),
20640                                );
20641                            }
20642                            subnet_ipv4_prefix_length__ = Some(
20643                                map_
20644                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
20645                                    .0,
20646                            );
20647                        }
20648                        GeneratedField::AvailableSubnetCount => {
20649                            if available_subnet_count__.is_some() {
20650                                return Err(
20651                                    serde::de::Error::duplicate_field("availableSubnetCount"),
20652                                );
20653                            }
20654                            available_subnet_count__ = Some(
20655                                map_
20656                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
20657                                    .0,
20658                            );
20659                        }
20660                        GeneratedField::DnsPolicy => {
20661                            if dns_policy__.is_some() {
20662                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
20663                            }
20664                            dns_policy__ = Some(map_.next_value()?);
20665                        }
20666                        GeneratedField::InternetGateway => {
20667                            if internet_gateway__.is_some() {
20668                                return Err(
20669                                    serde::de::Error::duplicate_field("internetGateway"),
20670                                );
20671                            }
20672                            internet_gateway__ = Some(map_.next_value()?);
20673                        }
20674                        GeneratedField::ProjectDefault => {
20675                            if project_default__.is_some() {
20676                                return Err(
20677                                    serde::de::Error::duplicate_field("projectDefault"),
20678                                );
20679                            }
20680                            project_default__ = Some(map_.next_value()?);
20681                        }
20682                        GeneratedField::CreateTime => {
20683                            if create_time__.is_some() {
20684                                return Err(serde::de::Error::duplicate_field("createTime"));
20685                            }
20686                            create_time__ = map_.next_value()?;
20687                        }
20688                        GeneratedField::Creator => {
20689                            if creator__.is_some() {
20690                                return Err(serde::de::Error::duplicate_field("creator"));
20691                            }
20692                            creator__ = Some(map_.next_value()?);
20693                        }
20694                        GeneratedField::Tags => {
20695                            if tags__.is_some() {
20696                                return Err(serde::de::Error::duplicate_field("tags"));
20697                            }
20698                            tags__ = Some(
20699                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
20700                            );
20701                        }
20702                        GeneratedField::__SkipField__ => {
20703                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20704                        }
20705                    }
20706                }
20707                Ok(Vpc {
20708                    name: name__.unwrap_or_default(),
20709                    urn: urn__.unwrap_or_default(),
20710                    ipv4_cidr_block: ipv4_cidr_block__.unwrap_or_default(),
20711                    ipv6_cidr_block: ipv6_cidr_block__.unwrap_or_default(),
20712                    subnet_ipv4_prefix_length: subnet_ipv4_prefix_length__
20713                        .unwrap_or_default(),
20714                    available_subnet_count: available_subnet_count__.unwrap_or_default(),
20715                    dns_policy: dns_policy__.unwrap_or_default(),
20716                    internet_gateway: internet_gateway__.unwrap_or_default(),
20717                    project_default: project_default__.unwrap_or_default(),
20718                    create_time: create_time__,
20719                    creator: creator__.unwrap_or_default(),
20720                    tags: tags__.unwrap_or_default(),
20721                })
20722            }
20723        }
20724        deserializer
20725            .deserialize_struct(
20726                "origincloud.network.v1beta1.Vpc",
20727                FIELDS,
20728                GeneratedVisitor,
20729            )
20730    }
20731}
20732/// Calls `AclService`.
20733///
20734/// ACLs: stateless filters at the edge of a subnet. An ACL holds rules
20735/// (`AclRuleService`), and applies to the subnets that an ACL association
20736/// names it for (`AclAssociationService`). Each packet entering or leaving
20737/// such a subnet meets the rules of its direction in `priority` order; the
20738/// first that matches accepts or drops it, and a packet no rule matches is
20739/// dropped.
20740#[derive(Clone, Debug)]
20741pub struct AclClient {
20742    service: ::origincloud_core::Service,
20743}
20744impl AclClient {
20745    /// Returns a client of `AclService` that sends its calls through `client`.
20746    pub fn new(client: &::origincloud_core::Client) -> Self {
20747        Self {
20748            service: client.service("network", true),
20749        }
20750    }
20751    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
20752    pub fn service(&self) -> &::origincloud_core::Service {
20753        &self.service
20754    }
20755    /// Returns an ACL.
20756    pub async fn get_acl(
20757        &self,
20758        request: GetAclRequest,
20759    ) -> ::core::result::Result<Acl, ::origincloud_core::Error> {
20760        let p0 = ::origincloud_core::path_value(
20761            "name",
20762            &request.name,
20763            "projects/*/regions/*/acls/*",
20764        )?;
20765        let query = ::origincloud_core::query(&request, &["name"])?;
20766        let call = ::origincloud_core::Request::new(
20767                ::origincloud_core::Method::GET,
20768                format!("/v1beta1/{p0}"),
20769            )
20770            .with_query(query)
20771            .idempotent();
20772        self.service.call(call).await
20773    }
20774    /// Lists the ACLs in a region, oldest first.
20775    pub async fn list_acls(
20776        &self,
20777        request: ListAclsRequest,
20778    ) -> ::core::result::Result<ListAclsResponse, ::origincloud_core::Error> {
20779        let p0 = ::origincloud_core::path_value(
20780            "parent",
20781            &request.parent,
20782            "projects/*/regions/*",
20783        )?;
20784        let query = ::origincloud_core::query(&request, &["parent"])?;
20785        let call = ::origincloud_core::Request::new(
20786                ::origincloud_core::Method::GET,
20787                format!("/v1beta1/{p0}/acls"),
20788            )
20789            .with_query(query)
20790            .idempotent();
20791        self.service.call(call).await
20792    }
20793    /// 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.
20794    pub fn all_acls(&self, request: ListAclsRequest) -> ::origincloud_core::Pages<Acl> {
20795        let client = self.clone();
20796        ::origincloud_core::Pages::new(
20797            request,
20798            move |request: ListAclsRequest| {
20799                let client = client.clone();
20800                async move {
20801                    let page = client.list_acls(request).await?;
20802                    Ok((page.acls, page.next_page_token))
20803                }
20804            },
20805            |request: &mut ListAclsRequest, token: ::std::string::String| {
20806                request.page_token = token;
20807            },
20808        )
20809    }
20810    /// Creates an ACL in a VPC, with no rules: it drops everything until
20811    /// rules are added. The operation is done once the ACL is recorded.
20812    ///
20813    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Acl`] once the change is done.
20814    pub async fn create_acl(
20815        &self,
20816        mut request: CreateAclRequest,
20817    ) -> ::core::result::Result<
20818        ::origincloud_core::Operation<Acl>,
20819        ::origincloud_core::Error,
20820    > {
20821        if request.request_id.is_empty() {
20822            request.request_id = ::origincloud_core::new_request_id();
20823        }
20824        let p0 = ::origincloud_core::path_value(
20825            "parent",
20826            &request.parent,
20827            "projects/*/regions/*",
20828        )?;
20829        let body = ::origincloud_core::json_body(
20830            request.acl.as_ref().unwrap_or(&::core::default::Default::default()),
20831        )?;
20832        let query = ::origincloud_core::query(&request, &["parent", "acl"])?;
20833        let call = ::origincloud_core::Request::new(
20834                ::origincloud_core::Method::POST,
20835                format!("/v1beta1/{p0}/acls"),
20836            )
20837            .with_body(body)
20838            .with_query(query)
20839            .idempotent();
20840        let operation = self.service.call(call).await?;
20841        Ok(
20842            ::origincloud_core::Operation::new(
20843                self.service.clone(),
20844                operation,
20845                "origincloud.network.v1beta1.Acl",
20846            ),
20847        )
20848    }
20849    /// Changes an ACL's tags. The operation is done once the change is
20850    /// recorded.
20851    ///
20852    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Acl`] once the change is done.
20853    pub async fn update_acl(
20854        &self,
20855        mut request: UpdateAclRequest,
20856    ) -> ::core::result::Result<
20857        ::origincloud_core::Operation<Acl>,
20858        ::origincloud_core::Error,
20859    > {
20860        if request.request_id.is_empty() {
20861            request.request_id = ::origincloud_core::new_request_id();
20862        }
20863        let p0 = ::origincloud_core::path_value(
20864            "acl.name",
20865            request.acl.as_ref().map_or("", |m| m.name.as_str()),
20866            "projects/*/regions/*/acls/*",
20867        )?;
20868        let body = ::origincloud_core::json_body(
20869            request.acl.as_ref().unwrap_or(&::core::default::Default::default()),
20870        )?;
20871        let query = ::origincloud_core::query(&request, &["acl.name", "acl"])?;
20872        let call = ::origincloud_core::Request::new(
20873                ::origincloud_core::Method::PATCH,
20874                format!("/v1beta1/{p0}"),
20875            )
20876            .with_body(body)
20877            .with_query(query)
20878            .idempotent();
20879        let operation = self.service.call(call).await?;
20880        Ok(
20881            ::origincloud_core::Operation::new(
20882                self.service.clone(),
20883                operation,
20884                "origincloud.network.v1beta1.Acl",
20885            ),
20886        )
20887    }
20888    /// Deletes an ACL with its rules. Refused for an ACL the platform created
20889    /// with its VPC, which goes with the VPC, and while an ACL association
20890    /// names it. The operation is done once the change is recorded; the
20891    /// network applies it within seconds.
20892    ///
20893    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
20894    pub async fn delete_acl(
20895        &self,
20896        mut request: DeleteAclRequest,
20897    ) -> ::core::result::Result<
20898        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
20899        ::origincloud_core::Error,
20900    > {
20901        if request.request_id.is_empty() {
20902            request.request_id = ::origincloud_core::new_request_id();
20903        }
20904        let p0 = ::origincloud_core::path_value(
20905            "name",
20906            &request.name,
20907            "projects/*/regions/*/acls/*",
20908        )?;
20909        let query = ::origincloud_core::query(&request, &["name"])?;
20910        let call = ::origincloud_core::Request::new(
20911                ::origincloud_core::Method::DELETE,
20912                format!("/v1beta1/{p0}"),
20913            )
20914            .with_query(query)
20915            .idempotent();
20916        let operation = self.service.call(call).await?;
20917        Ok(
20918            ::origincloud_core::Operation::new(
20919                self.service.clone(),
20920                operation,
20921                "google.protobuf.Empty",
20922            ),
20923        )
20924    }
20925}
20926/// Calls `AclAssociationService`.
20927///
20928/// ACL associations: which ACL filters a subnet's traffic at its edge. A
20929/// subnet has at most one; without one, nothing is filtered at its edge (see
20930/// the subnet's `acl`). An association's id is the id of the ACL it names, so
20931/// a client that knows the subnet and the ACL names the association without
20932/// listing. To move a subnet to another ACL, delete its association and
20933/// create another.
20934#[derive(Clone, Debug)]
20935pub struct AclAssociationClient {
20936    service: ::origincloud_core::Service,
20937}
20938impl AclAssociationClient {
20939    /// Returns a client of `AclAssociationService` that sends its calls through `client`.
20940    pub fn new(client: &::origincloud_core::Client) -> Self {
20941        Self {
20942            service: client.service("network", true),
20943        }
20944    }
20945    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
20946    pub fn service(&self) -> &::origincloud_core::Service {
20947        &self.service
20948    }
20949    /// Returns an ACL association.
20950    pub async fn get_acl_association(
20951        &self,
20952        request: GetAclAssociationRequest,
20953    ) -> ::core::result::Result<AclAssociation, ::origincloud_core::Error> {
20954        let p0 = ::origincloud_core::path_value(
20955            "name",
20956            &request.name,
20957            "projects/*/zones/*/subnets/*/aclAssociations/*",
20958        )?;
20959        let query = ::origincloud_core::query(&request, &["name"])?;
20960        let call = ::origincloud_core::Request::new(
20961                ::origincloud_core::Method::GET,
20962                format!("/v1beta1/{p0}"),
20963            )
20964            .with_query(query)
20965            .idempotent();
20966        self.service.call(call).await
20967    }
20968    /// Lists a subnet's ACL associations: none or one.
20969    pub async fn list_acl_associations(
20970        &self,
20971        request: ListAclAssociationsRequest,
20972    ) -> ::core::result::Result<ListAclAssociationsResponse, ::origincloud_core::Error> {
20973        let p0 = ::origincloud_core::path_value(
20974            "parent",
20975            &request.parent,
20976            "projects/*/zones/*/subnets/*",
20977        )?;
20978        let query = ::origincloud_core::query(&request, &["parent"])?;
20979        let call = ::origincloud_core::Request::new(
20980                ::origincloud_core::Method::GET,
20981                format!("/v1beta1/{p0}/aclAssociations"),
20982            )
20983            .with_query(query)
20984            .idempotent();
20985        self.service.call(call).await
20986    }
20987    /// 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.
20988    pub fn all_acl_associations(
20989        &self,
20990        request: ListAclAssociationsRequest,
20991    ) -> ::origincloud_core::Pages<AclAssociation> {
20992        let client = self.clone();
20993        ::origincloud_core::Pages::new(
20994            request,
20995            move |request: ListAclAssociationsRequest| {
20996                let client = client.clone();
20997                async move {
20998                    let page = client.list_acl_associations(request).await?;
20999                    Ok((page.acl_associations, page.next_page_token))
21000                }
21001            },
21002            |request: &mut ListAclAssociationsRequest, token: ::std::string::String| {
21003                request.page_token = token;
21004            },
21005        )
21006    }
21007    /// Associates an ACL with a subnet. Refused with `FAILED_PRECONDITION`
21008    /// when the subnet has an ACL association. The operation is done once the
21009    /// change is recorded; the network applies it within seconds.
21010    ///
21011    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`AclAssociation`] once the change is done.
21012    pub async fn create_acl_association(
21013        &self,
21014        mut request: CreateAclAssociationRequest,
21015    ) -> ::core::result::Result<
21016        ::origincloud_core::Operation<AclAssociation>,
21017        ::origincloud_core::Error,
21018    > {
21019        if request.request_id.is_empty() {
21020            request.request_id = ::origincloud_core::new_request_id();
21021        }
21022        let p0 = ::origincloud_core::path_value(
21023            "parent",
21024            &request.parent,
21025            "projects/*/zones/*/subnets/*",
21026        )?;
21027        let body = ::origincloud_core::json_body(
21028            request
21029                .acl_association
21030                .as_ref()
21031                .unwrap_or(&::core::default::Default::default()),
21032        )?;
21033        let query = ::origincloud_core::query(&request, &["parent", "aclAssociation"])?;
21034        let call = ::origincloud_core::Request::new(
21035                ::origincloud_core::Method::POST,
21036                format!("/v1beta1/{p0}/aclAssociations"),
21037            )
21038            .with_body(body)
21039            .with_query(query)
21040            .idempotent();
21041        let operation = self.service.call(call).await?;
21042        Ok(
21043            ::origincloud_core::Operation::new(
21044                self.service.clone(),
21045                operation,
21046                "origincloud.network.v1beta1.AclAssociation",
21047            ),
21048        )
21049    }
21050    /// Removes a subnet's ACL association: nothing is filtered at its edge any
21051    /// more, and its interfaces' security groups still apply. The operation is
21052    /// done once the change is recorded; the network applies it within seconds.
21053    ///
21054    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21055    pub async fn delete_acl_association(
21056        &self,
21057        mut request: DeleteAclAssociationRequest,
21058    ) -> ::core::result::Result<
21059        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21060        ::origincloud_core::Error,
21061    > {
21062        if request.request_id.is_empty() {
21063            request.request_id = ::origincloud_core::new_request_id();
21064        }
21065        let p0 = ::origincloud_core::path_value(
21066            "name",
21067            &request.name,
21068            "projects/*/zones/*/subnets/*/aclAssociations/*",
21069        )?;
21070        let query = ::origincloud_core::query(&request, &["name"])?;
21071        let call = ::origincloud_core::Request::new(
21072                ::origincloud_core::Method::DELETE,
21073                format!("/v1beta1/{p0}"),
21074            )
21075            .with_query(query)
21076            .idempotent();
21077        let operation = self.service.call(call).await?;
21078        Ok(
21079            ::origincloud_core::Operation::new(
21080                self.service.clone(),
21081                operation,
21082                "google.protobuf.Empty",
21083            ),
21084        )
21085    }
21086}
21087/// Calls `AclRuleService`.
21088///
21089/// ACL rules: what an ACL accepts or drops, each rule in its place in one
21090/// direction. A rule is immutable: it is created and deleted, never changed,
21091/// so to change one, delete it and create its replacement. A direction
21092/// holds one rule per `priority`, so a replacement at the same priority can
21093/// only be created once the old rule is deleted: between the two, neither
21094/// rule applies. A replacement at a free priority can be created first.
21095#[derive(Clone, Debug)]
21096pub struct AclRuleClient {
21097    service: ::origincloud_core::Service,
21098}
21099impl AclRuleClient {
21100    /// Returns a client of `AclRuleService` that sends its calls through `client`.
21101    pub fn new(client: &::origincloud_core::Client) -> Self {
21102        Self {
21103            service: client.service("network", true),
21104        }
21105    }
21106    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21107    pub fn service(&self) -> &::origincloud_core::Service {
21108        &self.service
21109    }
21110    /// Returns an ACL rule.
21111    pub async fn get_acl_rule(
21112        &self,
21113        request: GetAclRuleRequest,
21114    ) -> ::core::result::Result<AclRule, ::origincloud_core::Error> {
21115        let p0 = ::origincloud_core::path_value(
21116            "name",
21117            &request.name,
21118            "projects/*/regions/*/acls/*/rules/*",
21119        )?;
21120        let query = ::origincloud_core::query(&request, &["name"])?;
21121        let call = ::origincloud_core::Request::new(
21122                ::origincloud_core::Method::GET,
21123                format!("/v1beta1/{p0}"),
21124            )
21125            .with_query(query)
21126            .idempotent();
21127        self.service.call(call).await
21128    }
21129    /// Lists an ACL's rules of both directions, oldest first.
21130    pub async fn list_acl_rules(
21131        &self,
21132        request: ListAclRulesRequest,
21133    ) -> ::core::result::Result<ListAclRulesResponse, ::origincloud_core::Error> {
21134        let p0 = ::origincloud_core::path_value(
21135            "parent",
21136            &request.parent,
21137            "projects/*/regions/*/acls/*",
21138        )?;
21139        let query = ::origincloud_core::query(&request, &["parent"])?;
21140        let call = ::origincloud_core::Request::new(
21141                ::origincloud_core::Method::GET,
21142                format!("/v1beta1/{p0}/rules"),
21143            )
21144            .with_query(query)
21145            .idempotent();
21146        self.service.call(call).await
21147    }
21148    /// 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.
21149    pub fn all_acl_rules(
21150        &self,
21151        request: ListAclRulesRequest,
21152    ) -> ::origincloud_core::Pages<AclRule> {
21153        let client = self.clone();
21154        ::origincloud_core::Pages::new(
21155            request,
21156            move |request: ListAclRulesRequest| {
21157                let client = client.clone();
21158                async move {
21159                    let page = client.list_acl_rules(request).await?;
21160                    Ok((page.acl_rules, page.next_page_token))
21161                }
21162            },
21163            |request: &mut ListAclRulesRequest, token: ::std::string::String| {
21164                request.page_token = token;
21165            },
21166        )
21167    }
21168    /// Adds a rule to an ACL. Refused with `FAILED_PRECONDITION` when a rule
21169    /// of the same direction has the same `priority`. An ACL holds at most 40
21170    /// rules by default, both directions together, as the quota sets. The
21171    /// operation is done once the change is recorded; the network applies it
21172    /// within seconds.
21173    ///
21174    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`AclRule`] once the change is done.
21175    pub async fn create_acl_rule(
21176        &self,
21177        mut request: CreateAclRuleRequest,
21178    ) -> ::core::result::Result<
21179        ::origincloud_core::Operation<AclRule>,
21180        ::origincloud_core::Error,
21181    > {
21182        if request.request_id.is_empty() {
21183            request.request_id = ::origincloud_core::new_request_id();
21184        }
21185        let p0 = ::origincloud_core::path_value(
21186            "parent",
21187            &request.parent,
21188            "projects/*/regions/*/acls/*",
21189        )?;
21190        let body = ::origincloud_core::json_body(
21191            request.acl_rule.as_ref().unwrap_or(&::core::default::Default::default()),
21192        )?;
21193        let query = ::origincloud_core::query(&request, &["parent", "aclRule"])?;
21194        let call = ::origincloud_core::Request::new(
21195                ::origincloud_core::Method::POST,
21196                format!("/v1beta1/{p0}/rules"),
21197            )
21198            .with_body(body)
21199            .with_query(query)
21200            .idempotent();
21201        let operation = self.service.call(call).await?;
21202        Ok(
21203            ::origincloud_core::Operation::new(
21204                self.service.clone(),
21205                operation,
21206                "origincloud.network.v1beta1.AclRule",
21207            ),
21208        )
21209    }
21210    /// Removes a rule from its ACL. The operation is done once the change is
21211    /// recorded; the network applies it within seconds.
21212    ///
21213    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21214    pub async fn delete_acl_rule(
21215        &self,
21216        mut request: DeleteAclRuleRequest,
21217    ) -> ::core::result::Result<
21218        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21219        ::origincloud_core::Error,
21220    > {
21221        if request.request_id.is_empty() {
21222            request.request_id = ::origincloud_core::new_request_id();
21223        }
21224        let p0 = ::origincloud_core::path_value(
21225            "name",
21226            &request.name,
21227            "projects/*/regions/*/acls/*/rules/*",
21228        )?;
21229        let query = ::origincloud_core::query(&request, &["name"])?;
21230        let call = ::origincloud_core::Request::new(
21231                ::origincloud_core::Method::DELETE,
21232                format!("/v1beta1/{p0}"),
21233            )
21234            .with_query(query)
21235            .idempotent();
21236        let operation = self.service.call(call).await?;
21237        Ok(
21238            ::origincloud_core::Operation::new(
21239                self.service.clone(),
21240                operation,
21241                "google.protobuf.Empty",
21242            ),
21243        )
21244    }
21245}
21246/// Calls `DnsPolicyService`.
21247///
21248/// DNS policies: how a VPC's resolver answers names it isn't authoritative
21249/// for. A VPC relays through the policy its DNS policy association names
21250/// (`DnsPolicyAssociationService`), or else through the project's default
21251/// policy in its region.
21252#[derive(Clone, Debug)]
21253pub struct DnsPolicyClient {
21254    service: ::origincloud_core::Service,
21255}
21256impl DnsPolicyClient {
21257    /// Returns a client of `DnsPolicyService` that sends its calls through `client`.
21258    pub fn new(client: &::origincloud_core::Client) -> Self {
21259        Self {
21260            service: client.service("network", true),
21261        }
21262    }
21263    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21264    pub fn service(&self) -> &::origincloud_core::Service {
21265        &self.service
21266    }
21267    /// Returns a DNS policy.
21268    pub async fn get_dns_policy(
21269        &self,
21270        request: GetDnsPolicyRequest,
21271    ) -> ::core::result::Result<DnsPolicy, ::origincloud_core::Error> {
21272        let p0 = ::origincloud_core::path_value(
21273            "name",
21274            &request.name,
21275            "projects/*/regions/*/dnsPolicies/*",
21276        )?;
21277        let query = ::origincloud_core::query(&request, &["name"])?;
21278        let call = ::origincloud_core::Request::new(
21279                ::origincloud_core::Method::GET,
21280                format!("/v1beta1/{p0}"),
21281            )
21282            .with_query(query)
21283            .idempotent();
21284        self.service.call(call).await
21285    }
21286    /// Lists the DNS policies in a region, oldest first, the project's
21287    /// default included.
21288    pub async fn list_dns_policies(
21289        &self,
21290        request: ListDnsPoliciesRequest,
21291    ) -> ::core::result::Result<ListDnsPoliciesResponse, ::origincloud_core::Error> {
21292        let p0 = ::origincloud_core::path_value(
21293            "parent",
21294            &request.parent,
21295            "projects/*/regions/*",
21296        )?;
21297        let query = ::origincloud_core::query(&request, &["parent"])?;
21298        let call = ::origincloud_core::Request::new(
21299                ::origincloud_core::Method::GET,
21300                format!("/v1beta1/{p0}/dnsPolicies"),
21301            )
21302            .with_query(query)
21303            .idempotent();
21304        self.service.call(call).await
21305    }
21306    /// 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.
21307    pub fn all_dns_policies(
21308        &self,
21309        request: ListDnsPoliciesRequest,
21310    ) -> ::origincloud_core::Pages<DnsPolicy> {
21311        let client = self.clone();
21312        ::origincloud_core::Pages::new(
21313            request,
21314            move |request: ListDnsPoliciesRequest| {
21315                let client = client.clone();
21316                async move {
21317                    let page = client.list_dns_policies(request).await?;
21318                    Ok((page.dns_policies, page.next_page_token))
21319                }
21320            },
21321            |request: &mut ListDnsPoliciesRequest, token: ::std::string::String| {
21322                request.page_token = token;
21323            },
21324        )
21325    }
21326    /// Creates a DNS policy. It isn't the default: associate it with a VPC,
21327    /// or make it the default with `SetDefaultDnsPolicy`. The operation is
21328    /// done once the DNS policy is recorded.
21329    ///
21330    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21331    pub async fn create_dns_policy(
21332        &self,
21333        mut request: CreateDnsPolicyRequest,
21334    ) -> ::core::result::Result<
21335        ::origincloud_core::Operation<DnsPolicy>,
21336        ::origincloud_core::Error,
21337    > {
21338        if request.request_id.is_empty() {
21339            request.request_id = ::origincloud_core::new_request_id();
21340        }
21341        let p0 = ::origincloud_core::path_value(
21342            "parent",
21343            &request.parent,
21344            "projects/*/regions/*",
21345        )?;
21346        let body = ::origincloud_core::json_body(
21347            request.dns_policy.as_ref().unwrap_or(&::core::default::Default::default()),
21348        )?;
21349        let query = ::origincloud_core::query(&request, &["parent", "dnsPolicy"])?;
21350        let call = ::origincloud_core::Request::new(
21351                ::origincloud_core::Method::POST,
21352                format!("/v1beta1/{p0}/dnsPolicies"),
21353            )
21354            .with_body(body)
21355            .with_query(query)
21356            .idempotent();
21357        let operation = self.service.call(call).await?;
21358        Ok(
21359            ::origincloud_core::Operation::new(
21360                self.service.clone(),
21361                operation,
21362                "origincloud.network.v1beta1.DnsPolicy",
21363            ),
21364        )
21365    }
21366    /// Changes a DNS policy's relay settings or tags. The operation is done
21367    /// once the change is recorded; the resolvers of every VPC relaying
21368    /// through the policy apply it within seconds.
21369    ///
21370    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21371    pub async fn update_dns_policy(
21372        &self,
21373        mut request: UpdateDnsPolicyRequest,
21374    ) -> ::core::result::Result<
21375        ::origincloud_core::Operation<DnsPolicy>,
21376        ::origincloud_core::Error,
21377    > {
21378        if request.request_id.is_empty() {
21379            request.request_id = ::origincloud_core::new_request_id();
21380        }
21381        let p0 = ::origincloud_core::path_value(
21382            "dnsPolicy.name",
21383            request.dns_policy.as_ref().map_or("", |m| m.name.as_str()),
21384            "projects/*/regions/*/dnsPolicies/*",
21385        )?;
21386        let body = ::origincloud_core::json_body(
21387            request.dns_policy.as_ref().unwrap_or(&::core::default::Default::default()),
21388        )?;
21389        let query = ::origincloud_core::query(
21390            &request,
21391            &["dnsPolicy.name", "dnsPolicy"],
21392        )?;
21393        let call = ::origincloud_core::Request::new(
21394                ::origincloud_core::Method::PATCH,
21395                format!("/v1beta1/{p0}"),
21396            )
21397            .with_body(body)
21398            .with_query(query)
21399            .idempotent();
21400        let operation = self.service.call(call).await?;
21401        Ok(
21402            ::origincloud_core::Operation::new(
21403                self.service.clone(),
21404                operation,
21405                "origincloud.network.v1beta1.DnsPolicy",
21406            ),
21407        )
21408    }
21409    /// Deletes a DNS policy. Refused for the project's default policy and
21410    /// while a DNS policy association names it. The operation is done once
21411    /// the change is recorded.
21412    ///
21413    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21414    pub async fn delete_dns_policy(
21415        &self,
21416        mut request: DeleteDnsPolicyRequest,
21417    ) -> ::core::result::Result<
21418        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21419        ::origincloud_core::Error,
21420    > {
21421        if request.request_id.is_empty() {
21422            request.request_id = ::origincloud_core::new_request_id();
21423        }
21424        let p0 = ::origincloud_core::path_value(
21425            "name",
21426            &request.name,
21427            "projects/*/regions/*/dnsPolicies/*",
21428        )?;
21429        let query = ::origincloud_core::query(&request, &["name"])?;
21430        let call = ::origincloud_core::Request::new(
21431                ::origincloud_core::Method::DELETE,
21432                format!("/v1beta1/{p0}"),
21433            )
21434            .with_query(query)
21435            .idempotent();
21436        let operation = self.service.call(call).await?;
21437        Ok(
21438            ::origincloud_core::Operation::new(
21439                self.service.clone(),
21440                operation,
21441                "google.protobuf.Empty",
21442            ),
21443        )
21444    }
21445    /// Makes a DNS policy the project's default in its region, in place of
21446    /// the one before. Every VPC of the region without a DNS policy
21447    /// association relays through it from then on. Making the default the
21448    /// default changes nothing. The operation is done once the change is
21449    /// recorded; the resolvers apply it within seconds.
21450    ///
21451    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21452    pub async fn set_default_dns_policy(
21453        &self,
21454        mut request: SetDefaultDnsPolicyRequest,
21455    ) -> ::core::result::Result<
21456        ::origincloud_core::Operation<DnsPolicy>,
21457        ::origincloud_core::Error,
21458    > {
21459        if request.request_id.is_empty() {
21460            request.request_id = ::origincloud_core::new_request_id();
21461        }
21462        let p0 = ::origincloud_core::path_value(
21463            "name",
21464            &request.name,
21465            "projects/*/regions/*/dnsPolicies/*",
21466        )?;
21467        let body = ::origincloud_core::json_body(&request)?;
21468        let call = ::origincloud_core::Request::new(
21469                ::origincloud_core::Method::POST,
21470                format!("/v1beta1/{p0}:setDefault"),
21471            )
21472            .with_body(body)
21473            .idempotent();
21474        let operation = self.service.call(call).await?;
21475        Ok(
21476            ::origincloud_core::Operation::new(
21477                self.service.clone(),
21478                operation,
21479                "origincloud.network.v1beta1.DnsPolicy",
21480            ),
21481        )
21482    }
21483}
21484/// Calls `DnsPolicyAssociationService`.
21485///
21486/// DNS policy associations: which DNS policy a VPC's resolver relays through.
21487/// A VPC has at most one; without one, it relays through the project's
21488/// default DNS policy in its region (see the VPC's `dns_policy`). An
21489/// association's id is the id of the DNS policy it names, so a client that
21490/// knows the VPC and the policy names the association without listing. To
21491/// move a VPC to another policy, delete its association and create another.
21492#[derive(Clone, Debug)]
21493pub struct DnsPolicyAssociationClient {
21494    service: ::origincloud_core::Service,
21495}
21496impl DnsPolicyAssociationClient {
21497    /// Returns a client of `DnsPolicyAssociationService` that sends its calls through `client`.
21498    pub fn new(client: &::origincloud_core::Client) -> Self {
21499        Self {
21500            service: client.service("network", true),
21501        }
21502    }
21503    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21504    pub fn service(&self) -> &::origincloud_core::Service {
21505        &self.service
21506    }
21507    /// Returns a DNS policy association.
21508    pub async fn get_dns_policy_association(
21509        &self,
21510        request: GetDnsPolicyAssociationRequest,
21511    ) -> ::core::result::Result<DnsPolicyAssociation, ::origincloud_core::Error> {
21512        let p0 = ::origincloud_core::path_value(
21513            "name",
21514            &request.name,
21515            "projects/*/regions/*/vpcs/*/dnsPolicyAssociations/*",
21516        )?;
21517        let query = ::origincloud_core::query(&request, &["name"])?;
21518        let call = ::origincloud_core::Request::new(
21519                ::origincloud_core::Method::GET,
21520                format!("/v1beta1/{p0}"),
21521            )
21522            .with_query(query)
21523            .idempotent();
21524        self.service.call(call).await
21525    }
21526    /// Lists a VPC's DNS policy associations: none or one.
21527    pub async fn list_dns_policy_associations(
21528        &self,
21529        request: ListDnsPolicyAssociationsRequest,
21530    ) -> ::core::result::Result<
21531        ListDnsPolicyAssociationsResponse,
21532        ::origincloud_core::Error,
21533    > {
21534        let p0 = ::origincloud_core::path_value(
21535            "parent",
21536            &request.parent,
21537            "projects/*/regions/*/vpcs/*",
21538        )?;
21539        let query = ::origincloud_core::query(&request, &["parent"])?;
21540        let call = ::origincloud_core::Request::new(
21541                ::origincloud_core::Method::GET,
21542                format!("/v1beta1/{p0}/dnsPolicyAssociations"),
21543            )
21544            .with_query(query)
21545            .idempotent();
21546        self.service.call(call).await
21547    }
21548    /// 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.
21549    pub fn all_dns_policy_associations(
21550        &self,
21551        request: ListDnsPolicyAssociationsRequest,
21552    ) -> ::origincloud_core::Pages<DnsPolicyAssociation> {
21553        let client = self.clone();
21554        ::origincloud_core::Pages::new(
21555            request,
21556            move |request: ListDnsPolicyAssociationsRequest| {
21557                let client = client.clone();
21558                async move {
21559                    let page = client.list_dns_policy_associations(request).await?;
21560                    Ok((page.dns_policy_associations, page.next_page_token))
21561                }
21562            },
21563            |
21564                request: &mut ListDnsPolicyAssociationsRequest,
21565                token: ::std::string::String|
21566            request.page_token = token,
21567        )
21568    }
21569    /// Associates a DNS policy with a VPC. Refused with `FAILED_PRECONDITION`
21570    /// when the VPC has a DNS policy association. The operation is done once
21571    /// the change is recorded; the VPC's resolver applies it within seconds.
21572    ///
21573    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicyAssociation`] once the change is done.
21574    pub async fn create_dns_policy_association(
21575        &self,
21576        mut request: CreateDnsPolicyAssociationRequest,
21577    ) -> ::core::result::Result<
21578        ::origincloud_core::Operation<DnsPolicyAssociation>,
21579        ::origincloud_core::Error,
21580    > {
21581        if request.request_id.is_empty() {
21582            request.request_id = ::origincloud_core::new_request_id();
21583        }
21584        let p0 = ::origincloud_core::path_value(
21585            "parent",
21586            &request.parent,
21587            "projects/*/regions/*/vpcs/*",
21588        )?;
21589        let body = ::origincloud_core::json_body(
21590            request
21591                .dns_policy_association
21592                .as_ref()
21593                .unwrap_or(&::core::default::Default::default()),
21594        )?;
21595        let query = ::origincloud_core::query(
21596            &request,
21597            &["parent", "dnsPolicyAssociation"],
21598        )?;
21599        let call = ::origincloud_core::Request::new(
21600                ::origincloud_core::Method::POST,
21601                format!("/v1beta1/{p0}/dnsPolicyAssociations"),
21602            )
21603            .with_body(body)
21604            .with_query(query)
21605            .idempotent();
21606        let operation = self.service.call(call).await?;
21607        Ok(
21608            ::origincloud_core::Operation::new(
21609                self.service.clone(),
21610                operation,
21611                "origincloud.network.v1beta1.DnsPolicyAssociation",
21612            ),
21613        )
21614    }
21615    /// Removes a VPC's DNS policy association: the VPC relays through the
21616    /// project's default DNS policy in its region again. The operation is done
21617    /// once the change is recorded; the VPC's resolver applies it within
21618    /// seconds.
21619    ///
21620    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21621    pub async fn delete_dns_policy_association(
21622        &self,
21623        mut request: DeleteDnsPolicyAssociationRequest,
21624    ) -> ::core::result::Result<
21625        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21626        ::origincloud_core::Error,
21627    > {
21628        if request.request_id.is_empty() {
21629            request.request_id = ::origincloud_core::new_request_id();
21630        }
21631        let p0 = ::origincloud_core::path_value(
21632            "name",
21633            &request.name,
21634            "projects/*/regions/*/vpcs/*/dnsPolicyAssociations/*",
21635        )?;
21636        let query = ::origincloud_core::query(&request, &["name"])?;
21637        let call = ::origincloud_core::Request::new(
21638                ::origincloud_core::Method::DELETE,
21639                format!("/v1beta1/{p0}"),
21640            )
21641            .with_query(query)
21642            .idempotent();
21643        let operation = self.service.call(call).await?;
21644        Ok(
21645            ::origincloud_core::Operation::new(
21646                self.service.clone(),
21647                operation,
21648                "google.protobuf.Empty",
21649            ),
21650        )
21651    }
21652}
21653/// Calls `FloatingIpService`.
21654///
21655/// Floating IPs: public IPv4 addresses of your own in one zone, kept until
21656/// released. Associated with a network interface
21657/// (`FloatingIpAssociationService`), the address reaches the interface's
21658/// private IPv4 address both ways (static 1:1 NAT). The interface's subnet
21659/// reaches, and is reached from, the internet over IPv4 only if its own
21660/// route table has the IPv4 default route (see the subnet's `route_table`).
21661#[derive(Clone, Debug)]
21662pub struct FloatingIpClient {
21663    service: ::origincloud_core::Service,
21664}
21665impl FloatingIpClient {
21666    /// Returns a client of `FloatingIpService` that sends its calls through `client`.
21667    pub fn new(client: &::origincloud_core::Client) -> Self {
21668        Self {
21669            service: client.service("network", true),
21670        }
21671    }
21672    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21673    pub fn service(&self) -> &::origincloud_core::Service {
21674        &self.service
21675    }
21676    /// Returns a floating IP.
21677    pub async fn get_floating_ip(
21678        &self,
21679        request: GetFloatingIpRequest,
21680    ) -> ::core::result::Result<FloatingIp, ::origincloud_core::Error> {
21681        let p0 = ::origincloud_core::path_value(
21682            "name",
21683            &request.name,
21684            "projects/*/zones/*/floatingIps/*",
21685        )?;
21686        let query = ::origincloud_core::query(&request, &["name"])?;
21687        let call = ::origincloud_core::Request::new(
21688                ::origincloud_core::Method::GET,
21689                format!("/v1beta1/{p0}"),
21690            )
21691            .with_query(query)
21692            .idempotent();
21693        self.service.call(call).await
21694    }
21695    /// Lists the floating IPs in a zone, oldest first, those the platform
21696    /// assigned at launch included.
21697    pub async fn list_floating_ips(
21698        &self,
21699        request: ListFloatingIpsRequest,
21700    ) -> ::core::result::Result<ListFloatingIpsResponse, ::origincloud_core::Error> {
21701        let p0 = ::origincloud_core::path_value(
21702            "parent",
21703            &request.parent,
21704            "projects/*/zones/*",
21705        )?;
21706        let query = ::origincloud_core::query(&request, &["parent"])?;
21707        let call = ::origincloud_core::Request::new(
21708                ::origincloud_core::Method::GET,
21709                format!("/v1beta1/{p0}/floatingIps"),
21710            )
21711            .with_query(query)
21712            .idempotent();
21713        self.service.call(call).await
21714    }
21715    /// 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.
21716    pub fn all_floating_ips(
21717        &self,
21718        request: ListFloatingIpsRequest,
21719    ) -> ::origincloud_core::Pages<FloatingIp> {
21720        let client = self.clone();
21721        ::origincloud_core::Pages::new(
21722            request,
21723            move |request: ListFloatingIpsRequest| {
21724                let client = client.clone();
21725                async move {
21726                    let page = client.list_floating_ips(request).await?;
21727                    Ok((page.floating_ips, page.next_page_token))
21728                }
21729            },
21730            |request: &mut ListFloatingIpsRequest, token: ::std::string::String| {
21731                request.page_token = token;
21732            },
21733        )
21734    }
21735    /// Allocates a floating IP from the zone's public addresses, associated
21736    /// with nothing. The operation is done once the address is recorded as
21737    /// yours.
21738    ///
21739    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIp`] once the change is done.
21740    pub async fn create_floating_ip(
21741        &self,
21742        mut request: CreateFloatingIpRequest,
21743    ) -> ::core::result::Result<
21744        ::origincloud_core::Operation<FloatingIp>,
21745        ::origincloud_core::Error,
21746    > {
21747        if request.request_id.is_empty() {
21748            request.request_id = ::origincloud_core::new_request_id();
21749        }
21750        let p0 = ::origincloud_core::path_value(
21751            "parent",
21752            &request.parent,
21753            "projects/*/zones/*",
21754        )?;
21755        let body = ::origincloud_core::json_body(
21756            request.floating_ip.as_ref().unwrap_or(&::core::default::Default::default()),
21757        )?;
21758        let query = ::origincloud_core::query(&request, &["parent", "floatingIp"])?;
21759        let call = ::origincloud_core::Request::new(
21760                ::origincloud_core::Method::POST,
21761                format!("/v1beta1/{p0}/floatingIps"),
21762            )
21763            .with_body(body)
21764            .with_query(query)
21765            .idempotent();
21766        let operation = self.service.call(call).await?;
21767        Ok(
21768            ::origincloud_core::Operation::new(
21769                self.service.clone(),
21770                operation,
21771                "origincloud.network.v1beta1.FloatingIp",
21772            ),
21773        )
21774    }
21775    /// Changes a floating IP's tags. The operation is done once the change is
21776    /// recorded.
21777    ///
21778    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIp`] once the change is done.
21779    pub async fn update_floating_ip(
21780        &self,
21781        mut request: UpdateFloatingIpRequest,
21782    ) -> ::core::result::Result<
21783        ::origincloud_core::Operation<FloatingIp>,
21784        ::origincloud_core::Error,
21785    > {
21786        if request.request_id.is_empty() {
21787            request.request_id = ::origincloud_core::new_request_id();
21788        }
21789        let p0 = ::origincloud_core::path_value(
21790            "floatingIp.name",
21791            request.floating_ip.as_ref().map_or("", |m| m.name.as_str()),
21792            "projects/*/zones/*/floatingIps/*",
21793        )?;
21794        let body = ::origincloud_core::json_body(
21795            request.floating_ip.as_ref().unwrap_or(&::core::default::Default::default()),
21796        )?;
21797        let query = ::origincloud_core::query(
21798            &request,
21799            &["floatingIp.name", "floatingIp"],
21800        )?;
21801        let call = ::origincloud_core::Request::new(
21802                ::origincloud_core::Method::PATCH,
21803                format!("/v1beta1/{p0}"),
21804            )
21805            .with_body(body)
21806            .with_query(query)
21807            .idempotent();
21808        let operation = self.service.call(call).await?;
21809        Ok(
21810            ::origincloud_core::Operation::new(
21811                self.service.clone(),
21812                operation,
21813                "origincloud.network.v1beta1.FloatingIp",
21814            ),
21815        )
21816    }
21817    /// Releases a floating IP: its address goes back to the zone. Refused
21818    /// while it is associated with a network interface or a NAT gateway uses
21819    /// it. The operation is done once the change is recorded.
21820    ///
21821    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21822    pub async fn delete_floating_ip(
21823        &self,
21824        mut request: DeleteFloatingIpRequest,
21825    ) -> ::core::result::Result<
21826        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21827        ::origincloud_core::Error,
21828    > {
21829        if request.request_id.is_empty() {
21830            request.request_id = ::origincloud_core::new_request_id();
21831        }
21832        let p0 = ::origincloud_core::path_value(
21833            "name",
21834            &request.name,
21835            "projects/*/zones/*/floatingIps/*",
21836        )?;
21837        let query = ::origincloud_core::query(&request, &["name"])?;
21838        let call = ::origincloud_core::Request::new(
21839                ::origincloud_core::Method::DELETE,
21840                format!("/v1beta1/{p0}"),
21841            )
21842            .with_query(query)
21843            .idempotent();
21844        let operation = self.service.call(call).await?;
21845        Ok(
21846            ::origincloud_core::Operation::new(
21847                self.service.clone(),
21848                operation,
21849                "google.protobuf.Empty",
21850            ),
21851        )
21852    }
21853}
21854/// Calls `FloatingIpAssociationService`.
21855///
21856/// Floating IP associations: which network interface a floating IP reaches. A
21857/// floating IP has at most one (see the floating IP's `network_interface`).
21858/// An association's id is the id of the network interface it names, so a
21859/// client that knows the floating IP and the interface names the association
21860/// without listing. To move an address to another interface, delete its
21861/// association and create another.
21862#[derive(Clone, Debug)]
21863pub struct FloatingIpAssociationClient {
21864    service: ::origincloud_core::Service,
21865}
21866impl FloatingIpAssociationClient {
21867    /// Returns a client of `FloatingIpAssociationService` that sends its calls through `client`.
21868    pub fn new(client: &::origincloud_core::Client) -> Self {
21869        Self {
21870            service: client.service("network", true),
21871        }
21872    }
21873    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21874    pub fn service(&self) -> &::origincloud_core::Service {
21875        &self.service
21876    }
21877    /// Returns a floating IP association.
21878    pub async fn get_floating_ip_association(
21879        &self,
21880        request: GetFloatingIpAssociationRequest,
21881    ) -> ::core::result::Result<FloatingIpAssociation, ::origincloud_core::Error> {
21882        let p0 = ::origincloud_core::path_value(
21883            "name",
21884            &request.name,
21885            "projects/*/zones/*/floatingIps/*/associations/*",
21886        )?;
21887        let query = ::origincloud_core::query(&request, &["name"])?;
21888        let call = ::origincloud_core::Request::new(
21889                ::origincloud_core::Method::GET,
21890                format!("/v1beta1/{p0}"),
21891            )
21892            .with_query(query)
21893            .idempotent();
21894        self.service.call(call).await
21895    }
21896    /// Lists a floating IP's associations: none or one.
21897    pub async fn list_floating_ip_associations(
21898        &self,
21899        request: ListFloatingIpAssociationsRequest,
21900    ) -> ::core::result::Result<
21901        ListFloatingIpAssociationsResponse,
21902        ::origincloud_core::Error,
21903    > {
21904        let p0 = ::origincloud_core::path_value(
21905            "parent",
21906            &request.parent,
21907            "projects/*/zones/*/floatingIps/*",
21908        )?;
21909        let query = ::origincloud_core::query(&request, &["parent"])?;
21910        let call = ::origincloud_core::Request::new(
21911                ::origincloud_core::Method::GET,
21912                format!("/v1beta1/{p0}/associations"),
21913            )
21914            .with_query(query)
21915            .idempotent();
21916        self.service.call(call).await
21917    }
21918    /// 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.
21919    pub fn all_floating_ip_associations(
21920        &self,
21921        request: ListFloatingIpAssociationsRequest,
21922    ) -> ::origincloud_core::Pages<FloatingIpAssociation> {
21923        let client = self.clone();
21924        ::origincloud_core::Pages::new(
21925            request,
21926            move |request: ListFloatingIpAssociationsRequest| {
21927                let client = client.clone();
21928                async move {
21929                    let page = client.list_floating_ip_associations(request).await?;
21930                    Ok((page.floating_ip_associations, page.next_page_token))
21931                }
21932            },
21933            |
21934                request: &mut ListFloatingIpAssociationsRequest,
21935                token: ::std::string::String|
21936            request.page_token = token,
21937        )
21938    }
21939    /// Associates a floating IP with a network interface. Refused with
21940    /// `FAILED_PRECONDITION` when the floating IP has an association, and
21941    /// while the address backs a NAT gateway. The operation is done once the
21942    /// change is recorded; the network applies it within seconds.
21943    ///
21944    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIpAssociation`] once the change is done.
21945    pub async fn create_floating_ip_association(
21946        &self,
21947        mut request: CreateFloatingIpAssociationRequest,
21948    ) -> ::core::result::Result<
21949        ::origincloud_core::Operation<FloatingIpAssociation>,
21950        ::origincloud_core::Error,
21951    > {
21952        if request.request_id.is_empty() {
21953            request.request_id = ::origincloud_core::new_request_id();
21954        }
21955        let p0 = ::origincloud_core::path_value(
21956            "parent",
21957            &request.parent,
21958            "projects/*/zones/*/floatingIps/*",
21959        )?;
21960        let body = ::origincloud_core::json_body(
21961            request
21962                .floating_ip_association
21963                .as_ref()
21964                .unwrap_or(&::core::default::Default::default()),
21965        )?;
21966        let query = ::origincloud_core::query(
21967            &request,
21968            &["parent", "floatingIpAssociation"],
21969        )?;
21970        let call = ::origincloud_core::Request::new(
21971                ::origincloud_core::Method::POST,
21972                format!("/v1beta1/{p0}/associations"),
21973            )
21974            .with_body(body)
21975            .with_query(query)
21976            .idempotent();
21977        let operation = self.service.call(call).await?;
21978        Ok(
21979            ::origincloud_core::Operation::new(
21980                self.service.clone(),
21981                operation,
21982                "origincloud.network.v1beta1.FloatingIpAssociation",
21983            ),
21984        )
21985    }
21986    /// Removes a floating IP's association: the address reaches nothing, and
21987    /// stays allocated. The operation is done once the change is recorded; the
21988    /// network applies it within seconds.
21989    ///
21990    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21991    pub async fn delete_floating_ip_association(
21992        &self,
21993        mut request: DeleteFloatingIpAssociationRequest,
21994    ) -> ::core::result::Result<
21995        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21996        ::origincloud_core::Error,
21997    > {
21998        if request.request_id.is_empty() {
21999            request.request_id = ::origincloud_core::new_request_id();
22000        }
22001        let p0 = ::origincloud_core::path_value(
22002            "name",
22003            &request.name,
22004            "projects/*/zones/*/floatingIps/*/associations/*",
22005        )?;
22006        let query = ::origincloud_core::query(&request, &["name"])?;
22007        let call = ::origincloud_core::Request::new(
22008                ::origincloud_core::Method::DELETE,
22009                format!("/v1beta1/{p0}"),
22010            )
22011            .with_query(query)
22012            .idempotent();
22013        let operation = self.service.call(call).await?;
22014        Ok(
22015            ::origincloud_core::Operation::new(
22016                self.service.clone(),
22017                operation,
22018                "google.protobuf.Empty",
22019            ),
22020        )
22021    }
22022}
22023/// Calls `InternetGatewayService`.
22024///
22025/// Internet gateways: a VPC's way to and from the internet, for its
22026/// instances' floating IPs and IPv6 addresses and for its NAT gateways. A VPC
22027/// has at most one, and a subnet reaches it through a route that targets it:
22028/// a subnet reaches, and is reached from, the internet for an address family
22029/// only if its own route table has that family's default route.
22030#[derive(Clone, Debug)]
22031pub struct InternetGatewayClient {
22032    service: ::origincloud_core::Service,
22033}
22034impl InternetGatewayClient {
22035    /// Returns a client of `InternetGatewayService` that sends its calls through `client`.
22036    pub fn new(client: &::origincloud_core::Client) -> Self {
22037        Self {
22038            service: client.service("network", true),
22039        }
22040    }
22041    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22042    pub fn service(&self) -> &::origincloud_core::Service {
22043        &self.service
22044    }
22045    /// Returns an internet gateway.
22046    pub async fn get_internet_gateway(
22047        &self,
22048        request: GetInternetGatewayRequest,
22049    ) -> ::core::result::Result<InternetGateway, ::origincloud_core::Error> {
22050        let p0 = ::origincloud_core::path_value(
22051            "name",
22052            &request.name,
22053            "projects/*/regions/*/internetGateways/*",
22054        )?;
22055        let query = ::origincloud_core::query(&request, &["name"])?;
22056        let call = ::origincloud_core::Request::new(
22057                ::origincloud_core::Method::GET,
22058                format!("/v1beta1/{p0}"),
22059            )
22060            .with_query(query)
22061            .idempotent();
22062        self.service.call(call).await
22063    }
22064    /// Lists the internet gateways in a region, oldest first.
22065    pub async fn list_internet_gateways(
22066        &self,
22067        request: ListInternetGatewaysRequest,
22068    ) -> ::core::result::Result<
22069        ListInternetGatewaysResponse,
22070        ::origincloud_core::Error,
22071    > {
22072        let p0 = ::origincloud_core::path_value(
22073            "parent",
22074            &request.parent,
22075            "projects/*/regions/*",
22076        )?;
22077        let query = ::origincloud_core::query(&request, &["parent"])?;
22078        let call = ::origincloud_core::Request::new(
22079                ::origincloud_core::Method::GET,
22080                format!("/v1beta1/{p0}/internetGateways"),
22081            )
22082            .with_query(query)
22083            .idempotent();
22084        self.service.call(call).await
22085    }
22086    /// 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.
22087    pub fn all_internet_gateways(
22088        &self,
22089        request: ListInternetGatewaysRequest,
22090    ) -> ::origincloud_core::Pages<InternetGateway> {
22091        let client = self.clone();
22092        ::origincloud_core::Pages::new(
22093            request,
22094            move |request: ListInternetGatewaysRequest| {
22095                let client = client.clone();
22096                async move {
22097                    let page = client.list_internet_gateways(request).await?;
22098                    Ok((page.internet_gateways, page.next_page_token))
22099                }
22100            },
22101            |request: &mut ListInternetGatewaysRequest, token: ::std::string::String| {
22102                request.page_token = token;
22103            },
22104        )
22105    }
22106    /// Creates a VPC's internet gateway. Refused with `FAILED_PRECONDITION`
22107    /// when the VPC has one. The operation is done once the change is recorded;
22108    /// the network applies it within seconds.
22109    ///
22110    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`InternetGateway`] once the change is done.
22111    pub async fn create_internet_gateway(
22112        &self,
22113        mut request: CreateInternetGatewayRequest,
22114    ) -> ::core::result::Result<
22115        ::origincloud_core::Operation<InternetGateway>,
22116        ::origincloud_core::Error,
22117    > {
22118        if request.request_id.is_empty() {
22119            request.request_id = ::origincloud_core::new_request_id();
22120        }
22121        let p0 = ::origincloud_core::path_value(
22122            "parent",
22123            &request.parent,
22124            "projects/*/regions/*",
22125        )?;
22126        let body = ::origincloud_core::json_body(
22127            request
22128                .internet_gateway
22129                .as_ref()
22130                .unwrap_or(&::core::default::Default::default()),
22131        )?;
22132        let query = ::origincloud_core::query(&request, &["parent", "internetGateway"])?;
22133        let call = ::origincloud_core::Request::new(
22134                ::origincloud_core::Method::POST,
22135                format!("/v1beta1/{p0}/internetGateways"),
22136            )
22137            .with_body(body)
22138            .with_query(query)
22139            .idempotent();
22140        let operation = self.service.call(call).await?;
22141        Ok(
22142            ::origincloud_core::Operation::new(
22143                self.service.clone(),
22144                operation,
22145                "origincloud.network.v1beta1.InternetGateway",
22146            ),
22147        )
22148    }
22149    /// Changes an internet gateway's tags. The operation is done once the
22150    /// change is recorded.
22151    ///
22152    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`InternetGateway`] once the change is done.
22153    pub async fn update_internet_gateway(
22154        &self,
22155        mut request: UpdateInternetGatewayRequest,
22156    ) -> ::core::result::Result<
22157        ::origincloud_core::Operation<InternetGateway>,
22158        ::origincloud_core::Error,
22159    > {
22160        if request.request_id.is_empty() {
22161            request.request_id = ::origincloud_core::new_request_id();
22162        }
22163        let p0 = ::origincloud_core::path_value(
22164            "internetGateway.name",
22165            request.internet_gateway.as_ref().map_or("", |m| m.name.as_str()),
22166            "projects/*/regions/*/internetGateways/*",
22167        )?;
22168        let body = ::origincloud_core::json_body(
22169            request
22170                .internet_gateway
22171                .as_ref()
22172                .unwrap_or(&::core::default::Default::default()),
22173        )?;
22174        let query = ::origincloud_core::query(
22175            &request,
22176            &["internetGateway.name", "internetGateway"],
22177        )?;
22178        let call = ::origincloud_core::Request::new(
22179                ::origincloud_core::Method::PATCH,
22180                format!("/v1beta1/{p0}"),
22181            )
22182            .with_body(body)
22183            .with_query(query)
22184            .idempotent();
22185        let operation = self.service.call(call).await?;
22186        Ok(
22187            ::origincloud_core::Operation::new(
22188                self.service.clone(),
22189                operation,
22190                "origincloud.network.v1beta1.InternetGateway",
22191            ),
22192        )
22193    }
22194    /// Deletes an internet gateway, which cuts the VPC off from the internet.
22195    /// Refused while a route targets it. The operation is done once the
22196    /// change is recorded; the network applies it within seconds.
22197    ///
22198    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22199    pub async fn delete_internet_gateway(
22200        &self,
22201        mut request: DeleteInternetGatewayRequest,
22202    ) -> ::core::result::Result<
22203        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22204        ::origincloud_core::Error,
22205    > {
22206        if request.request_id.is_empty() {
22207            request.request_id = ::origincloud_core::new_request_id();
22208        }
22209        let p0 = ::origincloud_core::path_value(
22210            "name",
22211            &request.name,
22212            "projects/*/regions/*/internetGateways/*",
22213        )?;
22214        let query = ::origincloud_core::query(&request, &["name"])?;
22215        let call = ::origincloud_core::Request::new(
22216                ::origincloud_core::Method::DELETE,
22217                format!("/v1beta1/{p0}"),
22218            )
22219            .with_query(query)
22220            .idempotent();
22221        let operation = self.service.call(call).await?;
22222        Ok(
22223            ::origincloud_core::Operation::new(
22224                self.service.clone(),
22225                operation,
22226                "google.protobuf.Empty",
22227            ),
22228        )
22229    }
22230}
22231/// Calls `NatGatewayService`.
22232///
22233/// NAT gateways: shared IPv4 egress for instances without a floating IP of
22234/// their own. Instances in a subnet whose route table sends the IPv4 default
22235/// route to a NAT gateway reach the internet as the gateway's floating IP,
22236/// and can't be reached from it.
22237#[derive(Clone, Debug)]
22238pub struct NatGatewayClient {
22239    service: ::origincloud_core::Service,
22240}
22241impl NatGatewayClient {
22242    /// Returns a client of `NatGatewayService` that sends its calls through `client`.
22243    pub fn new(client: &::origincloud_core::Client) -> Self {
22244        Self {
22245            service: client.service("network", true),
22246        }
22247    }
22248    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22249    pub fn service(&self) -> &::origincloud_core::Service {
22250        &self.service
22251    }
22252    /// Returns a NAT gateway.
22253    pub async fn get_nat_gateway(
22254        &self,
22255        request: GetNatGatewayRequest,
22256    ) -> ::core::result::Result<NatGateway, ::origincloud_core::Error> {
22257        let p0 = ::origincloud_core::path_value(
22258            "name",
22259            &request.name,
22260            "projects/*/zones/*/natGateways/*",
22261        )?;
22262        let query = ::origincloud_core::query(&request, &["name"])?;
22263        let call = ::origincloud_core::Request::new(
22264                ::origincloud_core::Method::GET,
22265                format!("/v1beta1/{p0}"),
22266            )
22267            .with_query(query)
22268            .idempotent();
22269        self.service.call(call).await
22270    }
22271    /// Lists the NAT gateways in a zone, oldest first.
22272    pub async fn list_nat_gateways(
22273        &self,
22274        request: ListNatGatewaysRequest,
22275    ) -> ::core::result::Result<ListNatGatewaysResponse, ::origincloud_core::Error> {
22276        let p0 = ::origincloud_core::path_value(
22277            "parent",
22278            &request.parent,
22279            "projects/*/zones/*",
22280        )?;
22281        let query = ::origincloud_core::query(&request, &["parent"])?;
22282        let call = ::origincloud_core::Request::new(
22283                ::origincloud_core::Method::GET,
22284                format!("/v1beta1/{p0}/natGateways"),
22285            )
22286            .with_query(query)
22287            .idempotent();
22288        self.service.call(call).await
22289    }
22290    /// 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.
22291    pub fn all_nat_gateways(
22292        &self,
22293        request: ListNatGatewaysRequest,
22294    ) -> ::origincloud_core::Pages<NatGateway> {
22295        let client = self.clone();
22296        ::origincloud_core::Pages::new(
22297            request,
22298            move |request: ListNatGatewaysRequest| {
22299                let client = client.clone();
22300                async move {
22301                    let page = client.list_nat_gateways(request).await?;
22302                    Ok((page.nat_gateways, page.next_page_token))
22303                }
22304            },
22305            |request: &mut ListNatGatewaysRequest, token: ::std::string::String| {
22306                request.page_token = token;
22307            },
22308        )
22309    }
22310    /// Creates a NAT gateway in a public subnet, one whose route table sends
22311    /// the IPv4 default route to an internet gateway, with a floating IP that
22312    /// has no association and backs no other NAT gateway. The operation is
22313    /// done once the change is recorded; the network applies it within
22314    /// seconds.
22315    ///
22316    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NatGateway`] once the change is done.
22317    pub async fn create_nat_gateway(
22318        &self,
22319        mut request: CreateNatGatewayRequest,
22320    ) -> ::core::result::Result<
22321        ::origincloud_core::Operation<NatGateway>,
22322        ::origincloud_core::Error,
22323    > {
22324        if request.request_id.is_empty() {
22325            request.request_id = ::origincloud_core::new_request_id();
22326        }
22327        let p0 = ::origincloud_core::path_value(
22328            "parent",
22329            &request.parent,
22330            "projects/*/zones/*",
22331        )?;
22332        let body = ::origincloud_core::json_body(
22333            request.nat_gateway.as_ref().unwrap_or(&::core::default::Default::default()),
22334        )?;
22335        let query = ::origincloud_core::query(&request, &["parent", "natGateway"])?;
22336        let call = ::origincloud_core::Request::new(
22337                ::origincloud_core::Method::POST,
22338                format!("/v1beta1/{p0}/natGateways"),
22339            )
22340            .with_body(body)
22341            .with_query(query)
22342            .idempotent();
22343        let operation = self.service.call(call).await?;
22344        Ok(
22345            ::origincloud_core::Operation::new(
22346                self.service.clone(),
22347                operation,
22348                "origincloud.network.v1beta1.NatGateway",
22349            ),
22350        )
22351    }
22352    /// Changes a NAT gateway's tags. The operation is done once the change is
22353    /// recorded.
22354    ///
22355    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NatGateway`] once the change is done.
22356    pub async fn update_nat_gateway(
22357        &self,
22358        mut request: UpdateNatGatewayRequest,
22359    ) -> ::core::result::Result<
22360        ::origincloud_core::Operation<NatGateway>,
22361        ::origincloud_core::Error,
22362    > {
22363        if request.request_id.is_empty() {
22364            request.request_id = ::origincloud_core::new_request_id();
22365        }
22366        let p0 = ::origincloud_core::path_value(
22367            "natGateway.name",
22368            request.nat_gateway.as_ref().map_or("", |m| m.name.as_str()),
22369            "projects/*/zones/*/natGateways/*",
22370        )?;
22371        let body = ::origincloud_core::json_body(
22372            request.nat_gateway.as_ref().unwrap_or(&::core::default::Default::default()),
22373        )?;
22374        let query = ::origincloud_core::query(
22375            &request,
22376            &["natGateway.name", "natGateway"],
22377        )?;
22378        let call = ::origincloud_core::Request::new(
22379                ::origincloud_core::Method::PATCH,
22380                format!("/v1beta1/{p0}"),
22381            )
22382            .with_body(body)
22383            .with_query(query)
22384            .idempotent();
22385        let operation = self.service.call(call).await?;
22386        Ok(
22387            ::origincloud_core::Operation::new(
22388                self.service.clone(),
22389                operation,
22390                "origincloud.network.v1beta1.NatGateway",
22391            ),
22392        )
22393    }
22394    /// Deletes a NAT gateway. Its floating IP stays allocated. Refused while
22395    /// a route targets it. The operation is done once the change is recorded;
22396    /// the network applies it within seconds.
22397    ///
22398    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22399    pub async fn delete_nat_gateway(
22400        &self,
22401        mut request: DeleteNatGatewayRequest,
22402    ) -> ::core::result::Result<
22403        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22404        ::origincloud_core::Error,
22405    > {
22406        if request.request_id.is_empty() {
22407            request.request_id = ::origincloud_core::new_request_id();
22408        }
22409        let p0 = ::origincloud_core::path_value(
22410            "name",
22411            &request.name,
22412            "projects/*/zones/*/natGateways/*",
22413        )?;
22414        let query = ::origincloud_core::query(&request, &["name"])?;
22415        let call = ::origincloud_core::Request::new(
22416                ::origincloud_core::Method::DELETE,
22417                format!("/v1beta1/{p0}"),
22418            )
22419            .with_query(query)
22420            .idempotent();
22421        let operation = self.service.call(call).await?;
22422        Ok(
22423            ::origincloud_core::Operation::new(
22424                self.service.clone(),
22425                operation,
22426                "google.protobuf.Empty",
22427            ),
22428        )
22429    }
22430}
22431/// Calls `NetworkInterfaceService`.
22432///
22433/// Network interfaces: private IPv4 and IPv6 addresses in a subnet, with the
22434/// security groups that filter their traffic. Launching an instance attaches
22435/// existing interfaces, which are created here first; an interface starts
22436/// closed until security group associations open it.
22437#[derive(Clone, Debug)]
22438pub struct NetworkInterfaceClient {
22439    service: ::origincloud_core::Service,
22440}
22441impl NetworkInterfaceClient {
22442    /// Returns a client of `NetworkInterfaceService` that sends its calls through `client`.
22443    pub fn new(client: &::origincloud_core::Client) -> Self {
22444        Self {
22445            service: client.service("network", true),
22446        }
22447    }
22448    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22449    pub fn service(&self) -> &::origincloud_core::Service {
22450        &self.service
22451    }
22452    /// Returns a network interface.
22453    pub async fn get_network_interface(
22454        &self,
22455        request: GetNetworkInterfaceRequest,
22456    ) -> ::core::result::Result<NetworkInterface, ::origincloud_core::Error> {
22457        let p0 = ::origincloud_core::path_value(
22458            "name",
22459            &request.name,
22460            "projects/*/zones/*/networkInterfaces/*",
22461        )?;
22462        let query = ::origincloud_core::query(&request, &["name"])?;
22463        let call = ::origincloud_core::Request::new(
22464                ::origincloud_core::Method::GET,
22465                format!("/v1beta1/{p0}"),
22466            )
22467            .with_query(query)
22468            .idempotent();
22469        self.service.call(call).await
22470    }
22471    /// Lists the network interfaces in a zone, oldest first.
22472    pub async fn list_network_interfaces(
22473        &self,
22474        request: ListNetworkInterfacesRequest,
22475    ) -> ::core::result::Result<
22476        ListNetworkInterfacesResponse,
22477        ::origincloud_core::Error,
22478    > {
22479        let p0 = ::origincloud_core::path_value(
22480            "parent",
22481            &request.parent,
22482            "projects/*/zones/*",
22483        )?;
22484        let query = ::origincloud_core::query(&request, &["parent"])?;
22485        let call = ::origincloud_core::Request::new(
22486                ::origincloud_core::Method::GET,
22487                format!("/v1beta1/{p0}/networkInterfaces"),
22488            )
22489            .with_query(query)
22490            .idempotent();
22491        self.service.call(call).await
22492    }
22493    /// 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.
22494    pub fn all_network_interfaces(
22495        &self,
22496        request: ListNetworkInterfacesRequest,
22497    ) -> ::origincloud_core::Pages<NetworkInterface> {
22498        let client = self.clone();
22499        ::origincloud_core::Pages::new(
22500            request,
22501            move |request: ListNetworkInterfacesRequest| {
22502                let client = client.clone();
22503                async move {
22504                    let page = client.list_network_interfaces(request).await?;
22505                    Ok((page.network_interfaces, page.next_page_token))
22506                }
22507            },
22508            |request: &mut ListNetworkInterfacesRequest, token: ::std::string::String| {
22509                request.page_token = token;
22510            },
22511        )
22512    }
22513    /// Creates an unattached network interface with the next free addresses
22514    /// of its subnet and no security group: it admits and sends nothing until
22515    /// a security group association opens it. The operation is done once the
22516    /// change is recorded; the network applies it within seconds.
22517    ///
22518    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NetworkInterface`] once the change is done.
22519    pub async fn create_network_interface(
22520        &self,
22521        mut request: CreateNetworkInterfaceRequest,
22522    ) -> ::core::result::Result<
22523        ::origincloud_core::Operation<NetworkInterface>,
22524        ::origincloud_core::Error,
22525    > {
22526        if request.request_id.is_empty() {
22527            request.request_id = ::origincloud_core::new_request_id();
22528        }
22529        let p0 = ::origincloud_core::path_value(
22530            "parent",
22531            &request.parent,
22532            "projects/*/zones/*",
22533        )?;
22534        let body = ::origincloud_core::json_body(
22535            request
22536                .network_interface
22537                .as_ref()
22538                .unwrap_or(&::core::default::Default::default()),
22539        )?;
22540        let query = ::origincloud_core::query(
22541            &request,
22542            &["parent", "networkInterface"],
22543        )?;
22544        let call = ::origincloud_core::Request::new(
22545                ::origincloud_core::Method::POST,
22546                format!("/v1beta1/{p0}/networkInterfaces"),
22547            )
22548            .with_body(body)
22549            .with_query(query)
22550            .idempotent();
22551        let operation = self.service.call(call).await?;
22552        Ok(
22553            ::origincloud_core::Operation::new(
22554                self.service.clone(),
22555                operation,
22556                "origincloud.network.v1beta1.NetworkInterface",
22557            ),
22558        )
22559    }
22560    /// Changes a network interface's source-address check or tags, also while
22561    /// it is attached. The operation is done once the change is recorded; the
22562    /// network applies it within seconds.
22563    ///
22564    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NetworkInterface`] once the change is done.
22565    pub async fn update_network_interface(
22566        &self,
22567        mut request: UpdateNetworkInterfaceRequest,
22568    ) -> ::core::result::Result<
22569        ::origincloud_core::Operation<NetworkInterface>,
22570        ::origincloud_core::Error,
22571    > {
22572        if request.request_id.is_empty() {
22573            request.request_id = ::origincloud_core::new_request_id();
22574        }
22575        let p0 = ::origincloud_core::path_value(
22576            "networkInterface.name",
22577            request.network_interface.as_ref().map_or("", |m| m.name.as_str()),
22578            "projects/*/zones/*/networkInterfaces/*",
22579        )?;
22580        let body = ::origincloud_core::json_body(
22581            request
22582                .network_interface
22583                .as_ref()
22584                .unwrap_or(&::core::default::Default::default()),
22585        )?;
22586        let query = ::origincloud_core::query(
22587            &request,
22588            &["networkInterface.name", "networkInterface"],
22589        )?;
22590        let call = ::origincloud_core::Request::new(
22591                ::origincloud_core::Method::PATCH,
22592                format!("/v1beta1/{p0}"),
22593            )
22594            .with_body(body)
22595            .with_query(query)
22596            .idempotent();
22597        let operation = self.service.call(call).await?;
22598        Ok(
22599            ::origincloud_core::Operation::new(
22600                self.service.clone(),
22601                operation,
22602                "origincloud.network.v1beta1.NetworkInterface",
22603            ),
22604        )
22605    }
22606    /// Deletes a network interface with its security group associations.
22607    /// Refused while it is attached to an instance or a floating IP is
22608    /// associated with it. The operation is done once the change is
22609    /// recorded; the network applies it within seconds.
22610    ///
22611    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22612    pub async fn delete_network_interface(
22613        &self,
22614        mut request: DeleteNetworkInterfaceRequest,
22615    ) -> ::core::result::Result<
22616        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22617        ::origincloud_core::Error,
22618    > {
22619        if request.request_id.is_empty() {
22620            request.request_id = ::origincloud_core::new_request_id();
22621        }
22622        let p0 = ::origincloud_core::path_value(
22623            "name",
22624            &request.name,
22625            "projects/*/zones/*/networkInterfaces/*",
22626        )?;
22627        let query = ::origincloud_core::query(&request, &["name"])?;
22628        let call = ::origincloud_core::Request::new(
22629                ::origincloud_core::Method::DELETE,
22630                format!("/v1beta1/{p0}"),
22631            )
22632            .with_query(query)
22633            .idempotent();
22634        let operation = self.service.call(call).await?;
22635        Ok(
22636            ::origincloud_core::Operation::new(
22637                self.service.clone(),
22638                operation,
22639                "google.protobuf.Empty",
22640            ),
22641        )
22642    }
22643}
22644/// Calls `RouteService`.
22645///
22646/// Routes: where a route table sends traffic to a destination outside the
22647/// VPC. A route is immutable: it is created and deleted, never changed, so to
22648/// change one, delete it and create its replacement. A table has at most one
22649/// route per destination, so the replacement can only be created once the old
22650/// route is deleted: between the two, the table has no route to that
22651/// destination.
22652#[derive(Clone, Debug)]
22653pub struct RouteClient {
22654    service: ::origincloud_core::Service,
22655}
22656impl RouteClient {
22657    /// Returns a client of `RouteService` that sends its calls through `client`.
22658    pub fn new(client: &::origincloud_core::Client) -> Self {
22659        Self {
22660            service: client.service("network", true),
22661        }
22662    }
22663    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22664    pub fn service(&self) -> &::origincloud_core::Service {
22665        &self.service
22666    }
22667    /// Returns a route.
22668    pub async fn get_route(
22669        &self,
22670        request: GetRouteRequest,
22671    ) -> ::core::result::Result<Route, ::origincloud_core::Error> {
22672        let p0 = ::origincloud_core::path_value(
22673            "name",
22674            &request.name,
22675            "projects/*/regions/*/routeTables/*/routes/*",
22676        )?;
22677        let query = ::origincloud_core::query(&request, &["name"])?;
22678        let call = ::origincloud_core::Request::new(
22679                ::origincloud_core::Method::GET,
22680                format!("/v1beta1/{p0}"),
22681            )
22682            .with_query(query)
22683            .idempotent();
22684        self.service.call(call).await
22685    }
22686    /// Lists a route table's routes, oldest first. Its local routes aren't
22687    /// listed: they are the table's `local_routes`.
22688    pub async fn list_routes(
22689        &self,
22690        request: ListRoutesRequest,
22691    ) -> ::core::result::Result<ListRoutesResponse, ::origincloud_core::Error> {
22692        let p0 = ::origincloud_core::path_value(
22693            "parent",
22694            &request.parent,
22695            "projects/*/regions/*/routeTables/*",
22696        )?;
22697        let query = ::origincloud_core::query(&request, &["parent"])?;
22698        let call = ::origincloud_core::Request::new(
22699                ::origincloud_core::Method::GET,
22700                format!("/v1beta1/{p0}/routes"),
22701            )
22702            .with_query(query)
22703            .idempotent();
22704        self.service.call(call).await
22705    }
22706    /// 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.
22707    pub fn all_routes(
22708        &self,
22709        request: ListRoutesRequest,
22710    ) -> ::origincloud_core::Pages<Route> {
22711        let client = self.clone();
22712        ::origincloud_core::Pages::new(
22713            request,
22714            move |request: ListRoutesRequest| {
22715                let client = client.clone();
22716                async move {
22717                    let page = client.list_routes(request).await?;
22718                    Ok((page.routes, page.next_page_token))
22719                }
22720            },
22721            |request: &mut ListRoutesRequest, token: ::std::string::String| {
22722                request.page_token = token;
22723            },
22724        )
22725    }
22726    /// Adds a route to a route table. Refused with `FAILED_PRECONDITION` when
22727    /// the table has a route to the same destination. The operation is done
22728    /// once the change is recorded; the network applies it within seconds.
22729    ///
22730    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Route`] once the change is done.
22731    pub async fn create_route(
22732        &self,
22733        mut request: CreateRouteRequest,
22734    ) -> ::core::result::Result<
22735        ::origincloud_core::Operation<Route>,
22736        ::origincloud_core::Error,
22737    > {
22738        if request.request_id.is_empty() {
22739            request.request_id = ::origincloud_core::new_request_id();
22740        }
22741        let p0 = ::origincloud_core::path_value(
22742            "parent",
22743            &request.parent,
22744            "projects/*/regions/*/routeTables/*",
22745        )?;
22746        let body = ::origincloud_core::json_body(
22747            request.route.as_ref().unwrap_or(&::core::default::Default::default()),
22748        )?;
22749        let query = ::origincloud_core::query(&request, &["parent", "route"])?;
22750        let call = ::origincloud_core::Request::new(
22751                ::origincloud_core::Method::POST,
22752                format!("/v1beta1/{p0}/routes"),
22753            )
22754            .with_body(body)
22755            .with_query(query)
22756            .idempotent();
22757        let operation = self.service.call(call).await?;
22758        Ok(
22759            ::origincloud_core::Operation::new(
22760                self.service.clone(),
22761                operation,
22762                "origincloud.network.v1beta1.Route",
22763            ),
22764        )
22765    }
22766    /// Removes a route from its route table. The operation is done once the
22767    /// change is recorded; the network applies it within seconds.
22768    ///
22769    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22770    pub async fn delete_route(
22771        &self,
22772        mut request: DeleteRouteRequest,
22773    ) -> ::core::result::Result<
22774        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22775        ::origincloud_core::Error,
22776    > {
22777        if request.request_id.is_empty() {
22778            request.request_id = ::origincloud_core::new_request_id();
22779        }
22780        let p0 = ::origincloud_core::path_value(
22781            "name",
22782            &request.name,
22783            "projects/*/regions/*/routeTables/*/routes/*",
22784        )?;
22785        let query = ::origincloud_core::query(&request, &["name"])?;
22786        let call = ::origincloud_core::Request::new(
22787                ::origincloud_core::Method::DELETE,
22788                format!("/v1beta1/{p0}"),
22789            )
22790            .with_query(query)
22791            .idempotent();
22792        let operation = self.service.call(call).await?;
22793        Ok(
22794            ::origincloud_core::Operation::new(
22795                self.service.clone(),
22796                operation,
22797                "google.protobuf.Empty",
22798            ),
22799        )
22800    }
22801}
22802/// Calls `RouteTableService`.
22803///
22804/// Route tables: where a subnet's traffic leaves the VPC. A table holds
22805/// routes (`RouteService`), and applies to the subnets that a route table
22806/// association names it for (`RouteTableAssociationService`).
22807#[derive(Clone, Debug)]
22808pub struct RouteTableClient {
22809    service: ::origincloud_core::Service,
22810}
22811impl RouteTableClient {
22812    /// Returns a client of `RouteTableService` that sends its calls through `client`.
22813    pub fn new(client: &::origincloud_core::Client) -> Self {
22814        Self {
22815            service: client.service("network", true),
22816        }
22817    }
22818    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22819    pub fn service(&self) -> &::origincloud_core::Service {
22820        &self.service
22821    }
22822    /// Returns a route table.
22823    pub async fn get_route_table(
22824        &self,
22825        request: GetRouteTableRequest,
22826    ) -> ::core::result::Result<RouteTable, ::origincloud_core::Error> {
22827        let p0 = ::origincloud_core::path_value(
22828            "name",
22829            &request.name,
22830            "projects/*/regions/*/routeTables/*",
22831        )?;
22832        let query = ::origincloud_core::query(&request, &["name"])?;
22833        let call = ::origincloud_core::Request::new(
22834                ::origincloud_core::Method::GET,
22835                format!("/v1beta1/{p0}"),
22836            )
22837            .with_query(query)
22838            .idempotent();
22839        self.service.call(call).await
22840    }
22841    /// Lists the route tables in a region, oldest first.
22842    pub async fn list_route_tables(
22843        &self,
22844        request: ListRouteTablesRequest,
22845    ) -> ::core::result::Result<ListRouteTablesResponse, ::origincloud_core::Error> {
22846        let p0 = ::origincloud_core::path_value(
22847            "parent",
22848            &request.parent,
22849            "projects/*/regions/*",
22850        )?;
22851        let query = ::origincloud_core::query(&request, &["parent"])?;
22852        let call = ::origincloud_core::Request::new(
22853                ::origincloud_core::Method::GET,
22854                format!("/v1beta1/{p0}/routeTables"),
22855            )
22856            .with_query(query)
22857            .idempotent();
22858        self.service.call(call).await
22859    }
22860    /// 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.
22861    pub fn all_route_tables(
22862        &self,
22863        request: ListRouteTablesRequest,
22864    ) -> ::origincloud_core::Pages<RouteTable> {
22865        let client = self.clone();
22866        ::origincloud_core::Pages::new(
22867            request,
22868            move |request: ListRouteTablesRequest| {
22869                let client = client.clone();
22870                async move {
22871                    let page = client.list_route_tables(request).await?;
22872                    Ok((page.route_tables, page.next_page_token))
22873                }
22874            },
22875            |request: &mut ListRouteTablesRequest, token: ::std::string::String| {
22876                request.page_token = token;
22877            },
22878        )
22879    }
22880    /// Creates a route table in a VPC, with the VPC's local routes and no
22881    /// other. The operation is done once the route table is recorded.
22882    ///
22883    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTable`] once the change is done.
22884    pub async fn create_route_table(
22885        &self,
22886        mut request: CreateRouteTableRequest,
22887    ) -> ::core::result::Result<
22888        ::origincloud_core::Operation<RouteTable>,
22889        ::origincloud_core::Error,
22890    > {
22891        if request.request_id.is_empty() {
22892            request.request_id = ::origincloud_core::new_request_id();
22893        }
22894        let p0 = ::origincloud_core::path_value(
22895            "parent",
22896            &request.parent,
22897            "projects/*/regions/*",
22898        )?;
22899        let body = ::origincloud_core::json_body(
22900            request.route_table.as_ref().unwrap_or(&::core::default::Default::default()),
22901        )?;
22902        let query = ::origincloud_core::query(&request, &["parent", "routeTable"])?;
22903        let call = ::origincloud_core::Request::new(
22904                ::origincloud_core::Method::POST,
22905                format!("/v1beta1/{p0}/routeTables"),
22906            )
22907            .with_body(body)
22908            .with_query(query)
22909            .idempotent();
22910        let operation = self.service.call(call).await?;
22911        Ok(
22912            ::origincloud_core::Operation::new(
22913                self.service.clone(),
22914                operation,
22915                "origincloud.network.v1beta1.RouteTable",
22916            ),
22917        )
22918    }
22919    /// Changes a route table's tags. The operation is done once the change is
22920    /// recorded.
22921    ///
22922    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTable`] once the change is done.
22923    pub async fn update_route_table(
22924        &self,
22925        mut request: UpdateRouteTableRequest,
22926    ) -> ::core::result::Result<
22927        ::origincloud_core::Operation<RouteTable>,
22928        ::origincloud_core::Error,
22929    > {
22930        if request.request_id.is_empty() {
22931            request.request_id = ::origincloud_core::new_request_id();
22932        }
22933        let p0 = ::origincloud_core::path_value(
22934            "routeTable.name",
22935            request.route_table.as_ref().map_or("", |m| m.name.as_str()),
22936            "projects/*/regions/*/routeTables/*",
22937        )?;
22938        let body = ::origincloud_core::json_body(
22939            request.route_table.as_ref().unwrap_or(&::core::default::Default::default()),
22940        )?;
22941        let query = ::origincloud_core::query(
22942            &request,
22943            &["routeTable.name", "routeTable"],
22944        )?;
22945        let call = ::origincloud_core::Request::new(
22946                ::origincloud_core::Method::PATCH,
22947                format!("/v1beta1/{p0}"),
22948            )
22949            .with_body(body)
22950            .with_query(query)
22951            .idempotent();
22952        let operation = self.service.call(call).await?;
22953        Ok(
22954            ::origincloud_core::Operation::new(
22955                self.service.clone(),
22956                operation,
22957                "origincloud.network.v1beta1.RouteTable",
22958            ),
22959        )
22960    }
22961    /// Deletes a route table with its routes. Refused for a main route table,
22962    /// which goes with its VPC, and while a route table association names
22963    /// the table. The operation is done once the change is recorded; the
22964    /// network applies it within seconds.
22965    ///
22966    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22967    pub async fn delete_route_table(
22968        &self,
22969        mut request: DeleteRouteTableRequest,
22970    ) -> ::core::result::Result<
22971        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22972        ::origincloud_core::Error,
22973    > {
22974        if request.request_id.is_empty() {
22975            request.request_id = ::origincloud_core::new_request_id();
22976        }
22977        let p0 = ::origincloud_core::path_value(
22978            "name",
22979            &request.name,
22980            "projects/*/regions/*/routeTables/*",
22981        )?;
22982        let query = ::origincloud_core::query(&request, &["name"])?;
22983        let call = ::origincloud_core::Request::new(
22984                ::origincloud_core::Method::DELETE,
22985                format!("/v1beta1/{p0}"),
22986            )
22987            .with_query(query)
22988            .idempotent();
22989        let operation = self.service.call(call).await?;
22990        Ok(
22991            ::origincloud_core::Operation::new(
22992                self.service.clone(),
22993                operation,
22994                "google.protobuf.Empty",
22995            ),
22996        )
22997    }
22998}
22999/// Calls `RouteTableAssociationService`.
23000///
23001/// Route table associations: which route table a subnet uses. A subnet has at
23002/// most one. A subnet reaches, and is reached from, the internet for an
23003/// address family only if its own route table has that family's default
23004/// route; a subnet with no route table has no route out of its VPC and isn't
23005/// reachable from the internet (see the subnet's `route_table`). An
23006/// association's id is the id of the route table it names, so a client that
23007/// knows the subnet and the table names the association without listing. To
23008/// move a subnet to another table, delete its association and create
23009/// another.
23010#[derive(Clone, Debug)]
23011pub struct RouteTableAssociationClient {
23012    service: ::origincloud_core::Service,
23013}
23014impl RouteTableAssociationClient {
23015    /// Returns a client of `RouteTableAssociationService` that sends its calls through `client`.
23016    pub fn new(client: &::origincloud_core::Client) -> Self {
23017        Self {
23018            service: client.service("network", true),
23019        }
23020    }
23021    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23022    pub fn service(&self) -> &::origincloud_core::Service {
23023        &self.service
23024    }
23025    /// Returns a route table association.
23026    pub async fn get_route_table_association(
23027        &self,
23028        request: GetRouteTableAssociationRequest,
23029    ) -> ::core::result::Result<RouteTableAssociation, ::origincloud_core::Error> {
23030        let p0 = ::origincloud_core::path_value(
23031            "name",
23032            &request.name,
23033            "projects/*/zones/*/subnets/*/routeTableAssociations/*",
23034        )?;
23035        let query = ::origincloud_core::query(&request, &["name"])?;
23036        let call = ::origincloud_core::Request::new(
23037                ::origincloud_core::Method::GET,
23038                format!("/v1beta1/{p0}"),
23039            )
23040            .with_query(query)
23041            .idempotent();
23042        self.service.call(call).await
23043    }
23044    /// Lists a subnet's route table associations: none or one.
23045    pub async fn list_route_table_associations(
23046        &self,
23047        request: ListRouteTableAssociationsRequest,
23048    ) -> ::core::result::Result<
23049        ListRouteTableAssociationsResponse,
23050        ::origincloud_core::Error,
23051    > {
23052        let p0 = ::origincloud_core::path_value(
23053            "parent",
23054            &request.parent,
23055            "projects/*/zones/*/subnets/*",
23056        )?;
23057        let query = ::origincloud_core::query(&request, &["parent"])?;
23058        let call = ::origincloud_core::Request::new(
23059                ::origincloud_core::Method::GET,
23060                format!("/v1beta1/{p0}/routeTableAssociations"),
23061            )
23062            .with_query(query)
23063            .idempotent();
23064        self.service.call(call).await
23065    }
23066    /// 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.
23067    pub fn all_route_table_associations(
23068        &self,
23069        request: ListRouteTableAssociationsRequest,
23070    ) -> ::origincloud_core::Pages<RouteTableAssociation> {
23071        let client = self.clone();
23072        ::origincloud_core::Pages::new(
23073            request,
23074            move |request: ListRouteTableAssociationsRequest| {
23075                let client = client.clone();
23076                async move {
23077                    let page = client.list_route_table_associations(request).await?;
23078                    Ok((page.route_table_associations, page.next_page_token))
23079                }
23080            },
23081            |
23082                request: &mut ListRouteTableAssociationsRequest,
23083                token: ::std::string::String|
23084            request.page_token = token,
23085        )
23086    }
23087    /// Associates a route table with a subnet. Refused with
23088    /// `FAILED_PRECONDITION` when the subnet has a route table association. The operation is done
23089    /// once the change is recorded; the network applies it within seconds.
23090    ///
23091    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTableAssociation`] once the change is done.
23092    pub async fn create_route_table_association(
23093        &self,
23094        mut request: CreateRouteTableAssociationRequest,
23095    ) -> ::core::result::Result<
23096        ::origincloud_core::Operation<RouteTableAssociation>,
23097        ::origincloud_core::Error,
23098    > {
23099        if request.request_id.is_empty() {
23100            request.request_id = ::origincloud_core::new_request_id();
23101        }
23102        let p0 = ::origincloud_core::path_value(
23103            "parent",
23104            &request.parent,
23105            "projects/*/zones/*/subnets/*",
23106        )?;
23107        let body = ::origincloud_core::json_body(
23108            request
23109                .route_table_association
23110                .as_ref()
23111                .unwrap_or(&::core::default::Default::default()),
23112        )?;
23113        let query = ::origincloud_core::query(
23114            &request,
23115            &["parent", "routeTableAssociation"],
23116        )?;
23117        let call = ::origincloud_core::Request::new(
23118                ::origincloud_core::Method::POST,
23119                format!("/v1beta1/{p0}/routeTableAssociations"),
23120            )
23121            .with_body(body)
23122            .with_query(query)
23123            .idempotent();
23124        let operation = self.service.call(call).await?;
23125        Ok(
23126            ::origincloud_core::Operation::new(
23127                self.service.clone(),
23128                operation,
23129                "origincloud.network.v1beta1.RouteTableAssociation",
23130            ),
23131        )
23132    }
23133    /// Removes a subnet's route table association. The subnet then has no
23134    /// route out of its VPC and isn't reachable from the internet. The
23135    /// operation is done once the change is recorded; the network applies it
23136    /// within seconds.
23137    ///
23138    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23139    pub async fn delete_route_table_association(
23140        &self,
23141        mut request: DeleteRouteTableAssociationRequest,
23142    ) -> ::core::result::Result<
23143        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23144        ::origincloud_core::Error,
23145    > {
23146        if request.request_id.is_empty() {
23147            request.request_id = ::origincloud_core::new_request_id();
23148        }
23149        let p0 = ::origincloud_core::path_value(
23150            "name",
23151            &request.name,
23152            "projects/*/zones/*/subnets/*/routeTableAssociations/*",
23153        )?;
23154        let query = ::origincloud_core::query(&request, &["name"])?;
23155        let call = ::origincloud_core::Request::new(
23156                ::origincloud_core::Method::DELETE,
23157                format!("/v1beta1/{p0}"),
23158            )
23159            .with_query(query)
23160            .idempotent();
23161        let operation = self.service.call(call).await?;
23162        Ok(
23163            ::origincloud_core::Operation::new(
23164                self.service.clone(),
23165                operation,
23166                "google.protobuf.Empty",
23167            ),
23168        )
23169    }
23170}
23171/// Calls `SecurityGroupService`.
23172///
23173/// Security groups: stateful filters on network interfaces. A group holds
23174/// rules (`SecurityGroupRuleService`), and applies to the interfaces that a
23175/// security group association names it for
23176/// (`SecurityGroupAssociationService`). An interface admits the traffic any
23177/// of its groups allows, and the replies to what it sends; everything else
23178/// is dropped.
23179#[derive(Clone, Debug)]
23180pub struct SecurityGroupClient {
23181    service: ::origincloud_core::Service,
23182}
23183impl SecurityGroupClient {
23184    /// Returns a client of `SecurityGroupService` that sends its calls through `client`.
23185    pub fn new(client: &::origincloud_core::Client) -> Self {
23186        Self {
23187            service: client.service("network", true),
23188        }
23189    }
23190    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23191    pub fn service(&self) -> &::origincloud_core::Service {
23192        &self.service
23193    }
23194    /// Returns a security group.
23195    pub async fn get_security_group(
23196        &self,
23197        request: GetSecurityGroupRequest,
23198    ) -> ::core::result::Result<SecurityGroup, ::origincloud_core::Error> {
23199        let p0 = ::origincloud_core::path_value(
23200            "name",
23201            &request.name,
23202            "projects/*/regions/*/securityGroups/*",
23203        )?;
23204        let query = ::origincloud_core::query(&request, &["name"])?;
23205        let call = ::origincloud_core::Request::new(
23206                ::origincloud_core::Method::GET,
23207                format!("/v1beta1/{p0}"),
23208            )
23209            .with_query(query)
23210            .idempotent();
23211        self.service.call(call).await
23212    }
23213    /// Lists the security groups in a region, oldest first.
23214    pub async fn list_security_groups(
23215        &self,
23216        request: ListSecurityGroupsRequest,
23217    ) -> ::core::result::Result<ListSecurityGroupsResponse, ::origincloud_core::Error> {
23218        let p0 = ::origincloud_core::path_value(
23219            "parent",
23220            &request.parent,
23221            "projects/*/regions/*",
23222        )?;
23223        let query = ::origincloud_core::query(&request, &["parent"])?;
23224        let call = ::origincloud_core::Request::new(
23225                ::origincloud_core::Method::GET,
23226                format!("/v1beta1/{p0}/securityGroups"),
23227            )
23228            .with_query(query)
23229            .idempotent();
23230        self.service.call(call).await
23231    }
23232    /// 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.
23233    pub fn all_security_groups(
23234        &self,
23235        request: ListSecurityGroupsRequest,
23236    ) -> ::origincloud_core::Pages<SecurityGroup> {
23237        let client = self.clone();
23238        ::origincloud_core::Pages::new(
23239            request,
23240            move |request: ListSecurityGroupsRequest| {
23241                let client = client.clone();
23242                async move {
23243                    let page = client.list_security_groups(request).await?;
23244                    Ok((page.security_groups, page.next_page_token))
23245                }
23246            },
23247            |request: &mut ListSecurityGroupsRequest, token: ::std::string::String| {
23248                request.page_token = token;
23249            },
23250        )
23251    }
23252    /// Creates a security group in a VPC, with no rules: it allows nothing
23253    /// until rules are added. The operation is done once the security group
23254    /// is recorded.
23255    ///
23256    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroup`] once the change is done.
23257    pub async fn create_security_group(
23258        &self,
23259        mut request: CreateSecurityGroupRequest,
23260    ) -> ::core::result::Result<
23261        ::origincloud_core::Operation<SecurityGroup>,
23262        ::origincloud_core::Error,
23263    > {
23264        if request.request_id.is_empty() {
23265            request.request_id = ::origincloud_core::new_request_id();
23266        }
23267        let p0 = ::origincloud_core::path_value(
23268            "parent",
23269            &request.parent,
23270            "projects/*/regions/*",
23271        )?;
23272        let body = ::origincloud_core::json_body(
23273            request
23274                .security_group
23275                .as_ref()
23276                .unwrap_or(&::core::default::Default::default()),
23277        )?;
23278        let query = ::origincloud_core::query(&request, &["parent", "securityGroup"])?;
23279        let call = ::origincloud_core::Request::new(
23280                ::origincloud_core::Method::POST,
23281                format!("/v1beta1/{p0}/securityGroups"),
23282            )
23283            .with_body(body)
23284            .with_query(query)
23285            .idempotent();
23286        let operation = self.service.call(call).await?;
23287        Ok(
23288            ::origincloud_core::Operation::new(
23289                self.service.clone(),
23290                operation,
23291                "origincloud.network.v1beta1.SecurityGroup",
23292            ),
23293        )
23294    }
23295    /// Changes a security group's tags. The operation is done once the change
23296    /// is recorded.
23297    ///
23298    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroup`] once the change is done.
23299    pub async fn update_security_group(
23300        &self,
23301        mut request: UpdateSecurityGroupRequest,
23302    ) -> ::core::result::Result<
23303        ::origincloud_core::Operation<SecurityGroup>,
23304        ::origincloud_core::Error,
23305    > {
23306        if request.request_id.is_empty() {
23307            request.request_id = ::origincloud_core::new_request_id();
23308        }
23309        let p0 = ::origincloud_core::path_value(
23310            "securityGroup.name",
23311            request.security_group.as_ref().map_or("", |m| m.name.as_str()),
23312            "projects/*/regions/*/securityGroups/*",
23313        )?;
23314        let body = ::origincloud_core::json_body(
23315            request
23316                .security_group
23317                .as_ref()
23318                .unwrap_or(&::core::default::Default::default()),
23319        )?;
23320        let query = ::origincloud_core::query(
23321            &request,
23322            &["securityGroup.name", "securityGroup"],
23323        )?;
23324        let call = ::origincloud_core::Request::new(
23325                ::origincloud_core::Method::PATCH,
23326                format!("/v1beta1/{p0}"),
23327            )
23328            .with_body(body)
23329            .with_query(query)
23330            .idempotent();
23331        let operation = self.service.call(call).await?;
23332        Ok(
23333            ::origincloud_core::Operation::new(
23334                self.service.clone(),
23335                operation,
23336                "origincloud.network.v1beta1.SecurityGroup",
23337            ),
23338        )
23339    }
23340    /// Deletes a security group with its rules. Refused for a group the
23341    /// platform created with its VPC, which goes with the VPC, and while a
23342    /// security group association names it. The operation is done once the
23343    /// change is recorded; the network applies it within seconds.
23344    ///
23345    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23346    pub async fn delete_security_group(
23347        &self,
23348        mut request: DeleteSecurityGroupRequest,
23349    ) -> ::core::result::Result<
23350        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23351        ::origincloud_core::Error,
23352    > {
23353        if request.request_id.is_empty() {
23354            request.request_id = ::origincloud_core::new_request_id();
23355        }
23356        let p0 = ::origincloud_core::path_value(
23357            "name",
23358            &request.name,
23359            "projects/*/regions/*/securityGroups/*",
23360        )?;
23361        let query = ::origincloud_core::query(&request, &["name"])?;
23362        let call = ::origincloud_core::Request::new(
23363                ::origincloud_core::Method::DELETE,
23364                format!("/v1beta1/{p0}"),
23365            )
23366            .with_query(query)
23367            .idempotent();
23368        let operation = self.service.call(call).await?;
23369        Ok(
23370            ::origincloud_core::Operation::new(
23371                self.service.clone(),
23372                operation,
23373                "google.protobuf.Empty",
23374            ),
23375        )
23376    }
23377}
23378/// Calls `SecurityGroupAssociationService`.
23379///
23380/// Security group associations: which security groups filter a network
23381/// interface's traffic. An interface can have many, and admits the traffic
23382/// any of them allows; without one, it is closed (see the interface's
23383/// `security_groups`). An association's id is the id of the security group it
23384/// names, so a client that knows the interface and the group names the
23385/// association without listing.
23386#[derive(Clone, Debug)]
23387pub struct SecurityGroupAssociationClient {
23388    service: ::origincloud_core::Service,
23389}
23390impl SecurityGroupAssociationClient {
23391    /// Returns a client of `SecurityGroupAssociationService` that sends its calls through `client`.
23392    pub fn new(client: &::origincloud_core::Client) -> Self {
23393        Self {
23394            service: client.service("network", true),
23395        }
23396    }
23397    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23398    pub fn service(&self) -> &::origincloud_core::Service {
23399        &self.service
23400    }
23401    /// Returns a security group association.
23402    pub async fn get_security_group_association(
23403        &self,
23404        request: GetSecurityGroupAssociationRequest,
23405    ) -> ::core::result::Result<SecurityGroupAssociation, ::origincloud_core::Error> {
23406        let p0 = ::origincloud_core::path_value(
23407            "name",
23408            &request.name,
23409            "projects/*/zones/*/networkInterfaces/*/securityGroupAssociations/*",
23410        )?;
23411        let query = ::origincloud_core::query(&request, &["name"])?;
23412        let call = ::origincloud_core::Request::new(
23413                ::origincloud_core::Method::GET,
23414                format!("/v1beta1/{p0}"),
23415            )
23416            .with_query(query)
23417            .idempotent();
23418        self.service.call(call).await
23419    }
23420    /// Lists a network interface's security group associations, oldest first.
23421    pub async fn list_security_group_associations(
23422        &self,
23423        request: ListSecurityGroupAssociationsRequest,
23424    ) -> ::core::result::Result<
23425        ListSecurityGroupAssociationsResponse,
23426        ::origincloud_core::Error,
23427    > {
23428        let p0 = ::origincloud_core::path_value(
23429            "parent",
23430            &request.parent,
23431            "projects/*/zones/*/networkInterfaces/*",
23432        )?;
23433        let query = ::origincloud_core::query(&request, &["parent"])?;
23434        let call = ::origincloud_core::Request::new(
23435                ::origincloud_core::Method::GET,
23436                format!("/v1beta1/{p0}/securityGroupAssociations"),
23437            )
23438            .with_query(query)
23439            .idempotent();
23440        self.service.call(call).await
23441    }
23442    /// 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.
23443    pub fn all_security_group_associations(
23444        &self,
23445        request: ListSecurityGroupAssociationsRequest,
23446    ) -> ::origincloud_core::Pages<SecurityGroupAssociation> {
23447        let client = self.clone();
23448        ::origincloud_core::Pages::new(
23449            request,
23450            move |request: ListSecurityGroupAssociationsRequest| {
23451                let client = client.clone();
23452                async move {
23453                    let page = client.list_security_group_associations(request).await?;
23454                    Ok((page.security_group_associations, page.next_page_token))
23455                }
23456            },
23457            |
23458                request: &mut ListSecurityGroupAssociationsRequest,
23459                token: ::std::string::String|
23460            request.page_token = token,
23461        )
23462    }
23463    /// Associates a security group with a network interface, also while it is
23464    /// attached. Refused with `FAILED_PRECONDITION` when the interface is
23465    /// associated with that group. The operation is done once the change is recorded; the
23466    /// network applies it within seconds.
23467    ///
23468    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroupAssociation`] once the change is done.
23469    pub async fn create_security_group_association(
23470        &self,
23471        mut request: CreateSecurityGroupAssociationRequest,
23472    ) -> ::core::result::Result<
23473        ::origincloud_core::Operation<SecurityGroupAssociation>,
23474        ::origincloud_core::Error,
23475    > {
23476        if request.request_id.is_empty() {
23477            request.request_id = ::origincloud_core::new_request_id();
23478        }
23479        let p0 = ::origincloud_core::path_value(
23480            "parent",
23481            &request.parent,
23482            "projects/*/zones/*/networkInterfaces/*",
23483        )?;
23484        let body = ::origincloud_core::json_body(
23485            request
23486                .security_group_association
23487                .as_ref()
23488                .unwrap_or(&::core::default::Default::default()),
23489        )?;
23490        let query = ::origincloud_core::query(
23491            &request,
23492            &["parent", "securityGroupAssociation"],
23493        )?;
23494        let call = ::origincloud_core::Request::new(
23495                ::origincloud_core::Method::POST,
23496                format!("/v1beta1/{p0}/securityGroupAssociations"),
23497            )
23498            .with_body(body)
23499            .with_query(query)
23500            .idempotent();
23501        let operation = self.service.call(call).await?;
23502        Ok(
23503            ::origincloud_core::Operation::new(
23504                self.service.clone(),
23505                operation,
23506                "origincloud.network.v1beta1.SecurityGroupAssociation",
23507            ),
23508        )
23509    }
23510    /// Removes a security group from a network interface. Without any, the
23511    /// interface admits and sends nothing except replies to its own traffic and
23512    /// address resolution. The operation is done once the change is recorded;
23513    /// the network applies it within seconds.
23514    ///
23515    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23516    pub async fn delete_security_group_association(
23517        &self,
23518        mut request: DeleteSecurityGroupAssociationRequest,
23519    ) -> ::core::result::Result<
23520        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23521        ::origincloud_core::Error,
23522    > {
23523        if request.request_id.is_empty() {
23524            request.request_id = ::origincloud_core::new_request_id();
23525        }
23526        let p0 = ::origincloud_core::path_value(
23527            "name",
23528            &request.name,
23529            "projects/*/zones/*/networkInterfaces/*/securityGroupAssociations/*",
23530        )?;
23531        let query = ::origincloud_core::query(&request, &["name"])?;
23532        let call = ::origincloud_core::Request::new(
23533                ::origincloud_core::Method::DELETE,
23534                format!("/v1beta1/{p0}"),
23535            )
23536            .with_query(query)
23537            .idempotent();
23538        let operation = self.service.call(call).await?;
23539        Ok(
23540            ::origincloud_core::Operation::new(
23541                self.service.clone(),
23542                operation,
23543                "google.protobuf.Empty",
23544            ),
23545        )
23546    }
23547}
23548/// Calls `SecurityGroupRuleService`.
23549///
23550/// Security group rules: the traffic a security group allows, each rule to
23551/// or from one peer. Rules only allow, so their order doesn't matter. A rule
23552/// is immutable: it is created and deleted, never changed, so to change one,
23553/// delete it and create its replacement. Creating the replacement first
23554/// leaves no window in which neither rule allows the traffic.
23555#[derive(Clone, Debug)]
23556pub struct SecurityGroupRuleClient {
23557    service: ::origincloud_core::Service,
23558}
23559impl SecurityGroupRuleClient {
23560    /// Returns a client of `SecurityGroupRuleService` that sends its calls through `client`.
23561    pub fn new(client: &::origincloud_core::Client) -> Self {
23562        Self {
23563            service: client.service("network", true),
23564        }
23565    }
23566    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23567    pub fn service(&self) -> &::origincloud_core::Service {
23568        &self.service
23569    }
23570    /// Returns a security group rule.
23571    pub async fn get_security_group_rule(
23572        &self,
23573        request: GetSecurityGroupRuleRequest,
23574    ) -> ::core::result::Result<SecurityGroupRule, ::origincloud_core::Error> {
23575        let p0 = ::origincloud_core::path_value(
23576            "name",
23577            &request.name,
23578            "projects/*/regions/*/securityGroups/*/rules/*",
23579        )?;
23580        let query = ::origincloud_core::query(&request, &["name"])?;
23581        let call = ::origincloud_core::Request::new(
23582                ::origincloud_core::Method::GET,
23583                format!("/v1beta1/{p0}"),
23584            )
23585            .with_query(query)
23586            .idempotent();
23587        self.service.call(call).await
23588    }
23589    /// Lists a security group's rules of both directions, oldest first.
23590    pub async fn list_security_group_rules(
23591        &self,
23592        request: ListSecurityGroupRulesRequest,
23593    ) -> ::core::result::Result<
23594        ListSecurityGroupRulesResponse,
23595        ::origincloud_core::Error,
23596    > {
23597        let p0 = ::origincloud_core::path_value(
23598            "parent",
23599            &request.parent,
23600            "projects/*/regions/*/securityGroups/*",
23601        )?;
23602        let query = ::origincloud_core::query(&request, &["parent"])?;
23603        let call = ::origincloud_core::Request::new(
23604                ::origincloud_core::Method::GET,
23605                format!("/v1beta1/{p0}/rules"),
23606            )
23607            .with_query(query)
23608            .idempotent();
23609        self.service.call(call).await
23610    }
23611    /// 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.
23612    pub fn all_security_group_rules(
23613        &self,
23614        request: ListSecurityGroupRulesRequest,
23615    ) -> ::origincloud_core::Pages<SecurityGroupRule> {
23616        let client = self.clone();
23617        ::origincloud_core::Pages::new(
23618            request,
23619            move |request: ListSecurityGroupRulesRequest| {
23620                let client = client.clone();
23621                async move {
23622                    let page = client.list_security_group_rules(request).await?;
23623                    Ok((page.security_group_rules, page.next_page_token))
23624                }
23625            },
23626            |request: &mut ListSecurityGroupRulesRequest, token: ::std::string::String| {
23627                request.page_token = token;
23628            },
23629        )
23630    }
23631    /// Adds a rule to a security group. A rule identical to one the group
23632    /// has in every field, `description` included, is refused with
23633    /// `FAILED_PRECONDITION`. A group holds at most 120 rules by default, both
23634    /// directions together, as the quota sets. The operation is done once the
23635    /// change is recorded; the network applies it within seconds.
23636    ///
23637    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`SecurityGroupRule`] once the change is done.
23638    pub async fn create_security_group_rule(
23639        &self,
23640        mut request: CreateSecurityGroupRuleRequest,
23641    ) -> ::core::result::Result<
23642        ::origincloud_core::Operation<SecurityGroupRule>,
23643        ::origincloud_core::Error,
23644    > {
23645        if request.request_id.is_empty() {
23646            request.request_id = ::origincloud_core::new_request_id();
23647        }
23648        let p0 = ::origincloud_core::path_value(
23649            "parent",
23650            &request.parent,
23651            "projects/*/regions/*/securityGroups/*",
23652        )?;
23653        let body = ::origincloud_core::json_body(
23654            request
23655                .security_group_rule
23656                .as_ref()
23657                .unwrap_or(&::core::default::Default::default()),
23658        )?;
23659        let query = ::origincloud_core::query(
23660            &request,
23661            &["parent", "securityGroupRule"],
23662        )?;
23663        let call = ::origincloud_core::Request::new(
23664                ::origincloud_core::Method::POST,
23665                format!("/v1beta1/{p0}/rules"),
23666            )
23667            .with_body(body)
23668            .with_query(query)
23669            .idempotent();
23670        let operation = self.service.call(call).await?;
23671        Ok(
23672            ::origincloud_core::Operation::new(
23673                self.service.clone(),
23674                operation,
23675                "origincloud.network.v1beta1.SecurityGroupRule",
23676            ),
23677        )
23678    }
23679    /// Removes a rule from its security group. The operation is done once the
23680    /// change is recorded; the network applies it within seconds.
23681    ///
23682    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23683    pub async fn delete_security_group_rule(
23684        &self,
23685        mut request: DeleteSecurityGroupRuleRequest,
23686    ) -> ::core::result::Result<
23687        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23688        ::origincloud_core::Error,
23689    > {
23690        if request.request_id.is_empty() {
23691            request.request_id = ::origincloud_core::new_request_id();
23692        }
23693        let p0 = ::origincloud_core::path_value(
23694            "name",
23695            &request.name,
23696            "projects/*/regions/*/securityGroups/*/rules/*",
23697        )?;
23698        let query = ::origincloud_core::query(&request, &["name"])?;
23699        let call = ::origincloud_core::Request::new(
23700                ::origincloud_core::Method::DELETE,
23701                format!("/v1beta1/{p0}"),
23702            )
23703            .with_query(query)
23704            .idempotent();
23705        let operation = self.service.call(call).await?;
23706        Ok(
23707            ::origincloud_core::Operation::new(
23708                self.service.clone(),
23709                operation,
23710                "google.protobuf.Empty",
23711            ),
23712        )
23713    }
23714}
23715/// Calls `SubnetService`.
23716///
23717/// Subnets: the part of a VPC in one zone. Network interfaces get their
23718/// private addresses from a subnet. Its route table association decides
23719/// where its traffic goes, and its ACL association what crosses its edge.
23720#[derive(Clone, Debug)]
23721pub struct SubnetClient {
23722    service: ::origincloud_core::Service,
23723}
23724impl SubnetClient {
23725    /// Returns a client of `SubnetService` that sends its calls through `client`.
23726    pub fn new(client: &::origincloud_core::Client) -> Self {
23727        Self {
23728            service: client.service("network", true),
23729        }
23730    }
23731    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23732    pub fn service(&self) -> &::origincloud_core::Service {
23733        &self.service
23734    }
23735    /// Returns a subnet.
23736    pub async fn get_subnet(
23737        &self,
23738        request: GetSubnetRequest,
23739    ) -> ::core::result::Result<Subnet, ::origincloud_core::Error> {
23740        let p0 = ::origincloud_core::path_value(
23741            "name",
23742            &request.name,
23743            "projects/*/zones/*/subnets/*",
23744        )?;
23745        let query = ::origincloud_core::query(&request, &["name"])?;
23746        let call = ::origincloud_core::Request::new(
23747                ::origincloud_core::Method::GET,
23748                format!("/v1beta1/{p0}"),
23749            )
23750            .with_query(query)
23751            .idempotent();
23752        self.service.call(call).await
23753    }
23754    /// Lists the subnets in a zone, oldest first. For every zone's subnets,
23755    /// list the zones whose `services` name `network` with the location
23756    /// service (`location.origincloudapis.eu`), then each zone's subnets.
23757    pub async fn list_subnets(
23758        &self,
23759        request: ListSubnetsRequest,
23760    ) -> ::core::result::Result<ListSubnetsResponse, ::origincloud_core::Error> {
23761        let p0 = ::origincloud_core::path_value(
23762            "parent",
23763            &request.parent,
23764            "projects/*/zones/*",
23765        )?;
23766        let query = ::origincloud_core::query(&request, &["parent"])?;
23767        let call = ::origincloud_core::Request::new(
23768                ::origincloud_core::Method::GET,
23769                format!("/v1beta1/{p0}/subnets"),
23770            )
23771            .with_query(query)
23772            .idempotent();
23773        self.service.call(call).await
23774    }
23775    /// 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.
23776    pub fn all_subnets(
23777        &self,
23778        request: ListSubnetsRequest,
23779    ) -> ::origincloud_core::Pages<Subnet> {
23780        let client = self.clone();
23781        ::origincloud_core::Pages::new(
23782            request,
23783            move |request: ListSubnetsRequest| {
23784                let client = client.clone();
23785                async move {
23786                    let page = client.list_subnets(request).await?;
23787                    Ok((page.subnets, page.next_page_token))
23788                }
23789            },
23790            |request: &mut ListSubnetsRequest, token: ::std::string::String| {
23791                request.page_token = token;
23792            },
23793        )
23794    }
23795    /// Creates a subnet in a VPC, with the next free IPv4 and IPv6 ranges of
23796    /// the VPC's address space, and no route table or ACL association. The
23797    /// operation is done once the change is recorded; the network applies it
23798    /// within seconds.
23799    ///
23800    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Subnet`] once the change is done.
23801    pub async fn create_subnet(
23802        &self,
23803        mut request: CreateSubnetRequest,
23804    ) -> ::core::result::Result<
23805        ::origincloud_core::Operation<Subnet>,
23806        ::origincloud_core::Error,
23807    > {
23808        if request.request_id.is_empty() {
23809            request.request_id = ::origincloud_core::new_request_id();
23810        }
23811        let p0 = ::origincloud_core::path_value(
23812            "parent",
23813            &request.parent,
23814            "projects/*/zones/*",
23815        )?;
23816        let body = ::origincloud_core::json_body(
23817            request.subnet.as_ref().unwrap_or(&::core::default::Default::default()),
23818        )?;
23819        let query = ::origincloud_core::query(&request, &["parent", "subnet"])?;
23820        let call = ::origincloud_core::Request::new(
23821                ::origincloud_core::Method::POST,
23822                format!("/v1beta1/{p0}/subnets"),
23823            )
23824            .with_body(body)
23825            .with_query(query)
23826            .idempotent();
23827        let operation = self.service.call(call).await?;
23828        Ok(
23829            ::origincloud_core::Operation::new(
23830                self.service.clone(),
23831                operation,
23832                "origincloud.network.v1beta1.Subnet",
23833            ),
23834        )
23835    }
23836    /// Changes a subnet's public address assignment or tags.
23837    /// `auto_assign_public_ip` applies to launches afterwards that create
23838    /// their interface. The operation is done once the change is recorded.
23839    ///
23840    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Subnet`] once the change is done.
23841    pub async fn update_subnet(
23842        &self,
23843        mut request: UpdateSubnetRequest,
23844    ) -> ::core::result::Result<
23845        ::origincloud_core::Operation<Subnet>,
23846        ::origincloud_core::Error,
23847    > {
23848        if request.request_id.is_empty() {
23849            request.request_id = ::origincloud_core::new_request_id();
23850        }
23851        let p0 = ::origincloud_core::path_value(
23852            "subnet.name",
23853            request.subnet.as_ref().map_or("", |m| m.name.as_str()),
23854            "projects/*/zones/*/subnets/*",
23855        )?;
23856        let body = ::origincloud_core::json_body(
23857            request.subnet.as_ref().unwrap_or(&::core::default::Default::default()),
23858        )?;
23859        let query = ::origincloud_core::query(&request, &["subnet.name", "subnet"])?;
23860        let call = ::origincloud_core::Request::new(
23861                ::origincloud_core::Method::PATCH,
23862                format!("/v1beta1/{p0}"),
23863            )
23864            .with_body(body)
23865            .with_query(query)
23866            .idempotent();
23867        let operation = self.service.call(call).await?;
23868        Ok(
23869            ::origincloud_core::Operation::new(
23870                self.service.clone(),
23871                operation,
23872                "origincloud.network.v1beta1.Subnet",
23873            ),
23874        )
23875    }
23876    /// Deletes a subnet with its route table and ACL associations and its
23877    /// unattached network interfaces. Refused while an interface in it is
23878    /// attached or a NAT gateway lives in it. The operation is done once the
23879    /// change is recorded; the network applies it within seconds.
23880    ///
23881    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
23882    pub async fn delete_subnet(
23883        &self,
23884        mut request: DeleteSubnetRequest,
23885    ) -> ::core::result::Result<
23886        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
23887        ::origincloud_core::Error,
23888    > {
23889        if request.request_id.is_empty() {
23890            request.request_id = ::origincloud_core::new_request_id();
23891        }
23892        let p0 = ::origincloud_core::path_value(
23893            "name",
23894            &request.name,
23895            "projects/*/zones/*/subnets/*",
23896        )?;
23897        let query = ::origincloud_core::query(&request, &["name"])?;
23898        let call = ::origincloud_core::Request::new(
23899                ::origincloud_core::Method::DELETE,
23900                format!("/v1beta1/{p0}"),
23901            )
23902            .with_query(query)
23903            .idempotent();
23904        let operation = self.service.call(call).await?;
23905        Ok(
23906            ::origincloud_core::Operation::new(
23907                self.service.clone(),
23908                operation,
23909                "google.protobuf.Empty",
23910            ),
23911        )
23912    }
23913}
23914/// Calls `VpcService`.
23915///
23916/// VPCs: private networks in a region, each with its own IPv4 and IPv6
23917/// address space, isolated from every other VPC. A VPC is created empty: its
23918/// subnets, security groups, ACLs, route tables and internet gateway are
23919/// created on their own.
23920#[derive(Clone, Debug)]
23921pub struct VpcClient {
23922    service: ::origincloud_core::Service,
23923}
23924impl VpcClient {
23925    /// Returns a client of `VpcService` that sends its calls through `client`.
23926    pub fn new(client: &::origincloud_core::Client) -> Self {
23927        Self {
23928            service: client.service("network", true),
23929        }
23930    }
23931    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23932    pub fn service(&self) -> &::origincloud_core::Service {
23933        &self.service
23934    }
23935    /// Returns a VPC.
23936    pub async fn get_vpc(
23937        &self,
23938        request: GetVpcRequest,
23939    ) -> ::core::result::Result<Vpc, ::origincloud_core::Error> {
23940        let p0 = ::origincloud_core::path_value(
23941            "name",
23942            &request.name,
23943            "projects/*/regions/*/vpcs/*",
23944        )?;
23945        let query = ::origincloud_core::query(&request, &["name"])?;
23946        let call = ::origincloud_core::Request::new(
23947                ::origincloud_core::Method::GET,
23948                format!("/v1beta1/{p0}"),
23949            )
23950            .with_query(query)
23951            .idempotent();
23952        self.service.call(call).await
23953    }
23954    /// Lists the VPCs in a region, oldest first.
23955    pub async fn list_vpcs(
23956        &self,
23957        request: ListVpcsRequest,
23958    ) -> ::core::result::Result<ListVpcsResponse, ::origincloud_core::Error> {
23959        let p0 = ::origincloud_core::path_value(
23960            "parent",
23961            &request.parent,
23962            "projects/*/regions/*",
23963        )?;
23964        let query = ::origincloud_core::query(&request, &["parent"])?;
23965        let call = ::origincloud_core::Request::new(
23966                ::origincloud_core::Method::GET,
23967                format!("/v1beta1/{p0}/vpcs"),
23968            )
23969            .with_query(query)
23970            .idempotent();
23971        self.service.call(call).await
23972    }
23973    /// 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.
23974    pub fn all_vpcs(&self, request: ListVpcsRequest) -> ::origincloud_core::Pages<Vpc> {
23975        let client = self.clone();
23976        ::origincloud_core::Pages::new(
23977            request,
23978            move |request: ListVpcsRequest| {
23979                let client = client.clone();
23980                async move {
23981                    let page = client.list_vpcs(request).await?;
23982                    Ok((page.vpcs, page.next_page_token))
23983                }
23984            },
23985            |request: &mut ListVpcsRequest, token: ::std::string::String| {
23986                request.page_token = token;
23987            },
23988        )
23989    }
23990    /// Creates an empty VPC: no subnets, security groups, ACLs, route tables
23991    /// or internet gateway. It relays DNS through the project's default DNS
23992    /// policy in its region until a DNS policy association names another. The
23993    /// operation is done once the VPC is recorded.
23994    ///
23995    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Vpc`] once the change is done.
23996    pub async fn create_vpc(
23997        &self,
23998        mut request: CreateVpcRequest,
23999    ) -> ::core::result::Result<
24000        ::origincloud_core::Operation<Vpc>,
24001        ::origincloud_core::Error,
24002    > {
24003        if request.request_id.is_empty() {
24004            request.request_id = ::origincloud_core::new_request_id();
24005        }
24006        let p0 = ::origincloud_core::path_value(
24007            "parent",
24008            &request.parent,
24009            "projects/*/regions/*",
24010        )?;
24011        let body = ::origincloud_core::json_body(
24012            request.vpc.as_ref().unwrap_or(&::core::default::Default::default()),
24013        )?;
24014        let query = ::origincloud_core::query(&request, &["parent", "vpc"])?;
24015        let call = ::origincloud_core::Request::new(
24016                ::origincloud_core::Method::POST,
24017                format!("/v1beta1/{p0}/vpcs"),
24018            )
24019            .with_body(body)
24020            .with_query(query)
24021            .idempotent();
24022        let operation = self.service.call(call).await?;
24023        Ok(
24024            ::origincloud_core::Operation::new(
24025                self.service.clone(),
24026                operation,
24027                "origincloud.network.v1beta1.Vpc",
24028            ),
24029        )
24030    }
24031    /// Changes a VPC's tags. The operation is done once the change is
24032    /// recorded.
24033    ///
24034    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Vpc`] once the change is done.
24035    pub async fn update_vpc(
24036        &self,
24037        mut request: UpdateVpcRequest,
24038    ) -> ::core::result::Result<
24039        ::origincloud_core::Operation<Vpc>,
24040        ::origincloud_core::Error,
24041    > {
24042        if request.request_id.is_empty() {
24043            request.request_id = ::origincloud_core::new_request_id();
24044        }
24045        let p0 = ::origincloud_core::path_value(
24046            "vpc.name",
24047            request.vpc.as_ref().map_or("", |m| m.name.as_str()),
24048            "projects/*/regions/*/vpcs/*",
24049        )?;
24050        let body = ::origincloud_core::json_body(
24051            request.vpc.as_ref().unwrap_or(&::core::default::Default::default()),
24052        )?;
24053        let query = ::origincloud_core::query(&request, &["vpc.name", "vpc"])?;
24054        let call = ::origincloud_core::Request::new(
24055                ::origincloud_core::Method::PATCH,
24056                format!("/v1beta1/{p0}"),
24057            )
24058            .with_body(body)
24059            .with_query(query)
24060            .idempotent();
24061        let operation = self.service.call(call).await?;
24062        Ok(
24063            ::origincloud_core::Operation::new(
24064                self.service.clone(),
24065                operation,
24066                "origincloud.network.v1beta1.Vpc",
24067            ),
24068        )
24069    }
24070    /// Deletes a VPC with its DNS policy association. Refused with
24071    /// `FAILED_PRECONDITION` while the VPC has subnets, security groups,
24072    /// ACLs, route tables or an internet gateway, except those the platform
24073    /// created with it, which are deleted with it. The operation is done once
24074    /// the change is recorded; the network applies it within seconds.
24075    ///
24076    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
24077    pub async fn delete_vpc(
24078        &self,
24079        mut request: DeleteVpcRequest,
24080    ) -> ::core::result::Result<
24081        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
24082        ::origincloud_core::Error,
24083    > {
24084        if request.request_id.is_empty() {
24085            request.request_id = ::origincloud_core::new_request_id();
24086        }
24087        let p0 = ::origincloud_core::path_value(
24088            "name",
24089            &request.name,
24090            "projects/*/regions/*/vpcs/*",
24091        )?;
24092        let query = ::origincloud_core::query(&request, &["name"])?;
24093        let call = ::origincloud_core::Request::new(
24094                ::origincloud_core::Method::DELETE,
24095                format!("/v1beta1/{p0}"),
24096            )
24097            .with_query(query)
24098            .idempotent();
24099        let operation = self.service.call(call).await?;
24100        Ok(
24101            ::origincloud_core::Operation::new(
24102                self.service.clone(),
24103                operation,
24104                "google.protobuf.Empty",
24105            ),
24106        )
24107    }
24108}