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, from a subnet
645    /// with `auto_assign_public_ip`. Such an address is released when its
646    /// instance is terminated.
647    #[prost(bool, tag = "6")]
648    pub auto_assigned: bool,
649    /// When the floating IP was created.
650    #[prost(message, optional, tag = "7")]
651    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
652    /// The principal that created the floating IP, such as `user:<id>` or
653    /// `service_account:<id>`; empty for one the platform created.
654    #[prost(string, tag = "8")]
655    pub creator: ::prost::alloc::string::String,
656    /// Labels of your own, at most 50. The `origin:name` tag is the name the
657    /// console shows.
658    #[prost(btree_map = "string, string", tag = "9")]
659    pub tags: ::prost::alloc::collections::BTreeMap<
660        ::prost::alloc::string::String,
661        ::prost::alloc::string::String,
662    >,
663}
664/// The request for GetFloatingIp.
665#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
666pub struct GetFloatingIpRequest {
667    /// The floating IP to return.
668    #[prost(string, tag = "1")]
669    pub name: ::prost::alloc::string::String,
670}
671/// The request for ListFloatingIps.
672#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
673pub struct ListFloatingIpsRequest {
674    /// The zone whose floating IPs to list, `projects/{project}/zones/{zone}`.
675    #[prost(string, tag = "1")]
676    pub parent: ::prost::alloc::string::String,
677    /// The most floating IPs to return; the server clamps it, and 0 means
678    /// its default.
679    #[prost(int32, tag = "2")]
680    pub page_size: i32,
681    /// A previous response's `next_page_token`, for the page after it.
682    #[prost(string, tag = "3")]
683    pub page_token: ::prost::alloc::string::String,
684}
685/// The response for ListFloatingIps.
686#[derive(Clone, PartialEq, ::prost::Message)]
687pub struct ListFloatingIpsResponse {
688    /// The floating IPs on this page.
689    #[prost(message, repeated, tag = "1")]
690    pub floating_ips: ::prost::alloc::vec::Vec<FloatingIp>,
691    /// The token for the next page; empty on the last one.
692    #[prost(string, tag = "2")]
693    pub next_page_token: ::prost::alloc::string::String,
694}
695/// The request for CreateFloatingIp.
696#[derive(Clone, PartialEq, ::prost::Message)]
697pub struct CreateFloatingIpRequest {
698    /// The zone to allocate the floating IP in,
699    /// `projects/{project}/zones/{zone}`.
700    #[prost(string, tag = "1")]
701    pub parent: ::prost::alloc::string::String,
702    /// The floating IP to allocate: optionally its tags.
703    #[prost(message, optional, tag = "2")]
704    pub floating_ip: ::core::option::Option<FloatingIp>,
705    /// A UUID; a repeat with the same id returns the first request's
706    /// operation instead of allocating a second floating IP.
707    #[prost(string, tag = "3")]
708    pub request_id: ::prost::alloc::string::String,
709}
710/// The request for UpdateFloatingIp.
711#[derive(Clone, PartialEq, ::prost::Message)]
712pub struct UpdateFloatingIpRequest {
713    /// The floating IP, by its name, with the fields to change.
714    #[prost(message, optional, tag = "1")]
715    pub floating_ip: ::core::option::Option<FloatingIp>,
716    /// The fields to change: `tags`, or `*`.
717    #[prost(message, optional, tag = "2")]
718    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
719    /// A UUID; a repeat with the same id returns the first request's
720    /// operation instead of changing the floating IP again.
721    #[prost(string, tag = "3")]
722    pub request_id: ::prost::alloc::string::String,
723}
724/// The request for DeleteFloatingIp.
725#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
726pub struct DeleteFloatingIpRequest {
727    /// The floating IP to release.
728    #[prost(string, tag = "1")]
729    pub name: ::prost::alloc::string::String,
730    /// A UUID; a repeat with the same id returns the first request's
731    /// operation.
732    #[prost(string, tag = "2")]
733    pub request_id: ::prost::alloc::string::String,
734}
735/// The network interface a floating IP reaches.
736#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
737pub struct FloatingIpAssociation {
738    /// The association's resource name. Its last segment is the network
739    /// interface's id.
740    #[prost(string, tag = "1")]
741    pub name: ::prost::alloc::string::String,
742    /// The network interface the address reaches, in the floating IP's project
743    /// and zone.
744    #[prost(string, tag = "2")]
745    pub network_interface: ::prost::alloc::string::String,
746    /// The interface's private IPv4 address the public one translates to.
747    #[prost(string, tag = "3")]
748    pub private_address: ::prost::alloc::string::String,
749}
750/// The request for GetFloatingIpAssociation.
751#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
752pub struct GetFloatingIpAssociationRequest {
753    /// The association to return.
754    #[prost(string, tag = "1")]
755    pub name: ::prost::alloc::string::String,
756}
757/// The request for ListFloatingIpAssociations.
758#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
759pub struct ListFloatingIpAssociationsRequest {
760    /// The floating IP whose association to list,
761    /// `projects/{project}/zones/{zone}/floatingIps/{floating_ip}`.
762    #[prost(string, tag = "1")]
763    pub parent: ::prost::alloc::string::String,
764    /// The most associations to return; the server clamps it, and 0 means
765    /// its default.
766    #[prost(int32, tag = "2")]
767    pub page_size: i32,
768    /// A previous response's `next_page_token`, for the page after it.
769    #[prost(string, tag = "3")]
770    pub page_token: ::prost::alloc::string::String,
771}
772/// The response for ListFloatingIpAssociations.
773#[derive(Clone, PartialEq, ::prost::Message)]
774pub struct ListFloatingIpAssociationsResponse {
775    /// The associations on this page.
776    #[prost(message, repeated, tag = "1")]
777    pub floating_ip_associations: ::prost::alloc::vec::Vec<FloatingIpAssociation>,
778    /// The token for the next page; empty on the last one.
779    #[prost(string, tag = "2")]
780    pub next_page_token: ::prost::alloc::string::String,
781}
782/// The request for CreateFloatingIpAssociation.
783#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
784pub struct CreateFloatingIpAssociationRequest {
785    /// The floating IP to associate,
786    /// `projects/{project}/zones/{zone}/floatingIps/{floating_ip}`.
787    #[prost(string, tag = "1")]
788    pub parent: ::prost::alloc::string::String,
789    /// The association to create: its network interface.
790    #[prost(message, optional, tag = "2")]
791    pub floating_ip_association: ::core::option::Option<FloatingIpAssociation>,
792    /// A UUID; a repeat with the same id returns the first request's
793    /// operation.
794    #[prost(string, tag = "3")]
795    pub request_id: ::prost::alloc::string::String,
796}
797/// The request for DeleteFloatingIpAssociation.
798#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
799pub struct DeleteFloatingIpAssociationRequest {
800    /// The association to remove.
801    #[prost(string, tag = "1")]
802    pub name: ::prost::alloc::string::String,
803    /// A UUID; a repeat with the same id returns the first request's
804    /// operation.
805    #[prost(string, tag = "2")]
806    pub request_id: ::prost::alloc::string::String,
807}
808/// A VPC's way to and from the internet.
809#[derive(Clone, PartialEq, ::prost::Message)]
810pub struct InternetGateway {
811    /// The gateway's resource name.
812    #[prost(string, tag = "1")]
813    pub name: ::prost::alloc::string::String,
814    /// The gateway's URN, the identifier access policies and the audit log
815    /// use.
816    #[prost(string, tag = "2")]
817    pub urn: ::prost::alloc::string::String,
818    /// The VPC the gateway connects, in the same project and region.
819    #[prost(string, tag = "3")]
820    pub vpc: ::prost::alloc::string::String,
821    /// When the internet gateway was created.
822    #[prost(message, optional, tag = "4")]
823    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
824    /// The principal that created the internet gateway, such as `user:<id>`
825    /// or `service_account:<id>`; empty for one the platform created.
826    #[prost(string, tag = "5")]
827    pub creator: ::prost::alloc::string::String,
828    /// Labels of your own, at most 50. The `origin:name` tag is the name the
829    /// console shows.
830    #[prost(btree_map = "string, string", tag = "6")]
831    pub tags: ::prost::alloc::collections::BTreeMap<
832        ::prost::alloc::string::String,
833        ::prost::alloc::string::String,
834    >,
835}
836/// The request for GetInternetGateway.
837#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
838pub struct GetInternetGatewayRequest {
839    /// The internet gateway to return.
840    #[prost(string, tag = "1")]
841    pub name: ::prost::alloc::string::String,
842}
843/// The request for ListInternetGateways.
844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
845pub struct ListInternetGatewaysRequest {
846    /// The region whose internet gateways to list,
847    /// `projects/{project}/regions/{region}`.
848    #[prost(string, tag = "1")]
849    pub parent: ::prost::alloc::string::String,
850    /// The most internet gateways to return; the server clamps it, and 0
851    /// means its default.
852    #[prost(int32, tag = "2")]
853    pub page_size: i32,
854    /// A previous response's `next_page_token`, for the page after it.
855    #[prost(string, tag = "3")]
856    pub page_token: ::prost::alloc::string::String,
857    /// Only the gateway of this VPC, when set.
858    #[prost(string, tag = "4")]
859    pub vpc: ::prost::alloc::string::String,
860}
861/// The response for ListInternetGateways.
862#[derive(Clone, PartialEq, ::prost::Message)]
863pub struct ListInternetGatewaysResponse {
864    /// The internet gateways on this page.
865    #[prost(message, repeated, tag = "1")]
866    pub internet_gateways: ::prost::alloc::vec::Vec<InternetGateway>,
867    /// The token for the next page; empty on the last one.
868    #[prost(string, tag = "2")]
869    pub next_page_token: ::prost::alloc::string::String,
870}
871/// The request for CreateInternetGateway.
872#[derive(Clone, PartialEq, ::prost::Message)]
873pub struct CreateInternetGatewayRequest {
874    /// The region to create the internet gateway in,
875    /// `projects/{project}/regions/{region}`.
876    #[prost(string, tag = "1")]
877    pub parent: ::prost::alloc::string::String,
878    /// The gateway to create: its VPC, and optionally its tags.
879    #[prost(message, optional, tag = "2")]
880    pub internet_gateway: ::core::option::Option<InternetGateway>,
881    /// A UUID; a repeat with the same id returns the first request's
882    /// operation instead of creating a second internet gateway.
883    #[prost(string, tag = "3")]
884    pub request_id: ::prost::alloc::string::String,
885}
886/// The request for UpdateInternetGateway.
887#[derive(Clone, PartialEq, ::prost::Message)]
888pub struct UpdateInternetGatewayRequest {
889    /// The internet gateway, by its name, with the fields to change.
890    #[prost(message, optional, tag = "1")]
891    pub internet_gateway: ::core::option::Option<InternetGateway>,
892    /// The fields to change: `tags`, or `*`.
893    #[prost(message, optional, tag = "2")]
894    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
895    /// A UUID; a repeat with the same id returns the first request's
896    /// operation instead of changing the internet gateway again.
897    #[prost(string, tag = "3")]
898    pub request_id: ::prost::alloc::string::String,
899}
900/// The request for DeleteInternetGateway.
901#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
902pub struct DeleteInternetGatewayRequest {
903    /// The internet gateway to delete.
904    #[prost(string, tag = "1")]
905    pub name: ::prost::alloc::string::String,
906    /// A UUID; a repeat with the same id returns the first request's
907    /// operation.
908    #[prost(string, tag = "2")]
909    pub request_id: ::prost::alloc::string::String,
910}
911/// Shared IPv4 egress through one floating IP.
912#[derive(Clone, PartialEq, ::prost::Message)]
913pub struct NatGateway {
914    /// The gateway's resource name.
915    #[prost(string, tag = "1")]
916    pub name: ::prost::alloc::string::String,
917    /// The gateway's URN, the identifier access policies and the audit log
918    /// use.
919    #[prost(string, tag = "2")]
920    pub urn: ::prost::alloc::string::String,
921    /// The public subnet the gateway lives in, in the same project and zone.
922    #[prost(string, tag = "3")]
923    pub subnet: ::prost::alloc::string::String,
924    /// The floating IP instances behind the gateway appear as, in the same
925    /// project and zone. It stays allocated when the gateway is deleted.
926    #[prost(string, tag = "4")]
927    pub floating_ip: ::prost::alloc::string::String,
928    /// The subnet's VPC.
929    #[prost(string, tag = "5")]
930    pub vpc: ::prost::alloc::string::String,
931    /// When the NAT gateway was created.
932    #[prost(message, optional, tag = "6")]
933    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
934    /// The principal that created the NAT gateway, such as `user:<id>` or
935    /// `service_account:<id>`; empty for one the platform created.
936    #[prost(string, tag = "7")]
937    pub creator: ::prost::alloc::string::String,
938    /// Labels of your own, at most 50. The `origin:name` tag is the name the
939    /// console shows.
940    #[prost(btree_map = "string, string", tag = "8")]
941    pub tags: ::prost::alloc::collections::BTreeMap<
942        ::prost::alloc::string::String,
943        ::prost::alloc::string::String,
944    >,
945}
946/// The request for GetNatGateway.
947#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
948pub struct GetNatGatewayRequest {
949    /// The NAT gateway to return.
950    #[prost(string, tag = "1")]
951    pub name: ::prost::alloc::string::String,
952}
953/// The request for ListNatGateways.
954#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
955pub struct ListNatGatewaysRequest {
956    /// The zone whose NAT gateways to list, `projects/{project}/zones/{zone}`.
957    #[prost(string, tag = "1")]
958    pub parent: ::prost::alloc::string::String,
959    /// The most NAT gateways to return; the server clamps it, and 0 means its
960    /// default.
961    #[prost(int32, tag = "2")]
962    pub page_size: i32,
963    /// A previous response's `next_page_token`, for the page after it.
964    #[prost(string, tag = "3")]
965    pub page_token: ::prost::alloc::string::String,
966}
967/// The response for ListNatGateways.
968#[derive(Clone, PartialEq, ::prost::Message)]
969pub struct ListNatGatewaysResponse {
970    /// The NAT gateways on this page.
971    #[prost(message, repeated, tag = "1")]
972    pub nat_gateways: ::prost::alloc::vec::Vec<NatGateway>,
973    /// The token for the next page; empty on the last one.
974    #[prost(string, tag = "2")]
975    pub next_page_token: ::prost::alloc::string::String,
976}
977/// The request for CreateNatGateway.
978#[derive(Clone, PartialEq, ::prost::Message)]
979pub struct CreateNatGatewayRequest {
980    /// The zone to create the NAT gateway in, `projects/{project}/zones/{zone}`.
981    #[prost(string, tag = "1")]
982    pub parent: ::prost::alloc::string::String,
983    /// The gateway to create: its subnet and floating IP, and optionally its
984    /// tags.
985    #[prost(message, optional, tag = "2")]
986    pub nat_gateway: ::core::option::Option<NatGateway>,
987    /// A UUID; a repeat with the same id returns the first request's
988    /// operation instead of creating a second NAT gateway.
989    #[prost(string, tag = "3")]
990    pub request_id: ::prost::alloc::string::String,
991}
992/// The request for UpdateNatGateway.
993#[derive(Clone, PartialEq, ::prost::Message)]
994pub struct UpdateNatGatewayRequest {
995    /// The NAT gateway, by its name, with the fields to change.
996    #[prost(message, optional, tag = "1")]
997    pub nat_gateway: ::core::option::Option<NatGateway>,
998    /// The fields to change: `tags`, or `*`.
999    #[prost(message, optional, tag = "2")]
1000    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1001    /// A UUID; a repeat with the same id returns the first request's
1002    /// operation instead of changing the NAT gateway again.
1003    #[prost(string, tag = "3")]
1004    pub request_id: ::prost::alloc::string::String,
1005}
1006/// The request for DeleteNatGateway.
1007#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1008pub struct DeleteNatGatewayRequest {
1009    /// The NAT gateway to delete.
1010    #[prost(string, tag = "1")]
1011    pub name: ::prost::alloc::string::String,
1012    /// A UUID; a repeat with the same id returns the first request's
1013    /// operation.
1014    #[prost(string, tag = "2")]
1015    pub request_id: ::prost::alloc::string::String,
1016}
1017/// A network interface: private addresses in one subnet, filtered by security
1018/// groups.
1019#[derive(Clone, PartialEq, ::prost::Message)]
1020pub struct NetworkInterface {
1021    /// The interface's resource name.
1022    #[prost(string, tag = "1")]
1023    pub name: ::prost::alloc::string::String,
1024    /// The interface's URN, the identifier access policies and the audit log
1025    /// use.
1026    #[prost(string, tag = "2")]
1027    pub urn: ::prost::alloc::string::String,
1028    /// The subnet the interface has its addresses in, in the same project
1029    /// and zone.
1030    #[prost(string, tag = "3")]
1031    pub subnet: ::prost::alloc::string::String,
1032    /// The security groups that filter the interface's traffic, as its
1033    /// security group associations (each a `SecurityGroupAssociation`) set
1034    /// them. The interface admits the traffic any of them allows. With none,
1035    /// it admits and sends nothing except replies to its own traffic and
1036    /// address resolution (ARP and IPv6 neighbor discovery): it is closed.
1037    #[prost(string, repeated, tag = "4")]
1038    pub security_groups: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1039    /// Whether a packet the instance sends must carry the interface's own
1040    /// MAC and IP address as its source; `true` when left unset. Turn it off
1041    /// for an instance that forwards traffic for other addresses, such as a
1042    /// router, a NAT instance or a shared virtual IP.
1043    #[prost(bool, optional, tag = "5")]
1044    pub source_address_check: ::core::option::Option<bool>,
1045    /// The interface's private IPv4 address.
1046    #[prost(string, tag = "6")]
1047    pub ipv4_address: ::prost::alloc::string::String,
1048    /// The interface's IPv6 address.
1049    #[prost(string, tag = "7")]
1050    pub ipv6_address: ::prost::alloc::string::String,
1051    /// Whether the interface is in use.
1052    #[prost(enumeration = "network_interface::State", tag = "8")]
1053    pub state: i32,
1054    /// The instance the interface is attached to; empty while it is
1055    /// `network_interface::State::Available`. An instance attaches interfaces when it is launched.
1056    #[prost(string, tag = "9")]
1057    pub instance: ::prost::alloc::string::String,
1058    /// When the network interface was created.
1059    #[prost(message, optional, tag = "10")]
1060    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1061    /// The principal that created the network interface, such as `user:<id>`
1062    /// or `service_account:<id>`; empty for one the platform created.
1063    #[prost(string, tag = "11")]
1064    pub creator: ::prost::alloc::string::String,
1065    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1066    /// console shows.
1067    #[prost(btree_map = "string, string", tag = "12")]
1068    pub tags: ::prost::alloc::collections::BTreeMap<
1069        ::prost::alloc::string::String,
1070        ::prost::alloc::string::String,
1071    >,
1072}
1073/// Nested message and enum types in `NetworkInterface`.
1074pub mod network_interface {
1075    /// Whether an interface is in use.
1076    #[derive(
1077        Clone,
1078        Copy,
1079        Debug,
1080        PartialEq,
1081        Eq,
1082        Hash,
1083        PartialOrd,
1084        Ord,
1085        ::prost::Enumeration
1086    )]
1087    #[repr(i32)]
1088    pub enum State {
1089        /// Not set.
1090        Unspecified = 0,
1091        /// Not attached to anything.
1092        Available = 1,
1093        /// Attached; `instance` names what to.
1094        Attached = 2,
1095    }
1096    impl State {
1097        /// String value of the enum field names used in the ProtoBuf definition.
1098        ///
1099        /// The values are not transformed in any way and thus are considered stable
1100        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1101        pub fn as_str_name(&self) -> &'static str {
1102            match self {
1103                Self::Unspecified => "STATE_UNSPECIFIED",
1104                Self::Available => "AVAILABLE",
1105                Self::Attached => "ATTACHED",
1106            }
1107        }
1108        /// Creates an enum from field names used in the ProtoBuf definition.
1109        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1110            match value {
1111                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
1112                "AVAILABLE" => Some(Self::Available),
1113                "ATTACHED" => Some(Self::Attached),
1114                _ => None,
1115            }
1116        }
1117    }
1118}
1119/// The request for GetNetworkInterface.
1120#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1121pub struct GetNetworkInterfaceRequest {
1122    /// The network interface to return.
1123    #[prost(string, tag = "1")]
1124    pub name: ::prost::alloc::string::String,
1125}
1126/// The request for ListNetworkInterfaces.
1127#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1128pub struct ListNetworkInterfacesRequest {
1129    /// The zone whose network interfaces to list,
1130    /// `projects/{project}/zones/{zone}`.
1131    #[prost(string, tag = "1")]
1132    pub parent: ::prost::alloc::string::String,
1133    /// The most network interfaces to return; the server clamps it, and 0
1134    /// means its default.
1135    #[prost(int32, tag = "2")]
1136    pub page_size: i32,
1137    /// A previous response's `next_page_token`, for the page after it.
1138    #[prost(string, tag = "3")]
1139    pub page_token: ::prost::alloc::string::String,
1140    /// Only the interfaces in this subnet, when set.
1141    #[prost(string, tag = "4")]
1142    pub subnet: ::prost::alloc::string::String,
1143}
1144/// The response for ListNetworkInterfaces.
1145#[derive(Clone, PartialEq, ::prost::Message)]
1146pub struct ListNetworkInterfacesResponse {
1147    /// The network interfaces on this page.
1148    #[prost(message, repeated, tag = "1")]
1149    pub network_interfaces: ::prost::alloc::vec::Vec<NetworkInterface>,
1150    /// The token for the next page; empty on the last one.
1151    #[prost(string, tag = "2")]
1152    pub next_page_token: ::prost::alloc::string::String,
1153}
1154/// The request for CreateNetworkInterface.
1155#[derive(Clone, PartialEq, ::prost::Message)]
1156pub struct CreateNetworkInterfaceRequest {
1157    /// The zone to create the network interface in,
1158    /// `projects/{project}/zones/{zone}`.
1159    #[prost(string, tag = "1")]
1160    pub parent: ::prost::alloc::string::String,
1161    /// The interface to create: its subnet, and optionally its source-address
1162    /// check and tags.
1163    #[prost(message, optional, tag = "2")]
1164    pub network_interface: ::core::option::Option<NetworkInterface>,
1165    /// A UUID; a repeat with the same id returns the first request's
1166    /// operation instead of creating a second network interface.
1167    #[prost(string, tag = "3")]
1168    pub request_id: ::prost::alloc::string::String,
1169}
1170/// The request for UpdateNetworkInterface.
1171#[derive(Clone, PartialEq, ::prost::Message)]
1172pub struct UpdateNetworkInterfaceRequest {
1173    /// The network interface, by its name, with the fields to change.
1174    #[prost(message, optional, tag = "1")]
1175    pub network_interface: ::core::option::Option<NetworkInterface>,
1176    /// The fields to change: `source_address_check`, `tags`, or both. `*` is
1177    /// both.
1178    #[prost(message, optional, tag = "2")]
1179    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1180    /// A UUID; a repeat with the same id returns the first request's
1181    /// operation instead of changing the network interface again.
1182    #[prost(string, tag = "3")]
1183    pub request_id: ::prost::alloc::string::String,
1184}
1185/// The request for DeleteNetworkInterface.
1186#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1187pub struct DeleteNetworkInterfaceRequest {
1188    /// The network interface to delete.
1189    #[prost(string, tag = "1")]
1190    pub name: ::prost::alloc::string::String,
1191    /// A UUID; a repeat with the same id returns the first request's
1192    /// operation.
1193    #[prost(string, tag = "2")]
1194    pub request_id: ::prost::alloc::string::String,
1195}
1196/// A route: traffic to `destination` leaves through one gateway. Set exactly
1197/// one of `internet_gateway` and `nat_gateway`.
1198#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1199pub struct Route {
1200    /// The route's resource name.
1201    #[prost(string, tag = "1")]
1202    pub name: ::prost::alloc::string::String,
1203    /// The destination: the IPv4 default route, written with an all-zero
1204    /// address and prefix length 0, or the IPv6 one, `::/0`. A route table
1205    /// decides only where traffic to the internet goes.
1206    #[prost(string, tag = "2")]
1207    pub destination: ::prost::alloc::string::String,
1208    /// The internet gateway of the table's VPC to send the traffic to.
1209    #[prost(string, tag = "3")]
1210    pub internet_gateway: ::prost::alloc::string::String,
1211    /// The NAT gateway in the table's VPC to send the traffic to, for the
1212    /// IPv4 default route only: a NAT gateway translates IPv4 only. Named in
1213    /// the gateway's own zone; a name with another zone is refused with
1214    /// `INVALID_ARGUMENT`.
1215    #[prost(string, tag = "4")]
1216    pub nat_gateway: ::prost::alloc::string::String,
1217}
1218/// The request for GetRoute.
1219#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1220pub struct GetRouteRequest {
1221    /// The route to return.
1222    #[prost(string, tag = "1")]
1223    pub name: ::prost::alloc::string::String,
1224}
1225/// The request for ListRoutes.
1226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1227pub struct ListRoutesRequest {
1228    /// The route table whose routes to list,
1229    /// `projects/{project}/regions/{region}/routeTables/{route_table}`.
1230    #[prost(string, tag = "1")]
1231    pub parent: ::prost::alloc::string::String,
1232    /// The most routes to return; the server clamps it, and 0 means its
1233    /// default.
1234    #[prost(int32, tag = "2")]
1235    pub page_size: i32,
1236    /// A previous response's `next_page_token`, for the page after it.
1237    #[prost(string, tag = "3")]
1238    pub page_token: ::prost::alloc::string::String,
1239}
1240/// The response for ListRoutes.
1241#[derive(Clone, PartialEq, ::prost::Message)]
1242pub struct ListRoutesResponse {
1243    /// The routes on this page.
1244    #[prost(message, repeated, tag = "1")]
1245    pub routes: ::prost::alloc::vec::Vec<Route>,
1246    /// The token for the next page; empty on the last one.
1247    #[prost(string, tag = "2")]
1248    pub next_page_token: ::prost::alloc::string::String,
1249}
1250/// The request for CreateRoute.
1251#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1252pub struct CreateRouteRequest {
1253    /// The route table to add the route to,
1254    /// `projects/{project}/regions/{region}/routeTables/{route_table}`.
1255    #[prost(string, tag = "1")]
1256    pub parent: ::prost::alloc::string::String,
1257    /// The route to add: its destination and its gateway.
1258    #[prost(message, optional, tag = "2")]
1259    pub route: ::core::option::Option<Route>,
1260    /// A UUID; a repeat with the same id returns the first request's
1261    /// operation instead of adding the route again.
1262    #[prost(string, tag = "3")]
1263    pub request_id: ::prost::alloc::string::String,
1264}
1265/// The request for DeleteRoute.
1266#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1267pub struct DeleteRouteRequest {
1268    /// The route to remove.
1269    #[prost(string, tag = "1")]
1270    pub name: ::prost::alloc::string::String,
1271    /// A UUID; a repeat with the same id returns the first request's
1272    /// operation.
1273    #[prost(string, tag = "2")]
1274    pub request_id: ::prost::alloc::string::String,
1275}
1276/// Routes out of a VPC for the subnets associated with the table.
1277#[derive(Clone, PartialEq, ::prost::Message)]
1278pub struct RouteTable {
1279    /// The route table's resource name.
1280    #[prost(string, tag = "1")]
1281    pub name: ::prost::alloc::string::String,
1282    /// The route table's URN, the identifier access policies and the audit
1283    /// log use.
1284    #[prost(string, tag = "2")]
1285    pub urn: ::prost::alloc::string::String,
1286    /// The VPC the table routes for, in the same project and region.
1287    #[prost(string, tag = "3")]
1288    pub vpc: ::prost::alloc::string::String,
1289    /// Whether the platform created the table with the VPC, as its main route
1290    /// table. Only the project's default VPC has such resources. It can't be
1291    /// deleted, and goes with its VPC. Like any other table, it routes only
1292    /// for the subnets a route table association names it for.
1293    #[prost(bool, tag = "4")]
1294    pub main: bool,
1295    /// The VPC's own ranges, which every table reaches directly. Traffic
1296    /// within the VPC never needs a route.
1297    #[prost(string, repeated, tag = "5")]
1298    pub local_routes: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1299    /// When the route table was created.
1300    #[prost(message, optional, tag = "6")]
1301    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1302    /// The principal that created the route table, such as `user:<id>` or
1303    /// `service_account:<id>`; empty for one the platform created.
1304    #[prost(string, tag = "7")]
1305    pub creator: ::prost::alloc::string::String,
1306    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1307    /// console shows.
1308    #[prost(btree_map = "string, string", tag = "8")]
1309    pub tags: ::prost::alloc::collections::BTreeMap<
1310        ::prost::alloc::string::String,
1311        ::prost::alloc::string::String,
1312    >,
1313}
1314/// The request for GetRouteTable.
1315#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1316pub struct GetRouteTableRequest {
1317    /// The route table to return.
1318    #[prost(string, tag = "1")]
1319    pub name: ::prost::alloc::string::String,
1320}
1321/// The request for ListRouteTables.
1322#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1323pub struct ListRouteTablesRequest {
1324    /// The region whose route tables to list,
1325    /// `projects/{project}/regions/{region}`.
1326    #[prost(string, tag = "1")]
1327    pub parent: ::prost::alloc::string::String,
1328    /// The most route tables to return; the server clamps it, and 0 means
1329    /// its default.
1330    #[prost(int32, tag = "2")]
1331    pub page_size: i32,
1332    /// A previous response's `next_page_token`, for the page after it.
1333    #[prost(string, tag = "3")]
1334    pub page_token: ::prost::alloc::string::String,
1335    /// Only the route tables of this VPC, when set.
1336    #[prost(string, tag = "4")]
1337    pub vpc: ::prost::alloc::string::String,
1338}
1339/// The response for ListRouteTables.
1340#[derive(Clone, PartialEq, ::prost::Message)]
1341pub struct ListRouteTablesResponse {
1342    /// The route tables on this page.
1343    #[prost(message, repeated, tag = "1")]
1344    pub route_tables: ::prost::alloc::vec::Vec<RouteTable>,
1345    /// The token for the next page; empty on the last one.
1346    #[prost(string, tag = "2")]
1347    pub next_page_token: ::prost::alloc::string::String,
1348}
1349/// The request for CreateRouteTable.
1350#[derive(Clone, PartialEq, ::prost::Message)]
1351pub struct CreateRouteTableRequest {
1352    /// The region to create the route table in,
1353    /// `projects/{project}/regions/{region}`.
1354    #[prost(string, tag = "1")]
1355    pub parent: ::prost::alloc::string::String,
1356    /// The route table to create: its VPC, and optionally its tags.
1357    #[prost(message, optional, tag = "2")]
1358    pub route_table: ::core::option::Option<RouteTable>,
1359    /// A UUID; a repeat with the same id returns the first request's
1360    /// operation instead of creating a second route table.
1361    #[prost(string, tag = "3")]
1362    pub request_id: ::prost::alloc::string::String,
1363}
1364/// The request for UpdateRouteTable.
1365#[derive(Clone, PartialEq, ::prost::Message)]
1366pub struct UpdateRouteTableRequest {
1367    /// The route table, by its name, with the fields to change.
1368    #[prost(message, optional, tag = "1")]
1369    pub route_table: ::core::option::Option<RouteTable>,
1370    /// The fields to change: `tags`, or `*`.
1371    #[prost(message, optional, tag = "2")]
1372    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1373    /// A UUID; a repeat with the same id returns the first request's
1374    /// operation instead of changing the route table again.
1375    #[prost(string, tag = "3")]
1376    pub request_id: ::prost::alloc::string::String,
1377}
1378/// The request for DeleteRouteTable.
1379#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1380pub struct DeleteRouteTableRequest {
1381    /// The route table to delete.
1382    #[prost(string, tag = "1")]
1383    pub name: ::prost::alloc::string::String,
1384    /// A UUID; a repeat with the same id returns the first request's
1385    /// operation.
1386    #[prost(string, tag = "2")]
1387    pub request_id: ::prost::alloc::string::String,
1388}
1389/// The route table a subnet uses.
1390#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1391pub struct RouteTableAssociation {
1392    /// The association's resource name. Its last segment is the route
1393    /// table's id.
1394    #[prost(string, tag = "1")]
1395    pub name: ::prost::alloc::string::String,
1396    /// The route table the subnet uses, in the subnet's VPC.
1397    #[prost(string, tag = "2")]
1398    pub route_table: ::prost::alloc::string::String,
1399}
1400/// The request for GetRouteTableAssociation.
1401#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1402pub struct GetRouteTableAssociationRequest {
1403    /// The association to return.
1404    #[prost(string, tag = "1")]
1405    pub name: ::prost::alloc::string::String,
1406}
1407/// The request for ListRouteTableAssociations.
1408#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1409pub struct ListRouteTableAssociationsRequest {
1410    /// The subnet whose association to list,
1411    /// `projects/{project}/zones/{zone}/subnets/{subnet}`.
1412    #[prost(string, tag = "1")]
1413    pub parent: ::prost::alloc::string::String,
1414    /// The most associations to return; the server clamps it, and 0 means
1415    /// its default.
1416    #[prost(int32, tag = "2")]
1417    pub page_size: i32,
1418    /// A previous response's `next_page_token`, for the page after it.
1419    #[prost(string, tag = "3")]
1420    pub page_token: ::prost::alloc::string::String,
1421}
1422/// The response for ListRouteTableAssociations.
1423#[derive(Clone, PartialEq, ::prost::Message)]
1424pub struct ListRouteTableAssociationsResponse {
1425    /// The associations on this page.
1426    #[prost(message, repeated, tag = "1")]
1427    pub route_table_associations: ::prost::alloc::vec::Vec<RouteTableAssociation>,
1428    /// The token for the next page; empty on the last one.
1429    #[prost(string, tag = "2")]
1430    pub next_page_token: ::prost::alloc::string::String,
1431}
1432/// The request for CreateRouteTableAssociation.
1433#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1434pub struct CreateRouteTableAssociationRequest {
1435    /// The subnet to associate the route table with,
1436    /// `projects/{project}/zones/{zone}/subnets/{subnet}`.
1437    #[prost(string, tag = "1")]
1438    pub parent: ::prost::alloc::string::String,
1439    /// The association to create: its route table.
1440    #[prost(message, optional, tag = "2")]
1441    pub route_table_association: ::core::option::Option<RouteTableAssociation>,
1442    /// A UUID; a repeat with the same id returns the first request's
1443    /// operation.
1444    #[prost(string, tag = "3")]
1445    pub request_id: ::prost::alloc::string::String,
1446}
1447/// The request for DeleteRouteTableAssociation.
1448#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1449pub struct DeleteRouteTableAssociationRequest {
1450    /// The association to remove.
1451    #[prost(string, tag = "1")]
1452    pub name: ::prost::alloc::string::String,
1453    /// A UUID; a repeat with the same id returns the first request's
1454    /// operation.
1455    #[prost(string, tag = "2")]
1456    pub request_id: ::prost::alloc::string::String,
1457}
1458/// Rules that allow traffic to and from the network interfaces associated
1459/// with the group.
1460#[derive(Clone, PartialEq, ::prost::Message)]
1461pub struct SecurityGroup {
1462    /// The group's resource name.
1463    #[prost(string, tag = "1")]
1464    pub name: ::prost::alloc::string::String,
1465    /// The group's URN, the identifier access policies and the audit log use.
1466    #[prost(string, tag = "2")]
1467    pub urn: ::prost::alloc::string::String,
1468    /// The VPC the group belongs to, in the same project and region.
1469    #[prost(string, tag = "3")]
1470    pub vpc: ::prost::alloc::string::String,
1471    /// Whether the platform created the group with the VPC. Only the
1472    /// project's default VPC has such resources. It can't be deleted, and
1473    /// goes with its VPC.
1474    #[prost(bool, tag = "4")]
1475    pub vpc_default: bool,
1476    /// When the security group was created.
1477    #[prost(message, optional, tag = "5")]
1478    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1479    /// The principal that created the security group, such as `user:<id>` or
1480    /// `service_account:<id>`; empty for one the platform created.
1481    #[prost(string, tag = "6")]
1482    pub creator: ::prost::alloc::string::String,
1483    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1484    /// console shows.
1485    #[prost(btree_map = "string, string", tag = "7")]
1486    pub tags: ::prost::alloc::collections::BTreeMap<
1487        ::prost::alloc::string::String,
1488        ::prost::alloc::string::String,
1489    >,
1490}
1491/// The request for GetSecurityGroup.
1492#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1493pub struct GetSecurityGroupRequest {
1494    /// The security group to return.
1495    #[prost(string, tag = "1")]
1496    pub name: ::prost::alloc::string::String,
1497}
1498/// The request for ListSecurityGroups.
1499#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1500pub struct ListSecurityGroupsRequest {
1501    /// The region whose security groups to list,
1502    /// `projects/{project}/regions/{region}`.
1503    #[prost(string, tag = "1")]
1504    pub parent: ::prost::alloc::string::String,
1505    /// The most security groups to return; the server clamps it, and 0
1506    /// means its default.
1507    #[prost(int32, tag = "2")]
1508    pub page_size: i32,
1509    /// A previous response's `next_page_token`, for the page after it.
1510    #[prost(string, tag = "3")]
1511    pub page_token: ::prost::alloc::string::String,
1512    /// Only the groups of this VPC, when set.
1513    #[prost(string, tag = "4")]
1514    pub vpc: ::prost::alloc::string::String,
1515}
1516/// The response for ListSecurityGroups.
1517#[derive(Clone, PartialEq, ::prost::Message)]
1518pub struct ListSecurityGroupsResponse {
1519    /// The security groups on this page.
1520    #[prost(message, repeated, tag = "1")]
1521    pub security_groups: ::prost::alloc::vec::Vec<SecurityGroup>,
1522    /// The token for the next page; empty on the last one.
1523    #[prost(string, tag = "2")]
1524    pub next_page_token: ::prost::alloc::string::String,
1525}
1526/// The request for CreateSecurityGroup.
1527#[derive(Clone, PartialEq, ::prost::Message)]
1528pub struct CreateSecurityGroupRequest {
1529    /// The region to create the security group in,
1530    /// `projects/{project}/regions/{region}`.
1531    #[prost(string, tag = "1")]
1532    pub parent: ::prost::alloc::string::String,
1533    /// The group to create: its VPC, and optionally its tags.
1534    #[prost(message, optional, tag = "2")]
1535    pub security_group: ::core::option::Option<SecurityGroup>,
1536    /// A UUID; a repeat with the same id returns the first request's
1537    /// operation instead of creating a second security group.
1538    #[prost(string, tag = "3")]
1539    pub request_id: ::prost::alloc::string::String,
1540}
1541/// The request for UpdateSecurityGroup.
1542#[derive(Clone, PartialEq, ::prost::Message)]
1543pub struct UpdateSecurityGroupRequest {
1544    /// The security group, by its name, with the fields to change.
1545    #[prost(message, optional, tag = "1")]
1546    pub security_group: ::core::option::Option<SecurityGroup>,
1547    /// The fields to change: `tags`, or `*`.
1548    #[prost(message, optional, tag = "2")]
1549    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1550    /// A UUID; a repeat with the same id returns the first request's
1551    /// operation instead of changing the security group again.
1552    #[prost(string, tag = "3")]
1553    pub request_id: ::prost::alloc::string::String,
1554}
1555/// The request for DeleteSecurityGroup.
1556#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1557pub struct DeleteSecurityGroupRequest {
1558    /// The security group to delete.
1559    #[prost(string, tag = "1")]
1560    pub name: ::prost::alloc::string::String,
1561    /// A UUID; a repeat with the same id returns the first request's
1562    /// operation.
1563    #[prost(string, tag = "2")]
1564    pub request_id: ::prost::alloc::string::String,
1565}
1566/// A security group that filters a network interface's traffic.
1567#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1568pub struct SecurityGroupAssociation {
1569    /// The association's resource name. Its last segment is the security
1570    /// group's id.
1571    #[prost(string, tag = "1")]
1572    pub name: ::prost::alloc::string::String,
1573    /// The security group, in the interface's VPC.
1574    #[prost(string, tag = "2")]
1575    pub security_group: ::prost::alloc::string::String,
1576}
1577/// The request for GetSecurityGroupAssociation.
1578#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1579pub struct GetSecurityGroupAssociationRequest {
1580    /// The association to return.
1581    #[prost(string, tag = "1")]
1582    pub name: ::prost::alloc::string::String,
1583}
1584/// The request for ListSecurityGroupAssociations.
1585#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1586pub struct ListSecurityGroupAssociationsRequest {
1587    /// The network interface whose associations to list,
1588    /// `projects/{project}/zones/{zone}/networkInterfaces/{network_interface}`.
1589    #[prost(string, tag = "1")]
1590    pub parent: ::prost::alloc::string::String,
1591    /// The most associations to return; the server clamps it, and 0 means
1592    /// its default.
1593    #[prost(int32, tag = "2")]
1594    pub page_size: i32,
1595    /// A previous response's `next_page_token`, for the page after it.
1596    #[prost(string, tag = "3")]
1597    pub page_token: ::prost::alloc::string::String,
1598}
1599/// The response for ListSecurityGroupAssociations.
1600#[derive(Clone, PartialEq, ::prost::Message)]
1601pub struct ListSecurityGroupAssociationsResponse {
1602    /// The associations on this page.
1603    #[prost(message, repeated, tag = "1")]
1604    pub security_group_associations: ::prost::alloc::vec::Vec<SecurityGroupAssociation>,
1605    /// The token for the next page; empty on the last one.
1606    #[prost(string, tag = "2")]
1607    pub next_page_token: ::prost::alloc::string::String,
1608}
1609/// The request for CreateSecurityGroupAssociation.
1610#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1611pub struct CreateSecurityGroupAssociationRequest {
1612    /// The network interface to associate the security group with,
1613    /// `projects/{project}/zones/{zone}/networkInterfaces/{network_interface}`.
1614    #[prost(string, tag = "1")]
1615    pub parent: ::prost::alloc::string::String,
1616    /// The association to create: its security group.
1617    #[prost(message, optional, tag = "2")]
1618    pub security_group_association: ::core::option::Option<SecurityGroupAssociation>,
1619    /// A UUID; a repeat with the same id returns the first request's
1620    /// operation.
1621    #[prost(string, tag = "3")]
1622    pub request_id: ::prost::alloc::string::String,
1623}
1624/// The request for DeleteSecurityGroupAssociation.
1625#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1626pub struct DeleteSecurityGroupAssociationRequest {
1627    /// The association to remove.
1628    #[prost(string, tag = "1")]
1629    pub name: ::prost::alloc::string::String,
1630    /// A UUID; a repeat with the same id returns the first request's
1631    /// operation.
1632    #[prost(string, tag = "2")]
1633    pub request_id: ::prost::alloc::string::String,
1634}
1635/// A security group rule: the traffic it allows in one direction, to or from
1636/// one peer. Set exactly one of `cidr_block`, `peer_security_group` and
1637/// `same_group`.
1638#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1639pub struct SecurityGroupRule {
1640    /// The rule's resource name.
1641    #[prost(string, tag = "1")]
1642    pub name: ::prost::alloc::string::String,
1643    /// Which traffic the rule applies to.
1644    #[prost(enumeration = "security_group_rule::Direction", tag = "2")]
1645    pub direction: i32,
1646    /// The traffic the rule allows.
1647    #[prost(enumeration = "security_group_rule::Protocol", tag = "3")]
1648    pub protocol: i32,
1649    /// The first port the rule matches, for `security_group_rule::Protocol::Tcp` and `security_group_rule::Protocol::Udp`. Each set of
1650    /// ports has one spelling, and the rule reads back in it: `first_port` 0
1651    /// and `last_port` 0 match every port, a `last_port` of 0 the single port
1652    /// `first_port`, and a `first_port` below `last_port` the range between
1653    /// them. Any other spelling of a set is refused with `INVALID_ARGUMENT`
1654    /// naming the one to use: `first_port` 22 and `last_port` 22 is
1655    /// `first_port` 22 and `last_port` 0, and 0 or 1 to 65535 is 0 and 0.
1656    #[prost(int32, tag = "4")]
1657    pub first_port: i32,
1658    /// The last port the rule matches, above `first_port`; 0 for the single
1659    /// port `first_port`, or with `first_port` 0 for every port.
1660    #[prost(int32, tag = "5")]
1661    pub last_port: i32,
1662    /// The peer as an address range: where admitted traffic comes from, or
1663    /// where sent traffic goes to.
1664    #[prost(string, tag = "6")]
1665    pub cidr_block: ::prost::alloc::string::String,
1666    /// The peer as another security group of the same VPC: its members'
1667    /// addresses. The rule's own group is refused here with
1668    /// `INVALID_ARGUMENT`: it is `same_group`.
1669    #[prost(string, tag = "7")]
1670    pub peer_security_group: ::prost::alloc::string::String,
1671    /// The peer as the rule's own group's members.
1672    #[prost(bool, tag = "8")]
1673    pub same_group: bool,
1674    /// What the rule is for.
1675    #[prost(string, tag = "9")]
1676    pub description: ::prost::alloc::string::String,
1677}
1678/// Nested message and enum types in `SecurityGroupRule`.
1679pub mod security_group_rule {
1680    /// Which traffic a rule applies to.
1681    #[derive(
1682        Clone,
1683        Copy,
1684        Debug,
1685        PartialEq,
1686        Eq,
1687        Hash,
1688        PartialOrd,
1689        Ord,
1690        ::prost::Enumeration
1691    )]
1692    #[repr(i32)]
1693    pub enum Direction {
1694        /// Not set.
1695        Unspecified = 0,
1696        /// Traffic an interface in the group admits.
1697        Ingress = 1,
1698        /// Traffic an interface in the group sends.
1699        Egress = 2,
1700    }
1701    impl Direction {
1702        /// String value of the enum field names used in the ProtoBuf definition.
1703        ///
1704        /// The values are not transformed in any way and thus are considered stable
1705        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1706        pub fn as_str_name(&self) -> &'static str {
1707            match self {
1708                Self::Unspecified => "DIRECTION_UNSPECIFIED",
1709                Self::Ingress => "INGRESS",
1710                Self::Egress => "EGRESS",
1711            }
1712        }
1713        /// Creates an enum from field names used in the ProtoBuf definition.
1714        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1715            match value {
1716                "DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
1717                "INGRESS" => Some(Self::Ingress),
1718                "EGRESS" => Some(Self::Egress),
1719                _ => None,
1720            }
1721        }
1722    }
1723    /// The traffic a rule matches.
1724    #[derive(
1725        Clone,
1726        Copy,
1727        Debug,
1728        PartialEq,
1729        Eq,
1730        Hash,
1731        PartialOrd,
1732        Ord,
1733        ::prost::Enumeration
1734    )]
1735    #[repr(i32)]
1736    pub enum Protocol {
1737        /// Not set.
1738        Unspecified = 0,
1739        /// Every protocol; ports don't apply.
1740        All = 1,
1741        /// TCP.
1742        Tcp = 2,
1743        /// UDP.
1744        Udp = 3,
1745        /// ICMP to and from IPv4 ranges, ICMPv6 to and from IPv6 ranges, every
1746        /// type and code; ports don't apply.
1747        Icmp = 4,
1748    }
1749    impl Protocol {
1750        /// String value of the enum field names used in the ProtoBuf definition.
1751        ///
1752        /// The values are not transformed in any way and thus are considered stable
1753        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1754        pub fn as_str_name(&self) -> &'static str {
1755            match self {
1756                Self::Unspecified => "PROTOCOL_UNSPECIFIED",
1757                Self::All => "ALL",
1758                Self::Tcp => "TCP",
1759                Self::Udp => "UDP",
1760                Self::Icmp => "ICMP",
1761            }
1762        }
1763        /// Creates an enum from field names used in the ProtoBuf definition.
1764        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1765            match value {
1766                "PROTOCOL_UNSPECIFIED" => Some(Self::Unspecified),
1767                "ALL" => Some(Self::All),
1768                "TCP" => Some(Self::Tcp),
1769                "UDP" => Some(Self::Udp),
1770                "ICMP" => Some(Self::Icmp),
1771                _ => None,
1772            }
1773        }
1774    }
1775}
1776/// The request for GetSecurityGroupRule.
1777#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1778pub struct GetSecurityGroupRuleRequest {
1779    /// The rule to return.
1780    #[prost(string, tag = "1")]
1781    pub name: ::prost::alloc::string::String,
1782}
1783/// The request for ListSecurityGroupRules.
1784#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1785pub struct ListSecurityGroupRulesRequest {
1786    /// The security group whose rules to list,
1787    /// `projects/{project}/regions/{region}/securityGroups/{security_group}`.
1788    #[prost(string, tag = "1")]
1789    pub parent: ::prost::alloc::string::String,
1790    /// The most rules to return; the server clamps it, and 0 means its
1791    /// default.
1792    #[prost(int32, tag = "2")]
1793    pub page_size: i32,
1794    /// A previous response's `next_page_token`, for the page after it.
1795    #[prost(string, tag = "3")]
1796    pub page_token: ::prost::alloc::string::String,
1797}
1798/// The response for ListSecurityGroupRules.
1799#[derive(Clone, PartialEq, ::prost::Message)]
1800pub struct ListSecurityGroupRulesResponse {
1801    /// The rules on this page.
1802    #[prost(message, repeated, tag = "1")]
1803    pub security_group_rules: ::prost::alloc::vec::Vec<SecurityGroupRule>,
1804    /// The token for the next page; empty on the last one.
1805    #[prost(string, tag = "2")]
1806    pub next_page_token: ::prost::alloc::string::String,
1807}
1808/// The request for CreateSecurityGroupRule.
1809#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1810pub struct CreateSecurityGroupRuleRequest {
1811    /// The security group to add the rule to,
1812    /// `projects/{project}/regions/{region}/securityGroups/{security_group}`.
1813    #[prost(string, tag = "1")]
1814    pub parent: ::prost::alloc::string::String,
1815    /// The rule to add.
1816    #[prost(message, optional, tag = "2")]
1817    pub security_group_rule: ::core::option::Option<SecurityGroupRule>,
1818    /// A UUID; a repeat with the same id returns the first request's
1819    /// operation instead of adding the rule again.
1820    #[prost(string, tag = "3")]
1821    pub request_id: ::prost::alloc::string::String,
1822}
1823/// The request for DeleteSecurityGroupRule.
1824#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1825pub struct DeleteSecurityGroupRuleRequest {
1826    /// The rule to remove.
1827    #[prost(string, tag = "1")]
1828    pub name: ::prost::alloc::string::String,
1829    /// A UUID; a repeat with the same id returns the first request's
1830    /// operation.
1831    #[prost(string, tag = "2")]
1832    pub request_id: ::prost::alloc::string::String,
1833}
1834/// The part of a VPC in one zone, with its own address ranges.
1835#[derive(Clone, PartialEq, ::prost::Message)]
1836pub struct Subnet {
1837    /// The subnet's resource name.
1838    #[prost(string, tag = "1")]
1839    pub name: ::prost::alloc::string::String,
1840    /// The subnet's URN, the identifier access policies and the audit log
1841    /// use.
1842    #[prost(string, tag = "2")]
1843    pub urn: ::prost::alloc::string::String,
1844    /// The VPC the subnet is part of, in the same project and in the zone's
1845    /// region. For now a VPC lives in one zone of its region: a subnet in
1846    /// another zone is refused with `FAILED_PRECONDITION`.
1847    #[prost(string, tag = "3")]
1848    pub vpc: ::prost::alloc::string::String,
1849    /// The route table that decides where the subnet's traffic goes, as the
1850    /// subnet's route table association (a `RouteTableAssociation`) sets it.
1851    /// Empty while it has none: the subnet then has no route out of its VPC
1852    /// and counts as a subnet whose route table has no default route. Internet
1853    /// access is decided per VPC and address family, from the route tables of
1854    /// all its subnets (a `Route` with that family's default destination).
1855    #[prost(string, tag = "4")]
1856    pub route_table: ::prost::alloc::string::String,
1857    /// The ACL that filters traffic in and out of the subnet, as the subnet's
1858    /// ACL association (an `AclAssociation`) sets it. Empty while it has
1859    /// none: nothing is filtered at the subnet's edge, and its interfaces'
1860    /// security groups still apply.
1861    #[prost(string, tag = "5")]
1862    pub acl: ::prost::alloc::string::String,
1863    /// Whether an instance launched into the subnet gets a floating IP of
1864    /// its own, released when the instance is terminated.
1865    #[prost(bool, tag = "6")]
1866    pub auto_assign_public_ip: bool,
1867    /// The subnet's IPv4 range.
1868    #[prost(string, tag = "7")]
1869    pub ipv4_cidr_block: ::prost::alloc::string::String,
1870    /// The subnet's IPv6 range, a `/72`.
1871    #[prost(string, tag = "8")]
1872    pub ipv6_cidr_block: ::prost::alloc::string::String,
1873    /// The IPv4 address of the subnet's router.
1874    #[prost(string, tag = "9")]
1875    pub ipv4_gateway: ::prost::alloc::string::String,
1876    /// The IPv6 address of the subnet's router.
1877    #[prost(string, tag = "10")]
1878    pub ipv6_gateway: ::prost::alloc::string::String,
1879    /// The DNS servers instances in the subnet use over IPv4.
1880    #[prost(string, repeated, tag = "11")]
1881    pub ipv4_dns_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1882    /// The DNS servers instances in the subnet use over IPv6.
1883    #[prost(string, repeated, tag = "12")]
1884    pub ipv6_dns_servers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1885    /// How many IPv4 addresses in the subnet are free for interfaces.
1886    #[prost(int64, tag = "13")]
1887    pub available_ipv4_address_count: i64,
1888    /// When the subnet was created.
1889    #[prost(message, optional, tag = "14")]
1890    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
1891    /// The principal that created the subnet, such as `user:<id>` or
1892    /// `service_account:<id>`; empty for one the platform created.
1893    #[prost(string, tag = "15")]
1894    pub creator: ::prost::alloc::string::String,
1895    /// Labels of your own, at most 50. The `origin:name` tag is the name the
1896    /// console shows.
1897    #[prost(btree_map = "string, string", tag = "16")]
1898    pub tags: ::prost::alloc::collections::BTreeMap<
1899        ::prost::alloc::string::String,
1900        ::prost::alloc::string::String,
1901    >,
1902}
1903/// The request for GetSubnet.
1904#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1905pub struct GetSubnetRequest {
1906    /// The subnet to return.
1907    #[prost(string, tag = "1")]
1908    pub name: ::prost::alloc::string::String,
1909}
1910/// The request for ListSubnets.
1911#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1912pub struct ListSubnetsRequest {
1913    /// The zone whose subnets to list, `projects/{project}/zones/{zone}`.
1914    #[prost(string, tag = "1")]
1915    pub parent: ::prost::alloc::string::String,
1916    /// The most subnets to return; the server clamps it, and 0 means its
1917    /// default.
1918    #[prost(int32, tag = "2")]
1919    pub page_size: i32,
1920    /// A previous response's `next_page_token`, for the page after it.
1921    #[prost(string, tag = "3")]
1922    pub page_token: ::prost::alloc::string::String,
1923    /// Only the subnets of this VPC, when set.
1924    #[prost(string, tag = "4")]
1925    pub vpc: ::prost::alloc::string::String,
1926}
1927/// The response for ListSubnets.
1928#[derive(Clone, PartialEq, ::prost::Message)]
1929pub struct ListSubnetsResponse {
1930    /// The subnets on this page.
1931    #[prost(message, repeated, tag = "1")]
1932    pub subnets: ::prost::alloc::vec::Vec<Subnet>,
1933    /// The token for the next page; empty on the last one.
1934    #[prost(string, tag = "2")]
1935    pub next_page_token: ::prost::alloc::string::String,
1936}
1937/// The request for CreateSubnet.
1938#[derive(Clone, PartialEq, ::prost::Message)]
1939pub struct CreateSubnetRequest {
1940    /// The zone to create the subnet in, `projects/{project}/zones/{zone}`.
1941    #[prost(string, tag = "1")]
1942    pub parent: ::prost::alloc::string::String,
1943    /// The subnet to create: its VPC, and optionally its public address
1944    /// assignment and tags.
1945    #[prost(message, optional, tag = "2")]
1946    pub subnet: ::core::option::Option<Subnet>,
1947    /// A UUID; a repeat with the same id returns the first request's
1948    /// operation instead of creating a second subnet.
1949    #[prost(string, tag = "3")]
1950    pub request_id: ::prost::alloc::string::String,
1951}
1952/// The request for UpdateSubnet.
1953#[derive(Clone, PartialEq, ::prost::Message)]
1954pub struct UpdateSubnetRequest {
1955    /// The subnet, by its name, with the fields to change.
1956    #[prost(message, optional, tag = "1")]
1957    pub subnet: ::core::option::Option<Subnet>,
1958    /// The fields to change: `auto_assign_public_ip`, `tags`, or both. `*`
1959    /// is both.
1960    #[prost(message, optional, tag = "2")]
1961    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
1962    /// A UUID; a repeat with the same id returns the first request's
1963    /// operation instead of changing the subnet again.
1964    #[prost(string, tag = "3")]
1965    pub request_id: ::prost::alloc::string::String,
1966}
1967/// The request for DeleteSubnet.
1968#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1969pub struct DeleteSubnetRequest {
1970    /// The subnet to delete.
1971    #[prost(string, tag = "1")]
1972    pub name: ::prost::alloc::string::String,
1973    /// A UUID; a repeat with the same id returns the first request's
1974    /// operation.
1975    #[prost(string, tag = "2")]
1976    pub request_id: ::prost::alloc::string::String,
1977}
1978/// A private network in one region.
1979#[derive(Clone, PartialEq, ::prost::Message)]
1980pub struct Vpc {
1981    /// The VPC's resource name.
1982    #[prost(string, tag = "1")]
1983    pub name: ::prost::alloc::string::String,
1984    /// The VPC's URN, the identifier access policies and the audit log use.
1985    #[prost(string, tag = "2")]
1986    pub urn: ::prost::alloc::string::String,
1987    /// The private IPv4 range (RFC 1918), from `/16` to `/28`. A free `/16`
1988    /// of the `172.16` private block when left empty. Subnets are carved from
1989    /// it in equal sizes.
1990    #[prost(string, tag = "3")]
1991    pub ipv4_cidr_block: ::prost::alloc::string::String,
1992    /// The IPv6 range the platform assigned, a `/56`. Each subnet gets a
1993    /// `/72` of it.
1994    #[prost(string, tag = "4")]
1995    pub ipv6_cidr_block: ::prost::alloc::string::String,
1996    /// The prefix length of every subnet's IPv4 range.
1997    #[prost(int32, tag = "5")]
1998    pub subnet_ipv4_prefix_length: i32,
1999    /// How many more subnets the VPC's address space holds.
2000    #[prost(int32, tag = "6")]
2001    pub available_subnet_count: i32,
2002    /// The DNS policy the VPC's resolver relays through, as the VPC's DNS
2003    /// policy association (a `DnsPolicyAssociation`) sets it. Empty while it
2004    /// has none: the VPC then relays through the project's default DNS policy
2005    /// in its region.
2006    #[prost(string, tag = "7")]
2007    pub dns_policy: ::prost::alloc::string::String,
2008    /// The VPC's internet gateway; empty while it has none.
2009    #[prost(string, tag = "8")]
2010    pub internet_gateway: ::prost::alloc::string::String,
2011    /// Whether this is the project's default VPC. Unlike a VPC you create, the
2012    /// platform creates it with defaults: an internet gateway, and a security
2013    /// group, an ACL and a main route table marked as created with the VPC
2014    /// (`vpc_default` on the group and the ACL, `main` on the route table).
2015    #[prost(bool, tag = "9")]
2016    pub project_default: bool,
2017    /// When the VPC was created.
2018    #[prost(message, optional, tag = "10")]
2019    pub create_time: ::core::option::Option<::origincloud_core::protobuf::Timestamp>,
2020    /// The principal that created the VPC, such as `user:<id>` or
2021    /// `service_account:<id>`; empty for one the platform created.
2022    #[prost(string, tag = "11")]
2023    pub creator: ::prost::alloc::string::String,
2024    /// Labels of your own, at most 50. The `origin:name` tag is the name the
2025    /// console shows.
2026    #[prost(btree_map = "string, string", tag = "12")]
2027    pub tags: ::prost::alloc::collections::BTreeMap<
2028        ::prost::alloc::string::String,
2029        ::prost::alloc::string::String,
2030    >,
2031}
2032/// The request for GetVpc.
2033#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2034pub struct GetVpcRequest {
2035    /// The VPC to return.
2036    #[prost(string, tag = "1")]
2037    pub name: ::prost::alloc::string::String,
2038}
2039/// The request for ListVpcs.
2040#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2041pub struct ListVpcsRequest {
2042    /// The region whose VPCs to list, `projects/{project}/regions/{region}`.
2043    #[prost(string, tag = "1")]
2044    pub parent: ::prost::alloc::string::String,
2045    /// The most VPCs to return; the server clamps it, and 0 means its
2046    /// default.
2047    #[prost(int32, tag = "2")]
2048    pub page_size: i32,
2049    /// A previous response's `next_page_token`, for the page after it.
2050    #[prost(string, tag = "3")]
2051    pub page_token: ::prost::alloc::string::String,
2052}
2053/// The response for ListVpcs.
2054#[derive(Clone, PartialEq, ::prost::Message)]
2055pub struct ListVpcsResponse {
2056    /// The VPCs on this page.
2057    #[prost(message, repeated, tag = "1")]
2058    pub vpcs: ::prost::alloc::vec::Vec<Vpc>,
2059    /// The token for the next page; empty on the last one.
2060    #[prost(string, tag = "2")]
2061    pub next_page_token: ::prost::alloc::string::String,
2062}
2063/// The request for CreateVpc.
2064#[derive(Clone, PartialEq, ::prost::Message)]
2065pub struct CreateVpcRequest {
2066    /// The region to create the VPC in, `projects/{project}/regions/{region}`.
2067    #[prost(string, tag = "1")]
2068    pub parent: ::prost::alloc::string::String,
2069    /// The VPC to create: optionally its IPv4 range and tags.
2070    #[prost(message, optional, tag = "2")]
2071    pub vpc: ::core::option::Option<Vpc>,
2072    /// A UUID; a repeat with the same id returns the first request's
2073    /// operation instead of creating a second VPC.
2074    #[prost(string, tag = "3")]
2075    pub request_id: ::prost::alloc::string::String,
2076}
2077/// The request for UpdateVpc.
2078#[derive(Clone, PartialEq, ::prost::Message)]
2079pub struct UpdateVpcRequest {
2080    /// The VPC, by its name, with the fields to change.
2081    #[prost(message, optional, tag = "1")]
2082    pub vpc: ::core::option::Option<Vpc>,
2083    /// The fields to change: `tags`, or `*`.
2084    #[prost(message, optional, tag = "2")]
2085    pub update_mask: ::core::option::Option<::origincloud_core::protobuf::FieldMask>,
2086    /// A UUID; a repeat with the same id returns the first request's
2087    /// operation instead of changing the VPC again.
2088    #[prost(string, tag = "3")]
2089    pub request_id: ::prost::alloc::string::String,
2090}
2091/// The request for DeleteVpc.
2092#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2093pub struct DeleteVpcRequest {
2094    /// The VPC to delete.
2095    #[prost(string, tag = "1")]
2096    pub name: ::prost::alloc::string::String,
2097    /// A UUID; a repeat with the same id returns the first request's
2098    /// operation.
2099    #[prost(string, tag = "2")]
2100    pub request_id: ::prost::alloc::string::String,
2101}
2102impl serde::Serialize for Acl {
2103    #[allow(deprecated)]
2104    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2105    where
2106        S: serde::Serializer,
2107    {
2108        use serde::ser::SerializeStruct;
2109        let mut len = 0;
2110        if !self.name.is_empty() {
2111            len += 1;
2112        }
2113        if !self.urn.is_empty() {
2114            len += 1;
2115        }
2116        if !self.vpc.is_empty() {
2117            len += 1;
2118        }
2119        if self.vpc_default {
2120            len += 1;
2121        }
2122        if self.create_time.is_some() {
2123            len += 1;
2124        }
2125        if !self.creator.is_empty() {
2126            len += 1;
2127        }
2128        if !self.tags.is_empty() {
2129            len += 1;
2130        }
2131        let mut struct_ser = serializer
2132            .serialize_struct("origincloud.network.v1beta1.Acl", len)?;
2133        if !self.name.is_empty() {
2134            struct_ser.serialize_field("name", &self.name)?;
2135        }
2136        if !self.urn.is_empty() {
2137            struct_ser.serialize_field("urn", &self.urn)?;
2138        }
2139        if !self.vpc.is_empty() {
2140            struct_ser.serialize_field("vpc", &self.vpc)?;
2141        }
2142        if self.vpc_default {
2143            struct_ser.serialize_field("vpcDefault", &self.vpc_default)?;
2144        }
2145        if let Some(v) = self.create_time.as_ref() {
2146            struct_ser.serialize_field("createTime", v)?;
2147        }
2148        if !self.creator.is_empty() {
2149            struct_ser.serialize_field("creator", &self.creator)?;
2150        }
2151        if !self.tags.is_empty() {
2152            struct_ser.serialize_field("tags", &self.tags)?;
2153        }
2154        struct_ser.end()
2155    }
2156}
2157impl<'de> serde::Deserialize<'de> for Acl {
2158    #[allow(deprecated)]
2159    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2160    where
2161        D: serde::Deserializer<'de>,
2162    {
2163        const FIELDS: &[&str] = &[
2164            "name",
2165            "urn",
2166            "vpc",
2167            "vpc_default",
2168            "vpcDefault",
2169            "create_time",
2170            "createTime",
2171            "creator",
2172            "tags",
2173        ];
2174        #[allow(clippy::enum_variant_names)]
2175        enum GeneratedField {
2176            Name,
2177            Urn,
2178            Vpc,
2179            VpcDefault,
2180            CreateTime,
2181            Creator,
2182            Tags,
2183            __SkipField__,
2184        }
2185        impl<'de> serde::Deserialize<'de> for GeneratedField {
2186            fn deserialize<D>(
2187                deserializer: D,
2188            ) -> std::result::Result<GeneratedField, D::Error>
2189            where
2190                D: serde::Deserializer<'de>,
2191            {
2192                struct GeneratedVisitor;
2193                impl serde::de::Visitor<'_> for GeneratedVisitor {
2194                    type Value = GeneratedField;
2195                    fn expecting(
2196                        &self,
2197                        formatter: &mut std::fmt::Formatter<'_>,
2198                    ) -> std::fmt::Result {
2199                        write!(formatter, "expected one of: {:?}", & FIELDS)
2200                    }
2201                    #[allow(unused_variables)]
2202                    fn visit_str<E>(
2203                        self,
2204                        value: &str,
2205                    ) -> std::result::Result<GeneratedField, E>
2206                    where
2207                        E: serde::de::Error,
2208                    {
2209                        match value {
2210                            "name" => Ok(GeneratedField::Name),
2211                            "urn" => Ok(GeneratedField::Urn),
2212                            "vpc" => Ok(GeneratedField::Vpc),
2213                            "vpcDefault" | "vpc_default" => {
2214                                Ok(GeneratedField::VpcDefault)
2215                            }
2216                            "createTime" | "create_time" => {
2217                                Ok(GeneratedField::CreateTime)
2218                            }
2219                            "creator" => Ok(GeneratedField::Creator),
2220                            "tags" => Ok(GeneratedField::Tags),
2221                            _ => Ok(GeneratedField::__SkipField__),
2222                        }
2223                    }
2224                }
2225                deserializer.deserialize_identifier(GeneratedVisitor)
2226            }
2227        }
2228        struct GeneratedVisitor;
2229        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2230            type Value = Acl;
2231            fn expecting(
2232                &self,
2233                formatter: &mut std::fmt::Formatter<'_>,
2234            ) -> std::fmt::Result {
2235                formatter.write_str("struct origincloud.network.v1beta1.Acl")
2236            }
2237            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Acl, V::Error>
2238            where
2239                V: serde::de::MapAccess<'de>,
2240            {
2241                let mut name__ = None;
2242                let mut urn__ = None;
2243                let mut vpc__ = None;
2244                let mut vpc_default__ = None;
2245                let mut create_time__ = None;
2246                let mut creator__ = None;
2247                let mut tags__ = None;
2248                while let Some(k) = map_.next_key()? {
2249                    match k {
2250                        GeneratedField::Name => {
2251                            if name__.is_some() {
2252                                return Err(serde::de::Error::duplicate_field("name"));
2253                            }
2254                            name__ = Some(map_.next_value()?);
2255                        }
2256                        GeneratedField::Urn => {
2257                            if urn__.is_some() {
2258                                return Err(serde::de::Error::duplicate_field("urn"));
2259                            }
2260                            urn__ = Some(map_.next_value()?);
2261                        }
2262                        GeneratedField::Vpc => {
2263                            if vpc__.is_some() {
2264                                return Err(serde::de::Error::duplicate_field("vpc"));
2265                            }
2266                            vpc__ = Some(map_.next_value()?);
2267                        }
2268                        GeneratedField::VpcDefault => {
2269                            if vpc_default__.is_some() {
2270                                return Err(serde::de::Error::duplicate_field("vpcDefault"));
2271                            }
2272                            vpc_default__ = Some(map_.next_value()?);
2273                        }
2274                        GeneratedField::CreateTime => {
2275                            if create_time__.is_some() {
2276                                return Err(serde::de::Error::duplicate_field("createTime"));
2277                            }
2278                            create_time__ = map_.next_value()?;
2279                        }
2280                        GeneratedField::Creator => {
2281                            if creator__.is_some() {
2282                                return Err(serde::de::Error::duplicate_field("creator"));
2283                            }
2284                            creator__ = Some(map_.next_value()?);
2285                        }
2286                        GeneratedField::Tags => {
2287                            if tags__.is_some() {
2288                                return Err(serde::de::Error::duplicate_field("tags"));
2289                            }
2290                            tags__ = Some(
2291                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
2292                            );
2293                        }
2294                        GeneratedField::__SkipField__ => {
2295                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2296                        }
2297                    }
2298                }
2299                Ok(Acl {
2300                    name: name__.unwrap_or_default(),
2301                    urn: urn__.unwrap_or_default(),
2302                    vpc: vpc__.unwrap_or_default(),
2303                    vpc_default: vpc_default__.unwrap_or_default(),
2304                    create_time: create_time__,
2305                    creator: creator__.unwrap_or_default(),
2306                    tags: tags__.unwrap_or_default(),
2307                })
2308            }
2309        }
2310        deserializer
2311            .deserialize_struct(
2312                "origincloud.network.v1beta1.Acl",
2313                FIELDS,
2314                GeneratedVisitor,
2315            )
2316    }
2317}
2318impl serde::Serialize for AclAssociation {
2319    #[allow(deprecated)]
2320    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2321    where
2322        S: serde::Serializer,
2323    {
2324        use serde::ser::SerializeStruct;
2325        let mut len = 0;
2326        if !self.name.is_empty() {
2327            len += 1;
2328        }
2329        if !self.acl.is_empty() {
2330            len += 1;
2331        }
2332        let mut struct_ser = serializer
2333            .serialize_struct("origincloud.network.v1beta1.AclAssociation", len)?;
2334        if !self.name.is_empty() {
2335            struct_ser.serialize_field("name", &self.name)?;
2336        }
2337        if !self.acl.is_empty() {
2338            struct_ser.serialize_field("acl", &self.acl)?;
2339        }
2340        struct_ser.end()
2341    }
2342}
2343impl<'de> serde::Deserialize<'de> for AclAssociation {
2344    #[allow(deprecated)]
2345    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2346    where
2347        D: serde::Deserializer<'de>,
2348    {
2349        const FIELDS: &[&str] = &["name", "acl"];
2350        #[allow(clippy::enum_variant_names)]
2351        enum GeneratedField {
2352            Name,
2353            Acl,
2354            __SkipField__,
2355        }
2356        impl<'de> serde::Deserialize<'de> for GeneratedField {
2357            fn deserialize<D>(
2358                deserializer: D,
2359            ) -> std::result::Result<GeneratedField, D::Error>
2360            where
2361                D: serde::Deserializer<'de>,
2362            {
2363                struct GeneratedVisitor;
2364                impl serde::de::Visitor<'_> for GeneratedVisitor {
2365                    type Value = GeneratedField;
2366                    fn expecting(
2367                        &self,
2368                        formatter: &mut std::fmt::Formatter<'_>,
2369                    ) -> std::fmt::Result {
2370                        write!(formatter, "expected one of: {:?}", & FIELDS)
2371                    }
2372                    #[allow(unused_variables)]
2373                    fn visit_str<E>(
2374                        self,
2375                        value: &str,
2376                    ) -> std::result::Result<GeneratedField, E>
2377                    where
2378                        E: serde::de::Error,
2379                    {
2380                        match value {
2381                            "name" => Ok(GeneratedField::Name),
2382                            "acl" => Ok(GeneratedField::Acl),
2383                            _ => Ok(GeneratedField::__SkipField__),
2384                        }
2385                    }
2386                }
2387                deserializer.deserialize_identifier(GeneratedVisitor)
2388            }
2389        }
2390        struct GeneratedVisitor;
2391        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2392            type Value = AclAssociation;
2393            fn expecting(
2394                &self,
2395                formatter: &mut std::fmt::Formatter<'_>,
2396            ) -> std::fmt::Result {
2397                formatter.write_str("struct origincloud.network.v1beta1.AclAssociation")
2398            }
2399            fn visit_map<V>(
2400                self,
2401                mut map_: V,
2402            ) -> std::result::Result<AclAssociation, V::Error>
2403            where
2404                V: serde::de::MapAccess<'de>,
2405            {
2406                let mut name__ = None;
2407                let mut acl__ = None;
2408                while let Some(k) = map_.next_key()? {
2409                    match k {
2410                        GeneratedField::Name => {
2411                            if name__.is_some() {
2412                                return Err(serde::de::Error::duplicate_field("name"));
2413                            }
2414                            name__ = Some(map_.next_value()?);
2415                        }
2416                        GeneratedField::Acl => {
2417                            if acl__.is_some() {
2418                                return Err(serde::de::Error::duplicate_field("acl"));
2419                            }
2420                            acl__ = Some(map_.next_value()?);
2421                        }
2422                        GeneratedField::__SkipField__ => {
2423                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2424                        }
2425                    }
2426                }
2427                Ok(AclAssociation {
2428                    name: name__.unwrap_or_default(),
2429                    acl: acl__.unwrap_or_default(),
2430                })
2431            }
2432        }
2433        deserializer
2434            .deserialize_struct(
2435                "origincloud.network.v1beta1.AclAssociation",
2436                FIELDS,
2437                GeneratedVisitor,
2438            )
2439    }
2440}
2441impl serde::Serialize for AclRule {
2442    #[allow(deprecated)]
2443    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2444    where
2445        S: serde::Serializer,
2446    {
2447        use serde::ser::SerializeStruct;
2448        let mut len = 0;
2449        if !self.name.is_empty() {
2450            len += 1;
2451        }
2452        if self.direction != 0 {
2453            len += 1;
2454        }
2455        if self.priority != 0 {
2456            len += 1;
2457        }
2458        if self.protocol != 0 {
2459            len += 1;
2460        }
2461        if self.first_port != 0 {
2462            len += 1;
2463        }
2464        if self.last_port != 0 {
2465            len += 1;
2466        }
2467        if !self.cidr_block.is_empty() {
2468            len += 1;
2469        }
2470        if self.action != 0 {
2471            len += 1;
2472        }
2473        let mut struct_ser = serializer
2474            .serialize_struct("origincloud.network.v1beta1.AclRule", len)?;
2475        if !self.name.is_empty() {
2476            struct_ser.serialize_field("name", &self.name)?;
2477        }
2478        if self.direction != 0 {
2479            let v = acl_rule::Direction::try_from(self.direction)
2480                .map_err(|_| serde::ser::Error::custom(
2481                    format!("Invalid variant {}", self.direction),
2482                ))?;
2483            struct_ser.serialize_field("direction", &v)?;
2484        }
2485        if self.priority != 0 {
2486            struct_ser.serialize_field("priority", &self.priority)?;
2487        }
2488        if self.protocol != 0 {
2489            let v = acl_rule::Protocol::try_from(self.protocol)
2490                .map_err(|_| serde::ser::Error::custom(
2491                    format!("Invalid variant {}", self.protocol),
2492                ))?;
2493            struct_ser.serialize_field("protocol", &v)?;
2494        }
2495        if self.first_port != 0 {
2496            struct_ser.serialize_field("firstPort", &self.first_port)?;
2497        }
2498        if self.last_port != 0 {
2499            struct_ser.serialize_field("lastPort", &self.last_port)?;
2500        }
2501        if !self.cidr_block.is_empty() {
2502            struct_ser.serialize_field("cidrBlock", &self.cidr_block)?;
2503        }
2504        if self.action != 0 {
2505            let v = acl_rule::Action::try_from(self.action)
2506                .map_err(|_| serde::ser::Error::custom(
2507                    format!("Invalid variant {}", self.action),
2508                ))?;
2509            struct_ser.serialize_field("action", &v)?;
2510        }
2511        struct_ser.end()
2512    }
2513}
2514impl<'de> serde::Deserialize<'de> for AclRule {
2515    #[allow(deprecated)]
2516    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2517    where
2518        D: serde::Deserializer<'de>,
2519    {
2520        const FIELDS: &[&str] = &[
2521            "name",
2522            "direction",
2523            "priority",
2524            "protocol",
2525            "first_port",
2526            "firstPort",
2527            "last_port",
2528            "lastPort",
2529            "cidr_block",
2530            "cidrBlock",
2531            "action",
2532        ];
2533        #[allow(clippy::enum_variant_names)]
2534        enum GeneratedField {
2535            Name,
2536            Direction,
2537            Priority,
2538            Protocol,
2539            FirstPort,
2540            LastPort,
2541            CidrBlock,
2542            Action,
2543            __SkipField__,
2544        }
2545        impl<'de> serde::Deserialize<'de> for GeneratedField {
2546            fn deserialize<D>(
2547                deserializer: D,
2548            ) -> std::result::Result<GeneratedField, D::Error>
2549            where
2550                D: serde::Deserializer<'de>,
2551            {
2552                struct GeneratedVisitor;
2553                impl serde::de::Visitor<'_> for GeneratedVisitor {
2554                    type Value = GeneratedField;
2555                    fn expecting(
2556                        &self,
2557                        formatter: &mut std::fmt::Formatter<'_>,
2558                    ) -> std::fmt::Result {
2559                        write!(formatter, "expected one of: {:?}", & FIELDS)
2560                    }
2561                    #[allow(unused_variables)]
2562                    fn visit_str<E>(
2563                        self,
2564                        value: &str,
2565                    ) -> std::result::Result<GeneratedField, E>
2566                    where
2567                        E: serde::de::Error,
2568                    {
2569                        match value {
2570                            "name" => Ok(GeneratedField::Name),
2571                            "direction" => Ok(GeneratedField::Direction),
2572                            "priority" => Ok(GeneratedField::Priority),
2573                            "protocol" => Ok(GeneratedField::Protocol),
2574                            "firstPort" | "first_port" => Ok(GeneratedField::FirstPort),
2575                            "lastPort" | "last_port" => Ok(GeneratedField::LastPort),
2576                            "cidrBlock" | "cidr_block" => Ok(GeneratedField::CidrBlock),
2577                            "action" => Ok(GeneratedField::Action),
2578                            _ => Ok(GeneratedField::__SkipField__),
2579                        }
2580                    }
2581                }
2582                deserializer.deserialize_identifier(GeneratedVisitor)
2583            }
2584        }
2585        struct GeneratedVisitor;
2586        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
2587            type Value = AclRule;
2588            fn expecting(
2589                &self,
2590                formatter: &mut std::fmt::Formatter<'_>,
2591            ) -> std::fmt::Result {
2592                formatter.write_str("struct origincloud.network.v1beta1.AclRule")
2593            }
2594            fn visit_map<V>(self, mut map_: V) -> std::result::Result<AclRule, V::Error>
2595            where
2596                V: serde::de::MapAccess<'de>,
2597            {
2598                let mut name__ = None;
2599                let mut direction__ = None;
2600                let mut priority__ = None;
2601                let mut protocol__ = None;
2602                let mut first_port__ = None;
2603                let mut last_port__ = None;
2604                let mut cidr_block__ = None;
2605                let mut action__ = None;
2606                while let Some(k) = map_.next_key()? {
2607                    match k {
2608                        GeneratedField::Name => {
2609                            if name__.is_some() {
2610                                return Err(serde::de::Error::duplicate_field("name"));
2611                            }
2612                            name__ = Some(map_.next_value()?);
2613                        }
2614                        GeneratedField::Direction => {
2615                            if direction__.is_some() {
2616                                return Err(serde::de::Error::duplicate_field("direction"));
2617                            }
2618                            direction__ = Some(
2619                                map_.next_value::<acl_rule::Direction>()? as i32,
2620                            );
2621                        }
2622                        GeneratedField::Priority => {
2623                            if priority__.is_some() {
2624                                return Err(serde::de::Error::duplicate_field("priority"));
2625                            }
2626                            priority__ = Some(
2627                                map_
2628                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2629                                    .0,
2630                            );
2631                        }
2632                        GeneratedField::Protocol => {
2633                            if protocol__.is_some() {
2634                                return Err(serde::de::Error::duplicate_field("protocol"));
2635                            }
2636                            protocol__ = Some(
2637                                map_.next_value::<acl_rule::Protocol>()? as i32,
2638                            );
2639                        }
2640                        GeneratedField::FirstPort => {
2641                            if first_port__.is_some() {
2642                                return Err(serde::de::Error::duplicate_field("firstPort"));
2643                            }
2644                            first_port__ = Some(
2645                                map_
2646                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2647                                    .0,
2648                            );
2649                        }
2650                        GeneratedField::LastPort => {
2651                            if last_port__.is_some() {
2652                                return Err(serde::de::Error::duplicate_field("lastPort"));
2653                            }
2654                            last_port__ = Some(
2655                                map_
2656                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
2657                                    .0,
2658                            );
2659                        }
2660                        GeneratedField::CidrBlock => {
2661                            if cidr_block__.is_some() {
2662                                return Err(serde::de::Error::duplicate_field("cidrBlock"));
2663                            }
2664                            cidr_block__ = Some(map_.next_value()?);
2665                        }
2666                        GeneratedField::Action => {
2667                            if action__.is_some() {
2668                                return Err(serde::de::Error::duplicate_field("action"));
2669                            }
2670                            action__ = Some(
2671                                map_.next_value::<acl_rule::Action>()? as i32,
2672                            );
2673                        }
2674                        GeneratedField::__SkipField__ => {
2675                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
2676                        }
2677                    }
2678                }
2679                Ok(AclRule {
2680                    name: name__.unwrap_or_default(),
2681                    direction: direction__.unwrap_or_default(),
2682                    priority: priority__.unwrap_or_default(),
2683                    protocol: protocol__.unwrap_or_default(),
2684                    first_port: first_port__.unwrap_or_default(),
2685                    last_port: last_port__.unwrap_or_default(),
2686                    cidr_block: cidr_block__.unwrap_or_default(),
2687                    action: action__.unwrap_or_default(),
2688                })
2689            }
2690        }
2691        deserializer
2692            .deserialize_struct(
2693                "origincloud.network.v1beta1.AclRule",
2694                FIELDS,
2695                GeneratedVisitor,
2696            )
2697    }
2698}
2699impl serde::Serialize for acl_rule::Action {
2700    #[allow(deprecated)]
2701    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2702    where
2703        S: serde::Serializer,
2704    {
2705        let variant = match self {
2706            Self::Unspecified => "ACTION_UNSPECIFIED",
2707            Self::Accept => "ACCEPT",
2708            Self::Drop => "DROP",
2709        };
2710        serializer.serialize_str(variant)
2711    }
2712}
2713impl<'de> serde::Deserialize<'de> for acl_rule::Action {
2714    #[allow(deprecated)]
2715    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2716    where
2717        D: serde::Deserializer<'de>,
2718    {
2719        const FIELDS: &[&str] = &["ACTION_UNSPECIFIED", "ACCEPT", "DROP"];
2720        struct GeneratedVisitor;
2721        impl serde::de::Visitor<'_> for GeneratedVisitor {
2722            type Value = acl_rule::Action;
2723            fn expecting(
2724                &self,
2725                formatter: &mut std::fmt::Formatter<'_>,
2726            ) -> std::fmt::Result {
2727                write!(formatter, "expected one of: {:?}", & FIELDS)
2728            }
2729            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2730            where
2731                E: serde::de::Error,
2732            {
2733                i32::try_from(v)
2734                    .ok()
2735                    .and_then(|x| {
2736                        x.try_into().ok().or_else(|| Some(acl_rule::Action::default()))
2737                    })
2738                    .ok_or_else(|| {
2739                        serde::de::Error::invalid_value(
2740                            serde::de::Unexpected::Signed(v),
2741                            &self,
2742                        )
2743                    })
2744            }
2745            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2746            where
2747                E: serde::de::Error,
2748            {
2749                i32::try_from(v)
2750                    .ok()
2751                    .and_then(|x| {
2752                        x.try_into().ok().or_else(|| Some(acl_rule::Action::default()))
2753                    })
2754                    .ok_or_else(|| {
2755                        serde::de::Error::invalid_value(
2756                            serde::de::Unexpected::Unsigned(v),
2757                            &self,
2758                        )
2759                    })
2760            }
2761            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2762            where
2763                E: serde::de::Error,
2764            {
2765                match value {
2766                    "ACTION_UNSPECIFIED" => Ok(acl_rule::Action::Unspecified),
2767                    "ACCEPT" => Ok(acl_rule::Action::Accept),
2768                    "DROP" => Ok(acl_rule::Action::Drop),
2769                    _ => Ok(acl_rule::Action::default()),
2770                }
2771            }
2772        }
2773        deserializer.deserialize_any(GeneratedVisitor)
2774    }
2775}
2776impl serde::Serialize for acl_rule::Direction {
2777    #[allow(deprecated)]
2778    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2779    where
2780        S: serde::Serializer,
2781    {
2782        let variant = match self {
2783            Self::Unspecified => "DIRECTION_UNSPECIFIED",
2784            Self::Ingress => "INGRESS",
2785            Self::Egress => "EGRESS",
2786        };
2787        serializer.serialize_str(variant)
2788    }
2789}
2790impl<'de> serde::Deserialize<'de> for acl_rule::Direction {
2791    #[allow(deprecated)]
2792    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2793    where
2794        D: serde::Deserializer<'de>,
2795    {
2796        const FIELDS: &[&str] = &["DIRECTION_UNSPECIFIED", "INGRESS", "EGRESS"];
2797        struct GeneratedVisitor;
2798        impl serde::de::Visitor<'_> for GeneratedVisitor {
2799            type Value = acl_rule::Direction;
2800            fn expecting(
2801                &self,
2802                formatter: &mut std::fmt::Formatter<'_>,
2803            ) -> std::fmt::Result {
2804                write!(formatter, "expected one of: {:?}", & FIELDS)
2805            }
2806            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2807            where
2808                E: serde::de::Error,
2809            {
2810                i32::try_from(v)
2811                    .ok()
2812                    .and_then(|x| {
2813                        x
2814                            .try_into()
2815                            .ok()
2816                            .or_else(|| Some(acl_rule::Direction::default()))
2817                    })
2818                    .ok_or_else(|| {
2819                        serde::de::Error::invalid_value(
2820                            serde::de::Unexpected::Signed(v),
2821                            &self,
2822                        )
2823                    })
2824            }
2825            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2826            where
2827                E: serde::de::Error,
2828            {
2829                i32::try_from(v)
2830                    .ok()
2831                    .and_then(|x| {
2832                        x
2833                            .try_into()
2834                            .ok()
2835                            .or_else(|| Some(acl_rule::Direction::default()))
2836                    })
2837                    .ok_or_else(|| {
2838                        serde::de::Error::invalid_value(
2839                            serde::de::Unexpected::Unsigned(v),
2840                            &self,
2841                        )
2842                    })
2843            }
2844            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2845            where
2846                E: serde::de::Error,
2847            {
2848                match value {
2849                    "DIRECTION_UNSPECIFIED" => Ok(acl_rule::Direction::Unspecified),
2850                    "INGRESS" => Ok(acl_rule::Direction::Ingress),
2851                    "EGRESS" => Ok(acl_rule::Direction::Egress),
2852                    _ => Ok(acl_rule::Direction::default()),
2853                }
2854            }
2855        }
2856        deserializer.deserialize_any(GeneratedVisitor)
2857    }
2858}
2859impl serde::Serialize for acl_rule::Protocol {
2860    #[allow(deprecated)]
2861    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2862    where
2863        S: serde::Serializer,
2864    {
2865        let variant = match self {
2866            Self::Unspecified => "PROTOCOL_UNSPECIFIED",
2867            Self::All => "ALL",
2868            Self::Tcp => "TCP",
2869            Self::Udp => "UDP",
2870            Self::Icmp => "ICMP",
2871        };
2872        serializer.serialize_str(variant)
2873    }
2874}
2875impl<'de> serde::Deserialize<'de> for acl_rule::Protocol {
2876    #[allow(deprecated)]
2877    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2878    where
2879        D: serde::Deserializer<'de>,
2880    {
2881        const FIELDS: &[&str] = &["PROTOCOL_UNSPECIFIED", "ALL", "TCP", "UDP", "ICMP"];
2882        struct GeneratedVisitor;
2883        impl serde::de::Visitor<'_> for GeneratedVisitor {
2884            type Value = acl_rule::Protocol;
2885            fn expecting(
2886                &self,
2887                formatter: &mut std::fmt::Formatter<'_>,
2888            ) -> std::fmt::Result {
2889                write!(formatter, "expected one of: {:?}", & FIELDS)
2890            }
2891            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
2892            where
2893                E: serde::de::Error,
2894            {
2895                i32::try_from(v)
2896                    .ok()
2897                    .and_then(|x| {
2898                        x.try_into().ok().or_else(|| Some(acl_rule::Protocol::default()))
2899                    })
2900                    .ok_or_else(|| {
2901                        serde::de::Error::invalid_value(
2902                            serde::de::Unexpected::Signed(v),
2903                            &self,
2904                        )
2905                    })
2906            }
2907            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
2908            where
2909                E: serde::de::Error,
2910            {
2911                i32::try_from(v)
2912                    .ok()
2913                    .and_then(|x| {
2914                        x.try_into().ok().or_else(|| Some(acl_rule::Protocol::default()))
2915                    })
2916                    .ok_or_else(|| {
2917                        serde::de::Error::invalid_value(
2918                            serde::de::Unexpected::Unsigned(v),
2919                            &self,
2920                        )
2921                    })
2922            }
2923            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
2924            where
2925                E: serde::de::Error,
2926            {
2927                match value {
2928                    "PROTOCOL_UNSPECIFIED" => Ok(acl_rule::Protocol::Unspecified),
2929                    "ALL" => Ok(acl_rule::Protocol::All),
2930                    "TCP" => Ok(acl_rule::Protocol::Tcp),
2931                    "UDP" => Ok(acl_rule::Protocol::Udp),
2932                    "ICMP" => Ok(acl_rule::Protocol::Icmp),
2933                    _ => Ok(acl_rule::Protocol::default()),
2934                }
2935            }
2936        }
2937        deserializer.deserialize_any(GeneratedVisitor)
2938    }
2939}
2940impl serde::Serialize for CreateAclAssociationRequest {
2941    #[allow(deprecated)]
2942    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
2943    where
2944        S: serde::Serializer,
2945    {
2946        use serde::ser::SerializeStruct;
2947        let mut len = 0;
2948        if !self.parent.is_empty() {
2949            len += 1;
2950        }
2951        if self.acl_association.is_some() {
2952            len += 1;
2953        }
2954        if !self.request_id.is_empty() {
2955            len += 1;
2956        }
2957        let mut struct_ser = serializer
2958            .serialize_struct(
2959                "origincloud.network.v1beta1.CreateAclAssociationRequest",
2960                len,
2961            )?;
2962        if !self.parent.is_empty() {
2963            struct_ser.serialize_field("parent", &self.parent)?;
2964        }
2965        if let Some(v) = self.acl_association.as_ref() {
2966            struct_ser.serialize_field("aclAssociation", v)?;
2967        }
2968        if !self.request_id.is_empty() {
2969            struct_ser.serialize_field("requestId", &self.request_id)?;
2970        }
2971        struct_ser.end()
2972    }
2973}
2974impl<'de> serde::Deserialize<'de> for CreateAclAssociationRequest {
2975    #[allow(deprecated)]
2976    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
2977    where
2978        D: serde::Deserializer<'de>,
2979    {
2980        const FIELDS: &[&str] = &[
2981            "parent",
2982            "acl_association",
2983            "aclAssociation",
2984            "request_id",
2985            "requestId",
2986        ];
2987        #[allow(clippy::enum_variant_names)]
2988        enum GeneratedField {
2989            Parent,
2990            AclAssociation,
2991            RequestId,
2992            __SkipField__,
2993        }
2994        impl<'de> serde::Deserialize<'de> for GeneratedField {
2995            fn deserialize<D>(
2996                deserializer: D,
2997            ) -> std::result::Result<GeneratedField, D::Error>
2998            where
2999                D: serde::Deserializer<'de>,
3000            {
3001                struct GeneratedVisitor;
3002                impl serde::de::Visitor<'_> for GeneratedVisitor {
3003                    type Value = GeneratedField;
3004                    fn expecting(
3005                        &self,
3006                        formatter: &mut std::fmt::Formatter<'_>,
3007                    ) -> std::fmt::Result {
3008                        write!(formatter, "expected one of: {:?}", & FIELDS)
3009                    }
3010                    #[allow(unused_variables)]
3011                    fn visit_str<E>(
3012                        self,
3013                        value: &str,
3014                    ) -> std::result::Result<GeneratedField, E>
3015                    where
3016                        E: serde::de::Error,
3017                    {
3018                        match value {
3019                            "parent" => Ok(GeneratedField::Parent),
3020                            "aclAssociation" | "acl_association" => {
3021                                Ok(GeneratedField::AclAssociation)
3022                            }
3023                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3024                            _ => Ok(GeneratedField::__SkipField__),
3025                        }
3026                    }
3027                }
3028                deserializer.deserialize_identifier(GeneratedVisitor)
3029            }
3030        }
3031        struct GeneratedVisitor;
3032        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3033            type Value = CreateAclAssociationRequest;
3034            fn expecting(
3035                &self,
3036                formatter: &mut std::fmt::Formatter<'_>,
3037            ) -> std::fmt::Result {
3038                formatter
3039                    .write_str(
3040                        "struct origincloud.network.v1beta1.CreateAclAssociationRequest",
3041                    )
3042            }
3043            fn visit_map<V>(
3044                self,
3045                mut map_: V,
3046            ) -> std::result::Result<CreateAclAssociationRequest, V::Error>
3047            where
3048                V: serde::de::MapAccess<'de>,
3049            {
3050                let mut parent__ = None;
3051                let mut acl_association__ = None;
3052                let mut request_id__ = None;
3053                while let Some(k) = map_.next_key()? {
3054                    match k {
3055                        GeneratedField::Parent => {
3056                            if parent__.is_some() {
3057                                return Err(serde::de::Error::duplicate_field("parent"));
3058                            }
3059                            parent__ = Some(map_.next_value()?);
3060                        }
3061                        GeneratedField::AclAssociation => {
3062                            if acl_association__.is_some() {
3063                                return Err(
3064                                    serde::de::Error::duplicate_field("aclAssociation"),
3065                                );
3066                            }
3067                            acl_association__ = map_.next_value()?;
3068                        }
3069                        GeneratedField::RequestId => {
3070                            if request_id__.is_some() {
3071                                return Err(serde::de::Error::duplicate_field("requestId"));
3072                            }
3073                            request_id__ = Some(map_.next_value()?);
3074                        }
3075                        GeneratedField::__SkipField__ => {
3076                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3077                        }
3078                    }
3079                }
3080                Ok(CreateAclAssociationRequest {
3081                    parent: parent__.unwrap_or_default(),
3082                    acl_association: acl_association__,
3083                    request_id: request_id__.unwrap_or_default(),
3084                })
3085            }
3086        }
3087        deserializer
3088            .deserialize_struct(
3089                "origincloud.network.v1beta1.CreateAclAssociationRequest",
3090                FIELDS,
3091                GeneratedVisitor,
3092            )
3093    }
3094}
3095impl serde::Serialize for CreateAclRequest {
3096    #[allow(deprecated)]
3097    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3098    where
3099        S: serde::Serializer,
3100    {
3101        use serde::ser::SerializeStruct;
3102        let mut len = 0;
3103        if !self.parent.is_empty() {
3104            len += 1;
3105        }
3106        if self.acl.is_some() {
3107            len += 1;
3108        }
3109        if !self.request_id.is_empty() {
3110            len += 1;
3111        }
3112        let mut struct_ser = serializer
3113            .serialize_struct("origincloud.network.v1beta1.CreateAclRequest", len)?;
3114        if !self.parent.is_empty() {
3115            struct_ser.serialize_field("parent", &self.parent)?;
3116        }
3117        if let Some(v) = self.acl.as_ref() {
3118            struct_ser.serialize_field("acl", v)?;
3119        }
3120        if !self.request_id.is_empty() {
3121            struct_ser.serialize_field("requestId", &self.request_id)?;
3122        }
3123        struct_ser.end()
3124    }
3125}
3126impl<'de> serde::Deserialize<'de> for CreateAclRequest {
3127    #[allow(deprecated)]
3128    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3129    where
3130        D: serde::Deserializer<'de>,
3131    {
3132        const FIELDS: &[&str] = &["parent", "acl", "request_id", "requestId"];
3133        #[allow(clippy::enum_variant_names)]
3134        enum GeneratedField {
3135            Parent,
3136            Acl,
3137            RequestId,
3138            __SkipField__,
3139        }
3140        impl<'de> serde::Deserialize<'de> for GeneratedField {
3141            fn deserialize<D>(
3142                deserializer: D,
3143            ) -> std::result::Result<GeneratedField, D::Error>
3144            where
3145                D: serde::Deserializer<'de>,
3146            {
3147                struct GeneratedVisitor;
3148                impl serde::de::Visitor<'_> for GeneratedVisitor {
3149                    type Value = GeneratedField;
3150                    fn expecting(
3151                        &self,
3152                        formatter: &mut std::fmt::Formatter<'_>,
3153                    ) -> std::fmt::Result {
3154                        write!(formatter, "expected one of: {:?}", & FIELDS)
3155                    }
3156                    #[allow(unused_variables)]
3157                    fn visit_str<E>(
3158                        self,
3159                        value: &str,
3160                    ) -> std::result::Result<GeneratedField, E>
3161                    where
3162                        E: serde::de::Error,
3163                    {
3164                        match value {
3165                            "parent" => Ok(GeneratedField::Parent),
3166                            "acl" => Ok(GeneratedField::Acl),
3167                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3168                            _ => Ok(GeneratedField::__SkipField__),
3169                        }
3170                    }
3171                }
3172                deserializer.deserialize_identifier(GeneratedVisitor)
3173            }
3174        }
3175        struct GeneratedVisitor;
3176        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3177            type Value = CreateAclRequest;
3178            fn expecting(
3179                &self,
3180                formatter: &mut std::fmt::Formatter<'_>,
3181            ) -> std::fmt::Result {
3182                formatter
3183                    .write_str("struct origincloud.network.v1beta1.CreateAclRequest")
3184            }
3185            fn visit_map<V>(
3186                self,
3187                mut map_: V,
3188            ) -> std::result::Result<CreateAclRequest, V::Error>
3189            where
3190                V: serde::de::MapAccess<'de>,
3191            {
3192                let mut parent__ = None;
3193                let mut acl__ = None;
3194                let mut request_id__ = None;
3195                while let Some(k) = map_.next_key()? {
3196                    match k {
3197                        GeneratedField::Parent => {
3198                            if parent__.is_some() {
3199                                return Err(serde::de::Error::duplicate_field("parent"));
3200                            }
3201                            parent__ = Some(map_.next_value()?);
3202                        }
3203                        GeneratedField::Acl => {
3204                            if acl__.is_some() {
3205                                return Err(serde::de::Error::duplicate_field("acl"));
3206                            }
3207                            acl__ = map_.next_value()?;
3208                        }
3209                        GeneratedField::RequestId => {
3210                            if request_id__.is_some() {
3211                                return Err(serde::de::Error::duplicate_field("requestId"));
3212                            }
3213                            request_id__ = Some(map_.next_value()?);
3214                        }
3215                        GeneratedField::__SkipField__ => {
3216                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3217                        }
3218                    }
3219                }
3220                Ok(CreateAclRequest {
3221                    parent: parent__.unwrap_or_default(),
3222                    acl: acl__,
3223                    request_id: request_id__.unwrap_or_default(),
3224                })
3225            }
3226        }
3227        deserializer
3228            .deserialize_struct(
3229                "origincloud.network.v1beta1.CreateAclRequest",
3230                FIELDS,
3231                GeneratedVisitor,
3232            )
3233    }
3234}
3235impl serde::Serialize for CreateAclRuleRequest {
3236    #[allow(deprecated)]
3237    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3238    where
3239        S: serde::Serializer,
3240    {
3241        use serde::ser::SerializeStruct;
3242        let mut len = 0;
3243        if !self.parent.is_empty() {
3244            len += 1;
3245        }
3246        if self.acl_rule.is_some() {
3247            len += 1;
3248        }
3249        if !self.request_id.is_empty() {
3250            len += 1;
3251        }
3252        let mut struct_ser = serializer
3253            .serialize_struct("origincloud.network.v1beta1.CreateAclRuleRequest", len)?;
3254        if !self.parent.is_empty() {
3255            struct_ser.serialize_field("parent", &self.parent)?;
3256        }
3257        if let Some(v) = self.acl_rule.as_ref() {
3258            struct_ser.serialize_field("aclRule", v)?;
3259        }
3260        if !self.request_id.is_empty() {
3261            struct_ser.serialize_field("requestId", &self.request_id)?;
3262        }
3263        struct_ser.end()
3264    }
3265}
3266impl<'de> serde::Deserialize<'de> for CreateAclRuleRequest {
3267    #[allow(deprecated)]
3268    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3269    where
3270        D: serde::Deserializer<'de>,
3271    {
3272        const FIELDS: &[&str] = &[
3273            "parent",
3274            "acl_rule",
3275            "aclRule",
3276            "request_id",
3277            "requestId",
3278        ];
3279        #[allow(clippy::enum_variant_names)]
3280        enum GeneratedField {
3281            Parent,
3282            AclRule,
3283            RequestId,
3284            __SkipField__,
3285        }
3286        impl<'de> serde::Deserialize<'de> for GeneratedField {
3287            fn deserialize<D>(
3288                deserializer: D,
3289            ) -> std::result::Result<GeneratedField, D::Error>
3290            where
3291                D: serde::Deserializer<'de>,
3292            {
3293                struct GeneratedVisitor;
3294                impl serde::de::Visitor<'_> for GeneratedVisitor {
3295                    type Value = GeneratedField;
3296                    fn expecting(
3297                        &self,
3298                        formatter: &mut std::fmt::Formatter<'_>,
3299                    ) -> std::fmt::Result {
3300                        write!(formatter, "expected one of: {:?}", & FIELDS)
3301                    }
3302                    #[allow(unused_variables)]
3303                    fn visit_str<E>(
3304                        self,
3305                        value: &str,
3306                    ) -> std::result::Result<GeneratedField, E>
3307                    where
3308                        E: serde::de::Error,
3309                    {
3310                        match value {
3311                            "parent" => Ok(GeneratedField::Parent),
3312                            "aclRule" | "acl_rule" => Ok(GeneratedField::AclRule),
3313                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3314                            _ => Ok(GeneratedField::__SkipField__),
3315                        }
3316                    }
3317                }
3318                deserializer.deserialize_identifier(GeneratedVisitor)
3319            }
3320        }
3321        struct GeneratedVisitor;
3322        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3323            type Value = CreateAclRuleRequest;
3324            fn expecting(
3325                &self,
3326                formatter: &mut std::fmt::Formatter<'_>,
3327            ) -> std::fmt::Result {
3328                formatter
3329                    .write_str("struct origincloud.network.v1beta1.CreateAclRuleRequest")
3330            }
3331            fn visit_map<V>(
3332                self,
3333                mut map_: V,
3334            ) -> std::result::Result<CreateAclRuleRequest, V::Error>
3335            where
3336                V: serde::de::MapAccess<'de>,
3337            {
3338                let mut parent__ = None;
3339                let mut acl_rule__ = None;
3340                let mut request_id__ = None;
3341                while let Some(k) = map_.next_key()? {
3342                    match k {
3343                        GeneratedField::Parent => {
3344                            if parent__.is_some() {
3345                                return Err(serde::de::Error::duplicate_field("parent"));
3346                            }
3347                            parent__ = Some(map_.next_value()?);
3348                        }
3349                        GeneratedField::AclRule => {
3350                            if acl_rule__.is_some() {
3351                                return Err(serde::de::Error::duplicate_field("aclRule"));
3352                            }
3353                            acl_rule__ = map_.next_value()?;
3354                        }
3355                        GeneratedField::RequestId => {
3356                            if request_id__.is_some() {
3357                                return Err(serde::de::Error::duplicate_field("requestId"));
3358                            }
3359                            request_id__ = Some(map_.next_value()?);
3360                        }
3361                        GeneratedField::__SkipField__ => {
3362                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3363                        }
3364                    }
3365                }
3366                Ok(CreateAclRuleRequest {
3367                    parent: parent__.unwrap_or_default(),
3368                    acl_rule: acl_rule__,
3369                    request_id: request_id__.unwrap_or_default(),
3370                })
3371            }
3372        }
3373        deserializer
3374            .deserialize_struct(
3375                "origincloud.network.v1beta1.CreateAclRuleRequest",
3376                FIELDS,
3377                GeneratedVisitor,
3378            )
3379    }
3380}
3381impl serde::Serialize for CreateDnsPolicyAssociationRequest {
3382    #[allow(deprecated)]
3383    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3384    where
3385        S: serde::Serializer,
3386    {
3387        use serde::ser::SerializeStruct;
3388        let mut len = 0;
3389        if !self.parent.is_empty() {
3390            len += 1;
3391        }
3392        if self.dns_policy_association.is_some() {
3393            len += 1;
3394        }
3395        if !self.request_id.is_empty() {
3396            len += 1;
3397        }
3398        let mut struct_ser = serializer
3399            .serialize_struct(
3400                "origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3401                len,
3402            )?;
3403        if !self.parent.is_empty() {
3404            struct_ser.serialize_field("parent", &self.parent)?;
3405        }
3406        if let Some(v) = self.dns_policy_association.as_ref() {
3407            struct_ser.serialize_field("dnsPolicyAssociation", v)?;
3408        }
3409        if !self.request_id.is_empty() {
3410            struct_ser.serialize_field("requestId", &self.request_id)?;
3411        }
3412        struct_ser.end()
3413    }
3414}
3415impl<'de> serde::Deserialize<'de> for CreateDnsPolicyAssociationRequest {
3416    #[allow(deprecated)]
3417    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3418    where
3419        D: serde::Deserializer<'de>,
3420    {
3421        const FIELDS: &[&str] = &[
3422            "parent",
3423            "dns_policy_association",
3424            "dnsPolicyAssociation",
3425            "request_id",
3426            "requestId",
3427        ];
3428        #[allow(clippy::enum_variant_names)]
3429        enum GeneratedField {
3430            Parent,
3431            DnsPolicyAssociation,
3432            RequestId,
3433            __SkipField__,
3434        }
3435        impl<'de> serde::Deserialize<'de> for GeneratedField {
3436            fn deserialize<D>(
3437                deserializer: D,
3438            ) -> std::result::Result<GeneratedField, D::Error>
3439            where
3440                D: serde::Deserializer<'de>,
3441            {
3442                struct GeneratedVisitor;
3443                impl serde::de::Visitor<'_> for GeneratedVisitor {
3444                    type Value = GeneratedField;
3445                    fn expecting(
3446                        &self,
3447                        formatter: &mut std::fmt::Formatter<'_>,
3448                    ) -> std::fmt::Result {
3449                        write!(formatter, "expected one of: {:?}", & FIELDS)
3450                    }
3451                    #[allow(unused_variables)]
3452                    fn visit_str<E>(
3453                        self,
3454                        value: &str,
3455                    ) -> std::result::Result<GeneratedField, E>
3456                    where
3457                        E: serde::de::Error,
3458                    {
3459                        match value {
3460                            "parent" => Ok(GeneratedField::Parent),
3461                            "dnsPolicyAssociation" | "dns_policy_association" => {
3462                                Ok(GeneratedField::DnsPolicyAssociation)
3463                            }
3464                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3465                            _ => Ok(GeneratedField::__SkipField__),
3466                        }
3467                    }
3468                }
3469                deserializer.deserialize_identifier(GeneratedVisitor)
3470            }
3471        }
3472        struct GeneratedVisitor;
3473        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3474            type Value = CreateDnsPolicyAssociationRequest;
3475            fn expecting(
3476                &self,
3477                formatter: &mut std::fmt::Formatter<'_>,
3478            ) -> std::fmt::Result {
3479                formatter
3480                    .write_str(
3481                        "struct origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3482                    )
3483            }
3484            fn visit_map<V>(
3485                self,
3486                mut map_: V,
3487            ) -> std::result::Result<CreateDnsPolicyAssociationRequest, V::Error>
3488            where
3489                V: serde::de::MapAccess<'de>,
3490            {
3491                let mut parent__ = None;
3492                let mut dns_policy_association__ = None;
3493                let mut request_id__ = None;
3494                while let Some(k) = map_.next_key()? {
3495                    match k {
3496                        GeneratedField::Parent => {
3497                            if parent__.is_some() {
3498                                return Err(serde::de::Error::duplicate_field("parent"));
3499                            }
3500                            parent__ = Some(map_.next_value()?);
3501                        }
3502                        GeneratedField::DnsPolicyAssociation => {
3503                            if dns_policy_association__.is_some() {
3504                                return Err(
3505                                    serde::de::Error::duplicate_field("dnsPolicyAssociation"),
3506                                );
3507                            }
3508                            dns_policy_association__ = map_.next_value()?;
3509                        }
3510                        GeneratedField::RequestId => {
3511                            if request_id__.is_some() {
3512                                return Err(serde::de::Error::duplicate_field("requestId"));
3513                            }
3514                            request_id__ = Some(map_.next_value()?);
3515                        }
3516                        GeneratedField::__SkipField__ => {
3517                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3518                        }
3519                    }
3520                }
3521                Ok(CreateDnsPolicyAssociationRequest {
3522                    parent: parent__.unwrap_or_default(),
3523                    dns_policy_association: dns_policy_association__,
3524                    request_id: request_id__.unwrap_or_default(),
3525                })
3526            }
3527        }
3528        deserializer
3529            .deserialize_struct(
3530                "origincloud.network.v1beta1.CreateDnsPolicyAssociationRequest",
3531                FIELDS,
3532                GeneratedVisitor,
3533            )
3534    }
3535}
3536impl serde::Serialize for CreateDnsPolicyRequest {
3537    #[allow(deprecated)]
3538    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3539    where
3540        S: serde::Serializer,
3541    {
3542        use serde::ser::SerializeStruct;
3543        let mut len = 0;
3544        if !self.parent.is_empty() {
3545            len += 1;
3546        }
3547        if self.dns_policy.is_some() {
3548            len += 1;
3549        }
3550        if !self.request_id.is_empty() {
3551            len += 1;
3552        }
3553        let mut struct_ser = serializer
3554            .serialize_struct(
3555                "origincloud.network.v1beta1.CreateDnsPolicyRequest",
3556                len,
3557            )?;
3558        if !self.parent.is_empty() {
3559            struct_ser.serialize_field("parent", &self.parent)?;
3560        }
3561        if let Some(v) = self.dns_policy.as_ref() {
3562            struct_ser.serialize_field("dnsPolicy", v)?;
3563        }
3564        if !self.request_id.is_empty() {
3565            struct_ser.serialize_field("requestId", &self.request_id)?;
3566        }
3567        struct_ser.end()
3568    }
3569}
3570impl<'de> serde::Deserialize<'de> for CreateDnsPolicyRequest {
3571    #[allow(deprecated)]
3572    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3573    where
3574        D: serde::Deserializer<'de>,
3575    {
3576        const FIELDS: &[&str] = &[
3577            "parent",
3578            "dns_policy",
3579            "dnsPolicy",
3580            "request_id",
3581            "requestId",
3582        ];
3583        #[allow(clippy::enum_variant_names)]
3584        enum GeneratedField {
3585            Parent,
3586            DnsPolicy,
3587            RequestId,
3588            __SkipField__,
3589        }
3590        impl<'de> serde::Deserialize<'de> for GeneratedField {
3591            fn deserialize<D>(
3592                deserializer: D,
3593            ) -> std::result::Result<GeneratedField, D::Error>
3594            where
3595                D: serde::Deserializer<'de>,
3596            {
3597                struct GeneratedVisitor;
3598                impl serde::de::Visitor<'_> for GeneratedVisitor {
3599                    type Value = GeneratedField;
3600                    fn expecting(
3601                        &self,
3602                        formatter: &mut std::fmt::Formatter<'_>,
3603                    ) -> std::fmt::Result {
3604                        write!(formatter, "expected one of: {:?}", & FIELDS)
3605                    }
3606                    #[allow(unused_variables)]
3607                    fn visit_str<E>(
3608                        self,
3609                        value: &str,
3610                    ) -> std::result::Result<GeneratedField, E>
3611                    where
3612                        E: serde::de::Error,
3613                    {
3614                        match value {
3615                            "parent" => Ok(GeneratedField::Parent),
3616                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
3617                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3618                            _ => Ok(GeneratedField::__SkipField__),
3619                        }
3620                    }
3621                }
3622                deserializer.deserialize_identifier(GeneratedVisitor)
3623            }
3624        }
3625        struct GeneratedVisitor;
3626        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3627            type Value = CreateDnsPolicyRequest;
3628            fn expecting(
3629                &self,
3630                formatter: &mut std::fmt::Formatter<'_>,
3631            ) -> std::fmt::Result {
3632                formatter
3633                    .write_str(
3634                        "struct origincloud.network.v1beta1.CreateDnsPolicyRequest",
3635                    )
3636            }
3637            fn visit_map<V>(
3638                self,
3639                mut map_: V,
3640            ) -> std::result::Result<CreateDnsPolicyRequest, V::Error>
3641            where
3642                V: serde::de::MapAccess<'de>,
3643            {
3644                let mut parent__ = None;
3645                let mut dns_policy__ = None;
3646                let mut request_id__ = None;
3647                while let Some(k) = map_.next_key()? {
3648                    match k {
3649                        GeneratedField::Parent => {
3650                            if parent__.is_some() {
3651                                return Err(serde::de::Error::duplicate_field("parent"));
3652                            }
3653                            parent__ = Some(map_.next_value()?);
3654                        }
3655                        GeneratedField::DnsPolicy => {
3656                            if dns_policy__.is_some() {
3657                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
3658                            }
3659                            dns_policy__ = map_.next_value()?;
3660                        }
3661                        GeneratedField::RequestId => {
3662                            if request_id__.is_some() {
3663                                return Err(serde::de::Error::duplicate_field("requestId"));
3664                            }
3665                            request_id__ = Some(map_.next_value()?);
3666                        }
3667                        GeneratedField::__SkipField__ => {
3668                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3669                        }
3670                    }
3671                }
3672                Ok(CreateDnsPolicyRequest {
3673                    parent: parent__.unwrap_or_default(),
3674                    dns_policy: dns_policy__,
3675                    request_id: request_id__.unwrap_or_default(),
3676                })
3677            }
3678        }
3679        deserializer
3680            .deserialize_struct(
3681                "origincloud.network.v1beta1.CreateDnsPolicyRequest",
3682                FIELDS,
3683                GeneratedVisitor,
3684            )
3685    }
3686}
3687impl serde::Serialize for CreateFloatingIpAssociationRequest {
3688    #[allow(deprecated)]
3689    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3690    where
3691        S: serde::Serializer,
3692    {
3693        use serde::ser::SerializeStruct;
3694        let mut len = 0;
3695        if !self.parent.is_empty() {
3696            len += 1;
3697        }
3698        if self.floating_ip_association.is_some() {
3699            len += 1;
3700        }
3701        if !self.request_id.is_empty() {
3702            len += 1;
3703        }
3704        let mut struct_ser = serializer
3705            .serialize_struct(
3706                "origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3707                len,
3708            )?;
3709        if !self.parent.is_empty() {
3710            struct_ser.serialize_field("parent", &self.parent)?;
3711        }
3712        if let Some(v) = self.floating_ip_association.as_ref() {
3713            struct_ser.serialize_field("floatingIpAssociation", v)?;
3714        }
3715        if !self.request_id.is_empty() {
3716            struct_ser.serialize_field("requestId", &self.request_id)?;
3717        }
3718        struct_ser.end()
3719    }
3720}
3721impl<'de> serde::Deserialize<'de> for CreateFloatingIpAssociationRequest {
3722    #[allow(deprecated)]
3723    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3724    where
3725        D: serde::Deserializer<'de>,
3726    {
3727        const FIELDS: &[&str] = &[
3728            "parent",
3729            "floating_ip_association",
3730            "floatingIpAssociation",
3731            "request_id",
3732            "requestId",
3733        ];
3734        #[allow(clippy::enum_variant_names)]
3735        enum GeneratedField {
3736            Parent,
3737            FloatingIpAssociation,
3738            RequestId,
3739            __SkipField__,
3740        }
3741        impl<'de> serde::Deserialize<'de> for GeneratedField {
3742            fn deserialize<D>(
3743                deserializer: D,
3744            ) -> std::result::Result<GeneratedField, D::Error>
3745            where
3746                D: serde::Deserializer<'de>,
3747            {
3748                struct GeneratedVisitor;
3749                impl serde::de::Visitor<'_> for GeneratedVisitor {
3750                    type Value = GeneratedField;
3751                    fn expecting(
3752                        &self,
3753                        formatter: &mut std::fmt::Formatter<'_>,
3754                    ) -> std::fmt::Result {
3755                        write!(formatter, "expected one of: {:?}", & FIELDS)
3756                    }
3757                    #[allow(unused_variables)]
3758                    fn visit_str<E>(
3759                        self,
3760                        value: &str,
3761                    ) -> std::result::Result<GeneratedField, E>
3762                    where
3763                        E: serde::de::Error,
3764                    {
3765                        match value {
3766                            "parent" => Ok(GeneratedField::Parent),
3767                            "floatingIpAssociation" | "floating_ip_association" => {
3768                                Ok(GeneratedField::FloatingIpAssociation)
3769                            }
3770                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3771                            _ => Ok(GeneratedField::__SkipField__),
3772                        }
3773                    }
3774                }
3775                deserializer.deserialize_identifier(GeneratedVisitor)
3776            }
3777        }
3778        struct GeneratedVisitor;
3779        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3780            type Value = CreateFloatingIpAssociationRequest;
3781            fn expecting(
3782                &self,
3783                formatter: &mut std::fmt::Formatter<'_>,
3784            ) -> std::fmt::Result {
3785                formatter
3786                    .write_str(
3787                        "struct origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3788                    )
3789            }
3790            fn visit_map<V>(
3791                self,
3792                mut map_: V,
3793            ) -> std::result::Result<CreateFloatingIpAssociationRequest, V::Error>
3794            where
3795                V: serde::de::MapAccess<'de>,
3796            {
3797                let mut parent__ = None;
3798                let mut floating_ip_association__ = None;
3799                let mut request_id__ = None;
3800                while let Some(k) = map_.next_key()? {
3801                    match k {
3802                        GeneratedField::Parent => {
3803                            if parent__.is_some() {
3804                                return Err(serde::de::Error::duplicate_field("parent"));
3805                            }
3806                            parent__ = Some(map_.next_value()?);
3807                        }
3808                        GeneratedField::FloatingIpAssociation => {
3809                            if floating_ip_association__.is_some() {
3810                                return Err(
3811                                    serde::de::Error::duplicate_field("floatingIpAssociation"),
3812                                );
3813                            }
3814                            floating_ip_association__ = map_.next_value()?;
3815                        }
3816                        GeneratedField::RequestId => {
3817                            if request_id__.is_some() {
3818                                return Err(serde::de::Error::duplicate_field("requestId"));
3819                            }
3820                            request_id__ = Some(map_.next_value()?);
3821                        }
3822                        GeneratedField::__SkipField__ => {
3823                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3824                        }
3825                    }
3826                }
3827                Ok(CreateFloatingIpAssociationRequest {
3828                    parent: parent__.unwrap_or_default(),
3829                    floating_ip_association: floating_ip_association__,
3830                    request_id: request_id__.unwrap_or_default(),
3831                })
3832            }
3833        }
3834        deserializer
3835            .deserialize_struct(
3836                "origincloud.network.v1beta1.CreateFloatingIpAssociationRequest",
3837                FIELDS,
3838                GeneratedVisitor,
3839            )
3840    }
3841}
3842impl serde::Serialize for CreateFloatingIpRequest {
3843    #[allow(deprecated)]
3844    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3845    where
3846        S: serde::Serializer,
3847    {
3848        use serde::ser::SerializeStruct;
3849        let mut len = 0;
3850        if !self.parent.is_empty() {
3851            len += 1;
3852        }
3853        if self.floating_ip.is_some() {
3854            len += 1;
3855        }
3856        if !self.request_id.is_empty() {
3857            len += 1;
3858        }
3859        let mut struct_ser = serializer
3860            .serialize_struct(
3861                "origincloud.network.v1beta1.CreateFloatingIpRequest",
3862                len,
3863            )?;
3864        if !self.parent.is_empty() {
3865            struct_ser.serialize_field("parent", &self.parent)?;
3866        }
3867        if let Some(v) = self.floating_ip.as_ref() {
3868            struct_ser.serialize_field("floatingIp", v)?;
3869        }
3870        if !self.request_id.is_empty() {
3871            struct_ser.serialize_field("requestId", &self.request_id)?;
3872        }
3873        struct_ser.end()
3874    }
3875}
3876impl<'de> serde::Deserialize<'de> for CreateFloatingIpRequest {
3877    #[allow(deprecated)]
3878    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
3879    where
3880        D: serde::Deserializer<'de>,
3881    {
3882        const FIELDS: &[&str] = &[
3883            "parent",
3884            "floating_ip",
3885            "floatingIp",
3886            "request_id",
3887            "requestId",
3888        ];
3889        #[allow(clippy::enum_variant_names)]
3890        enum GeneratedField {
3891            Parent,
3892            FloatingIp,
3893            RequestId,
3894            __SkipField__,
3895        }
3896        impl<'de> serde::Deserialize<'de> for GeneratedField {
3897            fn deserialize<D>(
3898                deserializer: D,
3899            ) -> std::result::Result<GeneratedField, D::Error>
3900            where
3901                D: serde::Deserializer<'de>,
3902            {
3903                struct GeneratedVisitor;
3904                impl serde::de::Visitor<'_> for GeneratedVisitor {
3905                    type Value = GeneratedField;
3906                    fn expecting(
3907                        &self,
3908                        formatter: &mut std::fmt::Formatter<'_>,
3909                    ) -> std::fmt::Result {
3910                        write!(formatter, "expected one of: {:?}", & FIELDS)
3911                    }
3912                    #[allow(unused_variables)]
3913                    fn visit_str<E>(
3914                        self,
3915                        value: &str,
3916                    ) -> std::result::Result<GeneratedField, E>
3917                    where
3918                        E: serde::de::Error,
3919                    {
3920                        match value {
3921                            "parent" => Ok(GeneratedField::Parent),
3922                            "floatingIp" | "floating_ip" => {
3923                                Ok(GeneratedField::FloatingIp)
3924                            }
3925                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
3926                            _ => Ok(GeneratedField::__SkipField__),
3927                        }
3928                    }
3929                }
3930                deserializer.deserialize_identifier(GeneratedVisitor)
3931            }
3932        }
3933        struct GeneratedVisitor;
3934        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
3935            type Value = CreateFloatingIpRequest;
3936            fn expecting(
3937                &self,
3938                formatter: &mut std::fmt::Formatter<'_>,
3939            ) -> std::fmt::Result {
3940                formatter
3941                    .write_str(
3942                        "struct origincloud.network.v1beta1.CreateFloatingIpRequest",
3943                    )
3944            }
3945            fn visit_map<V>(
3946                self,
3947                mut map_: V,
3948            ) -> std::result::Result<CreateFloatingIpRequest, V::Error>
3949            where
3950                V: serde::de::MapAccess<'de>,
3951            {
3952                let mut parent__ = None;
3953                let mut floating_ip__ = None;
3954                let mut request_id__ = None;
3955                while let Some(k) = map_.next_key()? {
3956                    match k {
3957                        GeneratedField::Parent => {
3958                            if parent__.is_some() {
3959                                return Err(serde::de::Error::duplicate_field("parent"));
3960                            }
3961                            parent__ = Some(map_.next_value()?);
3962                        }
3963                        GeneratedField::FloatingIp => {
3964                            if floating_ip__.is_some() {
3965                                return Err(serde::de::Error::duplicate_field("floatingIp"));
3966                            }
3967                            floating_ip__ = map_.next_value()?;
3968                        }
3969                        GeneratedField::RequestId => {
3970                            if request_id__.is_some() {
3971                                return Err(serde::de::Error::duplicate_field("requestId"));
3972                            }
3973                            request_id__ = Some(map_.next_value()?);
3974                        }
3975                        GeneratedField::__SkipField__ => {
3976                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
3977                        }
3978                    }
3979                }
3980                Ok(CreateFloatingIpRequest {
3981                    parent: parent__.unwrap_or_default(),
3982                    floating_ip: floating_ip__,
3983                    request_id: request_id__.unwrap_or_default(),
3984                })
3985            }
3986        }
3987        deserializer
3988            .deserialize_struct(
3989                "origincloud.network.v1beta1.CreateFloatingIpRequest",
3990                FIELDS,
3991                GeneratedVisitor,
3992            )
3993    }
3994}
3995impl serde::Serialize for CreateInternetGatewayRequest {
3996    #[allow(deprecated)]
3997    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
3998    where
3999        S: serde::Serializer,
4000    {
4001        use serde::ser::SerializeStruct;
4002        let mut len = 0;
4003        if !self.parent.is_empty() {
4004            len += 1;
4005        }
4006        if self.internet_gateway.is_some() {
4007            len += 1;
4008        }
4009        if !self.request_id.is_empty() {
4010            len += 1;
4011        }
4012        let mut struct_ser = serializer
4013            .serialize_struct(
4014                "origincloud.network.v1beta1.CreateInternetGatewayRequest",
4015                len,
4016            )?;
4017        if !self.parent.is_empty() {
4018            struct_ser.serialize_field("parent", &self.parent)?;
4019        }
4020        if let Some(v) = self.internet_gateway.as_ref() {
4021            struct_ser.serialize_field("internetGateway", v)?;
4022        }
4023        if !self.request_id.is_empty() {
4024            struct_ser.serialize_field("requestId", &self.request_id)?;
4025        }
4026        struct_ser.end()
4027    }
4028}
4029impl<'de> serde::Deserialize<'de> for CreateInternetGatewayRequest {
4030    #[allow(deprecated)]
4031    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4032    where
4033        D: serde::Deserializer<'de>,
4034    {
4035        const FIELDS: &[&str] = &[
4036            "parent",
4037            "internet_gateway",
4038            "internetGateway",
4039            "request_id",
4040            "requestId",
4041        ];
4042        #[allow(clippy::enum_variant_names)]
4043        enum GeneratedField {
4044            Parent,
4045            InternetGateway,
4046            RequestId,
4047            __SkipField__,
4048        }
4049        impl<'de> serde::Deserialize<'de> for GeneratedField {
4050            fn deserialize<D>(
4051                deserializer: D,
4052            ) -> std::result::Result<GeneratedField, D::Error>
4053            where
4054                D: serde::Deserializer<'de>,
4055            {
4056                struct GeneratedVisitor;
4057                impl serde::de::Visitor<'_> for GeneratedVisitor {
4058                    type Value = GeneratedField;
4059                    fn expecting(
4060                        &self,
4061                        formatter: &mut std::fmt::Formatter<'_>,
4062                    ) -> std::fmt::Result {
4063                        write!(formatter, "expected one of: {:?}", & FIELDS)
4064                    }
4065                    #[allow(unused_variables)]
4066                    fn visit_str<E>(
4067                        self,
4068                        value: &str,
4069                    ) -> std::result::Result<GeneratedField, E>
4070                    where
4071                        E: serde::de::Error,
4072                    {
4073                        match value {
4074                            "parent" => Ok(GeneratedField::Parent),
4075                            "internetGateway" | "internet_gateway" => {
4076                                Ok(GeneratedField::InternetGateway)
4077                            }
4078                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4079                            _ => Ok(GeneratedField::__SkipField__),
4080                        }
4081                    }
4082                }
4083                deserializer.deserialize_identifier(GeneratedVisitor)
4084            }
4085        }
4086        struct GeneratedVisitor;
4087        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4088            type Value = CreateInternetGatewayRequest;
4089            fn expecting(
4090                &self,
4091                formatter: &mut std::fmt::Formatter<'_>,
4092            ) -> std::fmt::Result {
4093                formatter
4094                    .write_str(
4095                        "struct origincloud.network.v1beta1.CreateInternetGatewayRequest",
4096                    )
4097            }
4098            fn visit_map<V>(
4099                self,
4100                mut map_: V,
4101            ) -> std::result::Result<CreateInternetGatewayRequest, V::Error>
4102            where
4103                V: serde::de::MapAccess<'de>,
4104            {
4105                let mut parent__ = None;
4106                let mut internet_gateway__ = None;
4107                let mut request_id__ = None;
4108                while let Some(k) = map_.next_key()? {
4109                    match k {
4110                        GeneratedField::Parent => {
4111                            if parent__.is_some() {
4112                                return Err(serde::de::Error::duplicate_field("parent"));
4113                            }
4114                            parent__ = Some(map_.next_value()?);
4115                        }
4116                        GeneratedField::InternetGateway => {
4117                            if internet_gateway__.is_some() {
4118                                return Err(
4119                                    serde::de::Error::duplicate_field("internetGateway"),
4120                                );
4121                            }
4122                            internet_gateway__ = map_.next_value()?;
4123                        }
4124                        GeneratedField::RequestId => {
4125                            if request_id__.is_some() {
4126                                return Err(serde::de::Error::duplicate_field("requestId"));
4127                            }
4128                            request_id__ = Some(map_.next_value()?);
4129                        }
4130                        GeneratedField::__SkipField__ => {
4131                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4132                        }
4133                    }
4134                }
4135                Ok(CreateInternetGatewayRequest {
4136                    parent: parent__.unwrap_or_default(),
4137                    internet_gateway: internet_gateway__,
4138                    request_id: request_id__.unwrap_or_default(),
4139                })
4140            }
4141        }
4142        deserializer
4143            .deserialize_struct(
4144                "origincloud.network.v1beta1.CreateInternetGatewayRequest",
4145                FIELDS,
4146                GeneratedVisitor,
4147            )
4148    }
4149}
4150impl serde::Serialize for CreateNatGatewayRequest {
4151    #[allow(deprecated)]
4152    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4153    where
4154        S: serde::Serializer,
4155    {
4156        use serde::ser::SerializeStruct;
4157        let mut len = 0;
4158        if !self.parent.is_empty() {
4159            len += 1;
4160        }
4161        if self.nat_gateway.is_some() {
4162            len += 1;
4163        }
4164        if !self.request_id.is_empty() {
4165            len += 1;
4166        }
4167        let mut struct_ser = serializer
4168            .serialize_struct(
4169                "origincloud.network.v1beta1.CreateNatGatewayRequest",
4170                len,
4171            )?;
4172        if !self.parent.is_empty() {
4173            struct_ser.serialize_field("parent", &self.parent)?;
4174        }
4175        if let Some(v) = self.nat_gateway.as_ref() {
4176            struct_ser.serialize_field("natGateway", v)?;
4177        }
4178        if !self.request_id.is_empty() {
4179            struct_ser.serialize_field("requestId", &self.request_id)?;
4180        }
4181        struct_ser.end()
4182    }
4183}
4184impl<'de> serde::Deserialize<'de> for CreateNatGatewayRequest {
4185    #[allow(deprecated)]
4186    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4187    where
4188        D: serde::Deserializer<'de>,
4189    {
4190        const FIELDS: &[&str] = &[
4191            "parent",
4192            "nat_gateway",
4193            "natGateway",
4194            "request_id",
4195            "requestId",
4196        ];
4197        #[allow(clippy::enum_variant_names)]
4198        enum GeneratedField {
4199            Parent,
4200            NatGateway,
4201            RequestId,
4202            __SkipField__,
4203        }
4204        impl<'de> serde::Deserialize<'de> for GeneratedField {
4205            fn deserialize<D>(
4206                deserializer: D,
4207            ) -> std::result::Result<GeneratedField, D::Error>
4208            where
4209                D: serde::Deserializer<'de>,
4210            {
4211                struct GeneratedVisitor;
4212                impl serde::de::Visitor<'_> for GeneratedVisitor {
4213                    type Value = GeneratedField;
4214                    fn expecting(
4215                        &self,
4216                        formatter: &mut std::fmt::Formatter<'_>,
4217                    ) -> std::fmt::Result {
4218                        write!(formatter, "expected one of: {:?}", & FIELDS)
4219                    }
4220                    #[allow(unused_variables)]
4221                    fn visit_str<E>(
4222                        self,
4223                        value: &str,
4224                    ) -> std::result::Result<GeneratedField, E>
4225                    where
4226                        E: serde::de::Error,
4227                    {
4228                        match value {
4229                            "parent" => Ok(GeneratedField::Parent),
4230                            "natGateway" | "nat_gateway" => {
4231                                Ok(GeneratedField::NatGateway)
4232                            }
4233                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4234                            _ => Ok(GeneratedField::__SkipField__),
4235                        }
4236                    }
4237                }
4238                deserializer.deserialize_identifier(GeneratedVisitor)
4239            }
4240        }
4241        struct GeneratedVisitor;
4242        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4243            type Value = CreateNatGatewayRequest;
4244            fn expecting(
4245                &self,
4246                formatter: &mut std::fmt::Formatter<'_>,
4247            ) -> std::fmt::Result {
4248                formatter
4249                    .write_str(
4250                        "struct origincloud.network.v1beta1.CreateNatGatewayRequest",
4251                    )
4252            }
4253            fn visit_map<V>(
4254                self,
4255                mut map_: V,
4256            ) -> std::result::Result<CreateNatGatewayRequest, V::Error>
4257            where
4258                V: serde::de::MapAccess<'de>,
4259            {
4260                let mut parent__ = None;
4261                let mut nat_gateway__ = None;
4262                let mut request_id__ = None;
4263                while let Some(k) = map_.next_key()? {
4264                    match k {
4265                        GeneratedField::Parent => {
4266                            if parent__.is_some() {
4267                                return Err(serde::de::Error::duplicate_field("parent"));
4268                            }
4269                            parent__ = Some(map_.next_value()?);
4270                        }
4271                        GeneratedField::NatGateway => {
4272                            if nat_gateway__.is_some() {
4273                                return Err(serde::de::Error::duplicate_field("natGateway"));
4274                            }
4275                            nat_gateway__ = map_.next_value()?;
4276                        }
4277                        GeneratedField::RequestId => {
4278                            if request_id__.is_some() {
4279                                return Err(serde::de::Error::duplicate_field("requestId"));
4280                            }
4281                            request_id__ = Some(map_.next_value()?);
4282                        }
4283                        GeneratedField::__SkipField__ => {
4284                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4285                        }
4286                    }
4287                }
4288                Ok(CreateNatGatewayRequest {
4289                    parent: parent__.unwrap_or_default(),
4290                    nat_gateway: nat_gateway__,
4291                    request_id: request_id__.unwrap_or_default(),
4292                })
4293            }
4294        }
4295        deserializer
4296            .deserialize_struct(
4297                "origincloud.network.v1beta1.CreateNatGatewayRequest",
4298                FIELDS,
4299                GeneratedVisitor,
4300            )
4301    }
4302}
4303impl serde::Serialize for CreateNetworkInterfaceRequest {
4304    #[allow(deprecated)]
4305    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4306    where
4307        S: serde::Serializer,
4308    {
4309        use serde::ser::SerializeStruct;
4310        let mut len = 0;
4311        if !self.parent.is_empty() {
4312            len += 1;
4313        }
4314        if self.network_interface.is_some() {
4315            len += 1;
4316        }
4317        if !self.request_id.is_empty() {
4318            len += 1;
4319        }
4320        let mut struct_ser = serializer
4321            .serialize_struct(
4322                "origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4323                len,
4324            )?;
4325        if !self.parent.is_empty() {
4326            struct_ser.serialize_field("parent", &self.parent)?;
4327        }
4328        if let Some(v) = self.network_interface.as_ref() {
4329            struct_ser.serialize_field("networkInterface", v)?;
4330        }
4331        if !self.request_id.is_empty() {
4332            struct_ser.serialize_field("requestId", &self.request_id)?;
4333        }
4334        struct_ser.end()
4335    }
4336}
4337impl<'de> serde::Deserialize<'de> for CreateNetworkInterfaceRequest {
4338    #[allow(deprecated)]
4339    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4340    where
4341        D: serde::Deserializer<'de>,
4342    {
4343        const FIELDS: &[&str] = &[
4344            "parent",
4345            "network_interface",
4346            "networkInterface",
4347            "request_id",
4348            "requestId",
4349        ];
4350        #[allow(clippy::enum_variant_names)]
4351        enum GeneratedField {
4352            Parent,
4353            NetworkInterface,
4354            RequestId,
4355            __SkipField__,
4356        }
4357        impl<'de> serde::Deserialize<'de> for GeneratedField {
4358            fn deserialize<D>(
4359                deserializer: D,
4360            ) -> std::result::Result<GeneratedField, D::Error>
4361            where
4362                D: serde::Deserializer<'de>,
4363            {
4364                struct GeneratedVisitor;
4365                impl serde::de::Visitor<'_> for GeneratedVisitor {
4366                    type Value = GeneratedField;
4367                    fn expecting(
4368                        &self,
4369                        formatter: &mut std::fmt::Formatter<'_>,
4370                    ) -> std::fmt::Result {
4371                        write!(formatter, "expected one of: {:?}", & FIELDS)
4372                    }
4373                    #[allow(unused_variables)]
4374                    fn visit_str<E>(
4375                        self,
4376                        value: &str,
4377                    ) -> std::result::Result<GeneratedField, E>
4378                    where
4379                        E: serde::de::Error,
4380                    {
4381                        match value {
4382                            "parent" => Ok(GeneratedField::Parent),
4383                            "networkInterface" | "network_interface" => {
4384                                Ok(GeneratedField::NetworkInterface)
4385                            }
4386                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4387                            _ => Ok(GeneratedField::__SkipField__),
4388                        }
4389                    }
4390                }
4391                deserializer.deserialize_identifier(GeneratedVisitor)
4392            }
4393        }
4394        struct GeneratedVisitor;
4395        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4396            type Value = CreateNetworkInterfaceRequest;
4397            fn expecting(
4398                &self,
4399                formatter: &mut std::fmt::Formatter<'_>,
4400            ) -> std::fmt::Result {
4401                formatter
4402                    .write_str(
4403                        "struct origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4404                    )
4405            }
4406            fn visit_map<V>(
4407                self,
4408                mut map_: V,
4409            ) -> std::result::Result<CreateNetworkInterfaceRequest, V::Error>
4410            where
4411                V: serde::de::MapAccess<'de>,
4412            {
4413                let mut parent__ = None;
4414                let mut network_interface__ = None;
4415                let mut request_id__ = None;
4416                while let Some(k) = map_.next_key()? {
4417                    match k {
4418                        GeneratedField::Parent => {
4419                            if parent__.is_some() {
4420                                return Err(serde::de::Error::duplicate_field("parent"));
4421                            }
4422                            parent__ = Some(map_.next_value()?);
4423                        }
4424                        GeneratedField::NetworkInterface => {
4425                            if network_interface__.is_some() {
4426                                return Err(
4427                                    serde::de::Error::duplicate_field("networkInterface"),
4428                                );
4429                            }
4430                            network_interface__ = map_.next_value()?;
4431                        }
4432                        GeneratedField::RequestId => {
4433                            if request_id__.is_some() {
4434                                return Err(serde::de::Error::duplicate_field("requestId"));
4435                            }
4436                            request_id__ = Some(map_.next_value()?);
4437                        }
4438                        GeneratedField::__SkipField__ => {
4439                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4440                        }
4441                    }
4442                }
4443                Ok(CreateNetworkInterfaceRequest {
4444                    parent: parent__.unwrap_or_default(),
4445                    network_interface: network_interface__,
4446                    request_id: request_id__.unwrap_or_default(),
4447                })
4448            }
4449        }
4450        deserializer
4451            .deserialize_struct(
4452                "origincloud.network.v1beta1.CreateNetworkInterfaceRequest",
4453                FIELDS,
4454                GeneratedVisitor,
4455            )
4456    }
4457}
4458impl serde::Serialize for CreateRouteRequest {
4459    #[allow(deprecated)]
4460    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4461    where
4462        S: serde::Serializer,
4463    {
4464        use serde::ser::SerializeStruct;
4465        let mut len = 0;
4466        if !self.parent.is_empty() {
4467            len += 1;
4468        }
4469        if self.route.is_some() {
4470            len += 1;
4471        }
4472        if !self.request_id.is_empty() {
4473            len += 1;
4474        }
4475        let mut struct_ser = serializer
4476            .serialize_struct("origincloud.network.v1beta1.CreateRouteRequest", len)?;
4477        if !self.parent.is_empty() {
4478            struct_ser.serialize_field("parent", &self.parent)?;
4479        }
4480        if let Some(v) = self.route.as_ref() {
4481            struct_ser.serialize_field("route", v)?;
4482        }
4483        if !self.request_id.is_empty() {
4484            struct_ser.serialize_field("requestId", &self.request_id)?;
4485        }
4486        struct_ser.end()
4487    }
4488}
4489impl<'de> serde::Deserialize<'de> for CreateRouteRequest {
4490    #[allow(deprecated)]
4491    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4492    where
4493        D: serde::Deserializer<'de>,
4494    {
4495        const FIELDS: &[&str] = &["parent", "route", "request_id", "requestId"];
4496        #[allow(clippy::enum_variant_names)]
4497        enum GeneratedField {
4498            Parent,
4499            Route,
4500            RequestId,
4501            __SkipField__,
4502        }
4503        impl<'de> serde::Deserialize<'de> for GeneratedField {
4504            fn deserialize<D>(
4505                deserializer: D,
4506            ) -> std::result::Result<GeneratedField, D::Error>
4507            where
4508                D: serde::Deserializer<'de>,
4509            {
4510                struct GeneratedVisitor;
4511                impl serde::de::Visitor<'_> for GeneratedVisitor {
4512                    type Value = GeneratedField;
4513                    fn expecting(
4514                        &self,
4515                        formatter: &mut std::fmt::Formatter<'_>,
4516                    ) -> std::fmt::Result {
4517                        write!(formatter, "expected one of: {:?}", & FIELDS)
4518                    }
4519                    #[allow(unused_variables)]
4520                    fn visit_str<E>(
4521                        self,
4522                        value: &str,
4523                    ) -> std::result::Result<GeneratedField, E>
4524                    where
4525                        E: serde::de::Error,
4526                    {
4527                        match value {
4528                            "parent" => Ok(GeneratedField::Parent),
4529                            "route" => Ok(GeneratedField::Route),
4530                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4531                            _ => Ok(GeneratedField::__SkipField__),
4532                        }
4533                    }
4534                }
4535                deserializer.deserialize_identifier(GeneratedVisitor)
4536            }
4537        }
4538        struct GeneratedVisitor;
4539        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4540            type Value = CreateRouteRequest;
4541            fn expecting(
4542                &self,
4543                formatter: &mut std::fmt::Formatter<'_>,
4544            ) -> std::fmt::Result {
4545                formatter
4546                    .write_str("struct origincloud.network.v1beta1.CreateRouteRequest")
4547            }
4548            fn visit_map<V>(
4549                self,
4550                mut map_: V,
4551            ) -> std::result::Result<CreateRouteRequest, V::Error>
4552            where
4553                V: serde::de::MapAccess<'de>,
4554            {
4555                let mut parent__ = None;
4556                let mut route__ = None;
4557                let mut request_id__ = None;
4558                while let Some(k) = map_.next_key()? {
4559                    match k {
4560                        GeneratedField::Parent => {
4561                            if parent__.is_some() {
4562                                return Err(serde::de::Error::duplicate_field("parent"));
4563                            }
4564                            parent__ = Some(map_.next_value()?);
4565                        }
4566                        GeneratedField::Route => {
4567                            if route__.is_some() {
4568                                return Err(serde::de::Error::duplicate_field("route"));
4569                            }
4570                            route__ = map_.next_value()?;
4571                        }
4572                        GeneratedField::RequestId => {
4573                            if request_id__.is_some() {
4574                                return Err(serde::de::Error::duplicate_field("requestId"));
4575                            }
4576                            request_id__ = Some(map_.next_value()?);
4577                        }
4578                        GeneratedField::__SkipField__ => {
4579                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4580                        }
4581                    }
4582                }
4583                Ok(CreateRouteRequest {
4584                    parent: parent__.unwrap_or_default(),
4585                    route: route__,
4586                    request_id: request_id__.unwrap_or_default(),
4587                })
4588            }
4589        }
4590        deserializer
4591            .deserialize_struct(
4592                "origincloud.network.v1beta1.CreateRouteRequest",
4593                FIELDS,
4594                GeneratedVisitor,
4595            )
4596    }
4597}
4598impl serde::Serialize for CreateRouteTableAssociationRequest {
4599    #[allow(deprecated)]
4600    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4601    where
4602        S: serde::Serializer,
4603    {
4604        use serde::ser::SerializeStruct;
4605        let mut len = 0;
4606        if !self.parent.is_empty() {
4607            len += 1;
4608        }
4609        if self.route_table_association.is_some() {
4610            len += 1;
4611        }
4612        if !self.request_id.is_empty() {
4613            len += 1;
4614        }
4615        let mut struct_ser = serializer
4616            .serialize_struct(
4617                "origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4618                len,
4619            )?;
4620        if !self.parent.is_empty() {
4621            struct_ser.serialize_field("parent", &self.parent)?;
4622        }
4623        if let Some(v) = self.route_table_association.as_ref() {
4624            struct_ser.serialize_field("routeTableAssociation", v)?;
4625        }
4626        if !self.request_id.is_empty() {
4627            struct_ser.serialize_field("requestId", &self.request_id)?;
4628        }
4629        struct_ser.end()
4630    }
4631}
4632impl<'de> serde::Deserialize<'de> for CreateRouteTableAssociationRequest {
4633    #[allow(deprecated)]
4634    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4635    where
4636        D: serde::Deserializer<'de>,
4637    {
4638        const FIELDS: &[&str] = &[
4639            "parent",
4640            "route_table_association",
4641            "routeTableAssociation",
4642            "request_id",
4643            "requestId",
4644        ];
4645        #[allow(clippy::enum_variant_names)]
4646        enum GeneratedField {
4647            Parent,
4648            RouteTableAssociation,
4649            RequestId,
4650            __SkipField__,
4651        }
4652        impl<'de> serde::Deserialize<'de> for GeneratedField {
4653            fn deserialize<D>(
4654                deserializer: D,
4655            ) -> std::result::Result<GeneratedField, D::Error>
4656            where
4657                D: serde::Deserializer<'de>,
4658            {
4659                struct GeneratedVisitor;
4660                impl serde::de::Visitor<'_> for GeneratedVisitor {
4661                    type Value = GeneratedField;
4662                    fn expecting(
4663                        &self,
4664                        formatter: &mut std::fmt::Formatter<'_>,
4665                    ) -> std::fmt::Result {
4666                        write!(formatter, "expected one of: {:?}", & FIELDS)
4667                    }
4668                    #[allow(unused_variables)]
4669                    fn visit_str<E>(
4670                        self,
4671                        value: &str,
4672                    ) -> std::result::Result<GeneratedField, E>
4673                    where
4674                        E: serde::de::Error,
4675                    {
4676                        match value {
4677                            "parent" => Ok(GeneratedField::Parent),
4678                            "routeTableAssociation" | "route_table_association" => {
4679                                Ok(GeneratedField::RouteTableAssociation)
4680                            }
4681                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4682                            _ => Ok(GeneratedField::__SkipField__),
4683                        }
4684                    }
4685                }
4686                deserializer.deserialize_identifier(GeneratedVisitor)
4687            }
4688        }
4689        struct GeneratedVisitor;
4690        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4691            type Value = CreateRouteTableAssociationRequest;
4692            fn expecting(
4693                &self,
4694                formatter: &mut std::fmt::Formatter<'_>,
4695            ) -> std::fmt::Result {
4696                formatter
4697                    .write_str(
4698                        "struct origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4699                    )
4700            }
4701            fn visit_map<V>(
4702                self,
4703                mut map_: V,
4704            ) -> std::result::Result<CreateRouteTableAssociationRequest, V::Error>
4705            where
4706                V: serde::de::MapAccess<'de>,
4707            {
4708                let mut parent__ = None;
4709                let mut route_table_association__ = None;
4710                let mut request_id__ = None;
4711                while let Some(k) = map_.next_key()? {
4712                    match k {
4713                        GeneratedField::Parent => {
4714                            if parent__.is_some() {
4715                                return Err(serde::de::Error::duplicate_field("parent"));
4716                            }
4717                            parent__ = Some(map_.next_value()?);
4718                        }
4719                        GeneratedField::RouteTableAssociation => {
4720                            if route_table_association__.is_some() {
4721                                return Err(
4722                                    serde::de::Error::duplicate_field("routeTableAssociation"),
4723                                );
4724                            }
4725                            route_table_association__ = map_.next_value()?;
4726                        }
4727                        GeneratedField::RequestId => {
4728                            if request_id__.is_some() {
4729                                return Err(serde::de::Error::duplicate_field("requestId"));
4730                            }
4731                            request_id__ = Some(map_.next_value()?);
4732                        }
4733                        GeneratedField::__SkipField__ => {
4734                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4735                        }
4736                    }
4737                }
4738                Ok(CreateRouteTableAssociationRequest {
4739                    parent: parent__.unwrap_or_default(),
4740                    route_table_association: route_table_association__,
4741                    request_id: request_id__.unwrap_or_default(),
4742                })
4743            }
4744        }
4745        deserializer
4746            .deserialize_struct(
4747                "origincloud.network.v1beta1.CreateRouteTableAssociationRequest",
4748                FIELDS,
4749                GeneratedVisitor,
4750            )
4751    }
4752}
4753impl serde::Serialize for CreateRouteTableRequest {
4754    #[allow(deprecated)]
4755    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4756    where
4757        S: serde::Serializer,
4758    {
4759        use serde::ser::SerializeStruct;
4760        let mut len = 0;
4761        if !self.parent.is_empty() {
4762            len += 1;
4763        }
4764        if self.route_table.is_some() {
4765            len += 1;
4766        }
4767        if !self.request_id.is_empty() {
4768            len += 1;
4769        }
4770        let mut struct_ser = serializer
4771            .serialize_struct(
4772                "origincloud.network.v1beta1.CreateRouteTableRequest",
4773                len,
4774            )?;
4775        if !self.parent.is_empty() {
4776            struct_ser.serialize_field("parent", &self.parent)?;
4777        }
4778        if let Some(v) = self.route_table.as_ref() {
4779            struct_ser.serialize_field("routeTable", v)?;
4780        }
4781        if !self.request_id.is_empty() {
4782            struct_ser.serialize_field("requestId", &self.request_id)?;
4783        }
4784        struct_ser.end()
4785    }
4786}
4787impl<'de> serde::Deserialize<'de> for CreateRouteTableRequest {
4788    #[allow(deprecated)]
4789    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4790    where
4791        D: serde::Deserializer<'de>,
4792    {
4793        const FIELDS: &[&str] = &[
4794            "parent",
4795            "route_table",
4796            "routeTable",
4797            "request_id",
4798            "requestId",
4799        ];
4800        #[allow(clippy::enum_variant_names)]
4801        enum GeneratedField {
4802            Parent,
4803            RouteTable,
4804            RequestId,
4805            __SkipField__,
4806        }
4807        impl<'de> serde::Deserialize<'de> for GeneratedField {
4808            fn deserialize<D>(
4809                deserializer: D,
4810            ) -> std::result::Result<GeneratedField, D::Error>
4811            where
4812                D: serde::Deserializer<'de>,
4813            {
4814                struct GeneratedVisitor;
4815                impl serde::de::Visitor<'_> for GeneratedVisitor {
4816                    type Value = GeneratedField;
4817                    fn expecting(
4818                        &self,
4819                        formatter: &mut std::fmt::Formatter<'_>,
4820                    ) -> std::fmt::Result {
4821                        write!(formatter, "expected one of: {:?}", & FIELDS)
4822                    }
4823                    #[allow(unused_variables)]
4824                    fn visit_str<E>(
4825                        self,
4826                        value: &str,
4827                    ) -> std::result::Result<GeneratedField, E>
4828                    where
4829                        E: serde::de::Error,
4830                    {
4831                        match value {
4832                            "parent" => Ok(GeneratedField::Parent),
4833                            "routeTable" | "route_table" => {
4834                                Ok(GeneratedField::RouteTable)
4835                            }
4836                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4837                            _ => Ok(GeneratedField::__SkipField__),
4838                        }
4839                    }
4840                }
4841                deserializer.deserialize_identifier(GeneratedVisitor)
4842            }
4843        }
4844        struct GeneratedVisitor;
4845        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4846            type Value = CreateRouteTableRequest;
4847            fn expecting(
4848                &self,
4849                formatter: &mut std::fmt::Formatter<'_>,
4850            ) -> std::fmt::Result {
4851                formatter
4852                    .write_str(
4853                        "struct origincloud.network.v1beta1.CreateRouteTableRequest",
4854                    )
4855            }
4856            fn visit_map<V>(
4857                self,
4858                mut map_: V,
4859            ) -> std::result::Result<CreateRouteTableRequest, V::Error>
4860            where
4861                V: serde::de::MapAccess<'de>,
4862            {
4863                let mut parent__ = None;
4864                let mut route_table__ = None;
4865                let mut request_id__ = None;
4866                while let Some(k) = map_.next_key()? {
4867                    match k {
4868                        GeneratedField::Parent => {
4869                            if parent__.is_some() {
4870                                return Err(serde::de::Error::duplicate_field("parent"));
4871                            }
4872                            parent__ = Some(map_.next_value()?);
4873                        }
4874                        GeneratedField::RouteTable => {
4875                            if route_table__.is_some() {
4876                                return Err(serde::de::Error::duplicate_field("routeTable"));
4877                            }
4878                            route_table__ = map_.next_value()?;
4879                        }
4880                        GeneratedField::RequestId => {
4881                            if request_id__.is_some() {
4882                                return Err(serde::de::Error::duplicate_field("requestId"));
4883                            }
4884                            request_id__ = Some(map_.next_value()?);
4885                        }
4886                        GeneratedField::__SkipField__ => {
4887                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
4888                        }
4889                    }
4890                }
4891                Ok(CreateRouteTableRequest {
4892                    parent: parent__.unwrap_or_default(),
4893                    route_table: route_table__,
4894                    request_id: request_id__.unwrap_or_default(),
4895                })
4896            }
4897        }
4898        deserializer
4899            .deserialize_struct(
4900                "origincloud.network.v1beta1.CreateRouteTableRequest",
4901                FIELDS,
4902                GeneratedVisitor,
4903            )
4904    }
4905}
4906impl serde::Serialize for CreateSecurityGroupAssociationRequest {
4907    #[allow(deprecated)]
4908    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
4909    where
4910        S: serde::Serializer,
4911    {
4912        use serde::ser::SerializeStruct;
4913        let mut len = 0;
4914        if !self.parent.is_empty() {
4915            len += 1;
4916        }
4917        if self.security_group_association.is_some() {
4918            len += 1;
4919        }
4920        if !self.request_id.is_empty() {
4921            len += 1;
4922        }
4923        let mut struct_ser = serializer
4924            .serialize_struct(
4925                "origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
4926                len,
4927            )?;
4928        if !self.parent.is_empty() {
4929            struct_ser.serialize_field("parent", &self.parent)?;
4930        }
4931        if let Some(v) = self.security_group_association.as_ref() {
4932            struct_ser.serialize_field("securityGroupAssociation", v)?;
4933        }
4934        if !self.request_id.is_empty() {
4935            struct_ser.serialize_field("requestId", &self.request_id)?;
4936        }
4937        struct_ser.end()
4938    }
4939}
4940impl<'de> serde::Deserialize<'de> for CreateSecurityGroupAssociationRequest {
4941    #[allow(deprecated)]
4942    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
4943    where
4944        D: serde::Deserializer<'de>,
4945    {
4946        const FIELDS: &[&str] = &[
4947            "parent",
4948            "security_group_association",
4949            "securityGroupAssociation",
4950            "request_id",
4951            "requestId",
4952        ];
4953        #[allow(clippy::enum_variant_names)]
4954        enum GeneratedField {
4955            Parent,
4956            SecurityGroupAssociation,
4957            RequestId,
4958            __SkipField__,
4959        }
4960        impl<'de> serde::Deserialize<'de> for GeneratedField {
4961            fn deserialize<D>(
4962                deserializer: D,
4963            ) -> std::result::Result<GeneratedField, D::Error>
4964            where
4965                D: serde::Deserializer<'de>,
4966            {
4967                struct GeneratedVisitor;
4968                impl serde::de::Visitor<'_> for GeneratedVisitor {
4969                    type Value = GeneratedField;
4970                    fn expecting(
4971                        &self,
4972                        formatter: &mut std::fmt::Formatter<'_>,
4973                    ) -> std::fmt::Result {
4974                        write!(formatter, "expected one of: {:?}", & FIELDS)
4975                    }
4976                    #[allow(unused_variables)]
4977                    fn visit_str<E>(
4978                        self,
4979                        value: &str,
4980                    ) -> std::result::Result<GeneratedField, E>
4981                    where
4982                        E: serde::de::Error,
4983                    {
4984                        match value {
4985                            "parent" => Ok(GeneratedField::Parent),
4986                            "securityGroupAssociation" | "security_group_association" => {
4987                                Ok(GeneratedField::SecurityGroupAssociation)
4988                            }
4989                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
4990                            _ => Ok(GeneratedField::__SkipField__),
4991                        }
4992                    }
4993                }
4994                deserializer.deserialize_identifier(GeneratedVisitor)
4995            }
4996        }
4997        struct GeneratedVisitor;
4998        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
4999            type Value = CreateSecurityGroupAssociationRequest;
5000            fn expecting(
5001                &self,
5002                formatter: &mut std::fmt::Formatter<'_>,
5003            ) -> std::fmt::Result {
5004                formatter
5005                    .write_str(
5006                        "struct origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
5007                    )
5008            }
5009            fn visit_map<V>(
5010                self,
5011                mut map_: V,
5012            ) -> std::result::Result<CreateSecurityGroupAssociationRequest, V::Error>
5013            where
5014                V: serde::de::MapAccess<'de>,
5015            {
5016                let mut parent__ = None;
5017                let mut security_group_association__ = None;
5018                let mut request_id__ = None;
5019                while let Some(k) = map_.next_key()? {
5020                    match k {
5021                        GeneratedField::Parent => {
5022                            if parent__.is_some() {
5023                                return Err(serde::de::Error::duplicate_field("parent"));
5024                            }
5025                            parent__ = Some(map_.next_value()?);
5026                        }
5027                        GeneratedField::SecurityGroupAssociation => {
5028                            if security_group_association__.is_some() {
5029                                return Err(
5030                                    serde::de::Error::duplicate_field(
5031                                        "securityGroupAssociation",
5032                                    ),
5033                                );
5034                            }
5035                            security_group_association__ = map_.next_value()?;
5036                        }
5037                        GeneratedField::RequestId => {
5038                            if request_id__.is_some() {
5039                                return Err(serde::de::Error::duplicate_field("requestId"));
5040                            }
5041                            request_id__ = Some(map_.next_value()?);
5042                        }
5043                        GeneratedField::__SkipField__ => {
5044                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5045                        }
5046                    }
5047                }
5048                Ok(CreateSecurityGroupAssociationRequest {
5049                    parent: parent__.unwrap_or_default(),
5050                    security_group_association: security_group_association__,
5051                    request_id: request_id__.unwrap_or_default(),
5052                })
5053            }
5054        }
5055        deserializer
5056            .deserialize_struct(
5057                "origincloud.network.v1beta1.CreateSecurityGroupAssociationRequest",
5058                FIELDS,
5059                GeneratedVisitor,
5060            )
5061    }
5062}
5063impl serde::Serialize for CreateSecurityGroupRequest {
5064    #[allow(deprecated)]
5065    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5066    where
5067        S: serde::Serializer,
5068    {
5069        use serde::ser::SerializeStruct;
5070        let mut len = 0;
5071        if !self.parent.is_empty() {
5072            len += 1;
5073        }
5074        if self.security_group.is_some() {
5075            len += 1;
5076        }
5077        if !self.request_id.is_empty() {
5078            len += 1;
5079        }
5080        let mut struct_ser = serializer
5081            .serialize_struct(
5082                "origincloud.network.v1beta1.CreateSecurityGroupRequest",
5083                len,
5084            )?;
5085        if !self.parent.is_empty() {
5086            struct_ser.serialize_field("parent", &self.parent)?;
5087        }
5088        if let Some(v) = self.security_group.as_ref() {
5089            struct_ser.serialize_field("securityGroup", v)?;
5090        }
5091        if !self.request_id.is_empty() {
5092            struct_ser.serialize_field("requestId", &self.request_id)?;
5093        }
5094        struct_ser.end()
5095    }
5096}
5097impl<'de> serde::Deserialize<'de> for CreateSecurityGroupRequest {
5098    #[allow(deprecated)]
5099    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5100    where
5101        D: serde::Deserializer<'de>,
5102    {
5103        const FIELDS: &[&str] = &[
5104            "parent",
5105            "security_group",
5106            "securityGroup",
5107            "request_id",
5108            "requestId",
5109        ];
5110        #[allow(clippy::enum_variant_names)]
5111        enum GeneratedField {
5112            Parent,
5113            SecurityGroup,
5114            RequestId,
5115            __SkipField__,
5116        }
5117        impl<'de> serde::Deserialize<'de> for GeneratedField {
5118            fn deserialize<D>(
5119                deserializer: D,
5120            ) -> std::result::Result<GeneratedField, D::Error>
5121            where
5122                D: serde::Deserializer<'de>,
5123            {
5124                struct GeneratedVisitor;
5125                impl serde::de::Visitor<'_> for GeneratedVisitor {
5126                    type Value = GeneratedField;
5127                    fn expecting(
5128                        &self,
5129                        formatter: &mut std::fmt::Formatter<'_>,
5130                    ) -> std::fmt::Result {
5131                        write!(formatter, "expected one of: {:?}", & FIELDS)
5132                    }
5133                    #[allow(unused_variables)]
5134                    fn visit_str<E>(
5135                        self,
5136                        value: &str,
5137                    ) -> std::result::Result<GeneratedField, E>
5138                    where
5139                        E: serde::de::Error,
5140                    {
5141                        match value {
5142                            "parent" => Ok(GeneratedField::Parent),
5143                            "securityGroup" | "security_group" => {
5144                                Ok(GeneratedField::SecurityGroup)
5145                            }
5146                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5147                            _ => Ok(GeneratedField::__SkipField__),
5148                        }
5149                    }
5150                }
5151                deserializer.deserialize_identifier(GeneratedVisitor)
5152            }
5153        }
5154        struct GeneratedVisitor;
5155        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5156            type Value = CreateSecurityGroupRequest;
5157            fn expecting(
5158                &self,
5159                formatter: &mut std::fmt::Formatter<'_>,
5160            ) -> std::fmt::Result {
5161                formatter
5162                    .write_str(
5163                        "struct origincloud.network.v1beta1.CreateSecurityGroupRequest",
5164                    )
5165            }
5166            fn visit_map<V>(
5167                self,
5168                mut map_: V,
5169            ) -> std::result::Result<CreateSecurityGroupRequest, V::Error>
5170            where
5171                V: serde::de::MapAccess<'de>,
5172            {
5173                let mut parent__ = None;
5174                let mut security_group__ = None;
5175                let mut request_id__ = None;
5176                while let Some(k) = map_.next_key()? {
5177                    match k {
5178                        GeneratedField::Parent => {
5179                            if parent__.is_some() {
5180                                return Err(serde::de::Error::duplicate_field("parent"));
5181                            }
5182                            parent__ = Some(map_.next_value()?);
5183                        }
5184                        GeneratedField::SecurityGroup => {
5185                            if security_group__.is_some() {
5186                                return Err(
5187                                    serde::de::Error::duplicate_field("securityGroup"),
5188                                );
5189                            }
5190                            security_group__ = map_.next_value()?;
5191                        }
5192                        GeneratedField::RequestId => {
5193                            if request_id__.is_some() {
5194                                return Err(serde::de::Error::duplicate_field("requestId"));
5195                            }
5196                            request_id__ = Some(map_.next_value()?);
5197                        }
5198                        GeneratedField::__SkipField__ => {
5199                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5200                        }
5201                    }
5202                }
5203                Ok(CreateSecurityGroupRequest {
5204                    parent: parent__.unwrap_or_default(),
5205                    security_group: security_group__,
5206                    request_id: request_id__.unwrap_or_default(),
5207                })
5208            }
5209        }
5210        deserializer
5211            .deserialize_struct(
5212                "origincloud.network.v1beta1.CreateSecurityGroupRequest",
5213                FIELDS,
5214                GeneratedVisitor,
5215            )
5216    }
5217}
5218impl serde::Serialize for CreateSecurityGroupRuleRequest {
5219    #[allow(deprecated)]
5220    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5221    where
5222        S: serde::Serializer,
5223    {
5224        use serde::ser::SerializeStruct;
5225        let mut len = 0;
5226        if !self.parent.is_empty() {
5227            len += 1;
5228        }
5229        if self.security_group_rule.is_some() {
5230            len += 1;
5231        }
5232        if !self.request_id.is_empty() {
5233            len += 1;
5234        }
5235        let mut struct_ser = serializer
5236            .serialize_struct(
5237                "origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5238                len,
5239            )?;
5240        if !self.parent.is_empty() {
5241            struct_ser.serialize_field("parent", &self.parent)?;
5242        }
5243        if let Some(v) = self.security_group_rule.as_ref() {
5244            struct_ser.serialize_field("securityGroupRule", v)?;
5245        }
5246        if !self.request_id.is_empty() {
5247            struct_ser.serialize_field("requestId", &self.request_id)?;
5248        }
5249        struct_ser.end()
5250    }
5251}
5252impl<'de> serde::Deserialize<'de> for CreateSecurityGroupRuleRequest {
5253    #[allow(deprecated)]
5254    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5255    where
5256        D: serde::Deserializer<'de>,
5257    {
5258        const FIELDS: &[&str] = &[
5259            "parent",
5260            "security_group_rule",
5261            "securityGroupRule",
5262            "request_id",
5263            "requestId",
5264        ];
5265        #[allow(clippy::enum_variant_names)]
5266        enum GeneratedField {
5267            Parent,
5268            SecurityGroupRule,
5269            RequestId,
5270            __SkipField__,
5271        }
5272        impl<'de> serde::Deserialize<'de> for GeneratedField {
5273            fn deserialize<D>(
5274                deserializer: D,
5275            ) -> std::result::Result<GeneratedField, D::Error>
5276            where
5277                D: serde::Deserializer<'de>,
5278            {
5279                struct GeneratedVisitor;
5280                impl serde::de::Visitor<'_> for GeneratedVisitor {
5281                    type Value = GeneratedField;
5282                    fn expecting(
5283                        &self,
5284                        formatter: &mut std::fmt::Formatter<'_>,
5285                    ) -> std::fmt::Result {
5286                        write!(formatter, "expected one of: {:?}", & FIELDS)
5287                    }
5288                    #[allow(unused_variables)]
5289                    fn visit_str<E>(
5290                        self,
5291                        value: &str,
5292                    ) -> std::result::Result<GeneratedField, E>
5293                    where
5294                        E: serde::de::Error,
5295                    {
5296                        match value {
5297                            "parent" => Ok(GeneratedField::Parent),
5298                            "securityGroupRule" | "security_group_rule" => {
5299                                Ok(GeneratedField::SecurityGroupRule)
5300                            }
5301                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5302                            _ => Ok(GeneratedField::__SkipField__),
5303                        }
5304                    }
5305                }
5306                deserializer.deserialize_identifier(GeneratedVisitor)
5307            }
5308        }
5309        struct GeneratedVisitor;
5310        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5311            type Value = CreateSecurityGroupRuleRequest;
5312            fn expecting(
5313                &self,
5314                formatter: &mut std::fmt::Formatter<'_>,
5315            ) -> std::fmt::Result {
5316                formatter
5317                    .write_str(
5318                        "struct origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5319                    )
5320            }
5321            fn visit_map<V>(
5322                self,
5323                mut map_: V,
5324            ) -> std::result::Result<CreateSecurityGroupRuleRequest, V::Error>
5325            where
5326                V: serde::de::MapAccess<'de>,
5327            {
5328                let mut parent__ = None;
5329                let mut security_group_rule__ = None;
5330                let mut request_id__ = None;
5331                while let Some(k) = map_.next_key()? {
5332                    match k {
5333                        GeneratedField::Parent => {
5334                            if parent__.is_some() {
5335                                return Err(serde::de::Error::duplicate_field("parent"));
5336                            }
5337                            parent__ = Some(map_.next_value()?);
5338                        }
5339                        GeneratedField::SecurityGroupRule => {
5340                            if security_group_rule__.is_some() {
5341                                return Err(
5342                                    serde::de::Error::duplicate_field("securityGroupRule"),
5343                                );
5344                            }
5345                            security_group_rule__ = map_.next_value()?;
5346                        }
5347                        GeneratedField::RequestId => {
5348                            if request_id__.is_some() {
5349                                return Err(serde::de::Error::duplicate_field("requestId"));
5350                            }
5351                            request_id__ = Some(map_.next_value()?);
5352                        }
5353                        GeneratedField::__SkipField__ => {
5354                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5355                        }
5356                    }
5357                }
5358                Ok(CreateSecurityGroupRuleRequest {
5359                    parent: parent__.unwrap_or_default(),
5360                    security_group_rule: security_group_rule__,
5361                    request_id: request_id__.unwrap_or_default(),
5362                })
5363            }
5364        }
5365        deserializer
5366            .deserialize_struct(
5367                "origincloud.network.v1beta1.CreateSecurityGroupRuleRequest",
5368                FIELDS,
5369                GeneratedVisitor,
5370            )
5371    }
5372}
5373impl serde::Serialize for CreateSubnetRequest {
5374    #[allow(deprecated)]
5375    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5376    where
5377        S: serde::Serializer,
5378    {
5379        use serde::ser::SerializeStruct;
5380        let mut len = 0;
5381        if !self.parent.is_empty() {
5382            len += 1;
5383        }
5384        if self.subnet.is_some() {
5385            len += 1;
5386        }
5387        if !self.request_id.is_empty() {
5388            len += 1;
5389        }
5390        let mut struct_ser = serializer
5391            .serialize_struct("origincloud.network.v1beta1.CreateSubnetRequest", len)?;
5392        if !self.parent.is_empty() {
5393            struct_ser.serialize_field("parent", &self.parent)?;
5394        }
5395        if let Some(v) = self.subnet.as_ref() {
5396            struct_ser.serialize_field("subnet", v)?;
5397        }
5398        if !self.request_id.is_empty() {
5399            struct_ser.serialize_field("requestId", &self.request_id)?;
5400        }
5401        struct_ser.end()
5402    }
5403}
5404impl<'de> serde::Deserialize<'de> for CreateSubnetRequest {
5405    #[allow(deprecated)]
5406    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5407    where
5408        D: serde::Deserializer<'de>,
5409    {
5410        const FIELDS: &[&str] = &["parent", "subnet", "request_id", "requestId"];
5411        #[allow(clippy::enum_variant_names)]
5412        enum GeneratedField {
5413            Parent,
5414            Subnet,
5415            RequestId,
5416            __SkipField__,
5417        }
5418        impl<'de> serde::Deserialize<'de> for GeneratedField {
5419            fn deserialize<D>(
5420                deserializer: D,
5421            ) -> std::result::Result<GeneratedField, D::Error>
5422            where
5423                D: serde::Deserializer<'de>,
5424            {
5425                struct GeneratedVisitor;
5426                impl serde::de::Visitor<'_> for GeneratedVisitor {
5427                    type Value = GeneratedField;
5428                    fn expecting(
5429                        &self,
5430                        formatter: &mut std::fmt::Formatter<'_>,
5431                    ) -> std::fmt::Result {
5432                        write!(formatter, "expected one of: {:?}", & FIELDS)
5433                    }
5434                    #[allow(unused_variables)]
5435                    fn visit_str<E>(
5436                        self,
5437                        value: &str,
5438                    ) -> std::result::Result<GeneratedField, E>
5439                    where
5440                        E: serde::de::Error,
5441                    {
5442                        match value {
5443                            "parent" => Ok(GeneratedField::Parent),
5444                            "subnet" => Ok(GeneratedField::Subnet),
5445                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5446                            _ => Ok(GeneratedField::__SkipField__),
5447                        }
5448                    }
5449                }
5450                deserializer.deserialize_identifier(GeneratedVisitor)
5451            }
5452        }
5453        struct GeneratedVisitor;
5454        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5455            type Value = CreateSubnetRequest;
5456            fn expecting(
5457                &self,
5458                formatter: &mut std::fmt::Formatter<'_>,
5459            ) -> std::fmt::Result {
5460                formatter
5461                    .write_str("struct origincloud.network.v1beta1.CreateSubnetRequest")
5462            }
5463            fn visit_map<V>(
5464                self,
5465                mut map_: V,
5466            ) -> std::result::Result<CreateSubnetRequest, V::Error>
5467            where
5468                V: serde::de::MapAccess<'de>,
5469            {
5470                let mut parent__ = None;
5471                let mut subnet__ = None;
5472                let mut request_id__ = None;
5473                while let Some(k) = map_.next_key()? {
5474                    match k {
5475                        GeneratedField::Parent => {
5476                            if parent__.is_some() {
5477                                return Err(serde::de::Error::duplicate_field("parent"));
5478                            }
5479                            parent__ = Some(map_.next_value()?);
5480                        }
5481                        GeneratedField::Subnet => {
5482                            if subnet__.is_some() {
5483                                return Err(serde::de::Error::duplicate_field("subnet"));
5484                            }
5485                            subnet__ = map_.next_value()?;
5486                        }
5487                        GeneratedField::RequestId => {
5488                            if request_id__.is_some() {
5489                                return Err(serde::de::Error::duplicate_field("requestId"));
5490                            }
5491                            request_id__ = Some(map_.next_value()?);
5492                        }
5493                        GeneratedField::__SkipField__ => {
5494                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5495                        }
5496                    }
5497                }
5498                Ok(CreateSubnetRequest {
5499                    parent: parent__.unwrap_or_default(),
5500                    subnet: subnet__,
5501                    request_id: request_id__.unwrap_or_default(),
5502                })
5503            }
5504        }
5505        deserializer
5506            .deserialize_struct(
5507                "origincloud.network.v1beta1.CreateSubnetRequest",
5508                FIELDS,
5509                GeneratedVisitor,
5510            )
5511    }
5512}
5513impl serde::Serialize for CreateVpcRequest {
5514    #[allow(deprecated)]
5515    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5516    where
5517        S: serde::Serializer,
5518    {
5519        use serde::ser::SerializeStruct;
5520        let mut len = 0;
5521        if !self.parent.is_empty() {
5522            len += 1;
5523        }
5524        if self.vpc.is_some() {
5525            len += 1;
5526        }
5527        if !self.request_id.is_empty() {
5528            len += 1;
5529        }
5530        let mut struct_ser = serializer
5531            .serialize_struct("origincloud.network.v1beta1.CreateVpcRequest", len)?;
5532        if !self.parent.is_empty() {
5533            struct_ser.serialize_field("parent", &self.parent)?;
5534        }
5535        if let Some(v) = self.vpc.as_ref() {
5536            struct_ser.serialize_field("vpc", v)?;
5537        }
5538        if !self.request_id.is_empty() {
5539            struct_ser.serialize_field("requestId", &self.request_id)?;
5540        }
5541        struct_ser.end()
5542    }
5543}
5544impl<'de> serde::Deserialize<'de> for CreateVpcRequest {
5545    #[allow(deprecated)]
5546    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5547    where
5548        D: serde::Deserializer<'de>,
5549    {
5550        const FIELDS: &[&str] = &["parent", "vpc", "request_id", "requestId"];
5551        #[allow(clippy::enum_variant_names)]
5552        enum GeneratedField {
5553            Parent,
5554            Vpc,
5555            RequestId,
5556            __SkipField__,
5557        }
5558        impl<'de> serde::Deserialize<'de> for GeneratedField {
5559            fn deserialize<D>(
5560                deserializer: D,
5561            ) -> std::result::Result<GeneratedField, D::Error>
5562            where
5563                D: serde::Deserializer<'de>,
5564            {
5565                struct GeneratedVisitor;
5566                impl serde::de::Visitor<'_> for GeneratedVisitor {
5567                    type Value = GeneratedField;
5568                    fn expecting(
5569                        &self,
5570                        formatter: &mut std::fmt::Formatter<'_>,
5571                    ) -> std::fmt::Result {
5572                        write!(formatter, "expected one of: {:?}", & FIELDS)
5573                    }
5574                    #[allow(unused_variables)]
5575                    fn visit_str<E>(
5576                        self,
5577                        value: &str,
5578                    ) -> std::result::Result<GeneratedField, E>
5579                    where
5580                        E: serde::de::Error,
5581                    {
5582                        match value {
5583                            "parent" => Ok(GeneratedField::Parent),
5584                            "vpc" => Ok(GeneratedField::Vpc),
5585                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5586                            _ => Ok(GeneratedField::__SkipField__),
5587                        }
5588                    }
5589                }
5590                deserializer.deserialize_identifier(GeneratedVisitor)
5591            }
5592        }
5593        struct GeneratedVisitor;
5594        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5595            type Value = CreateVpcRequest;
5596            fn expecting(
5597                &self,
5598                formatter: &mut std::fmt::Formatter<'_>,
5599            ) -> std::fmt::Result {
5600                formatter
5601                    .write_str("struct origincloud.network.v1beta1.CreateVpcRequest")
5602            }
5603            fn visit_map<V>(
5604                self,
5605                mut map_: V,
5606            ) -> std::result::Result<CreateVpcRequest, V::Error>
5607            where
5608                V: serde::de::MapAccess<'de>,
5609            {
5610                let mut parent__ = None;
5611                let mut vpc__ = None;
5612                let mut request_id__ = None;
5613                while let Some(k) = map_.next_key()? {
5614                    match k {
5615                        GeneratedField::Parent => {
5616                            if parent__.is_some() {
5617                                return Err(serde::de::Error::duplicate_field("parent"));
5618                            }
5619                            parent__ = Some(map_.next_value()?);
5620                        }
5621                        GeneratedField::Vpc => {
5622                            if vpc__.is_some() {
5623                                return Err(serde::de::Error::duplicate_field("vpc"));
5624                            }
5625                            vpc__ = map_.next_value()?;
5626                        }
5627                        GeneratedField::RequestId => {
5628                            if request_id__.is_some() {
5629                                return Err(serde::de::Error::duplicate_field("requestId"));
5630                            }
5631                            request_id__ = Some(map_.next_value()?);
5632                        }
5633                        GeneratedField::__SkipField__ => {
5634                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5635                        }
5636                    }
5637                }
5638                Ok(CreateVpcRequest {
5639                    parent: parent__.unwrap_or_default(),
5640                    vpc: vpc__,
5641                    request_id: request_id__.unwrap_or_default(),
5642                })
5643            }
5644        }
5645        deserializer
5646            .deserialize_struct(
5647                "origincloud.network.v1beta1.CreateVpcRequest",
5648                FIELDS,
5649                GeneratedVisitor,
5650            )
5651    }
5652}
5653impl serde::Serialize for DeleteAclAssociationRequest {
5654    #[allow(deprecated)]
5655    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5656    where
5657        S: serde::Serializer,
5658    {
5659        use serde::ser::SerializeStruct;
5660        let mut len = 0;
5661        if !self.name.is_empty() {
5662            len += 1;
5663        }
5664        if !self.request_id.is_empty() {
5665            len += 1;
5666        }
5667        let mut struct_ser = serializer
5668            .serialize_struct(
5669                "origincloud.network.v1beta1.DeleteAclAssociationRequest",
5670                len,
5671            )?;
5672        if !self.name.is_empty() {
5673            struct_ser.serialize_field("name", &self.name)?;
5674        }
5675        if !self.request_id.is_empty() {
5676            struct_ser.serialize_field("requestId", &self.request_id)?;
5677        }
5678        struct_ser.end()
5679    }
5680}
5681impl<'de> serde::Deserialize<'de> for DeleteAclAssociationRequest {
5682    #[allow(deprecated)]
5683    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5684    where
5685        D: serde::Deserializer<'de>,
5686    {
5687        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5688        #[allow(clippy::enum_variant_names)]
5689        enum GeneratedField {
5690            Name,
5691            RequestId,
5692            __SkipField__,
5693        }
5694        impl<'de> serde::Deserialize<'de> for GeneratedField {
5695            fn deserialize<D>(
5696                deserializer: D,
5697            ) -> std::result::Result<GeneratedField, D::Error>
5698            where
5699                D: serde::Deserializer<'de>,
5700            {
5701                struct GeneratedVisitor;
5702                impl serde::de::Visitor<'_> for GeneratedVisitor {
5703                    type Value = GeneratedField;
5704                    fn expecting(
5705                        &self,
5706                        formatter: &mut std::fmt::Formatter<'_>,
5707                    ) -> std::fmt::Result {
5708                        write!(formatter, "expected one of: {:?}", & FIELDS)
5709                    }
5710                    #[allow(unused_variables)]
5711                    fn visit_str<E>(
5712                        self,
5713                        value: &str,
5714                    ) -> std::result::Result<GeneratedField, E>
5715                    where
5716                        E: serde::de::Error,
5717                    {
5718                        match value {
5719                            "name" => Ok(GeneratedField::Name),
5720                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5721                            _ => Ok(GeneratedField::__SkipField__),
5722                        }
5723                    }
5724                }
5725                deserializer.deserialize_identifier(GeneratedVisitor)
5726            }
5727        }
5728        struct GeneratedVisitor;
5729        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5730            type Value = DeleteAclAssociationRequest;
5731            fn expecting(
5732                &self,
5733                formatter: &mut std::fmt::Formatter<'_>,
5734            ) -> std::fmt::Result {
5735                formatter
5736                    .write_str(
5737                        "struct origincloud.network.v1beta1.DeleteAclAssociationRequest",
5738                    )
5739            }
5740            fn visit_map<V>(
5741                self,
5742                mut map_: V,
5743            ) -> std::result::Result<DeleteAclAssociationRequest, V::Error>
5744            where
5745                V: serde::de::MapAccess<'de>,
5746            {
5747                let mut name__ = None;
5748                let mut request_id__ = None;
5749                while let Some(k) = map_.next_key()? {
5750                    match k {
5751                        GeneratedField::Name => {
5752                            if name__.is_some() {
5753                                return Err(serde::de::Error::duplicate_field("name"));
5754                            }
5755                            name__ = Some(map_.next_value()?);
5756                        }
5757                        GeneratedField::RequestId => {
5758                            if request_id__.is_some() {
5759                                return Err(serde::de::Error::duplicate_field("requestId"));
5760                            }
5761                            request_id__ = Some(map_.next_value()?);
5762                        }
5763                        GeneratedField::__SkipField__ => {
5764                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5765                        }
5766                    }
5767                }
5768                Ok(DeleteAclAssociationRequest {
5769                    name: name__.unwrap_or_default(),
5770                    request_id: request_id__.unwrap_or_default(),
5771                })
5772            }
5773        }
5774        deserializer
5775            .deserialize_struct(
5776                "origincloud.network.v1beta1.DeleteAclAssociationRequest",
5777                FIELDS,
5778                GeneratedVisitor,
5779            )
5780    }
5781}
5782impl serde::Serialize for DeleteAclRequest {
5783    #[allow(deprecated)]
5784    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5785    where
5786        S: serde::Serializer,
5787    {
5788        use serde::ser::SerializeStruct;
5789        let mut len = 0;
5790        if !self.name.is_empty() {
5791            len += 1;
5792        }
5793        if !self.request_id.is_empty() {
5794            len += 1;
5795        }
5796        let mut struct_ser = serializer
5797            .serialize_struct("origincloud.network.v1beta1.DeleteAclRequest", len)?;
5798        if !self.name.is_empty() {
5799            struct_ser.serialize_field("name", &self.name)?;
5800        }
5801        if !self.request_id.is_empty() {
5802            struct_ser.serialize_field("requestId", &self.request_id)?;
5803        }
5804        struct_ser.end()
5805    }
5806}
5807impl<'de> serde::Deserialize<'de> for DeleteAclRequest {
5808    #[allow(deprecated)]
5809    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5810    where
5811        D: serde::Deserializer<'de>,
5812    {
5813        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5814        #[allow(clippy::enum_variant_names)]
5815        enum GeneratedField {
5816            Name,
5817            RequestId,
5818            __SkipField__,
5819        }
5820        impl<'de> serde::Deserialize<'de> for GeneratedField {
5821            fn deserialize<D>(
5822                deserializer: D,
5823            ) -> std::result::Result<GeneratedField, D::Error>
5824            where
5825                D: serde::Deserializer<'de>,
5826            {
5827                struct GeneratedVisitor;
5828                impl serde::de::Visitor<'_> for GeneratedVisitor {
5829                    type Value = GeneratedField;
5830                    fn expecting(
5831                        &self,
5832                        formatter: &mut std::fmt::Formatter<'_>,
5833                    ) -> std::fmt::Result {
5834                        write!(formatter, "expected one of: {:?}", & FIELDS)
5835                    }
5836                    #[allow(unused_variables)]
5837                    fn visit_str<E>(
5838                        self,
5839                        value: &str,
5840                    ) -> std::result::Result<GeneratedField, E>
5841                    where
5842                        E: serde::de::Error,
5843                    {
5844                        match value {
5845                            "name" => Ok(GeneratedField::Name),
5846                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5847                            _ => Ok(GeneratedField::__SkipField__),
5848                        }
5849                    }
5850                }
5851                deserializer.deserialize_identifier(GeneratedVisitor)
5852            }
5853        }
5854        struct GeneratedVisitor;
5855        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5856            type Value = DeleteAclRequest;
5857            fn expecting(
5858                &self,
5859                formatter: &mut std::fmt::Formatter<'_>,
5860            ) -> std::fmt::Result {
5861                formatter
5862                    .write_str("struct origincloud.network.v1beta1.DeleteAclRequest")
5863            }
5864            fn visit_map<V>(
5865                self,
5866                mut map_: V,
5867            ) -> std::result::Result<DeleteAclRequest, V::Error>
5868            where
5869                V: serde::de::MapAccess<'de>,
5870            {
5871                let mut name__ = None;
5872                let mut request_id__ = None;
5873                while let Some(k) = map_.next_key()? {
5874                    match k {
5875                        GeneratedField::Name => {
5876                            if name__.is_some() {
5877                                return Err(serde::de::Error::duplicate_field("name"));
5878                            }
5879                            name__ = Some(map_.next_value()?);
5880                        }
5881                        GeneratedField::RequestId => {
5882                            if request_id__.is_some() {
5883                                return Err(serde::de::Error::duplicate_field("requestId"));
5884                            }
5885                            request_id__ = Some(map_.next_value()?);
5886                        }
5887                        GeneratedField::__SkipField__ => {
5888                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
5889                        }
5890                    }
5891                }
5892                Ok(DeleteAclRequest {
5893                    name: name__.unwrap_or_default(),
5894                    request_id: request_id__.unwrap_or_default(),
5895                })
5896            }
5897        }
5898        deserializer
5899            .deserialize_struct(
5900                "origincloud.network.v1beta1.DeleteAclRequest",
5901                FIELDS,
5902                GeneratedVisitor,
5903            )
5904    }
5905}
5906impl serde::Serialize for DeleteAclRuleRequest {
5907    #[allow(deprecated)]
5908    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
5909    where
5910        S: serde::Serializer,
5911    {
5912        use serde::ser::SerializeStruct;
5913        let mut len = 0;
5914        if !self.name.is_empty() {
5915            len += 1;
5916        }
5917        if !self.request_id.is_empty() {
5918            len += 1;
5919        }
5920        let mut struct_ser = serializer
5921            .serialize_struct("origincloud.network.v1beta1.DeleteAclRuleRequest", len)?;
5922        if !self.name.is_empty() {
5923            struct_ser.serialize_field("name", &self.name)?;
5924        }
5925        if !self.request_id.is_empty() {
5926            struct_ser.serialize_field("requestId", &self.request_id)?;
5927        }
5928        struct_ser.end()
5929    }
5930}
5931impl<'de> serde::Deserialize<'de> for DeleteAclRuleRequest {
5932    #[allow(deprecated)]
5933    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
5934    where
5935        D: serde::Deserializer<'de>,
5936    {
5937        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
5938        #[allow(clippy::enum_variant_names)]
5939        enum GeneratedField {
5940            Name,
5941            RequestId,
5942            __SkipField__,
5943        }
5944        impl<'de> serde::Deserialize<'de> for GeneratedField {
5945            fn deserialize<D>(
5946                deserializer: D,
5947            ) -> std::result::Result<GeneratedField, D::Error>
5948            where
5949                D: serde::Deserializer<'de>,
5950            {
5951                struct GeneratedVisitor;
5952                impl serde::de::Visitor<'_> for GeneratedVisitor {
5953                    type Value = GeneratedField;
5954                    fn expecting(
5955                        &self,
5956                        formatter: &mut std::fmt::Formatter<'_>,
5957                    ) -> std::fmt::Result {
5958                        write!(formatter, "expected one of: {:?}", & FIELDS)
5959                    }
5960                    #[allow(unused_variables)]
5961                    fn visit_str<E>(
5962                        self,
5963                        value: &str,
5964                    ) -> std::result::Result<GeneratedField, E>
5965                    where
5966                        E: serde::de::Error,
5967                    {
5968                        match value {
5969                            "name" => Ok(GeneratedField::Name),
5970                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
5971                            _ => Ok(GeneratedField::__SkipField__),
5972                        }
5973                    }
5974                }
5975                deserializer.deserialize_identifier(GeneratedVisitor)
5976            }
5977        }
5978        struct GeneratedVisitor;
5979        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
5980            type Value = DeleteAclRuleRequest;
5981            fn expecting(
5982                &self,
5983                formatter: &mut std::fmt::Formatter<'_>,
5984            ) -> std::fmt::Result {
5985                formatter
5986                    .write_str("struct origincloud.network.v1beta1.DeleteAclRuleRequest")
5987            }
5988            fn visit_map<V>(
5989                self,
5990                mut map_: V,
5991            ) -> std::result::Result<DeleteAclRuleRequest, V::Error>
5992            where
5993                V: serde::de::MapAccess<'de>,
5994            {
5995                let mut name__ = None;
5996                let mut request_id__ = None;
5997                while let Some(k) = map_.next_key()? {
5998                    match k {
5999                        GeneratedField::Name => {
6000                            if name__.is_some() {
6001                                return Err(serde::de::Error::duplicate_field("name"));
6002                            }
6003                            name__ = Some(map_.next_value()?);
6004                        }
6005                        GeneratedField::RequestId => {
6006                            if request_id__.is_some() {
6007                                return Err(serde::de::Error::duplicate_field("requestId"));
6008                            }
6009                            request_id__ = Some(map_.next_value()?);
6010                        }
6011                        GeneratedField::__SkipField__ => {
6012                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6013                        }
6014                    }
6015                }
6016                Ok(DeleteAclRuleRequest {
6017                    name: name__.unwrap_or_default(),
6018                    request_id: request_id__.unwrap_or_default(),
6019                })
6020            }
6021        }
6022        deserializer
6023            .deserialize_struct(
6024                "origincloud.network.v1beta1.DeleteAclRuleRequest",
6025                FIELDS,
6026                GeneratedVisitor,
6027            )
6028    }
6029}
6030impl serde::Serialize for DeleteDnsPolicyAssociationRequest {
6031    #[allow(deprecated)]
6032    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6033    where
6034        S: serde::Serializer,
6035    {
6036        use serde::ser::SerializeStruct;
6037        let mut len = 0;
6038        if !self.name.is_empty() {
6039            len += 1;
6040        }
6041        if !self.request_id.is_empty() {
6042            len += 1;
6043        }
6044        let mut struct_ser = serializer
6045            .serialize_struct(
6046                "origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6047                len,
6048            )?;
6049        if !self.name.is_empty() {
6050            struct_ser.serialize_field("name", &self.name)?;
6051        }
6052        if !self.request_id.is_empty() {
6053            struct_ser.serialize_field("requestId", &self.request_id)?;
6054        }
6055        struct_ser.end()
6056    }
6057}
6058impl<'de> serde::Deserialize<'de> for DeleteDnsPolicyAssociationRequest {
6059    #[allow(deprecated)]
6060    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6061    where
6062        D: serde::Deserializer<'de>,
6063    {
6064        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6065        #[allow(clippy::enum_variant_names)]
6066        enum GeneratedField {
6067            Name,
6068            RequestId,
6069            __SkipField__,
6070        }
6071        impl<'de> serde::Deserialize<'de> for GeneratedField {
6072            fn deserialize<D>(
6073                deserializer: D,
6074            ) -> std::result::Result<GeneratedField, D::Error>
6075            where
6076                D: serde::Deserializer<'de>,
6077            {
6078                struct GeneratedVisitor;
6079                impl serde::de::Visitor<'_> for GeneratedVisitor {
6080                    type Value = GeneratedField;
6081                    fn expecting(
6082                        &self,
6083                        formatter: &mut std::fmt::Formatter<'_>,
6084                    ) -> std::fmt::Result {
6085                        write!(formatter, "expected one of: {:?}", & FIELDS)
6086                    }
6087                    #[allow(unused_variables)]
6088                    fn visit_str<E>(
6089                        self,
6090                        value: &str,
6091                    ) -> std::result::Result<GeneratedField, E>
6092                    where
6093                        E: serde::de::Error,
6094                    {
6095                        match value {
6096                            "name" => Ok(GeneratedField::Name),
6097                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6098                            _ => Ok(GeneratedField::__SkipField__),
6099                        }
6100                    }
6101                }
6102                deserializer.deserialize_identifier(GeneratedVisitor)
6103            }
6104        }
6105        struct GeneratedVisitor;
6106        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6107            type Value = DeleteDnsPolicyAssociationRequest;
6108            fn expecting(
6109                &self,
6110                formatter: &mut std::fmt::Formatter<'_>,
6111            ) -> std::fmt::Result {
6112                formatter
6113                    .write_str(
6114                        "struct origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6115                    )
6116            }
6117            fn visit_map<V>(
6118                self,
6119                mut map_: V,
6120            ) -> std::result::Result<DeleteDnsPolicyAssociationRequest, V::Error>
6121            where
6122                V: serde::de::MapAccess<'de>,
6123            {
6124                let mut name__ = None;
6125                let mut request_id__ = None;
6126                while let Some(k) = map_.next_key()? {
6127                    match k {
6128                        GeneratedField::Name => {
6129                            if name__.is_some() {
6130                                return Err(serde::de::Error::duplicate_field("name"));
6131                            }
6132                            name__ = Some(map_.next_value()?);
6133                        }
6134                        GeneratedField::RequestId => {
6135                            if request_id__.is_some() {
6136                                return Err(serde::de::Error::duplicate_field("requestId"));
6137                            }
6138                            request_id__ = Some(map_.next_value()?);
6139                        }
6140                        GeneratedField::__SkipField__ => {
6141                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6142                        }
6143                    }
6144                }
6145                Ok(DeleteDnsPolicyAssociationRequest {
6146                    name: name__.unwrap_or_default(),
6147                    request_id: request_id__.unwrap_or_default(),
6148                })
6149            }
6150        }
6151        deserializer
6152            .deserialize_struct(
6153                "origincloud.network.v1beta1.DeleteDnsPolicyAssociationRequest",
6154                FIELDS,
6155                GeneratedVisitor,
6156            )
6157    }
6158}
6159impl serde::Serialize for DeleteDnsPolicyRequest {
6160    #[allow(deprecated)]
6161    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6162    where
6163        S: serde::Serializer,
6164    {
6165        use serde::ser::SerializeStruct;
6166        let mut len = 0;
6167        if !self.name.is_empty() {
6168            len += 1;
6169        }
6170        if !self.request_id.is_empty() {
6171            len += 1;
6172        }
6173        let mut struct_ser = serializer
6174            .serialize_struct(
6175                "origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6176                len,
6177            )?;
6178        if !self.name.is_empty() {
6179            struct_ser.serialize_field("name", &self.name)?;
6180        }
6181        if !self.request_id.is_empty() {
6182            struct_ser.serialize_field("requestId", &self.request_id)?;
6183        }
6184        struct_ser.end()
6185    }
6186}
6187impl<'de> serde::Deserialize<'de> for DeleteDnsPolicyRequest {
6188    #[allow(deprecated)]
6189    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6190    where
6191        D: serde::Deserializer<'de>,
6192    {
6193        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6194        #[allow(clippy::enum_variant_names)]
6195        enum GeneratedField {
6196            Name,
6197            RequestId,
6198            __SkipField__,
6199        }
6200        impl<'de> serde::Deserialize<'de> for GeneratedField {
6201            fn deserialize<D>(
6202                deserializer: D,
6203            ) -> std::result::Result<GeneratedField, D::Error>
6204            where
6205                D: serde::Deserializer<'de>,
6206            {
6207                struct GeneratedVisitor;
6208                impl serde::de::Visitor<'_> for GeneratedVisitor {
6209                    type Value = GeneratedField;
6210                    fn expecting(
6211                        &self,
6212                        formatter: &mut std::fmt::Formatter<'_>,
6213                    ) -> std::fmt::Result {
6214                        write!(formatter, "expected one of: {:?}", & FIELDS)
6215                    }
6216                    #[allow(unused_variables)]
6217                    fn visit_str<E>(
6218                        self,
6219                        value: &str,
6220                    ) -> std::result::Result<GeneratedField, E>
6221                    where
6222                        E: serde::de::Error,
6223                    {
6224                        match value {
6225                            "name" => Ok(GeneratedField::Name),
6226                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6227                            _ => Ok(GeneratedField::__SkipField__),
6228                        }
6229                    }
6230                }
6231                deserializer.deserialize_identifier(GeneratedVisitor)
6232            }
6233        }
6234        struct GeneratedVisitor;
6235        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6236            type Value = DeleteDnsPolicyRequest;
6237            fn expecting(
6238                &self,
6239                formatter: &mut std::fmt::Formatter<'_>,
6240            ) -> std::fmt::Result {
6241                formatter
6242                    .write_str(
6243                        "struct origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6244                    )
6245            }
6246            fn visit_map<V>(
6247                self,
6248                mut map_: V,
6249            ) -> std::result::Result<DeleteDnsPolicyRequest, V::Error>
6250            where
6251                V: serde::de::MapAccess<'de>,
6252            {
6253                let mut name__ = None;
6254                let mut request_id__ = None;
6255                while let Some(k) = map_.next_key()? {
6256                    match k {
6257                        GeneratedField::Name => {
6258                            if name__.is_some() {
6259                                return Err(serde::de::Error::duplicate_field("name"));
6260                            }
6261                            name__ = Some(map_.next_value()?);
6262                        }
6263                        GeneratedField::RequestId => {
6264                            if request_id__.is_some() {
6265                                return Err(serde::de::Error::duplicate_field("requestId"));
6266                            }
6267                            request_id__ = Some(map_.next_value()?);
6268                        }
6269                        GeneratedField::__SkipField__ => {
6270                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6271                        }
6272                    }
6273                }
6274                Ok(DeleteDnsPolicyRequest {
6275                    name: name__.unwrap_or_default(),
6276                    request_id: request_id__.unwrap_or_default(),
6277                })
6278            }
6279        }
6280        deserializer
6281            .deserialize_struct(
6282                "origincloud.network.v1beta1.DeleteDnsPolicyRequest",
6283                FIELDS,
6284                GeneratedVisitor,
6285            )
6286    }
6287}
6288impl serde::Serialize for DeleteFloatingIpAssociationRequest {
6289    #[allow(deprecated)]
6290    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6291    where
6292        S: serde::Serializer,
6293    {
6294        use serde::ser::SerializeStruct;
6295        let mut len = 0;
6296        if !self.name.is_empty() {
6297            len += 1;
6298        }
6299        if !self.request_id.is_empty() {
6300            len += 1;
6301        }
6302        let mut struct_ser = serializer
6303            .serialize_struct(
6304                "origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6305                len,
6306            )?;
6307        if !self.name.is_empty() {
6308            struct_ser.serialize_field("name", &self.name)?;
6309        }
6310        if !self.request_id.is_empty() {
6311            struct_ser.serialize_field("requestId", &self.request_id)?;
6312        }
6313        struct_ser.end()
6314    }
6315}
6316impl<'de> serde::Deserialize<'de> for DeleteFloatingIpAssociationRequest {
6317    #[allow(deprecated)]
6318    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6319    where
6320        D: serde::Deserializer<'de>,
6321    {
6322        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6323        #[allow(clippy::enum_variant_names)]
6324        enum GeneratedField {
6325            Name,
6326            RequestId,
6327            __SkipField__,
6328        }
6329        impl<'de> serde::Deserialize<'de> for GeneratedField {
6330            fn deserialize<D>(
6331                deserializer: D,
6332            ) -> std::result::Result<GeneratedField, D::Error>
6333            where
6334                D: serde::Deserializer<'de>,
6335            {
6336                struct GeneratedVisitor;
6337                impl serde::de::Visitor<'_> for GeneratedVisitor {
6338                    type Value = GeneratedField;
6339                    fn expecting(
6340                        &self,
6341                        formatter: &mut std::fmt::Formatter<'_>,
6342                    ) -> std::fmt::Result {
6343                        write!(formatter, "expected one of: {:?}", & FIELDS)
6344                    }
6345                    #[allow(unused_variables)]
6346                    fn visit_str<E>(
6347                        self,
6348                        value: &str,
6349                    ) -> std::result::Result<GeneratedField, E>
6350                    where
6351                        E: serde::de::Error,
6352                    {
6353                        match value {
6354                            "name" => Ok(GeneratedField::Name),
6355                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6356                            _ => Ok(GeneratedField::__SkipField__),
6357                        }
6358                    }
6359                }
6360                deserializer.deserialize_identifier(GeneratedVisitor)
6361            }
6362        }
6363        struct GeneratedVisitor;
6364        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6365            type Value = DeleteFloatingIpAssociationRequest;
6366            fn expecting(
6367                &self,
6368                formatter: &mut std::fmt::Formatter<'_>,
6369            ) -> std::fmt::Result {
6370                formatter
6371                    .write_str(
6372                        "struct origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6373                    )
6374            }
6375            fn visit_map<V>(
6376                self,
6377                mut map_: V,
6378            ) -> std::result::Result<DeleteFloatingIpAssociationRequest, V::Error>
6379            where
6380                V: serde::de::MapAccess<'de>,
6381            {
6382                let mut name__ = None;
6383                let mut request_id__ = None;
6384                while let Some(k) = map_.next_key()? {
6385                    match k {
6386                        GeneratedField::Name => {
6387                            if name__.is_some() {
6388                                return Err(serde::de::Error::duplicate_field("name"));
6389                            }
6390                            name__ = Some(map_.next_value()?);
6391                        }
6392                        GeneratedField::RequestId => {
6393                            if request_id__.is_some() {
6394                                return Err(serde::de::Error::duplicate_field("requestId"));
6395                            }
6396                            request_id__ = Some(map_.next_value()?);
6397                        }
6398                        GeneratedField::__SkipField__ => {
6399                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6400                        }
6401                    }
6402                }
6403                Ok(DeleteFloatingIpAssociationRequest {
6404                    name: name__.unwrap_or_default(),
6405                    request_id: request_id__.unwrap_or_default(),
6406                })
6407            }
6408        }
6409        deserializer
6410            .deserialize_struct(
6411                "origincloud.network.v1beta1.DeleteFloatingIpAssociationRequest",
6412                FIELDS,
6413                GeneratedVisitor,
6414            )
6415    }
6416}
6417impl serde::Serialize for DeleteFloatingIpRequest {
6418    #[allow(deprecated)]
6419    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6420    where
6421        S: serde::Serializer,
6422    {
6423        use serde::ser::SerializeStruct;
6424        let mut len = 0;
6425        if !self.name.is_empty() {
6426            len += 1;
6427        }
6428        if !self.request_id.is_empty() {
6429            len += 1;
6430        }
6431        let mut struct_ser = serializer
6432            .serialize_struct(
6433                "origincloud.network.v1beta1.DeleteFloatingIpRequest",
6434                len,
6435            )?;
6436        if !self.name.is_empty() {
6437            struct_ser.serialize_field("name", &self.name)?;
6438        }
6439        if !self.request_id.is_empty() {
6440            struct_ser.serialize_field("requestId", &self.request_id)?;
6441        }
6442        struct_ser.end()
6443    }
6444}
6445impl<'de> serde::Deserialize<'de> for DeleteFloatingIpRequest {
6446    #[allow(deprecated)]
6447    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6448    where
6449        D: serde::Deserializer<'de>,
6450    {
6451        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6452        #[allow(clippy::enum_variant_names)]
6453        enum GeneratedField {
6454            Name,
6455            RequestId,
6456            __SkipField__,
6457        }
6458        impl<'de> serde::Deserialize<'de> for GeneratedField {
6459            fn deserialize<D>(
6460                deserializer: D,
6461            ) -> std::result::Result<GeneratedField, D::Error>
6462            where
6463                D: serde::Deserializer<'de>,
6464            {
6465                struct GeneratedVisitor;
6466                impl serde::de::Visitor<'_> for GeneratedVisitor {
6467                    type Value = GeneratedField;
6468                    fn expecting(
6469                        &self,
6470                        formatter: &mut std::fmt::Formatter<'_>,
6471                    ) -> std::fmt::Result {
6472                        write!(formatter, "expected one of: {:?}", & FIELDS)
6473                    }
6474                    #[allow(unused_variables)]
6475                    fn visit_str<E>(
6476                        self,
6477                        value: &str,
6478                    ) -> std::result::Result<GeneratedField, E>
6479                    where
6480                        E: serde::de::Error,
6481                    {
6482                        match value {
6483                            "name" => Ok(GeneratedField::Name),
6484                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6485                            _ => Ok(GeneratedField::__SkipField__),
6486                        }
6487                    }
6488                }
6489                deserializer.deserialize_identifier(GeneratedVisitor)
6490            }
6491        }
6492        struct GeneratedVisitor;
6493        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6494            type Value = DeleteFloatingIpRequest;
6495            fn expecting(
6496                &self,
6497                formatter: &mut std::fmt::Formatter<'_>,
6498            ) -> std::fmt::Result {
6499                formatter
6500                    .write_str(
6501                        "struct origincloud.network.v1beta1.DeleteFloatingIpRequest",
6502                    )
6503            }
6504            fn visit_map<V>(
6505                self,
6506                mut map_: V,
6507            ) -> std::result::Result<DeleteFloatingIpRequest, V::Error>
6508            where
6509                V: serde::de::MapAccess<'de>,
6510            {
6511                let mut name__ = None;
6512                let mut request_id__ = None;
6513                while let Some(k) = map_.next_key()? {
6514                    match k {
6515                        GeneratedField::Name => {
6516                            if name__.is_some() {
6517                                return Err(serde::de::Error::duplicate_field("name"));
6518                            }
6519                            name__ = Some(map_.next_value()?);
6520                        }
6521                        GeneratedField::RequestId => {
6522                            if request_id__.is_some() {
6523                                return Err(serde::de::Error::duplicate_field("requestId"));
6524                            }
6525                            request_id__ = Some(map_.next_value()?);
6526                        }
6527                        GeneratedField::__SkipField__ => {
6528                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6529                        }
6530                    }
6531                }
6532                Ok(DeleteFloatingIpRequest {
6533                    name: name__.unwrap_or_default(),
6534                    request_id: request_id__.unwrap_or_default(),
6535                })
6536            }
6537        }
6538        deserializer
6539            .deserialize_struct(
6540                "origincloud.network.v1beta1.DeleteFloatingIpRequest",
6541                FIELDS,
6542                GeneratedVisitor,
6543            )
6544    }
6545}
6546impl serde::Serialize for DeleteInternetGatewayRequest {
6547    #[allow(deprecated)]
6548    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6549    where
6550        S: serde::Serializer,
6551    {
6552        use serde::ser::SerializeStruct;
6553        let mut len = 0;
6554        if !self.name.is_empty() {
6555            len += 1;
6556        }
6557        if !self.request_id.is_empty() {
6558            len += 1;
6559        }
6560        let mut struct_ser = serializer
6561            .serialize_struct(
6562                "origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6563                len,
6564            )?;
6565        if !self.name.is_empty() {
6566            struct_ser.serialize_field("name", &self.name)?;
6567        }
6568        if !self.request_id.is_empty() {
6569            struct_ser.serialize_field("requestId", &self.request_id)?;
6570        }
6571        struct_ser.end()
6572    }
6573}
6574impl<'de> serde::Deserialize<'de> for DeleteInternetGatewayRequest {
6575    #[allow(deprecated)]
6576    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6577    where
6578        D: serde::Deserializer<'de>,
6579    {
6580        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6581        #[allow(clippy::enum_variant_names)]
6582        enum GeneratedField {
6583            Name,
6584            RequestId,
6585            __SkipField__,
6586        }
6587        impl<'de> serde::Deserialize<'de> for GeneratedField {
6588            fn deserialize<D>(
6589                deserializer: D,
6590            ) -> std::result::Result<GeneratedField, D::Error>
6591            where
6592                D: serde::Deserializer<'de>,
6593            {
6594                struct GeneratedVisitor;
6595                impl serde::de::Visitor<'_> for GeneratedVisitor {
6596                    type Value = GeneratedField;
6597                    fn expecting(
6598                        &self,
6599                        formatter: &mut std::fmt::Formatter<'_>,
6600                    ) -> std::fmt::Result {
6601                        write!(formatter, "expected one of: {:?}", & FIELDS)
6602                    }
6603                    #[allow(unused_variables)]
6604                    fn visit_str<E>(
6605                        self,
6606                        value: &str,
6607                    ) -> std::result::Result<GeneratedField, E>
6608                    where
6609                        E: serde::de::Error,
6610                    {
6611                        match value {
6612                            "name" => Ok(GeneratedField::Name),
6613                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6614                            _ => Ok(GeneratedField::__SkipField__),
6615                        }
6616                    }
6617                }
6618                deserializer.deserialize_identifier(GeneratedVisitor)
6619            }
6620        }
6621        struct GeneratedVisitor;
6622        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6623            type Value = DeleteInternetGatewayRequest;
6624            fn expecting(
6625                &self,
6626                formatter: &mut std::fmt::Formatter<'_>,
6627            ) -> std::fmt::Result {
6628                formatter
6629                    .write_str(
6630                        "struct origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6631                    )
6632            }
6633            fn visit_map<V>(
6634                self,
6635                mut map_: V,
6636            ) -> std::result::Result<DeleteInternetGatewayRequest, V::Error>
6637            where
6638                V: serde::de::MapAccess<'de>,
6639            {
6640                let mut name__ = None;
6641                let mut request_id__ = None;
6642                while let Some(k) = map_.next_key()? {
6643                    match k {
6644                        GeneratedField::Name => {
6645                            if name__.is_some() {
6646                                return Err(serde::de::Error::duplicate_field("name"));
6647                            }
6648                            name__ = Some(map_.next_value()?);
6649                        }
6650                        GeneratedField::RequestId => {
6651                            if request_id__.is_some() {
6652                                return Err(serde::de::Error::duplicate_field("requestId"));
6653                            }
6654                            request_id__ = Some(map_.next_value()?);
6655                        }
6656                        GeneratedField::__SkipField__ => {
6657                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6658                        }
6659                    }
6660                }
6661                Ok(DeleteInternetGatewayRequest {
6662                    name: name__.unwrap_or_default(),
6663                    request_id: request_id__.unwrap_or_default(),
6664                })
6665            }
6666        }
6667        deserializer
6668            .deserialize_struct(
6669                "origincloud.network.v1beta1.DeleteInternetGatewayRequest",
6670                FIELDS,
6671                GeneratedVisitor,
6672            )
6673    }
6674}
6675impl serde::Serialize for DeleteNatGatewayRequest {
6676    #[allow(deprecated)]
6677    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6678    where
6679        S: serde::Serializer,
6680    {
6681        use serde::ser::SerializeStruct;
6682        let mut len = 0;
6683        if !self.name.is_empty() {
6684            len += 1;
6685        }
6686        if !self.request_id.is_empty() {
6687            len += 1;
6688        }
6689        let mut struct_ser = serializer
6690            .serialize_struct(
6691                "origincloud.network.v1beta1.DeleteNatGatewayRequest",
6692                len,
6693            )?;
6694        if !self.name.is_empty() {
6695            struct_ser.serialize_field("name", &self.name)?;
6696        }
6697        if !self.request_id.is_empty() {
6698            struct_ser.serialize_field("requestId", &self.request_id)?;
6699        }
6700        struct_ser.end()
6701    }
6702}
6703impl<'de> serde::Deserialize<'de> for DeleteNatGatewayRequest {
6704    #[allow(deprecated)]
6705    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6706    where
6707        D: serde::Deserializer<'de>,
6708    {
6709        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6710        #[allow(clippy::enum_variant_names)]
6711        enum GeneratedField {
6712            Name,
6713            RequestId,
6714            __SkipField__,
6715        }
6716        impl<'de> serde::Deserialize<'de> for GeneratedField {
6717            fn deserialize<D>(
6718                deserializer: D,
6719            ) -> std::result::Result<GeneratedField, D::Error>
6720            where
6721                D: serde::Deserializer<'de>,
6722            {
6723                struct GeneratedVisitor;
6724                impl serde::de::Visitor<'_> for GeneratedVisitor {
6725                    type Value = GeneratedField;
6726                    fn expecting(
6727                        &self,
6728                        formatter: &mut std::fmt::Formatter<'_>,
6729                    ) -> std::fmt::Result {
6730                        write!(formatter, "expected one of: {:?}", & FIELDS)
6731                    }
6732                    #[allow(unused_variables)]
6733                    fn visit_str<E>(
6734                        self,
6735                        value: &str,
6736                    ) -> std::result::Result<GeneratedField, E>
6737                    where
6738                        E: serde::de::Error,
6739                    {
6740                        match value {
6741                            "name" => Ok(GeneratedField::Name),
6742                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6743                            _ => Ok(GeneratedField::__SkipField__),
6744                        }
6745                    }
6746                }
6747                deserializer.deserialize_identifier(GeneratedVisitor)
6748            }
6749        }
6750        struct GeneratedVisitor;
6751        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6752            type Value = DeleteNatGatewayRequest;
6753            fn expecting(
6754                &self,
6755                formatter: &mut std::fmt::Formatter<'_>,
6756            ) -> std::fmt::Result {
6757                formatter
6758                    .write_str(
6759                        "struct origincloud.network.v1beta1.DeleteNatGatewayRequest",
6760                    )
6761            }
6762            fn visit_map<V>(
6763                self,
6764                mut map_: V,
6765            ) -> std::result::Result<DeleteNatGatewayRequest, V::Error>
6766            where
6767                V: serde::de::MapAccess<'de>,
6768            {
6769                let mut name__ = None;
6770                let mut request_id__ = None;
6771                while let Some(k) = map_.next_key()? {
6772                    match k {
6773                        GeneratedField::Name => {
6774                            if name__.is_some() {
6775                                return Err(serde::de::Error::duplicate_field("name"));
6776                            }
6777                            name__ = Some(map_.next_value()?);
6778                        }
6779                        GeneratedField::RequestId => {
6780                            if request_id__.is_some() {
6781                                return Err(serde::de::Error::duplicate_field("requestId"));
6782                            }
6783                            request_id__ = Some(map_.next_value()?);
6784                        }
6785                        GeneratedField::__SkipField__ => {
6786                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6787                        }
6788                    }
6789                }
6790                Ok(DeleteNatGatewayRequest {
6791                    name: name__.unwrap_or_default(),
6792                    request_id: request_id__.unwrap_or_default(),
6793                })
6794            }
6795        }
6796        deserializer
6797            .deserialize_struct(
6798                "origincloud.network.v1beta1.DeleteNatGatewayRequest",
6799                FIELDS,
6800                GeneratedVisitor,
6801            )
6802    }
6803}
6804impl serde::Serialize for DeleteNetworkInterfaceRequest {
6805    #[allow(deprecated)]
6806    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6807    where
6808        S: serde::Serializer,
6809    {
6810        use serde::ser::SerializeStruct;
6811        let mut len = 0;
6812        if !self.name.is_empty() {
6813            len += 1;
6814        }
6815        if !self.request_id.is_empty() {
6816            len += 1;
6817        }
6818        let mut struct_ser = serializer
6819            .serialize_struct(
6820                "origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6821                len,
6822            )?;
6823        if !self.name.is_empty() {
6824            struct_ser.serialize_field("name", &self.name)?;
6825        }
6826        if !self.request_id.is_empty() {
6827            struct_ser.serialize_field("requestId", &self.request_id)?;
6828        }
6829        struct_ser.end()
6830    }
6831}
6832impl<'de> serde::Deserialize<'de> for DeleteNetworkInterfaceRequest {
6833    #[allow(deprecated)]
6834    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6835    where
6836        D: serde::Deserializer<'de>,
6837    {
6838        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6839        #[allow(clippy::enum_variant_names)]
6840        enum GeneratedField {
6841            Name,
6842            RequestId,
6843            __SkipField__,
6844        }
6845        impl<'de> serde::Deserialize<'de> for GeneratedField {
6846            fn deserialize<D>(
6847                deserializer: D,
6848            ) -> std::result::Result<GeneratedField, D::Error>
6849            where
6850                D: serde::Deserializer<'de>,
6851            {
6852                struct GeneratedVisitor;
6853                impl serde::de::Visitor<'_> for GeneratedVisitor {
6854                    type Value = GeneratedField;
6855                    fn expecting(
6856                        &self,
6857                        formatter: &mut std::fmt::Formatter<'_>,
6858                    ) -> std::fmt::Result {
6859                        write!(formatter, "expected one of: {:?}", & FIELDS)
6860                    }
6861                    #[allow(unused_variables)]
6862                    fn visit_str<E>(
6863                        self,
6864                        value: &str,
6865                    ) -> std::result::Result<GeneratedField, E>
6866                    where
6867                        E: serde::de::Error,
6868                    {
6869                        match value {
6870                            "name" => Ok(GeneratedField::Name),
6871                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6872                            _ => Ok(GeneratedField::__SkipField__),
6873                        }
6874                    }
6875                }
6876                deserializer.deserialize_identifier(GeneratedVisitor)
6877            }
6878        }
6879        struct GeneratedVisitor;
6880        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
6881            type Value = DeleteNetworkInterfaceRequest;
6882            fn expecting(
6883                &self,
6884                formatter: &mut std::fmt::Formatter<'_>,
6885            ) -> std::fmt::Result {
6886                formatter
6887                    .write_str(
6888                        "struct origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6889                    )
6890            }
6891            fn visit_map<V>(
6892                self,
6893                mut map_: V,
6894            ) -> std::result::Result<DeleteNetworkInterfaceRequest, V::Error>
6895            where
6896                V: serde::de::MapAccess<'de>,
6897            {
6898                let mut name__ = None;
6899                let mut request_id__ = None;
6900                while let Some(k) = map_.next_key()? {
6901                    match k {
6902                        GeneratedField::Name => {
6903                            if name__.is_some() {
6904                                return Err(serde::de::Error::duplicate_field("name"));
6905                            }
6906                            name__ = Some(map_.next_value()?);
6907                        }
6908                        GeneratedField::RequestId => {
6909                            if request_id__.is_some() {
6910                                return Err(serde::de::Error::duplicate_field("requestId"));
6911                            }
6912                            request_id__ = Some(map_.next_value()?);
6913                        }
6914                        GeneratedField::__SkipField__ => {
6915                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
6916                        }
6917                    }
6918                }
6919                Ok(DeleteNetworkInterfaceRequest {
6920                    name: name__.unwrap_or_default(),
6921                    request_id: request_id__.unwrap_or_default(),
6922                })
6923            }
6924        }
6925        deserializer
6926            .deserialize_struct(
6927                "origincloud.network.v1beta1.DeleteNetworkInterfaceRequest",
6928                FIELDS,
6929                GeneratedVisitor,
6930            )
6931    }
6932}
6933impl serde::Serialize for DeleteRouteRequest {
6934    #[allow(deprecated)]
6935    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
6936    where
6937        S: serde::Serializer,
6938    {
6939        use serde::ser::SerializeStruct;
6940        let mut len = 0;
6941        if !self.name.is_empty() {
6942            len += 1;
6943        }
6944        if !self.request_id.is_empty() {
6945            len += 1;
6946        }
6947        let mut struct_ser = serializer
6948            .serialize_struct("origincloud.network.v1beta1.DeleteRouteRequest", len)?;
6949        if !self.name.is_empty() {
6950            struct_ser.serialize_field("name", &self.name)?;
6951        }
6952        if !self.request_id.is_empty() {
6953            struct_ser.serialize_field("requestId", &self.request_id)?;
6954        }
6955        struct_ser.end()
6956    }
6957}
6958impl<'de> serde::Deserialize<'de> for DeleteRouteRequest {
6959    #[allow(deprecated)]
6960    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
6961    where
6962        D: serde::Deserializer<'de>,
6963    {
6964        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
6965        #[allow(clippy::enum_variant_names)]
6966        enum GeneratedField {
6967            Name,
6968            RequestId,
6969            __SkipField__,
6970        }
6971        impl<'de> serde::Deserialize<'de> for GeneratedField {
6972            fn deserialize<D>(
6973                deserializer: D,
6974            ) -> std::result::Result<GeneratedField, D::Error>
6975            where
6976                D: serde::Deserializer<'de>,
6977            {
6978                struct GeneratedVisitor;
6979                impl serde::de::Visitor<'_> for GeneratedVisitor {
6980                    type Value = GeneratedField;
6981                    fn expecting(
6982                        &self,
6983                        formatter: &mut std::fmt::Formatter<'_>,
6984                    ) -> std::fmt::Result {
6985                        write!(formatter, "expected one of: {:?}", & FIELDS)
6986                    }
6987                    #[allow(unused_variables)]
6988                    fn visit_str<E>(
6989                        self,
6990                        value: &str,
6991                    ) -> std::result::Result<GeneratedField, E>
6992                    where
6993                        E: serde::de::Error,
6994                    {
6995                        match value {
6996                            "name" => Ok(GeneratedField::Name),
6997                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
6998                            _ => Ok(GeneratedField::__SkipField__),
6999                        }
7000                    }
7001                }
7002                deserializer.deserialize_identifier(GeneratedVisitor)
7003            }
7004        }
7005        struct GeneratedVisitor;
7006        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7007            type Value = DeleteRouteRequest;
7008            fn expecting(
7009                &self,
7010                formatter: &mut std::fmt::Formatter<'_>,
7011            ) -> std::fmt::Result {
7012                formatter
7013                    .write_str("struct origincloud.network.v1beta1.DeleteRouteRequest")
7014            }
7015            fn visit_map<V>(
7016                self,
7017                mut map_: V,
7018            ) -> std::result::Result<DeleteRouteRequest, V::Error>
7019            where
7020                V: serde::de::MapAccess<'de>,
7021            {
7022                let mut name__ = None;
7023                let mut request_id__ = None;
7024                while let Some(k) = map_.next_key()? {
7025                    match k {
7026                        GeneratedField::Name => {
7027                            if name__.is_some() {
7028                                return Err(serde::de::Error::duplicate_field("name"));
7029                            }
7030                            name__ = Some(map_.next_value()?);
7031                        }
7032                        GeneratedField::RequestId => {
7033                            if request_id__.is_some() {
7034                                return Err(serde::de::Error::duplicate_field("requestId"));
7035                            }
7036                            request_id__ = Some(map_.next_value()?);
7037                        }
7038                        GeneratedField::__SkipField__ => {
7039                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7040                        }
7041                    }
7042                }
7043                Ok(DeleteRouteRequest {
7044                    name: name__.unwrap_or_default(),
7045                    request_id: request_id__.unwrap_or_default(),
7046                })
7047            }
7048        }
7049        deserializer
7050            .deserialize_struct(
7051                "origincloud.network.v1beta1.DeleteRouteRequest",
7052                FIELDS,
7053                GeneratedVisitor,
7054            )
7055    }
7056}
7057impl serde::Serialize for DeleteRouteTableAssociationRequest {
7058    #[allow(deprecated)]
7059    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7060    where
7061        S: serde::Serializer,
7062    {
7063        use serde::ser::SerializeStruct;
7064        let mut len = 0;
7065        if !self.name.is_empty() {
7066            len += 1;
7067        }
7068        if !self.request_id.is_empty() {
7069            len += 1;
7070        }
7071        let mut struct_ser = serializer
7072            .serialize_struct(
7073                "origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7074                len,
7075            )?;
7076        if !self.name.is_empty() {
7077            struct_ser.serialize_field("name", &self.name)?;
7078        }
7079        if !self.request_id.is_empty() {
7080            struct_ser.serialize_field("requestId", &self.request_id)?;
7081        }
7082        struct_ser.end()
7083    }
7084}
7085impl<'de> serde::Deserialize<'de> for DeleteRouteTableAssociationRequest {
7086    #[allow(deprecated)]
7087    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7088    where
7089        D: serde::Deserializer<'de>,
7090    {
7091        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7092        #[allow(clippy::enum_variant_names)]
7093        enum GeneratedField {
7094            Name,
7095            RequestId,
7096            __SkipField__,
7097        }
7098        impl<'de> serde::Deserialize<'de> for GeneratedField {
7099            fn deserialize<D>(
7100                deserializer: D,
7101            ) -> std::result::Result<GeneratedField, D::Error>
7102            where
7103                D: serde::Deserializer<'de>,
7104            {
7105                struct GeneratedVisitor;
7106                impl serde::de::Visitor<'_> for GeneratedVisitor {
7107                    type Value = GeneratedField;
7108                    fn expecting(
7109                        &self,
7110                        formatter: &mut std::fmt::Formatter<'_>,
7111                    ) -> std::fmt::Result {
7112                        write!(formatter, "expected one of: {:?}", & FIELDS)
7113                    }
7114                    #[allow(unused_variables)]
7115                    fn visit_str<E>(
7116                        self,
7117                        value: &str,
7118                    ) -> std::result::Result<GeneratedField, E>
7119                    where
7120                        E: serde::de::Error,
7121                    {
7122                        match value {
7123                            "name" => Ok(GeneratedField::Name),
7124                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7125                            _ => Ok(GeneratedField::__SkipField__),
7126                        }
7127                    }
7128                }
7129                deserializer.deserialize_identifier(GeneratedVisitor)
7130            }
7131        }
7132        struct GeneratedVisitor;
7133        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7134            type Value = DeleteRouteTableAssociationRequest;
7135            fn expecting(
7136                &self,
7137                formatter: &mut std::fmt::Formatter<'_>,
7138            ) -> std::fmt::Result {
7139                formatter
7140                    .write_str(
7141                        "struct origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7142                    )
7143            }
7144            fn visit_map<V>(
7145                self,
7146                mut map_: V,
7147            ) -> std::result::Result<DeleteRouteTableAssociationRequest, V::Error>
7148            where
7149                V: serde::de::MapAccess<'de>,
7150            {
7151                let mut name__ = None;
7152                let mut request_id__ = None;
7153                while let Some(k) = map_.next_key()? {
7154                    match k {
7155                        GeneratedField::Name => {
7156                            if name__.is_some() {
7157                                return Err(serde::de::Error::duplicate_field("name"));
7158                            }
7159                            name__ = Some(map_.next_value()?);
7160                        }
7161                        GeneratedField::RequestId => {
7162                            if request_id__.is_some() {
7163                                return Err(serde::de::Error::duplicate_field("requestId"));
7164                            }
7165                            request_id__ = Some(map_.next_value()?);
7166                        }
7167                        GeneratedField::__SkipField__ => {
7168                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7169                        }
7170                    }
7171                }
7172                Ok(DeleteRouteTableAssociationRequest {
7173                    name: name__.unwrap_or_default(),
7174                    request_id: request_id__.unwrap_or_default(),
7175                })
7176            }
7177        }
7178        deserializer
7179            .deserialize_struct(
7180                "origincloud.network.v1beta1.DeleteRouteTableAssociationRequest",
7181                FIELDS,
7182                GeneratedVisitor,
7183            )
7184    }
7185}
7186impl serde::Serialize for DeleteRouteTableRequest {
7187    #[allow(deprecated)]
7188    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7189    where
7190        S: serde::Serializer,
7191    {
7192        use serde::ser::SerializeStruct;
7193        let mut len = 0;
7194        if !self.name.is_empty() {
7195            len += 1;
7196        }
7197        if !self.request_id.is_empty() {
7198            len += 1;
7199        }
7200        let mut struct_ser = serializer
7201            .serialize_struct(
7202                "origincloud.network.v1beta1.DeleteRouteTableRequest",
7203                len,
7204            )?;
7205        if !self.name.is_empty() {
7206            struct_ser.serialize_field("name", &self.name)?;
7207        }
7208        if !self.request_id.is_empty() {
7209            struct_ser.serialize_field("requestId", &self.request_id)?;
7210        }
7211        struct_ser.end()
7212    }
7213}
7214impl<'de> serde::Deserialize<'de> for DeleteRouteTableRequest {
7215    #[allow(deprecated)]
7216    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7217    where
7218        D: serde::Deserializer<'de>,
7219    {
7220        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7221        #[allow(clippy::enum_variant_names)]
7222        enum GeneratedField {
7223            Name,
7224            RequestId,
7225            __SkipField__,
7226        }
7227        impl<'de> serde::Deserialize<'de> for GeneratedField {
7228            fn deserialize<D>(
7229                deserializer: D,
7230            ) -> std::result::Result<GeneratedField, D::Error>
7231            where
7232                D: serde::Deserializer<'de>,
7233            {
7234                struct GeneratedVisitor;
7235                impl serde::de::Visitor<'_> for GeneratedVisitor {
7236                    type Value = GeneratedField;
7237                    fn expecting(
7238                        &self,
7239                        formatter: &mut std::fmt::Formatter<'_>,
7240                    ) -> std::fmt::Result {
7241                        write!(formatter, "expected one of: {:?}", & FIELDS)
7242                    }
7243                    #[allow(unused_variables)]
7244                    fn visit_str<E>(
7245                        self,
7246                        value: &str,
7247                    ) -> std::result::Result<GeneratedField, E>
7248                    where
7249                        E: serde::de::Error,
7250                    {
7251                        match value {
7252                            "name" => Ok(GeneratedField::Name),
7253                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7254                            _ => Ok(GeneratedField::__SkipField__),
7255                        }
7256                    }
7257                }
7258                deserializer.deserialize_identifier(GeneratedVisitor)
7259            }
7260        }
7261        struct GeneratedVisitor;
7262        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7263            type Value = DeleteRouteTableRequest;
7264            fn expecting(
7265                &self,
7266                formatter: &mut std::fmt::Formatter<'_>,
7267            ) -> std::fmt::Result {
7268                formatter
7269                    .write_str(
7270                        "struct origincloud.network.v1beta1.DeleteRouteTableRequest",
7271                    )
7272            }
7273            fn visit_map<V>(
7274                self,
7275                mut map_: V,
7276            ) -> std::result::Result<DeleteRouteTableRequest, V::Error>
7277            where
7278                V: serde::de::MapAccess<'de>,
7279            {
7280                let mut name__ = None;
7281                let mut request_id__ = None;
7282                while let Some(k) = map_.next_key()? {
7283                    match k {
7284                        GeneratedField::Name => {
7285                            if name__.is_some() {
7286                                return Err(serde::de::Error::duplicate_field("name"));
7287                            }
7288                            name__ = Some(map_.next_value()?);
7289                        }
7290                        GeneratedField::RequestId => {
7291                            if request_id__.is_some() {
7292                                return Err(serde::de::Error::duplicate_field("requestId"));
7293                            }
7294                            request_id__ = Some(map_.next_value()?);
7295                        }
7296                        GeneratedField::__SkipField__ => {
7297                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7298                        }
7299                    }
7300                }
7301                Ok(DeleteRouteTableRequest {
7302                    name: name__.unwrap_or_default(),
7303                    request_id: request_id__.unwrap_or_default(),
7304                })
7305            }
7306        }
7307        deserializer
7308            .deserialize_struct(
7309                "origincloud.network.v1beta1.DeleteRouteTableRequest",
7310                FIELDS,
7311                GeneratedVisitor,
7312            )
7313    }
7314}
7315impl serde::Serialize for DeleteSecurityGroupAssociationRequest {
7316    #[allow(deprecated)]
7317    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7318    where
7319        S: serde::Serializer,
7320    {
7321        use serde::ser::SerializeStruct;
7322        let mut len = 0;
7323        if !self.name.is_empty() {
7324            len += 1;
7325        }
7326        if !self.request_id.is_empty() {
7327            len += 1;
7328        }
7329        let mut struct_ser = serializer
7330            .serialize_struct(
7331                "origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7332                len,
7333            )?;
7334        if !self.name.is_empty() {
7335            struct_ser.serialize_field("name", &self.name)?;
7336        }
7337        if !self.request_id.is_empty() {
7338            struct_ser.serialize_field("requestId", &self.request_id)?;
7339        }
7340        struct_ser.end()
7341    }
7342}
7343impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupAssociationRequest {
7344    #[allow(deprecated)]
7345    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7346    where
7347        D: serde::Deserializer<'de>,
7348    {
7349        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7350        #[allow(clippy::enum_variant_names)]
7351        enum GeneratedField {
7352            Name,
7353            RequestId,
7354            __SkipField__,
7355        }
7356        impl<'de> serde::Deserialize<'de> for GeneratedField {
7357            fn deserialize<D>(
7358                deserializer: D,
7359            ) -> std::result::Result<GeneratedField, D::Error>
7360            where
7361                D: serde::Deserializer<'de>,
7362            {
7363                struct GeneratedVisitor;
7364                impl serde::de::Visitor<'_> for GeneratedVisitor {
7365                    type Value = GeneratedField;
7366                    fn expecting(
7367                        &self,
7368                        formatter: &mut std::fmt::Formatter<'_>,
7369                    ) -> std::fmt::Result {
7370                        write!(formatter, "expected one of: {:?}", & FIELDS)
7371                    }
7372                    #[allow(unused_variables)]
7373                    fn visit_str<E>(
7374                        self,
7375                        value: &str,
7376                    ) -> std::result::Result<GeneratedField, E>
7377                    where
7378                        E: serde::de::Error,
7379                    {
7380                        match value {
7381                            "name" => Ok(GeneratedField::Name),
7382                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7383                            _ => Ok(GeneratedField::__SkipField__),
7384                        }
7385                    }
7386                }
7387                deserializer.deserialize_identifier(GeneratedVisitor)
7388            }
7389        }
7390        struct GeneratedVisitor;
7391        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7392            type Value = DeleteSecurityGroupAssociationRequest;
7393            fn expecting(
7394                &self,
7395                formatter: &mut std::fmt::Formatter<'_>,
7396            ) -> std::fmt::Result {
7397                formatter
7398                    .write_str(
7399                        "struct origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7400                    )
7401            }
7402            fn visit_map<V>(
7403                self,
7404                mut map_: V,
7405            ) -> std::result::Result<DeleteSecurityGroupAssociationRequest, V::Error>
7406            where
7407                V: serde::de::MapAccess<'de>,
7408            {
7409                let mut name__ = None;
7410                let mut request_id__ = None;
7411                while let Some(k) = map_.next_key()? {
7412                    match k {
7413                        GeneratedField::Name => {
7414                            if name__.is_some() {
7415                                return Err(serde::de::Error::duplicate_field("name"));
7416                            }
7417                            name__ = Some(map_.next_value()?);
7418                        }
7419                        GeneratedField::RequestId => {
7420                            if request_id__.is_some() {
7421                                return Err(serde::de::Error::duplicate_field("requestId"));
7422                            }
7423                            request_id__ = Some(map_.next_value()?);
7424                        }
7425                        GeneratedField::__SkipField__ => {
7426                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7427                        }
7428                    }
7429                }
7430                Ok(DeleteSecurityGroupAssociationRequest {
7431                    name: name__.unwrap_or_default(),
7432                    request_id: request_id__.unwrap_or_default(),
7433                })
7434            }
7435        }
7436        deserializer
7437            .deserialize_struct(
7438                "origincloud.network.v1beta1.DeleteSecurityGroupAssociationRequest",
7439                FIELDS,
7440                GeneratedVisitor,
7441            )
7442    }
7443}
7444impl serde::Serialize for DeleteSecurityGroupRequest {
7445    #[allow(deprecated)]
7446    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7447    where
7448        S: serde::Serializer,
7449    {
7450        use serde::ser::SerializeStruct;
7451        let mut len = 0;
7452        if !self.name.is_empty() {
7453            len += 1;
7454        }
7455        if !self.request_id.is_empty() {
7456            len += 1;
7457        }
7458        let mut struct_ser = serializer
7459            .serialize_struct(
7460                "origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7461                len,
7462            )?;
7463        if !self.name.is_empty() {
7464            struct_ser.serialize_field("name", &self.name)?;
7465        }
7466        if !self.request_id.is_empty() {
7467            struct_ser.serialize_field("requestId", &self.request_id)?;
7468        }
7469        struct_ser.end()
7470    }
7471}
7472impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupRequest {
7473    #[allow(deprecated)]
7474    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7475    where
7476        D: serde::Deserializer<'de>,
7477    {
7478        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7479        #[allow(clippy::enum_variant_names)]
7480        enum GeneratedField {
7481            Name,
7482            RequestId,
7483            __SkipField__,
7484        }
7485        impl<'de> serde::Deserialize<'de> for GeneratedField {
7486            fn deserialize<D>(
7487                deserializer: D,
7488            ) -> std::result::Result<GeneratedField, D::Error>
7489            where
7490                D: serde::Deserializer<'de>,
7491            {
7492                struct GeneratedVisitor;
7493                impl serde::de::Visitor<'_> for GeneratedVisitor {
7494                    type Value = GeneratedField;
7495                    fn expecting(
7496                        &self,
7497                        formatter: &mut std::fmt::Formatter<'_>,
7498                    ) -> std::fmt::Result {
7499                        write!(formatter, "expected one of: {:?}", & FIELDS)
7500                    }
7501                    #[allow(unused_variables)]
7502                    fn visit_str<E>(
7503                        self,
7504                        value: &str,
7505                    ) -> std::result::Result<GeneratedField, E>
7506                    where
7507                        E: serde::de::Error,
7508                    {
7509                        match value {
7510                            "name" => Ok(GeneratedField::Name),
7511                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7512                            _ => Ok(GeneratedField::__SkipField__),
7513                        }
7514                    }
7515                }
7516                deserializer.deserialize_identifier(GeneratedVisitor)
7517            }
7518        }
7519        struct GeneratedVisitor;
7520        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7521            type Value = DeleteSecurityGroupRequest;
7522            fn expecting(
7523                &self,
7524                formatter: &mut std::fmt::Formatter<'_>,
7525            ) -> std::fmt::Result {
7526                formatter
7527                    .write_str(
7528                        "struct origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7529                    )
7530            }
7531            fn visit_map<V>(
7532                self,
7533                mut map_: V,
7534            ) -> std::result::Result<DeleteSecurityGroupRequest, V::Error>
7535            where
7536                V: serde::de::MapAccess<'de>,
7537            {
7538                let mut name__ = None;
7539                let mut request_id__ = None;
7540                while let Some(k) = map_.next_key()? {
7541                    match k {
7542                        GeneratedField::Name => {
7543                            if name__.is_some() {
7544                                return Err(serde::de::Error::duplicate_field("name"));
7545                            }
7546                            name__ = Some(map_.next_value()?);
7547                        }
7548                        GeneratedField::RequestId => {
7549                            if request_id__.is_some() {
7550                                return Err(serde::de::Error::duplicate_field("requestId"));
7551                            }
7552                            request_id__ = Some(map_.next_value()?);
7553                        }
7554                        GeneratedField::__SkipField__ => {
7555                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7556                        }
7557                    }
7558                }
7559                Ok(DeleteSecurityGroupRequest {
7560                    name: name__.unwrap_or_default(),
7561                    request_id: request_id__.unwrap_or_default(),
7562                })
7563            }
7564        }
7565        deserializer
7566            .deserialize_struct(
7567                "origincloud.network.v1beta1.DeleteSecurityGroupRequest",
7568                FIELDS,
7569                GeneratedVisitor,
7570            )
7571    }
7572}
7573impl serde::Serialize for DeleteSecurityGroupRuleRequest {
7574    #[allow(deprecated)]
7575    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7576    where
7577        S: serde::Serializer,
7578    {
7579        use serde::ser::SerializeStruct;
7580        let mut len = 0;
7581        if !self.name.is_empty() {
7582            len += 1;
7583        }
7584        if !self.request_id.is_empty() {
7585            len += 1;
7586        }
7587        let mut struct_ser = serializer
7588            .serialize_struct(
7589                "origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7590                len,
7591            )?;
7592        if !self.name.is_empty() {
7593            struct_ser.serialize_field("name", &self.name)?;
7594        }
7595        if !self.request_id.is_empty() {
7596            struct_ser.serialize_field("requestId", &self.request_id)?;
7597        }
7598        struct_ser.end()
7599    }
7600}
7601impl<'de> serde::Deserialize<'de> for DeleteSecurityGroupRuleRequest {
7602    #[allow(deprecated)]
7603    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7604    where
7605        D: serde::Deserializer<'de>,
7606    {
7607        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7608        #[allow(clippy::enum_variant_names)]
7609        enum GeneratedField {
7610            Name,
7611            RequestId,
7612            __SkipField__,
7613        }
7614        impl<'de> serde::Deserialize<'de> for GeneratedField {
7615            fn deserialize<D>(
7616                deserializer: D,
7617            ) -> std::result::Result<GeneratedField, D::Error>
7618            where
7619                D: serde::Deserializer<'de>,
7620            {
7621                struct GeneratedVisitor;
7622                impl serde::de::Visitor<'_> for GeneratedVisitor {
7623                    type Value = GeneratedField;
7624                    fn expecting(
7625                        &self,
7626                        formatter: &mut std::fmt::Formatter<'_>,
7627                    ) -> std::fmt::Result {
7628                        write!(formatter, "expected one of: {:?}", & FIELDS)
7629                    }
7630                    #[allow(unused_variables)]
7631                    fn visit_str<E>(
7632                        self,
7633                        value: &str,
7634                    ) -> std::result::Result<GeneratedField, E>
7635                    where
7636                        E: serde::de::Error,
7637                    {
7638                        match value {
7639                            "name" => Ok(GeneratedField::Name),
7640                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7641                            _ => Ok(GeneratedField::__SkipField__),
7642                        }
7643                    }
7644                }
7645                deserializer.deserialize_identifier(GeneratedVisitor)
7646            }
7647        }
7648        struct GeneratedVisitor;
7649        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7650            type Value = DeleteSecurityGroupRuleRequest;
7651            fn expecting(
7652                &self,
7653                formatter: &mut std::fmt::Formatter<'_>,
7654            ) -> std::fmt::Result {
7655                formatter
7656                    .write_str(
7657                        "struct origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7658                    )
7659            }
7660            fn visit_map<V>(
7661                self,
7662                mut map_: V,
7663            ) -> std::result::Result<DeleteSecurityGroupRuleRequest, V::Error>
7664            where
7665                V: serde::de::MapAccess<'de>,
7666            {
7667                let mut name__ = None;
7668                let mut request_id__ = None;
7669                while let Some(k) = map_.next_key()? {
7670                    match k {
7671                        GeneratedField::Name => {
7672                            if name__.is_some() {
7673                                return Err(serde::de::Error::duplicate_field("name"));
7674                            }
7675                            name__ = Some(map_.next_value()?);
7676                        }
7677                        GeneratedField::RequestId => {
7678                            if request_id__.is_some() {
7679                                return Err(serde::de::Error::duplicate_field("requestId"));
7680                            }
7681                            request_id__ = Some(map_.next_value()?);
7682                        }
7683                        GeneratedField::__SkipField__ => {
7684                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7685                        }
7686                    }
7687                }
7688                Ok(DeleteSecurityGroupRuleRequest {
7689                    name: name__.unwrap_or_default(),
7690                    request_id: request_id__.unwrap_or_default(),
7691                })
7692            }
7693        }
7694        deserializer
7695            .deserialize_struct(
7696                "origincloud.network.v1beta1.DeleteSecurityGroupRuleRequest",
7697                FIELDS,
7698                GeneratedVisitor,
7699            )
7700    }
7701}
7702impl serde::Serialize for DeleteSubnetRequest {
7703    #[allow(deprecated)]
7704    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7705    where
7706        S: serde::Serializer,
7707    {
7708        use serde::ser::SerializeStruct;
7709        let mut len = 0;
7710        if !self.name.is_empty() {
7711            len += 1;
7712        }
7713        if !self.request_id.is_empty() {
7714            len += 1;
7715        }
7716        let mut struct_ser = serializer
7717            .serialize_struct("origincloud.network.v1beta1.DeleteSubnetRequest", len)?;
7718        if !self.name.is_empty() {
7719            struct_ser.serialize_field("name", &self.name)?;
7720        }
7721        if !self.request_id.is_empty() {
7722            struct_ser.serialize_field("requestId", &self.request_id)?;
7723        }
7724        struct_ser.end()
7725    }
7726}
7727impl<'de> serde::Deserialize<'de> for DeleteSubnetRequest {
7728    #[allow(deprecated)]
7729    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7730    where
7731        D: serde::Deserializer<'de>,
7732    {
7733        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7734        #[allow(clippy::enum_variant_names)]
7735        enum GeneratedField {
7736            Name,
7737            RequestId,
7738            __SkipField__,
7739        }
7740        impl<'de> serde::Deserialize<'de> for GeneratedField {
7741            fn deserialize<D>(
7742                deserializer: D,
7743            ) -> std::result::Result<GeneratedField, D::Error>
7744            where
7745                D: serde::Deserializer<'de>,
7746            {
7747                struct GeneratedVisitor;
7748                impl serde::de::Visitor<'_> for GeneratedVisitor {
7749                    type Value = GeneratedField;
7750                    fn expecting(
7751                        &self,
7752                        formatter: &mut std::fmt::Formatter<'_>,
7753                    ) -> std::fmt::Result {
7754                        write!(formatter, "expected one of: {:?}", & FIELDS)
7755                    }
7756                    #[allow(unused_variables)]
7757                    fn visit_str<E>(
7758                        self,
7759                        value: &str,
7760                    ) -> std::result::Result<GeneratedField, E>
7761                    where
7762                        E: serde::de::Error,
7763                    {
7764                        match value {
7765                            "name" => Ok(GeneratedField::Name),
7766                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7767                            _ => Ok(GeneratedField::__SkipField__),
7768                        }
7769                    }
7770                }
7771                deserializer.deserialize_identifier(GeneratedVisitor)
7772            }
7773        }
7774        struct GeneratedVisitor;
7775        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7776            type Value = DeleteSubnetRequest;
7777            fn expecting(
7778                &self,
7779                formatter: &mut std::fmt::Formatter<'_>,
7780            ) -> std::fmt::Result {
7781                formatter
7782                    .write_str("struct origincloud.network.v1beta1.DeleteSubnetRequest")
7783            }
7784            fn visit_map<V>(
7785                self,
7786                mut map_: V,
7787            ) -> std::result::Result<DeleteSubnetRequest, V::Error>
7788            where
7789                V: serde::de::MapAccess<'de>,
7790            {
7791                let mut name__ = None;
7792                let mut request_id__ = None;
7793                while let Some(k) = map_.next_key()? {
7794                    match k {
7795                        GeneratedField::Name => {
7796                            if name__.is_some() {
7797                                return Err(serde::de::Error::duplicate_field("name"));
7798                            }
7799                            name__ = Some(map_.next_value()?);
7800                        }
7801                        GeneratedField::RequestId => {
7802                            if request_id__.is_some() {
7803                                return Err(serde::de::Error::duplicate_field("requestId"));
7804                            }
7805                            request_id__ = Some(map_.next_value()?);
7806                        }
7807                        GeneratedField::__SkipField__ => {
7808                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7809                        }
7810                    }
7811                }
7812                Ok(DeleteSubnetRequest {
7813                    name: name__.unwrap_or_default(),
7814                    request_id: request_id__.unwrap_or_default(),
7815                })
7816            }
7817        }
7818        deserializer
7819            .deserialize_struct(
7820                "origincloud.network.v1beta1.DeleteSubnetRequest",
7821                FIELDS,
7822                GeneratedVisitor,
7823            )
7824    }
7825}
7826impl serde::Serialize for DeleteVpcRequest {
7827    #[allow(deprecated)]
7828    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7829    where
7830        S: serde::Serializer,
7831    {
7832        use serde::ser::SerializeStruct;
7833        let mut len = 0;
7834        if !self.name.is_empty() {
7835            len += 1;
7836        }
7837        if !self.request_id.is_empty() {
7838            len += 1;
7839        }
7840        let mut struct_ser = serializer
7841            .serialize_struct("origincloud.network.v1beta1.DeleteVpcRequest", len)?;
7842        if !self.name.is_empty() {
7843            struct_ser.serialize_field("name", &self.name)?;
7844        }
7845        if !self.request_id.is_empty() {
7846            struct_ser.serialize_field("requestId", &self.request_id)?;
7847        }
7848        struct_ser.end()
7849    }
7850}
7851impl<'de> serde::Deserialize<'de> for DeleteVpcRequest {
7852    #[allow(deprecated)]
7853    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
7854    where
7855        D: serde::Deserializer<'de>,
7856    {
7857        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
7858        #[allow(clippy::enum_variant_names)]
7859        enum GeneratedField {
7860            Name,
7861            RequestId,
7862            __SkipField__,
7863        }
7864        impl<'de> serde::Deserialize<'de> for GeneratedField {
7865            fn deserialize<D>(
7866                deserializer: D,
7867            ) -> std::result::Result<GeneratedField, D::Error>
7868            where
7869                D: serde::Deserializer<'de>,
7870            {
7871                struct GeneratedVisitor;
7872                impl serde::de::Visitor<'_> for GeneratedVisitor {
7873                    type Value = GeneratedField;
7874                    fn expecting(
7875                        &self,
7876                        formatter: &mut std::fmt::Formatter<'_>,
7877                    ) -> std::fmt::Result {
7878                        write!(formatter, "expected one of: {:?}", & FIELDS)
7879                    }
7880                    #[allow(unused_variables)]
7881                    fn visit_str<E>(
7882                        self,
7883                        value: &str,
7884                    ) -> std::result::Result<GeneratedField, E>
7885                    where
7886                        E: serde::de::Error,
7887                    {
7888                        match value {
7889                            "name" => Ok(GeneratedField::Name),
7890                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
7891                            _ => Ok(GeneratedField::__SkipField__),
7892                        }
7893                    }
7894                }
7895                deserializer.deserialize_identifier(GeneratedVisitor)
7896            }
7897        }
7898        struct GeneratedVisitor;
7899        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
7900            type Value = DeleteVpcRequest;
7901            fn expecting(
7902                &self,
7903                formatter: &mut std::fmt::Formatter<'_>,
7904            ) -> std::fmt::Result {
7905                formatter
7906                    .write_str("struct origincloud.network.v1beta1.DeleteVpcRequest")
7907            }
7908            fn visit_map<V>(
7909                self,
7910                mut map_: V,
7911            ) -> std::result::Result<DeleteVpcRequest, V::Error>
7912            where
7913                V: serde::de::MapAccess<'de>,
7914            {
7915                let mut name__ = None;
7916                let mut request_id__ = None;
7917                while let Some(k) = map_.next_key()? {
7918                    match k {
7919                        GeneratedField::Name => {
7920                            if name__.is_some() {
7921                                return Err(serde::de::Error::duplicate_field("name"));
7922                            }
7923                            name__ = Some(map_.next_value()?);
7924                        }
7925                        GeneratedField::RequestId => {
7926                            if request_id__.is_some() {
7927                                return Err(serde::de::Error::duplicate_field("requestId"));
7928                            }
7929                            request_id__ = Some(map_.next_value()?);
7930                        }
7931                        GeneratedField::__SkipField__ => {
7932                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
7933                        }
7934                    }
7935                }
7936                Ok(DeleteVpcRequest {
7937                    name: name__.unwrap_or_default(),
7938                    request_id: request_id__.unwrap_or_default(),
7939                })
7940            }
7941        }
7942        deserializer
7943            .deserialize_struct(
7944                "origincloud.network.v1beta1.DeleteVpcRequest",
7945                FIELDS,
7946                GeneratedVisitor,
7947            )
7948    }
7949}
7950impl serde::Serialize for DnsPolicy {
7951    #[allow(deprecated)]
7952    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
7953    where
7954        S: serde::Serializer,
7955    {
7956        use serde::ser::SerializeStruct;
7957        let mut len = 0;
7958        if !self.name.is_empty() {
7959            len += 1;
7960        }
7961        if !self.urn.is_empty() {
7962            len += 1;
7963        }
7964        if self.project_default {
7965            len += 1;
7966        }
7967        if self.relay_enabled {
7968            len += 1;
7969        }
7970        if !self.upstream_servers.is_empty() {
7971            len += 1;
7972        }
7973        if self.create_time.is_some() {
7974            len += 1;
7975        }
7976        if !self.creator.is_empty() {
7977            len += 1;
7978        }
7979        if !self.tags.is_empty() {
7980            len += 1;
7981        }
7982        let mut struct_ser = serializer
7983            .serialize_struct("origincloud.network.v1beta1.DnsPolicy", len)?;
7984        if !self.name.is_empty() {
7985            struct_ser.serialize_field("name", &self.name)?;
7986        }
7987        if !self.urn.is_empty() {
7988            struct_ser.serialize_field("urn", &self.urn)?;
7989        }
7990        if self.project_default {
7991            struct_ser.serialize_field("projectDefault", &self.project_default)?;
7992        }
7993        if self.relay_enabled {
7994            struct_ser.serialize_field("relayEnabled", &self.relay_enabled)?;
7995        }
7996        if !self.upstream_servers.is_empty() {
7997            struct_ser.serialize_field("upstreamServers", &self.upstream_servers)?;
7998        }
7999        if let Some(v) = self.create_time.as_ref() {
8000            struct_ser.serialize_field("createTime", v)?;
8001        }
8002        if !self.creator.is_empty() {
8003            struct_ser.serialize_field("creator", &self.creator)?;
8004        }
8005        if !self.tags.is_empty() {
8006            struct_ser.serialize_field("tags", &self.tags)?;
8007        }
8008        struct_ser.end()
8009    }
8010}
8011impl<'de> serde::Deserialize<'de> for DnsPolicy {
8012    #[allow(deprecated)]
8013    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8014    where
8015        D: serde::Deserializer<'de>,
8016    {
8017        const FIELDS: &[&str] = &[
8018            "name",
8019            "urn",
8020            "project_default",
8021            "projectDefault",
8022            "relay_enabled",
8023            "relayEnabled",
8024            "upstream_servers",
8025            "upstreamServers",
8026            "create_time",
8027            "createTime",
8028            "creator",
8029            "tags",
8030        ];
8031        #[allow(clippy::enum_variant_names)]
8032        enum GeneratedField {
8033            Name,
8034            Urn,
8035            ProjectDefault,
8036            RelayEnabled,
8037            UpstreamServers,
8038            CreateTime,
8039            Creator,
8040            Tags,
8041            __SkipField__,
8042        }
8043        impl<'de> serde::Deserialize<'de> for GeneratedField {
8044            fn deserialize<D>(
8045                deserializer: D,
8046            ) -> std::result::Result<GeneratedField, D::Error>
8047            where
8048                D: serde::Deserializer<'de>,
8049            {
8050                struct GeneratedVisitor;
8051                impl serde::de::Visitor<'_> for GeneratedVisitor {
8052                    type Value = GeneratedField;
8053                    fn expecting(
8054                        &self,
8055                        formatter: &mut std::fmt::Formatter<'_>,
8056                    ) -> std::fmt::Result {
8057                        write!(formatter, "expected one of: {:?}", & FIELDS)
8058                    }
8059                    #[allow(unused_variables)]
8060                    fn visit_str<E>(
8061                        self,
8062                        value: &str,
8063                    ) -> std::result::Result<GeneratedField, E>
8064                    where
8065                        E: serde::de::Error,
8066                    {
8067                        match value {
8068                            "name" => Ok(GeneratedField::Name),
8069                            "urn" => Ok(GeneratedField::Urn),
8070                            "projectDefault" | "project_default" => {
8071                                Ok(GeneratedField::ProjectDefault)
8072                            }
8073                            "relayEnabled" | "relay_enabled" => {
8074                                Ok(GeneratedField::RelayEnabled)
8075                            }
8076                            "upstreamServers" | "upstream_servers" => {
8077                                Ok(GeneratedField::UpstreamServers)
8078                            }
8079                            "createTime" | "create_time" => {
8080                                Ok(GeneratedField::CreateTime)
8081                            }
8082                            "creator" => Ok(GeneratedField::Creator),
8083                            "tags" => Ok(GeneratedField::Tags),
8084                            _ => Ok(GeneratedField::__SkipField__),
8085                        }
8086                    }
8087                }
8088                deserializer.deserialize_identifier(GeneratedVisitor)
8089            }
8090        }
8091        struct GeneratedVisitor;
8092        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8093            type Value = DnsPolicy;
8094            fn expecting(
8095                &self,
8096                formatter: &mut std::fmt::Formatter<'_>,
8097            ) -> std::fmt::Result {
8098                formatter.write_str("struct origincloud.network.v1beta1.DnsPolicy")
8099            }
8100            fn visit_map<V>(
8101                self,
8102                mut map_: V,
8103            ) -> std::result::Result<DnsPolicy, V::Error>
8104            where
8105                V: serde::de::MapAccess<'de>,
8106            {
8107                let mut name__ = None;
8108                let mut urn__ = None;
8109                let mut project_default__ = None;
8110                let mut relay_enabled__ = None;
8111                let mut upstream_servers__ = None;
8112                let mut create_time__ = None;
8113                let mut creator__ = None;
8114                let mut tags__ = None;
8115                while let Some(k) = map_.next_key()? {
8116                    match k {
8117                        GeneratedField::Name => {
8118                            if name__.is_some() {
8119                                return Err(serde::de::Error::duplicate_field("name"));
8120                            }
8121                            name__ = Some(map_.next_value()?);
8122                        }
8123                        GeneratedField::Urn => {
8124                            if urn__.is_some() {
8125                                return Err(serde::de::Error::duplicate_field("urn"));
8126                            }
8127                            urn__ = Some(map_.next_value()?);
8128                        }
8129                        GeneratedField::ProjectDefault => {
8130                            if project_default__.is_some() {
8131                                return Err(
8132                                    serde::de::Error::duplicate_field("projectDefault"),
8133                                );
8134                            }
8135                            project_default__ = Some(map_.next_value()?);
8136                        }
8137                        GeneratedField::RelayEnabled => {
8138                            if relay_enabled__.is_some() {
8139                                return Err(
8140                                    serde::de::Error::duplicate_field("relayEnabled"),
8141                                );
8142                            }
8143                            relay_enabled__ = Some(map_.next_value()?);
8144                        }
8145                        GeneratedField::UpstreamServers => {
8146                            if upstream_servers__.is_some() {
8147                                return Err(
8148                                    serde::de::Error::duplicate_field("upstreamServers"),
8149                                );
8150                            }
8151                            upstream_servers__ = Some(map_.next_value()?);
8152                        }
8153                        GeneratedField::CreateTime => {
8154                            if create_time__.is_some() {
8155                                return Err(serde::de::Error::duplicate_field("createTime"));
8156                            }
8157                            create_time__ = map_.next_value()?;
8158                        }
8159                        GeneratedField::Creator => {
8160                            if creator__.is_some() {
8161                                return Err(serde::de::Error::duplicate_field("creator"));
8162                            }
8163                            creator__ = Some(map_.next_value()?);
8164                        }
8165                        GeneratedField::Tags => {
8166                            if tags__.is_some() {
8167                                return Err(serde::de::Error::duplicate_field("tags"));
8168                            }
8169                            tags__ = Some(
8170                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
8171                            );
8172                        }
8173                        GeneratedField::__SkipField__ => {
8174                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8175                        }
8176                    }
8177                }
8178                Ok(DnsPolicy {
8179                    name: name__.unwrap_or_default(),
8180                    urn: urn__.unwrap_or_default(),
8181                    project_default: project_default__.unwrap_or_default(),
8182                    relay_enabled: relay_enabled__.unwrap_or_default(),
8183                    upstream_servers: upstream_servers__.unwrap_or_default(),
8184                    create_time: create_time__,
8185                    creator: creator__.unwrap_or_default(),
8186                    tags: tags__.unwrap_or_default(),
8187                })
8188            }
8189        }
8190        deserializer
8191            .deserialize_struct(
8192                "origincloud.network.v1beta1.DnsPolicy",
8193                FIELDS,
8194                GeneratedVisitor,
8195            )
8196    }
8197}
8198impl serde::Serialize for DnsPolicyAssociation {
8199    #[allow(deprecated)]
8200    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8201    where
8202        S: serde::Serializer,
8203    {
8204        use serde::ser::SerializeStruct;
8205        let mut len = 0;
8206        if !self.name.is_empty() {
8207            len += 1;
8208        }
8209        if !self.dns_policy.is_empty() {
8210            len += 1;
8211        }
8212        let mut struct_ser = serializer
8213            .serialize_struct("origincloud.network.v1beta1.DnsPolicyAssociation", len)?;
8214        if !self.name.is_empty() {
8215            struct_ser.serialize_field("name", &self.name)?;
8216        }
8217        if !self.dns_policy.is_empty() {
8218            struct_ser.serialize_field("dnsPolicy", &self.dns_policy)?;
8219        }
8220        struct_ser.end()
8221    }
8222}
8223impl<'de> serde::Deserialize<'de> for DnsPolicyAssociation {
8224    #[allow(deprecated)]
8225    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8226    where
8227        D: serde::Deserializer<'de>,
8228    {
8229        const FIELDS: &[&str] = &["name", "dns_policy", "dnsPolicy"];
8230        #[allow(clippy::enum_variant_names)]
8231        enum GeneratedField {
8232            Name,
8233            DnsPolicy,
8234            __SkipField__,
8235        }
8236        impl<'de> serde::Deserialize<'de> for GeneratedField {
8237            fn deserialize<D>(
8238                deserializer: D,
8239            ) -> std::result::Result<GeneratedField, D::Error>
8240            where
8241                D: serde::Deserializer<'de>,
8242            {
8243                struct GeneratedVisitor;
8244                impl serde::de::Visitor<'_> for GeneratedVisitor {
8245                    type Value = GeneratedField;
8246                    fn expecting(
8247                        &self,
8248                        formatter: &mut std::fmt::Formatter<'_>,
8249                    ) -> std::fmt::Result {
8250                        write!(formatter, "expected one of: {:?}", & FIELDS)
8251                    }
8252                    #[allow(unused_variables)]
8253                    fn visit_str<E>(
8254                        self,
8255                        value: &str,
8256                    ) -> std::result::Result<GeneratedField, E>
8257                    where
8258                        E: serde::de::Error,
8259                    {
8260                        match value {
8261                            "name" => Ok(GeneratedField::Name),
8262                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
8263                            _ => Ok(GeneratedField::__SkipField__),
8264                        }
8265                    }
8266                }
8267                deserializer.deserialize_identifier(GeneratedVisitor)
8268            }
8269        }
8270        struct GeneratedVisitor;
8271        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8272            type Value = DnsPolicyAssociation;
8273            fn expecting(
8274                &self,
8275                formatter: &mut std::fmt::Formatter<'_>,
8276            ) -> std::fmt::Result {
8277                formatter
8278                    .write_str("struct origincloud.network.v1beta1.DnsPolicyAssociation")
8279            }
8280            fn visit_map<V>(
8281                self,
8282                mut map_: V,
8283            ) -> std::result::Result<DnsPolicyAssociation, V::Error>
8284            where
8285                V: serde::de::MapAccess<'de>,
8286            {
8287                let mut name__ = None;
8288                let mut dns_policy__ = None;
8289                while let Some(k) = map_.next_key()? {
8290                    match k {
8291                        GeneratedField::Name => {
8292                            if name__.is_some() {
8293                                return Err(serde::de::Error::duplicate_field("name"));
8294                            }
8295                            name__ = Some(map_.next_value()?);
8296                        }
8297                        GeneratedField::DnsPolicy => {
8298                            if dns_policy__.is_some() {
8299                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
8300                            }
8301                            dns_policy__ = Some(map_.next_value()?);
8302                        }
8303                        GeneratedField::__SkipField__ => {
8304                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8305                        }
8306                    }
8307                }
8308                Ok(DnsPolicyAssociation {
8309                    name: name__.unwrap_or_default(),
8310                    dns_policy: dns_policy__.unwrap_or_default(),
8311                })
8312            }
8313        }
8314        deserializer
8315            .deserialize_struct(
8316                "origincloud.network.v1beta1.DnsPolicyAssociation",
8317                FIELDS,
8318                GeneratedVisitor,
8319            )
8320    }
8321}
8322impl serde::Serialize for FloatingIp {
8323    #[allow(deprecated)]
8324    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8325    where
8326        S: serde::Serializer,
8327    {
8328        use serde::ser::SerializeStruct;
8329        let mut len = 0;
8330        if !self.name.is_empty() {
8331            len += 1;
8332        }
8333        if !self.urn.is_empty() {
8334            len += 1;
8335        }
8336        if !self.address.is_empty() {
8337            len += 1;
8338        }
8339        if !self.network_interface.is_empty() {
8340            len += 1;
8341        }
8342        if !self.private_address.is_empty() {
8343            len += 1;
8344        }
8345        if self.auto_assigned {
8346            len += 1;
8347        }
8348        if self.create_time.is_some() {
8349            len += 1;
8350        }
8351        if !self.creator.is_empty() {
8352            len += 1;
8353        }
8354        if !self.tags.is_empty() {
8355            len += 1;
8356        }
8357        let mut struct_ser = serializer
8358            .serialize_struct("origincloud.network.v1beta1.FloatingIp", len)?;
8359        if !self.name.is_empty() {
8360            struct_ser.serialize_field("name", &self.name)?;
8361        }
8362        if !self.urn.is_empty() {
8363            struct_ser.serialize_field("urn", &self.urn)?;
8364        }
8365        if !self.address.is_empty() {
8366            struct_ser.serialize_field("address", &self.address)?;
8367        }
8368        if !self.network_interface.is_empty() {
8369            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
8370        }
8371        if !self.private_address.is_empty() {
8372            struct_ser.serialize_field("privateAddress", &self.private_address)?;
8373        }
8374        if self.auto_assigned {
8375            struct_ser.serialize_field("autoAssigned", &self.auto_assigned)?;
8376        }
8377        if let Some(v) = self.create_time.as_ref() {
8378            struct_ser.serialize_field("createTime", v)?;
8379        }
8380        if !self.creator.is_empty() {
8381            struct_ser.serialize_field("creator", &self.creator)?;
8382        }
8383        if !self.tags.is_empty() {
8384            struct_ser.serialize_field("tags", &self.tags)?;
8385        }
8386        struct_ser.end()
8387    }
8388}
8389impl<'de> serde::Deserialize<'de> for FloatingIp {
8390    #[allow(deprecated)]
8391    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8392    where
8393        D: serde::Deserializer<'de>,
8394    {
8395        const FIELDS: &[&str] = &[
8396            "name",
8397            "urn",
8398            "address",
8399            "network_interface",
8400            "networkInterface",
8401            "private_address",
8402            "privateAddress",
8403            "auto_assigned",
8404            "autoAssigned",
8405            "create_time",
8406            "createTime",
8407            "creator",
8408            "tags",
8409        ];
8410        #[allow(clippy::enum_variant_names)]
8411        enum GeneratedField {
8412            Name,
8413            Urn,
8414            Address,
8415            NetworkInterface,
8416            PrivateAddress,
8417            AutoAssigned,
8418            CreateTime,
8419            Creator,
8420            Tags,
8421            __SkipField__,
8422        }
8423        impl<'de> serde::Deserialize<'de> for GeneratedField {
8424            fn deserialize<D>(
8425                deserializer: D,
8426            ) -> std::result::Result<GeneratedField, D::Error>
8427            where
8428                D: serde::Deserializer<'de>,
8429            {
8430                struct GeneratedVisitor;
8431                impl serde::de::Visitor<'_> for GeneratedVisitor {
8432                    type Value = GeneratedField;
8433                    fn expecting(
8434                        &self,
8435                        formatter: &mut std::fmt::Formatter<'_>,
8436                    ) -> std::fmt::Result {
8437                        write!(formatter, "expected one of: {:?}", & FIELDS)
8438                    }
8439                    #[allow(unused_variables)]
8440                    fn visit_str<E>(
8441                        self,
8442                        value: &str,
8443                    ) -> std::result::Result<GeneratedField, E>
8444                    where
8445                        E: serde::de::Error,
8446                    {
8447                        match value {
8448                            "name" => Ok(GeneratedField::Name),
8449                            "urn" => Ok(GeneratedField::Urn),
8450                            "address" => Ok(GeneratedField::Address),
8451                            "networkInterface" | "network_interface" => {
8452                                Ok(GeneratedField::NetworkInterface)
8453                            }
8454                            "privateAddress" | "private_address" => {
8455                                Ok(GeneratedField::PrivateAddress)
8456                            }
8457                            "autoAssigned" | "auto_assigned" => {
8458                                Ok(GeneratedField::AutoAssigned)
8459                            }
8460                            "createTime" | "create_time" => {
8461                                Ok(GeneratedField::CreateTime)
8462                            }
8463                            "creator" => Ok(GeneratedField::Creator),
8464                            "tags" => Ok(GeneratedField::Tags),
8465                            _ => Ok(GeneratedField::__SkipField__),
8466                        }
8467                    }
8468                }
8469                deserializer.deserialize_identifier(GeneratedVisitor)
8470            }
8471        }
8472        struct GeneratedVisitor;
8473        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8474            type Value = FloatingIp;
8475            fn expecting(
8476                &self,
8477                formatter: &mut std::fmt::Formatter<'_>,
8478            ) -> std::fmt::Result {
8479                formatter.write_str("struct origincloud.network.v1beta1.FloatingIp")
8480            }
8481            fn visit_map<V>(
8482                self,
8483                mut map_: V,
8484            ) -> std::result::Result<FloatingIp, V::Error>
8485            where
8486                V: serde::de::MapAccess<'de>,
8487            {
8488                let mut name__ = None;
8489                let mut urn__ = None;
8490                let mut address__ = None;
8491                let mut network_interface__ = None;
8492                let mut private_address__ = None;
8493                let mut auto_assigned__ = None;
8494                let mut create_time__ = None;
8495                let mut creator__ = None;
8496                let mut tags__ = None;
8497                while let Some(k) = map_.next_key()? {
8498                    match k {
8499                        GeneratedField::Name => {
8500                            if name__.is_some() {
8501                                return Err(serde::de::Error::duplicate_field("name"));
8502                            }
8503                            name__ = Some(map_.next_value()?);
8504                        }
8505                        GeneratedField::Urn => {
8506                            if urn__.is_some() {
8507                                return Err(serde::de::Error::duplicate_field("urn"));
8508                            }
8509                            urn__ = Some(map_.next_value()?);
8510                        }
8511                        GeneratedField::Address => {
8512                            if address__.is_some() {
8513                                return Err(serde::de::Error::duplicate_field("address"));
8514                            }
8515                            address__ = Some(map_.next_value()?);
8516                        }
8517                        GeneratedField::NetworkInterface => {
8518                            if network_interface__.is_some() {
8519                                return Err(
8520                                    serde::de::Error::duplicate_field("networkInterface"),
8521                                );
8522                            }
8523                            network_interface__ = Some(map_.next_value()?);
8524                        }
8525                        GeneratedField::PrivateAddress => {
8526                            if private_address__.is_some() {
8527                                return Err(
8528                                    serde::de::Error::duplicate_field("privateAddress"),
8529                                );
8530                            }
8531                            private_address__ = Some(map_.next_value()?);
8532                        }
8533                        GeneratedField::AutoAssigned => {
8534                            if auto_assigned__.is_some() {
8535                                return Err(
8536                                    serde::de::Error::duplicate_field("autoAssigned"),
8537                                );
8538                            }
8539                            auto_assigned__ = Some(map_.next_value()?);
8540                        }
8541                        GeneratedField::CreateTime => {
8542                            if create_time__.is_some() {
8543                                return Err(serde::de::Error::duplicate_field("createTime"));
8544                            }
8545                            create_time__ = map_.next_value()?;
8546                        }
8547                        GeneratedField::Creator => {
8548                            if creator__.is_some() {
8549                                return Err(serde::de::Error::duplicate_field("creator"));
8550                            }
8551                            creator__ = Some(map_.next_value()?);
8552                        }
8553                        GeneratedField::Tags => {
8554                            if tags__.is_some() {
8555                                return Err(serde::de::Error::duplicate_field("tags"));
8556                            }
8557                            tags__ = Some(
8558                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
8559                            );
8560                        }
8561                        GeneratedField::__SkipField__ => {
8562                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8563                        }
8564                    }
8565                }
8566                Ok(FloatingIp {
8567                    name: name__.unwrap_or_default(),
8568                    urn: urn__.unwrap_or_default(),
8569                    address: address__.unwrap_or_default(),
8570                    network_interface: network_interface__.unwrap_or_default(),
8571                    private_address: private_address__.unwrap_or_default(),
8572                    auto_assigned: auto_assigned__.unwrap_or_default(),
8573                    create_time: create_time__,
8574                    creator: creator__.unwrap_or_default(),
8575                    tags: tags__.unwrap_or_default(),
8576                })
8577            }
8578        }
8579        deserializer
8580            .deserialize_struct(
8581                "origincloud.network.v1beta1.FloatingIp",
8582                FIELDS,
8583                GeneratedVisitor,
8584            )
8585    }
8586}
8587impl serde::Serialize for FloatingIpAssociation {
8588    #[allow(deprecated)]
8589    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8590    where
8591        S: serde::Serializer,
8592    {
8593        use serde::ser::SerializeStruct;
8594        let mut len = 0;
8595        if !self.name.is_empty() {
8596            len += 1;
8597        }
8598        if !self.network_interface.is_empty() {
8599            len += 1;
8600        }
8601        if !self.private_address.is_empty() {
8602            len += 1;
8603        }
8604        let mut struct_ser = serializer
8605            .serialize_struct("origincloud.network.v1beta1.FloatingIpAssociation", len)?;
8606        if !self.name.is_empty() {
8607            struct_ser.serialize_field("name", &self.name)?;
8608        }
8609        if !self.network_interface.is_empty() {
8610            struct_ser.serialize_field("networkInterface", &self.network_interface)?;
8611        }
8612        if !self.private_address.is_empty() {
8613            struct_ser.serialize_field("privateAddress", &self.private_address)?;
8614        }
8615        struct_ser.end()
8616    }
8617}
8618impl<'de> serde::Deserialize<'de> for FloatingIpAssociation {
8619    #[allow(deprecated)]
8620    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8621    where
8622        D: serde::Deserializer<'de>,
8623    {
8624        const FIELDS: &[&str] = &[
8625            "name",
8626            "network_interface",
8627            "networkInterface",
8628            "private_address",
8629            "privateAddress",
8630        ];
8631        #[allow(clippy::enum_variant_names)]
8632        enum GeneratedField {
8633            Name,
8634            NetworkInterface,
8635            PrivateAddress,
8636            __SkipField__,
8637        }
8638        impl<'de> serde::Deserialize<'de> for GeneratedField {
8639            fn deserialize<D>(
8640                deserializer: D,
8641            ) -> std::result::Result<GeneratedField, D::Error>
8642            where
8643                D: serde::Deserializer<'de>,
8644            {
8645                struct GeneratedVisitor;
8646                impl serde::de::Visitor<'_> for GeneratedVisitor {
8647                    type Value = GeneratedField;
8648                    fn expecting(
8649                        &self,
8650                        formatter: &mut std::fmt::Formatter<'_>,
8651                    ) -> std::fmt::Result {
8652                        write!(formatter, "expected one of: {:?}", & FIELDS)
8653                    }
8654                    #[allow(unused_variables)]
8655                    fn visit_str<E>(
8656                        self,
8657                        value: &str,
8658                    ) -> std::result::Result<GeneratedField, E>
8659                    where
8660                        E: serde::de::Error,
8661                    {
8662                        match value {
8663                            "name" => Ok(GeneratedField::Name),
8664                            "networkInterface" | "network_interface" => {
8665                                Ok(GeneratedField::NetworkInterface)
8666                            }
8667                            "privateAddress" | "private_address" => {
8668                                Ok(GeneratedField::PrivateAddress)
8669                            }
8670                            _ => Ok(GeneratedField::__SkipField__),
8671                        }
8672                    }
8673                }
8674                deserializer.deserialize_identifier(GeneratedVisitor)
8675            }
8676        }
8677        struct GeneratedVisitor;
8678        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8679            type Value = FloatingIpAssociation;
8680            fn expecting(
8681                &self,
8682                formatter: &mut std::fmt::Formatter<'_>,
8683            ) -> std::fmt::Result {
8684                formatter
8685                    .write_str(
8686                        "struct origincloud.network.v1beta1.FloatingIpAssociation",
8687                    )
8688            }
8689            fn visit_map<V>(
8690                self,
8691                mut map_: V,
8692            ) -> std::result::Result<FloatingIpAssociation, V::Error>
8693            where
8694                V: serde::de::MapAccess<'de>,
8695            {
8696                let mut name__ = None;
8697                let mut network_interface__ = None;
8698                let mut private_address__ = None;
8699                while let Some(k) = map_.next_key()? {
8700                    match k {
8701                        GeneratedField::Name => {
8702                            if name__.is_some() {
8703                                return Err(serde::de::Error::duplicate_field("name"));
8704                            }
8705                            name__ = Some(map_.next_value()?);
8706                        }
8707                        GeneratedField::NetworkInterface => {
8708                            if network_interface__.is_some() {
8709                                return Err(
8710                                    serde::de::Error::duplicate_field("networkInterface"),
8711                                );
8712                            }
8713                            network_interface__ = Some(map_.next_value()?);
8714                        }
8715                        GeneratedField::PrivateAddress => {
8716                            if private_address__.is_some() {
8717                                return Err(
8718                                    serde::de::Error::duplicate_field("privateAddress"),
8719                                );
8720                            }
8721                            private_address__ = Some(map_.next_value()?);
8722                        }
8723                        GeneratedField::__SkipField__ => {
8724                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8725                        }
8726                    }
8727                }
8728                Ok(FloatingIpAssociation {
8729                    name: name__.unwrap_or_default(),
8730                    network_interface: network_interface__.unwrap_or_default(),
8731                    private_address: private_address__.unwrap_or_default(),
8732                })
8733            }
8734        }
8735        deserializer
8736            .deserialize_struct(
8737                "origincloud.network.v1beta1.FloatingIpAssociation",
8738                FIELDS,
8739                GeneratedVisitor,
8740            )
8741    }
8742}
8743impl serde::Serialize for GetAclAssociationRequest {
8744    #[allow(deprecated)]
8745    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8746    where
8747        S: serde::Serializer,
8748    {
8749        use serde::ser::SerializeStruct;
8750        let mut len = 0;
8751        if !self.name.is_empty() {
8752            len += 1;
8753        }
8754        let mut struct_ser = serializer
8755            .serialize_struct(
8756                "origincloud.network.v1beta1.GetAclAssociationRequest",
8757                len,
8758            )?;
8759        if !self.name.is_empty() {
8760            struct_ser.serialize_field("name", &self.name)?;
8761        }
8762        struct_ser.end()
8763    }
8764}
8765impl<'de> serde::Deserialize<'de> for GetAclAssociationRequest {
8766    #[allow(deprecated)]
8767    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8768    where
8769        D: serde::Deserializer<'de>,
8770    {
8771        const FIELDS: &[&str] = &["name"];
8772        #[allow(clippy::enum_variant_names)]
8773        enum GeneratedField {
8774            Name,
8775            __SkipField__,
8776        }
8777        impl<'de> serde::Deserialize<'de> for GeneratedField {
8778            fn deserialize<D>(
8779                deserializer: D,
8780            ) -> std::result::Result<GeneratedField, D::Error>
8781            where
8782                D: serde::Deserializer<'de>,
8783            {
8784                struct GeneratedVisitor;
8785                impl serde::de::Visitor<'_> for GeneratedVisitor {
8786                    type Value = GeneratedField;
8787                    fn expecting(
8788                        &self,
8789                        formatter: &mut std::fmt::Formatter<'_>,
8790                    ) -> std::fmt::Result {
8791                        write!(formatter, "expected one of: {:?}", & FIELDS)
8792                    }
8793                    #[allow(unused_variables)]
8794                    fn visit_str<E>(
8795                        self,
8796                        value: &str,
8797                    ) -> std::result::Result<GeneratedField, E>
8798                    where
8799                        E: serde::de::Error,
8800                    {
8801                        match value {
8802                            "name" => Ok(GeneratedField::Name),
8803                            _ => Ok(GeneratedField::__SkipField__),
8804                        }
8805                    }
8806                }
8807                deserializer.deserialize_identifier(GeneratedVisitor)
8808            }
8809        }
8810        struct GeneratedVisitor;
8811        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8812            type Value = GetAclAssociationRequest;
8813            fn expecting(
8814                &self,
8815                formatter: &mut std::fmt::Formatter<'_>,
8816            ) -> std::fmt::Result {
8817                formatter
8818                    .write_str(
8819                        "struct origincloud.network.v1beta1.GetAclAssociationRequest",
8820                    )
8821            }
8822            fn visit_map<V>(
8823                self,
8824                mut map_: V,
8825            ) -> std::result::Result<GetAclAssociationRequest, V::Error>
8826            where
8827                V: serde::de::MapAccess<'de>,
8828            {
8829                let mut name__ = None;
8830                while let Some(k) = map_.next_key()? {
8831                    match k {
8832                        GeneratedField::Name => {
8833                            if name__.is_some() {
8834                                return Err(serde::de::Error::duplicate_field("name"));
8835                            }
8836                            name__ = Some(map_.next_value()?);
8837                        }
8838                        GeneratedField::__SkipField__ => {
8839                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8840                        }
8841                    }
8842                }
8843                Ok(GetAclAssociationRequest {
8844                    name: name__.unwrap_or_default(),
8845                })
8846            }
8847        }
8848        deserializer
8849            .deserialize_struct(
8850                "origincloud.network.v1beta1.GetAclAssociationRequest",
8851                FIELDS,
8852                GeneratedVisitor,
8853            )
8854    }
8855}
8856impl serde::Serialize for GetAclRequest {
8857    #[allow(deprecated)]
8858    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8859    where
8860        S: serde::Serializer,
8861    {
8862        use serde::ser::SerializeStruct;
8863        let mut len = 0;
8864        if !self.name.is_empty() {
8865            len += 1;
8866        }
8867        let mut struct_ser = serializer
8868            .serialize_struct("origincloud.network.v1beta1.GetAclRequest", len)?;
8869        if !self.name.is_empty() {
8870            struct_ser.serialize_field("name", &self.name)?;
8871        }
8872        struct_ser.end()
8873    }
8874}
8875impl<'de> serde::Deserialize<'de> for GetAclRequest {
8876    #[allow(deprecated)]
8877    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8878    where
8879        D: serde::Deserializer<'de>,
8880    {
8881        const FIELDS: &[&str] = &["name"];
8882        #[allow(clippy::enum_variant_names)]
8883        enum GeneratedField {
8884            Name,
8885            __SkipField__,
8886        }
8887        impl<'de> serde::Deserialize<'de> for GeneratedField {
8888            fn deserialize<D>(
8889                deserializer: D,
8890            ) -> std::result::Result<GeneratedField, D::Error>
8891            where
8892                D: serde::Deserializer<'de>,
8893            {
8894                struct GeneratedVisitor;
8895                impl serde::de::Visitor<'_> for GeneratedVisitor {
8896                    type Value = GeneratedField;
8897                    fn expecting(
8898                        &self,
8899                        formatter: &mut std::fmt::Formatter<'_>,
8900                    ) -> std::fmt::Result {
8901                        write!(formatter, "expected one of: {:?}", & FIELDS)
8902                    }
8903                    #[allow(unused_variables)]
8904                    fn visit_str<E>(
8905                        self,
8906                        value: &str,
8907                    ) -> std::result::Result<GeneratedField, E>
8908                    where
8909                        E: serde::de::Error,
8910                    {
8911                        match value {
8912                            "name" => Ok(GeneratedField::Name),
8913                            _ => Ok(GeneratedField::__SkipField__),
8914                        }
8915                    }
8916                }
8917                deserializer.deserialize_identifier(GeneratedVisitor)
8918            }
8919        }
8920        struct GeneratedVisitor;
8921        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
8922            type Value = GetAclRequest;
8923            fn expecting(
8924                &self,
8925                formatter: &mut std::fmt::Formatter<'_>,
8926            ) -> std::fmt::Result {
8927                formatter.write_str("struct origincloud.network.v1beta1.GetAclRequest")
8928            }
8929            fn visit_map<V>(
8930                self,
8931                mut map_: V,
8932            ) -> std::result::Result<GetAclRequest, V::Error>
8933            where
8934                V: serde::de::MapAccess<'de>,
8935            {
8936                let mut name__ = None;
8937                while let Some(k) = map_.next_key()? {
8938                    match k {
8939                        GeneratedField::Name => {
8940                            if name__.is_some() {
8941                                return Err(serde::de::Error::duplicate_field("name"));
8942                            }
8943                            name__ = Some(map_.next_value()?);
8944                        }
8945                        GeneratedField::__SkipField__ => {
8946                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
8947                        }
8948                    }
8949                }
8950                Ok(GetAclRequest {
8951                    name: name__.unwrap_or_default(),
8952                })
8953            }
8954        }
8955        deserializer
8956            .deserialize_struct(
8957                "origincloud.network.v1beta1.GetAclRequest",
8958                FIELDS,
8959                GeneratedVisitor,
8960            )
8961    }
8962}
8963impl serde::Serialize for GetAclRuleRequest {
8964    #[allow(deprecated)]
8965    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
8966    where
8967        S: serde::Serializer,
8968    {
8969        use serde::ser::SerializeStruct;
8970        let mut len = 0;
8971        if !self.name.is_empty() {
8972            len += 1;
8973        }
8974        let mut struct_ser = serializer
8975            .serialize_struct("origincloud.network.v1beta1.GetAclRuleRequest", len)?;
8976        if !self.name.is_empty() {
8977            struct_ser.serialize_field("name", &self.name)?;
8978        }
8979        struct_ser.end()
8980    }
8981}
8982impl<'de> serde::Deserialize<'de> for GetAclRuleRequest {
8983    #[allow(deprecated)]
8984    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
8985    where
8986        D: serde::Deserializer<'de>,
8987    {
8988        const FIELDS: &[&str] = &["name"];
8989        #[allow(clippy::enum_variant_names)]
8990        enum GeneratedField {
8991            Name,
8992            __SkipField__,
8993        }
8994        impl<'de> serde::Deserialize<'de> for GeneratedField {
8995            fn deserialize<D>(
8996                deserializer: D,
8997            ) -> std::result::Result<GeneratedField, D::Error>
8998            where
8999                D: serde::Deserializer<'de>,
9000            {
9001                struct GeneratedVisitor;
9002                impl serde::de::Visitor<'_> for GeneratedVisitor {
9003                    type Value = GeneratedField;
9004                    fn expecting(
9005                        &self,
9006                        formatter: &mut std::fmt::Formatter<'_>,
9007                    ) -> std::fmt::Result {
9008                        write!(formatter, "expected one of: {:?}", & FIELDS)
9009                    }
9010                    #[allow(unused_variables)]
9011                    fn visit_str<E>(
9012                        self,
9013                        value: &str,
9014                    ) -> std::result::Result<GeneratedField, E>
9015                    where
9016                        E: serde::de::Error,
9017                    {
9018                        match value {
9019                            "name" => Ok(GeneratedField::Name),
9020                            _ => Ok(GeneratedField::__SkipField__),
9021                        }
9022                    }
9023                }
9024                deserializer.deserialize_identifier(GeneratedVisitor)
9025            }
9026        }
9027        struct GeneratedVisitor;
9028        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9029            type Value = GetAclRuleRequest;
9030            fn expecting(
9031                &self,
9032                formatter: &mut std::fmt::Formatter<'_>,
9033            ) -> std::fmt::Result {
9034                formatter
9035                    .write_str("struct origincloud.network.v1beta1.GetAclRuleRequest")
9036            }
9037            fn visit_map<V>(
9038                self,
9039                mut map_: V,
9040            ) -> std::result::Result<GetAclRuleRequest, V::Error>
9041            where
9042                V: serde::de::MapAccess<'de>,
9043            {
9044                let mut name__ = None;
9045                while let Some(k) = map_.next_key()? {
9046                    match k {
9047                        GeneratedField::Name => {
9048                            if name__.is_some() {
9049                                return Err(serde::de::Error::duplicate_field("name"));
9050                            }
9051                            name__ = Some(map_.next_value()?);
9052                        }
9053                        GeneratedField::__SkipField__ => {
9054                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9055                        }
9056                    }
9057                }
9058                Ok(GetAclRuleRequest {
9059                    name: name__.unwrap_or_default(),
9060                })
9061            }
9062        }
9063        deserializer
9064            .deserialize_struct(
9065                "origincloud.network.v1beta1.GetAclRuleRequest",
9066                FIELDS,
9067                GeneratedVisitor,
9068            )
9069    }
9070}
9071impl serde::Serialize for GetDnsPolicyAssociationRequest {
9072    #[allow(deprecated)]
9073    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9074    where
9075        S: serde::Serializer,
9076    {
9077        use serde::ser::SerializeStruct;
9078        let mut len = 0;
9079        if !self.name.is_empty() {
9080            len += 1;
9081        }
9082        let mut struct_ser = serializer
9083            .serialize_struct(
9084                "origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9085                len,
9086            )?;
9087        if !self.name.is_empty() {
9088            struct_ser.serialize_field("name", &self.name)?;
9089        }
9090        struct_ser.end()
9091    }
9092}
9093impl<'de> serde::Deserialize<'de> for GetDnsPolicyAssociationRequest {
9094    #[allow(deprecated)]
9095    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9096    where
9097        D: serde::Deserializer<'de>,
9098    {
9099        const FIELDS: &[&str] = &["name"];
9100        #[allow(clippy::enum_variant_names)]
9101        enum GeneratedField {
9102            Name,
9103            __SkipField__,
9104        }
9105        impl<'de> serde::Deserialize<'de> for GeneratedField {
9106            fn deserialize<D>(
9107                deserializer: D,
9108            ) -> std::result::Result<GeneratedField, D::Error>
9109            where
9110                D: serde::Deserializer<'de>,
9111            {
9112                struct GeneratedVisitor;
9113                impl serde::de::Visitor<'_> for GeneratedVisitor {
9114                    type Value = GeneratedField;
9115                    fn expecting(
9116                        &self,
9117                        formatter: &mut std::fmt::Formatter<'_>,
9118                    ) -> std::fmt::Result {
9119                        write!(formatter, "expected one of: {:?}", & FIELDS)
9120                    }
9121                    #[allow(unused_variables)]
9122                    fn visit_str<E>(
9123                        self,
9124                        value: &str,
9125                    ) -> std::result::Result<GeneratedField, E>
9126                    where
9127                        E: serde::de::Error,
9128                    {
9129                        match value {
9130                            "name" => Ok(GeneratedField::Name),
9131                            _ => Ok(GeneratedField::__SkipField__),
9132                        }
9133                    }
9134                }
9135                deserializer.deserialize_identifier(GeneratedVisitor)
9136            }
9137        }
9138        struct GeneratedVisitor;
9139        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9140            type Value = GetDnsPolicyAssociationRequest;
9141            fn expecting(
9142                &self,
9143                formatter: &mut std::fmt::Formatter<'_>,
9144            ) -> std::fmt::Result {
9145                formatter
9146                    .write_str(
9147                        "struct origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9148                    )
9149            }
9150            fn visit_map<V>(
9151                self,
9152                mut map_: V,
9153            ) -> std::result::Result<GetDnsPolicyAssociationRequest, V::Error>
9154            where
9155                V: serde::de::MapAccess<'de>,
9156            {
9157                let mut name__ = None;
9158                while let Some(k) = map_.next_key()? {
9159                    match k {
9160                        GeneratedField::Name => {
9161                            if name__.is_some() {
9162                                return Err(serde::de::Error::duplicate_field("name"));
9163                            }
9164                            name__ = Some(map_.next_value()?);
9165                        }
9166                        GeneratedField::__SkipField__ => {
9167                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9168                        }
9169                    }
9170                }
9171                Ok(GetDnsPolicyAssociationRequest {
9172                    name: name__.unwrap_or_default(),
9173                })
9174            }
9175        }
9176        deserializer
9177            .deserialize_struct(
9178                "origincloud.network.v1beta1.GetDnsPolicyAssociationRequest",
9179                FIELDS,
9180                GeneratedVisitor,
9181            )
9182    }
9183}
9184impl serde::Serialize for GetDnsPolicyRequest {
9185    #[allow(deprecated)]
9186    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9187    where
9188        S: serde::Serializer,
9189    {
9190        use serde::ser::SerializeStruct;
9191        let mut len = 0;
9192        if !self.name.is_empty() {
9193            len += 1;
9194        }
9195        let mut struct_ser = serializer
9196            .serialize_struct("origincloud.network.v1beta1.GetDnsPolicyRequest", len)?;
9197        if !self.name.is_empty() {
9198            struct_ser.serialize_field("name", &self.name)?;
9199        }
9200        struct_ser.end()
9201    }
9202}
9203impl<'de> serde::Deserialize<'de> for GetDnsPolicyRequest {
9204    #[allow(deprecated)]
9205    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9206    where
9207        D: serde::Deserializer<'de>,
9208    {
9209        const FIELDS: &[&str] = &["name"];
9210        #[allow(clippy::enum_variant_names)]
9211        enum GeneratedField {
9212            Name,
9213            __SkipField__,
9214        }
9215        impl<'de> serde::Deserialize<'de> for GeneratedField {
9216            fn deserialize<D>(
9217                deserializer: D,
9218            ) -> std::result::Result<GeneratedField, D::Error>
9219            where
9220                D: serde::Deserializer<'de>,
9221            {
9222                struct GeneratedVisitor;
9223                impl serde::de::Visitor<'_> for GeneratedVisitor {
9224                    type Value = GeneratedField;
9225                    fn expecting(
9226                        &self,
9227                        formatter: &mut std::fmt::Formatter<'_>,
9228                    ) -> std::fmt::Result {
9229                        write!(formatter, "expected one of: {:?}", & FIELDS)
9230                    }
9231                    #[allow(unused_variables)]
9232                    fn visit_str<E>(
9233                        self,
9234                        value: &str,
9235                    ) -> std::result::Result<GeneratedField, E>
9236                    where
9237                        E: serde::de::Error,
9238                    {
9239                        match value {
9240                            "name" => Ok(GeneratedField::Name),
9241                            _ => Ok(GeneratedField::__SkipField__),
9242                        }
9243                    }
9244                }
9245                deserializer.deserialize_identifier(GeneratedVisitor)
9246            }
9247        }
9248        struct GeneratedVisitor;
9249        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9250            type Value = GetDnsPolicyRequest;
9251            fn expecting(
9252                &self,
9253                formatter: &mut std::fmt::Formatter<'_>,
9254            ) -> std::fmt::Result {
9255                formatter
9256                    .write_str("struct origincloud.network.v1beta1.GetDnsPolicyRequest")
9257            }
9258            fn visit_map<V>(
9259                self,
9260                mut map_: V,
9261            ) -> std::result::Result<GetDnsPolicyRequest, V::Error>
9262            where
9263                V: serde::de::MapAccess<'de>,
9264            {
9265                let mut name__ = None;
9266                while let Some(k) = map_.next_key()? {
9267                    match k {
9268                        GeneratedField::Name => {
9269                            if name__.is_some() {
9270                                return Err(serde::de::Error::duplicate_field("name"));
9271                            }
9272                            name__ = Some(map_.next_value()?);
9273                        }
9274                        GeneratedField::__SkipField__ => {
9275                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9276                        }
9277                    }
9278                }
9279                Ok(GetDnsPolicyRequest {
9280                    name: name__.unwrap_or_default(),
9281                })
9282            }
9283        }
9284        deserializer
9285            .deserialize_struct(
9286                "origincloud.network.v1beta1.GetDnsPolicyRequest",
9287                FIELDS,
9288                GeneratedVisitor,
9289            )
9290    }
9291}
9292impl serde::Serialize for GetFloatingIpAssociationRequest {
9293    #[allow(deprecated)]
9294    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9295    where
9296        S: serde::Serializer,
9297    {
9298        use serde::ser::SerializeStruct;
9299        let mut len = 0;
9300        if !self.name.is_empty() {
9301            len += 1;
9302        }
9303        let mut struct_ser = serializer
9304            .serialize_struct(
9305                "origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9306                len,
9307            )?;
9308        if !self.name.is_empty() {
9309            struct_ser.serialize_field("name", &self.name)?;
9310        }
9311        struct_ser.end()
9312    }
9313}
9314impl<'de> serde::Deserialize<'de> for GetFloatingIpAssociationRequest {
9315    #[allow(deprecated)]
9316    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9317    where
9318        D: serde::Deserializer<'de>,
9319    {
9320        const FIELDS: &[&str] = &["name"];
9321        #[allow(clippy::enum_variant_names)]
9322        enum GeneratedField {
9323            Name,
9324            __SkipField__,
9325        }
9326        impl<'de> serde::Deserialize<'de> for GeneratedField {
9327            fn deserialize<D>(
9328                deserializer: D,
9329            ) -> std::result::Result<GeneratedField, D::Error>
9330            where
9331                D: serde::Deserializer<'de>,
9332            {
9333                struct GeneratedVisitor;
9334                impl serde::de::Visitor<'_> for GeneratedVisitor {
9335                    type Value = GeneratedField;
9336                    fn expecting(
9337                        &self,
9338                        formatter: &mut std::fmt::Formatter<'_>,
9339                    ) -> std::fmt::Result {
9340                        write!(formatter, "expected one of: {:?}", & FIELDS)
9341                    }
9342                    #[allow(unused_variables)]
9343                    fn visit_str<E>(
9344                        self,
9345                        value: &str,
9346                    ) -> std::result::Result<GeneratedField, E>
9347                    where
9348                        E: serde::de::Error,
9349                    {
9350                        match value {
9351                            "name" => Ok(GeneratedField::Name),
9352                            _ => Ok(GeneratedField::__SkipField__),
9353                        }
9354                    }
9355                }
9356                deserializer.deserialize_identifier(GeneratedVisitor)
9357            }
9358        }
9359        struct GeneratedVisitor;
9360        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9361            type Value = GetFloatingIpAssociationRequest;
9362            fn expecting(
9363                &self,
9364                formatter: &mut std::fmt::Formatter<'_>,
9365            ) -> std::fmt::Result {
9366                formatter
9367                    .write_str(
9368                        "struct origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9369                    )
9370            }
9371            fn visit_map<V>(
9372                self,
9373                mut map_: V,
9374            ) -> std::result::Result<GetFloatingIpAssociationRequest, V::Error>
9375            where
9376                V: serde::de::MapAccess<'de>,
9377            {
9378                let mut name__ = None;
9379                while let Some(k) = map_.next_key()? {
9380                    match k {
9381                        GeneratedField::Name => {
9382                            if name__.is_some() {
9383                                return Err(serde::de::Error::duplicate_field("name"));
9384                            }
9385                            name__ = Some(map_.next_value()?);
9386                        }
9387                        GeneratedField::__SkipField__ => {
9388                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9389                        }
9390                    }
9391                }
9392                Ok(GetFloatingIpAssociationRequest {
9393                    name: name__.unwrap_or_default(),
9394                })
9395            }
9396        }
9397        deserializer
9398            .deserialize_struct(
9399                "origincloud.network.v1beta1.GetFloatingIpAssociationRequest",
9400                FIELDS,
9401                GeneratedVisitor,
9402            )
9403    }
9404}
9405impl serde::Serialize for GetFloatingIpRequest {
9406    #[allow(deprecated)]
9407    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9408    where
9409        S: serde::Serializer,
9410    {
9411        use serde::ser::SerializeStruct;
9412        let mut len = 0;
9413        if !self.name.is_empty() {
9414            len += 1;
9415        }
9416        let mut struct_ser = serializer
9417            .serialize_struct("origincloud.network.v1beta1.GetFloatingIpRequest", len)?;
9418        if !self.name.is_empty() {
9419            struct_ser.serialize_field("name", &self.name)?;
9420        }
9421        struct_ser.end()
9422    }
9423}
9424impl<'de> serde::Deserialize<'de> for GetFloatingIpRequest {
9425    #[allow(deprecated)]
9426    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9427    where
9428        D: serde::Deserializer<'de>,
9429    {
9430        const FIELDS: &[&str] = &["name"];
9431        #[allow(clippy::enum_variant_names)]
9432        enum GeneratedField {
9433            Name,
9434            __SkipField__,
9435        }
9436        impl<'de> serde::Deserialize<'de> for GeneratedField {
9437            fn deserialize<D>(
9438                deserializer: D,
9439            ) -> std::result::Result<GeneratedField, D::Error>
9440            where
9441                D: serde::Deserializer<'de>,
9442            {
9443                struct GeneratedVisitor;
9444                impl serde::de::Visitor<'_> for GeneratedVisitor {
9445                    type Value = GeneratedField;
9446                    fn expecting(
9447                        &self,
9448                        formatter: &mut std::fmt::Formatter<'_>,
9449                    ) -> std::fmt::Result {
9450                        write!(formatter, "expected one of: {:?}", & FIELDS)
9451                    }
9452                    #[allow(unused_variables)]
9453                    fn visit_str<E>(
9454                        self,
9455                        value: &str,
9456                    ) -> std::result::Result<GeneratedField, E>
9457                    where
9458                        E: serde::de::Error,
9459                    {
9460                        match value {
9461                            "name" => Ok(GeneratedField::Name),
9462                            _ => Ok(GeneratedField::__SkipField__),
9463                        }
9464                    }
9465                }
9466                deserializer.deserialize_identifier(GeneratedVisitor)
9467            }
9468        }
9469        struct GeneratedVisitor;
9470        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9471            type Value = GetFloatingIpRequest;
9472            fn expecting(
9473                &self,
9474                formatter: &mut std::fmt::Formatter<'_>,
9475            ) -> std::fmt::Result {
9476                formatter
9477                    .write_str("struct origincloud.network.v1beta1.GetFloatingIpRequest")
9478            }
9479            fn visit_map<V>(
9480                self,
9481                mut map_: V,
9482            ) -> std::result::Result<GetFloatingIpRequest, V::Error>
9483            where
9484                V: serde::de::MapAccess<'de>,
9485            {
9486                let mut name__ = None;
9487                while let Some(k) = map_.next_key()? {
9488                    match k {
9489                        GeneratedField::Name => {
9490                            if name__.is_some() {
9491                                return Err(serde::de::Error::duplicate_field("name"));
9492                            }
9493                            name__ = Some(map_.next_value()?);
9494                        }
9495                        GeneratedField::__SkipField__ => {
9496                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9497                        }
9498                    }
9499                }
9500                Ok(GetFloatingIpRequest {
9501                    name: name__.unwrap_or_default(),
9502                })
9503            }
9504        }
9505        deserializer
9506            .deserialize_struct(
9507                "origincloud.network.v1beta1.GetFloatingIpRequest",
9508                FIELDS,
9509                GeneratedVisitor,
9510            )
9511    }
9512}
9513impl serde::Serialize for GetInternetGatewayRequest {
9514    #[allow(deprecated)]
9515    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9516    where
9517        S: serde::Serializer,
9518    {
9519        use serde::ser::SerializeStruct;
9520        let mut len = 0;
9521        if !self.name.is_empty() {
9522            len += 1;
9523        }
9524        let mut struct_ser = serializer
9525            .serialize_struct(
9526                "origincloud.network.v1beta1.GetInternetGatewayRequest",
9527                len,
9528            )?;
9529        if !self.name.is_empty() {
9530            struct_ser.serialize_field("name", &self.name)?;
9531        }
9532        struct_ser.end()
9533    }
9534}
9535impl<'de> serde::Deserialize<'de> for GetInternetGatewayRequest {
9536    #[allow(deprecated)]
9537    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9538    where
9539        D: serde::Deserializer<'de>,
9540    {
9541        const FIELDS: &[&str] = &["name"];
9542        #[allow(clippy::enum_variant_names)]
9543        enum GeneratedField {
9544            Name,
9545            __SkipField__,
9546        }
9547        impl<'de> serde::Deserialize<'de> for GeneratedField {
9548            fn deserialize<D>(
9549                deserializer: D,
9550            ) -> std::result::Result<GeneratedField, D::Error>
9551            where
9552                D: serde::Deserializer<'de>,
9553            {
9554                struct GeneratedVisitor;
9555                impl serde::de::Visitor<'_> for GeneratedVisitor {
9556                    type Value = GeneratedField;
9557                    fn expecting(
9558                        &self,
9559                        formatter: &mut std::fmt::Formatter<'_>,
9560                    ) -> std::fmt::Result {
9561                        write!(formatter, "expected one of: {:?}", & FIELDS)
9562                    }
9563                    #[allow(unused_variables)]
9564                    fn visit_str<E>(
9565                        self,
9566                        value: &str,
9567                    ) -> std::result::Result<GeneratedField, E>
9568                    where
9569                        E: serde::de::Error,
9570                    {
9571                        match value {
9572                            "name" => Ok(GeneratedField::Name),
9573                            _ => Ok(GeneratedField::__SkipField__),
9574                        }
9575                    }
9576                }
9577                deserializer.deserialize_identifier(GeneratedVisitor)
9578            }
9579        }
9580        struct GeneratedVisitor;
9581        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9582            type Value = GetInternetGatewayRequest;
9583            fn expecting(
9584                &self,
9585                formatter: &mut std::fmt::Formatter<'_>,
9586            ) -> std::fmt::Result {
9587                formatter
9588                    .write_str(
9589                        "struct origincloud.network.v1beta1.GetInternetGatewayRequest",
9590                    )
9591            }
9592            fn visit_map<V>(
9593                self,
9594                mut map_: V,
9595            ) -> std::result::Result<GetInternetGatewayRequest, V::Error>
9596            where
9597                V: serde::de::MapAccess<'de>,
9598            {
9599                let mut name__ = None;
9600                while let Some(k) = map_.next_key()? {
9601                    match k {
9602                        GeneratedField::Name => {
9603                            if name__.is_some() {
9604                                return Err(serde::de::Error::duplicate_field("name"));
9605                            }
9606                            name__ = Some(map_.next_value()?);
9607                        }
9608                        GeneratedField::__SkipField__ => {
9609                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9610                        }
9611                    }
9612                }
9613                Ok(GetInternetGatewayRequest {
9614                    name: name__.unwrap_or_default(),
9615                })
9616            }
9617        }
9618        deserializer
9619            .deserialize_struct(
9620                "origincloud.network.v1beta1.GetInternetGatewayRequest",
9621                FIELDS,
9622                GeneratedVisitor,
9623            )
9624    }
9625}
9626impl serde::Serialize for GetNatGatewayRequest {
9627    #[allow(deprecated)]
9628    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9629    where
9630        S: serde::Serializer,
9631    {
9632        use serde::ser::SerializeStruct;
9633        let mut len = 0;
9634        if !self.name.is_empty() {
9635            len += 1;
9636        }
9637        let mut struct_ser = serializer
9638            .serialize_struct("origincloud.network.v1beta1.GetNatGatewayRequest", len)?;
9639        if !self.name.is_empty() {
9640            struct_ser.serialize_field("name", &self.name)?;
9641        }
9642        struct_ser.end()
9643    }
9644}
9645impl<'de> serde::Deserialize<'de> for GetNatGatewayRequest {
9646    #[allow(deprecated)]
9647    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9648    where
9649        D: serde::Deserializer<'de>,
9650    {
9651        const FIELDS: &[&str] = &["name"];
9652        #[allow(clippy::enum_variant_names)]
9653        enum GeneratedField {
9654            Name,
9655            __SkipField__,
9656        }
9657        impl<'de> serde::Deserialize<'de> for GeneratedField {
9658            fn deserialize<D>(
9659                deserializer: D,
9660            ) -> std::result::Result<GeneratedField, D::Error>
9661            where
9662                D: serde::Deserializer<'de>,
9663            {
9664                struct GeneratedVisitor;
9665                impl serde::de::Visitor<'_> for GeneratedVisitor {
9666                    type Value = GeneratedField;
9667                    fn expecting(
9668                        &self,
9669                        formatter: &mut std::fmt::Formatter<'_>,
9670                    ) -> std::fmt::Result {
9671                        write!(formatter, "expected one of: {:?}", & FIELDS)
9672                    }
9673                    #[allow(unused_variables)]
9674                    fn visit_str<E>(
9675                        self,
9676                        value: &str,
9677                    ) -> std::result::Result<GeneratedField, E>
9678                    where
9679                        E: serde::de::Error,
9680                    {
9681                        match value {
9682                            "name" => Ok(GeneratedField::Name),
9683                            _ => Ok(GeneratedField::__SkipField__),
9684                        }
9685                    }
9686                }
9687                deserializer.deserialize_identifier(GeneratedVisitor)
9688            }
9689        }
9690        struct GeneratedVisitor;
9691        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9692            type Value = GetNatGatewayRequest;
9693            fn expecting(
9694                &self,
9695                formatter: &mut std::fmt::Formatter<'_>,
9696            ) -> std::fmt::Result {
9697                formatter
9698                    .write_str("struct origincloud.network.v1beta1.GetNatGatewayRequest")
9699            }
9700            fn visit_map<V>(
9701                self,
9702                mut map_: V,
9703            ) -> std::result::Result<GetNatGatewayRequest, V::Error>
9704            where
9705                V: serde::de::MapAccess<'de>,
9706            {
9707                let mut name__ = None;
9708                while let Some(k) = map_.next_key()? {
9709                    match k {
9710                        GeneratedField::Name => {
9711                            if name__.is_some() {
9712                                return Err(serde::de::Error::duplicate_field("name"));
9713                            }
9714                            name__ = Some(map_.next_value()?);
9715                        }
9716                        GeneratedField::__SkipField__ => {
9717                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9718                        }
9719                    }
9720                }
9721                Ok(GetNatGatewayRequest {
9722                    name: name__.unwrap_or_default(),
9723                })
9724            }
9725        }
9726        deserializer
9727            .deserialize_struct(
9728                "origincloud.network.v1beta1.GetNatGatewayRequest",
9729                FIELDS,
9730                GeneratedVisitor,
9731            )
9732    }
9733}
9734impl serde::Serialize for GetNetworkInterfaceRequest {
9735    #[allow(deprecated)]
9736    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9737    where
9738        S: serde::Serializer,
9739    {
9740        use serde::ser::SerializeStruct;
9741        let mut len = 0;
9742        if !self.name.is_empty() {
9743            len += 1;
9744        }
9745        let mut struct_ser = serializer
9746            .serialize_struct(
9747                "origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9748                len,
9749            )?;
9750        if !self.name.is_empty() {
9751            struct_ser.serialize_field("name", &self.name)?;
9752        }
9753        struct_ser.end()
9754    }
9755}
9756impl<'de> serde::Deserialize<'de> for GetNetworkInterfaceRequest {
9757    #[allow(deprecated)]
9758    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9759    where
9760        D: serde::Deserializer<'de>,
9761    {
9762        const FIELDS: &[&str] = &["name"];
9763        #[allow(clippy::enum_variant_names)]
9764        enum GeneratedField {
9765            Name,
9766            __SkipField__,
9767        }
9768        impl<'de> serde::Deserialize<'de> for GeneratedField {
9769            fn deserialize<D>(
9770                deserializer: D,
9771            ) -> std::result::Result<GeneratedField, D::Error>
9772            where
9773                D: serde::Deserializer<'de>,
9774            {
9775                struct GeneratedVisitor;
9776                impl serde::de::Visitor<'_> for GeneratedVisitor {
9777                    type Value = GeneratedField;
9778                    fn expecting(
9779                        &self,
9780                        formatter: &mut std::fmt::Formatter<'_>,
9781                    ) -> std::fmt::Result {
9782                        write!(formatter, "expected one of: {:?}", & FIELDS)
9783                    }
9784                    #[allow(unused_variables)]
9785                    fn visit_str<E>(
9786                        self,
9787                        value: &str,
9788                    ) -> std::result::Result<GeneratedField, E>
9789                    where
9790                        E: serde::de::Error,
9791                    {
9792                        match value {
9793                            "name" => Ok(GeneratedField::Name),
9794                            _ => Ok(GeneratedField::__SkipField__),
9795                        }
9796                    }
9797                }
9798                deserializer.deserialize_identifier(GeneratedVisitor)
9799            }
9800        }
9801        struct GeneratedVisitor;
9802        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9803            type Value = GetNetworkInterfaceRequest;
9804            fn expecting(
9805                &self,
9806                formatter: &mut std::fmt::Formatter<'_>,
9807            ) -> std::fmt::Result {
9808                formatter
9809                    .write_str(
9810                        "struct origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9811                    )
9812            }
9813            fn visit_map<V>(
9814                self,
9815                mut map_: V,
9816            ) -> std::result::Result<GetNetworkInterfaceRequest, V::Error>
9817            where
9818                V: serde::de::MapAccess<'de>,
9819            {
9820                let mut name__ = None;
9821                while let Some(k) = map_.next_key()? {
9822                    match k {
9823                        GeneratedField::Name => {
9824                            if name__.is_some() {
9825                                return Err(serde::de::Error::duplicate_field("name"));
9826                            }
9827                            name__ = Some(map_.next_value()?);
9828                        }
9829                        GeneratedField::__SkipField__ => {
9830                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9831                        }
9832                    }
9833                }
9834                Ok(GetNetworkInterfaceRequest {
9835                    name: name__.unwrap_or_default(),
9836                })
9837            }
9838        }
9839        deserializer
9840            .deserialize_struct(
9841                "origincloud.network.v1beta1.GetNetworkInterfaceRequest",
9842                FIELDS,
9843                GeneratedVisitor,
9844            )
9845    }
9846}
9847impl serde::Serialize for GetRouteRequest {
9848    #[allow(deprecated)]
9849    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9850    where
9851        S: serde::Serializer,
9852    {
9853        use serde::ser::SerializeStruct;
9854        let mut len = 0;
9855        if !self.name.is_empty() {
9856            len += 1;
9857        }
9858        let mut struct_ser = serializer
9859            .serialize_struct("origincloud.network.v1beta1.GetRouteRequest", len)?;
9860        if !self.name.is_empty() {
9861            struct_ser.serialize_field("name", &self.name)?;
9862        }
9863        struct_ser.end()
9864    }
9865}
9866impl<'de> serde::Deserialize<'de> for GetRouteRequest {
9867    #[allow(deprecated)]
9868    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9869    where
9870        D: serde::Deserializer<'de>,
9871    {
9872        const FIELDS: &[&str] = &["name"];
9873        #[allow(clippy::enum_variant_names)]
9874        enum GeneratedField {
9875            Name,
9876            __SkipField__,
9877        }
9878        impl<'de> serde::Deserialize<'de> for GeneratedField {
9879            fn deserialize<D>(
9880                deserializer: D,
9881            ) -> std::result::Result<GeneratedField, D::Error>
9882            where
9883                D: serde::Deserializer<'de>,
9884            {
9885                struct GeneratedVisitor;
9886                impl serde::de::Visitor<'_> for GeneratedVisitor {
9887                    type Value = GeneratedField;
9888                    fn expecting(
9889                        &self,
9890                        formatter: &mut std::fmt::Formatter<'_>,
9891                    ) -> std::fmt::Result {
9892                        write!(formatter, "expected one of: {:?}", & FIELDS)
9893                    }
9894                    #[allow(unused_variables)]
9895                    fn visit_str<E>(
9896                        self,
9897                        value: &str,
9898                    ) -> std::result::Result<GeneratedField, E>
9899                    where
9900                        E: serde::de::Error,
9901                    {
9902                        match value {
9903                            "name" => Ok(GeneratedField::Name),
9904                            _ => Ok(GeneratedField::__SkipField__),
9905                        }
9906                    }
9907                }
9908                deserializer.deserialize_identifier(GeneratedVisitor)
9909            }
9910        }
9911        struct GeneratedVisitor;
9912        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
9913            type Value = GetRouteRequest;
9914            fn expecting(
9915                &self,
9916                formatter: &mut std::fmt::Formatter<'_>,
9917            ) -> std::fmt::Result {
9918                formatter.write_str("struct origincloud.network.v1beta1.GetRouteRequest")
9919            }
9920            fn visit_map<V>(
9921                self,
9922                mut map_: V,
9923            ) -> std::result::Result<GetRouteRequest, V::Error>
9924            where
9925                V: serde::de::MapAccess<'de>,
9926            {
9927                let mut name__ = None;
9928                while let Some(k) = map_.next_key()? {
9929                    match k {
9930                        GeneratedField::Name => {
9931                            if name__.is_some() {
9932                                return Err(serde::de::Error::duplicate_field("name"));
9933                            }
9934                            name__ = Some(map_.next_value()?);
9935                        }
9936                        GeneratedField::__SkipField__ => {
9937                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
9938                        }
9939                    }
9940                }
9941                Ok(GetRouteRequest {
9942                    name: name__.unwrap_or_default(),
9943                })
9944            }
9945        }
9946        deserializer
9947            .deserialize_struct(
9948                "origincloud.network.v1beta1.GetRouteRequest",
9949                FIELDS,
9950                GeneratedVisitor,
9951            )
9952    }
9953}
9954impl serde::Serialize for GetRouteTableAssociationRequest {
9955    #[allow(deprecated)]
9956    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
9957    where
9958        S: serde::Serializer,
9959    {
9960        use serde::ser::SerializeStruct;
9961        let mut len = 0;
9962        if !self.name.is_empty() {
9963            len += 1;
9964        }
9965        let mut struct_ser = serializer
9966            .serialize_struct(
9967                "origincloud.network.v1beta1.GetRouteTableAssociationRequest",
9968                len,
9969            )?;
9970        if !self.name.is_empty() {
9971            struct_ser.serialize_field("name", &self.name)?;
9972        }
9973        struct_ser.end()
9974    }
9975}
9976impl<'de> serde::Deserialize<'de> for GetRouteTableAssociationRequest {
9977    #[allow(deprecated)]
9978    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
9979    where
9980        D: serde::Deserializer<'de>,
9981    {
9982        const FIELDS: &[&str] = &["name"];
9983        #[allow(clippy::enum_variant_names)]
9984        enum GeneratedField {
9985            Name,
9986            __SkipField__,
9987        }
9988        impl<'de> serde::Deserialize<'de> for GeneratedField {
9989            fn deserialize<D>(
9990                deserializer: D,
9991            ) -> std::result::Result<GeneratedField, D::Error>
9992            where
9993                D: serde::Deserializer<'de>,
9994            {
9995                struct GeneratedVisitor;
9996                impl serde::de::Visitor<'_> for GeneratedVisitor {
9997                    type Value = GeneratedField;
9998                    fn expecting(
9999                        &self,
10000                        formatter: &mut std::fmt::Formatter<'_>,
10001                    ) -> std::fmt::Result {
10002                        write!(formatter, "expected one of: {:?}", & FIELDS)
10003                    }
10004                    #[allow(unused_variables)]
10005                    fn visit_str<E>(
10006                        self,
10007                        value: &str,
10008                    ) -> std::result::Result<GeneratedField, E>
10009                    where
10010                        E: serde::de::Error,
10011                    {
10012                        match value {
10013                            "name" => Ok(GeneratedField::Name),
10014                            _ => Ok(GeneratedField::__SkipField__),
10015                        }
10016                    }
10017                }
10018                deserializer.deserialize_identifier(GeneratedVisitor)
10019            }
10020        }
10021        struct GeneratedVisitor;
10022        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10023            type Value = GetRouteTableAssociationRequest;
10024            fn expecting(
10025                &self,
10026                formatter: &mut std::fmt::Formatter<'_>,
10027            ) -> std::fmt::Result {
10028                formatter
10029                    .write_str(
10030                        "struct origincloud.network.v1beta1.GetRouteTableAssociationRequest",
10031                    )
10032            }
10033            fn visit_map<V>(
10034                self,
10035                mut map_: V,
10036            ) -> std::result::Result<GetRouteTableAssociationRequest, V::Error>
10037            where
10038                V: serde::de::MapAccess<'de>,
10039            {
10040                let mut name__ = None;
10041                while let Some(k) = map_.next_key()? {
10042                    match k {
10043                        GeneratedField::Name => {
10044                            if name__.is_some() {
10045                                return Err(serde::de::Error::duplicate_field("name"));
10046                            }
10047                            name__ = Some(map_.next_value()?);
10048                        }
10049                        GeneratedField::__SkipField__ => {
10050                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10051                        }
10052                    }
10053                }
10054                Ok(GetRouteTableAssociationRequest {
10055                    name: name__.unwrap_or_default(),
10056                })
10057            }
10058        }
10059        deserializer
10060            .deserialize_struct(
10061                "origincloud.network.v1beta1.GetRouteTableAssociationRequest",
10062                FIELDS,
10063                GeneratedVisitor,
10064            )
10065    }
10066}
10067impl serde::Serialize for GetRouteTableRequest {
10068    #[allow(deprecated)]
10069    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10070    where
10071        S: serde::Serializer,
10072    {
10073        use serde::ser::SerializeStruct;
10074        let mut len = 0;
10075        if !self.name.is_empty() {
10076            len += 1;
10077        }
10078        let mut struct_ser = serializer
10079            .serialize_struct("origincloud.network.v1beta1.GetRouteTableRequest", len)?;
10080        if !self.name.is_empty() {
10081            struct_ser.serialize_field("name", &self.name)?;
10082        }
10083        struct_ser.end()
10084    }
10085}
10086impl<'de> serde::Deserialize<'de> for GetRouteTableRequest {
10087    #[allow(deprecated)]
10088    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10089    where
10090        D: serde::Deserializer<'de>,
10091    {
10092        const FIELDS: &[&str] = &["name"];
10093        #[allow(clippy::enum_variant_names)]
10094        enum GeneratedField {
10095            Name,
10096            __SkipField__,
10097        }
10098        impl<'de> serde::Deserialize<'de> for GeneratedField {
10099            fn deserialize<D>(
10100                deserializer: D,
10101            ) -> std::result::Result<GeneratedField, D::Error>
10102            where
10103                D: serde::Deserializer<'de>,
10104            {
10105                struct GeneratedVisitor;
10106                impl serde::de::Visitor<'_> for GeneratedVisitor {
10107                    type Value = GeneratedField;
10108                    fn expecting(
10109                        &self,
10110                        formatter: &mut std::fmt::Formatter<'_>,
10111                    ) -> std::fmt::Result {
10112                        write!(formatter, "expected one of: {:?}", & FIELDS)
10113                    }
10114                    #[allow(unused_variables)]
10115                    fn visit_str<E>(
10116                        self,
10117                        value: &str,
10118                    ) -> std::result::Result<GeneratedField, E>
10119                    where
10120                        E: serde::de::Error,
10121                    {
10122                        match value {
10123                            "name" => Ok(GeneratedField::Name),
10124                            _ => Ok(GeneratedField::__SkipField__),
10125                        }
10126                    }
10127                }
10128                deserializer.deserialize_identifier(GeneratedVisitor)
10129            }
10130        }
10131        struct GeneratedVisitor;
10132        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10133            type Value = GetRouteTableRequest;
10134            fn expecting(
10135                &self,
10136                formatter: &mut std::fmt::Formatter<'_>,
10137            ) -> std::fmt::Result {
10138                formatter
10139                    .write_str("struct origincloud.network.v1beta1.GetRouteTableRequest")
10140            }
10141            fn visit_map<V>(
10142                self,
10143                mut map_: V,
10144            ) -> std::result::Result<GetRouteTableRequest, V::Error>
10145            where
10146                V: serde::de::MapAccess<'de>,
10147            {
10148                let mut name__ = None;
10149                while let Some(k) = map_.next_key()? {
10150                    match k {
10151                        GeneratedField::Name => {
10152                            if name__.is_some() {
10153                                return Err(serde::de::Error::duplicate_field("name"));
10154                            }
10155                            name__ = Some(map_.next_value()?);
10156                        }
10157                        GeneratedField::__SkipField__ => {
10158                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10159                        }
10160                    }
10161                }
10162                Ok(GetRouteTableRequest {
10163                    name: name__.unwrap_or_default(),
10164                })
10165            }
10166        }
10167        deserializer
10168            .deserialize_struct(
10169                "origincloud.network.v1beta1.GetRouteTableRequest",
10170                FIELDS,
10171                GeneratedVisitor,
10172            )
10173    }
10174}
10175impl serde::Serialize for GetSecurityGroupAssociationRequest {
10176    #[allow(deprecated)]
10177    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10178    where
10179        S: serde::Serializer,
10180    {
10181        use serde::ser::SerializeStruct;
10182        let mut len = 0;
10183        if !self.name.is_empty() {
10184            len += 1;
10185        }
10186        let mut struct_ser = serializer
10187            .serialize_struct(
10188                "origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10189                len,
10190            )?;
10191        if !self.name.is_empty() {
10192            struct_ser.serialize_field("name", &self.name)?;
10193        }
10194        struct_ser.end()
10195    }
10196}
10197impl<'de> serde::Deserialize<'de> for GetSecurityGroupAssociationRequest {
10198    #[allow(deprecated)]
10199    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10200    where
10201        D: serde::Deserializer<'de>,
10202    {
10203        const FIELDS: &[&str] = &["name"];
10204        #[allow(clippy::enum_variant_names)]
10205        enum GeneratedField {
10206            Name,
10207            __SkipField__,
10208        }
10209        impl<'de> serde::Deserialize<'de> for GeneratedField {
10210            fn deserialize<D>(
10211                deserializer: D,
10212            ) -> std::result::Result<GeneratedField, D::Error>
10213            where
10214                D: serde::Deserializer<'de>,
10215            {
10216                struct GeneratedVisitor;
10217                impl serde::de::Visitor<'_> for GeneratedVisitor {
10218                    type Value = GeneratedField;
10219                    fn expecting(
10220                        &self,
10221                        formatter: &mut std::fmt::Formatter<'_>,
10222                    ) -> std::fmt::Result {
10223                        write!(formatter, "expected one of: {:?}", & FIELDS)
10224                    }
10225                    #[allow(unused_variables)]
10226                    fn visit_str<E>(
10227                        self,
10228                        value: &str,
10229                    ) -> std::result::Result<GeneratedField, E>
10230                    where
10231                        E: serde::de::Error,
10232                    {
10233                        match value {
10234                            "name" => Ok(GeneratedField::Name),
10235                            _ => Ok(GeneratedField::__SkipField__),
10236                        }
10237                    }
10238                }
10239                deserializer.deserialize_identifier(GeneratedVisitor)
10240            }
10241        }
10242        struct GeneratedVisitor;
10243        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10244            type Value = GetSecurityGroupAssociationRequest;
10245            fn expecting(
10246                &self,
10247                formatter: &mut std::fmt::Formatter<'_>,
10248            ) -> std::fmt::Result {
10249                formatter
10250                    .write_str(
10251                        "struct origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10252                    )
10253            }
10254            fn visit_map<V>(
10255                self,
10256                mut map_: V,
10257            ) -> std::result::Result<GetSecurityGroupAssociationRequest, V::Error>
10258            where
10259                V: serde::de::MapAccess<'de>,
10260            {
10261                let mut name__ = None;
10262                while let Some(k) = map_.next_key()? {
10263                    match k {
10264                        GeneratedField::Name => {
10265                            if name__.is_some() {
10266                                return Err(serde::de::Error::duplicate_field("name"));
10267                            }
10268                            name__ = Some(map_.next_value()?);
10269                        }
10270                        GeneratedField::__SkipField__ => {
10271                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10272                        }
10273                    }
10274                }
10275                Ok(GetSecurityGroupAssociationRequest {
10276                    name: name__.unwrap_or_default(),
10277                })
10278            }
10279        }
10280        deserializer
10281            .deserialize_struct(
10282                "origincloud.network.v1beta1.GetSecurityGroupAssociationRequest",
10283                FIELDS,
10284                GeneratedVisitor,
10285            )
10286    }
10287}
10288impl serde::Serialize for GetSecurityGroupRequest {
10289    #[allow(deprecated)]
10290    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10291    where
10292        S: serde::Serializer,
10293    {
10294        use serde::ser::SerializeStruct;
10295        let mut len = 0;
10296        if !self.name.is_empty() {
10297            len += 1;
10298        }
10299        let mut struct_ser = serializer
10300            .serialize_struct(
10301                "origincloud.network.v1beta1.GetSecurityGroupRequest",
10302                len,
10303            )?;
10304        if !self.name.is_empty() {
10305            struct_ser.serialize_field("name", &self.name)?;
10306        }
10307        struct_ser.end()
10308    }
10309}
10310impl<'de> serde::Deserialize<'de> for GetSecurityGroupRequest {
10311    #[allow(deprecated)]
10312    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10313    where
10314        D: serde::Deserializer<'de>,
10315    {
10316        const FIELDS: &[&str] = &["name"];
10317        #[allow(clippy::enum_variant_names)]
10318        enum GeneratedField {
10319            Name,
10320            __SkipField__,
10321        }
10322        impl<'de> serde::Deserialize<'de> for GeneratedField {
10323            fn deserialize<D>(
10324                deserializer: D,
10325            ) -> std::result::Result<GeneratedField, D::Error>
10326            where
10327                D: serde::Deserializer<'de>,
10328            {
10329                struct GeneratedVisitor;
10330                impl serde::de::Visitor<'_> for GeneratedVisitor {
10331                    type Value = GeneratedField;
10332                    fn expecting(
10333                        &self,
10334                        formatter: &mut std::fmt::Formatter<'_>,
10335                    ) -> std::fmt::Result {
10336                        write!(formatter, "expected one of: {:?}", & FIELDS)
10337                    }
10338                    #[allow(unused_variables)]
10339                    fn visit_str<E>(
10340                        self,
10341                        value: &str,
10342                    ) -> std::result::Result<GeneratedField, E>
10343                    where
10344                        E: serde::de::Error,
10345                    {
10346                        match value {
10347                            "name" => Ok(GeneratedField::Name),
10348                            _ => Ok(GeneratedField::__SkipField__),
10349                        }
10350                    }
10351                }
10352                deserializer.deserialize_identifier(GeneratedVisitor)
10353            }
10354        }
10355        struct GeneratedVisitor;
10356        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10357            type Value = GetSecurityGroupRequest;
10358            fn expecting(
10359                &self,
10360                formatter: &mut std::fmt::Formatter<'_>,
10361            ) -> std::fmt::Result {
10362                formatter
10363                    .write_str(
10364                        "struct origincloud.network.v1beta1.GetSecurityGroupRequest",
10365                    )
10366            }
10367            fn visit_map<V>(
10368                self,
10369                mut map_: V,
10370            ) -> std::result::Result<GetSecurityGroupRequest, V::Error>
10371            where
10372                V: serde::de::MapAccess<'de>,
10373            {
10374                let mut name__ = None;
10375                while let Some(k) = map_.next_key()? {
10376                    match k {
10377                        GeneratedField::Name => {
10378                            if name__.is_some() {
10379                                return Err(serde::de::Error::duplicate_field("name"));
10380                            }
10381                            name__ = Some(map_.next_value()?);
10382                        }
10383                        GeneratedField::__SkipField__ => {
10384                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10385                        }
10386                    }
10387                }
10388                Ok(GetSecurityGroupRequest {
10389                    name: name__.unwrap_or_default(),
10390                })
10391            }
10392        }
10393        deserializer
10394            .deserialize_struct(
10395                "origincloud.network.v1beta1.GetSecurityGroupRequest",
10396                FIELDS,
10397                GeneratedVisitor,
10398            )
10399    }
10400}
10401impl serde::Serialize for GetSecurityGroupRuleRequest {
10402    #[allow(deprecated)]
10403    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10404    where
10405        S: serde::Serializer,
10406    {
10407        use serde::ser::SerializeStruct;
10408        let mut len = 0;
10409        if !self.name.is_empty() {
10410            len += 1;
10411        }
10412        let mut struct_ser = serializer
10413            .serialize_struct(
10414                "origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10415                len,
10416            )?;
10417        if !self.name.is_empty() {
10418            struct_ser.serialize_field("name", &self.name)?;
10419        }
10420        struct_ser.end()
10421    }
10422}
10423impl<'de> serde::Deserialize<'de> for GetSecurityGroupRuleRequest {
10424    #[allow(deprecated)]
10425    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10426    where
10427        D: serde::Deserializer<'de>,
10428    {
10429        const FIELDS: &[&str] = &["name"];
10430        #[allow(clippy::enum_variant_names)]
10431        enum GeneratedField {
10432            Name,
10433            __SkipField__,
10434        }
10435        impl<'de> serde::Deserialize<'de> for GeneratedField {
10436            fn deserialize<D>(
10437                deserializer: D,
10438            ) -> std::result::Result<GeneratedField, D::Error>
10439            where
10440                D: serde::Deserializer<'de>,
10441            {
10442                struct GeneratedVisitor;
10443                impl serde::de::Visitor<'_> for GeneratedVisitor {
10444                    type Value = GeneratedField;
10445                    fn expecting(
10446                        &self,
10447                        formatter: &mut std::fmt::Formatter<'_>,
10448                    ) -> std::fmt::Result {
10449                        write!(formatter, "expected one of: {:?}", & FIELDS)
10450                    }
10451                    #[allow(unused_variables)]
10452                    fn visit_str<E>(
10453                        self,
10454                        value: &str,
10455                    ) -> std::result::Result<GeneratedField, E>
10456                    where
10457                        E: serde::de::Error,
10458                    {
10459                        match value {
10460                            "name" => Ok(GeneratedField::Name),
10461                            _ => Ok(GeneratedField::__SkipField__),
10462                        }
10463                    }
10464                }
10465                deserializer.deserialize_identifier(GeneratedVisitor)
10466            }
10467        }
10468        struct GeneratedVisitor;
10469        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10470            type Value = GetSecurityGroupRuleRequest;
10471            fn expecting(
10472                &self,
10473                formatter: &mut std::fmt::Formatter<'_>,
10474            ) -> std::fmt::Result {
10475                formatter
10476                    .write_str(
10477                        "struct origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10478                    )
10479            }
10480            fn visit_map<V>(
10481                self,
10482                mut map_: V,
10483            ) -> std::result::Result<GetSecurityGroupRuleRequest, V::Error>
10484            where
10485                V: serde::de::MapAccess<'de>,
10486            {
10487                let mut name__ = None;
10488                while let Some(k) = map_.next_key()? {
10489                    match k {
10490                        GeneratedField::Name => {
10491                            if name__.is_some() {
10492                                return Err(serde::de::Error::duplicate_field("name"));
10493                            }
10494                            name__ = Some(map_.next_value()?);
10495                        }
10496                        GeneratedField::__SkipField__ => {
10497                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10498                        }
10499                    }
10500                }
10501                Ok(GetSecurityGroupRuleRequest {
10502                    name: name__.unwrap_or_default(),
10503                })
10504            }
10505        }
10506        deserializer
10507            .deserialize_struct(
10508                "origincloud.network.v1beta1.GetSecurityGroupRuleRequest",
10509                FIELDS,
10510                GeneratedVisitor,
10511            )
10512    }
10513}
10514impl serde::Serialize for GetSubnetRequest {
10515    #[allow(deprecated)]
10516    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10517    where
10518        S: serde::Serializer,
10519    {
10520        use serde::ser::SerializeStruct;
10521        let mut len = 0;
10522        if !self.name.is_empty() {
10523            len += 1;
10524        }
10525        let mut struct_ser = serializer
10526            .serialize_struct("origincloud.network.v1beta1.GetSubnetRequest", len)?;
10527        if !self.name.is_empty() {
10528            struct_ser.serialize_field("name", &self.name)?;
10529        }
10530        struct_ser.end()
10531    }
10532}
10533impl<'de> serde::Deserialize<'de> for GetSubnetRequest {
10534    #[allow(deprecated)]
10535    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10536    where
10537        D: serde::Deserializer<'de>,
10538    {
10539        const FIELDS: &[&str] = &["name"];
10540        #[allow(clippy::enum_variant_names)]
10541        enum GeneratedField {
10542            Name,
10543            __SkipField__,
10544        }
10545        impl<'de> serde::Deserialize<'de> for GeneratedField {
10546            fn deserialize<D>(
10547                deserializer: D,
10548            ) -> std::result::Result<GeneratedField, D::Error>
10549            where
10550                D: serde::Deserializer<'de>,
10551            {
10552                struct GeneratedVisitor;
10553                impl serde::de::Visitor<'_> for GeneratedVisitor {
10554                    type Value = GeneratedField;
10555                    fn expecting(
10556                        &self,
10557                        formatter: &mut std::fmt::Formatter<'_>,
10558                    ) -> std::fmt::Result {
10559                        write!(formatter, "expected one of: {:?}", & FIELDS)
10560                    }
10561                    #[allow(unused_variables)]
10562                    fn visit_str<E>(
10563                        self,
10564                        value: &str,
10565                    ) -> std::result::Result<GeneratedField, E>
10566                    where
10567                        E: serde::de::Error,
10568                    {
10569                        match value {
10570                            "name" => Ok(GeneratedField::Name),
10571                            _ => Ok(GeneratedField::__SkipField__),
10572                        }
10573                    }
10574                }
10575                deserializer.deserialize_identifier(GeneratedVisitor)
10576            }
10577        }
10578        struct GeneratedVisitor;
10579        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10580            type Value = GetSubnetRequest;
10581            fn expecting(
10582                &self,
10583                formatter: &mut std::fmt::Formatter<'_>,
10584            ) -> std::fmt::Result {
10585                formatter
10586                    .write_str("struct origincloud.network.v1beta1.GetSubnetRequest")
10587            }
10588            fn visit_map<V>(
10589                self,
10590                mut map_: V,
10591            ) -> std::result::Result<GetSubnetRequest, V::Error>
10592            where
10593                V: serde::de::MapAccess<'de>,
10594            {
10595                let mut name__ = None;
10596                while let Some(k) = map_.next_key()? {
10597                    match k {
10598                        GeneratedField::Name => {
10599                            if name__.is_some() {
10600                                return Err(serde::de::Error::duplicate_field("name"));
10601                            }
10602                            name__ = Some(map_.next_value()?);
10603                        }
10604                        GeneratedField::__SkipField__ => {
10605                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10606                        }
10607                    }
10608                }
10609                Ok(GetSubnetRequest {
10610                    name: name__.unwrap_or_default(),
10611                })
10612            }
10613        }
10614        deserializer
10615            .deserialize_struct(
10616                "origincloud.network.v1beta1.GetSubnetRequest",
10617                FIELDS,
10618                GeneratedVisitor,
10619            )
10620    }
10621}
10622impl serde::Serialize for GetVpcRequest {
10623    #[allow(deprecated)]
10624    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10625    where
10626        S: serde::Serializer,
10627    {
10628        use serde::ser::SerializeStruct;
10629        let mut len = 0;
10630        if !self.name.is_empty() {
10631            len += 1;
10632        }
10633        let mut struct_ser = serializer
10634            .serialize_struct("origincloud.network.v1beta1.GetVpcRequest", len)?;
10635        if !self.name.is_empty() {
10636            struct_ser.serialize_field("name", &self.name)?;
10637        }
10638        struct_ser.end()
10639    }
10640}
10641impl<'de> serde::Deserialize<'de> for GetVpcRequest {
10642    #[allow(deprecated)]
10643    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10644    where
10645        D: serde::Deserializer<'de>,
10646    {
10647        const FIELDS: &[&str] = &["name"];
10648        #[allow(clippy::enum_variant_names)]
10649        enum GeneratedField {
10650            Name,
10651            __SkipField__,
10652        }
10653        impl<'de> serde::Deserialize<'de> for GeneratedField {
10654            fn deserialize<D>(
10655                deserializer: D,
10656            ) -> std::result::Result<GeneratedField, D::Error>
10657            where
10658                D: serde::Deserializer<'de>,
10659            {
10660                struct GeneratedVisitor;
10661                impl serde::de::Visitor<'_> for GeneratedVisitor {
10662                    type Value = GeneratedField;
10663                    fn expecting(
10664                        &self,
10665                        formatter: &mut std::fmt::Formatter<'_>,
10666                    ) -> std::fmt::Result {
10667                        write!(formatter, "expected one of: {:?}", & FIELDS)
10668                    }
10669                    #[allow(unused_variables)]
10670                    fn visit_str<E>(
10671                        self,
10672                        value: &str,
10673                    ) -> std::result::Result<GeneratedField, E>
10674                    where
10675                        E: serde::de::Error,
10676                    {
10677                        match value {
10678                            "name" => Ok(GeneratedField::Name),
10679                            _ => Ok(GeneratedField::__SkipField__),
10680                        }
10681                    }
10682                }
10683                deserializer.deserialize_identifier(GeneratedVisitor)
10684            }
10685        }
10686        struct GeneratedVisitor;
10687        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10688            type Value = GetVpcRequest;
10689            fn expecting(
10690                &self,
10691                formatter: &mut std::fmt::Formatter<'_>,
10692            ) -> std::fmt::Result {
10693                formatter.write_str("struct origincloud.network.v1beta1.GetVpcRequest")
10694            }
10695            fn visit_map<V>(
10696                self,
10697                mut map_: V,
10698            ) -> std::result::Result<GetVpcRequest, V::Error>
10699            where
10700                V: serde::de::MapAccess<'de>,
10701            {
10702                let mut name__ = None;
10703                while let Some(k) = map_.next_key()? {
10704                    match k {
10705                        GeneratedField::Name => {
10706                            if name__.is_some() {
10707                                return Err(serde::de::Error::duplicate_field("name"));
10708                            }
10709                            name__ = Some(map_.next_value()?);
10710                        }
10711                        GeneratedField::__SkipField__ => {
10712                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10713                        }
10714                    }
10715                }
10716                Ok(GetVpcRequest {
10717                    name: name__.unwrap_or_default(),
10718                })
10719            }
10720        }
10721        deserializer
10722            .deserialize_struct(
10723                "origincloud.network.v1beta1.GetVpcRequest",
10724                FIELDS,
10725                GeneratedVisitor,
10726            )
10727    }
10728}
10729impl serde::Serialize for InternetGateway {
10730    #[allow(deprecated)]
10731    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10732    where
10733        S: serde::Serializer,
10734    {
10735        use serde::ser::SerializeStruct;
10736        let mut len = 0;
10737        if !self.name.is_empty() {
10738            len += 1;
10739        }
10740        if !self.urn.is_empty() {
10741            len += 1;
10742        }
10743        if !self.vpc.is_empty() {
10744            len += 1;
10745        }
10746        if self.create_time.is_some() {
10747            len += 1;
10748        }
10749        if !self.creator.is_empty() {
10750            len += 1;
10751        }
10752        if !self.tags.is_empty() {
10753            len += 1;
10754        }
10755        let mut struct_ser = serializer
10756            .serialize_struct("origincloud.network.v1beta1.InternetGateway", len)?;
10757        if !self.name.is_empty() {
10758            struct_ser.serialize_field("name", &self.name)?;
10759        }
10760        if !self.urn.is_empty() {
10761            struct_ser.serialize_field("urn", &self.urn)?;
10762        }
10763        if !self.vpc.is_empty() {
10764            struct_ser.serialize_field("vpc", &self.vpc)?;
10765        }
10766        if let Some(v) = self.create_time.as_ref() {
10767            struct_ser.serialize_field("createTime", v)?;
10768        }
10769        if !self.creator.is_empty() {
10770            struct_ser.serialize_field("creator", &self.creator)?;
10771        }
10772        if !self.tags.is_empty() {
10773            struct_ser.serialize_field("tags", &self.tags)?;
10774        }
10775        struct_ser.end()
10776    }
10777}
10778impl<'de> serde::Deserialize<'de> for InternetGateway {
10779    #[allow(deprecated)]
10780    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10781    where
10782        D: serde::Deserializer<'de>,
10783    {
10784        const FIELDS: &[&str] = &[
10785            "name",
10786            "urn",
10787            "vpc",
10788            "create_time",
10789            "createTime",
10790            "creator",
10791            "tags",
10792        ];
10793        #[allow(clippy::enum_variant_names)]
10794        enum GeneratedField {
10795            Name,
10796            Urn,
10797            Vpc,
10798            CreateTime,
10799            Creator,
10800            Tags,
10801            __SkipField__,
10802        }
10803        impl<'de> serde::Deserialize<'de> for GeneratedField {
10804            fn deserialize<D>(
10805                deserializer: D,
10806            ) -> std::result::Result<GeneratedField, D::Error>
10807            where
10808                D: serde::Deserializer<'de>,
10809            {
10810                struct GeneratedVisitor;
10811                impl serde::de::Visitor<'_> for GeneratedVisitor {
10812                    type Value = GeneratedField;
10813                    fn expecting(
10814                        &self,
10815                        formatter: &mut std::fmt::Formatter<'_>,
10816                    ) -> std::fmt::Result {
10817                        write!(formatter, "expected one of: {:?}", & FIELDS)
10818                    }
10819                    #[allow(unused_variables)]
10820                    fn visit_str<E>(
10821                        self,
10822                        value: &str,
10823                    ) -> std::result::Result<GeneratedField, E>
10824                    where
10825                        E: serde::de::Error,
10826                    {
10827                        match value {
10828                            "name" => Ok(GeneratedField::Name),
10829                            "urn" => Ok(GeneratedField::Urn),
10830                            "vpc" => Ok(GeneratedField::Vpc),
10831                            "createTime" | "create_time" => {
10832                                Ok(GeneratedField::CreateTime)
10833                            }
10834                            "creator" => Ok(GeneratedField::Creator),
10835                            "tags" => Ok(GeneratedField::Tags),
10836                            _ => Ok(GeneratedField::__SkipField__),
10837                        }
10838                    }
10839                }
10840                deserializer.deserialize_identifier(GeneratedVisitor)
10841            }
10842        }
10843        struct GeneratedVisitor;
10844        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
10845            type Value = InternetGateway;
10846            fn expecting(
10847                &self,
10848                formatter: &mut std::fmt::Formatter<'_>,
10849            ) -> std::fmt::Result {
10850                formatter.write_str("struct origincloud.network.v1beta1.InternetGateway")
10851            }
10852            fn visit_map<V>(
10853                self,
10854                mut map_: V,
10855            ) -> std::result::Result<InternetGateway, V::Error>
10856            where
10857                V: serde::de::MapAccess<'de>,
10858            {
10859                let mut name__ = None;
10860                let mut urn__ = None;
10861                let mut vpc__ = None;
10862                let mut create_time__ = None;
10863                let mut creator__ = None;
10864                let mut tags__ = None;
10865                while let Some(k) = map_.next_key()? {
10866                    match k {
10867                        GeneratedField::Name => {
10868                            if name__.is_some() {
10869                                return Err(serde::de::Error::duplicate_field("name"));
10870                            }
10871                            name__ = Some(map_.next_value()?);
10872                        }
10873                        GeneratedField::Urn => {
10874                            if urn__.is_some() {
10875                                return Err(serde::de::Error::duplicate_field("urn"));
10876                            }
10877                            urn__ = Some(map_.next_value()?);
10878                        }
10879                        GeneratedField::Vpc => {
10880                            if vpc__.is_some() {
10881                                return Err(serde::de::Error::duplicate_field("vpc"));
10882                            }
10883                            vpc__ = Some(map_.next_value()?);
10884                        }
10885                        GeneratedField::CreateTime => {
10886                            if create_time__.is_some() {
10887                                return Err(serde::de::Error::duplicate_field("createTime"));
10888                            }
10889                            create_time__ = map_.next_value()?;
10890                        }
10891                        GeneratedField::Creator => {
10892                            if creator__.is_some() {
10893                                return Err(serde::de::Error::duplicate_field("creator"));
10894                            }
10895                            creator__ = Some(map_.next_value()?);
10896                        }
10897                        GeneratedField::Tags => {
10898                            if tags__.is_some() {
10899                                return Err(serde::de::Error::duplicate_field("tags"));
10900                            }
10901                            tags__ = Some(
10902                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
10903                            );
10904                        }
10905                        GeneratedField::__SkipField__ => {
10906                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
10907                        }
10908                    }
10909                }
10910                Ok(InternetGateway {
10911                    name: name__.unwrap_or_default(),
10912                    urn: urn__.unwrap_or_default(),
10913                    vpc: vpc__.unwrap_or_default(),
10914                    create_time: create_time__,
10915                    creator: creator__.unwrap_or_default(),
10916                    tags: tags__.unwrap_or_default(),
10917                })
10918            }
10919        }
10920        deserializer
10921            .deserialize_struct(
10922                "origincloud.network.v1beta1.InternetGateway",
10923                FIELDS,
10924                GeneratedVisitor,
10925            )
10926    }
10927}
10928impl serde::Serialize for ListAclAssociationsRequest {
10929    #[allow(deprecated)]
10930    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
10931    where
10932        S: serde::Serializer,
10933    {
10934        use serde::ser::SerializeStruct;
10935        let mut len = 0;
10936        if !self.parent.is_empty() {
10937            len += 1;
10938        }
10939        if self.page_size != 0 {
10940            len += 1;
10941        }
10942        if !self.page_token.is_empty() {
10943            len += 1;
10944        }
10945        let mut struct_ser = serializer
10946            .serialize_struct(
10947                "origincloud.network.v1beta1.ListAclAssociationsRequest",
10948                len,
10949            )?;
10950        if !self.parent.is_empty() {
10951            struct_ser.serialize_field("parent", &self.parent)?;
10952        }
10953        if self.page_size != 0 {
10954            struct_ser.serialize_field("pageSize", &self.page_size)?;
10955        }
10956        if !self.page_token.is_empty() {
10957            struct_ser.serialize_field("pageToken", &self.page_token)?;
10958        }
10959        struct_ser.end()
10960    }
10961}
10962impl<'de> serde::Deserialize<'de> for ListAclAssociationsRequest {
10963    #[allow(deprecated)]
10964    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
10965    where
10966        D: serde::Deserializer<'de>,
10967    {
10968        const FIELDS: &[&str] = &[
10969            "parent",
10970            "page_size",
10971            "pageSize",
10972            "page_token",
10973            "pageToken",
10974        ];
10975        #[allow(clippy::enum_variant_names)]
10976        enum GeneratedField {
10977            Parent,
10978            PageSize,
10979            PageToken,
10980            __SkipField__,
10981        }
10982        impl<'de> serde::Deserialize<'de> for GeneratedField {
10983            fn deserialize<D>(
10984                deserializer: D,
10985            ) -> std::result::Result<GeneratedField, D::Error>
10986            where
10987                D: serde::Deserializer<'de>,
10988            {
10989                struct GeneratedVisitor;
10990                impl serde::de::Visitor<'_> for GeneratedVisitor {
10991                    type Value = GeneratedField;
10992                    fn expecting(
10993                        &self,
10994                        formatter: &mut std::fmt::Formatter<'_>,
10995                    ) -> std::fmt::Result {
10996                        write!(formatter, "expected one of: {:?}", & FIELDS)
10997                    }
10998                    #[allow(unused_variables)]
10999                    fn visit_str<E>(
11000                        self,
11001                        value: &str,
11002                    ) -> std::result::Result<GeneratedField, E>
11003                    where
11004                        E: serde::de::Error,
11005                    {
11006                        match value {
11007                            "parent" => Ok(GeneratedField::Parent),
11008                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11009                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11010                            _ => Ok(GeneratedField::__SkipField__),
11011                        }
11012                    }
11013                }
11014                deserializer.deserialize_identifier(GeneratedVisitor)
11015            }
11016        }
11017        struct GeneratedVisitor;
11018        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11019            type Value = ListAclAssociationsRequest;
11020            fn expecting(
11021                &self,
11022                formatter: &mut std::fmt::Formatter<'_>,
11023            ) -> std::fmt::Result {
11024                formatter
11025                    .write_str(
11026                        "struct origincloud.network.v1beta1.ListAclAssociationsRequest",
11027                    )
11028            }
11029            fn visit_map<V>(
11030                self,
11031                mut map_: V,
11032            ) -> std::result::Result<ListAclAssociationsRequest, V::Error>
11033            where
11034                V: serde::de::MapAccess<'de>,
11035            {
11036                let mut parent__ = None;
11037                let mut page_size__ = None;
11038                let mut page_token__ = None;
11039                while let Some(k) = map_.next_key()? {
11040                    match k {
11041                        GeneratedField::Parent => {
11042                            if parent__.is_some() {
11043                                return Err(serde::de::Error::duplicate_field("parent"));
11044                            }
11045                            parent__ = Some(map_.next_value()?);
11046                        }
11047                        GeneratedField::PageSize => {
11048                            if page_size__.is_some() {
11049                                return Err(serde::de::Error::duplicate_field("pageSize"));
11050                            }
11051                            page_size__ = Some(
11052                                map_
11053                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11054                                    .0,
11055                            );
11056                        }
11057                        GeneratedField::PageToken => {
11058                            if page_token__.is_some() {
11059                                return Err(serde::de::Error::duplicate_field("pageToken"));
11060                            }
11061                            page_token__ = Some(map_.next_value()?);
11062                        }
11063                        GeneratedField::__SkipField__ => {
11064                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11065                        }
11066                    }
11067                }
11068                Ok(ListAclAssociationsRequest {
11069                    parent: parent__.unwrap_or_default(),
11070                    page_size: page_size__.unwrap_or_default(),
11071                    page_token: page_token__.unwrap_or_default(),
11072                })
11073            }
11074        }
11075        deserializer
11076            .deserialize_struct(
11077                "origincloud.network.v1beta1.ListAclAssociationsRequest",
11078                FIELDS,
11079                GeneratedVisitor,
11080            )
11081    }
11082}
11083impl serde::Serialize for ListAclAssociationsResponse {
11084    #[allow(deprecated)]
11085    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11086    where
11087        S: serde::Serializer,
11088    {
11089        use serde::ser::SerializeStruct;
11090        let mut len = 0;
11091        if !self.acl_associations.is_empty() {
11092            len += 1;
11093        }
11094        if !self.next_page_token.is_empty() {
11095            len += 1;
11096        }
11097        let mut struct_ser = serializer
11098            .serialize_struct(
11099                "origincloud.network.v1beta1.ListAclAssociationsResponse",
11100                len,
11101            )?;
11102        if !self.acl_associations.is_empty() {
11103            struct_ser.serialize_field("aclAssociations", &self.acl_associations)?;
11104        }
11105        if !self.next_page_token.is_empty() {
11106            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11107        }
11108        struct_ser.end()
11109    }
11110}
11111impl<'de> serde::Deserialize<'de> for ListAclAssociationsResponse {
11112    #[allow(deprecated)]
11113    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11114    where
11115        D: serde::Deserializer<'de>,
11116    {
11117        const FIELDS: &[&str] = &[
11118            "acl_associations",
11119            "aclAssociations",
11120            "next_page_token",
11121            "nextPageToken",
11122        ];
11123        #[allow(clippy::enum_variant_names)]
11124        enum GeneratedField {
11125            AclAssociations,
11126            NextPageToken,
11127            __SkipField__,
11128        }
11129        impl<'de> serde::Deserialize<'de> for GeneratedField {
11130            fn deserialize<D>(
11131                deserializer: D,
11132            ) -> std::result::Result<GeneratedField, D::Error>
11133            where
11134                D: serde::Deserializer<'de>,
11135            {
11136                struct GeneratedVisitor;
11137                impl serde::de::Visitor<'_> for GeneratedVisitor {
11138                    type Value = GeneratedField;
11139                    fn expecting(
11140                        &self,
11141                        formatter: &mut std::fmt::Formatter<'_>,
11142                    ) -> std::fmt::Result {
11143                        write!(formatter, "expected one of: {:?}", & FIELDS)
11144                    }
11145                    #[allow(unused_variables)]
11146                    fn visit_str<E>(
11147                        self,
11148                        value: &str,
11149                    ) -> std::result::Result<GeneratedField, E>
11150                    where
11151                        E: serde::de::Error,
11152                    {
11153                        match value {
11154                            "aclAssociations" | "acl_associations" => {
11155                                Ok(GeneratedField::AclAssociations)
11156                            }
11157                            "nextPageToken" | "next_page_token" => {
11158                                Ok(GeneratedField::NextPageToken)
11159                            }
11160                            _ => Ok(GeneratedField::__SkipField__),
11161                        }
11162                    }
11163                }
11164                deserializer.deserialize_identifier(GeneratedVisitor)
11165            }
11166        }
11167        struct GeneratedVisitor;
11168        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11169            type Value = ListAclAssociationsResponse;
11170            fn expecting(
11171                &self,
11172                formatter: &mut std::fmt::Formatter<'_>,
11173            ) -> std::fmt::Result {
11174                formatter
11175                    .write_str(
11176                        "struct origincloud.network.v1beta1.ListAclAssociationsResponse",
11177                    )
11178            }
11179            fn visit_map<V>(
11180                self,
11181                mut map_: V,
11182            ) -> std::result::Result<ListAclAssociationsResponse, V::Error>
11183            where
11184                V: serde::de::MapAccess<'de>,
11185            {
11186                let mut acl_associations__ = None;
11187                let mut next_page_token__ = None;
11188                while let Some(k) = map_.next_key()? {
11189                    match k {
11190                        GeneratedField::AclAssociations => {
11191                            if acl_associations__.is_some() {
11192                                return Err(
11193                                    serde::de::Error::duplicate_field("aclAssociations"),
11194                                );
11195                            }
11196                            acl_associations__ = Some(map_.next_value()?);
11197                        }
11198                        GeneratedField::NextPageToken => {
11199                            if next_page_token__.is_some() {
11200                                return Err(
11201                                    serde::de::Error::duplicate_field("nextPageToken"),
11202                                );
11203                            }
11204                            next_page_token__ = Some(map_.next_value()?);
11205                        }
11206                        GeneratedField::__SkipField__ => {
11207                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11208                        }
11209                    }
11210                }
11211                Ok(ListAclAssociationsResponse {
11212                    acl_associations: acl_associations__.unwrap_or_default(),
11213                    next_page_token: next_page_token__.unwrap_or_default(),
11214                })
11215            }
11216        }
11217        deserializer
11218            .deserialize_struct(
11219                "origincloud.network.v1beta1.ListAclAssociationsResponse",
11220                FIELDS,
11221                GeneratedVisitor,
11222            )
11223    }
11224}
11225impl serde::Serialize for ListAclRulesRequest {
11226    #[allow(deprecated)]
11227    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11228    where
11229        S: serde::Serializer,
11230    {
11231        use serde::ser::SerializeStruct;
11232        let mut len = 0;
11233        if !self.parent.is_empty() {
11234            len += 1;
11235        }
11236        if self.page_size != 0 {
11237            len += 1;
11238        }
11239        if !self.page_token.is_empty() {
11240            len += 1;
11241        }
11242        let mut struct_ser = serializer
11243            .serialize_struct("origincloud.network.v1beta1.ListAclRulesRequest", len)?;
11244        if !self.parent.is_empty() {
11245            struct_ser.serialize_field("parent", &self.parent)?;
11246        }
11247        if self.page_size != 0 {
11248            struct_ser.serialize_field("pageSize", &self.page_size)?;
11249        }
11250        if !self.page_token.is_empty() {
11251            struct_ser.serialize_field("pageToken", &self.page_token)?;
11252        }
11253        struct_ser.end()
11254    }
11255}
11256impl<'de> serde::Deserialize<'de> for ListAclRulesRequest {
11257    #[allow(deprecated)]
11258    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11259    where
11260        D: serde::Deserializer<'de>,
11261    {
11262        const FIELDS: &[&str] = &[
11263            "parent",
11264            "page_size",
11265            "pageSize",
11266            "page_token",
11267            "pageToken",
11268        ];
11269        #[allow(clippy::enum_variant_names)]
11270        enum GeneratedField {
11271            Parent,
11272            PageSize,
11273            PageToken,
11274            __SkipField__,
11275        }
11276        impl<'de> serde::Deserialize<'de> for GeneratedField {
11277            fn deserialize<D>(
11278                deserializer: D,
11279            ) -> std::result::Result<GeneratedField, D::Error>
11280            where
11281                D: serde::Deserializer<'de>,
11282            {
11283                struct GeneratedVisitor;
11284                impl serde::de::Visitor<'_> for GeneratedVisitor {
11285                    type Value = GeneratedField;
11286                    fn expecting(
11287                        &self,
11288                        formatter: &mut std::fmt::Formatter<'_>,
11289                    ) -> std::fmt::Result {
11290                        write!(formatter, "expected one of: {:?}", & FIELDS)
11291                    }
11292                    #[allow(unused_variables)]
11293                    fn visit_str<E>(
11294                        self,
11295                        value: &str,
11296                    ) -> std::result::Result<GeneratedField, E>
11297                    where
11298                        E: serde::de::Error,
11299                    {
11300                        match value {
11301                            "parent" => Ok(GeneratedField::Parent),
11302                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11303                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11304                            _ => Ok(GeneratedField::__SkipField__),
11305                        }
11306                    }
11307                }
11308                deserializer.deserialize_identifier(GeneratedVisitor)
11309            }
11310        }
11311        struct GeneratedVisitor;
11312        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11313            type Value = ListAclRulesRequest;
11314            fn expecting(
11315                &self,
11316                formatter: &mut std::fmt::Formatter<'_>,
11317            ) -> std::fmt::Result {
11318                formatter
11319                    .write_str("struct origincloud.network.v1beta1.ListAclRulesRequest")
11320            }
11321            fn visit_map<V>(
11322                self,
11323                mut map_: V,
11324            ) -> std::result::Result<ListAclRulesRequest, V::Error>
11325            where
11326                V: serde::de::MapAccess<'de>,
11327            {
11328                let mut parent__ = None;
11329                let mut page_size__ = None;
11330                let mut page_token__ = None;
11331                while let Some(k) = map_.next_key()? {
11332                    match k {
11333                        GeneratedField::Parent => {
11334                            if parent__.is_some() {
11335                                return Err(serde::de::Error::duplicate_field("parent"));
11336                            }
11337                            parent__ = Some(map_.next_value()?);
11338                        }
11339                        GeneratedField::PageSize => {
11340                            if page_size__.is_some() {
11341                                return Err(serde::de::Error::duplicate_field("pageSize"));
11342                            }
11343                            page_size__ = Some(
11344                                map_
11345                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11346                                    .0,
11347                            );
11348                        }
11349                        GeneratedField::PageToken => {
11350                            if page_token__.is_some() {
11351                                return Err(serde::de::Error::duplicate_field("pageToken"));
11352                            }
11353                            page_token__ = Some(map_.next_value()?);
11354                        }
11355                        GeneratedField::__SkipField__ => {
11356                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11357                        }
11358                    }
11359                }
11360                Ok(ListAclRulesRequest {
11361                    parent: parent__.unwrap_or_default(),
11362                    page_size: page_size__.unwrap_or_default(),
11363                    page_token: page_token__.unwrap_or_default(),
11364                })
11365            }
11366        }
11367        deserializer
11368            .deserialize_struct(
11369                "origincloud.network.v1beta1.ListAclRulesRequest",
11370                FIELDS,
11371                GeneratedVisitor,
11372            )
11373    }
11374}
11375impl serde::Serialize for ListAclRulesResponse {
11376    #[allow(deprecated)]
11377    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11378    where
11379        S: serde::Serializer,
11380    {
11381        use serde::ser::SerializeStruct;
11382        let mut len = 0;
11383        if !self.acl_rules.is_empty() {
11384            len += 1;
11385        }
11386        if !self.next_page_token.is_empty() {
11387            len += 1;
11388        }
11389        let mut struct_ser = serializer
11390            .serialize_struct("origincloud.network.v1beta1.ListAclRulesResponse", len)?;
11391        if !self.acl_rules.is_empty() {
11392            struct_ser.serialize_field("aclRules", &self.acl_rules)?;
11393        }
11394        if !self.next_page_token.is_empty() {
11395            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11396        }
11397        struct_ser.end()
11398    }
11399}
11400impl<'de> serde::Deserialize<'de> for ListAclRulesResponse {
11401    #[allow(deprecated)]
11402    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11403    where
11404        D: serde::Deserializer<'de>,
11405    {
11406        const FIELDS: &[&str] = &[
11407            "acl_rules",
11408            "aclRules",
11409            "next_page_token",
11410            "nextPageToken",
11411        ];
11412        #[allow(clippy::enum_variant_names)]
11413        enum GeneratedField {
11414            AclRules,
11415            NextPageToken,
11416            __SkipField__,
11417        }
11418        impl<'de> serde::Deserialize<'de> for GeneratedField {
11419            fn deserialize<D>(
11420                deserializer: D,
11421            ) -> std::result::Result<GeneratedField, D::Error>
11422            where
11423                D: serde::Deserializer<'de>,
11424            {
11425                struct GeneratedVisitor;
11426                impl serde::de::Visitor<'_> for GeneratedVisitor {
11427                    type Value = GeneratedField;
11428                    fn expecting(
11429                        &self,
11430                        formatter: &mut std::fmt::Formatter<'_>,
11431                    ) -> std::fmt::Result {
11432                        write!(formatter, "expected one of: {:?}", & FIELDS)
11433                    }
11434                    #[allow(unused_variables)]
11435                    fn visit_str<E>(
11436                        self,
11437                        value: &str,
11438                    ) -> std::result::Result<GeneratedField, E>
11439                    where
11440                        E: serde::de::Error,
11441                    {
11442                        match value {
11443                            "aclRules" | "acl_rules" => Ok(GeneratedField::AclRules),
11444                            "nextPageToken" | "next_page_token" => {
11445                                Ok(GeneratedField::NextPageToken)
11446                            }
11447                            _ => Ok(GeneratedField::__SkipField__),
11448                        }
11449                    }
11450                }
11451                deserializer.deserialize_identifier(GeneratedVisitor)
11452            }
11453        }
11454        struct GeneratedVisitor;
11455        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11456            type Value = ListAclRulesResponse;
11457            fn expecting(
11458                &self,
11459                formatter: &mut std::fmt::Formatter<'_>,
11460            ) -> std::fmt::Result {
11461                formatter
11462                    .write_str("struct origincloud.network.v1beta1.ListAclRulesResponse")
11463            }
11464            fn visit_map<V>(
11465                self,
11466                mut map_: V,
11467            ) -> std::result::Result<ListAclRulesResponse, V::Error>
11468            where
11469                V: serde::de::MapAccess<'de>,
11470            {
11471                let mut acl_rules__ = None;
11472                let mut next_page_token__ = None;
11473                while let Some(k) = map_.next_key()? {
11474                    match k {
11475                        GeneratedField::AclRules => {
11476                            if acl_rules__.is_some() {
11477                                return Err(serde::de::Error::duplicate_field("aclRules"));
11478                            }
11479                            acl_rules__ = Some(map_.next_value()?);
11480                        }
11481                        GeneratedField::NextPageToken => {
11482                            if next_page_token__.is_some() {
11483                                return Err(
11484                                    serde::de::Error::duplicate_field("nextPageToken"),
11485                                );
11486                            }
11487                            next_page_token__ = Some(map_.next_value()?);
11488                        }
11489                        GeneratedField::__SkipField__ => {
11490                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11491                        }
11492                    }
11493                }
11494                Ok(ListAclRulesResponse {
11495                    acl_rules: acl_rules__.unwrap_or_default(),
11496                    next_page_token: next_page_token__.unwrap_or_default(),
11497                })
11498            }
11499        }
11500        deserializer
11501            .deserialize_struct(
11502                "origincloud.network.v1beta1.ListAclRulesResponse",
11503                FIELDS,
11504                GeneratedVisitor,
11505            )
11506    }
11507}
11508impl serde::Serialize for ListAclsRequest {
11509    #[allow(deprecated)]
11510    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11511    where
11512        S: serde::Serializer,
11513    {
11514        use serde::ser::SerializeStruct;
11515        let mut len = 0;
11516        if !self.parent.is_empty() {
11517            len += 1;
11518        }
11519        if self.page_size != 0 {
11520            len += 1;
11521        }
11522        if !self.page_token.is_empty() {
11523            len += 1;
11524        }
11525        if !self.vpc.is_empty() {
11526            len += 1;
11527        }
11528        let mut struct_ser = serializer
11529            .serialize_struct("origincloud.network.v1beta1.ListAclsRequest", len)?;
11530        if !self.parent.is_empty() {
11531            struct_ser.serialize_field("parent", &self.parent)?;
11532        }
11533        if self.page_size != 0 {
11534            struct_ser.serialize_field("pageSize", &self.page_size)?;
11535        }
11536        if !self.page_token.is_empty() {
11537            struct_ser.serialize_field("pageToken", &self.page_token)?;
11538        }
11539        if !self.vpc.is_empty() {
11540            struct_ser.serialize_field("vpc", &self.vpc)?;
11541        }
11542        struct_ser.end()
11543    }
11544}
11545impl<'de> serde::Deserialize<'de> for ListAclsRequest {
11546    #[allow(deprecated)]
11547    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11548    where
11549        D: serde::Deserializer<'de>,
11550    {
11551        const FIELDS: &[&str] = &[
11552            "parent",
11553            "page_size",
11554            "pageSize",
11555            "page_token",
11556            "pageToken",
11557            "vpc",
11558        ];
11559        #[allow(clippy::enum_variant_names)]
11560        enum GeneratedField {
11561            Parent,
11562            PageSize,
11563            PageToken,
11564            Vpc,
11565            __SkipField__,
11566        }
11567        impl<'de> serde::Deserialize<'de> for GeneratedField {
11568            fn deserialize<D>(
11569                deserializer: D,
11570            ) -> std::result::Result<GeneratedField, D::Error>
11571            where
11572                D: serde::Deserializer<'de>,
11573            {
11574                struct GeneratedVisitor;
11575                impl serde::de::Visitor<'_> for GeneratedVisitor {
11576                    type Value = GeneratedField;
11577                    fn expecting(
11578                        &self,
11579                        formatter: &mut std::fmt::Formatter<'_>,
11580                    ) -> std::fmt::Result {
11581                        write!(formatter, "expected one of: {:?}", & FIELDS)
11582                    }
11583                    #[allow(unused_variables)]
11584                    fn visit_str<E>(
11585                        self,
11586                        value: &str,
11587                    ) -> std::result::Result<GeneratedField, E>
11588                    where
11589                        E: serde::de::Error,
11590                    {
11591                        match value {
11592                            "parent" => Ok(GeneratedField::Parent),
11593                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11594                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11595                            "vpc" => Ok(GeneratedField::Vpc),
11596                            _ => Ok(GeneratedField::__SkipField__),
11597                        }
11598                    }
11599                }
11600                deserializer.deserialize_identifier(GeneratedVisitor)
11601            }
11602        }
11603        struct GeneratedVisitor;
11604        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11605            type Value = ListAclsRequest;
11606            fn expecting(
11607                &self,
11608                formatter: &mut std::fmt::Formatter<'_>,
11609            ) -> std::fmt::Result {
11610                formatter.write_str("struct origincloud.network.v1beta1.ListAclsRequest")
11611            }
11612            fn visit_map<V>(
11613                self,
11614                mut map_: V,
11615            ) -> std::result::Result<ListAclsRequest, V::Error>
11616            where
11617                V: serde::de::MapAccess<'de>,
11618            {
11619                let mut parent__ = None;
11620                let mut page_size__ = None;
11621                let mut page_token__ = None;
11622                let mut vpc__ = None;
11623                while let Some(k) = map_.next_key()? {
11624                    match k {
11625                        GeneratedField::Parent => {
11626                            if parent__.is_some() {
11627                                return Err(serde::de::Error::duplicate_field("parent"));
11628                            }
11629                            parent__ = Some(map_.next_value()?);
11630                        }
11631                        GeneratedField::PageSize => {
11632                            if page_size__.is_some() {
11633                                return Err(serde::de::Error::duplicate_field("pageSize"));
11634                            }
11635                            page_size__ = Some(
11636                                map_
11637                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11638                                    .0,
11639                            );
11640                        }
11641                        GeneratedField::PageToken => {
11642                            if page_token__.is_some() {
11643                                return Err(serde::de::Error::duplicate_field("pageToken"));
11644                            }
11645                            page_token__ = Some(map_.next_value()?);
11646                        }
11647                        GeneratedField::Vpc => {
11648                            if vpc__.is_some() {
11649                                return Err(serde::de::Error::duplicate_field("vpc"));
11650                            }
11651                            vpc__ = Some(map_.next_value()?);
11652                        }
11653                        GeneratedField::__SkipField__ => {
11654                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11655                        }
11656                    }
11657                }
11658                Ok(ListAclsRequest {
11659                    parent: parent__.unwrap_or_default(),
11660                    page_size: page_size__.unwrap_or_default(),
11661                    page_token: page_token__.unwrap_or_default(),
11662                    vpc: vpc__.unwrap_or_default(),
11663                })
11664            }
11665        }
11666        deserializer
11667            .deserialize_struct(
11668                "origincloud.network.v1beta1.ListAclsRequest",
11669                FIELDS,
11670                GeneratedVisitor,
11671            )
11672    }
11673}
11674impl serde::Serialize for ListAclsResponse {
11675    #[allow(deprecated)]
11676    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11677    where
11678        S: serde::Serializer,
11679    {
11680        use serde::ser::SerializeStruct;
11681        let mut len = 0;
11682        if !self.acls.is_empty() {
11683            len += 1;
11684        }
11685        if !self.next_page_token.is_empty() {
11686            len += 1;
11687        }
11688        let mut struct_ser = serializer
11689            .serialize_struct("origincloud.network.v1beta1.ListAclsResponse", len)?;
11690        if !self.acls.is_empty() {
11691            struct_ser.serialize_field("acls", &self.acls)?;
11692        }
11693        if !self.next_page_token.is_empty() {
11694            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11695        }
11696        struct_ser.end()
11697    }
11698}
11699impl<'de> serde::Deserialize<'de> for ListAclsResponse {
11700    #[allow(deprecated)]
11701    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11702    where
11703        D: serde::Deserializer<'de>,
11704    {
11705        const FIELDS: &[&str] = &["acls", "next_page_token", "nextPageToken"];
11706        #[allow(clippy::enum_variant_names)]
11707        enum GeneratedField {
11708            Acls,
11709            NextPageToken,
11710            __SkipField__,
11711        }
11712        impl<'de> serde::Deserialize<'de> for GeneratedField {
11713            fn deserialize<D>(
11714                deserializer: D,
11715            ) -> std::result::Result<GeneratedField, D::Error>
11716            where
11717                D: serde::Deserializer<'de>,
11718            {
11719                struct GeneratedVisitor;
11720                impl serde::de::Visitor<'_> for GeneratedVisitor {
11721                    type Value = GeneratedField;
11722                    fn expecting(
11723                        &self,
11724                        formatter: &mut std::fmt::Formatter<'_>,
11725                    ) -> std::fmt::Result {
11726                        write!(formatter, "expected one of: {:?}", & FIELDS)
11727                    }
11728                    #[allow(unused_variables)]
11729                    fn visit_str<E>(
11730                        self,
11731                        value: &str,
11732                    ) -> std::result::Result<GeneratedField, E>
11733                    where
11734                        E: serde::de::Error,
11735                    {
11736                        match value {
11737                            "acls" => Ok(GeneratedField::Acls),
11738                            "nextPageToken" | "next_page_token" => {
11739                                Ok(GeneratedField::NextPageToken)
11740                            }
11741                            _ => Ok(GeneratedField::__SkipField__),
11742                        }
11743                    }
11744                }
11745                deserializer.deserialize_identifier(GeneratedVisitor)
11746            }
11747        }
11748        struct GeneratedVisitor;
11749        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11750            type Value = ListAclsResponse;
11751            fn expecting(
11752                &self,
11753                formatter: &mut std::fmt::Formatter<'_>,
11754            ) -> std::fmt::Result {
11755                formatter
11756                    .write_str("struct origincloud.network.v1beta1.ListAclsResponse")
11757            }
11758            fn visit_map<V>(
11759                self,
11760                mut map_: V,
11761            ) -> std::result::Result<ListAclsResponse, V::Error>
11762            where
11763                V: serde::de::MapAccess<'de>,
11764            {
11765                let mut acls__ = None;
11766                let mut next_page_token__ = None;
11767                while let Some(k) = map_.next_key()? {
11768                    match k {
11769                        GeneratedField::Acls => {
11770                            if acls__.is_some() {
11771                                return Err(serde::de::Error::duplicate_field("acls"));
11772                            }
11773                            acls__ = Some(map_.next_value()?);
11774                        }
11775                        GeneratedField::NextPageToken => {
11776                            if next_page_token__.is_some() {
11777                                return Err(
11778                                    serde::de::Error::duplicate_field("nextPageToken"),
11779                                );
11780                            }
11781                            next_page_token__ = Some(map_.next_value()?);
11782                        }
11783                        GeneratedField::__SkipField__ => {
11784                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11785                        }
11786                    }
11787                }
11788                Ok(ListAclsResponse {
11789                    acls: acls__.unwrap_or_default(),
11790                    next_page_token: next_page_token__.unwrap_or_default(),
11791                })
11792            }
11793        }
11794        deserializer
11795            .deserialize_struct(
11796                "origincloud.network.v1beta1.ListAclsResponse",
11797                FIELDS,
11798                GeneratedVisitor,
11799            )
11800    }
11801}
11802impl serde::Serialize for ListDnsPoliciesRequest {
11803    #[allow(deprecated)]
11804    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11805    where
11806        S: serde::Serializer,
11807    {
11808        use serde::ser::SerializeStruct;
11809        let mut len = 0;
11810        if !self.parent.is_empty() {
11811            len += 1;
11812        }
11813        if self.page_size != 0 {
11814            len += 1;
11815        }
11816        if !self.page_token.is_empty() {
11817            len += 1;
11818        }
11819        let mut struct_ser = serializer
11820            .serialize_struct(
11821                "origincloud.network.v1beta1.ListDnsPoliciesRequest",
11822                len,
11823            )?;
11824        if !self.parent.is_empty() {
11825            struct_ser.serialize_field("parent", &self.parent)?;
11826        }
11827        if self.page_size != 0 {
11828            struct_ser.serialize_field("pageSize", &self.page_size)?;
11829        }
11830        if !self.page_token.is_empty() {
11831            struct_ser.serialize_field("pageToken", &self.page_token)?;
11832        }
11833        struct_ser.end()
11834    }
11835}
11836impl<'de> serde::Deserialize<'de> for ListDnsPoliciesRequest {
11837    #[allow(deprecated)]
11838    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11839    where
11840        D: serde::Deserializer<'de>,
11841    {
11842        const FIELDS: &[&str] = &[
11843            "parent",
11844            "page_size",
11845            "pageSize",
11846            "page_token",
11847            "pageToken",
11848        ];
11849        #[allow(clippy::enum_variant_names)]
11850        enum GeneratedField {
11851            Parent,
11852            PageSize,
11853            PageToken,
11854            __SkipField__,
11855        }
11856        impl<'de> serde::Deserialize<'de> for GeneratedField {
11857            fn deserialize<D>(
11858                deserializer: D,
11859            ) -> std::result::Result<GeneratedField, D::Error>
11860            where
11861                D: serde::Deserializer<'de>,
11862            {
11863                struct GeneratedVisitor;
11864                impl serde::de::Visitor<'_> for GeneratedVisitor {
11865                    type Value = GeneratedField;
11866                    fn expecting(
11867                        &self,
11868                        formatter: &mut std::fmt::Formatter<'_>,
11869                    ) -> std::fmt::Result {
11870                        write!(formatter, "expected one of: {:?}", & FIELDS)
11871                    }
11872                    #[allow(unused_variables)]
11873                    fn visit_str<E>(
11874                        self,
11875                        value: &str,
11876                    ) -> std::result::Result<GeneratedField, E>
11877                    where
11878                        E: serde::de::Error,
11879                    {
11880                        match value {
11881                            "parent" => Ok(GeneratedField::Parent),
11882                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
11883                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
11884                            _ => Ok(GeneratedField::__SkipField__),
11885                        }
11886                    }
11887                }
11888                deserializer.deserialize_identifier(GeneratedVisitor)
11889            }
11890        }
11891        struct GeneratedVisitor;
11892        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
11893            type Value = ListDnsPoliciesRequest;
11894            fn expecting(
11895                &self,
11896                formatter: &mut std::fmt::Formatter<'_>,
11897            ) -> std::fmt::Result {
11898                formatter
11899                    .write_str(
11900                        "struct origincloud.network.v1beta1.ListDnsPoliciesRequest",
11901                    )
11902            }
11903            fn visit_map<V>(
11904                self,
11905                mut map_: V,
11906            ) -> std::result::Result<ListDnsPoliciesRequest, V::Error>
11907            where
11908                V: serde::de::MapAccess<'de>,
11909            {
11910                let mut parent__ = None;
11911                let mut page_size__ = None;
11912                let mut page_token__ = None;
11913                while let Some(k) = map_.next_key()? {
11914                    match k {
11915                        GeneratedField::Parent => {
11916                            if parent__.is_some() {
11917                                return Err(serde::de::Error::duplicate_field("parent"));
11918                            }
11919                            parent__ = Some(map_.next_value()?);
11920                        }
11921                        GeneratedField::PageSize => {
11922                            if page_size__.is_some() {
11923                                return Err(serde::de::Error::duplicate_field("pageSize"));
11924                            }
11925                            page_size__ = Some(
11926                                map_
11927                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
11928                                    .0,
11929                            );
11930                        }
11931                        GeneratedField::PageToken => {
11932                            if page_token__.is_some() {
11933                                return Err(serde::de::Error::duplicate_field("pageToken"));
11934                            }
11935                            page_token__ = Some(map_.next_value()?);
11936                        }
11937                        GeneratedField::__SkipField__ => {
11938                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
11939                        }
11940                    }
11941                }
11942                Ok(ListDnsPoliciesRequest {
11943                    parent: parent__.unwrap_or_default(),
11944                    page_size: page_size__.unwrap_or_default(),
11945                    page_token: page_token__.unwrap_or_default(),
11946                })
11947            }
11948        }
11949        deserializer
11950            .deserialize_struct(
11951                "origincloud.network.v1beta1.ListDnsPoliciesRequest",
11952                FIELDS,
11953                GeneratedVisitor,
11954            )
11955    }
11956}
11957impl serde::Serialize for ListDnsPoliciesResponse {
11958    #[allow(deprecated)]
11959    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
11960    where
11961        S: serde::Serializer,
11962    {
11963        use serde::ser::SerializeStruct;
11964        let mut len = 0;
11965        if !self.dns_policies.is_empty() {
11966            len += 1;
11967        }
11968        if !self.next_page_token.is_empty() {
11969            len += 1;
11970        }
11971        let mut struct_ser = serializer
11972            .serialize_struct(
11973                "origincloud.network.v1beta1.ListDnsPoliciesResponse",
11974                len,
11975            )?;
11976        if !self.dns_policies.is_empty() {
11977            struct_ser.serialize_field("dnsPolicies", &self.dns_policies)?;
11978        }
11979        if !self.next_page_token.is_empty() {
11980            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
11981        }
11982        struct_ser.end()
11983    }
11984}
11985impl<'de> serde::Deserialize<'de> for ListDnsPoliciesResponse {
11986    #[allow(deprecated)]
11987    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
11988    where
11989        D: serde::Deserializer<'de>,
11990    {
11991        const FIELDS: &[&str] = &[
11992            "dns_policies",
11993            "dnsPolicies",
11994            "next_page_token",
11995            "nextPageToken",
11996        ];
11997        #[allow(clippy::enum_variant_names)]
11998        enum GeneratedField {
11999            DnsPolicies,
12000            NextPageToken,
12001            __SkipField__,
12002        }
12003        impl<'de> serde::Deserialize<'de> for GeneratedField {
12004            fn deserialize<D>(
12005                deserializer: D,
12006            ) -> std::result::Result<GeneratedField, D::Error>
12007            where
12008                D: serde::Deserializer<'de>,
12009            {
12010                struct GeneratedVisitor;
12011                impl serde::de::Visitor<'_> for GeneratedVisitor {
12012                    type Value = GeneratedField;
12013                    fn expecting(
12014                        &self,
12015                        formatter: &mut std::fmt::Formatter<'_>,
12016                    ) -> std::fmt::Result {
12017                        write!(formatter, "expected one of: {:?}", & FIELDS)
12018                    }
12019                    #[allow(unused_variables)]
12020                    fn visit_str<E>(
12021                        self,
12022                        value: &str,
12023                    ) -> std::result::Result<GeneratedField, E>
12024                    where
12025                        E: serde::de::Error,
12026                    {
12027                        match value {
12028                            "dnsPolicies" | "dns_policies" => {
12029                                Ok(GeneratedField::DnsPolicies)
12030                            }
12031                            "nextPageToken" | "next_page_token" => {
12032                                Ok(GeneratedField::NextPageToken)
12033                            }
12034                            _ => Ok(GeneratedField::__SkipField__),
12035                        }
12036                    }
12037                }
12038                deserializer.deserialize_identifier(GeneratedVisitor)
12039            }
12040        }
12041        struct GeneratedVisitor;
12042        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12043            type Value = ListDnsPoliciesResponse;
12044            fn expecting(
12045                &self,
12046                formatter: &mut std::fmt::Formatter<'_>,
12047            ) -> std::fmt::Result {
12048                formatter
12049                    .write_str(
12050                        "struct origincloud.network.v1beta1.ListDnsPoliciesResponse",
12051                    )
12052            }
12053            fn visit_map<V>(
12054                self,
12055                mut map_: V,
12056            ) -> std::result::Result<ListDnsPoliciesResponse, V::Error>
12057            where
12058                V: serde::de::MapAccess<'de>,
12059            {
12060                let mut dns_policies__ = None;
12061                let mut next_page_token__ = None;
12062                while let Some(k) = map_.next_key()? {
12063                    match k {
12064                        GeneratedField::DnsPolicies => {
12065                            if dns_policies__.is_some() {
12066                                return Err(
12067                                    serde::de::Error::duplicate_field("dnsPolicies"),
12068                                );
12069                            }
12070                            dns_policies__ = Some(map_.next_value()?);
12071                        }
12072                        GeneratedField::NextPageToken => {
12073                            if next_page_token__.is_some() {
12074                                return Err(
12075                                    serde::de::Error::duplicate_field("nextPageToken"),
12076                                );
12077                            }
12078                            next_page_token__ = Some(map_.next_value()?);
12079                        }
12080                        GeneratedField::__SkipField__ => {
12081                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12082                        }
12083                    }
12084                }
12085                Ok(ListDnsPoliciesResponse {
12086                    dns_policies: dns_policies__.unwrap_or_default(),
12087                    next_page_token: next_page_token__.unwrap_or_default(),
12088                })
12089            }
12090        }
12091        deserializer
12092            .deserialize_struct(
12093                "origincloud.network.v1beta1.ListDnsPoliciesResponse",
12094                FIELDS,
12095                GeneratedVisitor,
12096            )
12097    }
12098}
12099impl serde::Serialize for ListDnsPolicyAssociationsRequest {
12100    #[allow(deprecated)]
12101    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12102    where
12103        S: serde::Serializer,
12104    {
12105        use serde::ser::SerializeStruct;
12106        let mut len = 0;
12107        if !self.parent.is_empty() {
12108            len += 1;
12109        }
12110        if self.page_size != 0 {
12111            len += 1;
12112        }
12113        if !self.page_token.is_empty() {
12114            len += 1;
12115        }
12116        let mut struct_ser = serializer
12117            .serialize_struct(
12118                "origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12119                len,
12120            )?;
12121        if !self.parent.is_empty() {
12122            struct_ser.serialize_field("parent", &self.parent)?;
12123        }
12124        if self.page_size != 0 {
12125            struct_ser.serialize_field("pageSize", &self.page_size)?;
12126        }
12127        if !self.page_token.is_empty() {
12128            struct_ser.serialize_field("pageToken", &self.page_token)?;
12129        }
12130        struct_ser.end()
12131    }
12132}
12133impl<'de> serde::Deserialize<'de> for ListDnsPolicyAssociationsRequest {
12134    #[allow(deprecated)]
12135    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12136    where
12137        D: serde::Deserializer<'de>,
12138    {
12139        const FIELDS: &[&str] = &[
12140            "parent",
12141            "page_size",
12142            "pageSize",
12143            "page_token",
12144            "pageToken",
12145        ];
12146        #[allow(clippy::enum_variant_names)]
12147        enum GeneratedField {
12148            Parent,
12149            PageSize,
12150            PageToken,
12151            __SkipField__,
12152        }
12153        impl<'de> serde::Deserialize<'de> for GeneratedField {
12154            fn deserialize<D>(
12155                deserializer: D,
12156            ) -> std::result::Result<GeneratedField, D::Error>
12157            where
12158                D: serde::Deserializer<'de>,
12159            {
12160                struct GeneratedVisitor;
12161                impl serde::de::Visitor<'_> for GeneratedVisitor {
12162                    type Value = GeneratedField;
12163                    fn expecting(
12164                        &self,
12165                        formatter: &mut std::fmt::Formatter<'_>,
12166                    ) -> std::fmt::Result {
12167                        write!(formatter, "expected one of: {:?}", & FIELDS)
12168                    }
12169                    #[allow(unused_variables)]
12170                    fn visit_str<E>(
12171                        self,
12172                        value: &str,
12173                    ) -> std::result::Result<GeneratedField, E>
12174                    where
12175                        E: serde::de::Error,
12176                    {
12177                        match value {
12178                            "parent" => Ok(GeneratedField::Parent),
12179                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12180                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12181                            _ => Ok(GeneratedField::__SkipField__),
12182                        }
12183                    }
12184                }
12185                deserializer.deserialize_identifier(GeneratedVisitor)
12186            }
12187        }
12188        struct GeneratedVisitor;
12189        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12190            type Value = ListDnsPolicyAssociationsRequest;
12191            fn expecting(
12192                &self,
12193                formatter: &mut std::fmt::Formatter<'_>,
12194            ) -> std::fmt::Result {
12195                formatter
12196                    .write_str(
12197                        "struct origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12198                    )
12199            }
12200            fn visit_map<V>(
12201                self,
12202                mut map_: V,
12203            ) -> std::result::Result<ListDnsPolicyAssociationsRequest, V::Error>
12204            where
12205                V: serde::de::MapAccess<'de>,
12206            {
12207                let mut parent__ = None;
12208                let mut page_size__ = None;
12209                let mut page_token__ = None;
12210                while let Some(k) = map_.next_key()? {
12211                    match k {
12212                        GeneratedField::Parent => {
12213                            if parent__.is_some() {
12214                                return Err(serde::de::Error::duplicate_field("parent"));
12215                            }
12216                            parent__ = Some(map_.next_value()?);
12217                        }
12218                        GeneratedField::PageSize => {
12219                            if page_size__.is_some() {
12220                                return Err(serde::de::Error::duplicate_field("pageSize"));
12221                            }
12222                            page_size__ = Some(
12223                                map_
12224                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12225                                    .0,
12226                            );
12227                        }
12228                        GeneratedField::PageToken => {
12229                            if page_token__.is_some() {
12230                                return Err(serde::de::Error::duplicate_field("pageToken"));
12231                            }
12232                            page_token__ = Some(map_.next_value()?);
12233                        }
12234                        GeneratedField::__SkipField__ => {
12235                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12236                        }
12237                    }
12238                }
12239                Ok(ListDnsPolicyAssociationsRequest {
12240                    parent: parent__.unwrap_or_default(),
12241                    page_size: page_size__.unwrap_or_default(),
12242                    page_token: page_token__.unwrap_or_default(),
12243                })
12244            }
12245        }
12246        deserializer
12247            .deserialize_struct(
12248                "origincloud.network.v1beta1.ListDnsPolicyAssociationsRequest",
12249                FIELDS,
12250                GeneratedVisitor,
12251            )
12252    }
12253}
12254impl serde::Serialize for ListDnsPolicyAssociationsResponse {
12255    #[allow(deprecated)]
12256    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12257    where
12258        S: serde::Serializer,
12259    {
12260        use serde::ser::SerializeStruct;
12261        let mut len = 0;
12262        if !self.dns_policy_associations.is_empty() {
12263            len += 1;
12264        }
12265        if !self.next_page_token.is_empty() {
12266            len += 1;
12267        }
12268        let mut struct_ser = serializer
12269            .serialize_struct(
12270                "origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12271                len,
12272            )?;
12273        if !self.dns_policy_associations.is_empty() {
12274            struct_ser
12275                .serialize_field(
12276                    "dnsPolicyAssociations",
12277                    &self.dns_policy_associations,
12278                )?;
12279        }
12280        if !self.next_page_token.is_empty() {
12281            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12282        }
12283        struct_ser.end()
12284    }
12285}
12286impl<'de> serde::Deserialize<'de> for ListDnsPolicyAssociationsResponse {
12287    #[allow(deprecated)]
12288    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12289    where
12290        D: serde::Deserializer<'de>,
12291    {
12292        const FIELDS: &[&str] = &[
12293            "dns_policy_associations",
12294            "dnsPolicyAssociations",
12295            "next_page_token",
12296            "nextPageToken",
12297        ];
12298        #[allow(clippy::enum_variant_names)]
12299        enum GeneratedField {
12300            DnsPolicyAssociations,
12301            NextPageToken,
12302            __SkipField__,
12303        }
12304        impl<'de> serde::Deserialize<'de> for GeneratedField {
12305            fn deserialize<D>(
12306                deserializer: D,
12307            ) -> std::result::Result<GeneratedField, D::Error>
12308            where
12309                D: serde::Deserializer<'de>,
12310            {
12311                struct GeneratedVisitor;
12312                impl serde::de::Visitor<'_> for GeneratedVisitor {
12313                    type Value = GeneratedField;
12314                    fn expecting(
12315                        &self,
12316                        formatter: &mut std::fmt::Formatter<'_>,
12317                    ) -> std::fmt::Result {
12318                        write!(formatter, "expected one of: {:?}", & FIELDS)
12319                    }
12320                    #[allow(unused_variables)]
12321                    fn visit_str<E>(
12322                        self,
12323                        value: &str,
12324                    ) -> std::result::Result<GeneratedField, E>
12325                    where
12326                        E: serde::de::Error,
12327                    {
12328                        match value {
12329                            "dnsPolicyAssociations" | "dns_policy_associations" => {
12330                                Ok(GeneratedField::DnsPolicyAssociations)
12331                            }
12332                            "nextPageToken" | "next_page_token" => {
12333                                Ok(GeneratedField::NextPageToken)
12334                            }
12335                            _ => Ok(GeneratedField::__SkipField__),
12336                        }
12337                    }
12338                }
12339                deserializer.deserialize_identifier(GeneratedVisitor)
12340            }
12341        }
12342        struct GeneratedVisitor;
12343        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12344            type Value = ListDnsPolicyAssociationsResponse;
12345            fn expecting(
12346                &self,
12347                formatter: &mut std::fmt::Formatter<'_>,
12348            ) -> std::fmt::Result {
12349                formatter
12350                    .write_str(
12351                        "struct origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12352                    )
12353            }
12354            fn visit_map<V>(
12355                self,
12356                mut map_: V,
12357            ) -> std::result::Result<ListDnsPolicyAssociationsResponse, V::Error>
12358            where
12359                V: serde::de::MapAccess<'de>,
12360            {
12361                let mut dns_policy_associations__ = None;
12362                let mut next_page_token__ = None;
12363                while let Some(k) = map_.next_key()? {
12364                    match k {
12365                        GeneratedField::DnsPolicyAssociations => {
12366                            if dns_policy_associations__.is_some() {
12367                                return Err(
12368                                    serde::de::Error::duplicate_field("dnsPolicyAssociations"),
12369                                );
12370                            }
12371                            dns_policy_associations__ = Some(map_.next_value()?);
12372                        }
12373                        GeneratedField::NextPageToken => {
12374                            if next_page_token__.is_some() {
12375                                return Err(
12376                                    serde::de::Error::duplicate_field("nextPageToken"),
12377                                );
12378                            }
12379                            next_page_token__ = Some(map_.next_value()?);
12380                        }
12381                        GeneratedField::__SkipField__ => {
12382                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12383                        }
12384                    }
12385                }
12386                Ok(ListDnsPolicyAssociationsResponse {
12387                    dns_policy_associations: dns_policy_associations__
12388                        .unwrap_or_default(),
12389                    next_page_token: next_page_token__.unwrap_or_default(),
12390                })
12391            }
12392        }
12393        deserializer
12394            .deserialize_struct(
12395                "origincloud.network.v1beta1.ListDnsPolicyAssociationsResponse",
12396                FIELDS,
12397                GeneratedVisitor,
12398            )
12399    }
12400}
12401impl serde::Serialize for ListFloatingIpAssociationsRequest {
12402    #[allow(deprecated)]
12403    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12404    where
12405        S: serde::Serializer,
12406    {
12407        use serde::ser::SerializeStruct;
12408        let mut len = 0;
12409        if !self.parent.is_empty() {
12410            len += 1;
12411        }
12412        if self.page_size != 0 {
12413            len += 1;
12414        }
12415        if !self.page_token.is_empty() {
12416            len += 1;
12417        }
12418        let mut struct_ser = serializer
12419            .serialize_struct(
12420                "origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12421                len,
12422            )?;
12423        if !self.parent.is_empty() {
12424            struct_ser.serialize_field("parent", &self.parent)?;
12425        }
12426        if self.page_size != 0 {
12427            struct_ser.serialize_field("pageSize", &self.page_size)?;
12428        }
12429        if !self.page_token.is_empty() {
12430            struct_ser.serialize_field("pageToken", &self.page_token)?;
12431        }
12432        struct_ser.end()
12433    }
12434}
12435impl<'de> serde::Deserialize<'de> for ListFloatingIpAssociationsRequest {
12436    #[allow(deprecated)]
12437    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12438    where
12439        D: serde::Deserializer<'de>,
12440    {
12441        const FIELDS: &[&str] = &[
12442            "parent",
12443            "page_size",
12444            "pageSize",
12445            "page_token",
12446            "pageToken",
12447        ];
12448        #[allow(clippy::enum_variant_names)]
12449        enum GeneratedField {
12450            Parent,
12451            PageSize,
12452            PageToken,
12453            __SkipField__,
12454        }
12455        impl<'de> serde::Deserialize<'de> for GeneratedField {
12456            fn deserialize<D>(
12457                deserializer: D,
12458            ) -> std::result::Result<GeneratedField, D::Error>
12459            where
12460                D: serde::Deserializer<'de>,
12461            {
12462                struct GeneratedVisitor;
12463                impl serde::de::Visitor<'_> for GeneratedVisitor {
12464                    type Value = GeneratedField;
12465                    fn expecting(
12466                        &self,
12467                        formatter: &mut std::fmt::Formatter<'_>,
12468                    ) -> std::fmt::Result {
12469                        write!(formatter, "expected one of: {:?}", & FIELDS)
12470                    }
12471                    #[allow(unused_variables)]
12472                    fn visit_str<E>(
12473                        self,
12474                        value: &str,
12475                    ) -> std::result::Result<GeneratedField, E>
12476                    where
12477                        E: serde::de::Error,
12478                    {
12479                        match value {
12480                            "parent" => Ok(GeneratedField::Parent),
12481                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12482                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12483                            _ => Ok(GeneratedField::__SkipField__),
12484                        }
12485                    }
12486                }
12487                deserializer.deserialize_identifier(GeneratedVisitor)
12488            }
12489        }
12490        struct GeneratedVisitor;
12491        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12492            type Value = ListFloatingIpAssociationsRequest;
12493            fn expecting(
12494                &self,
12495                formatter: &mut std::fmt::Formatter<'_>,
12496            ) -> std::fmt::Result {
12497                formatter
12498                    .write_str(
12499                        "struct origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12500                    )
12501            }
12502            fn visit_map<V>(
12503                self,
12504                mut map_: V,
12505            ) -> std::result::Result<ListFloatingIpAssociationsRequest, V::Error>
12506            where
12507                V: serde::de::MapAccess<'de>,
12508            {
12509                let mut parent__ = None;
12510                let mut page_size__ = None;
12511                let mut page_token__ = None;
12512                while let Some(k) = map_.next_key()? {
12513                    match k {
12514                        GeneratedField::Parent => {
12515                            if parent__.is_some() {
12516                                return Err(serde::de::Error::duplicate_field("parent"));
12517                            }
12518                            parent__ = Some(map_.next_value()?);
12519                        }
12520                        GeneratedField::PageSize => {
12521                            if page_size__.is_some() {
12522                                return Err(serde::de::Error::duplicate_field("pageSize"));
12523                            }
12524                            page_size__ = Some(
12525                                map_
12526                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12527                                    .0,
12528                            );
12529                        }
12530                        GeneratedField::PageToken => {
12531                            if page_token__.is_some() {
12532                                return Err(serde::de::Error::duplicate_field("pageToken"));
12533                            }
12534                            page_token__ = Some(map_.next_value()?);
12535                        }
12536                        GeneratedField::__SkipField__ => {
12537                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12538                        }
12539                    }
12540                }
12541                Ok(ListFloatingIpAssociationsRequest {
12542                    parent: parent__.unwrap_or_default(),
12543                    page_size: page_size__.unwrap_or_default(),
12544                    page_token: page_token__.unwrap_or_default(),
12545                })
12546            }
12547        }
12548        deserializer
12549            .deserialize_struct(
12550                "origincloud.network.v1beta1.ListFloatingIpAssociationsRequest",
12551                FIELDS,
12552                GeneratedVisitor,
12553            )
12554    }
12555}
12556impl serde::Serialize for ListFloatingIpAssociationsResponse {
12557    #[allow(deprecated)]
12558    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12559    where
12560        S: serde::Serializer,
12561    {
12562        use serde::ser::SerializeStruct;
12563        let mut len = 0;
12564        if !self.floating_ip_associations.is_empty() {
12565            len += 1;
12566        }
12567        if !self.next_page_token.is_empty() {
12568            len += 1;
12569        }
12570        let mut struct_ser = serializer
12571            .serialize_struct(
12572                "origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12573                len,
12574            )?;
12575        if !self.floating_ip_associations.is_empty() {
12576            struct_ser
12577                .serialize_field(
12578                    "floatingIpAssociations",
12579                    &self.floating_ip_associations,
12580                )?;
12581        }
12582        if !self.next_page_token.is_empty() {
12583            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12584        }
12585        struct_ser.end()
12586    }
12587}
12588impl<'de> serde::Deserialize<'de> for ListFloatingIpAssociationsResponse {
12589    #[allow(deprecated)]
12590    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12591    where
12592        D: serde::Deserializer<'de>,
12593    {
12594        const FIELDS: &[&str] = &[
12595            "floating_ip_associations",
12596            "floatingIpAssociations",
12597            "next_page_token",
12598            "nextPageToken",
12599        ];
12600        #[allow(clippy::enum_variant_names)]
12601        enum GeneratedField {
12602            FloatingIpAssociations,
12603            NextPageToken,
12604            __SkipField__,
12605        }
12606        impl<'de> serde::Deserialize<'de> for GeneratedField {
12607            fn deserialize<D>(
12608                deserializer: D,
12609            ) -> std::result::Result<GeneratedField, D::Error>
12610            where
12611                D: serde::Deserializer<'de>,
12612            {
12613                struct GeneratedVisitor;
12614                impl serde::de::Visitor<'_> for GeneratedVisitor {
12615                    type Value = GeneratedField;
12616                    fn expecting(
12617                        &self,
12618                        formatter: &mut std::fmt::Formatter<'_>,
12619                    ) -> std::fmt::Result {
12620                        write!(formatter, "expected one of: {:?}", & FIELDS)
12621                    }
12622                    #[allow(unused_variables)]
12623                    fn visit_str<E>(
12624                        self,
12625                        value: &str,
12626                    ) -> std::result::Result<GeneratedField, E>
12627                    where
12628                        E: serde::de::Error,
12629                    {
12630                        match value {
12631                            "floatingIpAssociations" | "floating_ip_associations" => {
12632                                Ok(GeneratedField::FloatingIpAssociations)
12633                            }
12634                            "nextPageToken" | "next_page_token" => {
12635                                Ok(GeneratedField::NextPageToken)
12636                            }
12637                            _ => Ok(GeneratedField::__SkipField__),
12638                        }
12639                    }
12640                }
12641                deserializer.deserialize_identifier(GeneratedVisitor)
12642            }
12643        }
12644        struct GeneratedVisitor;
12645        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12646            type Value = ListFloatingIpAssociationsResponse;
12647            fn expecting(
12648                &self,
12649                formatter: &mut std::fmt::Formatter<'_>,
12650            ) -> std::fmt::Result {
12651                formatter
12652                    .write_str(
12653                        "struct origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12654                    )
12655            }
12656            fn visit_map<V>(
12657                self,
12658                mut map_: V,
12659            ) -> std::result::Result<ListFloatingIpAssociationsResponse, V::Error>
12660            where
12661                V: serde::de::MapAccess<'de>,
12662            {
12663                let mut floating_ip_associations__ = None;
12664                let mut next_page_token__ = None;
12665                while let Some(k) = map_.next_key()? {
12666                    match k {
12667                        GeneratedField::FloatingIpAssociations => {
12668                            if floating_ip_associations__.is_some() {
12669                                return Err(
12670                                    serde::de::Error::duplicate_field("floatingIpAssociations"),
12671                                );
12672                            }
12673                            floating_ip_associations__ = Some(map_.next_value()?);
12674                        }
12675                        GeneratedField::NextPageToken => {
12676                            if next_page_token__.is_some() {
12677                                return Err(
12678                                    serde::de::Error::duplicate_field("nextPageToken"),
12679                                );
12680                            }
12681                            next_page_token__ = Some(map_.next_value()?);
12682                        }
12683                        GeneratedField::__SkipField__ => {
12684                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12685                        }
12686                    }
12687                }
12688                Ok(ListFloatingIpAssociationsResponse {
12689                    floating_ip_associations: floating_ip_associations__
12690                        .unwrap_or_default(),
12691                    next_page_token: next_page_token__.unwrap_or_default(),
12692                })
12693            }
12694        }
12695        deserializer
12696            .deserialize_struct(
12697                "origincloud.network.v1beta1.ListFloatingIpAssociationsResponse",
12698                FIELDS,
12699                GeneratedVisitor,
12700            )
12701    }
12702}
12703impl serde::Serialize for ListFloatingIpsRequest {
12704    #[allow(deprecated)]
12705    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12706    where
12707        S: serde::Serializer,
12708    {
12709        use serde::ser::SerializeStruct;
12710        let mut len = 0;
12711        if !self.parent.is_empty() {
12712            len += 1;
12713        }
12714        if self.page_size != 0 {
12715            len += 1;
12716        }
12717        if !self.page_token.is_empty() {
12718            len += 1;
12719        }
12720        let mut struct_ser = serializer
12721            .serialize_struct(
12722                "origincloud.network.v1beta1.ListFloatingIpsRequest",
12723                len,
12724            )?;
12725        if !self.parent.is_empty() {
12726            struct_ser.serialize_field("parent", &self.parent)?;
12727        }
12728        if self.page_size != 0 {
12729            struct_ser.serialize_field("pageSize", &self.page_size)?;
12730        }
12731        if !self.page_token.is_empty() {
12732            struct_ser.serialize_field("pageToken", &self.page_token)?;
12733        }
12734        struct_ser.end()
12735    }
12736}
12737impl<'de> serde::Deserialize<'de> for ListFloatingIpsRequest {
12738    #[allow(deprecated)]
12739    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12740    where
12741        D: serde::Deserializer<'de>,
12742    {
12743        const FIELDS: &[&str] = &[
12744            "parent",
12745            "page_size",
12746            "pageSize",
12747            "page_token",
12748            "pageToken",
12749        ];
12750        #[allow(clippy::enum_variant_names)]
12751        enum GeneratedField {
12752            Parent,
12753            PageSize,
12754            PageToken,
12755            __SkipField__,
12756        }
12757        impl<'de> serde::Deserialize<'de> for GeneratedField {
12758            fn deserialize<D>(
12759                deserializer: D,
12760            ) -> std::result::Result<GeneratedField, D::Error>
12761            where
12762                D: serde::Deserializer<'de>,
12763            {
12764                struct GeneratedVisitor;
12765                impl serde::de::Visitor<'_> for GeneratedVisitor {
12766                    type Value = GeneratedField;
12767                    fn expecting(
12768                        &self,
12769                        formatter: &mut std::fmt::Formatter<'_>,
12770                    ) -> std::fmt::Result {
12771                        write!(formatter, "expected one of: {:?}", & FIELDS)
12772                    }
12773                    #[allow(unused_variables)]
12774                    fn visit_str<E>(
12775                        self,
12776                        value: &str,
12777                    ) -> std::result::Result<GeneratedField, E>
12778                    where
12779                        E: serde::de::Error,
12780                    {
12781                        match value {
12782                            "parent" => Ok(GeneratedField::Parent),
12783                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
12784                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
12785                            _ => Ok(GeneratedField::__SkipField__),
12786                        }
12787                    }
12788                }
12789                deserializer.deserialize_identifier(GeneratedVisitor)
12790            }
12791        }
12792        struct GeneratedVisitor;
12793        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12794            type Value = ListFloatingIpsRequest;
12795            fn expecting(
12796                &self,
12797                formatter: &mut std::fmt::Formatter<'_>,
12798            ) -> std::fmt::Result {
12799                formatter
12800                    .write_str(
12801                        "struct origincloud.network.v1beta1.ListFloatingIpsRequest",
12802                    )
12803            }
12804            fn visit_map<V>(
12805                self,
12806                mut map_: V,
12807            ) -> std::result::Result<ListFloatingIpsRequest, V::Error>
12808            where
12809                V: serde::de::MapAccess<'de>,
12810            {
12811                let mut parent__ = None;
12812                let mut page_size__ = None;
12813                let mut page_token__ = None;
12814                while let Some(k) = map_.next_key()? {
12815                    match k {
12816                        GeneratedField::Parent => {
12817                            if parent__.is_some() {
12818                                return Err(serde::de::Error::duplicate_field("parent"));
12819                            }
12820                            parent__ = Some(map_.next_value()?);
12821                        }
12822                        GeneratedField::PageSize => {
12823                            if page_size__.is_some() {
12824                                return Err(serde::de::Error::duplicate_field("pageSize"));
12825                            }
12826                            page_size__ = Some(
12827                                map_
12828                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
12829                                    .0,
12830                            );
12831                        }
12832                        GeneratedField::PageToken => {
12833                            if page_token__.is_some() {
12834                                return Err(serde::de::Error::duplicate_field("pageToken"));
12835                            }
12836                            page_token__ = Some(map_.next_value()?);
12837                        }
12838                        GeneratedField::__SkipField__ => {
12839                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12840                        }
12841                    }
12842                }
12843                Ok(ListFloatingIpsRequest {
12844                    parent: parent__.unwrap_or_default(),
12845                    page_size: page_size__.unwrap_or_default(),
12846                    page_token: page_token__.unwrap_or_default(),
12847                })
12848            }
12849        }
12850        deserializer
12851            .deserialize_struct(
12852                "origincloud.network.v1beta1.ListFloatingIpsRequest",
12853                FIELDS,
12854                GeneratedVisitor,
12855            )
12856    }
12857}
12858impl serde::Serialize for ListFloatingIpsResponse {
12859    #[allow(deprecated)]
12860    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
12861    where
12862        S: serde::Serializer,
12863    {
12864        use serde::ser::SerializeStruct;
12865        let mut len = 0;
12866        if !self.floating_ips.is_empty() {
12867            len += 1;
12868        }
12869        if !self.next_page_token.is_empty() {
12870            len += 1;
12871        }
12872        let mut struct_ser = serializer
12873            .serialize_struct(
12874                "origincloud.network.v1beta1.ListFloatingIpsResponse",
12875                len,
12876            )?;
12877        if !self.floating_ips.is_empty() {
12878            struct_ser.serialize_field("floatingIps", &self.floating_ips)?;
12879        }
12880        if !self.next_page_token.is_empty() {
12881            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
12882        }
12883        struct_ser.end()
12884    }
12885}
12886impl<'de> serde::Deserialize<'de> for ListFloatingIpsResponse {
12887    #[allow(deprecated)]
12888    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
12889    where
12890        D: serde::Deserializer<'de>,
12891    {
12892        const FIELDS: &[&str] = &[
12893            "floating_ips",
12894            "floatingIps",
12895            "next_page_token",
12896            "nextPageToken",
12897        ];
12898        #[allow(clippy::enum_variant_names)]
12899        enum GeneratedField {
12900            FloatingIps,
12901            NextPageToken,
12902            __SkipField__,
12903        }
12904        impl<'de> serde::Deserialize<'de> for GeneratedField {
12905            fn deserialize<D>(
12906                deserializer: D,
12907            ) -> std::result::Result<GeneratedField, D::Error>
12908            where
12909                D: serde::Deserializer<'de>,
12910            {
12911                struct GeneratedVisitor;
12912                impl serde::de::Visitor<'_> for GeneratedVisitor {
12913                    type Value = GeneratedField;
12914                    fn expecting(
12915                        &self,
12916                        formatter: &mut std::fmt::Formatter<'_>,
12917                    ) -> std::fmt::Result {
12918                        write!(formatter, "expected one of: {:?}", & FIELDS)
12919                    }
12920                    #[allow(unused_variables)]
12921                    fn visit_str<E>(
12922                        self,
12923                        value: &str,
12924                    ) -> std::result::Result<GeneratedField, E>
12925                    where
12926                        E: serde::de::Error,
12927                    {
12928                        match value {
12929                            "floatingIps" | "floating_ips" => {
12930                                Ok(GeneratedField::FloatingIps)
12931                            }
12932                            "nextPageToken" | "next_page_token" => {
12933                                Ok(GeneratedField::NextPageToken)
12934                            }
12935                            _ => Ok(GeneratedField::__SkipField__),
12936                        }
12937                    }
12938                }
12939                deserializer.deserialize_identifier(GeneratedVisitor)
12940            }
12941        }
12942        struct GeneratedVisitor;
12943        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
12944            type Value = ListFloatingIpsResponse;
12945            fn expecting(
12946                &self,
12947                formatter: &mut std::fmt::Formatter<'_>,
12948            ) -> std::fmt::Result {
12949                formatter
12950                    .write_str(
12951                        "struct origincloud.network.v1beta1.ListFloatingIpsResponse",
12952                    )
12953            }
12954            fn visit_map<V>(
12955                self,
12956                mut map_: V,
12957            ) -> std::result::Result<ListFloatingIpsResponse, V::Error>
12958            where
12959                V: serde::de::MapAccess<'de>,
12960            {
12961                let mut floating_ips__ = None;
12962                let mut next_page_token__ = None;
12963                while let Some(k) = map_.next_key()? {
12964                    match k {
12965                        GeneratedField::FloatingIps => {
12966                            if floating_ips__.is_some() {
12967                                return Err(
12968                                    serde::de::Error::duplicate_field("floatingIps"),
12969                                );
12970                            }
12971                            floating_ips__ = Some(map_.next_value()?);
12972                        }
12973                        GeneratedField::NextPageToken => {
12974                            if next_page_token__.is_some() {
12975                                return Err(
12976                                    serde::de::Error::duplicate_field("nextPageToken"),
12977                                );
12978                            }
12979                            next_page_token__ = Some(map_.next_value()?);
12980                        }
12981                        GeneratedField::__SkipField__ => {
12982                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
12983                        }
12984                    }
12985                }
12986                Ok(ListFloatingIpsResponse {
12987                    floating_ips: floating_ips__.unwrap_or_default(),
12988                    next_page_token: next_page_token__.unwrap_or_default(),
12989                })
12990            }
12991        }
12992        deserializer
12993            .deserialize_struct(
12994                "origincloud.network.v1beta1.ListFloatingIpsResponse",
12995                FIELDS,
12996                GeneratedVisitor,
12997            )
12998    }
12999}
13000impl serde::Serialize for ListInternetGatewaysRequest {
13001    #[allow(deprecated)]
13002    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13003    where
13004        S: serde::Serializer,
13005    {
13006        use serde::ser::SerializeStruct;
13007        let mut len = 0;
13008        if !self.parent.is_empty() {
13009            len += 1;
13010        }
13011        if self.page_size != 0 {
13012            len += 1;
13013        }
13014        if !self.page_token.is_empty() {
13015            len += 1;
13016        }
13017        if !self.vpc.is_empty() {
13018            len += 1;
13019        }
13020        let mut struct_ser = serializer
13021            .serialize_struct(
13022                "origincloud.network.v1beta1.ListInternetGatewaysRequest",
13023                len,
13024            )?;
13025        if !self.parent.is_empty() {
13026            struct_ser.serialize_field("parent", &self.parent)?;
13027        }
13028        if self.page_size != 0 {
13029            struct_ser.serialize_field("pageSize", &self.page_size)?;
13030        }
13031        if !self.page_token.is_empty() {
13032            struct_ser.serialize_field("pageToken", &self.page_token)?;
13033        }
13034        if !self.vpc.is_empty() {
13035            struct_ser.serialize_field("vpc", &self.vpc)?;
13036        }
13037        struct_ser.end()
13038    }
13039}
13040impl<'de> serde::Deserialize<'de> for ListInternetGatewaysRequest {
13041    #[allow(deprecated)]
13042    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13043    where
13044        D: serde::Deserializer<'de>,
13045    {
13046        const FIELDS: &[&str] = &[
13047            "parent",
13048            "page_size",
13049            "pageSize",
13050            "page_token",
13051            "pageToken",
13052            "vpc",
13053        ];
13054        #[allow(clippy::enum_variant_names)]
13055        enum GeneratedField {
13056            Parent,
13057            PageSize,
13058            PageToken,
13059            Vpc,
13060            __SkipField__,
13061        }
13062        impl<'de> serde::Deserialize<'de> for GeneratedField {
13063            fn deserialize<D>(
13064                deserializer: D,
13065            ) -> std::result::Result<GeneratedField, D::Error>
13066            where
13067                D: serde::Deserializer<'de>,
13068            {
13069                struct GeneratedVisitor;
13070                impl serde::de::Visitor<'_> for GeneratedVisitor {
13071                    type Value = GeneratedField;
13072                    fn expecting(
13073                        &self,
13074                        formatter: &mut std::fmt::Formatter<'_>,
13075                    ) -> std::fmt::Result {
13076                        write!(formatter, "expected one of: {:?}", & FIELDS)
13077                    }
13078                    #[allow(unused_variables)]
13079                    fn visit_str<E>(
13080                        self,
13081                        value: &str,
13082                    ) -> std::result::Result<GeneratedField, E>
13083                    where
13084                        E: serde::de::Error,
13085                    {
13086                        match value {
13087                            "parent" => Ok(GeneratedField::Parent),
13088                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13089                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13090                            "vpc" => Ok(GeneratedField::Vpc),
13091                            _ => Ok(GeneratedField::__SkipField__),
13092                        }
13093                    }
13094                }
13095                deserializer.deserialize_identifier(GeneratedVisitor)
13096            }
13097        }
13098        struct GeneratedVisitor;
13099        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13100            type Value = ListInternetGatewaysRequest;
13101            fn expecting(
13102                &self,
13103                formatter: &mut std::fmt::Formatter<'_>,
13104            ) -> std::fmt::Result {
13105                formatter
13106                    .write_str(
13107                        "struct origincloud.network.v1beta1.ListInternetGatewaysRequest",
13108                    )
13109            }
13110            fn visit_map<V>(
13111                self,
13112                mut map_: V,
13113            ) -> std::result::Result<ListInternetGatewaysRequest, V::Error>
13114            where
13115                V: serde::de::MapAccess<'de>,
13116            {
13117                let mut parent__ = None;
13118                let mut page_size__ = None;
13119                let mut page_token__ = None;
13120                let mut vpc__ = None;
13121                while let Some(k) = map_.next_key()? {
13122                    match k {
13123                        GeneratedField::Parent => {
13124                            if parent__.is_some() {
13125                                return Err(serde::de::Error::duplicate_field("parent"));
13126                            }
13127                            parent__ = Some(map_.next_value()?);
13128                        }
13129                        GeneratedField::PageSize => {
13130                            if page_size__.is_some() {
13131                                return Err(serde::de::Error::duplicate_field("pageSize"));
13132                            }
13133                            page_size__ = Some(
13134                                map_
13135                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13136                                    .0,
13137                            );
13138                        }
13139                        GeneratedField::PageToken => {
13140                            if page_token__.is_some() {
13141                                return Err(serde::de::Error::duplicate_field("pageToken"));
13142                            }
13143                            page_token__ = Some(map_.next_value()?);
13144                        }
13145                        GeneratedField::Vpc => {
13146                            if vpc__.is_some() {
13147                                return Err(serde::de::Error::duplicate_field("vpc"));
13148                            }
13149                            vpc__ = Some(map_.next_value()?);
13150                        }
13151                        GeneratedField::__SkipField__ => {
13152                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13153                        }
13154                    }
13155                }
13156                Ok(ListInternetGatewaysRequest {
13157                    parent: parent__.unwrap_or_default(),
13158                    page_size: page_size__.unwrap_or_default(),
13159                    page_token: page_token__.unwrap_or_default(),
13160                    vpc: vpc__.unwrap_or_default(),
13161                })
13162            }
13163        }
13164        deserializer
13165            .deserialize_struct(
13166                "origincloud.network.v1beta1.ListInternetGatewaysRequest",
13167                FIELDS,
13168                GeneratedVisitor,
13169            )
13170    }
13171}
13172impl serde::Serialize for ListInternetGatewaysResponse {
13173    #[allow(deprecated)]
13174    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13175    where
13176        S: serde::Serializer,
13177    {
13178        use serde::ser::SerializeStruct;
13179        let mut len = 0;
13180        if !self.internet_gateways.is_empty() {
13181            len += 1;
13182        }
13183        if !self.next_page_token.is_empty() {
13184            len += 1;
13185        }
13186        let mut struct_ser = serializer
13187            .serialize_struct(
13188                "origincloud.network.v1beta1.ListInternetGatewaysResponse",
13189                len,
13190            )?;
13191        if !self.internet_gateways.is_empty() {
13192            struct_ser.serialize_field("internetGateways", &self.internet_gateways)?;
13193        }
13194        if !self.next_page_token.is_empty() {
13195            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13196        }
13197        struct_ser.end()
13198    }
13199}
13200impl<'de> serde::Deserialize<'de> for ListInternetGatewaysResponse {
13201    #[allow(deprecated)]
13202    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13203    where
13204        D: serde::Deserializer<'de>,
13205    {
13206        const FIELDS: &[&str] = &[
13207            "internet_gateways",
13208            "internetGateways",
13209            "next_page_token",
13210            "nextPageToken",
13211        ];
13212        #[allow(clippy::enum_variant_names)]
13213        enum GeneratedField {
13214            InternetGateways,
13215            NextPageToken,
13216            __SkipField__,
13217        }
13218        impl<'de> serde::Deserialize<'de> for GeneratedField {
13219            fn deserialize<D>(
13220                deserializer: D,
13221            ) -> std::result::Result<GeneratedField, D::Error>
13222            where
13223                D: serde::Deserializer<'de>,
13224            {
13225                struct GeneratedVisitor;
13226                impl serde::de::Visitor<'_> for GeneratedVisitor {
13227                    type Value = GeneratedField;
13228                    fn expecting(
13229                        &self,
13230                        formatter: &mut std::fmt::Formatter<'_>,
13231                    ) -> std::fmt::Result {
13232                        write!(formatter, "expected one of: {:?}", & FIELDS)
13233                    }
13234                    #[allow(unused_variables)]
13235                    fn visit_str<E>(
13236                        self,
13237                        value: &str,
13238                    ) -> std::result::Result<GeneratedField, E>
13239                    where
13240                        E: serde::de::Error,
13241                    {
13242                        match value {
13243                            "internetGateways" | "internet_gateways" => {
13244                                Ok(GeneratedField::InternetGateways)
13245                            }
13246                            "nextPageToken" | "next_page_token" => {
13247                                Ok(GeneratedField::NextPageToken)
13248                            }
13249                            _ => Ok(GeneratedField::__SkipField__),
13250                        }
13251                    }
13252                }
13253                deserializer.deserialize_identifier(GeneratedVisitor)
13254            }
13255        }
13256        struct GeneratedVisitor;
13257        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13258            type Value = ListInternetGatewaysResponse;
13259            fn expecting(
13260                &self,
13261                formatter: &mut std::fmt::Formatter<'_>,
13262            ) -> std::fmt::Result {
13263                formatter
13264                    .write_str(
13265                        "struct origincloud.network.v1beta1.ListInternetGatewaysResponse",
13266                    )
13267            }
13268            fn visit_map<V>(
13269                self,
13270                mut map_: V,
13271            ) -> std::result::Result<ListInternetGatewaysResponse, V::Error>
13272            where
13273                V: serde::de::MapAccess<'de>,
13274            {
13275                let mut internet_gateways__ = None;
13276                let mut next_page_token__ = None;
13277                while let Some(k) = map_.next_key()? {
13278                    match k {
13279                        GeneratedField::InternetGateways => {
13280                            if internet_gateways__.is_some() {
13281                                return Err(
13282                                    serde::de::Error::duplicate_field("internetGateways"),
13283                                );
13284                            }
13285                            internet_gateways__ = Some(map_.next_value()?);
13286                        }
13287                        GeneratedField::NextPageToken => {
13288                            if next_page_token__.is_some() {
13289                                return Err(
13290                                    serde::de::Error::duplicate_field("nextPageToken"),
13291                                );
13292                            }
13293                            next_page_token__ = Some(map_.next_value()?);
13294                        }
13295                        GeneratedField::__SkipField__ => {
13296                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13297                        }
13298                    }
13299                }
13300                Ok(ListInternetGatewaysResponse {
13301                    internet_gateways: internet_gateways__.unwrap_or_default(),
13302                    next_page_token: next_page_token__.unwrap_or_default(),
13303                })
13304            }
13305        }
13306        deserializer
13307            .deserialize_struct(
13308                "origincloud.network.v1beta1.ListInternetGatewaysResponse",
13309                FIELDS,
13310                GeneratedVisitor,
13311            )
13312    }
13313}
13314impl serde::Serialize for ListNatGatewaysRequest {
13315    #[allow(deprecated)]
13316    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13317    where
13318        S: serde::Serializer,
13319    {
13320        use serde::ser::SerializeStruct;
13321        let mut len = 0;
13322        if !self.parent.is_empty() {
13323            len += 1;
13324        }
13325        if self.page_size != 0 {
13326            len += 1;
13327        }
13328        if !self.page_token.is_empty() {
13329            len += 1;
13330        }
13331        let mut struct_ser = serializer
13332            .serialize_struct(
13333                "origincloud.network.v1beta1.ListNatGatewaysRequest",
13334                len,
13335            )?;
13336        if !self.parent.is_empty() {
13337            struct_ser.serialize_field("parent", &self.parent)?;
13338        }
13339        if self.page_size != 0 {
13340            struct_ser.serialize_field("pageSize", &self.page_size)?;
13341        }
13342        if !self.page_token.is_empty() {
13343            struct_ser.serialize_field("pageToken", &self.page_token)?;
13344        }
13345        struct_ser.end()
13346    }
13347}
13348impl<'de> serde::Deserialize<'de> for ListNatGatewaysRequest {
13349    #[allow(deprecated)]
13350    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13351    where
13352        D: serde::Deserializer<'de>,
13353    {
13354        const FIELDS: &[&str] = &[
13355            "parent",
13356            "page_size",
13357            "pageSize",
13358            "page_token",
13359            "pageToken",
13360        ];
13361        #[allow(clippy::enum_variant_names)]
13362        enum GeneratedField {
13363            Parent,
13364            PageSize,
13365            PageToken,
13366            __SkipField__,
13367        }
13368        impl<'de> serde::Deserialize<'de> for GeneratedField {
13369            fn deserialize<D>(
13370                deserializer: D,
13371            ) -> std::result::Result<GeneratedField, D::Error>
13372            where
13373                D: serde::Deserializer<'de>,
13374            {
13375                struct GeneratedVisitor;
13376                impl serde::de::Visitor<'_> for GeneratedVisitor {
13377                    type Value = GeneratedField;
13378                    fn expecting(
13379                        &self,
13380                        formatter: &mut std::fmt::Formatter<'_>,
13381                    ) -> std::fmt::Result {
13382                        write!(formatter, "expected one of: {:?}", & FIELDS)
13383                    }
13384                    #[allow(unused_variables)]
13385                    fn visit_str<E>(
13386                        self,
13387                        value: &str,
13388                    ) -> std::result::Result<GeneratedField, E>
13389                    where
13390                        E: serde::de::Error,
13391                    {
13392                        match value {
13393                            "parent" => Ok(GeneratedField::Parent),
13394                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13395                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13396                            _ => Ok(GeneratedField::__SkipField__),
13397                        }
13398                    }
13399                }
13400                deserializer.deserialize_identifier(GeneratedVisitor)
13401            }
13402        }
13403        struct GeneratedVisitor;
13404        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13405            type Value = ListNatGatewaysRequest;
13406            fn expecting(
13407                &self,
13408                formatter: &mut std::fmt::Formatter<'_>,
13409            ) -> std::fmt::Result {
13410                formatter
13411                    .write_str(
13412                        "struct origincloud.network.v1beta1.ListNatGatewaysRequest",
13413                    )
13414            }
13415            fn visit_map<V>(
13416                self,
13417                mut map_: V,
13418            ) -> std::result::Result<ListNatGatewaysRequest, V::Error>
13419            where
13420                V: serde::de::MapAccess<'de>,
13421            {
13422                let mut parent__ = None;
13423                let mut page_size__ = None;
13424                let mut page_token__ = None;
13425                while let Some(k) = map_.next_key()? {
13426                    match k {
13427                        GeneratedField::Parent => {
13428                            if parent__.is_some() {
13429                                return Err(serde::de::Error::duplicate_field("parent"));
13430                            }
13431                            parent__ = Some(map_.next_value()?);
13432                        }
13433                        GeneratedField::PageSize => {
13434                            if page_size__.is_some() {
13435                                return Err(serde::de::Error::duplicate_field("pageSize"));
13436                            }
13437                            page_size__ = Some(
13438                                map_
13439                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13440                                    .0,
13441                            );
13442                        }
13443                        GeneratedField::PageToken => {
13444                            if page_token__.is_some() {
13445                                return Err(serde::de::Error::duplicate_field("pageToken"));
13446                            }
13447                            page_token__ = Some(map_.next_value()?);
13448                        }
13449                        GeneratedField::__SkipField__ => {
13450                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13451                        }
13452                    }
13453                }
13454                Ok(ListNatGatewaysRequest {
13455                    parent: parent__.unwrap_or_default(),
13456                    page_size: page_size__.unwrap_or_default(),
13457                    page_token: page_token__.unwrap_or_default(),
13458                })
13459            }
13460        }
13461        deserializer
13462            .deserialize_struct(
13463                "origincloud.network.v1beta1.ListNatGatewaysRequest",
13464                FIELDS,
13465                GeneratedVisitor,
13466            )
13467    }
13468}
13469impl serde::Serialize for ListNatGatewaysResponse {
13470    #[allow(deprecated)]
13471    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13472    where
13473        S: serde::Serializer,
13474    {
13475        use serde::ser::SerializeStruct;
13476        let mut len = 0;
13477        if !self.nat_gateways.is_empty() {
13478            len += 1;
13479        }
13480        if !self.next_page_token.is_empty() {
13481            len += 1;
13482        }
13483        let mut struct_ser = serializer
13484            .serialize_struct(
13485                "origincloud.network.v1beta1.ListNatGatewaysResponse",
13486                len,
13487            )?;
13488        if !self.nat_gateways.is_empty() {
13489            struct_ser.serialize_field("natGateways", &self.nat_gateways)?;
13490        }
13491        if !self.next_page_token.is_empty() {
13492            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13493        }
13494        struct_ser.end()
13495    }
13496}
13497impl<'de> serde::Deserialize<'de> for ListNatGatewaysResponse {
13498    #[allow(deprecated)]
13499    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13500    where
13501        D: serde::Deserializer<'de>,
13502    {
13503        const FIELDS: &[&str] = &[
13504            "nat_gateways",
13505            "natGateways",
13506            "next_page_token",
13507            "nextPageToken",
13508        ];
13509        #[allow(clippy::enum_variant_names)]
13510        enum GeneratedField {
13511            NatGateways,
13512            NextPageToken,
13513            __SkipField__,
13514        }
13515        impl<'de> serde::Deserialize<'de> for GeneratedField {
13516            fn deserialize<D>(
13517                deserializer: D,
13518            ) -> std::result::Result<GeneratedField, D::Error>
13519            where
13520                D: serde::Deserializer<'de>,
13521            {
13522                struct GeneratedVisitor;
13523                impl serde::de::Visitor<'_> for GeneratedVisitor {
13524                    type Value = GeneratedField;
13525                    fn expecting(
13526                        &self,
13527                        formatter: &mut std::fmt::Formatter<'_>,
13528                    ) -> std::fmt::Result {
13529                        write!(formatter, "expected one of: {:?}", & FIELDS)
13530                    }
13531                    #[allow(unused_variables)]
13532                    fn visit_str<E>(
13533                        self,
13534                        value: &str,
13535                    ) -> std::result::Result<GeneratedField, E>
13536                    where
13537                        E: serde::de::Error,
13538                    {
13539                        match value {
13540                            "natGateways" | "nat_gateways" => {
13541                                Ok(GeneratedField::NatGateways)
13542                            }
13543                            "nextPageToken" | "next_page_token" => {
13544                                Ok(GeneratedField::NextPageToken)
13545                            }
13546                            _ => Ok(GeneratedField::__SkipField__),
13547                        }
13548                    }
13549                }
13550                deserializer.deserialize_identifier(GeneratedVisitor)
13551            }
13552        }
13553        struct GeneratedVisitor;
13554        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13555            type Value = ListNatGatewaysResponse;
13556            fn expecting(
13557                &self,
13558                formatter: &mut std::fmt::Formatter<'_>,
13559            ) -> std::fmt::Result {
13560                formatter
13561                    .write_str(
13562                        "struct origincloud.network.v1beta1.ListNatGatewaysResponse",
13563                    )
13564            }
13565            fn visit_map<V>(
13566                self,
13567                mut map_: V,
13568            ) -> std::result::Result<ListNatGatewaysResponse, V::Error>
13569            where
13570                V: serde::de::MapAccess<'de>,
13571            {
13572                let mut nat_gateways__ = None;
13573                let mut next_page_token__ = None;
13574                while let Some(k) = map_.next_key()? {
13575                    match k {
13576                        GeneratedField::NatGateways => {
13577                            if nat_gateways__.is_some() {
13578                                return Err(
13579                                    serde::de::Error::duplicate_field("natGateways"),
13580                                );
13581                            }
13582                            nat_gateways__ = Some(map_.next_value()?);
13583                        }
13584                        GeneratedField::NextPageToken => {
13585                            if next_page_token__.is_some() {
13586                                return Err(
13587                                    serde::de::Error::duplicate_field("nextPageToken"),
13588                                );
13589                            }
13590                            next_page_token__ = Some(map_.next_value()?);
13591                        }
13592                        GeneratedField::__SkipField__ => {
13593                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13594                        }
13595                    }
13596                }
13597                Ok(ListNatGatewaysResponse {
13598                    nat_gateways: nat_gateways__.unwrap_or_default(),
13599                    next_page_token: next_page_token__.unwrap_or_default(),
13600                })
13601            }
13602        }
13603        deserializer
13604            .deserialize_struct(
13605                "origincloud.network.v1beta1.ListNatGatewaysResponse",
13606                FIELDS,
13607                GeneratedVisitor,
13608            )
13609    }
13610}
13611impl serde::Serialize for ListNetworkInterfacesRequest {
13612    #[allow(deprecated)]
13613    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13614    where
13615        S: serde::Serializer,
13616    {
13617        use serde::ser::SerializeStruct;
13618        let mut len = 0;
13619        if !self.parent.is_empty() {
13620            len += 1;
13621        }
13622        if self.page_size != 0 {
13623            len += 1;
13624        }
13625        if !self.page_token.is_empty() {
13626            len += 1;
13627        }
13628        if !self.subnet.is_empty() {
13629            len += 1;
13630        }
13631        let mut struct_ser = serializer
13632            .serialize_struct(
13633                "origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13634                len,
13635            )?;
13636        if !self.parent.is_empty() {
13637            struct_ser.serialize_field("parent", &self.parent)?;
13638        }
13639        if self.page_size != 0 {
13640            struct_ser.serialize_field("pageSize", &self.page_size)?;
13641        }
13642        if !self.page_token.is_empty() {
13643            struct_ser.serialize_field("pageToken", &self.page_token)?;
13644        }
13645        if !self.subnet.is_empty() {
13646            struct_ser.serialize_field("subnet", &self.subnet)?;
13647        }
13648        struct_ser.end()
13649    }
13650}
13651impl<'de> serde::Deserialize<'de> for ListNetworkInterfacesRequest {
13652    #[allow(deprecated)]
13653    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13654    where
13655        D: serde::Deserializer<'de>,
13656    {
13657        const FIELDS: &[&str] = &[
13658            "parent",
13659            "page_size",
13660            "pageSize",
13661            "page_token",
13662            "pageToken",
13663            "subnet",
13664        ];
13665        #[allow(clippy::enum_variant_names)]
13666        enum GeneratedField {
13667            Parent,
13668            PageSize,
13669            PageToken,
13670            Subnet,
13671            __SkipField__,
13672        }
13673        impl<'de> serde::Deserialize<'de> for GeneratedField {
13674            fn deserialize<D>(
13675                deserializer: D,
13676            ) -> std::result::Result<GeneratedField, D::Error>
13677            where
13678                D: serde::Deserializer<'de>,
13679            {
13680                struct GeneratedVisitor;
13681                impl serde::de::Visitor<'_> for GeneratedVisitor {
13682                    type Value = GeneratedField;
13683                    fn expecting(
13684                        &self,
13685                        formatter: &mut std::fmt::Formatter<'_>,
13686                    ) -> std::fmt::Result {
13687                        write!(formatter, "expected one of: {:?}", & FIELDS)
13688                    }
13689                    #[allow(unused_variables)]
13690                    fn visit_str<E>(
13691                        self,
13692                        value: &str,
13693                    ) -> std::result::Result<GeneratedField, E>
13694                    where
13695                        E: serde::de::Error,
13696                    {
13697                        match value {
13698                            "parent" => Ok(GeneratedField::Parent),
13699                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
13700                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
13701                            "subnet" => Ok(GeneratedField::Subnet),
13702                            _ => Ok(GeneratedField::__SkipField__),
13703                        }
13704                    }
13705                }
13706                deserializer.deserialize_identifier(GeneratedVisitor)
13707            }
13708        }
13709        struct GeneratedVisitor;
13710        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13711            type Value = ListNetworkInterfacesRequest;
13712            fn expecting(
13713                &self,
13714                formatter: &mut std::fmt::Formatter<'_>,
13715            ) -> std::fmt::Result {
13716                formatter
13717                    .write_str(
13718                        "struct origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13719                    )
13720            }
13721            fn visit_map<V>(
13722                self,
13723                mut map_: V,
13724            ) -> std::result::Result<ListNetworkInterfacesRequest, V::Error>
13725            where
13726                V: serde::de::MapAccess<'de>,
13727            {
13728                let mut parent__ = None;
13729                let mut page_size__ = None;
13730                let mut page_token__ = None;
13731                let mut subnet__ = None;
13732                while let Some(k) = map_.next_key()? {
13733                    match k {
13734                        GeneratedField::Parent => {
13735                            if parent__.is_some() {
13736                                return Err(serde::de::Error::duplicate_field("parent"));
13737                            }
13738                            parent__ = Some(map_.next_value()?);
13739                        }
13740                        GeneratedField::PageSize => {
13741                            if page_size__.is_some() {
13742                                return Err(serde::de::Error::duplicate_field("pageSize"));
13743                            }
13744                            page_size__ = Some(
13745                                map_
13746                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
13747                                    .0,
13748                            );
13749                        }
13750                        GeneratedField::PageToken => {
13751                            if page_token__.is_some() {
13752                                return Err(serde::de::Error::duplicate_field("pageToken"));
13753                            }
13754                            page_token__ = Some(map_.next_value()?);
13755                        }
13756                        GeneratedField::Subnet => {
13757                            if subnet__.is_some() {
13758                                return Err(serde::de::Error::duplicate_field("subnet"));
13759                            }
13760                            subnet__ = Some(map_.next_value()?);
13761                        }
13762                        GeneratedField::__SkipField__ => {
13763                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13764                        }
13765                    }
13766                }
13767                Ok(ListNetworkInterfacesRequest {
13768                    parent: parent__.unwrap_or_default(),
13769                    page_size: page_size__.unwrap_or_default(),
13770                    page_token: page_token__.unwrap_or_default(),
13771                    subnet: subnet__.unwrap_or_default(),
13772                })
13773            }
13774        }
13775        deserializer
13776            .deserialize_struct(
13777                "origincloud.network.v1beta1.ListNetworkInterfacesRequest",
13778                FIELDS,
13779                GeneratedVisitor,
13780            )
13781    }
13782}
13783impl serde::Serialize for ListNetworkInterfacesResponse {
13784    #[allow(deprecated)]
13785    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13786    where
13787        S: serde::Serializer,
13788    {
13789        use serde::ser::SerializeStruct;
13790        let mut len = 0;
13791        if !self.network_interfaces.is_empty() {
13792            len += 1;
13793        }
13794        if !self.next_page_token.is_empty() {
13795            len += 1;
13796        }
13797        let mut struct_ser = serializer
13798            .serialize_struct(
13799                "origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13800                len,
13801            )?;
13802        if !self.network_interfaces.is_empty() {
13803            struct_ser.serialize_field("networkInterfaces", &self.network_interfaces)?;
13804        }
13805        if !self.next_page_token.is_empty() {
13806            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
13807        }
13808        struct_ser.end()
13809    }
13810}
13811impl<'de> serde::Deserialize<'de> for ListNetworkInterfacesResponse {
13812    #[allow(deprecated)]
13813    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13814    where
13815        D: serde::Deserializer<'de>,
13816    {
13817        const FIELDS: &[&str] = &[
13818            "network_interfaces",
13819            "networkInterfaces",
13820            "next_page_token",
13821            "nextPageToken",
13822        ];
13823        #[allow(clippy::enum_variant_names)]
13824        enum GeneratedField {
13825            NetworkInterfaces,
13826            NextPageToken,
13827            __SkipField__,
13828        }
13829        impl<'de> serde::Deserialize<'de> for GeneratedField {
13830            fn deserialize<D>(
13831                deserializer: D,
13832            ) -> std::result::Result<GeneratedField, D::Error>
13833            where
13834                D: serde::Deserializer<'de>,
13835            {
13836                struct GeneratedVisitor;
13837                impl serde::de::Visitor<'_> for GeneratedVisitor {
13838                    type Value = GeneratedField;
13839                    fn expecting(
13840                        &self,
13841                        formatter: &mut std::fmt::Formatter<'_>,
13842                    ) -> std::fmt::Result {
13843                        write!(formatter, "expected one of: {:?}", & FIELDS)
13844                    }
13845                    #[allow(unused_variables)]
13846                    fn visit_str<E>(
13847                        self,
13848                        value: &str,
13849                    ) -> std::result::Result<GeneratedField, E>
13850                    where
13851                        E: serde::de::Error,
13852                    {
13853                        match value {
13854                            "networkInterfaces" | "network_interfaces" => {
13855                                Ok(GeneratedField::NetworkInterfaces)
13856                            }
13857                            "nextPageToken" | "next_page_token" => {
13858                                Ok(GeneratedField::NextPageToken)
13859                            }
13860                            _ => Ok(GeneratedField::__SkipField__),
13861                        }
13862                    }
13863                }
13864                deserializer.deserialize_identifier(GeneratedVisitor)
13865            }
13866        }
13867        struct GeneratedVisitor;
13868        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
13869            type Value = ListNetworkInterfacesResponse;
13870            fn expecting(
13871                &self,
13872                formatter: &mut std::fmt::Formatter<'_>,
13873            ) -> std::fmt::Result {
13874                formatter
13875                    .write_str(
13876                        "struct origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13877                    )
13878            }
13879            fn visit_map<V>(
13880                self,
13881                mut map_: V,
13882            ) -> std::result::Result<ListNetworkInterfacesResponse, V::Error>
13883            where
13884                V: serde::de::MapAccess<'de>,
13885            {
13886                let mut network_interfaces__ = None;
13887                let mut next_page_token__ = None;
13888                while let Some(k) = map_.next_key()? {
13889                    match k {
13890                        GeneratedField::NetworkInterfaces => {
13891                            if network_interfaces__.is_some() {
13892                                return Err(
13893                                    serde::de::Error::duplicate_field("networkInterfaces"),
13894                                );
13895                            }
13896                            network_interfaces__ = Some(map_.next_value()?);
13897                        }
13898                        GeneratedField::NextPageToken => {
13899                            if next_page_token__.is_some() {
13900                                return Err(
13901                                    serde::de::Error::duplicate_field("nextPageToken"),
13902                                );
13903                            }
13904                            next_page_token__ = Some(map_.next_value()?);
13905                        }
13906                        GeneratedField::__SkipField__ => {
13907                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
13908                        }
13909                    }
13910                }
13911                Ok(ListNetworkInterfacesResponse {
13912                    network_interfaces: network_interfaces__.unwrap_or_default(),
13913                    next_page_token: next_page_token__.unwrap_or_default(),
13914                })
13915            }
13916        }
13917        deserializer
13918            .deserialize_struct(
13919                "origincloud.network.v1beta1.ListNetworkInterfacesResponse",
13920                FIELDS,
13921                GeneratedVisitor,
13922            )
13923    }
13924}
13925impl serde::Serialize for ListRouteTableAssociationsRequest {
13926    #[allow(deprecated)]
13927    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
13928    where
13929        S: serde::Serializer,
13930    {
13931        use serde::ser::SerializeStruct;
13932        let mut len = 0;
13933        if !self.parent.is_empty() {
13934            len += 1;
13935        }
13936        if self.page_size != 0 {
13937            len += 1;
13938        }
13939        if !self.page_token.is_empty() {
13940            len += 1;
13941        }
13942        let mut struct_ser = serializer
13943            .serialize_struct(
13944                "origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
13945                len,
13946            )?;
13947        if !self.parent.is_empty() {
13948            struct_ser.serialize_field("parent", &self.parent)?;
13949        }
13950        if self.page_size != 0 {
13951            struct_ser.serialize_field("pageSize", &self.page_size)?;
13952        }
13953        if !self.page_token.is_empty() {
13954            struct_ser.serialize_field("pageToken", &self.page_token)?;
13955        }
13956        struct_ser.end()
13957    }
13958}
13959impl<'de> serde::Deserialize<'de> for ListRouteTableAssociationsRequest {
13960    #[allow(deprecated)]
13961    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
13962    where
13963        D: serde::Deserializer<'de>,
13964    {
13965        const FIELDS: &[&str] = &[
13966            "parent",
13967            "page_size",
13968            "pageSize",
13969            "page_token",
13970            "pageToken",
13971        ];
13972        #[allow(clippy::enum_variant_names)]
13973        enum GeneratedField {
13974            Parent,
13975            PageSize,
13976            PageToken,
13977            __SkipField__,
13978        }
13979        impl<'de> serde::Deserialize<'de> for GeneratedField {
13980            fn deserialize<D>(
13981                deserializer: D,
13982            ) -> std::result::Result<GeneratedField, D::Error>
13983            where
13984                D: serde::Deserializer<'de>,
13985            {
13986                struct GeneratedVisitor;
13987                impl serde::de::Visitor<'_> for GeneratedVisitor {
13988                    type Value = GeneratedField;
13989                    fn expecting(
13990                        &self,
13991                        formatter: &mut std::fmt::Formatter<'_>,
13992                    ) -> std::fmt::Result {
13993                        write!(formatter, "expected one of: {:?}", & FIELDS)
13994                    }
13995                    #[allow(unused_variables)]
13996                    fn visit_str<E>(
13997                        self,
13998                        value: &str,
13999                    ) -> std::result::Result<GeneratedField, E>
14000                    where
14001                        E: serde::de::Error,
14002                    {
14003                        match value {
14004                            "parent" => Ok(GeneratedField::Parent),
14005                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14006                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14007                            _ => Ok(GeneratedField::__SkipField__),
14008                        }
14009                    }
14010                }
14011                deserializer.deserialize_identifier(GeneratedVisitor)
14012            }
14013        }
14014        struct GeneratedVisitor;
14015        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14016            type Value = ListRouteTableAssociationsRequest;
14017            fn expecting(
14018                &self,
14019                formatter: &mut std::fmt::Formatter<'_>,
14020            ) -> std::fmt::Result {
14021                formatter
14022                    .write_str(
14023                        "struct origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
14024                    )
14025            }
14026            fn visit_map<V>(
14027                self,
14028                mut map_: V,
14029            ) -> std::result::Result<ListRouteTableAssociationsRequest, V::Error>
14030            where
14031                V: serde::de::MapAccess<'de>,
14032            {
14033                let mut parent__ = None;
14034                let mut page_size__ = None;
14035                let mut page_token__ = None;
14036                while let Some(k) = map_.next_key()? {
14037                    match k {
14038                        GeneratedField::Parent => {
14039                            if parent__.is_some() {
14040                                return Err(serde::de::Error::duplicate_field("parent"));
14041                            }
14042                            parent__ = Some(map_.next_value()?);
14043                        }
14044                        GeneratedField::PageSize => {
14045                            if page_size__.is_some() {
14046                                return Err(serde::de::Error::duplicate_field("pageSize"));
14047                            }
14048                            page_size__ = Some(
14049                                map_
14050                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14051                                    .0,
14052                            );
14053                        }
14054                        GeneratedField::PageToken => {
14055                            if page_token__.is_some() {
14056                                return Err(serde::de::Error::duplicate_field("pageToken"));
14057                            }
14058                            page_token__ = Some(map_.next_value()?);
14059                        }
14060                        GeneratedField::__SkipField__ => {
14061                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14062                        }
14063                    }
14064                }
14065                Ok(ListRouteTableAssociationsRequest {
14066                    parent: parent__.unwrap_or_default(),
14067                    page_size: page_size__.unwrap_or_default(),
14068                    page_token: page_token__.unwrap_or_default(),
14069                })
14070            }
14071        }
14072        deserializer
14073            .deserialize_struct(
14074                "origincloud.network.v1beta1.ListRouteTableAssociationsRequest",
14075                FIELDS,
14076                GeneratedVisitor,
14077            )
14078    }
14079}
14080impl serde::Serialize for ListRouteTableAssociationsResponse {
14081    #[allow(deprecated)]
14082    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14083    where
14084        S: serde::Serializer,
14085    {
14086        use serde::ser::SerializeStruct;
14087        let mut len = 0;
14088        if !self.route_table_associations.is_empty() {
14089            len += 1;
14090        }
14091        if !self.next_page_token.is_empty() {
14092            len += 1;
14093        }
14094        let mut struct_ser = serializer
14095            .serialize_struct(
14096                "origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14097                len,
14098            )?;
14099        if !self.route_table_associations.is_empty() {
14100            struct_ser
14101                .serialize_field(
14102                    "routeTableAssociations",
14103                    &self.route_table_associations,
14104                )?;
14105        }
14106        if !self.next_page_token.is_empty() {
14107            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14108        }
14109        struct_ser.end()
14110    }
14111}
14112impl<'de> serde::Deserialize<'de> for ListRouteTableAssociationsResponse {
14113    #[allow(deprecated)]
14114    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14115    where
14116        D: serde::Deserializer<'de>,
14117    {
14118        const FIELDS: &[&str] = &[
14119            "route_table_associations",
14120            "routeTableAssociations",
14121            "next_page_token",
14122            "nextPageToken",
14123        ];
14124        #[allow(clippy::enum_variant_names)]
14125        enum GeneratedField {
14126            RouteTableAssociations,
14127            NextPageToken,
14128            __SkipField__,
14129        }
14130        impl<'de> serde::Deserialize<'de> for GeneratedField {
14131            fn deserialize<D>(
14132                deserializer: D,
14133            ) -> std::result::Result<GeneratedField, D::Error>
14134            where
14135                D: serde::Deserializer<'de>,
14136            {
14137                struct GeneratedVisitor;
14138                impl serde::de::Visitor<'_> for GeneratedVisitor {
14139                    type Value = GeneratedField;
14140                    fn expecting(
14141                        &self,
14142                        formatter: &mut std::fmt::Formatter<'_>,
14143                    ) -> std::fmt::Result {
14144                        write!(formatter, "expected one of: {:?}", & FIELDS)
14145                    }
14146                    #[allow(unused_variables)]
14147                    fn visit_str<E>(
14148                        self,
14149                        value: &str,
14150                    ) -> std::result::Result<GeneratedField, E>
14151                    where
14152                        E: serde::de::Error,
14153                    {
14154                        match value {
14155                            "routeTableAssociations" | "route_table_associations" => {
14156                                Ok(GeneratedField::RouteTableAssociations)
14157                            }
14158                            "nextPageToken" | "next_page_token" => {
14159                                Ok(GeneratedField::NextPageToken)
14160                            }
14161                            _ => Ok(GeneratedField::__SkipField__),
14162                        }
14163                    }
14164                }
14165                deserializer.deserialize_identifier(GeneratedVisitor)
14166            }
14167        }
14168        struct GeneratedVisitor;
14169        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14170            type Value = ListRouteTableAssociationsResponse;
14171            fn expecting(
14172                &self,
14173                formatter: &mut std::fmt::Formatter<'_>,
14174            ) -> std::fmt::Result {
14175                formatter
14176                    .write_str(
14177                        "struct origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14178                    )
14179            }
14180            fn visit_map<V>(
14181                self,
14182                mut map_: V,
14183            ) -> std::result::Result<ListRouteTableAssociationsResponse, V::Error>
14184            where
14185                V: serde::de::MapAccess<'de>,
14186            {
14187                let mut route_table_associations__ = None;
14188                let mut next_page_token__ = None;
14189                while let Some(k) = map_.next_key()? {
14190                    match k {
14191                        GeneratedField::RouteTableAssociations => {
14192                            if route_table_associations__.is_some() {
14193                                return Err(
14194                                    serde::de::Error::duplicate_field("routeTableAssociations"),
14195                                );
14196                            }
14197                            route_table_associations__ = Some(map_.next_value()?);
14198                        }
14199                        GeneratedField::NextPageToken => {
14200                            if next_page_token__.is_some() {
14201                                return Err(
14202                                    serde::de::Error::duplicate_field("nextPageToken"),
14203                                );
14204                            }
14205                            next_page_token__ = Some(map_.next_value()?);
14206                        }
14207                        GeneratedField::__SkipField__ => {
14208                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14209                        }
14210                    }
14211                }
14212                Ok(ListRouteTableAssociationsResponse {
14213                    route_table_associations: route_table_associations__
14214                        .unwrap_or_default(),
14215                    next_page_token: next_page_token__.unwrap_or_default(),
14216                })
14217            }
14218        }
14219        deserializer
14220            .deserialize_struct(
14221                "origincloud.network.v1beta1.ListRouteTableAssociationsResponse",
14222                FIELDS,
14223                GeneratedVisitor,
14224            )
14225    }
14226}
14227impl serde::Serialize for ListRouteTablesRequest {
14228    #[allow(deprecated)]
14229    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14230    where
14231        S: serde::Serializer,
14232    {
14233        use serde::ser::SerializeStruct;
14234        let mut len = 0;
14235        if !self.parent.is_empty() {
14236            len += 1;
14237        }
14238        if self.page_size != 0 {
14239            len += 1;
14240        }
14241        if !self.page_token.is_empty() {
14242            len += 1;
14243        }
14244        if !self.vpc.is_empty() {
14245            len += 1;
14246        }
14247        let mut struct_ser = serializer
14248            .serialize_struct(
14249                "origincloud.network.v1beta1.ListRouteTablesRequest",
14250                len,
14251            )?;
14252        if !self.parent.is_empty() {
14253            struct_ser.serialize_field("parent", &self.parent)?;
14254        }
14255        if self.page_size != 0 {
14256            struct_ser.serialize_field("pageSize", &self.page_size)?;
14257        }
14258        if !self.page_token.is_empty() {
14259            struct_ser.serialize_field("pageToken", &self.page_token)?;
14260        }
14261        if !self.vpc.is_empty() {
14262            struct_ser.serialize_field("vpc", &self.vpc)?;
14263        }
14264        struct_ser.end()
14265    }
14266}
14267impl<'de> serde::Deserialize<'de> for ListRouteTablesRequest {
14268    #[allow(deprecated)]
14269    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14270    where
14271        D: serde::Deserializer<'de>,
14272    {
14273        const FIELDS: &[&str] = &[
14274            "parent",
14275            "page_size",
14276            "pageSize",
14277            "page_token",
14278            "pageToken",
14279            "vpc",
14280        ];
14281        #[allow(clippy::enum_variant_names)]
14282        enum GeneratedField {
14283            Parent,
14284            PageSize,
14285            PageToken,
14286            Vpc,
14287            __SkipField__,
14288        }
14289        impl<'de> serde::Deserialize<'de> for GeneratedField {
14290            fn deserialize<D>(
14291                deserializer: D,
14292            ) -> std::result::Result<GeneratedField, D::Error>
14293            where
14294                D: serde::Deserializer<'de>,
14295            {
14296                struct GeneratedVisitor;
14297                impl serde::de::Visitor<'_> for GeneratedVisitor {
14298                    type Value = GeneratedField;
14299                    fn expecting(
14300                        &self,
14301                        formatter: &mut std::fmt::Formatter<'_>,
14302                    ) -> std::fmt::Result {
14303                        write!(formatter, "expected one of: {:?}", & FIELDS)
14304                    }
14305                    #[allow(unused_variables)]
14306                    fn visit_str<E>(
14307                        self,
14308                        value: &str,
14309                    ) -> std::result::Result<GeneratedField, E>
14310                    where
14311                        E: serde::de::Error,
14312                    {
14313                        match value {
14314                            "parent" => Ok(GeneratedField::Parent),
14315                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14316                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14317                            "vpc" => Ok(GeneratedField::Vpc),
14318                            _ => Ok(GeneratedField::__SkipField__),
14319                        }
14320                    }
14321                }
14322                deserializer.deserialize_identifier(GeneratedVisitor)
14323            }
14324        }
14325        struct GeneratedVisitor;
14326        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14327            type Value = ListRouteTablesRequest;
14328            fn expecting(
14329                &self,
14330                formatter: &mut std::fmt::Formatter<'_>,
14331            ) -> std::fmt::Result {
14332                formatter
14333                    .write_str(
14334                        "struct origincloud.network.v1beta1.ListRouteTablesRequest",
14335                    )
14336            }
14337            fn visit_map<V>(
14338                self,
14339                mut map_: V,
14340            ) -> std::result::Result<ListRouteTablesRequest, V::Error>
14341            where
14342                V: serde::de::MapAccess<'de>,
14343            {
14344                let mut parent__ = None;
14345                let mut page_size__ = None;
14346                let mut page_token__ = None;
14347                let mut vpc__ = None;
14348                while let Some(k) = map_.next_key()? {
14349                    match k {
14350                        GeneratedField::Parent => {
14351                            if parent__.is_some() {
14352                                return Err(serde::de::Error::duplicate_field("parent"));
14353                            }
14354                            parent__ = Some(map_.next_value()?);
14355                        }
14356                        GeneratedField::PageSize => {
14357                            if page_size__.is_some() {
14358                                return Err(serde::de::Error::duplicate_field("pageSize"));
14359                            }
14360                            page_size__ = Some(
14361                                map_
14362                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14363                                    .0,
14364                            );
14365                        }
14366                        GeneratedField::PageToken => {
14367                            if page_token__.is_some() {
14368                                return Err(serde::de::Error::duplicate_field("pageToken"));
14369                            }
14370                            page_token__ = Some(map_.next_value()?);
14371                        }
14372                        GeneratedField::Vpc => {
14373                            if vpc__.is_some() {
14374                                return Err(serde::de::Error::duplicate_field("vpc"));
14375                            }
14376                            vpc__ = Some(map_.next_value()?);
14377                        }
14378                        GeneratedField::__SkipField__ => {
14379                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14380                        }
14381                    }
14382                }
14383                Ok(ListRouteTablesRequest {
14384                    parent: parent__.unwrap_or_default(),
14385                    page_size: page_size__.unwrap_or_default(),
14386                    page_token: page_token__.unwrap_or_default(),
14387                    vpc: vpc__.unwrap_or_default(),
14388                })
14389            }
14390        }
14391        deserializer
14392            .deserialize_struct(
14393                "origincloud.network.v1beta1.ListRouteTablesRequest",
14394                FIELDS,
14395                GeneratedVisitor,
14396            )
14397    }
14398}
14399impl serde::Serialize for ListRouteTablesResponse {
14400    #[allow(deprecated)]
14401    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14402    where
14403        S: serde::Serializer,
14404    {
14405        use serde::ser::SerializeStruct;
14406        let mut len = 0;
14407        if !self.route_tables.is_empty() {
14408            len += 1;
14409        }
14410        if !self.next_page_token.is_empty() {
14411            len += 1;
14412        }
14413        let mut struct_ser = serializer
14414            .serialize_struct(
14415                "origincloud.network.v1beta1.ListRouteTablesResponse",
14416                len,
14417            )?;
14418        if !self.route_tables.is_empty() {
14419            struct_ser.serialize_field("routeTables", &self.route_tables)?;
14420        }
14421        if !self.next_page_token.is_empty() {
14422            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14423        }
14424        struct_ser.end()
14425    }
14426}
14427impl<'de> serde::Deserialize<'de> for ListRouteTablesResponse {
14428    #[allow(deprecated)]
14429    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14430    where
14431        D: serde::Deserializer<'de>,
14432    {
14433        const FIELDS: &[&str] = &[
14434            "route_tables",
14435            "routeTables",
14436            "next_page_token",
14437            "nextPageToken",
14438        ];
14439        #[allow(clippy::enum_variant_names)]
14440        enum GeneratedField {
14441            RouteTables,
14442            NextPageToken,
14443            __SkipField__,
14444        }
14445        impl<'de> serde::Deserialize<'de> for GeneratedField {
14446            fn deserialize<D>(
14447                deserializer: D,
14448            ) -> std::result::Result<GeneratedField, D::Error>
14449            where
14450                D: serde::Deserializer<'de>,
14451            {
14452                struct GeneratedVisitor;
14453                impl serde::de::Visitor<'_> for GeneratedVisitor {
14454                    type Value = GeneratedField;
14455                    fn expecting(
14456                        &self,
14457                        formatter: &mut std::fmt::Formatter<'_>,
14458                    ) -> std::fmt::Result {
14459                        write!(formatter, "expected one of: {:?}", & FIELDS)
14460                    }
14461                    #[allow(unused_variables)]
14462                    fn visit_str<E>(
14463                        self,
14464                        value: &str,
14465                    ) -> std::result::Result<GeneratedField, E>
14466                    where
14467                        E: serde::de::Error,
14468                    {
14469                        match value {
14470                            "routeTables" | "route_tables" => {
14471                                Ok(GeneratedField::RouteTables)
14472                            }
14473                            "nextPageToken" | "next_page_token" => {
14474                                Ok(GeneratedField::NextPageToken)
14475                            }
14476                            _ => Ok(GeneratedField::__SkipField__),
14477                        }
14478                    }
14479                }
14480                deserializer.deserialize_identifier(GeneratedVisitor)
14481            }
14482        }
14483        struct GeneratedVisitor;
14484        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14485            type Value = ListRouteTablesResponse;
14486            fn expecting(
14487                &self,
14488                formatter: &mut std::fmt::Formatter<'_>,
14489            ) -> std::fmt::Result {
14490                formatter
14491                    .write_str(
14492                        "struct origincloud.network.v1beta1.ListRouteTablesResponse",
14493                    )
14494            }
14495            fn visit_map<V>(
14496                self,
14497                mut map_: V,
14498            ) -> std::result::Result<ListRouteTablesResponse, V::Error>
14499            where
14500                V: serde::de::MapAccess<'de>,
14501            {
14502                let mut route_tables__ = None;
14503                let mut next_page_token__ = None;
14504                while let Some(k) = map_.next_key()? {
14505                    match k {
14506                        GeneratedField::RouteTables => {
14507                            if route_tables__.is_some() {
14508                                return Err(
14509                                    serde::de::Error::duplicate_field("routeTables"),
14510                                );
14511                            }
14512                            route_tables__ = Some(map_.next_value()?);
14513                        }
14514                        GeneratedField::NextPageToken => {
14515                            if next_page_token__.is_some() {
14516                                return Err(
14517                                    serde::de::Error::duplicate_field("nextPageToken"),
14518                                );
14519                            }
14520                            next_page_token__ = Some(map_.next_value()?);
14521                        }
14522                        GeneratedField::__SkipField__ => {
14523                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14524                        }
14525                    }
14526                }
14527                Ok(ListRouteTablesResponse {
14528                    route_tables: route_tables__.unwrap_or_default(),
14529                    next_page_token: next_page_token__.unwrap_or_default(),
14530                })
14531            }
14532        }
14533        deserializer
14534            .deserialize_struct(
14535                "origincloud.network.v1beta1.ListRouteTablesResponse",
14536                FIELDS,
14537                GeneratedVisitor,
14538            )
14539    }
14540}
14541impl serde::Serialize for ListRoutesRequest {
14542    #[allow(deprecated)]
14543    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14544    where
14545        S: serde::Serializer,
14546    {
14547        use serde::ser::SerializeStruct;
14548        let mut len = 0;
14549        if !self.parent.is_empty() {
14550            len += 1;
14551        }
14552        if self.page_size != 0 {
14553            len += 1;
14554        }
14555        if !self.page_token.is_empty() {
14556            len += 1;
14557        }
14558        let mut struct_ser = serializer
14559            .serialize_struct("origincloud.network.v1beta1.ListRoutesRequest", len)?;
14560        if !self.parent.is_empty() {
14561            struct_ser.serialize_field("parent", &self.parent)?;
14562        }
14563        if self.page_size != 0 {
14564            struct_ser.serialize_field("pageSize", &self.page_size)?;
14565        }
14566        if !self.page_token.is_empty() {
14567            struct_ser.serialize_field("pageToken", &self.page_token)?;
14568        }
14569        struct_ser.end()
14570    }
14571}
14572impl<'de> serde::Deserialize<'de> for ListRoutesRequest {
14573    #[allow(deprecated)]
14574    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14575    where
14576        D: serde::Deserializer<'de>,
14577    {
14578        const FIELDS: &[&str] = &[
14579            "parent",
14580            "page_size",
14581            "pageSize",
14582            "page_token",
14583            "pageToken",
14584        ];
14585        #[allow(clippy::enum_variant_names)]
14586        enum GeneratedField {
14587            Parent,
14588            PageSize,
14589            PageToken,
14590            __SkipField__,
14591        }
14592        impl<'de> serde::Deserialize<'de> for GeneratedField {
14593            fn deserialize<D>(
14594                deserializer: D,
14595            ) -> std::result::Result<GeneratedField, D::Error>
14596            where
14597                D: serde::Deserializer<'de>,
14598            {
14599                struct GeneratedVisitor;
14600                impl serde::de::Visitor<'_> for GeneratedVisitor {
14601                    type Value = GeneratedField;
14602                    fn expecting(
14603                        &self,
14604                        formatter: &mut std::fmt::Formatter<'_>,
14605                    ) -> std::fmt::Result {
14606                        write!(formatter, "expected one of: {:?}", & FIELDS)
14607                    }
14608                    #[allow(unused_variables)]
14609                    fn visit_str<E>(
14610                        self,
14611                        value: &str,
14612                    ) -> std::result::Result<GeneratedField, E>
14613                    where
14614                        E: serde::de::Error,
14615                    {
14616                        match value {
14617                            "parent" => Ok(GeneratedField::Parent),
14618                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14619                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14620                            _ => Ok(GeneratedField::__SkipField__),
14621                        }
14622                    }
14623                }
14624                deserializer.deserialize_identifier(GeneratedVisitor)
14625            }
14626        }
14627        struct GeneratedVisitor;
14628        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14629            type Value = ListRoutesRequest;
14630            fn expecting(
14631                &self,
14632                formatter: &mut std::fmt::Formatter<'_>,
14633            ) -> std::fmt::Result {
14634                formatter
14635                    .write_str("struct origincloud.network.v1beta1.ListRoutesRequest")
14636            }
14637            fn visit_map<V>(
14638                self,
14639                mut map_: V,
14640            ) -> std::result::Result<ListRoutesRequest, V::Error>
14641            where
14642                V: serde::de::MapAccess<'de>,
14643            {
14644                let mut parent__ = None;
14645                let mut page_size__ = None;
14646                let mut page_token__ = None;
14647                while let Some(k) = map_.next_key()? {
14648                    match k {
14649                        GeneratedField::Parent => {
14650                            if parent__.is_some() {
14651                                return Err(serde::de::Error::duplicate_field("parent"));
14652                            }
14653                            parent__ = Some(map_.next_value()?);
14654                        }
14655                        GeneratedField::PageSize => {
14656                            if page_size__.is_some() {
14657                                return Err(serde::de::Error::duplicate_field("pageSize"));
14658                            }
14659                            page_size__ = Some(
14660                                map_
14661                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14662                                    .0,
14663                            );
14664                        }
14665                        GeneratedField::PageToken => {
14666                            if page_token__.is_some() {
14667                                return Err(serde::de::Error::duplicate_field("pageToken"));
14668                            }
14669                            page_token__ = Some(map_.next_value()?);
14670                        }
14671                        GeneratedField::__SkipField__ => {
14672                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14673                        }
14674                    }
14675                }
14676                Ok(ListRoutesRequest {
14677                    parent: parent__.unwrap_or_default(),
14678                    page_size: page_size__.unwrap_or_default(),
14679                    page_token: page_token__.unwrap_or_default(),
14680                })
14681            }
14682        }
14683        deserializer
14684            .deserialize_struct(
14685                "origincloud.network.v1beta1.ListRoutesRequest",
14686                FIELDS,
14687                GeneratedVisitor,
14688            )
14689    }
14690}
14691impl serde::Serialize for ListRoutesResponse {
14692    #[allow(deprecated)]
14693    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14694    where
14695        S: serde::Serializer,
14696    {
14697        use serde::ser::SerializeStruct;
14698        let mut len = 0;
14699        if !self.routes.is_empty() {
14700            len += 1;
14701        }
14702        if !self.next_page_token.is_empty() {
14703            len += 1;
14704        }
14705        let mut struct_ser = serializer
14706            .serialize_struct("origincloud.network.v1beta1.ListRoutesResponse", len)?;
14707        if !self.routes.is_empty() {
14708            struct_ser.serialize_field("routes", &self.routes)?;
14709        }
14710        if !self.next_page_token.is_empty() {
14711            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
14712        }
14713        struct_ser.end()
14714    }
14715}
14716impl<'de> serde::Deserialize<'de> for ListRoutesResponse {
14717    #[allow(deprecated)]
14718    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14719    where
14720        D: serde::Deserializer<'de>,
14721    {
14722        const FIELDS: &[&str] = &["routes", "next_page_token", "nextPageToken"];
14723        #[allow(clippy::enum_variant_names)]
14724        enum GeneratedField {
14725            Routes,
14726            NextPageToken,
14727            __SkipField__,
14728        }
14729        impl<'de> serde::Deserialize<'de> for GeneratedField {
14730            fn deserialize<D>(
14731                deserializer: D,
14732            ) -> std::result::Result<GeneratedField, D::Error>
14733            where
14734                D: serde::Deserializer<'de>,
14735            {
14736                struct GeneratedVisitor;
14737                impl serde::de::Visitor<'_> for GeneratedVisitor {
14738                    type Value = GeneratedField;
14739                    fn expecting(
14740                        &self,
14741                        formatter: &mut std::fmt::Formatter<'_>,
14742                    ) -> std::fmt::Result {
14743                        write!(formatter, "expected one of: {:?}", & FIELDS)
14744                    }
14745                    #[allow(unused_variables)]
14746                    fn visit_str<E>(
14747                        self,
14748                        value: &str,
14749                    ) -> std::result::Result<GeneratedField, E>
14750                    where
14751                        E: serde::de::Error,
14752                    {
14753                        match value {
14754                            "routes" => Ok(GeneratedField::Routes),
14755                            "nextPageToken" | "next_page_token" => {
14756                                Ok(GeneratedField::NextPageToken)
14757                            }
14758                            _ => Ok(GeneratedField::__SkipField__),
14759                        }
14760                    }
14761                }
14762                deserializer.deserialize_identifier(GeneratedVisitor)
14763            }
14764        }
14765        struct GeneratedVisitor;
14766        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14767            type Value = ListRoutesResponse;
14768            fn expecting(
14769                &self,
14770                formatter: &mut std::fmt::Formatter<'_>,
14771            ) -> std::fmt::Result {
14772                formatter
14773                    .write_str("struct origincloud.network.v1beta1.ListRoutesResponse")
14774            }
14775            fn visit_map<V>(
14776                self,
14777                mut map_: V,
14778            ) -> std::result::Result<ListRoutesResponse, V::Error>
14779            where
14780                V: serde::de::MapAccess<'de>,
14781            {
14782                let mut routes__ = None;
14783                let mut next_page_token__ = None;
14784                while let Some(k) = map_.next_key()? {
14785                    match k {
14786                        GeneratedField::Routes => {
14787                            if routes__.is_some() {
14788                                return Err(serde::de::Error::duplicate_field("routes"));
14789                            }
14790                            routes__ = Some(map_.next_value()?);
14791                        }
14792                        GeneratedField::NextPageToken => {
14793                            if next_page_token__.is_some() {
14794                                return Err(
14795                                    serde::de::Error::duplicate_field("nextPageToken"),
14796                                );
14797                            }
14798                            next_page_token__ = Some(map_.next_value()?);
14799                        }
14800                        GeneratedField::__SkipField__ => {
14801                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14802                        }
14803                    }
14804                }
14805                Ok(ListRoutesResponse {
14806                    routes: routes__.unwrap_or_default(),
14807                    next_page_token: next_page_token__.unwrap_or_default(),
14808                })
14809            }
14810        }
14811        deserializer
14812            .deserialize_struct(
14813                "origincloud.network.v1beta1.ListRoutesResponse",
14814                FIELDS,
14815                GeneratedVisitor,
14816            )
14817    }
14818}
14819impl serde::Serialize for ListSecurityGroupAssociationsRequest {
14820    #[allow(deprecated)]
14821    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14822    where
14823        S: serde::Serializer,
14824    {
14825        use serde::ser::SerializeStruct;
14826        let mut len = 0;
14827        if !self.parent.is_empty() {
14828            len += 1;
14829        }
14830        if self.page_size != 0 {
14831            len += 1;
14832        }
14833        if !self.page_token.is_empty() {
14834            len += 1;
14835        }
14836        let mut struct_ser = serializer
14837            .serialize_struct(
14838                "origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14839                len,
14840            )?;
14841        if !self.parent.is_empty() {
14842            struct_ser.serialize_field("parent", &self.parent)?;
14843        }
14844        if self.page_size != 0 {
14845            struct_ser.serialize_field("pageSize", &self.page_size)?;
14846        }
14847        if !self.page_token.is_empty() {
14848            struct_ser.serialize_field("pageToken", &self.page_token)?;
14849        }
14850        struct_ser.end()
14851    }
14852}
14853impl<'de> serde::Deserialize<'de> for ListSecurityGroupAssociationsRequest {
14854    #[allow(deprecated)]
14855    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
14856    where
14857        D: serde::Deserializer<'de>,
14858    {
14859        const FIELDS: &[&str] = &[
14860            "parent",
14861            "page_size",
14862            "pageSize",
14863            "page_token",
14864            "pageToken",
14865        ];
14866        #[allow(clippy::enum_variant_names)]
14867        enum GeneratedField {
14868            Parent,
14869            PageSize,
14870            PageToken,
14871            __SkipField__,
14872        }
14873        impl<'de> serde::Deserialize<'de> for GeneratedField {
14874            fn deserialize<D>(
14875                deserializer: D,
14876            ) -> std::result::Result<GeneratedField, D::Error>
14877            where
14878                D: serde::Deserializer<'de>,
14879            {
14880                struct GeneratedVisitor;
14881                impl serde::de::Visitor<'_> for GeneratedVisitor {
14882                    type Value = GeneratedField;
14883                    fn expecting(
14884                        &self,
14885                        formatter: &mut std::fmt::Formatter<'_>,
14886                    ) -> std::fmt::Result {
14887                        write!(formatter, "expected one of: {:?}", & FIELDS)
14888                    }
14889                    #[allow(unused_variables)]
14890                    fn visit_str<E>(
14891                        self,
14892                        value: &str,
14893                    ) -> std::result::Result<GeneratedField, E>
14894                    where
14895                        E: serde::de::Error,
14896                    {
14897                        match value {
14898                            "parent" => Ok(GeneratedField::Parent),
14899                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
14900                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
14901                            _ => Ok(GeneratedField::__SkipField__),
14902                        }
14903                    }
14904                }
14905                deserializer.deserialize_identifier(GeneratedVisitor)
14906            }
14907        }
14908        struct GeneratedVisitor;
14909        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
14910            type Value = ListSecurityGroupAssociationsRequest;
14911            fn expecting(
14912                &self,
14913                formatter: &mut std::fmt::Formatter<'_>,
14914            ) -> std::fmt::Result {
14915                formatter
14916                    .write_str(
14917                        "struct origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14918                    )
14919            }
14920            fn visit_map<V>(
14921                self,
14922                mut map_: V,
14923            ) -> std::result::Result<ListSecurityGroupAssociationsRequest, V::Error>
14924            where
14925                V: serde::de::MapAccess<'de>,
14926            {
14927                let mut parent__ = None;
14928                let mut page_size__ = None;
14929                let mut page_token__ = None;
14930                while let Some(k) = map_.next_key()? {
14931                    match k {
14932                        GeneratedField::Parent => {
14933                            if parent__.is_some() {
14934                                return Err(serde::de::Error::duplicate_field("parent"));
14935                            }
14936                            parent__ = Some(map_.next_value()?);
14937                        }
14938                        GeneratedField::PageSize => {
14939                            if page_size__.is_some() {
14940                                return Err(serde::de::Error::duplicate_field("pageSize"));
14941                            }
14942                            page_size__ = Some(
14943                                map_
14944                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
14945                                    .0,
14946                            );
14947                        }
14948                        GeneratedField::PageToken => {
14949                            if page_token__.is_some() {
14950                                return Err(serde::de::Error::duplicate_field("pageToken"));
14951                            }
14952                            page_token__ = Some(map_.next_value()?);
14953                        }
14954                        GeneratedField::__SkipField__ => {
14955                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
14956                        }
14957                    }
14958                }
14959                Ok(ListSecurityGroupAssociationsRequest {
14960                    parent: parent__.unwrap_or_default(),
14961                    page_size: page_size__.unwrap_or_default(),
14962                    page_token: page_token__.unwrap_or_default(),
14963                })
14964            }
14965        }
14966        deserializer
14967            .deserialize_struct(
14968                "origincloud.network.v1beta1.ListSecurityGroupAssociationsRequest",
14969                FIELDS,
14970                GeneratedVisitor,
14971            )
14972    }
14973}
14974impl serde::Serialize for ListSecurityGroupAssociationsResponse {
14975    #[allow(deprecated)]
14976    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
14977    where
14978        S: serde::Serializer,
14979    {
14980        use serde::ser::SerializeStruct;
14981        let mut len = 0;
14982        if !self.security_group_associations.is_empty() {
14983            len += 1;
14984        }
14985        if !self.next_page_token.is_empty() {
14986            len += 1;
14987        }
14988        let mut struct_ser = serializer
14989            .serialize_struct(
14990                "origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
14991                len,
14992            )?;
14993        if !self.security_group_associations.is_empty() {
14994            struct_ser
14995                .serialize_field(
14996                    "securityGroupAssociations",
14997                    &self.security_group_associations,
14998                )?;
14999        }
15000        if !self.next_page_token.is_empty() {
15001            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15002        }
15003        struct_ser.end()
15004    }
15005}
15006impl<'de> serde::Deserialize<'de> for ListSecurityGroupAssociationsResponse {
15007    #[allow(deprecated)]
15008    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15009    where
15010        D: serde::Deserializer<'de>,
15011    {
15012        const FIELDS: &[&str] = &[
15013            "security_group_associations",
15014            "securityGroupAssociations",
15015            "next_page_token",
15016            "nextPageToken",
15017        ];
15018        #[allow(clippy::enum_variant_names)]
15019        enum GeneratedField {
15020            SecurityGroupAssociations,
15021            NextPageToken,
15022            __SkipField__,
15023        }
15024        impl<'de> serde::Deserialize<'de> for GeneratedField {
15025            fn deserialize<D>(
15026                deserializer: D,
15027            ) -> std::result::Result<GeneratedField, D::Error>
15028            where
15029                D: serde::Deserializer<'de>,
15030            {
15031                struct GeneratedVisitor;
15032                impl serde::de::Visitor<'_> for GeneratedVisitor {
15033                    type Value = GeneratedField;
15034                    fn expecting(
15035                        &self,
15036                        formatter: &mut std::fmt::Formatter<'_>,
15037                    ) -> std::fmt::Result {
15038                        write!(formatter, "expected one of: {:?}", & FIELDS)
15039                    }
15040                    #[allow(unused_variables)]
15041                    fn visit_str<E>(
15042                        self,
15043                        value: &str,
15044                    ) -> std::result::Result<GeneratedField, E>
15045                    where
15046                        E: serde::de::Error,
15047                    {
15048                        match value {
15049                            "securityGroupAssociations"
15050                            | "security_group_associations" => {
15051                                Ok(GeneratedField::SecurityGroupAssociations)
15052                            }
15053                            "nextPageToken" | "next_page_token" => {
15054                                Ok(GeneratedField::NextPageToken)
15055                            }
15056                            _ => Ok(GeneratedField::__SkipField__),
15057                        }
15058                    }
15059                }
15060                deserializer.deserialize_identifier(GeneratedVisitor)
15061            }
15062        }
15063        struct GeneratedVisitor;
15064        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15065            type Value = ListSecurityGroupAssociationsResponse;
15066            fn expecting(
15067                &self,
15068                formatter: &mut std::fmt::Formatter<'_>,
15069            ) -> std::fmt::Result {
15070                formatter
15071                    .write_str(
15072                        "struct origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15073                    )
15074            }
15075            fn visit_map<V>(
15076                self,
15077                mut map_: V,
15078            ) -> std::result::Result<ListSecurityGroupAssociationsResponse, V::Error>
15079            where
15080                V: serde::de::MapAccess<'de>,
15081            {
15082                let mut security_group_associations__ = None;
15083                let mut next_page_token__ = None;
15084                while let Some(k) = map_.next_key()? {
15085                    match k {
15086                        GeneratedField::SecurityGroupAssociations => {
15087                            if security_group_associations__.is_some() {
15088                                return Err(
15089                                    serde::de::Error::duplicate_field(
15090                                        "securityGroupAssociations",
15091                                    ),
15092                                );
15093                            }
15094                            security_group_associations__ = Some(map_.next_value()?);
15095                        }
15096                        GeneratedField::NextPageToken => {
15097                            if next_page_token__.is_some() {
15098                                return Err(
15099                                    serde::de::Error::duplicate_field("nextPageToken"),
15100                                );
15101                            }
15102                            next_page_token__ = Some(map_.next_value()?);
15103                        }
15104                        GeneratedField::__SkipField__ => {
15105                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15106                        }
15107                    }
15108                }
15109                Ok(ListSecurityGroupAssociationsResponse {
15110                    security_group_associations: security_group_associations__
15111                        .unwrap_or_default(),
15112                    next_page_token: next_page_token__.unwrap_or_default(),
15113                })
15114            }
15115        }
15116        deserializer
15117            .deserialize_struct(
15118                "origincloud.network.v1beta1.ListSecurityGroupAssociationsResponse",
15119                FIELDS,
15120                GeneratedVisitor,
15121            )
15122    }
15123}
15124impl serde::Serialize for ListSecurityGroupRulesRequest {
15125    #[allow(deprecated)]
15126    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15127    where
15128        S: serde::Serializer,
15129    {
15130        use serde::ser::SerializeStruct;
15131        let mut len = 0;
15132        if !self.parent.is_empty() {
15133            len += 1;
15134        }
15135        if self.page_size != 0 {
15136            len += 1;
15137        }
15138        if !self.page_token.is_empty() {
15139            len += 1;
15140        }
15141        let mut struct_ser = serializer
15142            .serialize_struct(
15143                "origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15144                len,
15145            )?;
15146        if !self.parent.is_empty() {
15147            struct_ser.serialize_field("parent", &self.parent)?;
15148        }
15149        if self.page_size != 0 {
15150            struct_ser.serialize_field("pageSize", &self.page_size)?;
15151        }
15152        if !self.page_token.is_empty() {
15153            struct_ser.serialize_field("pageToken", &self.page_token)?;
15154        }
15155        struct_ser.end()
15156    }
15157}
15158impl<'de> serde::Deserialize<'de> for ListSecurityGroupRulesRequest {
15159    #[allow(deprecated)]
15160    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15161    where
15162        D: serde::Deserializer<'de>,
15163    {
15164        const FIELDS: &[&str] = &[
15165            "parent",
15166            "page_size",
15167            "pageSize",
15168            "page_token",
15169            "pageToken",
15170        ];
15171        #[allow(clippy::enum_variant_names)]
15172        enum GeneratedField {
15173            Parent,
15174            PageSize,
15175            PageToken,
15176            __SkipField__,
15177        }
15178        impl<'de> serde::Deserialize<'de> for GeneratedField {
15179            fn deserialize<D>(
15180                deserializer: D,
15181            ) -> std::result::Result<GeneratedField, D::Error>
15182            where
15183                D: serde::Deserializer<'de>,
15184            {
15185                struct GeneratedVisitor;
15186                impl serde::de::Visitor<'_> for GeneratedVisitor {
15187                    type Value = GeneratedField;
15188                    fn expecting(
15189                        &self,
15190                        formatter: &mut std::fmt::Formatter<'_>,
15191                    ) -> std::fmt::Result {
15192                        write!(formatter, "expected one of: {:?}", & FIELDS)
15193                    }
15194                    #[allow(unused_variables)]
15195                    fn visit_str<E>(
15196                        self,
15197                        value: &str,
15198                    ) -> std::result::Result<GeneratedField, E>
15199                    where
15200                        E: serde::de::Error,
15201                    {
15202                        match value {
15203                            "parent" => Ok(GeneratedField::Parent),
15204                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15205                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15206                            _ => Ok(GeneratedField::__SkipField__),
15207                        }
15208                    }
15209                }
15210                deserializer.deserialize_identifier(GeneratedVisitor)
15211            }
15212        }
15213        struct GeneratedVisitor;
15214        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15215            type Value = ListSecurityGroupRulesRequest;
15216            fn expecting(
15217                &self,
15218                formatter: &mut std::fmt::Formatter<'_>,
15219            ) -> std::fmt::Result {
15220                formatter
15221                    .write_str(
15222                        "struct origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15223                    )
15224            }
15225            fn visit_map<V>(
15226                self,
15227                mut map_: V,
15228            ) -> std::result::Result<ListSecurityGroupRulesRequest, V::Error>
15229            where
15230                V: serde::de::MapAccess<'de>,
15231            {
15232                let mut parent__ = None;
15233                let mut page_size__ = None;
15234                let mut page_token__ = None;
15235                while let Some(k) = map_.next_key()? {
15236                    match k {
15237                        GeneratedField::Parent => {
15238                            if parent__.is_some() {
15239                                return Err(serde::de::Error::duplicate_field("parent"));
15240                            }
15241                            parent__ = Some(map_.next_value()?);
15242                        }
15243                        GeneratedField::PageSize => {
15244                            if page_size__.is_some() {
15245                                return Err(serde::de::Error::duplicate_field("pageSize"));
15246                            }
15247                            page_size__ = Some(
15248                                map_
15249                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15250                                    .0,
15251                            );
15252                        }
15253                        GeneratedField::PageToken => {
15254                            if page_token__.is_some() {
15255                                return Err(serde::de::Error::duplicate_field("pageToken"));
15256                            }
15257                            page_token__ = Some(map_.next_value()?);
15258                        }
15259                        GeneratedField::__SkipField__ => {
15260                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15261                        }
15262                    }
15263                }
15264                Ok(ListSecurityGroupRulesRequest {
15265                    parent: parent__.unwrap_or_default(),
15266                    page_size: page_size__.unwrap_or_default(),
15267                    page_token: page_token__.unwrap_or_default(),
15268                })
15269            }
15270        }
15271        deserializer
15272            .deserialize_struct(
15273                "origincloud.network.v1beta1.ListSecurityGroupRulesRequest",
15274                FIELDS,
15275                GeneratedVisitor,
15276            )
15277    }
15278}
15279impl serde::Serialize for ListSecurityGroupRulesResponse {
15280    #[allow(deprecated)]
15281    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15282    where
15283        S: serde::Serializer,
15284    {
15285        use serde::ser::SerializeStruct;
15286        let mut len = 0;
15287        if !self.security_group_rules.is_empty() {
15288            len += 1;
15289        }
15290        if !self.next_page_token.is_empty() {
15291            len += 1;
15292        }
15293        let mut struct_ser = serializer
15294            .serialize_struct(
15295                "origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15296                len,
15297            )?;
15298        if !self.security_group_rules.is_empty() {
15299            struct_ser
15300                .serialize_field("securityGroupRules", &self.security_group_rules)?;
15301        }
15302        if !self.next_page_token.is_empty() {
15303            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15304        }
15305        struct_ser.end()
15306    }
15307}
15308impl<'de> serde::Deserialize<'de> for ListSecurityGroupRulesResponse {
15309    #[allow(deprecated)]
15310    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15311    where
15312        D: serde::Deserializer<'de>,
15313    {
15314        const FIELDS: &[&str] = &[
15315            "security_group_rules",
15316            "securityGroupRules",
15317            "next_page_token",
15318            "nextPageToken",
15319        ];
15320        #[allow(clippy::enum_variant_names)]
15321        enum GeneratedField {
15322            SecurityGroupRules,
15323            NextPageToken,
15324            __SkipField__,
15325        }
15326        impl<'de> serde::Deserialize<'de> for GeneratedField {
15327            fn deserialize<D>(
15328                deserializer: D,
15329            ) -> std::result::Result<GeneratedField, D::Error>
15330            where
15331                D: serde::Deserializer<'de>,
15332            {
15333                struct GeneratedVisitor;
15334                impl serde::de::Visitor<'_> for GeneratedVisitor {
15335                    type Value = GeneratedField;
15336                    fn expecting(
15337                        &self,
15338                        formatter: &mut std::fmt::Formatter<'_>,
15339                    ) -> std::fmt::Result {
15340                        write!(formatter, "expected one of: {:?}", & FIELDS)
15341                    }
15342                    #[allow(unused_variables)]
15343                    fn visit_str<E>(
15344                        self,
15345                        value: &str,
15346                    ) -> std::result::Result<GeneratedField, E>
15347                    where
15348                        E: serde::de::Error,
15349                    {
15350                        match value {
15351                            "securityGroupRules" | "security_group_rules" => {
15352                                Ok(GeneratedField::SecurityGroupRules)
15353                            }
15354                            "nextPageToken" | "next_page_token" => {
15355                                Ok(GeneratedField::NextPageToken)
15356                            }
15357                            _ => Ok(GeneratedField::__SkipField__),
15358                        }
15359                    }
15360                }
15361                deserializer.deserialize_identifier(GeneratedVisitor)
15362            }
15363        }
15364        struct GeneratedVisitor;
15365        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15366            type Value = ListSecurityGroupRulesResponse;
15367            fn expecting(
15368                &self,
15369                formatter: &mut std::fmt::Formatter<'_>,
15370            ) -> std::fmt::Result {
15371                formatter
15372                    .write_str(
15373                        "struct origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15374                    )
15375            }
15376            fn visit_map<V>(
15377                self,
15378                mut map_: V,
15379            ) -> std::result::Result<ListSecurityGroupRulesResponse, V::Error>
15380            where
15381                V: serde::de::MapAccess<'de>,
15382            {
15383                let mut security_group_rules__ = None;
15384                let mut next_page_token__ = None;
15385                while let Some(k) = map_.next_key()? {
15386                    match k {
15387                        GeneratedField::SecurityGroupRules => {
15388                            if security_group_rules__.is_some() {
15389                                return Err(
15390                                    serde::de::Error::duplicate_field("securityGroupRules"),
15391                                );
15392                            }
15393                            security_group_rules__ = Some(map_.next_value()?);
15394                        }
15395                        GeneratedField::NextPageToken => {
15396                            if next_page_token__.is_some() {
15397                                return Err(
15398                                    serde::de::Error::duplicate_field("nextPageToken"),
15399                                );
15400                            }
15401                            next_page_token__ = Some(map_.next_value()?);
15402                        }
15403                        GeneratedField::__SkipField__ => {
15404                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15405                        }
15406                    }
15407                }
15408                Ok(ListSecurityGroupRulesResponse {
15409                    security_group_rules: security_group_rules__.unwrap_or_default(),
15410                    next_page_token: next_page_token__.unwrap_or_default(),
15411                })
15412            }
15413        }
15414        deserializer
15415            .deserialize_struct(
15416                "origincloud.network.v1beta1.ListSecurityGroupRulesResponse",
15417                FIELDS,
15418                GeneratedVisitor,
15419            )
15420    }
15421}
15422impl serde::Serialize for ListSecurityGroupsRequest {
15423    #[allow(deprecated)]
15424    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15425    where
15426        S: serde::Serializer,
15427    {
15428        use serde::ser::SerializeStruct;
15429        let mut len = 0;
15430        if !self.parent.is_empty() {
15431            len += 1;
15432        }
15433        if self.page_size != 0 {
15434            len += 1;
15435        }
15436        if !self.page_token.is_empty() {
15437            len += 1;
15438        }
15439        if !self.vpc.is_empty() {
15440            len += 1;
15441        }
15442        let mut struct_ser = serializer
15443            .serialize_struct(
15444                "origincloud.network.v1beta1.ListSecurityGroupsRequest",
15445                len,
15446            )?;
15447        if !self.parent.is_empty() {
15448            struct_ser.serialize_field("parent", &self.parent)?;
15449        }
15450        if self.page_size != 0 {
15451            struct_ser.serialize_field("pageSize", &self.page_size)?;
15452        }
15453        if !self.page_token.is_empty() {
15454            struct_ser.serialize_field("pageToken", &self.page_token)?;
15455        }
15456        if !self.vpc.is_empty() {
15457            struct_ser.serialize_field("vpc", &self.vpc)?;
15458        }
15459        struct_ser.end()
15460    }
15461}
15462impl<'de> serde::Deserialize<'de> for ListSecurityGroupsRequest {
15463    #[allow(deprecated)]
15464    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15465    where
15466        D: serde::Deserializer<'de>,
15467    {
15468        const FIELDS: &[&str] = &[
15469            "parent",
15470            "page_size",
15471            "pageSize",
15472            "page_token",
15473            "pageToken",
15474            "vpc",
15475        ];
15476        #[allow(clippy::enum_variant_names)]
15477        enum GeneratedField {
15478            Parent,
15479            PageSize,
15480            PageToken,
15481            Vpc,
15482            __SkipField__,
15483        }
15484        impl<'de> serde::Deserialize<'de> for GeneratedField {
15485            fn deserialize<D>(
15486                deserializer: D,
15487            ) -> std::result::Result<GeneratedField, D::Error>
15488            where
15489                D: serde::Deserializer<'de>,
15490            {
15491                struct GeneratedVisitor;
15492                impl serde::de::Visitor<'_> for GeneratedVisitor {
15493                    type Value = GeneratedField;
15494                    fn expecting(
15495                        &self,
15496                        formatter: &mut std::fmt::Formatter<'_>,
15497                    ) -> std::fmt::Result {
15498                        write!(formatter, "expected one of: {:?}", & FIELDS)
15499                    }
15500                    #[allow(unused_variables)]
15501                    fn visit_str<E>(
15502                        self,
15503                        value: &str,
15504                    ) -> std::result::Result<GeneratedField, E>
15505                    where
15506                        E: serde::de::Error,
15507                    {
15508                        match value {
15509                            "parent" => Ok(GeneratedField::Parent),
15510                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15511                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15512                            "vpc" => Ok(GeneratedField::Vpc),
15513                            _ => Ok(GeneratedField::__SkipField__),
15514                        }
15515                    }
15516                }
15517                deserializer.deserialize_identifier(GeneratedVisitor)
15518            }
15519        }
15520        struct GeneratedVisitor;
15521        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15522            type Value = ListSecurityGroupsRequest;
15523            fn expecting(
15524                &self,
15525                formatter: &mut std::fmt::Formatter<'_>,
15526            ) -> std::fmt::Result {
15527                formatter
15528                    .write_str(
15529                        "struct origincloud.network.v1beta1.ListSecurityGroupsRequest",
15530                    )
15531            }
15532            fn visit_map<V>(
15533                self,
15534                mut map_: V,
15535            ) -> std::result::Result<ListSecurityGroupsRequest, V::Error>
15536            where
15537                V: serde::de::MapAccess<'de>,
15538            {
15539                let mut parent__ = None;
15540                let mut page_size__ = None;
15541                let mut page_token__ = None;
15542                let mut vpc__ = None;
15543                while let Some(k) = map_.next_key()? {
15544                    match k {
15545                        GeneratedField::Parent => {
15546                            if parent__.is_some() {
15547                                return Err(serde::de::Error::duplicate_field("parent"));
15548                            }
15549                            parent__ = Some(map_.next_value()?);
15550                        }
15551                        GeneratedField::PageSize => {
15552                            if page_size__.is_some() {
15553                                return Err(serde::de::Error::duplicate_field("pageSize"));
15554                            }
15555                            page_size__ = Some(
15556                                map_
15557                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15558                                    .0,
15559                            );
15560                        }
15561                        GeneratedField::PageToken => {
15562                            if page_token__.is_some() {
15563                                return Err(serde::de::Error::duplicate_field("pageToken"));
15564                            }
15565                            page_token__ = Some(map_.next_value()?);
15566                        }
15567                        GeneratedField::Vpc => {
15568                            if vpc__.is_some() {
15569                                return Err(serde::de::Error::duplicate_field("vpc"));
15570                            }
15571                            vpc__ = Some(map_.next_value()?);
15572                        }
15573                        GeneratedField::__SkipField__ => {
15574                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15575                        }
15576                    }
15577                }
15578                Ok(ListSecurityGroupsRequest {
15579                    parent: parent__.unwrap_or_default(),
15580                    page_size: page_size__.unwrap_or_default(),
15581                    page_token: page_token__.unwrap_or_default(),
15582                    vpc: vpc__.unwrap_or_default(),
15583                })
15584            }
15585        }
15586        deserializer
15587            .deserialize_struct(
15588                "origincloud.network.v1beta1.ListSecurityGroupsRequest",
15589                FIELDS,
15590                GeneratedVisitor,
15591            )
15592    }
15593}
15594impl serde::Serialize for ListSecurityGroupsResponse {
15595    #[allow(deprecated)]
15596    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15597    where
15598        S: serde::Serializer,
15599    {
15600        use serde::ser::SerializeStruct;
15601        let mut len = 0;
15602        if !self.security_groups.is_empty() {
15603            len += 1;
15604        }
15605        if !self.next_page_token.is_empty() {
15606            len += 1;
15607        }
15608        let mut struct_ser = serializer
15609            .serialize_struct(
15610                "origincloud.network.v1beta1.ListSecurityGroupsResponse",
15611                len,
15612            )?;
15613        if !self.security_groups.is_empty() {
15614            struct_ser.serialize_field("securityGroups", &self.security_groups)?;
15615        }
15616        if !self.next_page_token.is_empty() {
15617            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15618        }
15619        struct_ser.end()
15620    }
15621}
15622impl<'de> serde::Deserialize<'de> for ListSecurityGroupsResponse {
15623    #[allow(deprecated)]
15624    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15625    where
15626        D: serde::Deserializer<'de>,
15627    {
15628        const FIELDS: &[&str] = &[
15629            "security_groups",
15630            "securityGroups",
15631            "next_page_token",
15632            "nextPageToken",
15633        ];
15634        #[allow(clippy::enum_variant_names)]
15635        enum GeneratedField {
15636            SecurityGroups,
15637            NextPageToken,
15638            __SkipField__,
15639        }
15640        impl<'de> serde::Deserialize<'de> for GeneratedField {
15641            fn deserialize<D>(
15642                deserializer: D,
15643            ) -> std::result::Result<GeneratedField, D::Error>
15644            where
15645                D: serde::Deserializer<'de>,
15646            {
15647                struct GeneratedVisitor;
15648                impl serde::de::Visitor<'_> for GeneratedVisitor {
15649                    type Value = GeneratedField;
15650                    fn expecting(
15651                        &self,
15652                        formatter: &mut std::fmt::Formatter<'_>,
15653                    ) -> std::fmt::Result {
15654                        write!(formatter, "expected one of: {:?}", & FIELDS)
15655                    }
15656                    #[allow(unused_variables)]
15657                    fn visit_str<E>(
15658                        self,
15659                        value: &str,
15660                    ) -> std::result::Result<GeneratedField, E>
15661                    where
15662                        E: serde::de::Error,
15663                    {
15664                        match value {
15665                            "securityGroups" | "security_groups" => {
15666                                Ok(GeneratedField::SecurityGroups)
15667                            }
15668                            "nextPageToken" | "next_page_token" => {
15669                                Ok(GeneratedField::NextPageToken)
15670                            }
15671                            _ => Ok(GeneratedField::__SkipField__),
15672                        }
15673                    }
15674                }
15675                deserializer.deserialize_identifier(GeneratedVisitor)
15676            }
15677        }
15678        struct GeneratedVisitor;
15679        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15680            type Value = ListSecurityGroupsResponse;
15681            fn expecting(
15682                &self,
15683                formatter: &mut std::fmt::Formatter<'_>,
15684            ) -> std::fmt::Result {
15685                formatter
15686                    .write_str(
15687                        "struct origincloud.network.v1beta1.ListSecurityGroupsResponse",
15688                    )
15689            }
15690            fn visit_map<V>(
15691                self,
15692                mut map_: V,
15693            ) -> std::result::Result<ListSecurityGroupsResponse, V::Error>
15694            where
15695                V: serde::de::MapAccess<'de>,
15696            {
15697                let mut security_groups__ = None;
15698                let mut next_page_token__ = None;
15699                while let Some(k) = map_.next_key()? {
15700                    match k {
15701                        GeneratedField::SecurityGroups => {
15702                            if security_groups__.is_some() {
15703                                return Err(
15704                                    serde::de::Error::duplicate_field("securityGroups"),
15705                                );
15706                            }
15707                            security_groups__ = Some(map_.next_value()?);
15708                        }
15709                        GeneratedField::NextPageToken => {
15710                            if next_page_token__.is_some() {
15711                                return Err(
15712                                    serde::de::Error::duplicate_field("nextPageToken"),
15713                                );
15714                            }
15715                            next_page_token__ = Some(map_.next_value()?);
15716                        }
15717                        GeneratedField::__SkipField__ => {
15718                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15719                        }
15720                    }
15721                }
15722                Ok(ListSecurityGroupsResponse {
15723                    security_groups: security_groups__.unwrap_or_default(),
15724                    next_page_token: next_page_token__.unwrap_or_default(),
15725                })
15726            }
15727        }
15728        deserializer
15729            .deserialize_struct(
15730                "origincloud.network.v1beta1.ListSecurityGroupsResponse",
15731                FIELDS,
15732                GeneratedVisitor,
15733            )
15734    }
15735}
15736impl serde::Serialize for ListSubnetsRequest {
15737    #[allow(deprecated)]
15738    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15739    where
15740        S: serde::Serializer,
15741    {
15742        use serde::ser::SerializeStruct;
15743        let mut len = 0;
15744        if !self.parent.is_empty() {
15745            len += 1;
15746        }
15747        if self.page_size != 0 {
15748            len += 1;
15749        }
15750        if !self.page_token.is_empty() {
15751            len += 1;
15752        }
15753        if !self.vpc.is_empty() {
15754            len += 1;
15755        }
15756        let mut struct_ser = serializer
15757            .serialize_struct("origincloud.network.v1beta1.ListSubnetsRequest", len)?;
15758        if !self.parent.is_empty() {
15759            struct_ser.serialize_field("parent", &self.parent)?;
15760        }
15761        if self.page_size != 0 {
15762            struct_ser.serialize_field("pageSize", &self.page_size)?;
15763        }
15764        if !self.page_token.is_empty() {
15765            struct_ser.serialize_field("pageToken", &self.page_token)?;
15766        }
15767        if !self.vpc.is_empty() {
15768            struct_ser.serialize_field("vpc", &self.vpc)?;
15769        }
15770        struct_ser.end()
15771    }
15772}
15773impl<'de> serde::Deserialize<'de> for ListSubnetsRequest {
15774    #[allow(deprecated)]
15775    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15776    where
15777        D: serde::Deserializer<'de>,
15778    {
15779        const FIELDS: &[&str] = &[
15780            "parent",
15781            "page_size",
15782            "pageSize",
15783            "page_token",
15784            "pageToken",
15785            "vpc",
15786        ];
15787        #[allow(clippy::enum_variant_names)]
15788        enum GeneratedField {
15789            Parent,
15790            PageSize,
15791            PageToken,
15792            Vpc,
15793            __SkipField__,
15794        }
15795        impl<'de> serde::Deserialize<'de> for GeneratedField {
15796            fn deserialize<D>(
15797                deserializer: D,
15798            ) -> std::result::Result<GeneratedField, D::Error>
15799            where
15800                D: serde::Deserializer<'de>,
15801            {
15802                struct GeneratedVisitor;
15803                impl serde::de::Visitor<'_> for GeneratedVisitor {
15804                    type Value = GeneratedField;
15805                    fn expecting(
15806                        &self,
15807                        formatter: &mut std::fmt::Formatter<'_>,
15808                    ) -> std::fmt::Result {
15809                        write!(formatter, "expected one of: {:?}", & FIELDS)
15810                    }
15811                    #[allow(unused_variables)]
15812                    fn visit_str<E>(
15813                        self,
15814                        value: &str,
15815                    ) -> std::result::Result<GeneratedField, E>
15816                    where
15817                        E: serde::de::Error,
15818                    {
15819                        match value {
15820                            "parent" => Ok(GeneratedField::Parent),
15821                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
15822                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
15823                            "vpc" => Ok(GeneratedField::Vpc),
15824                            _ => Ok(GeneratedField::__SkipField__),
15825                        }
15826                    }
15827                }
15828                deserializer.deserialize_identifier(GeneratedVisitor)
15829            }
15830        }
15831        struct GeneratedVisitor;
15832        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15833            type Value = ListSubnetsRequest;
15834            fn expecting(
15835                &self,
15836                formatter: &mut std::fmt::Formatter<'_>,
15837            ) -> std::fmt::Result {
15838                formatter
15839                    .write_str("struct origincloud.network.v1beta1.ListSubnetsRequest")
15840            }
15841            fn visit_map<V>(
15842                self,
15843                mut map_: V,
15844            ) -> std::result::Result<ListSubnetsRequest, V::Error>
15845            where
15846                V: serde::de::MapAccess<'de>,
15847            {
15848                let mut parent__ = None;
15849                let mut page_size__ = None;
15850                let mut page_token__ = None;
15851                let mut vpc__ = None;
15852                while let Some(k) = map_.next_key()? {
15853                    match k {
15854                        GeneratedField::Parent => {
15855                            if parent__.is_some() {
15856                                return Err(serde::de::Error::duplicate_field("parent"));
15857                            }
15858                            parent__ = Some(map_.next_value()?);
15859                        }
15860                        GeneratedField::PageSize => {
15861                            if page_size__.is_some() {
15862                                return Err(serde::de::Error::duplicate_field("pageSize"));
15863                            }
15864                            page_size__ = Some(
15865                                map_
15866                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
15867                                    .0,
15868                            );
15869                        }
15870                        GeneratedField::PageToken => {
15871                            if page_token__.is_some() {
15872                                return Err(serde::de::Error::duplicate_field("pageToken"));
15873                            }
15874                            page_token__ = Some(map_.next_value()?);
15875                        }
15876                        GeneratedField::Vpc => {
15877                            if vpc__.is_some() {
15878                                return Err(serde::de::Error::duplicate_field("vpc"));
15879                            }
15880                            vpc__ = Some(map_.next_value()?);
15881                        }
15882                        GeneratedField::__SkipField__ => {
15883                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
15884                        }
15885                    }
15886                }
15887                Ok(ListSubnetsRequest {
15888                    parent: parent__.unwrap_or_default(),
15889                    page_size: page_size__.unwrap_or_default(),
15890                    page_token: page_token__.unwrap_or_default(),
15891                    vpc: vpc__.unwrap_or_default(),
15892                })
15893            }
15894        }
15895        deserializer
15896            .deserialize_struct(
15897                "origincloud.network.v1beta1.ListSubnetsRequest",
15898                FIELDS,
15899                GeneratedVisitor,
15900            )
15901    }
15902}
15903impl serde::Serialize for ListSubnetsResponse {
15904    #[allow(deprecated)]
15905    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
15906    where
15907        S: serde::Serializer,
15908    {
15909        use serde::ser::SerializeStruct;
15910        let mut len = 0;
15911        if !self.subnets.is_empty() {
15912            len += 1;
15913        }
15914        if !self.next_page_token.is_empty() {
15915            len += 1;
15916        }
15917        let mut struct_ser = serializer
15918            .serialize_struct("origincloud.network.v1beta1.ListSubnetsResponse", len)?;
15919        if !self.subnets.is_empty() {
15920            struct_ser.serialize_field("subnets", &self.subnets)?;
15921        }
15922        if !self.next_page_token.is_empty() {
15923            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
15924        }
15925        struct_ser.end()
15926    }
15927}
15928impl<'de> serde::Deserialize<'de> for ListSubnetsResponse {
15929    #[allow(deprecated)]
15930    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
15931    where
15932        D: serde::Deserializer<'de>,
15933    {
15934        const FIELDS: &[&str] = &["subnets", "next_page_token", "nextPageToken"];
15935        #[allow(clippy::enum_variant_names)]
15936        enum GeneratedField {
15937            Subnets,
15938            NextPageToken,
15939            __SkipField__,
15940        }
15941        impl<'de> serde::Deserialize<'de> for GeneratedField {
15942            fn deserialize<D>(
15943                deserializer: D,
15944            ) -> std::result::Result<GeneratedField, D::Error>
15945            where
15946                D: serde::Deserializer<'de>,
15947            {
15948                struct GeneratedVisitor;
15949                impl serde::de::Visitor<'_> for GeneratedVisitor {
15950                    type Value = GeneratedField;
15951                    fn expecting(
15952                        &self,
15953                        formatter: &mut std::fmt::Formatter<'_>,
15954                    ) -> std::fmt::Result {
15955                        write!(formatter, "expected one of: {:?}", & FIELDS)
15956                    }
15957                    #[allow(unused_variables)]
15958                    fn visit_str<E>(
15959                        self,
15960                        value: &str,
15961                    ) -> std::result::Result<GeneratedField, E>
15962                    where
15963                        E: serde::de::Error,
15964                    {
15965                        match value {
15966                            "subnets" => Ok(GeneratedField::Subnets),
15967                            "nextPageToken" | "next_page_token" => {
15968                                Ok(GeneratedField::NextPageToken)
15969                            }
15970                            _ => Ok(GeneratedField::__SkipField__),
15971                        }
15972                    }
15973                }
15974                deserializer.deserialize_identifier(GeneratedVisitor)
15975            }
15976        }
15977        struct GeneratedVisitor;
15978        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
15979            type Value = ListSubnetsResponse;
15980            fn expecting(
15981                &self,
15982                formatter: &mut std::fmt::Formatter<'_>,
15983            ) -> std::fmt::Result {
15984                formatter
15985                    .write_str("struct origincloud.network.v1beta1.ListSubnetsResponse")
15986            }
15987            fn visit_map<V>(
15988                self,
15989                mut map_: V,
15990            ) -> std::result::Result<ListSubnetsResponse, V::Error>
15991            where
15992                V: serde::de::MapAccess<'de>,
15993            {
15994                let mut subnets__ = None;
15995                let mut next_page_token__ = None;
15996                while let Some(k) = map_.next_key()? {
15997                    match k {
15998                        GeneratedField::Subnets => {
15999                            if subnets__.is_some() {
16000                                return Err(serde::de::Error::duplicate_field("subnets"));
16001                            }
16002                            subnets__ = Some(map_.next_value()?);
16003                        }
16004                        GeneratedField::NextPageToken => {
16005                            if next_page_token__.is_some() {
16006                                return Err(
16007                                    serde::de::Error::duplicate_field("nextPageToken"),
16008                                );
16009                            }
16010                            next_page_token__ = Some(map_.next_value()?);
16011                        }
16012                        GeneratedField::__SkipField__ => {
16013                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16014                        }
16015                    }
16016                }
16017                Ok(ListSubnetsResponse {
16018                    subnets: subnets__.unwrap_or_default(),
16019                    next_page_token: next_page_token__.unwrap_or_default(),
16020                })
16021            }
16022        }
16023        deserializer
16024            .deserialize_struct(
16025                "origincloud.network.v1beta1.ListSubnetsResponse",
16026                FIELDS,
16027                GeneratedVisitor,
16028            )
16029    }
16030}
16031impl serde::Serialize for ListVpcsRequest {
16032    #[allow(deprecated)]
16033    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16034    where
16035        S: serde::Serializer,
16036    {
16037        use serde::ser::SerializeStruct;
16038        let mut len = 0;
16039        if !self.parent.is_empty() {
16040            len += 1;
16041        }
16042        if self.page_size != 0 {
16043            len += 1;
16044        }
16045        if !self.page_token.is_empty() {
16046            len += 1;
16047        }
16048        let mut struct_ser = serializer
16049            .serialize_struct("origincloud.network.v1beta1.ListVpcsRequest", len)?;
16050        if !self.parent.is_empty() {
16051            struct_ser.serialize_field("parent", &self.parent)?;
16052        }
16053        if self.page_size != 0 {
16054            struct_ser.serialize_field("pageSize", &self.page_size)?;
16055        }
16056        if !self.page_token.is_empty() {
16057            struct_ser.serialize_field("pageToken", &self.page_token)?;
16058        }
16059        struct_ser.end()
16060    }
16061}
16062impl<'de> serde::Deserialize<'de> for ListVpcsRequest {
16063    #[allow(deprecated)]
16064    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16065    where
16066        D: serde::Deserializer<'de>,
16067    {
16068        const FIELDS: &[&str] = &[
16069            "parent",
16070            "page_size",
16071            "pageSize",
16072            "page_token",
16073            "pageToken",
16074        ];
16075        #[allow(clippy::enum_variant_names)]
16076        enum GeneratedField {
16077            Parent,
16078            PageSize,
16079            PageToken,
16080            __SkipField__,
16081        }
16082        impl<'de> serde::Deserialize<'de> for GeneratedField {
16083            fn deserialize<D>(
16084                deserializer: D,
16085            ) -> std::result::Result<GeneratedField, D::Error>
16086            where
16087                D: serde::Deserializer<'de>,
16088            {
16089                struct GeneratedVisitor;
16090                impl serde::de::Visitor<'_> for GeneratedVisitor {
16091                    type Value = GeneratedField;
16092                    fn expecting(
16093                        &self,
16094                        formatter: &mut std::fmt::Formatter<'_>,
16095                    ) -> std::fmt::Result {
16096                        write!(formatter, "expected one of: {:?}", & FIELDS)
16097                    }
16098                    #[allow(unused_variables)]
16099                    fn visit_str<E>(
16100                        self,
16101                        value: &str,
16102                    ) -> std::result::Result<GeneratedField, E>
16103                    where
16104                        E: serde::de::Error,
16105                    {
16106                        match value {
16107                            "parent" => Ok(GeneratedField::Parent),
16108                            "pageSize" | "page_size" => Ok(GeneratedField::PageSize),
16109                            "pageToken" | "page_token" => Ok(GeneratedField::PageToken),
16110                            _ => Ok(GeneratedField::__SkipField__),
16111                        }
16112                    }
16113                }
16114                deserializer.deserialize_identifier(GeneratedVisitor)
16115            }
16116        }
16117        struct GeneratedVisitor;
16118        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16119            type Value = ListVpcsRequest;
16120            fn expecting(
16121                &self,
16122                formatter: &mut std::fmt::Formatter<'_>,
16123            ) -> std::fmt::Result {
16124                formatter.write_str("struct origincloud.network.v1beta1.ListVpcsRequest")
16125            }
16126            fn visit_map<V>(
16127                self,
16128                mut map_: V,
16129            ) -> std::result::Result<ListVpcsRequest, V::Error>
16130            where
16131                V: serde::de::MapAccess<'de>,
16132            {
16133                let mut parent__ = None;
16134                let mut page_size__ = None;
16135                let mut page_token__ = None;
16136                while let Some(k) = map_.next_key()? {
16137                    match k {
16138                        GeneratedField::Parent => {
16139                            if parent__.is_some() {
16140                                return Err(serde::de::Error::duplicate_field("parent"));
16141                            }
16142                            parent__ = Some(map_.next_value()?);
16143                        }
16144                        GeneratedField::PageSize => {
16145                            if page_size__.is_some() {
16146                                return Err(serde::de::Error::duplicate_field("pageSize"));
16147                            }
16148                            page_size__ = Some(
16149                                map_
16150                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
16151                                    .0,
16152                            );
16153                        }
16154                        GeneratedField::PageToken => {
16155                            if page_token__.is_some() {
16156                                return Err(serde::de::Error::duplicate_field("pageToken"));
16157                            }
16158                            page_token__ = Some(map_.next_value()?);
16159                        }
16160                        GeneratedField::__SkipField__ => {
16161                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16162                        }
16163                    }
16164                }
16165                Ok(ListVpcsRequest {
16166                    parent: parent__.unwrap_or_default(),
16167                    page_size: page_size__.unwrap_or_default(),
16168                    page_token: page_token__.unwrap_or_default(),
16169                })
16170            }
16171        }
16172        deserializer
16173            .deserialize_struct(
16174                "origincloud.network.v1beta1.ListVpcsRequest",
16175                FIELDS,
16176                GeneratedVisitor,
16177            )
16178    }
16179}
16180impl serde::Serialize for ListVpcsResponse {
16181    #[allow(deprecated)]
16182    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16183    where
16184        S: serde::Serializer,
16185    {
16186        use serde::ser::SerializeStruct;
16187        let mut len = 0;
16188        if !self.vpcs.is_empty() {
16189            len += 1;
16190        }
16191        if !self.next_page_token.is_empty() {
16192            len += 1;
16193        }
16194        let mut struct_ser = serializer
16195            .serialize_struct("origincloud.network.v1beta1.ListVpcsResponse", len)?;
16196        if !self.vpcs.is_empty() {
16197            struct_ser.serialize_field("vpcs", &self.vpcs)?;
16198        }
16199        if !self.next_page_token.is_empty() {
16200            struct_ser.serialize_field("nextPageToken", &self.next_page_token)?;
16201        }
16202        struct_ser.end()
16203    }
16204}
16205impl<'de> serde::Deserialize<'de> for ListVpcsResponse {
16206    #[allow(deprecated)]
16207    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16208    where
16209        D: serde::Deserializer<'de>,
16210    {
16211        const FIELDS: &[&str] = &["vpcs", "next_page_token", "nextPageToken"];
16212        #[allow(clippy::enum_variant_names)]
16213        enum GeneratedField {
16214            Vpcs,
16215            NextPageToken,
16216            __SkipField__,
16217        }
16218        impl<'de> serde::Deserialize<'de> for GeneratedField {
16219            fn deserialize<D>(
16220                deserializer: D,
16221            ) -> std::result::Result<GeneratedField, D::Error>
16222            where
16223                D: serde::Deserializer<'de>,
16224            {
16225                struct GeneratedVisitor;
16226                impl serde::de::Visitor<'_> for GeneratedVisitor {
16227                    type Value = GeneratedField;
16228                    fn expecting(
16229                        &self,
16230                        formatter: &mut std::fmt::Formatter<'_>,
16231                    ) -> std::fmt::Result {
16232                        write!(formatter, "expected one of: {:?}", & FIELDS)
16233                    }
16234                    #[allow(unused_variables)]
16235                    fn visit_str<E>(
16236                        self,
16237                        value: &str,
16238                    ) -> std::result::Result<GeneratedField, E>
16239                    where
16240                        E: serde::de::Error,
16241                    {
16242                        match value {
16243                            "vpcs" => Ok(GeneratedField::Vpcs),
16244                            "nextPageToken" | "next_page_token" => {
16245                                Ok(GeneratedField::NextPageToken)
16246                            }
16247                            _ => Ok(GeneratedField::__SkipField__),
16248                        }
16249                    }
16250                }
16251                deserializer.deserialize_identifier(GeneratedVisitor)
16252            }
16253        }
16254        struct GeneratedVisitor;
16255        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16256            type Value = ListVpcsResponse;
16257            fn expecting(
16258                &self,
16259                formatter: &mut std::fmt::Formatter<'_>,
16260            ) -> std::fmt::Result {
16261                formatter
16262                    .write_str("struct origincloud.network.v1beta1.ListVpcsResponse")
16263            }
16264            fn visit_map<V>(
16265                self,
16266                mut map_: V,
16267            ) -> std::result::Result<ListVpcsResponse, V::Error>
16268            where
16269                V: serde::de::MapAccess<'de>,
16270            {
16271                let mut vpcs__ = None;
16272                let mut next_page_token__ = None;
16273                while let Some(k) = map_.next_key()? {
16274                    match k {
16275                        GeneratedField::Vpcs => {
16276                            if vpcs__.is_some() {
16277                                return Err(serde::de::Error::duplicate_field("vpcs"));
16278                            }
16279                            vpcs__ = Some(map_.next_value()?);
16280                        }
16281                        GeneratedField::NextPageToken => {
16282                            if next_page_token__.is_some() {
16283                                return Err(
16284                                    serde::de::Error::duplicate_field("nextPageToken"),
16285                                );
16286                            }
16287                            next_page_token__ = Some(map_.next_value()?);
16288                        }
16289                        GeneratedField::__SkipField__ => {
16290                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16291                        }
16292                    }
16293                }
16294                Ok(ListVpcsResponse {
16295                    vpcs: vpcs__.unwrap_or_default(),
16296                    next_page_token: next_page_token__.unwrap_or_default(),
16297                })
16298            }
16299        }
16300        deserializer
16301            .deserialize_struct(
16302                "origincloud.network.v1beta1.ListVpcsResponse",
16303                FIELDS,
16304                GeneratedVisitor,
16305            )
16306    }
16307}
16308impl serde::Serialize for NatGateway {
16309    #[allow(deprecated)]
16310    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16311    where
16312        S: serde::Serializer,
16313    {
16314        use serde::ser::SerializeStruct;
16315        let mut len = 0;
16316        if !self.name.is_empty() {
16317            len += 1;
16318        }
16319        if !self.urn.is_empty() {
16320            len += 1;
16321        }
16322        if !self.subnet.is_empty() {
16323            len += 1;
16324        }
16325        if !self.floating_ip.is_empty() {
16326            len += 1;
16327        }
16328        if !self.vpc.is_empty() {
16329            len += 1;
16330        }
16331        if self.create_time.is_some() {
16332            len += 1;
16333        }
16334        if !self.creator.is_empty() {
16335            len += 1;
16336        }
16337        if !self.tags.is_empty() {
16338            len += 1;
16339        }
16340        let mut struct_ser = serializer
16341            .serialize_struct("origincloud.network.v1beta1.NatGateway", len)?;
16342        if !self.name.is_empty() {
16343            struct_ser.serialize_field("name", &self.name)?;
16344        }
16345        if !self.urn.is_empty() {
16346            struct_ser.serialize_field("urn", &self.urn)?;
16347        }
16348        if !self.subnet.is_empty() {
16349            struct_ser.serialize_field("subnet", &self.subnet)?;
16350        }
16351        if !self.floating_ip.is_empty() {
16352            struct_ser.serialize_field("floatingIp", &self.floating_ip)?;
16353        }
16354        if !self.vpc.is_empty() {
16355            struct_ser.serialize_field("vpc", &self.vpc)?;
16356        }
16357        if let Some(v) = self.create_time.as_ref() {
16358            struct_ser.serialize_field("createTime", v)?;
16359        }
16360        if !self.creator.is_empty() {
16361            struct_ser.serialize_field("creator", &self.creator)?;
16362        }
16363        if !self.tags.is_empty() {
16364            struct_ser.serialize_field("tags", &self.tags)?;
16365        }
16366        struct_ser.end()
16367    }
16368}
16369impl<'de> serde::Deserialize<'de> for NatGateway {
16370    #[allow(deprecated)]
16371    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16372    where
16373        D: serde::Deserializer<'de>,
16374    {
16375        const FIELDS: &[&str] = &[
16376            "name",
16377            "urn",
16378            "subnet",
16379            "floating_ip",
16380            "floatingIp",
16381            "vpc",
16382            "create_time",
16383            "createTime",
16384            "creator",
16385            "tags",
16386        ];
16387        #[allow(clippy::enum_variant_names)]
16388        enum GeneratedField {
16389            Name,
16390            Urn,
16391            Subnet,
16392            FloatingIp,
16393            Vpc,
16394            CreateTime,
16395            Creator,
16396            Tags,
16397            __SkipField__,
16398        }
16399        impl<'de> serde::Deserialize<'de> for GeneratedField {
16400            fn deserialize<D>(
16401                deserializer: D,
16402            ) -> std::result::Result<GeneratedField, D::Error>
16403            where
16404                D: serde::Deserializer<'de>,
16405            {
16406                struct GeneratedVisitor;
16407                impl serde::de::Visitor<'_> for GeneratedVisitor {
16408                    type Value = GeneratedField;
16409                    fn expecting(
16410                        &self,
16411                        formatter: &mut std::fmt::Formatter<'_>,
16412                    ) -> std::fmt::Result {
16413                        write!(formatter, "expected one of: {:?}", & FIELDS)
16414                    }
16415                    #[allow(unused_variables)]
16416                    fn visit_str<E>(
16417                        self,
16418                        value: &str,
16419                    ) -> std::result::Result<GeneratedField, E>
16420                    where
16421                        E: serde::de::Error,
16422                    {
16423                        match value {
16424                            "name" => Ok(GeneratedField::Name),
16425                            "urn" => Ok(GeneratedField::Urn),
16426                            "subnet" => Ok(GeneratedField::Subnet),
16427                            "floatingIp" | "floating_ip" => {
16428                                Ok(GeneratedField::FloatingIp)
16429                            }
16430                            "vpc" => Ok(GeneratedField::Vpc),
16431                            "createTime" | "create_time" => {
16432                                Ok(GeneratedField::CreateTime)
16433                            }
16434                            "creator" => Ok(GeneratedField::Creator),
16435                            "tags" => Ok(GeneratedField::Tags),
16436                            _ => Ok(GeneratedField::__SkipField__),
16437                        }
16438                    }
16439                }
16440                deserializer.deserialize_identifier(GeneratedVisitor)
16441            }
16442        }
16443        struct GeneratedVisitor;
16444        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16445            type Value = NatGateway;
16446            fn expecting(
16447                &self,
16448                formatter: &mut std::fmt::Formatter<'_>,
16449            ) -> std::fmt::Result {
16450                formatter.write_str("struct origincloud.network.v1beta1.NatGateway")
16451            }
16452            fn visit_map<V>(
16453                self,
16454                mut map_: V,
16455            ) -> std::result::Result<NatGateway, V::Error>
16456            where
16457                V: serde::de::MapAccess<'de>,
16458            {
16459                let mut name__ = None;
16460                let mut urn__ = None;
16461                let mut subnet__ = None;
16462                let mut floating_ip__ = None;
16463                let mut vpc__ = None;
16464                let mut create_time__ = None;
16465                let mut creator__ = None;
16466                let mut tags__ = None;
16467                while let Some(k) = map_.next_key()? {
16468                    match k {
16469                        GeneratedField::Name => {
16470                            if name__.is_some() {
16471                                return Err(serde::de::Error::duplicate_field("name"));
16472                            }
16473                            name__ = Some(map_.next_value()?);
16474                        }
16475                        GeneratedField::Urn => {
16476                            if urn__.is_some() {
16477                                return Err(serde::de::Error::duplicate_field("urn"));
16478                            }
16479                            urn__ = Some(map_.next_value()?);
16480                        }
16481                        GeneratedField::Subnet => {
16482                            if subnet__.is_some() {
16483                                return Err(serde::de::Error::duplicate_field("subnet"));
16484                            }
16485                            subnet__ = Some(map_.next_value()?);
16486                        }
16487                        GeneratedField::FloatingIp => {
16488                            if floating_ip__.is_some() {
16489                                return Err(serde::de::Error::duplicate_field("floatingIp"));
16490                            }
16491                            floating_ip__ = Some(map_.next_value()?);
16492                        }
16493                        GeneratedField::Vpc => {
16494                            if vpc__.is_some() {
16495                                return Err(serde::de::Error::duplicate_field("vpc"));
16496                            }
16497                            vpc__ = Some(map_.next_value()?);
16498                        }
16499                        GeneratedField::CreateTime => {
16500                            if create_time__.is_some() {
16501                                return Err(serde::de::Error::duplicate_field("createTime"));
16502                            }
16503                            create_time__ = map_.next_value()?;
16504                        }
16505                        GeneratedField::Creator => {
16506                            if creator__.is_some() {
16507                                return Err(serde::de::Error::duplicate_field("creator"));
16508                            }
16509                            creator__ = Some(map_.next_value()?);
16510                        }
16511                        GeneratedField::Tags => {
16512                            if tags__.is_some() {
16513                                return Err(serde::de::Error::duplicate_field("tags"));
16514                            }
16515                            tags__ = Some(
16516                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
16517                            );
16518                        }
16519                        GeneratedField::__SkipField__ => {
16520                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16521                        }
16522                    }
16523                }
16524                Ok(NatGateway {
16525                    name: name__.unwrap_or_default(),
16526                    urn: urn__.unwrap_or_default(),
16527                    subnet: subnet__.unwrap_or_default(),
16528                    floating_ip: floating_ip__.unwrap_or_default(),
16529                    vpc: vpc__.unwrap_or_default(),
16530                    create_time: create_time__,
16531                    creator: creator__.unwrap_or_default(),
16532                    tags: tags__.unwrap_or_default(),
16533                })
16534            }
16535        }
16536        deserializer
16537            .deserialize_struct(
16538                "origincloud.network.v1beta1.NatGateway",
16539                FIELDS,
16540                GeneratedVisitor,
16541            )
16542    }
16543}
16544impl serde::Serialize for NetworkInterface {
16545    #[allow(deprecated)]
16546    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16547    where
16548        S: serde::Serializer,
16549    {
16550        use serde::ser::SerializeStruct;
16551        let mut len = 0;
16552        if !self.name.is_empty() {
16553            len += 1;
16554        }
16555        if !self.urn.is_empty() {
16556            len += 1;
16557        }
16558        if !self.subnet.is_empty() {
16559            len += 1;
16560        }
16561        if !self.security_groups.is_empty() {
16562            len += 1;
16563        }
16564        if self.source_address_check.is_some() {
16565            len += 1;
16566        }
16567        if !self.ipv4_address.is_empty() {
16568            len += 1;
16569        }
16570        if !self.ipv6_address.is_empty() {
16571            len += 1;
16572        }
16573        if self.state != 0 {
16574            len += 1;
16575        }
16576        if !self.instance.is_empty() {
16577            len += 1;
16578        }
16579        if self.create_time.is_some() {
16580            len += 1;
16581        }
16582        if !self.creator.is_empty() {
16583            len += 1;
16584        }
16585        if !self.tags.is_empty() {
16586            len += 1;
16587        }
16588        let mut struct_ser = serializer
16589            .serialize_struct("origincloud.network.v1beta1.NetworkInterface", len)?;
16590        if !self.name.is_empty() {
16591            struct_ser.serialize_field("name", &self.name)?;
16592        }
16593        if !self.urn.is_empty() {
16594            struct_ser.serialize_field("urn", &self.urn)?;
16595        }
16596        if !self.subnet.is_empty() {
16597            struct_ser.serialize_field("subnet", &self.subnet)?;
16598        }
16599        if !self.security_groups.is_empty() {
16600            struct_ser.serialize_field("securityGroups", &self.security_groups)?;
16601        }
16602        if let Some(v) = self.source_address_check.as_ref() {
16603            struct_ser.serialize_field("sourceAddressCheck", v)?;
16604        }
16605        if !self.ipv4_address.is_empty() {
16606            struct_ser.serialize_field("ipv4Address", &self.ipv4_address)?;
16607        }
16608        if !self.ipv6_address.is_empty() {
16609            struct_ser.serialize_field("ipv6Address", &self.ipv6_address)?;
16610        }
16611        if self.state != 0 {
16612            let v = network_interface::State::try_from(self.state)
16613                .map_err(|_| serde::ser::Error::custom(
16614                    format!("Invalid variant {}", self.state),
16615                ))?;
16616            struct_ser.serialize_field("state", &v)?;
16617        }
16618        if !self.instance.is_empty() {
16619            struct_ser.serialize_field("instance", &self.instance)?;
16620        }
16621        if let Some(v) = self.create_time.as_ref() {
16622            struct_ser.serialize_field("createTime", v)?;
16623        }
16624        if !self.creator.is_empty() {
16625            struct_ser.serialize_field("creator", &self.creator)?;
16626        }
16627        if !self.tags.is_empty() {
16628            struct_ser.serialize_field("tags", &self.tags)?;
16629        }
16630        struct_ser.end()
16631    }
16632}
16633impl<'de> serde::Deserialize<'de> for NetworkInterface {
16634    #[allow(deprecated)]
16635    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16636    where
16637        D: serde::Deserializer<'de>,
16638    {
16639        const FIELDS: &[&str] = &[
16640            "name",
16641            "urn",
16642            "subnet",
16643            "security_groups",
16644            "securityGroups",
16645            "source_address_check",
16646            "sourceAddressCheck",
16647            "ipv4_address",
16648            "ipv4Address",
16649            "ipv6_address",
16650            "ipv6Address",
16651            "state",
16652            "instance",
16653            "create_time",
16654            "createTime",
16655            "creator",
16656            "tags",
16657        ];
16658        #[allow(clippy::enum_variant_names)]
16659        enum GeneratedField {
16660            Name,
16661            Urn,
16662            Subnet,
16663            SecurityGroups,
16664            SourceAddressCheck,
16665            Ipv4Address,
16666            Ipv6Address,
16667            State,
16668            Instance,
16669            CreateTime,
16670            Creator,
16671            Tags,
16672            __SkipField__,
16673        }
16674        impl<'de> serde::Deserialize<'de> for GeneratedField {
16675            fn deserialize<D>(
16676                deserializer: D,
16677            ) -> std::result::Result<GeneratedField, D::Error>
16678            where
16679                D: serde::Deserializer<'de>,
16680            {
16681                struct GeneratedVisitor;
16682                impl serde::de::Visitor<'_> for GeneratedVisitor {
16683                    type Value = GeneratedField;
16684                    fn expecting(
16685                        &self,
16686                        formatter: &mut std::fmt::Formatter<'_>,
16687                    ) -> std::fmt::Result {
16688                        write!(formatter, "expected one of: {:?}", & FIELDS)
16689                    }
16690                    #[allow(unused_variables)]
16691                    fn visit_str<E>(
16692                        self,
16693                        value: &str,
16694                    ) -> std::result::Result<GeneratedField, E>
16695                    where
16696                        E: serde::de::Error,
16697                    {
16698                        match value {
16699                            "name" => Ok(GeneratedField::Name),
16700                            "urn" => Ok(GeneratedField::Urn),
16701                            "subnet" => Ok(GeneratedField::Subnet),
16702                            "securityGroups" | "security_groups" => {
16703                                Ok(GeneratedField::SecurityGroups)
16704                            }
16705                            "sourceAddressCheck" | "source_address_check" => {
16706                                Ok(GeneratedField::SourceAddressCheck)
16707                            }
16708                            "ipv4Address" | "ipv4_address" => {
16709                                Ok(GeneratedField::Ipv4Address)
16710                            }
16711                            "ipv6Address" | "ipv6_address" => {
16712                                Ok(GeneratedField::Ipv6Address)
16713                            }
16714                            "state" => Ok(GeneratedField::State),
16715                            "instance" => Ok(GeneratedField::Instance),
16716                            "createTime" | "create_time" => {
16717                                Ok(GeneratedField::CreateTime)
16718                            }
16719                            "creator" => Ok(GeneratedField::Creator),
16720                            "tags" => Ok(GeneratedField::Tags),
16721                            _ => Ok(GeneratedField::__SkipField__),
16722                        }
16723                    }
16724                }
16725                deserializer.deserialize_identifier(GeneratedVisitor)
16726            }
16727        }
16728        struct GeneratedVisitor;
16729        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
16730            type Value = NetworkInterface;
16731            fn expecting(
16732                &self,
16733                formatter: &mut std::fmt::Formatter<'_>,
16734            ) -> std::fmt::Result {
16735                formatter
16736                    .write_str("struct origincloud.network.v1beta1.NetworkInterface")
16737            }
16738            fn visit_map<V>(
16739                self,
16740                mut map_: V,
16741            ) -> std::result::Result<NetworkInterface, V::Error>
16742            where
16743                V: serde::de::MapAccess<'de>,
16744            {
16745                let mut name__ = None;
16746                let mut urn__ = None;
16747                let mut subnet__ = None;
16748                let mut security_groups__ = None;
16749                let mut source_address_check__ = None;
16750                let mut ipv4_address__ = None;
16751                let mut ipv6_address__ = None;
16752                let mut state__ = None;
16753                let mut instance__ = None;
16754                let mut create_time__ = None;
16755                let mut creator__ = None;
16756                let mut tags__ = None;
16757                while let Some(k) = map_.next_key()? {
16758                    match k {
16759                        GeneratedField::Name => {
16760                            if name__.is_some() {
16761                                return Err(serde::de::Error::duplicate_field("name"));
16762                            }
16763                            name__ = Some(map_.next_value()?);
16764                        }
16765                        GeneratedField::Urn => {
16766                            if urn__.is_some() {
16767                                return Err(serde::de::Error::duplicate_field("urn"));
16768                            }
16769                            urn__ = Some(map_.next_value()?);
16770                        }
16771                        GeneratedField::Subnet => {
16772                            if subnet__.is_some() {
16773                                return Err(serde::de::Error::duplicate_field("subnet"));
16774                            }
16775                            subnet__ = Some(map_.next_value()?);
16776                        }
16777                        GeneratedField::SecurityGroups => {
16778                            if security_groups__.is_some() {
16779                                return Err(
16780                                    serde::de::Error::duplicate_field("securityGroups"),
16781                                );
16782                            }
16783                            security_groups__ = Some(map_.next_value()?);
16784                        }
16785                        GeneratedField::SourceAddressCheck => {
16786                            if source_address_check__.is_some() {
16787                                return Err(
16788                                    serde::de::Error::duplicate_field("sourceAddressCheck"),
16789                                );
16790                            }
16791                            source_address_check__ = map_.next_value()?;
16792                        }
16793                        GeneratedField::Ipv4Address => {
16794                            if ipv4_address__.is_some() {
16795                                return Err(
16796                                    serde::de::Error::duplicate_field("ipv4Address"),
16797                                );
16798                            }
16799                            ipv4_address__ = Some(map_.next_value()?);
16800                        }
16801                        GeneratedField::Ipv6Address => {
16802                            if ipv6_address__.is_some() {
16803                                return Err(
16804                                    serde::de::Error::duplicate_field("ipv6Address"),
16805                                );
16806                            }
16807                            ipv6_address__ = Some(map_.next_value()?);
16808                        }
16809                        GeneratedField::State => {
16810                            if state__.is_some() {
16811                                return Err(serde::de::Error::duplicate_field("state"));
16812                            }
16813                            state__ = Some(
16814                                map_.next_value::<network_interface::State>()? as i32,
16815                            );
16816                        }
16817                        GeneratedField::Instance => {
16818                            if instance__.is_some() {
16819                                return Err(serde::de::Error::duplicate_field("instance"));
16820                            }
16821                            instance__ = Some(map_.next_value()?);
16822                        }
16823                        GeneratedField::CreateTime => {
16824                            if create_time__.is_some() {
16825                                return Err(serde::de::Error::duplicate_field("createTime"));
16826                            }
16827                            create_time__ = map_.next_value()?;
16828                        }
16829                        GeneratedField::Creator => {
16830                            if creator__.is_some() {
16831                                return Err(serde::de::Error::duplicate_field("creator"));
16832                            }
16833                            creator__ = Some(map_.next_value()?);
16834                        }
16835                        GeneratedField::Tags => {
16836                            if tags__.is_some() {
16837                                return Err(serde::de::Error::duplicate_field("tags"));
16838                            }
16839                            tags__ = Some(
16840                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
16841                            );
16842                        }
16843                        GeneratedField::__SkipField__ => {
16844                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
16845                        }
16846                    }
16847                }
16848                Ok(NetworkInterface {
16849                    name: name__.unwrap_or_default(),
16850                    urn: urn__.unwrap_or_default(),
16851                    subnet: subnet__.unwrap_or_default(),
16852                    security_groups: security_groups__.unwrap_or_default(),
16853                    source_address_check: source_address_check__,
16854                    ipv4_address: ipv4_address__.unwrap_or_default(),
16855                    ipv6_address: ipv6_address__.unwrap_or_default(),
16856                    state: state__.unwrap_or_default(),
16857                    instance: instance__.unwrap_or_default(),
16858                    create_time: create_time__,
16859                    creator: creator__.unwrap_or_default(),
16860                    tags: tags__.unwrap_or_default(),
16861                })
16862            }
16863        }
16864        deserializer
16865            .deserialize_struct(
16866                "origincloud.network.v1beta1.NetworkInterface",
16867                FIELDS,
16868                GeneratedVisitor,
16869            )
16870    }
16871}
16872impl serde::Serialize for network_interface::State {
16873    #[allow(deprecated)]
16874    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16875    where
16876        S: serde::Serializer,
16877    {
16878        let variant = match self {
16879            Self::Unspecified => "STATE_UNSPECIFIED",
16880            Self::Available => "AVAILABLE",
16881            Self::Attached => "ATTACHED",
16882        };
16883        serializer.serialize_str(variant)
16884    }
16885}
16886impl<'de> serde::Deserialize<'de> for network_interface::State {
16887    #[allow(deprecated)]
16888    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16889    where
16890        D: serde::Deserializer<'de>,
16891    {
16892        const FIELDS: &[&str] = &["STATE_UNSPECIFIED", "AVAILABLE", "ATTACHED"];
16893        struct GeneratedVisitor;
16894        impl serde::de::Visitor<'_> for GeneratedVisitor {
16895            type Value = network_interface::State;
16896            fn expecting(
16897                &self,
16898                formatter: &mut std::fmt::Formatter<'_>,
16899            ) -> std::fmt::Result {
16900                write!(formatter, "expected one of: {:?}", & FIELDS)
16901            }
16902            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
16903            where
16904                E: serde::de::Error,
16905            {
16906                i32::try_from(v)
16907                    .ok()
16908                    .and_then(|x| {
16909                        x
16910                            .try_into()
16911                            .ok()
16912                            .or_else(|| Some(network_interface::State::default()))
16913                    })
16914                    .ok_or_else(|| {
16915                        serde::de::Error::invalid_value(
16916                            serde::de::Unexpected::Signed(v),
16917                            &self,
16918                        )
16919                    })
16920            }
16921            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
16922            where
16923                E: serde::de::Error,
16924            {
16925                i32::try_from(v)
16926                    .ok()
16927                    .and_then(|x| {
16928                        x
16929                            .try_into()
16930                            .ok()
16931                            .or_else(|| Some(network_interface::State::default()))
16932                    })
16933                    .ok_or_else(|| {
16934                        serde::de::Error::invalid_value(
16935                            serde::de::Unexpected::Unsigned(v),
16936                            &self,
16937                        )
16938                    })
16939            }
16940            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
16941            where
16942                E: serde::de::Error,
16943            {
16944                match value {
16945                    "STATE_UNSPECIFIED" => Ok(network_interface::State::Unspecified),
16946                    "AVAILABLE" => Ok(network_interface::State::Available),
16947                    "ATTACHED" => Ok(network_interface::State::Attached),
16948                    _ => Ok(network_interface::State::default()),
16949                }
16950            }
16951        }
16952        deserializer.deserialize_any(GeneratedVisitor)
16953    }
16954}
16955impl serde::Serialize for Route {
16956    #[allow(deprecated)]
16957    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
16958    where
16959        S: serde::Serializer,
16960    {
16961        use serde::ser::SerializeStruct;
16962        let mut len = 0;
16963        if !self.name.is_empty() {
16964            len += 1;
16965        }
16966        if !self.destination.is_empty() {
16967            len += 1;
16968        }
16969        if !self.internet_gateway.is_empty() {
16970            len += 1;
16971        }
16972        if !self.nat_gateway.is_empty() {
16973            len += 1;
16974        }
16975        let mut struct_ser = serializer
16976            .serialize_struct("origincloud.network.v1beta1.Route", len)?;
16977        if !self.name.is_empty() {
16978            struct_ser.serialize_field("name", &self.name)?;
16979        }
16980        if !self.destination.is_empty() {
16981            struct_ser.serialize_field("destination", &self.destination)?;
16982        }
16983        if !self.internet_gateway.is_empty() {
16984            struct_ser.serialize_field("internetGateway", &self.internet_gateway)?;
16985        }
16986        if !self.nat_gateway.is_empty() {
16987            struct_ser.serialize_field("natGateway", &self.nat_gateway)?;
16988        }
16989        struct_ser.end()
16990    }
16991}
16992impl<'de> serde::Deserialize<'de> for Route {
16993    #[allow(deprecated)]
16994    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
16995    where
16996        D: serde::Deserializer<'de>,
16997    {
16998        const FIELDS: &[&str] = &[
16999            "name",
17000            "destination",
17001            "internet_gateway",
17002            "internetGateway",
17003            "nat_gateway",
17004            "natGateway",
17005        ];
17006        #[allow(clippy::enum_variant_names)]
17007        enum GeneratedField {
17008            Name,
17009            Destination,
17010            InternetGateway,
17011            NatGateway,
17012            __SkipField__,
17013        }
17014        impl<'de> serde::Deserialize<'de> for GeneratedField {
17015            fn deserialize<D>(
17016                deserializer: D,
17017            ) -> std::result::Result<GeneratedField, D::Error>
17018            where
17019                D: serde::Deserializer<'de>,
17020            {
17021                struct GeneratedVisitor;
17022                impl serde::de::Visitor<'_> for GeneratedVisitor {
17023                    type Value = GeneratedField;
17024                    fn expecting(
17025                        &self,
17026                        formatter: &mut std::fmt::Formatter<'_>,
17027                    ) -> std::fmt::Result {
17028                        write!(formatter, "expected one of: {:?}", & FIELDS)
17029                    }
17030                    #[allow(unused_variables)]
17031                    fn visit_str<E>(
17032                        self,
17033                        value: &str,
17034                    ) -> std::result::Result<GeneratedField, E>
17035                    where
17036                        E: serde::de::Error,
17037                    {
17038                        match value {
17039                            "name" => Ok(GeneratedField::Name),
17040                            "destination" => Ok(GeneratedField::Destination),
17041                            "internetGateway" | "internet_gateway" => {
17042                                Ok(GeneratedField::InternetGateway)
17043                            }
17044                            "natGateway" | "nat_gateway" => {
17045                                Ok(GeneratedField::NatGateway)
17046                            }
17047                            _ => Ok(GeneratedField::__SkipField__),
17048                        }
17049                    }
17050                }
17051                deserializer.deserialize_identifier(GeneratedVisitor)
17052            }
17053        }
17054        struct GeneratedVisitor;
17055        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17056            type Value = Route;
17057            fn expecting(
17058                &self,
17059                formatter: &mut std::fmt::Formatter<'_>,
17060            ) -> std::fmt::Result {
17061                formatter.write_str("struct origincloud.network.v1beta1.Route")
17062            }
17063            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Route, V::Error>
17064            where
17065                V: serde::de::MapAccess<'de>,
17066            {
17067                let mut name__ = None;
17068                let mut destination__ = None;
17069                let mut internet_gateway__ = None;
17070                let mut nat_gateway__ = None;
17071                while let Some(k) = map_.next_key()? {
17072                    match k {
17073                        GeneratedField::Name => {
17074                            if name__.is_some() {
17075                                return Err(serde::de::Error::duplicate_field("name"));
17076                            }
17077                            name__ = Some(map_.next_value()?);
17078                        }
17079                        GeneratedField::Destination => {
17080                            if destination__.is_some() {
17081                                return Err(
17082                                    serde::de::Error::duplicate_field("destination"),
17083                                );
17084                            }
17085                            destination__ = Some(map_.next_value()?);
17086                        }
17087                        GeneratedField::InternetGateway => {
17088                            if internet_gateway__.is_some() {
17089                                return Err(
17090                                    serde::de::Error::duplicate_field("internetGateway"),
17091                                );
17092                            }
17093                            internet_gateway__ = Some(map_.next_value()?);
17094                        }
17095                        GeneratedField::NatGateway => {
17096                            if nat_gateway__.is_some() {
17097                                return Err(serde::de::Error::duplicate_field("natGateway"));
17098                            }
17099                            nat_gateway__ = Some(map_.next_value()?);
17100                        }
17101                        GeneratedField::__SkipField__ => {
17102                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17103                        }
17104                    }
17105                }
17106                Ok(Route {
17107                    name: name__.unwrap_or_default(),
17108                    destination: destination__.unwrap_or_default(),
17109                    internet_gateway: internet_gateway__.unwrap_or_default(),
17110                    nat_gateway: nat_gateway__.unwrap_or_default(),
17111                })
17112            }
17113        }
17114        deserializer
17115            .deserialize_struct(
17116                "origincloud.network.v1beta1.Route",
17117                FIELDS,
17118                GeneratedVisitor,
17119            )
17120    }
17121}
17122impl serde::Serialize for RouteTable {
17123    #[allow(deprecated)]
17124    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17125    where
17126        S: serde::Serializer,
17127    {
17128        use serde::ser::SerializeStruct;
17129        let mut len = 0;
17130        if !self.name.is_empty() {
17131            len += 1;
17132        }
17133        if !self.urn.is_empty() {
17134            len += 1;
17135        }
17136        if !self.vpc.is_empty() {
17137            len += 1;
17138        }
17139        if self.main {
17140            len += 1;
17141        }
17142        if !self.local_routes.is_empty() {
17143            len += 1;
17144        }
17145        if self.create_time.is_some() {
17146            len += 1;
17147        }
17148        if !self.creator.is_empty() {
17149            len += 1;
17150        }
17151        if !self.tags.is_empty() {
17152            len += 1;
17153        }
17154        let mut struct_ser = serializer
17155            .serialize_struct("origincloud.network.v1beta1.RouteTable", len)?;
17156        if !self.name.is_empty() {
17157            struct_ser.serialize_field("name", &self.name)?;
17158        }
17159        if !self.urn.is_empty() {
17160            struct_ser.serialize_field("urn", &self.urn)?;
17161        }
17162        if !self.vpc.is_empty() {
17163            struct_ser.serialize_field("vpc", &self.vpc)?;
17164        }
17165        if self.main {
17166            struct_ser.serialize_field("main", &self.main)?;
17167        }
17168        if !self.local_routes.is_empty() {
17169            struct_ser.serialize_field("localRoutes", &self.local_routes)?;
17170        }
17171        if let Some(v) = self.create_time.as_ref() {
17172            struct_ser.serialize_field("createTime", v)?;
17173        }
17174        if !self.creator.is_empty() {
17175            struct_ser.serialize_field("creator", &self.creator)?;
17176        }
17177        if !self.tags.is_empty() {
17178            struct_ser.serialize_field("tags", &self.tags)?;
17179        }
17180        struct_ser.end()
17181    }
17182}
17183impl<'de> serde::Deserialize<'de> for RouteTable {
17184    #[allow(deprecated)]
17185    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17186    where
17187        D: serde::Deserializer<'de>,
17188    {
17189        const FIELDS: &[&str] = &[
17190            "name",
17191            "urn",
17192            "vpc",
17193            "main",
17194            "local_routes",
17195            "localRoutes",
17196            "create_time",
17197            "createTime",
17198            "creator",
17199            "tags",
17200        ];
17201        #[allow(clippy::enum_variant_names)]
17202        enum GeneratedField {
17203            Name,
17204            Urn,
17205            Vpc,
17206            Main,
17207            LocalRoutes,
17208            CreateTime,
17209            Creator,
17210            Tags,
17211            __SkipField__,
17212        }
17213        impl<'de> serde::Deserialize<'de> for GeneratedField {
17214            fn deserialize<D>(
17215                deserializer: D,
17216            ) -> std::result::Result<GeneratedField, D::Error>
17217            where
17218                D: serde::Deserializer<'de>,
17219            {
17220                struct GeneratedVisitor;
17221                impl serde::de::Visitor<'_> for GeneratedVisitor {
17222                    type Value = GeneratedField;
17223                    fn expecting(
17224                        &self,
17225                        formatter: &mut std::fmt::Formatter<'_>,
17226                    ) -> std::fmt::Result {
17227                        write!(formatter, "expected one of: {:?}", & FIELDS)
17228                    }
17229                    #[allow(unused_variables)]
17230                    fn visit_str<E>(
17231                        self,
17232                        value: &str,
17233                    ) -> std::result::Result<GeneratedField, E>
17234                    where
17235                        E: serde::de::Error,
17236                    {
17237                        match value {
17238                            "name" => Ok(GeneratedField::Name),
17239                            "urn" => Ok(GeneratedField::Urn),
17240                            "vpc" => Ok(GeneratedField::Vpc),
17241                            "main" => Ok(GeneratedField::Main),
17242                            "localRoutes" | "local_routes" => {
17243                                Ok(GeneratedField::LocalRoutes)
17244                            }
17245                            "createTime" | "create_time" => {
17246                                Ok(GeneratedField::CreateTime)
17247                            }
17248                            "creator" => Ok(GeneratedField::Creator),
17249                            "tags" => Ok(GeneratedField::Tags),
17250                            _ => Ok(GeneratedField::__SkipField__),
17251                        }
17252                    }
17253                }
17254                deserializer.deserialize_identifier(GeneratedVisitor)
17255            }
17256        }
17257        struct GeneratedVisitor;
17258        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17259            type Value = RouteTable;
17260            fn expecting(
17261                &self,
17262                formatter: &mut std::fmt::Formatter<'_>,
17263            ) -> std::fmt::Result {
17264                formatter.write_str("struct origincloud.network.v1beta1.RouteTable")
17265            }
17266            fn visit_map<V>(
17267                self,
17268                mut map_: V,
17269            ) -> std::result::Result<RouteTable, V::Error>
17270            where
17271                V: serde::de::MapAccess<'de>,
17272            {
17273                let mut name__ = None;
17274                let mut urn__ = None;
17275                let mut vpc__ = None;
17276                let mut main__ = None;
17277                let mut local_routes__ = None;
17278                let mut create_time__ = None;
17279                let mut creator__ = None;
17280                let mut tags__ = None;
17281                while let Some(k) = map_.next_key()? {
17282                    match k {
17283                        GeneratedField::Name => {
17284                            if name__.is_some() {
17285                                return Err(serde::de::Error::duplicate_field("name"));
17286                            }
17287                            name__ = Some(map_.next_value()?);
17288                        }
17289                        GeneratedField::Urn => {
17290                            if urn__.is_some() {
17291                                return Err(serde::de::Error::duplicate_field("urn"));
17292                            }
17293                            urn__ = Some(map_.next_value()?);
17294                        }
17295                        GeneratedField::Vpc => {
17296                            if vpc__.is_some() {
17297                                return Err(serde::de::Error::duplicate_field("vpc"));
17298                            }
17299                            vpc__ = Some(map_.next_value()?);
17300                        }
17301                        GeneratedField::Main => {
17302                            if main__.is_some() {
17303                                return Err(serde::de::Error::duplicate_field("main"));
17304                            }
17305                            main__ = Some(map_.next_value()?);
17306                        }
17307                        GeneratedField::LocalRoutes => {
17308                            if local_routes__.is_some() {
17309                                return Err(
17310                                    serde::de::Error::duplicate_field("localRoutes"),
17311                                );
17312                            }
17313                            local_routes__ = Some(map_.next_value()?);
17314                        }
17315                        GeneratedField::CreateTime => {
17316                            if create_time__.is_some() {
17317                                return Err(serde::de::Error::duplicate_field("createTime"));
17318                            }
17319                            create_time__ = map_.next_value()?;
17320                        }
17321                        GeneratedField::Creator => {
17322                            if creator__.is_some() {
17323                                return Err(serde::de::Error::duplicate_field("creator"));
17324                            }
17325                            creator__ = Some(map_.next_value()?);
17326                        }
17327                        GeneratedField::Tags => {
17328                            if tags__.is_some() {
17329                                return Err(serde::de::Error::duplicate_field("tags"));
17330                            }
17331                            tags__ = Some(
17332                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
17333                            );
17334                        }
17335                        GeneratedField::__SkipField__ => {
17336                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17337                        }
17338                    }
17339                }
17340                Ok(RouteTable {
17341                    name: name__.unwrap_or_default(),
17342                    urn: urn__.unwrap_or_default(),
17343                    vpc: vpc__.unwrap_or_default(),
17344                    main: main__.unwrap_or_default(),
17345                    local_routes: local_routes__.unwrap_or_default(),
17346                    create_time: create_time__,
17347                    creator: creator__.unwrap_or_default(),
17348                    tags: tags__.unwrap_or_default(),
17349                })
17350            }
17351        }
17352        deserializer
17353            .deserialize_struct(
17354                "origincloud.network.v1beta1.RouteTable",
17355                FIELDS,
17356                GeneratedVisitor,
17357            )
17358    }
17359}
17360impl serde::Serialize for RouteTableAssociation {
17361    #[allow(deprecated)]
17362    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17363    where
17364        S: serde::Serializer,
17365    {
17366        use serde::ser::SerializeStruct;
17367        let mut len = 0;
17368        if !self.name.is_empty() {
17369            len += 1;
17370        }
17371        if !self.route_table.is_empty() {
17372            len += 1;
17373        }
17374        let mut struct_ser = serializer
17375            .serialize_struct("origincloud.network.v1beta1.RouteTableAssociation", len)?;
17376        if !self.name.is_empty() {
17377            struct_ser.serialize_field("name", &self.name)?;
17378        }
17379        if !self.route_table.is_empty() {
17380            struct_ser.serialize_field("routeTable", &self.route_table)?;
17381        }
17382        struct_ser.end()
17383    }
17384}
17385impl<'de> serde::Deserialize<'de> for RouteTableAssociation {
17386    #[allow(deprecated)]
17387    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17388    where
17389        D: serde::Deserializer<'de>,
17390    {
17391        const FIELDS: &[&str] = &["name", "route_table", "routeTable"];
17392        #[allow(clippy::enum_variant_names)]
17393        enum GeneratedField {
17394            Name,
17395            RouteTable,
17396            __SkipField__,
17397        }
17398        impl<'de> serde::Deserialize<'de> for GeneratedField {
17399            fn deserialize<D>(
17400                deserializer: D,
17401            ) -> std::result::Result<GeneratedField, D::Error>
17402            where
17403                D: serde::Deserializer<'de>,
17404            {
17405                struct GeneratedVisitor;
17406                impl serde::de::Visitor<'_> for GeneratedVisitor {
17407                    type Value = GeneratedField;
17408                    fn expecting(
17409                        &self,
17410                        formatter: &mut std::fmt::Formatter<'_>,
17411                    ) -> std::fmt::Result {
17412                        write!(formatter, "expected one of: {:?}", & FIELDS)
17413                    }
17414                    #[allow(unused_variables)]
17415                    fn visit_str<E>(
17416                        self,
17417                        value: &str,
17418                    ) -> std::result::Result<GeneratedField, E>
17419                    where
17420                        E: serde::de::Error,
17421                    {
17422                        match value {
17423                            "name" => Ok(GeneratedField::Name),
17424                            "routeTable" | "route_table" => {
17425                                Ok(GeneratedField::RouteTable)
17426                            }
17427                            _ => Ok(GeneratedField::__SkipField__),
17428                        }
17429                    }
17430                }
17431                deserializer.deserialize_identifier(GeneratedVisitor)
17432            }
17433        }
17434        struct GeneratedVisitor;
17435        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17436            type Value = RouteTableAssociation;
17437            fn expecting(
17438                &self,
17439                formatter: &mut std::fmt::Formatter<'_>,
17440            ) -> std::fmt::Result {
17441                formatter
17442                    .write_str(
17443                        "struct origincloud.network.v1beta1.RouteTableAssociation",
17444                    )
17445            }
17446            fn visit_map<V>(
17447                self,
17448                mut map_: V,
17449            ) -> std::result::Result<RouteTableAssociation, V::Error>
17450            where
17451                V: serde::de::MapAccess<'de>,
17452            {
17453                let mut name__ = None;
17454                let mut route_table__ = None;
17455                while let Some(k) = map_.next_key()? {
17456                    match k {
17457                        GeneratedField::Name => {
17458                            if name__.is_some() {
17459                                return Err(serde::de::Error::duplicate_field("name"));
17460                            }
17461                            name__ = Some(map_.next_value()?);
17462                        }
17463                        GeneratedField::RouteTable => {
17464                            if route_table__.is_some() {
17465                                return Err(serde::de::Error::duplicate_field("routeTable"));
17466                            }
17467                            route_table__ = Some(map_.next_value()?);
17468                        }
17469                        GeneratedField::__SkipField__ => {
17470                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17471                        }
17472                    }
17473                }
17474                Ok(RouteTableAssociation {
17475                    name: name__.unwrap_or_default(),
17476                    route_table: route_table__.unwrap_or_default(),
17477                })
17478            }
17479        }
17480        deserializer
17481            .deserialize_struct(
17482                "origincloud.network.v1beta1.RouteTableAssociation",
17483                FIELDS,
17484                GeneratedVisitor,
17485            )
17486    }
17487}
17488impl serde::Serialize for SecurityGroup {
17489    #[allow(deprecated)]
17490    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17491    where
17492        S: serde::Serializer,
17493    {
17494        use serde::ser::SerializeStruct;
17495        let mut len = 0;
17496        if !self.name.is_empty() {
17497            len += 1;
17498        }
17499        if !self.urn.is_empty() {
17500            len += 1;
17501        }
17502        if !self.vpc.is_empty() {
17503            len += 1;
17504        }
17505        if self.vpc_default {
17506            len += 1;
17507        }
17508        if self.create_time.is_some() {
17509            len += 1;
17510        }
17511        if !self.creator.is_empty() {
17512            len += 1;
17513        }
17514        if !self.tags.is_empty() {
17515            len += 1;
17516        }
17517        let mut struct_ser = serializer
17518            .serialize_struct("origincloud.network.v1beta1.SecurityGroup", len)?;
17519        if !self.name.is_empty() {
17520            struct_ser.serialize_field("name", &self.name)?;
17521        }
17522        if !self.urn.is_empty() {
17523            struct_ser.serialize_field("urn", &self.urn)?;
17524        }
17525        if !self.vpc.is_empty() {
17526            struct_ser.serialize_field("vpc", &self.vpc)?;
17527        }
17528        if self.vpc_default {
17529            struct_ser.serialize_field("vpcDefault", &self.vpc_default)?;
17530        }
17531        if let Some(v) = self.create_time.as_ref() {
17532            struct_ser.serialize_field("createTime", v)?;
17533        }
17534        if !self.creator.is_empty() {
17535            struct_ser.serialize_field("creator", &self.creator)?;
17536        }
17537        if !self.tags.is_empty() {
17538            struct_ser.serialize_field("tags", &self.tags)?;
17539        }
17540        struct_ser.end()
17541    }
17542}
17543impl<'de> serde::Deserialize<'de> for SecurityGroup {
17544    #[allow(deprecated)]
17545    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17546    where
17547        D: serde::Deserializer<'de>,
17548    {
17549        const FIELDS: &[&str] = &[
17550            "name",
17551            "urn",
17552            "vpc",
17553            "vpc_default",
17554            "vpcDefault",
17555            "create_time",
17556            "createTime",
17557            "creator",
17558            "tags",
17559        ];
17560        #[allow(clippy::enum_variant_names)]
17561        enum GeneratedField {
17562            Name,
17563            Urn,
17564            Vpc,
17565            VpcDefault,
17566            CreateTime,
17567            Creator,
17568            Tags,
17569            __SkipField__,
17570        }
17571        impl<'de> serde::Deserialize<'de> for GeneratedField {
17572            fn deserialize<D>(
17573                deserializer: D,
17574            ) -> std::result::Result<GeneratedField, D::Error>
17575            where
17576                D: serde::Deserializer<'de>,
17577            {
17578                struct GeneratedVisitor;
17579                impl serde::de::Visitor<'_> for GeneratedVisitor {
17580                    type Value = GeneratedField;
17581                    fn expecting(
17582                        &self,
17583                        formatter: &mut std::fmt::Formatter<'_>,
17584                    ) -> std::fmt::Result {
17585                        write!(formatter, "expected one of: {:?}", & FIELDS)
17586                    }
17587                    #[allow(unused_variables)]
17588                    fn visit_str<E>(
17589                        self,
17590                        value: &str,
17591                    ) -> std::result::Result<GeneratedField, E>
17592                    where
17593                        E: serde::de::Error,
17594                    {
17595                        match value {
17596                            "name" => Ok(GeneratedField::Name),
17597                            "urn" => Ok(GeneratedField::Urn),
17598                            "vpc" => Ok(GeneratedField::Vpc),
17599                            "vpcDefault" | "vpc_default" => {
17600                                Ok(GeneratedField::VpcDefault)
17601                            }
17602                            "createTime" | "create_time" => {
17603                                Ok(GeneratedField::CreateTime)
17604                            }
17605                            "creator" => Ok(GeneratedField::Creator),
17606                            "tags" => Ok(GeneratedField::Tags),
17607                            _ => Ok(GeneratedField::__SkipField__),
17608                        }
17609                    }
17610                }
17611                deserializer.deserialize_identifier(GeneratedVisitor)
17612            }
17613        }
17614        struct GeneratedVisitor;
17615        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17616            type Value = SecurityGroup;
17617            fn expecting(
17618                &self,
17619                formatter: &mut std::fmt::Formatter<'_>,
17620            ) -> std::fmt::Result {
17621                formatter.write_str("struct origincloud.network.v1beta1.SecurityGroup")
17622            }
17623            fn visit_map<V>(
17624                self,
17625                mut map_: V,
17626            ) -> std::result::Result<SecurityGroup, V::Error>
17627            where
17628                V: serde::de::MapAccess<'de>,
17629            {
17630                let mut name__ = None;
17631                let mut urn__ = None;
17632                let mut vpc__ = None;
17633                let mut vpc_default__ = None;
17634                let mut create_time__ = None;
17635                let mut creator__ = None;
17636                let mut tags__ = None;
17637                while let Some(k) = map_.next_key()? {
17638                    match k {
17639                        GeneratedField::Name => {
17640                            if name__.is_some() {
17641                                return Err(serde::de::Error::duplicate_field("name"));
17642                            }
17643                            name__ = Some(map_.next_value()?);
17644                        }
17645                        GeneratedField::Urn => {
17646                            if urn__.is_some() {
17647                                return Err(serde::de::Error::duplicate_field("urn"));
17648                            }
17649                            urn__ = Some(map_.next_value()?);
17650                        }
17651                        GeneratedField::Vpc => {
17652                            if vpc__.is_some() {
17653                                return Err(serde::de::Error::duplicate_field("vpc"));
17654                            }
17655                            vpc__ = Some(map_.next_value()?);
17656                        }
17657                        GeneratedField::VpcDefault => {
17658                            if vpc_default__.is_some() {
17659                                return Err(serde::de::Error::duplicate_field("vpcDefault"));
17660                            }
17661                            vpc_default__ = Some(map_.next_value()?);
17662                        }
17663                        GeneratedField::CreateTime => {
17664                            if create_time__.is_some() {
17665                                return Err(serde::de::Error::duplicate_field("createTime"));
17666                            }
17667                            create_time__ = map_.next_value()?;
17668                        }
17669                        GeneratedField::Creator => {
17670                            if creator__.is_some() {
17671                                return Err(serde::de::Error::duplicate_field("creator"));
17672                            }
17673                            creator__ = Some(map_.next_value()?);
17674                        }
17675                        GeneratedField::Tags => {
17676                            if tags__.is_some() {
17677                                return Err(serde::de::Error::duplicate_field("tags"));
17678                            }
17679                            tags__ = Some(
17680                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
17681                            );
17682                        }
17683                        GeneratedField::__SkipField__ => {
17684                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17685                        }
17686                    }
17687                }
17688                Ok(SecurityGroup {
17689                    name: name__.unwrap_or_default(),
17690                    urn: urn__.unwrap_or_default(),
17691                    vpc: vpc__.unwrap_or_default(),
17692                    vpc_default: vpc_default__.unwrap_or_default(),
17693                    create_time: create_time__,
17694                    creator: creator__.unwrap_or_default(),
17695                    tags: tags__.unwrap_or_default(),
17696                })
17697            }
17698        }
17699        deserializer
17700            .deserialize_struct(
17701                "origincloud.network.v1beta1.SecurityGroup",
17702                FIELDS,
17703                GeneratedVisitor,
17704            )
17705    }
17706}
17707impl serde::Serialize for SecurityGroupAssociation {
17708    #[allow(deprecated)]
17709    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17710    where
17711        S: serde::Serializer,
17712    {
17713        use serde::ser::SerializeStruct;
17714        let mut len = 0;
17715        if !self.name.is_empty() {
17716            len += 1;
17717        }
17718        if !self.security_group.is_empty() {
17719            len += 1;
17720        }
17721        let mut struct_ser = serializer
17722            .serialize_struct(
17723                "origincloud.network.v1beta1.SecurityGroupAssociation",
17724                len,
17725            )?;
17726        if !self.name.is_empty() {
17727            struct_ser.serialize_field("name", &self.name)?;
17728        }
17729        if !self.security_group.is_empty() {
17730            struct_ser.serialize_field("securityGroup", &self.security_group)?;
17731        }
17732        struct_ser.end()
17733    }
17734}
17735impl<'de> serde::Deserialize<'de> for SecurityGroupAssociation {
17736    #[allow(deprecated)]
17737    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17738    where
17739        D: serde::Deserializer<'de>,
17740    {
17741        const FIELDS: &[&str] = &["name", "security_group", "securityGroup"];
17742        #[allow(clippy::enum_variant_names)]
17743        enum GeneratedField {
17744            Name,
17745            SecurityGroup,
17746            __SkipField__,
17747        }
17748        impl<'de> serde::Deserialize<'de> for GeneratedField {
17749            fn deserialize<D>(
17750                deserializer: D,
17751            ) -> std::result::Result<GeneratedField, D::Error>
17752            where
17753                D: serde::Deserializer<'de>,
17754            {
17755                struct GeneratedVisitor;
17756                impl serde::de::Visitor<'_> for GeneratedVisitor {
17757                    type Value = GeneratedField;
17758                    fn expecting(
17759                        &self,
17760                        formatter: &mut std::fmt::Formatter<'_>,
17761                    ) -> std::fmt::Result {
17762                        write!(formatter, "expected one of: {:?}", & FIELDS)
17763                    }
17764                    #[allow(unused_variables)]
17765                    fn visit_str<E>(
17766                        self,
17767                        value: &str,
17768                    ) -> std::result::Result<GeneratedField, E>
17769                    where
17770                        E: serde::de::Error,
17771                    {
17772                        match value {
17773                            "name" => Ok(GeneratedField::Name),
17774                            "securityGroup" | "security_group" => {
17775                                Ok(GeneratedField::SecurityGroup)
17776                            }
17777                            _ => Ok(GeneratedField::__SkipField__),
17778                        }
17779                    }
17780                }
17781                deserializer.deserialize_identifier(GeneratedVisitor)
17782            }
17783        }
17784        struct GeneratedVisitor;
17785        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17786            type Value = SecurityGroupAssociation;
17787            fn expecting(
17788                &self,
17789                formatter: &mut std::fmt::Formatter<'_>,
17790            ) -> std::fmt::Result {
17791                formatter
17792                    .write_str(
17793                        "struct origincloud.network.v1beta1.SecurityGroupAssociation",
17794                    )
17795            }
17796            fn visit_map<V>(
17797                self,
17798                mut map_: V,
17799            ) -> std::result::Result<SecurityGroupAssociation, V::Error>
17800            where
17801                V: serde::de::MapAccess<'de>,
17802            {
17803                let mut name__ = None;
17804                let mut security_group__ = None;
17805                while let Some(k) = map_.next_key()? {
17806                    match k {
17807                        GeneratedField::Name => {
17808                            if name__.is_some() {
17809                                return Err(serde::de::Error::duplicate_field("name"));
17810                            }
17811                            name__ = Some(map_.next_value()?);
17812                        }
17813                        GeneratedField::SecurityGroup => {
17814                            if security_group__.is_some() {
17815                                return Err(
17816                                    serde::de::Error::duplicate_field("securityGroup"),
17817                                );
17818                            }
17819                            security_group__ = Some(map_.next_value()?);
17820                        }
17821                        GeneratedField::__SkipField__ => {
17822                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
17823                        }
17824                    }
17825                }
17826                Ok(SecurityGroupAssociation {
17827                    name: name__.unwrap_or_default(),
17828                    security_group: security_group__.unwrap_or_default(),
17829                })
17830            }
17831        }
17832        deserializer
17833            .deserialize_struct(
17834                "origincloud.network.v1beta1.SecurityGroupAssociation",
17835                FIELDS,
17836                GeneratedVisitor,
17837            )
17838    }
17839}
17840impl serde::Serialize for SecurityGroupRule {
17841    #[allow(deprecated)]
17842    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
17843    where
17844        S: serde::Serializer,
17845    {
17846        use serde::ser::SerializeStruct;
17847        let mut len = 0;
17848        if !self.name.is_empty() {
17849            len += 1;
17850        }
17851        if self.direction != 0 {
17852            len += 1;
17853        }
17854        if self.protocol != 0 {
17855            len += 1;
17856        }
17857        if self.first_port != 0 {
17858            len += 1;
17859        }
17860        if self.last_port != 0 {
17861            len += 1;
17862        }
17863        if !self.cidr_block.is_empty() {
17864            len += 1;
17865        }
17866        if !self.peer_security_group.is_empty() {
17867            len += 1;
17868        }
17869        if self.same_group {
17870            len += 1;
17871        }
17872        if !self.description.is_empty() {
17873            len += 1;
17874        }
17875        let mut struct_ser = serializer
17876            .serialize_struct("origincloud.network.v1beta1.SecurityGroupRule", len)?;
17877        if !self.name.is_empty() {
17878            struct_ser.serialize_field("name", &self.name)?;
17879        }
17880        if self.direction != 0 {
17881            let v = security_group_rule::Direction::try_from(self.direction)
17882                .map_err(|_| serde::ser::Error::custom(
17883                    format!("Invalid variant {}", self.direction),
17884                ))?;
17885            struct_ser.serialize_field("direction", &v)?;
17886        }
17887        if self.protocol != 0 {
17888            let v = security_group_rule::Protocol::try_from(self.protocol)
17889                .map_err(|_| serde::ser::Error::custom(
17890                    format!("Invalid variant {}", self.protocol),
17891                ))?;
17892            struct_ser.serialize_field("protocol", &v)?;
17893        }
17894        if self.first_port != 0 {
17895            struct_ser.serialize_field("firstPort", &self.first_port)?;
17896        }
17897        if self.last_port != 0 {
17898            struct_ser.serialize_field("lastPort", &self.last_port)?;
17899        }
17900        if !self.cidr_block.is_empty() {
17901            struct_ser.serialize_field("cidrBlock", &self.cidr_block)?;
17902        }
17903        if !self.peer_security_group.is_empty() {
17904            struct_ser.serialize_field("peerSecurityGroup", &self.peer_security_group)?;
17905        }
17906        if self.same_group {
17907            struct_ser.serialize_field("sameGroup", &self.same_group)?;
17908        }
17909        if !self.description.is_empty() {
17910            struct_ser.serialize_field("description", &self.description)?;
17911        }
17912        struct_ser.end()
17913    }
17914}
17915impl<'de> serde::Deserialize<'de> for SecurityGroupRule {
17916    #[allow(deprecated)]
17917    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
17918    where
17919        D: serde::Deserializer<'de>,
17920    {
17921        const FIELDS: &[&str] = &[
17922            "name",
17923            "direction",
17924            "protocol",
17925            "first_port",
17926            "firstPort",
17927            "last_port",
17928            "lastPort",
17929            "cidr_block",
17930            "cidrBlock",
17931            "peer_security_group",
17932            "peerSecurityGroup",
17933            "same_group",
17934            "sameGroup",
17935            "description",
17936        ];
17937        #[allow(clippy::enum_variant_names)]
17938        enum GeneratedField {
17939            Name,
17940            Direction,
17941            Protocol,
17942            FirstPort,
17943            LastPort,
17944            CidrBlock,
17945            PeerSecurityGroup,
17946            SameGroup,
17947            Description,
17948            __SkipField__,
17949        }
17950        impl<'de> serde::Deserialize<'de> for GeneratedField {
17951            fn deserialize<D>(
17952                deserializer: D,
17953            ) -> std::result::Result<GeneratedField, D::Error>
17954            where
17955                D: serde::Deserializer<'de>,
17956            {
17957                struct GeneratedVisitor;
17958                impl serde::de::Visitor<'_> for GeneratedVisitor {
17959                    type Value = GeneratedField;
17960                    fn expecting(
17961                        &self,
17962                        formatter: &mut std::fmt::Formatter<'_>,
17963                    ) -> std::fmt::Result {
17964                        write!(formatter, "expected one of: {:?}", & FIELDS)
17965                    }
17966                    #[allow(unused_variables)]
17967                    fn visit_str<E>(
17968                        self,
17969                        value: &str,
17970                    ) -> std::result::Result<GeneratedField, E>
17971                    where
17972                        E: serde::de::Error,
17973                    {
17974                        match value {
17975                            "name" => Ok(GeneratedField::Name),
17976                            "direction" => Ok(GeneratedField::Direction),
17977                            "protocol" => Ok(GeneratedField::Protocol),
17978                            "firstPort" | "first_port" => Ok(GeneratedField::FirstPort),
17979                            "lastPort" | "last_port" => Ok(GeneratedField::LastPort),
17980                            "cidrBlock" | "cidr_block" => Ok(GeneratedField::CidrBlock),
17981                            "peerSecurityGroup" | "peer_security_group" => {
17982                                Ok(GeneratedField::PeerSecurityGroup)
17983                            }
17984                            "sameGroup" | "same_group" => Ok(GeneratedField::SameGroup),
17985                            "description" => Ok(GeneratedField::Description),
17986                            _ => Ok(GeneratedField::__SkipField__),
17987                        }
17988                    }
17989                }
17990                deserializer.deserialize_identifier(GeneratedVisitor)
17991            }
17992        }
17993        struct GeneratedVisitor;
17994        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
17995            type Value = SecurityGroupRule;
17996            fn expecting(
17997                &self,
17998                formatter: &mut std::fmt::Formatter<'_>,
17999            ) -> std::fmt::Result {
18000                formatter
18001                    .write_str("struct origincloud.network.v1beta1.SecurityGroupRule")
18002            }
18003            fn visit_map<V>(
18004                self,
18005                mut map_: V,
18006            ) -> std::result::Result<SecurityGroupRule, V::Error>
18007            where
18008                V: serde::de::MapAccess<'de>,
18009            {
18010                let mut name__ = None;
18011                let mut direction__ = None;
18012                let mut protocol__ = None;
18013                let mut first_port__ = None;
18014                let mut last_port__ = None;
18015                let mut cidr_block__ = None;
18016                let mut peer_security_group__ = None;
18017                let mut same_group__ = None;
18018                let mut description__ = None;
18019                while let Some(k) = map_.next_key()? {
18020                    match k {
18021                        GeneratedField::Name => {
18022                            if name__.is_some() {
18023                                return Err(serde::de::Error::duplicate_field("name"));
18024                            }
18025                            name__ = Some(map_.next_value()?);
18026                        }
18027                        GeneratedField::Direction => {
18028                            if direction__.is_some() {
18029                                return Err(serde::de::Error::duplicate_field("direction"));
18030                            }
18031                            direction__ = Some(
18032                                map_.next_value::<security_group_rule::Direction>()? as i32,
18033                            );
18034                        }
18035                        GeneratedField::Protocol => {
18036                            if protocol__.is_some() {
18037                                return Err(serde::de::Error::duplicate_field("protocol"));
18038                            }
18039                            protocol__ = Some(
18040                                map_.next_value::<security_group_rule::Protocol>()? as i32,
18041                            );
18042                        }
18043                        GeneratedField::FirstPort => {
18044                            if first_port__.is_some() {
18045                                return Err(serde::de::Error::duplicate_field("firstPort"));
18046                            }
18047                            first_port__ = Some(
18048                                map_
18049                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18050                                    .0,
18051                            );
18052                        }
18053                        GeneratedField::LastPort => {
18054                            if last_port__.is_some() {
18055                                return Err(serde::de::Error::duplicate_field("lastPort"));
18056                            }
18057                            last_port__ = Some(
18058                                map_
18059                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18060                                    .0,
18061                            );
18062                        }
18063                        GeneratedField::CidrBlock => {
18064                            if cidr_block__.is_some() {
18065                                return Err(serde::de::Error::duplicate_field("cidrBlock"));
18066                            }
18067                            cidr_block__ = Some(map_.next_value()?);
18068                        }
18069                        GeneratedField::PeerSecurityGroup => {
18070                            if peer_security_group__.is_some() {
18071                                return Err(
18072                                    serde::de::Error::duplicate_field("peerSecurityGroup"),
18073                                );
18074                            }
18075                            peer_security_group__ = Some(map_.next_value()?);
18076                        }
18077                        GeneratedField::SameGroup => {
18078                            if same_group__.is_some() {
18079                                return Err(serde::de::Error::duplicate_field("sameGroup"));
18080                            }
18081                            same_group__ = Some(map_.next_value()?);
18082                        }
18083                        GeneratedField::Description => {
18084                            if description__.is_some() {
18085                                return Err(
18086                                    serde::de::Error::duplicate_field("description"),
18087                                );
18088                            }
18089                            description__ = Some(map_.next_value()?);
18090                        }
18091                        GeneratedField::__SkipField__ => {
18092                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18093                        }
18094                    }
18095                }
18096                Ok(SecurityGroupRule {
18097                    name: name__.unwrap_or_default(),
18098                    direction: direction__.unwrap_or_default(),
18099                    protocol: protocol__.unwrap_or_default(),
18100                    first_port: first_port__.unwrap_or_default(),
18101                    last_port: last_port__.unwrap_or_default(),
18102                    cidr_block: cidr_block__.unwrap_or_default(),
18103                    peer_security_group: peer_security_group__.unwrap_or_default(),
18104                    same_group: same_group__.unwrap_or_default(),
18105                    description: description__.unwrap_or_default(),
18106                })
18107            }
18108        }
18109        deserializer
18110            .deserialize_struct(
18111                "origincloud.network.v1beta1.SecurityGroupRule",
18112                FIELDS,
18113                GeneratedVisitor,
18114            )
18115    }
18116}
18117impl serde::Serialize for security_group_rule::Direction {
18118    #[allow(deprecated)]
18119    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18120    where
18121        S: serde::Serializer,
18122    {
18123        let variant = match self {
18124            Self::Unspecified => "DIRECTION_UNSPECIFIED",
18125            Self::Ingress => "INGRESS",
18126            Self::Egress => "EGRESS",
18127        };
18128        serializer.serialize_str(variant)
18129    }
18130}
18131impl<'de> serde::Deserialize<'de> for security_group_rule::Direction {
18132    #[allow(deprecated)]
18133    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18134    where
18135        D: serde::Deserializer<'de>,
18136    {
18137        const FIELDS: &[&str] = &["DIRECTION_UNSPECIFIED", "INGRESS", "EGRESS"];
18138        struct GeneratedVisitor;
18139        impl serde::de::Visitor<'_> for GeneratedVisitor {
18140            type Value = security_group_rule::Direction;
18141            fn expecting(
18142                &self,
18143                formatter: &mut std::fmt::Formatter<'_>,
18144            ) -> std::fmt::Result {
18145                write!(formatter, "expected one of: {:?}", & FIELDS)
18146            }
18147            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
18148            where
18149                E: serde::de::Error,
18150            {
18151                i32::try_from(v)
18152                    .ok()
18153                    .and_then(|x| {
18154                        x
18155                            .try_into()
18156                            .ok()
18157                            .or_else(|| Some(security_group_rule::Direction::default()))
18158                    })
18159                    .ok_or_else(|| {
18160                        serde::de::Error::invalid_value(
18161                            serde::de::Unexpected::Signed(v),
18162                            &self,
18163                        )
18164                    })
18165            }
18166            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
18167            where
18168                E: serde::de::Error,
18169            {
18170                i32::try_from(v)
18171                    .ok()
18172                    .and_then(|x| {
18173                        x
18174                            .try_into()
18175                            .ok()
18176                            .or_else(|| Some(security_group_rule::Direction::default()))
18177                    })
18178                    .ok_or_else(|| {
18179                        serde::de::Error::invalid_value(
18180                            serde::de::Unexpected::Unsigned(v),
18181                            &self,
18182                        )
18183                    })
18184            }
18185            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18186            where
18187                E: serde::de::Error,
18188            {
18189                match value {
18190                    "DIRECTION_UNSPECIFIED" => {
18191                        Ok(security_group_rule::Direction::Unspecified)
18192                    }
18193                    "INGRESS" => Ok(security_group_rule::Direction::Ingress),
18194                    "EGRESS" => Ok(security_group_rule::Direction::Egress),
18195                    _ => Ok(security_group_rule::Direction::default()),
18196                }
18197            }
18198        }
18199        deserializer.deserialize_any(GeneratedVisitor)
18200    }
18201}
18202impl serde::Serialize for security_group_rule::Protocol {
18203    #[allow(deprecated)]
18204    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18205    where
18206        S: serde::Serializer,
18207    {
18208        let variant = match self {
18209            Self::Unspecified => "PROTOCOL_UNSPECIFIED",
18210            Self::All => "ALL",
18211            Self::Tcp => "TCP",
18212            Self::Udp => "UDP",
18213            Self::Icmp => "ICMP",
18214        };
18215        serializer.serialize_str(variant)
18216    }
18217}
18218impl<'de> serde::Deserialize<'de> for security_group_rule::Protocol {
18219    #[allow(deprecated)]
18220    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18221    where
18222        D: serde::Deserializer<'de>,
18223    {
18224        const FIELDS: &[&str] = &["PROTOCOL_UNSPECIFIED", "ALL", "TCP", "UDP", "ICMP"];
18225        struct GeneratedVisitor;
18226        impl serde::de::Visitor<'_> for GeneratedVisitor {
18227            type Value = security_group_rule::Protocol;
18228            fn expecting(
18229                &self,
18230                formatter: &mut std::fmt::Formatter<'_>,
18231            ) -> std::fmt::Result {
18232                write!(formatter, "expected one of: {:?}", & FIELDS)
18233            }
18234            fn visit_i64<E>(self, v: i64) -> std::result::Result<Self::Value, E>
18235            where
18236                E: serde::de::Error,
18237            {
18238                i32::try_from(v)
18239                    .ok()
18240                    .and_then(|x| {
18241                        x
18242                            .try_into()
18243                            .ok()
18244                            .or_else(|| Some(security_group_rule::Protocol::default()))
18245                    })
18246                    .ok_or_else(|| {
18247                        serde::de::Error::invalid_value(
18248                            serde::de::Unexpected::Signed(v),
18249                            &self,
18250                        )
18251                    })
18252            }
18253            fn visit_u64<E>(self, v: u64) -> std::result::Result<Self::Value, E>
18254            where
18255                E: serde::de::Error,
18256            {
18257                i32::try_from(v)
18258                    .ok()
18259                    .and_then(|x| {
18260                        x
18261                            .try_into()
18262                            .ok()
18263                            .or_else(|| Some(security_group_rule::Protocol::default()))
18264                    })
18265                    .ok_or_else(|| {
18266                        serde::de::Error::invalid_value(
18267                            serde::de::Unexpected::Unsigned(v),
18268                            &self,
18269                        )
18270                    })
18271            }
18272            fn visit_str<E>(self, value: &str) -> std::result::Result<Self::Value, E>
18273            where
18274                E: serde::de::Error,
18275            {
18276                match value {
18277                    "PROTOCOL_UNSPECIFIED" => {
18278                        Ok(security_group_rule::Protocol::Unspecified)
18279                    }
18280                    "ALL" => Ok(security_group_rule::Protocol::All),
18281                    "TCP" => Ok(security_group_rule::Protocol::Tcp),
18282                    "UDP" => Ok(security_group_rule::Protocol::Udp),
18283                    "ICMP" => Ok(security_group_rule::Protocol::Icmp),
18284                    _ => Ok(security_group_rule::Protocol::default()),
18285                }
18286            }
18287        }
18288        deserializer.deserialize_any(GeneratedVisitor)
18289    }
18290}
18291impl serde::Serialize for SetDefaultDnsPolicyRequest {
18292    #[allow(deprecated)]
18293    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18294    where
18295        S: serde::Serializer,
18296    {
18297        use serde::ser::SerializeStruct;
18298        let mut len = 0;
18299        if !self.name.is_empty() {
18300            len += 1;
18301        }
18302        if !self.request_id.is_empty() {
18303            len += 1;
18304        }
18305        let mut struct_ser = serializer
18306            .serialize_struct(
18307                "origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18308                len,
18309            )?;
18310        if !self.name.is_empty() {
18311            struct_ser.serialize_field("name", &self.name)?;
18312        }
18313        if !self.request_id.is_empty() {
18314            struct_ser.serialize_field("requestId", &self.request_id)?;
18315        }
18316        struct_ser.end()
18317    }
18318}
18319impl<'de> serde::Deserialize<'de> for SetDefaultDnsPolicyRequest {
18320    #[allow(deprecated)]
18321    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18322    where
18323        D: serde::Deserializer<'de>,
18324    {
18325        const FIELDS: &[&str] = &["name", "request_id", "requestId"];
18326        #[allow(clippy::enum_variant_names)]
18327        enum GeneratedField {
18328            Name,
18329            RequestId,
18330            __SkipField__,
18331        }
18332        impl<'de> serde::Deserialize<'de> for GeneratedField {
18333            fn deserialize<D>(
18334                deserializer: D,
18335            ) -> std::result::Result<GeneratedField, D::Error>
18336            where
18337                D: serde::Deserializer<'de>,
18338            {
18339                struct GeneratedVisitor;
18340                impl serde::de::Visitor<'_> for GeneratedVisitor {
18341                    type Value = GeneratedField;
18342                    fn expecting(
18343                        &self,
18344                        formatter: &mut std::fmt::Formatter<'_>,
18345                    ) -> std::fmt::Result {
18346                        write!(formatter, "expected one of: {:?}", & FIELDS)
18347                    }
18348                    #[allow(unused_variables)]
18349                    fn visit_str<E>(
18350                        self,
18351                        value: &str,
18352                    ) -> std::result::Result<GeneratedField, E>
18353                    where
18354                        E: serde::de::Error,
18355                    {
18356                        match value {
18357                            "name" => Ok(GeneratedField::Name),
18358                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
18359                            _ => Ok(GeneratedField::__SkipField__),
18360                        }
18361                    }
18362                }
18363                deserializer.deserialize_identifier(GeneratedVisitor)
18364            }
18365        }
18366        struct GeneratedVisitor;
18367        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18368            type Value = SetDefaultDnsPolicyRequest;
18369            fn expecting(
18370                &self,
18371                formatter: &mut std::fmt::Formatter<'_>,
18372            ) -> std::fmt::Result {
18373                formatter
18374                    .write_str(
18375                        "struct origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18376                    )
18377            }
18378            fn visit_map<V>(
18379                self,
18380                mut map_: V,
18381            ) -> std::result::Result<SetDefaultDnsPolicyRequest, V::Error>
18382            where
18383                V: serde::de::MapAccess<'de>,
18384            {
18385                let mut name__ = None;
18386                let mut request_id__ = None;
18387                while let Some(k) = map_.next_key()? {
18388                    match k {
18389                        GeneratedField::Name => {
18390                            if name__.is_some() {
18391                                return Err(serde::de::Error::duplicate_field("name"));
18392                            }
18393                            name__ = Some(map_.next_value()?);
18394                        }
18395                        GeneratedField::RequestId => {
18396                            if request_id__.is_some() {
18397                                return Err(serde::de::Error::duplicate_field("requestId"));
18398                            }
18399                            request_id__ = Some(map_.next_value()?);
18400                        }
18401                        GeneratedField::__SkipField__ => {
18402                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18403                        }
18404                    }
18405                }
18406                Ok(SetDefaultDnsPolicyRequest {
18407                    name: name__.unwrap_or_default(),
18408                    request_id: request_id__.unwrap_or_default(),
18409                })
18410            }
18411        }
18412        deserializer
18413            .deserialize_struct(
18414                "origincloud.network.v1beta1.SetDefaultDnsPolicyRequest",
18415                FIELDS,
18416                GeneratedVisitor,
18417            )
18418    }
18419}
18420impl serde::Serialize for Subnet {
18421    #[allow(deprecated)]
18422    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18423    where
18424        S: serde::Serializer,
18425    {
18426        use serde::ser::SerializeStruct;
18427        let mut len = 0;
18428        if !self.name.is_empty() {
18429            len += 1;
18430        }
18431        if !self.urn.is_empty() {
18432            len += 1;
18433        }
18434        if !self.vpc.is_empty() {
18435            len += 1;
18436        }
18437        if !self.route_table.is_empty() {
18438            len += 1;
18439        }
18440        if !self.acl.is_empty() {
18441            len += 1;
18442        }
18443        if self.auto_assign_public_ip {
18444            len += 1;
18445        }
18446        if !self.ipv4_cidr_block.is_empty() {
18447            len += 1;
18448        }
18449        if !self.ipv6_cidr_block.is_empty() {
18450            len += 1;
18451        }
18452        if !self.ipv4_gateway.is_empty() {
18453            len += 1;
18454        }
18455        if !self.ipv6_gateway.is_empty() {
18456            len += 1;
18457        }
18458        if !self.ipv4_dns_servers.is_empty() {
18459            len += 1;
18460        }
18461        if !self.ipv6_dns_servers.is_empty() {
18462            len += 1;
18463        }
18464        if self.available_ipv4_address_count != 0 {
18465            len += 1;
18466        }
18467        if self.create_time.is_some() {
18468            len += 1;
18469        }
18470        if !self.creator.is_empty() {
18471            len += 1;
18472        }
18473        if !self.tags.is_empty() {
18474            len += 1;
18475        }
18476        let mut struct_ser = serializer
18477            .serialize_struct("origincloud.network.v1beta1.Subnet", len)?;
18478        if !self.name.is_empty() {
18479            struct_ser.serialize_field("name", &self.name)?;
18480        }
18481        if !self.urn.is_empty() {
18482            struct_ser.serialize_field("urn", &self.urn)?;
18483        }
18484        if !self.vpc.is_empty() {
18485            struct_ser.serialize_field("vpc", &self.vpc)?;
18486        }
18487        if !self.route_table.is_empty() {
18488            struct_ser.serialize_field("routeTable", &self.route_table)?;
18489        }
18490        if !self.acl.is_empty() {
18491            struct_ser.serialize_field("acl", &self.acl)?;
18492        }
18493        if self.auto_assign_public_ip {
18494            struct_ser
18495                .serialize_field("autoAssignPublicIp", &self.auto_assign_public_ip)?;
18496        }
18497        if !self.ipv4_cidr_block.is_empty() {
18498            struct_ser.serialize_field("ipv4CidrBlock", &self.ipv4_cidr_block)?;
18499        }
18500        if !self.ipv6_cidr_block.is_empty() {
18501            struct_ser.serialize_field("ipv6CidrBlock", &self.ipv6_cidr_block)?;
18502        }
18503        if !self.ipv4_gateway.is_empty() {
18504            struct_ser.serialize_field("ipv4Gateway", &self.ipv4_gateway)?;
18505        }
18506        if !self.ipv6_gateway.is_empty() {
18507            struct_ser.serialize_field("ipv6Gateway", &self.ipv6_gateway)?;
18508        }
18509        if !self.ipv4_dns_servers.is_empty() {
18510            struct_ser.serialize_field("ipv4DnsServers", &self.ipv4_dns_servers)?;
18511        }
18512        if !self.ipv6_dns_servers.is_empty() {
18513            struct_ser.serialize_field("ipv6DnsServers", &self.ipv6_dns_servers)?;
18514        }
18515        if self.available_ipv4_address_count != 0 {
18516            #[allow(clippy::needless_borrow)]
18517            #[allow(clippy::needless_borrows_for_generic_args)]
18518            struct_ser
18519                .serialize_field(
18520                    "availableIpv4AddressCount",
18521                    ToString::to_string(&self.available_ipv4_address_count).as_str(),
18522                )?;
18523        }
18524        if let Some(v) = self.create_time.as_ref() {
18525            struct_ser.serialize_field("createTime", v)?;
18526        }
18527        if !self.creator.is_empty() {
18528            struct_ser.serialize_field("creator", &self.creator)?;
18529        }
18530        if !self.tags.is_empty() {
18531            struct_ser.serialize_field("tags", &self.tags)?;
18532        }
18533        struct_ser.end()
18534    }
18535}
18536impl<'de> serde::Deserialize<'de> for Subnet {
18537    #[allow(deprecated)]
18538    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18539    where
18540        D: serde::Deserializer<'de>,
18541    {
18542        const FIELDS: &[&str] = &[
18543            "name",
18544            "urn",
18545            "vpc",
18546            "route_table",
18547            "routeTable",
18548            "acl",
18549            "auto_assign_public_ip",
18550            "autoAssignPublicIp",
18551            "ipv4_cidr_block",
18552            "ipv4CidrBlock",
18553            "ipv6_cidr_block",
18554            "ipv6CidrBlock",
18555            "ipv4_gateway",
18556            "ipv4Gateway",
18557            "ipv6_gateway",
18558            "ipv6Gateway",
18559            "ipv4_dns_servers",
18560            "ipv4DnsServers",
18561            "ipv6_dns_servers",
18562            "ipv6DnsServers",
18563            "available_ipv4_address_count",
18564            "availableIpv4AddressCount",
18565            "create_time",
18566            "createTime",
18567            "creator",
18568            "tags",
18569        ];
18570        #[allow(clippy::enum_variant_names)]
18571        enum GeneratedField {
18572            Name,
18573            Urn,
18574            Vpc,
18575            RouteTable,
18576            Acl,
18577            AutoAssignPublicIp,
18578            Ipv4CidrBlock,
18579            Ipv6CidrBlock,
18580            Ipv4Gateway,
18581            Ipv6Gateway,
18582            Ipv4DnsServers,
18583            Ipv6DnsServers,
18584            AvailableIpv4AddressCount,
18585            CreateTime,
18586            Creator,
18587            Tags,
18588            __SkipField__,
18589        }
18590        impl<'de> serde::Deserialize<'de> for GeneratedField {
18591            fn deserialize<D>(
18592                deserializer: D,
18593            ) -> std::result::Result<GeneratedField, D::Error>
18594            where
18595                D: serde::Deserializer<'de>,
18596            {
18597                struct GeneratedVisitor;
18598                impl serde::de::Visitor<'_> for GeneratedVisitor {
18599                    type Value = GeneratedField;
18600                    fn expecting(
18601                        &self,
18602                        formatter: &mut std::fmt::Formatter<'_>,
18603                    ) -> std::fmt::Result {
18604                        write!(formatter, "expected one of: {:?}", & FIELDS)
18605                    }
18606                    #[allow(unused_variables)]
18607                    fn visit_str<E>(
18608                        self,
18609                        value: &str,
18610                    ) -> std::result::Result<GeneratedField, E>
18611                    where
18612                        E: serde::de::Error,
18613                    {
18614                        match value {
18615                            "name" => Ok(GeneratedField::Name),
18616                            "urn" => Ok(GeneratedField::Urn),
18617                            "vpc" => Ok(GeneratedField::Vpc),
18618                            "routeTable" | "route_table" => {
18619                                Ok(GeneratedField::RouteTable)
18620                            }
18621                            "acl" => Ok(GeneratedField::Acl),
18622                            "autoAssignPublicIp" | "auto_assign_public_ip" => {
18623                                Ok(GeneratedField::AutoAssignPublicIp)
18624                            }
18625                            "ipv4CidrBlock" | "ipv4_cidr_block" => {
18626                                Ok(GeneratedField::Ipv4CidrBlock)
18627                            }
18628                            "ipv6CidrBlock" | "ipv6_cidr_block" => {
18629                                Ok(GeneratedField::Ipv6CidrBlock)
18630                            }
18631                            "ipv4Gateway" | "ipv4_gateway" => {
18632                                Ok(GeneratedField::Ipv4Gateway)
18633                            }
18634                            "ipv6Gateway" | "ipv6_gateway" => {
18635                                Ok(GeneratedField::Ipv6Gateway)
18636                            }
18637                            "ipv4DnsServers" | "ipv4_dns_servers" => {
18638                                Ok(GeneratedField::Ipv4DnsServers)
18639                            }
18640                            "ipv6DnsServers" | "ipv6_dns_servers" => {
18641                                Ok(GeneratedField::Ipv6DnsServers)
18642                            }
18643                            "availableIpv4AddressCount"
18644                            | "available_ipv4_address_count" => {
18645                                Ok(GeneratedField::AvailableIpv4AddressCount)
18646                            }
18647                            "createTime" | "create_time" => {
18648                                Ok(GeneratedField::CreateTime)
18649                            }
18650                            "creator" => Ok(GeneratedField::Creator),
18651                            "tags" => Ok(GeneratedField::Tags),
18652                            _ => Ok(GeneratedField::__SkipField__),
18653                        }
18654                    }
18655                }
18656                deserializer.deserialize_identifier(GeneratedVisitor)
18657            }
18658        }
18659        struct GeneratedVisitor;
18660        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18661            type Value = Subnet;
18662            fn expecting(
18663                &self,
18664                formatter: &mut std::fmt::Formatter<'_>,
18665            ) -> std::fmt::Result {
18666                formatter.write_str("struct origincloud.network.v1beta1.Subnet")
18667            }
18668            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Subnet, V::Error>
18669            where
18670                V: serde::de::MapAccess<'de>,
18671            {
18672                let mut name__ = None;
18673                let mut urn__ = None;
18674                let mut vpc__ = None;
18675                let mut route_table__ = None;
18676                let mut acl__ = None;
18677                let mut auto_assign_public_ip__ = None;
18678                let mut ipv4_cidr_block__ = None;
18679                let mut ipv6_cidr_block__ = None;
18680                let mut ipv4_gateway__ = None;
18681                let mut ipv6_gateway__ = None;
18682                let mut ipv4_dns_servers__ = None;
18683                let mut ipv6_dns_servers__ = None;
18684                let mut available_ipv4_address_count__ = None;
18685                let mut create_time__ = None;
18686                let mut creator__ = None;
18687                let mut tags__ = None;
18688                while let Some(k) = map_.next_key()? {
18689                    match k {
18690                        GeneratedField::Name => {
18691                            if name__.is_some() {
18692                                return Err(serde::de::Error::duplicate_field("name"));
18693                            }
18694                            name__ = Some(map_.next_value()?);
18695                        }
18696                        GeneratedField::Urn => {
18697                            if urn__.is_some() {
18698                                return Err(serde::de::Error::duplicate_field("urn"));
18699                            }
18700                            urn__ = Some(map_.next_value()?);
18701                        }
18702                        GeneratedField::Vpc => {
18703                            if vpc__.is_some() {
18704                                return Err(serde::de::Error::duplicate_field("vpc"));
18705                            }
18706                            vpc__ = Some(map_.next_value()?);
18707                        }
18708                        GeneratedField::RouteTable => {
18709                            if route_table__.is_some() {
18710                                return Err(serde::de::Error::duplicate_field("routeTable"));
18711                            }
18712                            route_table__ = Some(map_.next_value()?);
18713                        }
18714                        GeneratedField::Acl => {
18715                            if acl__.is_some() {
18716                                return Err(serde::de::Error::duplicate_field("acl"));
18717                            }
18718                            acl__ = Some(map_.next_value()?);
18719                        }
18720                        GeneratedField::AutoAssignPublicIp => {
18721                            if auto_assign_public_ip__.is_some() {
18722                                return Err(
18723                                    serde::de::Error::duplicate_field("autoAssignPublicIp"),
18724                                );
18725                            }
18726                            auto_assign_public_ip__ = Some(map_.next_value()?);
18727                        }
18728                        GeneratedField::Ipv4CidrBlock => {
18729                            if ipv4_cidr_block__.is_some() {
18730                                return Err(
18731                                    serde::de::Error::duplicate_field("ipv4CidrBlock"),
18732                                );
18733                            }
18734                            ipv4_cidr_block__ = Some(map_.next_value()?);
18735                        }
18736                        GeneratedField::Ipv6CidrBlock => {
18737                            if ipv6_cidr_block__.is_some() {
18738                                return Err(
18739                                    serde::de::Error::duplicate_field("ipv6CidrBlock"),
18740                                );
18741                            }
18742                            ipv6_cidr_block__ = Some(map_.next_value()?);
18743                        }
18744                        GeneratedField::Ipv4Gateway => {
18745                            if ipv4_gateway__.is_some() {
18746                                return Err(
18747                                    serde::de::Error::duplicate_field("ipv4Gateway"),
18748                                );
18749                            }
18750                            ipv4_gateway__ = Some(map_.next_value()?);
18751                        }
18752                        GeneratedField::Ipv6Gateway => {
18753                            if ipv6_gateway__.is_some() {
18754                                return Err(
18755                                    serde::de::Error::duplicate_field("ipv6Gateway"),
18756                                );
18757                            }
18758                            ipv6_gateway__ = Some(map_.next_value()?);
18759                        }
18760                        GeneratedField::Ipv4DnsServers => {
18761                            if ipv4_dns_servers__.is_some() {
18762                                return Err(
18763                                    serde::de::Error::duplicate_field("ipv4DnsServers"),
18764                                );
18765                            }
18766                            ipv4_dns_servers__ = Some(map_.next_value()?);
18767                        }
18768                        GeneratedField::Ipv6DnsServers => {
18769                            if ipv6_dns_servers__.is_some() {
18770                                return Err(
18771                                    serde::de::Error::duplicate_field("ipv6DnsServers"),
18772                                );
18773                            }
18774                            ipv6_dns_servers__ = Some(map_.next_value()?);
18775                        }
18776                        GeneratedField::AvailableIpv4AddressCount => {
18777                            if available_ipv4_address_count__.is_some() {
18778                                return Err(
18779                                    serde::de::Error::duplicate_field(
18780                                        "availableIpv4AddressCount",
18781                                    ),
18782                                );
18783                            }
18784                            available_ipv4_address_count__ = Some(
18785                                map_
18786                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
18787                                    .0,
18788                            );
18789                        }
18790                        GeneratedField::CreateTime => {
18791                            if create_time__.is_some() {
18792                                return Err(serde::de::Error::duplicate_field("createTime"));
18793                            }
18794                            create_time__ = map_.next_value()?;
18795                        }
18796                        GeneratedField::Creator => {
18797                            if creator__.is_some() {
18798                                return Err(serde::de::Error::duplicate_field("creator"));
18799                            }
18800                            creator__ = Some(map_.next_value()?);
18801                        }
18802                        GeneratedField::Tags => {
18803                            if tags__.is_some() {
18804                                return Err(serde::de::Error::duplicate_field("tags"));
18805                            }
18806                            tags__ = Some(
18807                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
18808                            );
18809                        }
18810                        GeneratedField::__SkipField__ => {
18811                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18812                        }
18813                    }
18814                }
18815                Ok(Subnet {
18816                    name: name__.unwrap_or_default(),
18817                    urn: urn__.unwrap_or_default(),
18818                    vpc: vpc__.unwrap_or_default(),
18819                    route_table: route_table__.unwrap_or_default(),
18820                    acl: acl__.unwrap_or_default(),
18821                    auto_assign_public_ip: auto_assign_public_ip__.unwrap_or_default(),
18822                    ipv4_cidr_block: ipv4_cidr_block__.unwrap_or_default(),
18823                    ipv6_cidr_block: ipv6_cidr_block__.unwrap_or_default(),
18824                    ipv4_gateway: ipv4_gateway__.unwrap_or_default(),
18825                    ipv6_gateway: ipv6_gateway__.unwrap_or_default(),
18826                    ipv4_dns_servers: ipv4_dns_servers__.unwrap_or_default(),
18827                    ipv6_dns_servers: ipv6_dns_servers__.unwrap_or_default(),
18828                    available_ipv4_address_count: available_ipv4_address_count__
18829                        .unwrap_or_default(),
18830                    create_time: create_time__,
18831                    creator: creator__.unwrap_or_default(),
18832                    tags: tags__.unwrap_or_default(),
18833                })
18834            }
18835        }
18836        deserializer
18837            .deserialize_struct(
18838                "origincloud.network.v1beta1.Subnet",
18839                FIELDS,
18840                GeneratedVisitor,
18841            )
18842    }
18843}
18844impl serde::Serialize for UpdateAclRequest {
18845    #[allow(deprecated)]
18846    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18847    where
18848        S: serde::Serializer,
18849    {
18850        use serde::ser::SerializeStruct;
18851        let mut len = 0;
18852        if self.acl.is_some() {
18853            len += 1;
18854        }
18855        if self.update_mask.is_some() {
18856            len += 1;
18857        }
18858        if !self.request_id.is_empty() {
18859            len += 1;
18860        }
18861        let mut struct_ser = serializer
18862            .serialize_struct("origincloud.network.v1beta1.UpdateAclRequest", len)?;
18863        if let Some(v) = self.acl.as_ref() {
18864            struct_ser.serialize_field("acl", v)?;
18865        }
18866        if let Some(v) = self.update_mask.as_ref() {
18867            struct_ser.serialize_field("updateMask", v)?;
18868        }
18869        if !self.request_id.is_empty() {
18870            struct_ser.serialize_field("requestId", &self.request_id)?;
18871        }
18872        struct_ser.end()
18873    }
18874}
18875impl<'de> serde::Deserialize<'de> for UpdateAclRequest {
18876    #[allow(deprecated)]
18877    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
18878    where
18879        D: serde::Deserializer<'de>,
18880    {
18881        const FIELDS: &[&str] = &[
18882            "acl",
18883            "update_mask",
18884            "updateMask",
18885            "request_id",
18886            "requestId",
18887        ];
18888        #[allow(clippy::enum_variant_names)]
18889        enum GeneratedField {
18890            Acl,
18891            UpdateMask,
18892            RequestId,
18893            __SkipField__,
18894        }
18895        impl<'de> serde::Deserialize<'de> for GeneratedField {
18896            fn deserialize<D>(
18897                deserializer: D,
18898            ) -> std::result::Result<GeneratedField, D::Error>
18899            where
18900                D: serde::Deserializer<'de>,
18901            {
18902                struct GeneratedVisitor;
18903                impl serde::de::Visitor<'_> for GeneratedVisitor {
18904                    type Value = GeneratedField;
18905                    fn expecting(
18906                        &self,
18907                        formatter: &mut std::fmt::Formatter<'_>,
18908                    ) -> std::fmt::Result {
18909                        write!(formatter, "expected one of: {:?}", & FIELDS)
18910                    }
18911                    #[allow(unused_variables)]
18912                    fn visit_str<E>(
18913                        self,
18914                        value: &str,
18915                    ) -> std::result::Result<GeneratedField, E>
18916                    where
18917                        E: serde::de::Error,
18918                    {
18919                        match value {
18920                            "acl" => Ok(GeneratedField::Acl),
18921                            "updateMask" | "update_mask" => {
18922                                Ok(GeneratedField::UpdateMask)
18923                            }
18924                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
18925                            _ => Ok(GeneratedField::__SkipField__),
18926                        }
18927                    }
18928                }
18929                deserializer.deserialize_identifier(GeneratedVisitor)
18930            }
18931        }
18932        struct GeneratedVisitor;
18933        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
18934            type Value = UpdateAclRequest;
18935            fn expecting(
18936                &self,
18937                formatter: &mut std::fmt::Formatter<'_>,
18938            ) -> std::fmt::Result {
18939                formatter
18940                    .write_str("struct origincloud.network.v1beta1.UpdateAclRequest")
18941            }
18942            fn visit_map<V>(
18943                self,
18944                mut map_: V,
18945            ) -> std::result::Result<UpdateAclRequest, V::Error>
18946            where
18947                V: serde::de::MapAccess<'de>,
18948            {
18949                let mut acl__ = None;
18950                let mut update_mask__ = None;
18951                let mut request_id__ = None;
18952                while let Some(k) = map_.next_key()? {
18953                    match k {
18954                        GeneratedField::Acl => {
18955                            if acl__.is_some() {
18956                                return Err(serde::de::Error::duplicate_field("acl"));
18957                            }
18958                            acl__ = map_.next_value()?;
18959                        }
18960                        GeneratedField::UpdateMask => {
18961                            if update_mask__.is_some() {
18962                                return Err(serde::de::Error::duplicate_field("updateMask"));
18963                            }
18964                            update_mask__ = map_.next_value()?;
18965                        }
18966                        GeneratedField::RequestId => {
18967                            if request_id__.is_some() {
18968                                return Err(serde::de::Error::duplicate_field("requestId"));
18969                            }
18970                            request_id__ = Some(map_.next_value()?);
18971                        }
18972                        GeneratedField::__SkipField__ => {
18973                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
18974                        }
18975                    }
18976                }
18977                Ok(UpdateAclRequest {
18978                    acl: acl__,
18979                    update_mask: update_mask__,
18980                    request_id: request_id__.unwrap_or_default(),
18981                })
18982            }
18983        }
18984        deserializer
18985            .deserialize_struct(
18986                "origincloud.network.v1beta1.UpdateAclRequest",
18987                FIELDS,
18988                GeneratedVisitor,
18989            )
18990    }
18991}
18992impl serde::Serialize for UpdateDnsPolicyRequest {
18993    #[allow(deprecated)]
18994    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
18995    where
18996        S: serde::Serializer,
18997    {
18998        use serde::ser::SerializeStruct;
18999        let mut len = 0;
19000        if self.dns_policy.is_some() {
19001            len += 1;
19002        }
19003        if self.update_mask.is_some() {
19004            len += 1;
19005        }
19006        if !self.request_id.is_empty() {
19007            len += 1;
19008        }
19009        let mut struct_ser = serializer
19010            .serialize_struct(
19011                "origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19012                len,
19013            )?;
19014        if let Some(v) = self.dns_policy.as_ref() {
19015            struct_ser.serialize_field("dnsPolicy", v)?;
19016        }
19017        if let Some(v) = self.update_mask.as_ref() {
19018            struct_ser.serialize_field("updateMask", v)?;
19019        }
19020        if !self.request_id.is_empty() {
19021            struct_ser.serialize_field("requestId", &self.request_id)?;
19022        }
19023        struct_ser.end()
19024    }
19025}
19026impl<'de> serde::Deserialize<'de> for UpdateDnsPolicyRequest {
19027    #[allow(deprecated)]
19028    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19029    where
19030        D: serde::Deserializer<'de>,
19031    {
19032        const FIELDS: &[&str] = &[
19033            "dns_policy",
19034            "dnsPolicy",
19035            "update_mask",
19036            "updateMask",
19037            "request_id",
19038            "requestId",
19039        ];
19040        #[allow(clippy::enum_variant_names)]
19041        enum GeneratedField {
19042            DnsPolicy,
19043            UpdateMask,
19044            RequestId,
19045            __SkipField__,
19046        }
19047        impl<'de> serde::Deserialize<'de> for GeneratedField {
19048            fn deserialize<D>(
19049                deserializer: D,
19050            ) -> std::result::Result<GeneratedField, D::Error>
19051            where
19052                D: serde::Deserializer<'de>,
19053            {
19054                struct GeneratedVisitor;
19055                impl serde::de::Visitor<'_> for GeneratedVisitor {
19056                    type Value = GeneratedField;
19057                    fn expecting(
19058                        &self,
19059                        formatter: &mut std::fmt::Formatter<'_>,
19060                    ) -> std::fmt::Result {
19061                        write!(formatter, "expected one of: {:?}", & FIELDS)
19062                    }
19063                    #[allow(unused_variables)]
19064                    fn visit_str<E>(
19065                        self,
19066                        value: &str,
19067                    ) -> std::result::Result<GeneratedField, E>
19068                    where
19069                        E: serde::de::Error,
19070                    {
19071                        match value {
19072                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
19073                            "updateMask" | "update_mask" => {
19074                                Ok(GeneratedField::UpdateMask)
19075                            }
19076                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19077                            _ => Ok(GeneratedField::__SkipField__),
19078                        }
19079                    }
19080                }
19081                deserializer.deserialize_identifier(GeneratedVisitor)
19082            }
19083        }
19084        struct GeneratedVisitor;
19085        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19086            type Value = UpdateDnsPolicyRequest;
19087            fn expecting(
19088                &self,
19089                formatter: &mut std::fmt::Formatter<'_>,
19090            ) -> std::fmt::Result {
19091                formatter
19092                    .write_str(
19093                        "struct origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19094                    )
19095            }
19096            fn visit_map<V>(
19097                self,
19098                mut map_: V,
19099            ) -> std::result::Result<UpdateDnsPolicyRequest, V::Error>
19100            where
19101                V: serde::de::MapAccess<'de>,
19102            {
19103                let mut dns_policy__ = None;
19104                let mut update_mask__ = None;
19105                let mut request_id__ = None;
19106                while let Some(k) = map_.next_key()? {
19107                    match k {
19108                        GeneratedField::DnsPolicy => {
19109                            if dns_policy__.is_some() {
19110                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
19111                            }
19112                            dns_policy__ = map_.next_value()?;
19113                        }
19114                        GeneratedField::UpdateMask => {
19115                            if update_mask__.is_some() {
19116                                return Err(serde::de::Error::duplicate_field("updateMask"));
19117                            }
19118                            update_mask__ = map_.next_value()?;
19119                        }
19120                        GeneratedField::RequestId => {
19121                            if request_id__.is_some() {
19122                                return Err(serde::de::Error::duplicate_field("requestId"));
19123                            }
19124                            request_id__ = Some(map_.next_value()?);
19125                        }
19126                        GeneratedField::__SkipField__ => {
19127                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19128                        }
19129                    }
19130                }
19131                Ok(UpdateDnsPolicyRequest {
19132                    dns_policy: dns_policy__,
19133                    update_mask: update_mask__,
19134                    request_id: request_id__.unwrap_or_default(),
19135                })
19136            }
19137        }
19138        deserializer
19139            .deserialize_struct(
19140                "origincloud.network.v1beta1.UpdateDnsPolicyRequest",
19141                FIELDS,
19142                GeneratedVisitor,
19143            )
19144    }
19145}
19146impl serde::Serialize for UpdateFloatingIpRequest {
19147    #[allow(deprecated)]
19148    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19149    where
19150        S: serde::Serializer,
19151    {
19152        use serde::ser::SerializeStruct;
19153        let mut len = 0;
19154        if self.floating_ip.is_some() {
19155            len += 1;
19156        }
19157        if self.update_mask.is_some() {
19158            len += 1;
19159        }
19160        if !self.request_id.is_empty() {
19161            len += 1;
19162        }
19163        let mut struct_ser = serializer
19164            .serialize_struct(
19165                "origincloud.network.v1beta1.UpdateFloatingIpRequest",
19166                len,
19167            )?;
19168        if let Some(v) = self.floating_ip.as_ref() {
19169            struct_ser.serialize_field("floatingIp", v)?;
19170        }
19171        if let Some(v) = self.update_mask.as_ref() {
19172            struct_ser.serialize_field("updateMask", v)?;
19173        }
19174        if !self.request_id.is_empty() {
19175            struct_ser.serialize_field("requestId", &self.request_id)?;
19176        }
19177        struct_ser.end()
19178    }
19179}
19180impl<'de> serde::Deserialize<'de> for UpdateFloatingIpRequest {
19181    #[allow(deprecated)]
19182    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19183    where
19184        D: serde::Deserializer<'de>,
19185    {
19186        const FIELDS: &[&str] = &[
19187            "floating_ip",
19188            "floatingIp",
19189            "update_mask",
19190            "updateMask",
19191            "request_id",
19192            "requestId",
19193        ];
19194        #[allow(clippy::enum_variant_names)]
19195        enum GeneratedField {
19196            FloatingIp,
19197            UpdateMask,
19198            RequestId,
19199            __SkipField__,
19200        }
19201        impl<'de> serde::Deserialize<'de> for GeneratedField {
19202            fn deserialize<D>(
19203                deserializer: D,
19204            ) -> std::result::Result<GeneratedField, D::Error>
19205            where
19206                D: serde::Deserializer<'de>,
19207            {
19208                struct GeneratedVisitor;
19209                impl serde::de::Visitor<'_> for GeneratedVisitor {
19210                    type Value = GeneratedField;
19211                    fn expecting(
19212                        &self,
19213                        formatter: &mut std::fmt::Formatter<'_>,
19214                    ) -> std::fmt::Result {
19215                        write!(formatter, "expected one of: {:?}", & FIELDS)
19216                    }
19217                    #[allow(unused_variables)]
19218                    fn visit_str<E>(
19219                        self,
19220                        value: &str,
19221                    ) -> std::result::Result<GeneratedField, E>
19222                    where
19223                        E: serde::de::Error,
19224                    {
19225                        match value {
19226                            "floatingIp" | "floating_ip" => {
19227                                Ok(GeneratedField::FloatingIp)
19228                            }
19229                            "updateMask" | "update_mask" => {
19230                                Ok(GeneratedField::UpdateMask)
19231                            }
19232                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19233                            _ => Ok(GeneratedField::__SkipField__),
19234                        }
19235                    }
19236                }
19237                deserializer.deserialize_identifier(GeneratedVisitor)
19238            }
19239        }
19240        struct GeneratedVisitor;
19241        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19242            type Value = UpdateFloatingIpRequest;
19243            fn expecting(
19244                &self,
19245                formatter: &mut std::fmt::Formatter<'_>,
19246            ) -> std::fmt::Result {
19247                formatter
19248                    .write_str(
19249                        "struct origincloud.network.v1beta1.UpdateFloatingIpRequest",
19250                    )
19251            }
19252            fn visit_map<V>(
19253                self,
19254                mut map_: V,
19255            ) -> std::result::Result<UpdateFloatingIpRequest, V::Error>
19256            where
19257                V: serde::de::MapAccess<'de>,
19258            {
19259                let mut floating_ip__ = None;
19260                let mut update_mask__ = None;
19261                let mut request_id__ = None;
19262                while let Some(k) = map_.next_key()? {
19263                    match k {
19264                        GeneratedField::FloatingIp => {
19265                            if floating_ip__.is_some() {
19266                                return Err(serde::de::Error::duplicate_field("floatingIp"));
19267                            }
19268                            floating_ip__ = map_.next_value()?;
19269                        }
19270                        GeneratedField::UpdateMask => {
19271                            if update_mask__.is_some() {
19272                                return Err(serde::de::Error::duplicate_field("updateMask"));
19273                            }
19274                            update_mask__ = map_.next_value()?;
19275                        }
19276                        GeneratedField::RequestId => {
19277                            if request_id__.is_some() {
19278                                return Err(serde::de::Error::duplicate_field("requestId"));
19279                            }
19280                            request_id__ = Some(map_.next_value()?);
19281                        }
19282                        GeneratedField::__SkipField__ => {
19283                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19284                        }
19285                    }
19286                }
19287                Ok(UpdateFloatingIpRequest {
19288                    floating_ip: floating_ip__,
19289                    update_mask: update_mask__,
19290                    request_id: request_id__.unwrap_or_default(),
19291                })
19292            }
19293        }
19294        deserializer
19295            .deserialize_struct(
19296                "origincloud.network.v1beta1.UpdateFloatingIpRequest",
19297                FIELDS,
19298                GeneratedVisitor,
19299            )
19300    }
19301}
19302impl serde::Serialize for UpdateInternetGatewayRequest {
19303    #[allow(deprecated)]
19304    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19305    where
19306        S: serde::Serializer,
19307    {
19308        use serde::ser::SerializeStruct;
19309        let mut len = 0;
19310        if self.internet_gateway.is_some() {
19311            len += 1;
19312        }
19313        if self.update_mask.is_some() {
19314            len += 1;
19315        }
19316        if !self.request_id.is_empty() {
19317            len += 1;
19318        }
19319        let mut struct_ser = serializer
19320            .serialize_struct(
19321                "origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19322                len,
19323            )?;
19324        if let Some(v) = self.internet_gateway.as_ref() {
19325            struct_ser.serialize_field("internetGateway", v)?;
19326        }
19327        if let Some(v) = self.update_mask.as_ref() {
19328            struct_ser.serialize_field("updateMask", v)?;
19329        }
19330        if !self.request_id.is_empty() {
19331            struct_ser.serialize_field("requestId", &self.request_id)?;
19332        }
19333        struct_ser.end()
19334    }
19335}
19336impl<'de> serde::Deserialize<'de> for UpdateInternetGatewayRequest {
19337    #[allow(deprecated)]
19338    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19339    where
19340        D: serde::Deserializer<'de>,
19341    {
19342        const FIELDS: &[&str] = &[
19343            "internet_gateway",
19344            "internetGateway",
19345            "update_mask",
19346            "updateMask",
19347            "request_id",
19348            "requestId",
19349        ];
19350        #[allow(clippy::enum_variant_names)]
19351        enum GeneratedField {
19352            InternetGateway,
19353            UpdateMask,
19354            RequestId,
19355            __SkipField__,
19356        }
19357        impl<'de> serde::Deserialize<'de> for GeneratedField {
19358            fn deserialize<D>(
19359                deserializer: D,
19360            ) -> std::result::Result<GeneratedField, D::Error>
19361            where
19362                D: serde::Deserializer<'de>,
19363            {
19364                struct GeneratedVisitor;
19365                impl serde::de::Visitor<'_> for GeneratedVisitor {
19366                    type Value = GeneratedField;
19367                    fn expecting(
19368                        &self,
19369                        formatter: &mut std::fmt::Formatter<'_>,
19370                    ) -> std::fmt::Result {
19371                        write!(formatter, "expected one of: {:?}", & FIELDS)
19372                    }
19373                    #[allow(unused_variables)]
19374                    fn visit_str<E>(
19375                        self,
19376                        value: &str,
19377                    ) -> std::result::Result<GeneratedField, E>
19378                    where
19379                        E: serde::de::Error,
19380                    {
19381                        match value {
19382                            "internetGateway" | "internet_gateway" => {
19383                                Ok(GeneratedField::InternetGateway)
19384                            }
19385                            "updateMask" | "update_mask" => {
19386                                Ok(GeneratedField::UpdateMask)
19387                            }
19388                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19389                            _ => Ok(GeneratedField::__SkipField__),
19390                        }
19391                    }
19392                }
19393                deserializer.deserialize_identifier(GeneratedVisitor)
19394            }
19395        }
19396        struct GeneratedVisitor;
19397        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19398            type Value = UpdateInternetGatewayRequest;
19399            fn expecting(
19400                &self,
19401                formatter: &mut std::fmt::Formatter<'_>,
19402            ) -> std::fmt::Result {
19403                formatter
19404                    .write_str(
19405                        "struct origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19406                    )
19407            }
19408            fn visit_map<V>(
19409                self,
19410                mut map_: V,
19411            ) -> std::result::Result<UpdateInternetGatewayRequest, V::Error>
19412            where
19413                V: serde::de::MapAccess<'de>,
19414            {
19415                let mut internet_gateway__ = None;
19416                let mut update_mask__ = None;
19417                let mut request_id__ = None;
19418                while let Some(k) = map_.next_key()? {
19419                    match k {
19420                        GeneratedField::InternetGateway => {
19421                            if internet_gateway__.is_some() {
19422                                return Err(
19423                                    serde::de::Error::duplicate_field("internetGateway"),
19424                                );
19425                            }
19426                            internet_gateway__ = map_.next_value()?;
19427                        }
19428                        GeneratedField::UpdateMask => {
19429                            if update_mask__.is_some() {
19430                                return Err(serde::de::Error::duplicate_field("updateMask"));
19431                            }
19432                            update_mask__ = map_.next_value()?;
19433                        }
19434                        GeneratedField::RequestId => {
19435                            if request_id__.is_some() {
19436                                return Err(serde::de::Error::duplicate_field("requestId"));
19437                            }
19438                            request_id__ = Some(map_.next_value()?);
19439                        }
19440                        GeneratedField::__SkipField__ => {
19441                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19442                        }
19443                    }
19444                }
19445                Ok(UpdateInternetGatewayRequest {
19446                    internet_gateway: internet_gateway__,
19447                    update_mask: update_mask__,
19448                    request_id: request_id__.unwrap_or_default(),
19449                })
19450            }
19451        }
19452        deserializer
19453            .deserialize_struct(
19454                "origincloud.network.v1beta1.UpdateInternetGatewayRequest",
19455                FIELDS,
19456                GeneratedVisitor,
19457            )
19458    }
19459}
19460impl serde::Serialize for UpdateNatGatewayRequest {
19461    #[allow(deprecated)]
19462    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19463    where
19464        S: serde::Serializer,
19465    {
19466        use serde::ser::SerializeStruct;
19467        let mut len = 0;
19468        if self.nat_gateway.is_some() {
19469            len += 1;
19470        }
19471        if self.update_mask.is_some() {
19472            len += 1;
19473        }
19474        if !self.request_id.is_empty() {
19475            len += 1;
19476        }
19477        let mut struct_ser = serializer
19478            .serialize_struct(
19479                "origincloud.network.v1beta1.UpdateNatGatewayRequest",
19480                len,
19481            )?;
19482        if let Some(v) = self.nat_gateway.as_ref() {
19483            struct_ser.serialize_field("natGateway", v)?;
19484        }
19485        if let Some(v) = self.update_mask.as_ref() {
19486            struct_ser.serialize_field("updateMask", v)?;
19487        }
19488        if !self.request_id.is_empty() {
19489            struct_ser.serialize_field("requestId", &self.request_id)?;
19490        }
19491        struct_ser.end()
19492    }
19493}
19494impl<'de> serde::Deserialize<'de> for UpdateNatGatewayRequest {
19495    #[allow(deprecated)]
19496    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19497    where
19498        D: serde::Deserializer<'de>,
19499    {
19500        const FIELDS: &[&str] = &[
19501            "nat_gateway",
19502            "natGateway",
19503            "update_mask",
19504            "updateMask",
19505            "request_id",
19506            "requestId",
19507        ];
19508        #[allow(clippy::enum_variant_names)]
19509        enum GeneratedField {
19510            NatGateway,
19511            UpdateMask,
19512            RequestId,
19513            __SkipField__,
19514        }
19515        impl<'de> serde::Deserialize<'de> for GeneratedField {
19516            fn deserialize<D>(
19517                deserializer: D,
19518            ) -> std::result::Result<GeneratedField, D::Error>
19519            where
19520                D: serde::Deserializer<'de>,
19521            {
19522                struct GeneratedVisitor;
19523                impl serde::de::Visitor<'_> for GeneratedVisitor {
19524                    type Value = GeneratedField;
19525                    fn expecting(
19526                        &self,
19527                        formatter: &mut std::fmt::Formatter<'_>,
19528                    ) -> std::fmt::Result {
19529                        write!(formatter, "expected one of: {:?}", & FIELDS)
19530                    }
19531                    #[allow(unused_variables)]
19532                    fn visit_str<E>(
19533                        self,
19534                        value: &str,
19535                    ) -> std::result::Result<GeneratedField, E>
19536                    where
19537                        E: serde::de::Error,
19538                    {
19539                        match value {
19540                            "natGateway" | "nat_gateway" => {
19541                                Ok(GeneratedField::NatGateway)
19542                            }
19543                            "updateMask" | "update_mask" => {
19544                                Ok(GeneratedField::UpdateMask)
19545                            }
19546                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19547                            _ => Ok(GeneratedField::__SkipField__),
19548                        }
19549                    }
19550                }
19551                deserializer.deserialize_identifier(GeneratedVisitor)
19552            }
19553        }
19554        struct GeneratedVisitor;
19555        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19556            type Value = UpdateNatGatewayRequest;
19557            fn expecting(
19558                &self,
19559                formatter: &mut std::fmt::Formatter<'_>,
19560            ) -> std::fmt::Result {
19561                formatter
19562                    .write_str(
19563                        "struct origincloud.network.v1beta1.UpdateNatGatewayRequest",
19564                    )
19565            }
19566            fn visit_map<V>(
19567                self,
19568                mut map_: V,
19569            ) -> std::result::Result<UpdateNatGatewayRequest, V::Error>
19570            where
19571                V: serde::de::MapAccess<'de>,
19572            {
19573                let mut nat_gateway__ = None;
19574                let mut update_mask__ = None;
19575                let mut request_id__ = None;
19576                while let Some(k) = map_.next_key()? {
19577                    match k {
19578                        GeneratedField::NatGateway => {
19579                            if nat_gateway__.is_some() {
19580                                return Err(serde::de::Error::duplicate_field("natGateway"));
19581                            }
19582                            nat_gateway__ = map_.next_value()?;
19583                        }
19584                        GeneratedField::UpdateMask => {
19585                            if update_mask__.is_some() {
19586                                return Err(serde::de::Error::duplicate_field("updateMask"));
19587                            }
19588                            update_mask__ = map_.next_value()?;
19589                        }
19590                        GeneratedField::RequestId => {
19591                            if request_id__.is_some() {
19592                                return Err(serde::de::Error::duplicate_field("requestId"));
19593                            }
19594                            request_id__ = Some(map_.next_value()?);
19595                        }
19596                        GeneratedField::__SkipField__ => {
19597                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19598                        }
19599                    }
19600                }
19601                Ok(UpdateNatGatewayRequest {
19602                    nat_gateway: nat_gateway__,
19603                    update_mask: update_mask__,
19604                    request_id: request_id__.unwrap_or_default(),
19605                })
19606            }
19607        }
19608        deserializer
19609            .deserialize_struct(
19610                "origincloud.network.v1beta1.UpdateNatGatewayRequest",
19611                FIELDS,
19612                GeneratedVisitor,
19613            )
19614    }
19615}
19616impl serde::Serialize for UpdateNetworkInterfaceRequest {
19617    #[allow(deprecated)]
19618    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19619    where
19620        S: serde::Serializer,
19621    {
19622        use serde::ser::SerializeStruct;
19623        let mut len = 0;
19624        if self.network_interface.is_some() {
19625            len += 1;
19626        }
19627        if self.update_mask.is_some() {
19628            len += 1;
19629        }
19630        if !self.request_id.is_empty() {
19631            len += 1;
19632        }
19633        let mut struct_ser = serializer
19634            .serialize_struct(
19635                "origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19636                len,
19637            )?;
19638        if let Some(v) = self.network_interface.as_ref() {
19639            struct_ser.serialize_field("networkInterface", v)?;
19640        }
19641        if let Some(v) = self.update_mask.as_ref() {
19642            struct_ser.serialize_field("updateMask", v)?;
19643        }
19644        if !self.request_id.is_empty() {
19645            struct_ser.serialize_field("requestId", &self.request_id)?;
19646        }
19647        struct_ser.end()
19648    }
19649}
19650impl<'de> serde::Deserialize<'de> for UpdateNetworkInterfaceRequest {
19651    #[allow(deprecated)]
19652    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19653    where
19654        D: serde::Deserializer<'de>,
19655    {
19656        const FIELDS: &[&str] = &[
19657            "network_interface",
19658            "networkInterface",
19659            "update_mask",
19660            "updateMask",
19661            "request_id",
19662            "requestId",
19663        ];
19664        #[allow(clippy::enum_variant_names)]
19665        enum GeneratedField {
19666            NetworkInterface,
19667            UpdateMask,
19668            RequestId,
19669            __SkipField__,
19670        }
19671        impl<'de> serde::Deserialize<'de> for GeneratedField {
19672            fn deserialize<D>(
19673                deserializer: D,
19674            ) -> std::result::Result<GeneratedField, D::Error>
19675            where
19676                D: serde::Deserializer<'de>,
19677            {
19678                struct GeneratedVisitor;
19679                impl serde::de::Visitor<'_> for GeneratedVisitor {
19680                    type Value = GeneratedField;
19681                    fn expecting(
19682                        &self,
19683                        formatter: &mut std::fmt::Formatter<'_>,
19684                    ) -> std::fmt::Result {
19685                        write!(formatter, "expected one of: {:?}", & FIELDS)
19686                    }
19687                    #[allow(unused_variables)]
19688                    fn visit_str<E>(
19689                        self,
19690                        value: &str,
19691                    ) -> std::result::Result<GeneratedField, E>
19692                    where
19693                        E: serde::de::Error,
19694                    {
19695                        match value {
19696                            "networkInterface" | "network_interface" => {
19697                                Ok(GeneratedField::NetworkInterface)
19698                            }
19699                            "updateMask" | "update_mask" => {
19700                                Ok(GeneratedField::UpdateMask)
19701                            }
19702                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19703                            _ => Ok(GeneratedField::__SkipField__),
19704                        }
19705                    }
19706                }
19707                deserializer.deserialize_identifier(GeneratedVisitor)
19708            }
19709        }
19710        struct GeneratedVisitor;
19711        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19712            type Value = UpdateNetworkInterfaceRequest;
19713            fn expecting(
19714                &self,
19715                formatter: &mut std::fmt::Formatter<'_>,
19716            ) -> std::fmt::Result {
19717                formatter
19718                    .write_str(
19719                        "struct origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19720                    )
19721            }
19722            fn visit_map<V>(
19723                self,
19724                mut map_: V,
19725            ) -> std::result::Result<UpdateNetworkInterfaceRequest, V::Error>
19726            where
19727                V: serde::de::MapAccess<'de>,
19728            {
19729                let mut network_interface__ = None;
19730                let mut update_mask__ = None;
19731                let mut request_id__ = None;
19732                while let Some(k) = map_.next_key()? {
19733                    match k {
19734                        GeneratedField::NetworkInterface => {
19735                            if network_interface__.is_some() {
19736                                return Err(
19737                                    serde::de::Error::duplicate_field("networkInterface"),
19738                                );
19739                            }
19740                            network_interface__ = map_.next_value()?;
19741                        }
19742                        GeneratedField::UpdateMask => {
19743                            if update_mask__.is_some() {
19744                                return Err(serde::de::Error::duplicate_field("updateMask"));
19745                            }
19746                            update_mask__ = map_.next_value()?;
19747                        }
19748                        GeneratedField::RequestId => {
19749                            if request_id__.is_some() {
19750                                return Err(serde::de::Error::duplicate_field("requestId"));
19751                            }
19752                            request_id__ = Some(map_.next_value()?);
19753                        }
19754                        GeneratedField::__SkipField__ => {
19755                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19756                        }
19757                    }
19758                }
19759                Ok(UpdateNetworkInterfaceRequest {
19760                    network_interface: network_interface__,
19761                    update_mask: update_mask__,
19762                    request_id: request_id__.unwrap_or_default(),
19763                })
19764            }
19765        }
19766        deserializer
19767            .deserialize_struct(
19768                "origincloud.network.v1beta1.UpdateNetworkInterfaceRequest",
19769                FIELDS,
19770                GeneratedVisitor,
19771            )
19772    }
19773}
19774impl serde::Serialize for UpdateRouteTableRequest {
19775    #[allow(deprecated)]
19776    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19777    where
19778        S: serde::Serializer,
19779    {
19780        use serde::ser::SerializeStruct;
19781        let mut len = 0;
19782        if self.route_table.is_some() {
19783            len += 1;
19784        }
19785        if self.update_mask.is_some() {
19786            len += 1;
19787        }
19788        if !self.request_id.is_empty() {
19789            len += 1;
19790        }
19791        let mut struct_ser = serializer
19792            .serialize_struct(
19793                "origincloud.network.v1beta1.UpdateRouteTableRequest",
19794                len,
19795            )?;
19796        if let Some(v) = self.route_table.as_ref() {
19797            struct_ser.serialize_field("routeTable", v)?;
19798        }
19799        if let Some(v) = self.update_mask.as_ref() {
19800            struct_ser.serialize_field("updateMask", v)?;
19801        }
19802        if !self.request_id.is_empty() {
19803            struct_ser.serialize_field("requestId", &self.request_id)?;
19804        }
19805        struct_ser.end()
19806    }
19807}
19808impl<'de> serde::Deserialize<'de> for UpdateRouteTableRequest {
19809    #[allow(deprecated)]
19810    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19811    where
19812        D: serde::Deserializer<'de>,
19813    {
19814        const FIELDS: &[&str] = &[
19815            "route_table",
19816            "routeTable",
19817            "update_mask",
19818            "updateMask",
19819            "request_id",
19820            "requestId",
19821        ];
19822        #[allow(clippy::enum_variant_names)]
19823        enum GeneratedField {
19824            RouteTable,
19825            UpdateMask,
19826            RequestId,
19827            __SkipField__,
19828        }
19829        impl<'de> serde::Deserialize<'de> for GeneratedField {
19830            fn deserialize<D>(
19831                deserializer: D,
19832            ) -> std::result::Result<GeneratedField, D::Error>
19833            where
19834                D: serde::Deserializer<'de>,
19835            {
19836                struct GeneratedVisitor;
19837                impl serde::de::Visitor<'_> for GeneratedVisitor {
19838                    type Value = GeneratedField;
19839                    fn expecting(
19840                        &self,
19841                        formatter: &mut std::fmt::Formatter<'_>,
19842                    ) -> std::fmt::Result {
19843                        write!(formatter, "expected one of: {:?}", & FIELDS)
19844                    }
19845                    #[allow(unused_variables)]
19846                    fn visit_str<E>(
19847                        self,
19848                        value: &str,
19849                    ) -> std::result::Result<GeneratedField, E>
19850                    where
19851                        E: serde::de::Error,
19852                    {
19853                        match value {
19854                            "routeTable" | "route_table" => {
19855                                Ok(GeneratedField::RouteTable)
19856                            }
19857                            "updateMask" | "update_mask" => {
19858                                Ok(GeneratedField::UpdateMask)
19859                            }
19860                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
19861                            _ => Ok(GeneratedField::__SkipField__),
19862                        }
19863                    }
19864                }
19865                deserializer.deserialize_identifier(GeneratedVisitor)
19866            }
19867        }
19868        struct GeneratedVisitor;
19869        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
19870            type Value = UpdateRouteTableRequest;
19871            fn expecting(
19872                &self,
19873                formatter: &mut std::fmt::Formatter<'_>,
19874            ) -> std::fmt::Result {
19875                formatter
19876                    .write_str(
19877                        "struct origincloud.network.v1beta1.UpdateRouteTableRequest",
19878                    )
19879            }
19880            fn visit_map<V>(
19881                self,
19882                mut map_: V,
19883            ) -> std::result::Result<UpdateRouteTableRequest, V::Error>
19884            where
19885                V: serde::de::MapAccess<'de>,
19886            {
19887                let mut route_table__ = None;
19888                let mut update_mask__ = None;
19889                let mut request_id__ = None;
19890                while let Some(k) = map_.next_key()? {
19891                    match k {
19892                        GeneratedField::RouteTable => {
19893                            if route_table__.is_some() {
19894                                return Err(serde::de::Error::duplicate_field("routeTable"));
19895                            }
19896                            route_table__ = map_.next_value()?;
19897                        }
19898                        GeneratedField::UpdateMask => {
19899                            if update_mask__.is_some() {
19900                                return Err(serde::de::Error::duplicate_field("updateMask"));
19901                            }
19902                            update_mask__ = map_.next_value()?;
19903                        }
19904                        GeneratedField::RequestId => {
19905                            if request_id__.is_some() {
19906                                return Err(serde::de::Error::duplicate_field("requestId"));
19907                            }
19908                            request_id__ = Some(map_.next_value()?);
19909                        }
19910                        GeneratedField::__SkipField__ => {
19911                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
19912                        }
19913                    }
19914                }
19915                Ok(UpdateRouteTableRequest {
19916                    route_table: route_table__,
19917                    update_mask: update_mask__,
19918                    request_id: request_id__.unwrap_or_default(),
19919                })
19920            }
19921        }
19922        deserializer
19923            .deserialize_struct(
19924                "origincloud.network.v1beta1.UpdateRouteTableRequest",
19925                FIELDS,
19926                GeneratedVisitor,
19927            )
19928    }
19929}
19930impl serde::Serialize for UpdateSecurityGroupRequest {
19931    #[allow(deprecated)]
19932    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
19933    where
19934        S: serde::Serializer,
19935    {
19936        use serde::ser::SerializeStruct;
19937        let mut len = 0;
19938        if self.security_group.is_some() {
19939            len += 1;
19940        }
19941        if self.update_mask.is_some() {
19942            len += 1;
19943        }
19944        if !self.request_id.is_empty() {
19945            len += 1;
19946        }
19947        let mut struct_ser = serializer
19948            .serialize_struct(
19949                "origincloud.network.v1beta1.UpdateSecurityGroupRequest",
19950                len,
19951            )?;
19952        if let Some(v) = self.security_group.as_ref() {
19953            struct_ser.serialize_field("securityGroup", v)?;
19954        }
19955        if let Some(v) = self.update_mask.as_ref() {
19956            struct_ser.serialize_field("updateMask", v)?;
19957        }
19958        if !self.request_id.is_empty() {
19959            struct_ser.serialize_field("requestId", &self.request_id)?;
19960        }
19961        struct_ser.end()
19962    }
19963}
19964impl<'de> serde::Deserialize<'de> for UpdateSecurityGroupRequest {
19965    #[allow(deprecated)]
19966    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
19967    where
19968        D: serde::Deserializer<'de>,
19969    {
19970        const FIELDS: &[&str] = &[
19971            "security_group",
19972            "securityGroup",
19973            "update_mask",
19974            "updateMask",
19975            "request_id",
19976            "requestId",
19977        ];
19978        #[allow(clippy::enum_variant_names)]
19979        enum GeneratedField {
19980            SecurityGroup,
19981            UpdateMask,
19982            RequestId,
19983            __SkipField__,
19984        }
19985        impl<'de> serde::Deserialize<'de> for GeneratedField {
19986            fn deserialize<D>(
19987                deserializer: D,
19988            ) -> std::result::Result<GeneratedField, D::Error>
19989            where
19990                D: serde::Deserializer<'de>,
19991            {
19992                struct GeneratedVisitor;
19993                impl serde::de::Visitor<'_> for GeneratedVisitor {
19994                    type Value = GeneratedField;
19995                    fn expecting(
19996                        &self,
19997                        formatter: &mut std::fmt::Formatter<'_>,
19998                    ) -> std::fmt::Result {
19999                        write!(formatter, "expected one of: {:?}", & FIELDS)
20000                    }
20001                    #[allow(unused_variables)]
20002                    fn visit_str<E>(
20003                        self,
20004                        value: &str,
20005                    ) -> std::result::Result<GeneratedField, E>
20006                    where
20007                        E: serde::de::Error,
20008                    {
20009                        match value {
20010                            "securityGroup" | "security_group" => {
20011                                Ok(GeneratedField::SecurityGroup)
20012                            }
20013                            "updateMask" | "update_mask" => {
20014                                Ok(GeneratedField::UpdateMask)
20015                            }
20016                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20017                            _ => Ok(GeneratedField::__SkipField__),
20018                        }
20019                    }
20020                }
20021                deserializer.deserialize_identifier(GeneratedVisitor)
20022            }
20023        }
20024        struct GeneratedVisitor;
20025        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20026            type Value = UpdateSecurityGroupRequest;
20027            fn expecting(
20028                &self,
20029                formatter: &mut std::fmt::Formatter<'_>,
20030            ) -> std::fmt::Result {
20031                formatter
20032                    .write_str(
20033                        "struct origincloud.network.v1beta1.UpdateSecurityGroupRequest",
20034                    )
20035            }
20036            fn visit_map<V>(
20037                self,
20038                mut map_: V,
20039            ) -> std::result::Result<UpdateSecurityGroupRequest, V::Error>
20040            where
20041                V: serde::de::MapAccess<'de>,
20042            {
20043                let mut security_group__ = None;
20044                let mut update_mask__ = None;
20045                let mut request_id__ = None;
20046                while let Some(k) = map_.next_key()? {
20047                    match k {
20048                        GeneratedField::SecurityGroup => {
20049                            if security_group__.is_some() {
20050                                return Err(
20051                                    serde::de::Error::duplicate_field("securityGroup"),
20052                                );
20053                            }
20054                            security_group__ = map_.next_value()?;
20055                        }
20056                        GeneratedField::UpdateMask => {
20057                            if update_mask__.is_some() {
20058                                return Err(serde::de::Error::duplicate_field("updateMask"));
20059                            }
20060                            update_mask__ = map_.next_value()?;
20061                        }
20062                        GeneratedField::RequestId => {
20063                            if request_id__.is_some() {
20064                                return Err(serde::de::Error::duplicate_field("requestId"));
20065                            }
20066                            request_id__ = Some(map_.next_value()?);
20067                        }
20068                        GeneratedField::__SkipField__ => {
20069                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20070                        }
20071                    }
20072                }
20073                Ok(UpdateSecurityGroupRequest {
20074                    security_group: security_group__,
20075                    update_mask: update_mask__,
20076                    request_id: request_id__.unwrap_or_default(),
20077                })
20078            }
20079        }
20080        deserializer
20081            .deserialize_struct(
20082                "origincloud.network.v1beta1.UpdateSecurityGroupRequest",
20083                FIELDS,
20084                GeneratedVisitor,
20085            )
20086    }
20087}
20088impl serde::Serialize for UpdateSubnetRequest {
20089    #[allow(deprecated)]
20090    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20091    where
20092        S: serde::Serializer,
20093    {
20094        use serde::ser::SerializeStruct;
20095        let mut len = 0;
20096        if self.subnet.is_some() {
20097            len += 1;
20098        }
20099        if self.update_mask.is_some() {
20100            len += 1;
20101        }
20102        if !self.request_id.is_empty() {
20103            len += 1;
20104        }
20105        let mut struct_ser = serializer
20106            .serialize_struct("origincloud.network.v1beta1.UpdateSubnetRequest", len)?;
20107        if let Some(v) = self.subnet.as_ref() {
20108            struct_ser.serialize_field("subnet", v)?;
20109        }
20110        if let Some(v) = self.update_mask.as_ref() {
20111            struct_ser.serialize_field("updateMask", v)?;
20112        }
20113        if !self.request_id.is_empty() {
20114            struct_ser.serialize_field("requestId", &self.request_id)?;
20115        }
20116        struct_ser.end()
20117    }
20118}
20119impl<'de> serde::Deserialize<'de> for UpdateSubnetRequest {
20120    #[allow(deprecated)]
20121    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20122    where
20123        D: serde::Deserializer<'de>,
20124    {
20125        const FIELDS: &[&str] = &[
20126            "subnet",
20127            "update_mask",
20128            "updateMask",
20129            "request_id",
20130            "requestId",
20131        ];
20132        #[allow(clippy::enum_variant_names)]
20133        enum GeneratedField {
20134            Subnet,
20135            UpdateMask,
20136            RequestId,
20137            __SkipField__,
20138        }
20139        impl<'de> serde::Deserialize<'de> for GeneratedField {
20140            fn deserialize<D>(
20141                deserializer: D,
20142            ) -> std::result::Result<GeneratedField, D::Error>
20143            where
20144                D: serde::Deserializer<'de>,
20145            {
20146                struct GeneratedVisitor;
20147                impl serde::de::Visitor<'_> for GeneratedVisitor {
20148                    type Value = GeneratedField;
20149                    fn expecting(
20150                        &self,
20151                        formatter: &mut std::fmt::Formatter<'_>,
20152                    ) -> std::fmt::Result {
20153                        write!(formatter, "expected one of: {:?}", & FIELDS)
20154                    }
20155                    #[allow(unused_variables)]
20156                    fn visit_str<E>(
20157                        self,
20158                        value: &str,
20159                    ) -> std::result::Result<GeneratedField, E>
20160                    where
20161                        E: serde::de::Error,
20162                    {
20163                        match value {
20164                            "subnet" => Ok(GeneratedField::Subnet),
20165                            "updateMask" | "update_mask" => {
20166                                Ok(GeneratedField::UpdateMask)
20167                            }
20168                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20169                            _ => Ok(GeneratedField::__SkipField__),
20170                        }
20171                    }
20172                }
20173                deserializer.deserialize_identifier(GeneratedVisitor)
20174            }
20175        }
20176        struct GeneratedVisitor;
20177        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20178            type Value = UpdateSubnetRequest;
20179            fn expecting(
20180                &self,
20181                formatter: &mut std::fmt::Formatter<'_>,
20182            ) -> std::fmt::Result {
20183                formatter
20184                    .write_str("struct origincloud.network.v1beta1.UpdateSubnetRequest")
20185            }
20186            fn visit_map<V>(
20187                self,
20188                mut map_: V,
20189            ) -> std::result::Result<UpdateSubnetRequest, V::Error>
20190            where
20191                V: serde::de::MapAccess<'de>,
20192            {
20193                let mut subnet__ = None;
20194                let mut update_mask__ = None;
20195                let mut request_id__ = None;
20196                while let Some(k) = map_.next_key()? {
20197                    match k {
20198                        GeneratedField::Subnet => {
20199                            if subnet__.is_some() {
20200                                return Err(serde::de::Error::duplicate_field("subnet"));
20201                            }
20202                            subnet__ = map_.next_value()?;
20203                        }
20204                        GeneratedField::UpdateMask => {
20205                            if update_mask__.is_some() {
20206                                return Err(serde::de::Error::duplicate_field("updateMask"));
20207                            }
20208                            update_mask__ = map_.next_value()?;
20209                        }
20210                        GeneratedField::RequestId => {
20211                            if request_id__.is_some() {
20212                                return Err(serde::de::Error::duplicate_field("requestId"));
20213                            }
20214                            request_id__ = Some(map_.next_value()?);
20215                        }
20216                        GeneratedField::__SkipField__ => {
20217                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20218                        }
20219                    }
20220                }
20221                Ok(UpdateSubnetRequest {
20222                    subnet: subnet__,
20223                    update_mask: update_mask__,
20224                    request_id: request_id__.unwrap_or_default(),
20225                })
20226            }
20227        }
20228        deserializer
20229            .deserialize_struct(
20230                "origincloud.network.v1beta1.UpdateSubnetRequest",
20231                FIELDS,
20232                GeneratedVisitor,
20233            )
20234    }
20235}
20236impl serde::Serialize for UpdateVpcRequest {
20237    #[allow(deprecated)]
20238    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20239    where
20240        S: serde::Serializer,
20241    {
20242        use serde::ser::SerializeStruct;
20243        let mut len = 0;
20244        if self.vpc.is_some() {
20245            len += 1;
20246        }
20247        if self.update_mask.is_some() {
20248            len += 1;
20249        }
20250        if !self.request_id.is_empty() {
20251            len += 1;
20252        }
20253        let mut struct_ser = serializer
20254            .serialize_struct("origincloud.network.v1beta1.UpdateVpcRequest", len)?;
20255        if let Some(v) = self.vpc.as_ref() {
20256            struct_ser.serialize_field("vpc", v)?;
20257        }
20258        if let Some(v) = self.update_mask.as_ref() {
20259            struct_ser.serialize_field("updateMask", v)?;
20260        }
20261        if !self.request_id.is_empty() {
20262            struct_ser.serialize_field("requestId", &self.request_id)?;
20263        }
20264        struct_ser.end()
20265    }
20266}
20267impl<'de> serde::Deserialize<'de> for UpdateVpcRequest {
20268    #[allow(deprecated)]
20269    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20270    where
20271        D: serde::Deserializer<'de>,
20272    {
20273        const FIELDS: &[&str] = &[
20274            "vpc",
20275            "update_mask",
20276            "updateMask",
20277            "request_id",
20278            "requestId",
20279        ];
20280        #[allow(clippy::enum_variant_names)]
20281        enum GeneratedField {
20282            Vpc,
20283            UpdateMask,
20284            RequestId,
20285            __SkipField__,
20286        }
20287        impl<'de> serde::Deserialize<'de> for GeneratedField {
20288            fn deserialize<D>(
20289                deserializer: D,
20290            ) -> std::result::Result<GeneratedField, D::Error>
20291            where
20292                D: serde::Deserializer<'de>,
20293            {
20294                struct GeneratedVisitor;
20295                impl serde::de::Visitor<'_> for GeneratedVisitor {
20296                    type Value = GeneratedField;
20297                    fn expecting(
20298                        &self,
20299                        formatter: &mut std::fmt::Formatter<'_>,
20300                    ) -> std::fmt::Result {
20301                        write!(formatter, "expected one of: {:?}", & FIELDS)
20302                    }
20303                    #[allow(unused_variables)]
20304                    fn visit_str<E>(
20305                        self,
20306                        value: &str,
20307                    ) -> std::result::Result<GeneratedField, E>
20308                    where
20309                        E: serde::de::Error,
20310                    {
20311                        match value {
20312                            "vpc" => Ok(GeneratedField::Vpc),
20313                            "updateMask" | "update_mask" => {
20314                                Ok(GeneratedField::UpdateMask)
20315                            }
20316                            "requestId" | "request_id" => Ok(GeneratedField::RequestId),
20317                            _ => Ok(GeneratedField::__SkipField__),
20318                        }
20319                    }
20320                }
20321                deserializer.deserialize_identifier(GeneratedVisitor)
20322            }
20323        }
20324        struct GeneratedVisitor;
20325        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20326            type Value = UpdateVpcRequest;
20327            fn expecting(
20328                &self,
20329                formatter: &mut std::fmt::Formatter<'_>,
20330            ) -> std::fmt::Result {
20331                formatter
20332                    .write_str("struct origincloud.network.v1beta1.UpdateVpcRequest")
20333            }
20334            fn visit_map<V>(
20335                self,
20336                mut map_: V,
20337            ) -> std::result::Result<UpdateVpcRequest, V::Error>
20338            where
20339                V: serde::de::MapAccess<'de>,
20340            {
20341                let mut vpc__ = None;
20342                let mut update_mask__ = None;
20343                let mut request_id__ = None;
20344                while let Some(k) = map_.next_key()? {
20345                    match k {
20346                        GeneratedField::Vpc => {
20347                            if vpc__.is_some() {
20348                                return Err(serde::de::Error::duplicate_field("vpc"));
20349                            }
20350                            vpc__ = map_.next_value()?;
20351                        }
20352                        GeneratedField::UpdateMask => {
20353                            if update_mask__.is_some() {
20354                                return Err(serde::de::Error::duplicate_field("updateMask"));
20355                            }
20356                            update_mask__ = map_.next_value()?;
20357                        }
20358                        GeneratedField::RequestId => {
20359                            if request_id__.is_some() {
20360                                return Err(serde::de::Error::duplicate_field("requestId"));
20361                            }
20362                            request_id__ = Some(map_.next_value()?);
20363                        }
20364                        GeneratedField::__SkipField__ => {
20365                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20366                        }
20367                    }
20368                }
20369                Ok(UpdateVpcRequest {
20370                    vpc: vpc__,
20371                    update_mask: update_mask__,
20372                    request_id: request_id__.unwrap_or_default(),
20373                })
20374            }
20375        }
20376        deserializer
20377            .deserialize_struct(
20378                "origincloud.network.v1beta1.UpdateVpcRequest",
20379                FIELDS,
20380                GeneratedVisitor,
20381            )
20382    }
20383}
20384impl serde::Serialize for Vpc {
20385    #[allow(deprecated)]
20386    fn serialize<S>(&self, serializer: S) -> std::result::Result<S::Ok, S::Error>
20387    where
20388        S: serde::Serializer,
20389    {
20390        use serde::ser::SerializeStruct;
20391        let mut len = 0;
20392        if !self.name.is_empty() {
20393            len += 1;
20394        }
20395        if !self.urn.is_empty() {
20396            len += 1;
20397        }
20398        if !self.ipv4_cidr_block.is_empty() {
20399            len += 1;
20400        }
20401        if !self.ipv6_cidr_block.is_empty() {
20402            len += 1;
20403        }
20404        if self.subnet_ipv4_prefix_length != 0 {
20405            len += 1;
20406        }
20407        if self.available_subnet_count != 0 {
20408            len += 1;
20409        }
20410        if !self.dns_policy.is_empty() {
20411            len += 1;
20412        }
20413        if !self.internet_gateway.is_empty() {
20414            len += 1;
20415        }
20416        if self.project_default {
20417            len += 1;
20418        }
20419        if self.create_time.is_some() {
20420            len += 1;
20421        }
20422        if !self.creator.is_empty() {
20423            len += 1;
20424        }
20425        if !self.tags.is_empty() {
20426            len += 1;
20427        }
20428        let mut struct_ser = serializer
20429            .serialize_struct("origincloud.network.v1beta1.Vpc", len)?;
20430        if !self.name.is_empty() {
20431            struct_ser.serialize_field("name", &self.name)?;
20432        }
20433        if !self.urn.is_empty() {
20434            struct_ser.serialize_field("urn", &self.urn)?;
20435        }
20436        if !self.ipv4_cidr_block.is_empty() {
20437            struct_ser.serialize_field("ipv4CidrBlock", &self.ipv4_cidr_block)?;
20438        }
20439        if !self.ipv6_cidr_block.is_empty() {
20440            struct_ser.serialize_field("ipv6CidrBlock", &self.ipv6_cidr_block)?;
20441        }
20442        if self.subnet_ipv4_prefix_length != 0 {
20443            struct_ser
20444                .serialize_field(
20445                    "subnetIpv4PrefixLength",
20446                    &self.subnet_ipv4_prefix_length,
20447                )?;
20448        }
20449        if self.available_subnet_count != 0 {
20450            struct_ser
20451                .serialize_field("availableSubnetCount", &self.available_subnet_count)?;
20452        }
20453        if !self.dns_policy.is_empty() {
20454            struct_ser.serialize_field("dnsPolicy", &self.dns_policy)?;
20455        }
20456        if !self.internet_gateway.is_empty() {
20457            struct_ser.serialize_field("internetGateway", &self.internet_gateway)?;
20458        }
20459        if self.project_default {
20460            struct_ser.serialize_field("projectDefault", &self.project_default)?;
20461        }
20462        if let Some(v) = self.create_time.as_ref() {
20463            struct_ser.serialize_field("createTime", v)?;
20464        }
20465        if !self.creator.is_empty() {
20466            struct_ser.serialize_field("creator", &self.creator)?;
20467        }
20468        if !self.tags.is_empty() {
20469            struct_ser.serialize_field("tags", &self.tags)?;
20470        }
20471        struct_ser.end()
20472    }
20473}
20474impl<'de> serde::Deserialize<'de> for Vpc {
20475    #[allow(deprecated)]
20476    fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
20477    where
20478        D: serde::Deserializer<'de>,
20479    {
20480        const FIELDS: &[&str] = &[
20481            "name",
20482            "urn",
20483            "ipv4_cidr_block",
20484            "ipv4CidrBlock",
20485            "ipv6_cidr_block",
20486            "ipv6CidrBlock",
20487            "subnet_ipv4_prefix_length",
20488            "subnetIpv4PrefixLength",
20489            "available_subnet_count",
20490            "availableSubnetCount",
20491            "dns_policy",
20492            "dnsPolicy",
20493            "internet_gateway",
20494            "internetGateway",
20495            "project_default",
20496            "projectDefault",
20497            "create_time",
20498            "createTime",
20499            "creator",
20500            "tags",
20501        ];
20502        #[allow(clippy::enum_variant_names)]
20503        enum GeneratedField {
20504            Name,
20505            Urn,
20506            Ipv4CidrBlock,
20507            Ipv6CidrBlock,
20508            SubnetIpv4PrefixLength,
20509            AvailableSubnetCount,
20510            DnsPolicy,
20511            InternetGateway,
20512            ProjectDefault,
20513            CreateTime,
20514            Creator,
20515            Tags,
20516            __SkipField__,
20517        }
20518        impl<'de> serde::Deserialize<'de> for GeneratedField {
20519            fn deserialize<D>(
20520                deserializer: D,
20521            ) -> std::result::Result<GeneratedField, D::Error>
20522            where
20523                D: serde::Deserializer<'de>,
20524            {
20525                struct GeneratedVisitor;
20526                impl serde::de::Visitor<'_> for GeneratedVisitor {
20527                    type Value = GeneratedField;
20528                    fn expecting(
20529                        &self,
20530                        formatter: &mut std::fmt::Formatter<'_>,
20531                    ) -> std::fmt::Result {
20532                        write!(formatter, "expected one of: {:?}", & FIELDS)
20533                    }
20534                    #[allow(unused_variables)]
20535                    fn visit_str<E>(
20536                        self,
20537                        value: &str,
20538                    ) -> std::result::Result<GeneratedField, E>
20539                    where
20540                        E: serde::de::Error,
20541                    {
20542                        match value {
20543                            "name" => Ok(GeneratedField::Name),
20544                            "urn" => Ok(GeneratedField::Urn),
20545                            "ipv4CidrBlock" | "ipv4_cidr_block" => {
20546                                Ok(GeneratedField::Ipv4CidrBlock)
20547                            }
20548                            "ipv6CidrBlock" | "ipv6_cidr_block" => {
20549                                Ok(GeneratedField::Ipv6CidrBlock)
20550                            }
20551                            "subnetIpv4PrefixLength" | "subnet_ipv4_prefix_length" => {
20552                                Ok(GeneratedField::SubnetIpv4PrefixLength)
20553                            }
20554                            "availableSubnetCount" | "available_subnet_count" => {
20555                                Ok(GeneratedField::AvailableSubnetCount)
20556                            }
20557                            "dnsPolicy" | "dns_policy" => Ok(GeneratedField::DnsPolicy),
20558                            "internetGateway" | "internet_gateway" => {
20559                                Ok(GeneratedField::InternetGateway)
20560                            }
20561                            "projectDefault" | "project_default" => {
20562                                Ok(GeneratedField::ProjectDefault)
20563                            }
20564                            "createTime" | "create_time" => {
20565                                Ok(GeneratedField::CreateTime)
20566                            }
20567                            "creator" => Ok(GeneratedField::Creator),
20568                            "tags" => Ok(GeneratedField::Tags),
20569                            _ => Ok(GeneratedField::__SkipField__),
20570                        }
20571                    }
20572                }
20573                deserializer.deserialize_identifier(GeneratedVisitor)
20574            }
20575        }
20576        struct GeneratedVisitor;
20577        impl<'de> serde::de::Visitor<'de> for GeneratedVisitor {
20578            type Value = Vpc;
20579            fn expecting(
20580                &self,
20581                formatter: &mut std::fmt::Formatter<'_>,
20582            ) -> std::fmt::Result {
20583                formatter.write_str("struct origincloud.network.v1beta1.Vpc")
20584            }
20585            fn visit_map<V>(self, mut map_: V) -> std::result::Result<Vpc, V::Error>
20586            where
20587                V: serde::de::MapAccess<'de>,
20588            {
20589                let mut name__ = None;
20590                let mut urn__ = None;
20591                let mut ipv4_cidr_block__ = None;
20592                let mut ipv6_cidr_block__ = None;
20593                let mut subnet_ipv4_prefix_length__ = None;
20594                let mut available_subnet_count__ = None;
20595                let mut dns_policy__ = None;
20596                let mut internet_gateway__ = None;
20597                let mut project_default__ = None;
20598                let mut create_time__ = None;
20599                let mut creator__ = None;
20600                let mut tags__ = None;
20601                while let Some(k) = map_.next_key()? {
20602                    match k {
20603                        GeneratedField::Name => {
20604                            if name__.is_some() {
20605                                return Err(serde::de::Error::duplicate_field("name"));
20606                            }
20607                            name__ = Some(map_.next_value()?);
20608                        }
20609                        GeneratedField::Urn => {
20610                            if urn__.is_some() {
20611                                return Err(serde::de::Error::duplicate_field("urn"));
20612                            }
20613                            urn__ = Some(map_.next_value()?);
20614                        }
20615                        GeneratedField::Ipv4CidrBlock => {
20616                            if ipv4_cidr_block__.is_some() {
20617                                return Err(
20618                                    serde::de::Error::duplicate_field("ipv4CidrBlock"),
20619                                );
20620                            }
20621                            ipv4_cidr_block__ = Some(map_.next_value()?);
20622                        }
20623                        GeneratedField::Ipv6CidrBlock => {
20624                            if ipv6_cidr_block__.is_some() {
20625                                return Err(
20626                                    serde::de::Error::duplicate_field("ipv6CidrBlock"),
20627                                );
20628                            }
20629                            ipv6_cidr_block__ = Some(map_.next_value()?);
20630                        }
20631                        GeneratedField::SubnetIpv4PrefixLength => {
20632                            if subnet_ipv4_prefix_length__.is_some() {
20633                                return Err(
20634                                    serde::de::Error::duplicate_field("subnetIpv4PrefixLength"),
20635                                );
20636                            }
20637                            subnet_ipv4_prefix_length__ = Some(
20638                                map_
20639                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
20640                                    .0,
20641                            );
20642                        }
20643                        GeneratedField::AvailableSubnetCount => {
20644                            if available_subnet_count__.is_some() {
20645                                return Err(
20646                                    serde::de::Error::duplicate_field("availableSubnetCount"),
20647                                );
20648                            }
20649                            available_subnet_count__ = Some(
20650                                map_
20651                                    .next_value::<::pbjson::private::NumberDeserialize<_>>()?
20652                                    .0,
20653                            );
20654                        }
20655                        GeneratedField::DnsPolicy => {
20656                            if dns_policy__.is_some() {
20657                                return Err(serde::de::Error::duplicate_field("dnsPolicy"));
20658                            }
20659                            dns_policy__ = Some(map_.next_value()?);
20660                        }
20661                        GeneratedField::InternetGateway => {
20662                            if internet_gateway__.is_some() {
20663                                return Err(
20664                                    serde::de::Error::duplicate_field("internetGateway"),
20665                                );
20666                            }
20667                            internet_gateway__ = Some(map_.next_value()?);
20668                        }
20669                        GeneratedField::ProjectDefault => {
20670                            if project_default__.is_some() {
20671                                return Err(
20672                                    serde::de::Error::duplicate_field("projectDefault"),
20673                                );
20674                            }
20675                            project_default__ = Some(map_.next_value()?);
20676                        }
20677                        GeneratedField::CreateTime => {
20678                            if create_time__.is_some() {
20679                                return Err(serde::de::Error::duplicate_field("createTime"));
20680                            }
20681                            create_time__ = map_.next_value()?;
20682                        }
20683                        GeneratedField::Creator => {
20684                            if creator__.is_some() {
20685                                return Err(serde::de::Error::duplicate_field("creator"));
20686                            }
20687                            creator__ = Some(map_.next_value()?);
20688                        }
20689                        GeneratedField::Tags => {
20690                            if tags__.is_some() {
20691                                return Err(serde::de::Error::duplicate_field("tags"));
20692                            }
20693                            tags__ = Some(
20694                                map_.next_value::<std::collections::BTreeMap<_, _>>()?,
20695                            );
20696                        }
20697                        GeneratedField::__SkipField__ => {
20698                            let _ = map_.next_value::<serde::de::IgnoredAny>()?;
20699                        }
20700                    }
20701                }
20702                Ok(Vpc {
20703                    name: name__.unwrap_or_default(),
20704                    urn: urn__.unwrap_or_default(),
20705                    ipv4_cidr_block: ipv4_cidr_block__.unwrap_or_default(),
20706                    ipv6_cidr_block: ipv6_cidr_block__.unwrap_or_default(),
20707                    subnet_ipv4_prefix_length: subnet_ipv4_prefix_length__
20708                        .unwrap_or_default(),
20709                    available_subnet_count: available_subnet_count__.unwrap_or_default(),
20710                    dns_policy: dns_policy__.unwrap_or_default(),
20711                    internet_gateway: internet_gateway__.unwrap_or_default(),
20712                    project_default: project_default__.unwrap_or_default(),
20713                    create_time: create_time__,
20714                    creator: creator__.unwrap_or_default(),
20715                    tags: tags__.unwrap_or_default(),
20716                })
20717            }
20718        }
20719        deserializer
20720            .deserialize_struct(
20721                "origincloud.network.v1beta1.Vpc",
20722                FIELDS,
20723                GeneratedVisitor,
20724            )
20725    }
20726}
20727/// Calls `AclService`.
20728///
20729/// ACLs: stateless filters at the edge of a subnet. An ACL holds rules
20730/// (`AclRuleService`), and applies to the subnets that an ACL association
20731/// names it for (`AclAssociationService`). Each packet entering or leaving
20732/// such a subnet meets the rules of its direction in `priority` order; the
20733/// first that matches accepts or drops it, and a packet no rule matches is
20734/// dropped.
20735#[derive(Clone, Debug)]
20736pub struct AclClient {
20737    service: ::origincloud_core::Service,
20738}
20739impl AclClient {
20740    /// Returns a client of `AclService` that sends its calls through `client`.
20741    pub fn new(client: &::origincloud_core::Client) -> Self {
20742        Self {
20743            service: client.service("network", true),
20744        }
20745    }
20746    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
20747    pub fn service(&self) -> &::origincloud_core::Service {
20748        &self.service
20749    }
20750    /// Returns an ACL.
20751    pub async fn get_acl(
20752        &self,
20753        request: GetAclRequest,
20754    ) -> ::core::result::Result<Acl, ::origincloud_core::Error> {
20755        let p0 = ::origincloud_core::path_value(
20756            "name",
20757            &request.name,
20758            "projects/*/regions/*/acls/*",
20759        )?;
20760        let query = ::origincloud_core::query(&request, &["name"])?;
20761        let call = ::origincloud_core::Request::new(
20762                ::origincloud_core::Method::GET,
20763                format!("/v1beta1/{p0}"),
20764            )
20765            .with_query(query)
20766            .idempotent();
20767        self.service.call(call).await
20768    }
20769    /// Lists the ACLs in a region, oldest first.
20770    pub async fn list_acls(
20771        &self,
20772        request: ListAclsRequest,
20773    ) -> ::core::result::Result<ListAclsResponse, ::origincloud_core::Error> {
20774        let p0 = ::origincloud_core::path_value(
20775            "parent",
20776            &request.parent,
20777            "projects/*/regions/*",
20778        )?;
20779        let query = ::origincloud_core::query(&request, &["parent"])?;
20780        let call = ::origincloud_core::Request::new(
20781                ::origincloud_core::Method::GET,
20782                format!("/v1beta1/{p0}/acls"),
20783            )
20784            .with_query(query)
20785            .idempotent();
20786        self.service.call(call).await
20787    }
20788    /// 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.
20789    pub fn all_acls(&self, request: ListAclsRequest) -> ::origincloud_core::Pages<Acl> {
20790        let client = self.clone();
20791        ::origincloud_core::Pages::new(
20792            request,
20793            move |request: ListAclsRequest| {
20794                let client = client.clone();
20795                async move {
20796                    let page = client.list_acls(request).await?;
20797                    Ok((page.acls, page.next_page_token))
20798                }
20799            },
20800            |request: &mut ListAclsRequest, token: ::std::string::String| {
20801                request.page_token = token;
20802            },
20803        )
20804    }
20805    /// Creates an ACL in a VPC, with no rules: it drops everything until
20806    /// rules are added. The operation is done once the ACL is recorded.
20807    ///
20808    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Acl`] once the change is done.
20809    pub async fn create_acl(
20810        &self,
20811        mut request: CreateAclRequest,
20812    ) -> ::core::result::Result<
20813        ::origincloud_core::Operation<Acl>,
20814        ::origincloud_core::Error,
20815    > {
20816        if request.request_id.is_empty() {
20817            request.request_id = ::origincloud_core::new_request_id();
20818        }
20819        let p0 = ::origincloud_core::path_value(
20820            "parent",
20821            &request.parent,
20822            "projects/*/regions/*",
20823        )?;
20824        let body = ::origincloud_core::json_body(
20825            request.acl.as_ref().unwrap_or(&::core::default::Default::default()),
20826        )?;
20827        let query = ::origincloud_core::query(&request, &["parent", "acl"])?;
20828        let call = ::origincloud_core::Request::new(
20829                ::origincloud_core::Method::POST,
20830                format!("/v1beta1/{p0}/acls"),
20831            )
20832            .with_body(body)
20833            .with_query(query)
20834            .idempotent();
20835        let operation = self.service.call(call).await?;
20836        Ok(
20837            ::origincloud_core::Operation::new(
20838                self.service.clone(),
20839                operation,
20840                "origincloud.network.v1beta1.Acl",
20841            ),
20842        )
20843    }
20844    /// Changes an ACL's tags. The operation is done once the change is
20845    /// recorded.
20846    ///
20847    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Acl`] once the change is done.
20848    pub async fn update_acl(
20849        &self,
20850        mut request: UpdateAclRequest,
20851    ) -> ::core::result::Result<
20852        ::origincloud_core::Operation<Acl>,
20853        ::origincloud_core::Error,
20854    > {
20855        if request.request_id.is_empty() {
20856            request.request_id = ::origincloud_core::new_request_id();
20857        }
20858        let p0 = ::origincloud_core::path_value(
20859            "acl.name",
20860            request.acl.as_ref().map_or("", |m| m.name.as_str()),
20861            "projects/*/regions/*/acls/*",
20862        )?;
20863        let body = ::origincloud_core::json_body(
20864            request.acl.as_ref().unwrap_or(&::core::default::Default::default()),
20865        )?;
20866        let query = ::origincloud_core::query(&request, &["acl.name", "acl"])?;
20867        let call = ::origincloud_core::Request::new(
20868                ::origincloud_core::Method::PATCH,
20869                format!("/v1beta1/{p0}"),
20870            )
20871            .with_body(body)
20872            .with_query(query)
20873            .idempotent();
20874        let operation = self.service.call(call).await?;
20875        Ok(
20876            ::origincloud_core::Operation::new(
20877                self.service.clone(),
20878                operation,
20879                "origincloud.network.v1beta1.Acl",
20880            ),
20881        )
20882    }
20883    /// Deletes an ACL with its rules. Refused for an ACL the platform created
20884    /// with its VPC, which goes with the VPC, and while an ACL association
20885    /// names it. The operation is done once the change is recorded; the
20886    /// network applies it within seconds.
20887    ///
20888    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
20889    pub async fn delete_acl(
20890        &self,
20891        mut request: DeleteAclRequest,
20892    ) -> ::core::result::Result<
20893        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
20894        ::origincloud_core::Error,
20895    > {
20896        if request.request_id.is_empty() {
20897            request.request_id = ::origincloud_core::new_request_id();
20898        }
20899        let p0 = ::origincloud_core::path_value(
20900            "name",
20901            &request.name,
20902            "projects/*/regions/*/acls/*",
20903        )?;
20904        let query = ::origincloud_core::query(&request, &["name"])?;
20905        let call = ::origincloud_core::Request::new(
20906                ::origincloud_core::Method::DELETE,
20907                format!("/v1beta1/{p0}"),
20908            )
20909            .with_query(query)
20910            .idempotent();
20911        let operation = self.service.call(call).await?;
20912        Ok(
20913            ::origincloud_core::Operation::new(
20914                self.service.clone(),
20915                operation,
20916                "google.protobuf.Empty",
20917            ),
20918        )
20919    }
20920}
20921/// Calls `AclAssociationService`.
20922///
20923/// ACL associations: which ACL filters a subnet's traffic at its edge. A
20924/// subnet has at most one; without one, nothing is filtered at its edge (see
20925/// the subnet's `acl`). An association's id is the id of the ACL it names, so
20926/// a client that knows the subnet and the ACL names the association without
20927/// listing. To move a subnet to another ACL, delete its association and
20928/// create another.
20929#[derive(Clone, Debug)]
20930pub struct AclAssociationClient {
20931    service: ::origincloud_core::Service,
20932}
20933impl AclAssociationClient {
20934    /// Returns a client of `AclAssociationService` that sends its calls through `client`.
20935    pub fn new(client: &::origincloud_core::Client) -> Self {
20936        Self {
20937            service: client.service("network", true),
20938        }
20939    }
20940    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
20941    pub fn service(&self) -> &::origincloud_core::Service {
20942        &self.service
20943    }
20944    /// Returns an ACL association.
20945    pub async fn get_acl_association(
20946        &self,
20947        request: GetAclAssociationRequest,
20948    ) -> ::core::result::Result<AclAssociation, ::origincloud_core::Error> {
20949        let p0 = ::origincloud_core::path_value(
20950            "name",
20951            &request.name,
20952            "projects/*/zones/*/subnets/*/aclAssociations/*",
20953        )?;
20954        let query = ::origincloud_core::query(&request, &["name"])?;
20955        let call = ::origincloud_core::Request::new(
20956                ::origincloud_core::Method::GET,
20957                format!("/v1beta1/{p0}"),
20958            )
20959            .with_query(query)
20960            .idempotent();
20961        self.service.call(call).await
20962    }
20963    /// Lists a subnet's ACL associations: none or one.
20964    pub async fn list_acl_associations(
20965        &self,
20966        request: ListAclAssociationsRequest,
20967    ) -> ::core::result::Result<ListAclAssociationsResponse, ::origincloud_core::Error> {
20968        let p0 = ::origincloud_core::path_value(
20969            "parent",
20970            &request.parent,
20971            "projects/*/zones/*/subnets/*",
20972        )?;
20973        let query = ::origincloud_core::query(&request, &["parent"])?;
20974        let call = ::origincloud_core::Request::new(
20975                ::origincloud_core::Method::GET,
20976                format!("/v1beta1/{p0}/aclAssociations"),
20977            )
20978            .with_query(query)
20979            .idempotent();
20980        self.service.call(call).await
20981    }
20982    /// 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.
20983    pub fn all_acl_associations(
20984        &self,
20985        request: ListAclAssociationsRequest,
20986    ) -> ::origincloud_core::Pages<AclAssociation> {
20987        let client = self.clone();
20988        ::origincloud_core::Pages::new(
20989            request,
20990            move |request: ListAclAssociationsRequest| {
20991                let client = client.clone();
20992                async move {
20993                    let page = client.list_acl_associations(request).await?;
20994                    Ok((page.acl_associations, page.next_page_token))
20995                }
20996            },
20997            |request: &mut ListAclAssociationsRequest, token: ::std::string::String| {
20998                request.page_token = token;
20999            },
21000        )
21001    }
21002    /// Associates an ACL with a subnet. Refused with `FAILED_PRECONDITION`
21003    /// when the subnet has an ACL association. The operation is done once the
21004    /// change is recorded; the network applies it within seconds.
21005    ///
21006    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`AclAssociation`] once the change is done.
21007    pub async fn create_acl_association(
21008        &self,
21009        mut request: CreateAclAssociationRequest,
21010    ) -> ::core::result::Result<
21011        ::origincloud_core::Operation<AclAssociation>,
21012        ::origincloud_core::Error,
21013    > {
21014        if request.request_id.is_empty() {
21015            request.request_id = ::origincloud_core::new_request_id();
21016        }
21017        let p0 = ::origincloud_core::path_value(
21018            "parent",
21019            &request.parent,
21020            "projects/*/zones/*/subnets/*",
21021        )?;
21022        let body = ::origincloud_core::json_body(
21023            request
21024                .acl_association
21025                .as_ref()
21026                .unwrap_or(&::core::default::Default::default()),
21027        )?;
21028        let query = ::origincloud_core::query(&request, &["parent", "aclAssociation"])?;
21029        let call = ::origincloud_core::Request::new(
21030                ::origincloud_core::Method::POST,
21031                format!("/v1beta1/{p0}/aclAssociations"),
21032            )
21033            .with_body(body)
21034            .with_query(query)
21035            .idempotent();
21036        let operation = self.service.call(call).await?;
21037        Ok(
21038            ::origincloud_core::Operation::new(
21039                self.service.clone(),
21040                operation,
21041                "origincloud.network.v1beta1.AclAssociation",
21042            ),
21043        )
21044    }
21045    /// Removes a subnet's ACL association: nothing is filtered at its edge any
21046    /// more, and its interfaces' security groups still apply. The operation is
21047    /// done once the change is recorded; the network applies it within seconds.
21048    ///
21049    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21050    pub async fn delete_acl_association(
21051        &self,
21052        mut request: DeleteAclAssociationRequest,
21053    ) -> ::core::result::Result<
21054        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21055        ::origincloud_core::Error,
21056    > {
21057        if request.request_id.is_empty() {
21058            request.request_id = ::origincloud_core::new_request_id();
21059        }
21060        let p0 = ::origincloud_core::path_value(
21061            "name",
21062            &request.name,
21063            "projects/*/zones/*/subnets/*/aclAssociations/*",
21064        )?;
21065        let query = ::origincloud_core::query(&request, &["name"])?;
21066        let call = ::origincloud_core::Request::new(
21067                ::origincloud_core::Method::DELETE,
21068                format!("/v1beta1/{p0}"),
21069            )
21070            .with_query(query)
21071            .idempotent();
21072        let operation = self.service.call(call).await?;
21073        Ok(
21074            ::origincloud_core::Operation::new(
21075                self.service.clone(),
21076                operation,
21077                "google.protobuf.Empty",
21078            ),
21079        )
21080    }
21081}
21082/// Calls `AclRuleService`.
21083///
21084/// ACL rules: what an ACL accepts or drops, each rule in its place in one
21085/// direction. A rule is immutable: it is created and deleted, never changed,
21086/// so to change one, delete it and create its replacement. A direction
21087/// holds one rule per `priority`, so a replacement at the same priority can
21088/// only be created once the old rule is deleted: between the two, neither
21089/// rule applies. A replacement at a free priority can be created first.
21090#[derive(Clone, Debug)]
21091pub struct AclRuleClient {
21092    service: ::origincloud_core::Service,
21093}
21094impl AclRuleClient {
21095    /// Returns a client of `AclRuleService` that sends its calls through `client`.
21096    pub fn new(client: &::origincloud_core::Client) -> Self {
21097        Self {
21098            service: client.service("network", true),
21099        }
21100    }
21101    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21102    pub fn service(&self) -> &::origincloud_core::Service {
21103        &self.service
21104    }
21105    /// Returns an ACL rule.
21106    pub async fn get_acl_rule(
21107        &self,
21108        request: GetAclRuleRequest,
21109    ) -> ::core::result::Result<AclRule, ::origincloud_core::Error> {
21110        let p0 = ::origincloud_core::path_value(
21111            "name",
21112            &request.name,
21113            "projects/*/regions/*/acls/*/rules/*",
21114        )?;
21115        let query = ::origincloud_core::query(&request, &["name"])?;
21116        let call = ::origincloud_core::Request::new(
21117                ::origincloud_core::Method::GET,
21118                format!("/v1beta1/{p0}"),
21119            )
21120            .with_query(query)
21121            .idempotent();
21122        self.service.call(call).await
21123    }
21124    /// Lists an ACL's rules of both directions, oldest first.
21125    pub async fn list_acl_rules(
21126        &self,
21127        request: ListAclRulesRequest,
21128    ) -> ::core::result::Result<ListAclRulesResponse, ::origincloud_core::Error> {
21129        let p0 = ::origincloud_core::path_value(
21130            "parent",
21131            &request.parent,
21132            "projects/*/regions/*/acls/*",
21133        )?;
21134        let query = ::origincloud_core::query(&request, &["parent"])?;
21135        let call = ::origincloud_core::Request::new(
21136                ::origincloud_core::Method::GET,
21137                format!("/v1beta1/{p0}/rules"),
21138            )
21139            .with_query(query)
21140            .idempotent();
21141        self.service.call(call).await
21142    }
21143    /// 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.
21144    pub fn all_acl_rules(
21145        &self,
21146        request: ListAclRulesRequest,
21147    ) -> ::origincloud_core::Pages<AclRule> {
21148        let client = self.clone();
21149        ::origincloud_core::Pages::new(
21150            request,
21151            move |request: ListAclRulesRequest| {
21152                let client = client.clone();
21153                async move {
21154                    let page = client.list_acl_rules(request).await?;
21155                    Ok((page.acl_rules, page.next_page_token))
21156                }
21157            },
21158            |request: &mut ListAclRulesRequest, token: ::std::string::String| {
21159                request.page_token = token;
21160            },
21161        )
21162    }
21163    /// Adds a rule to an ACL. Refused with `FAILED_PRECONDITION` when a rule
21164    /// of the same direction has the same `priority`. An ACL holds at most 40
21165    /// rules by default, both directions together, as the quota sets. The
21166    /// operation is done once the change is recorded; the network applies it
21167    /// within seconds.
21168    ///
21169    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`AclRule`] once the change is done.
21170    pub async fn create_acl_rule(
21171        &self,
21172        mut request: CreateAclRuleRequest,
21173    ) -> ::core::result::Result<
21174        ::origincloud_core::Operation<AclRule>,
21175        ::origincloud_core::Error,
21176    > {
21177        if request.request_id.is_empty() {
21178            request.request_id = ::origincloud_core::new_request_id();
21179        }
21180        let p0 = ::origincloud_core::path_value(
21181            "parent",
21182            &request.parent,
21183            "projects/*/regions/*/acls/*",
21184        )?;
21185        let body = ::origincloud_core::json_body(
21186            request.acl_rule.as_ref().unwrap_or(&::core::default::Default::default()),
21187        )?;
21188        let query = ::origincloud_core::query(&request, &["parent", "aclRule"])?;
21189        let call = ::origincloud_core::Request::new(
21190                ::origincloud_core::Method::POST,
21191                format!("/v1beta1/{p0}/rules"),
21192            )
21193            .with_body(body)
21194            .with_query(query)
21195            .idempotent();
21196        let operation = self.service.call(call).await?;
21197        Ok(
21198            ::origincloud_core::Operation::new(
21199                self.service.clone(),
21200                operation,
21201                "origincloud.network.v1beta1.AclRule",
21202            ),
21203        )
21204    }
21205    /// Removes a rule from its ACL. The operation is done once the change is
21206    /// recorded; the network applies it within seconds.
21207    ///
21208    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21209    pub async fn delete_acl_rule(
21210        &self,
21211        mut request: DeleteAclRuleRequest,
21212    ) -> ::core::result::Result<
21213        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21214        ::origincloud_core::Error,
21215    > {
21216        if request.request_id.is_empty() {
21217            request.request_id = ::origincloud_core::new_request_id();
21218        }
21219        let p0 = ::origincloud_core::path_value(
21220            "name",
21221            &request.name,
21222            "projects/*/regions/*/acls/*/rules/*",
21223        )?;
21224        let query = ::origincloud_core::query(&request, &["name"])?;
21225        let call = ::origincloud_core::Request::new(
21226                ::origincloud_core::Method::DELETE,
21227                format!("/v1beta1/{p0}"),
21228            )
21229            .with_query(query)
21230            .idempotent();
21231        let operation = self.service.call(call).await?;
21232        Ok(
21233            ::origincloud_core::Operation::new(
21234                self.service.clone(),
21235                operation,
21236                "google.protobuf.Empty",
21237            ),
21238        )
21239    }
21240}
21241/// Calls `DnsPolicyService`.
21242///
21243/// DNS policies: how a VPC's resolver answers names it isn't authoritative
21244/// for. A VPC relays through the policy its DNS policy association names
21245/// (`DnsPolicyAssociationService`), or else through the project's default
21246/// policy in its region.
21247#[derive(Clone, Debug)]
21248pub struct DnsPolicyClient {
21249    service: ::origincloud_core::Service,
21250}
21251impl DnsPolicyClient {
21252    /// Returns a client of `DnsPolicyService` that sends its calls through `client`.
21253    pub fn new(client: &::origincloud_core::Client) -> Self {
21254        Self {
21255            service: client.service("network", true),
21256        }
21257    }
21258    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21259    pub fn service(&self) -> &::origincloud_core::Service {
21260        &self.service
21261    }
21262    /// Returns a DNS policy.
21263    pub async fn get_dns_policy(
21264        &self,
21265        request: GetDnsPolicyRequest,
21266    ) -> ::core::result::Result<DnsPolicy, ::origincloud_core::Error> {
21267        let p0 = ::origincloud_core::path_value(
21268            "name",
21269            &request.name,
21270            "projects/*/regions/*/dnsPolicies/*",
21271        )?;
21272        let query = ::origincloud_core::query(&request, &["name"])?;
21273        let call = ::origincloud_core::Request::new(
21274                ::origincloud_core::Method::GET,
21275                format!("/v1beta1/{p0}"),
21276            )
21277            .with_query(query)
21278            .idempotent();
21279        self.service.call(call).await
21280    }
21281    /// Lists the DNS policies in a region, oldest first, the project's
21282    /// default included.
21283    pub async fn list_dns_policies(
21284        &self,
21285        request: ListDnsPoliciesRequest,
21286    ) -> ::core::result::Result<ListDnsPoliciesResponse, ::origincloud_core::Error> {
21287        let p0 = ::origincloud_core::path_value(
21288            "parent",
21289            &request.parent,
21290            "projects/*/regions/*",
21291        )?;
21292        let query = ::origincloud_core::query(&request, &["parent"])?;
21293        let call = ::origincloud_core::Request::new(
21294                ::origincloud_core::Method::GET,
21295                format!("/v1beta1/{p0}/dnsPolicies"),
21296            )
21297            .with_query(query)
21298            .idempotent();
21299        self.service.call(call).await
21300    }
21301    /// 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.
21302    pub fn all_dns_policies(
21303        &self,
21304        request: ListDnsPoliciesRequest,
21305    ) -> ::origincloud_core::Pages<DnsPolicy> {
21306        let client = self.clone();
21307        ::origincloud_core::Pages::new(
21308            request,
21309            move |request: ListDnsPoliciesRequest| {
21310                let client = client.clone();
21311                async move {
21312                    let page = client.list_dns_policies(request).await?;
21313                    Ok((page.dns_policies, page.next_page_token))
21314                }
21315            },
21316            |request: &mut ListDnsPoliciesRequest, token: ::std::string::String| {
21317                request.page_token = token;
21318            },
21319        )
21320    }
21321    /// Creates a DNS policy. It isn't the default: associate it with a VPC,
21322    /// or make it the default with `SetDefaultDnsPolicy`. The operation is
21323    /// done once the DNS policy is recorded.
21324    ///
21325    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21326    pub async fn create_dns_policy(
21327        &self,
21328        mut request: CreateDnsPolicyRequest,
21329    ) -> ::core::result::Result<
21330        ::origincloud_core::Operation<DnsPolicy>,
21331        ::origincloud_core::Error,
21332    > {
21333        if request.request_id.is_empty() {
21334            request.request_id = ::origincloud_core::new_request_id();
21335        }
21336        let p0 = ::origincloud_core::path_value(
21337            "parent",
21338            &request.parent,
21339            "projects/*/regions/*",
21340        )?;
21341        let body = ::origincloud_core::json_body(
21342            request.dns_policy.as_ref().unwrap_or(&::core::default::Default::default()),
21343        )?;
21344        let query = ::origincloud_core::query(&request, &["parent", "dnsPolicy"])?;
21345        let call = ::origincloud_core::Request::new(
21346                ::origincloud_core::Method::POST,
21347                format!("/v1beta1/{p0}/dnsPolicies"),
21348            )
21349            .with_body(body)
21350            .with_query(query)
21351            .idempotent();
21352        let operation = self.service.call(call).await?;
21353        Ok(
21354            ::origincloud_core::Operation::new(
21355                self.service.clone(),
21356                operation,
21357                "origincloud.network.v1beta1.DnsPolicy",
21358            ),
21359        )
21360    }
21361    /// Changes a DNS policy's relay settings or tags. The operation is done
21362    /// once the change is recorded; the resolvers of every VPC relaying
21363    /// through the policy apply it within seconds.
21364    ///
21365    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21366    pub async fn update_dns_policy(
21367        &self,
21368        mut request: UpdateDnsPolicyRequest,
21369    ) -> ::core::result::Result<
21370        ::origincloud_core::Operation<DnsPolicy>,
21371        ::origincloud_core::Error,
21372    > {
21373        if request.request_id.is_empty() {
21374            request.request_id = ::origincloud_core::new_request_id();
21375        }
21376        let p0 = ::origincloud_core::path_value(
21377            "dnsPolicy.name",
21378            request.dns_policy.as_ref().map_or("", |m| m.name.as_str()),
21379            "projects/*/regions/*/dnsPolicies/*",
21380        )?;
21381        let body = ::origincloud_core::json_body(
21382            request.dns_policy.as_ref().unwrap_or(&::core::default::Default::default()),
21383        )?;
21384        let query = ::origincloud_core::query(
21385            &request,
21386            &["dnsPolicy.name", "dnsPolicy"],
21387        )?;
21388        let call = ::origincloud_core::Request::new(
21389                ::origincloud_core::Method::PATCH,
21390                format!("/v1beta1/{p0}"),
21391            )
21392            .with_body(body)
21393            .with_query(query)
21394            .idempotent();
21395        let operation = self.service.call(call).await?;
21396        Ok(
21397            ::origincloud_core::Operation::new(
21398                self.service.clone(),
21399                operation,
21400                "origincloud.network.v1beta1.DnsPolicy",
21401            ),
21402        )
21403    }
21404    /// Deletes a DNS policy. Refused for the project's default policy and
21405    /// while a DNS policy association names it. The operation is done once
21406    /// the change is recorded.
21407    ///
21408    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21409    pub async fn delete_dns_policy(
21410        &self,
21411        mut request: DeleteDnsPolicyRequest,
21412    ) -> ::core::result::Result<
21413        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21414        ::origincloud_core::Error,
21415    > {
21416        if request.request_id.is_empty() {
21417            request.request_id = ::origincloud_core::new_request_id();
21418        }
21419        let p0 = ::origincloud_core::path_value(
21420            "name",
21421            &request.name,
21422            "projects/*/regions/*/dnsPolicies/*",
21423        )?;
21424        let query = ::origincloud_core::query(&request, &["name"])?;
21425        let call = ::origincloud_core::Request::new(
21426                ::origincloud_core::Method::DELETE,
21427                format!("/v1beta1/{p0}"),
21428            )
21429            .with_query(query)
21430            .idempotent();
21431        let operation = self.service.call(call).await?;
21432        Ok(
21433            ::origincloud_core::Operation::new(
21434                self.service.clone(),
21435                operation,
21436                "google.protobuf.Empty",
21437            ),
21438        )
21439    }
21440    /// Makes a DNS policy the project's default in its region, in place of
21441    /// the one before. Every VPC of the region without a DNS policy
21442    /// association relays through it from then on. Making the default the
21443    /// default changes nothing. The operation is done once the change is
21444    /// recorded; the resolvers apply it within seconds.
21445    ///
21446    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicy`] once the change is done.
21447    pub async fn set_default_dns_policy(
21448        &self,
21449        mut request: SetDefaultDnsPolicyRequest,
21450    ) -> ::core::result::Result<
21451        ::origincloud_core::Operation<DnsPolicy>,
21452        ::origincloud_core::Error,
21453    > {
21454        if request.request_id.is_empty() {
21455            request.request_id = ::origincloud_core::new_request_id();
21456        }
21457        let p0 = ::origincloud_core::path_value(
21458            "name",
21459            &request.name,
21460            "projects/*/regions/*/dnsPolicies/*",
21461        )?;
21462        let body = ::origincloud_core::json_body(&request)?;
21463        let call = ::origincloud_core::Request::new(
21464                ::origincloud_core::Method::POST,
21465                format!("/v1beta1/{p0}:setDefault"),
21466            )
21467            .with_body(body)
21468            .idempotent();
21469        let operation = self.service.call(call).await?;
21470        Ok(
21471            ::origincloud_core::Operation::new(
21472                self.service.clone(),
21473                operation,
21474                "origincloud.network.v1beta1.DnsPolicy",
21475            ),
21476        )
21477    }
21478}
21479/// Calls `DnsPolicyAssociationService`.
21480///
21481/// DNS policy associations: which DNS policy a VPC's resolver relays through.
21482/// A VPC has at most one; without one, it relays through the project's
21483/// default DNS policy in its region (see the VPC's `dns_policy`). An
21484/// association's id is the id of the DNS policy it names, so a client that
21485/// knows the VPC and the policy names the association without listing. To
21486/// move a VPC to another policy, delete its association and create another.
21487#[derive(Clone, Debug)]
21488pub struct DnsPolicyAssociationClient {
21489    service: ::origincloud_core::Service,
21490}
21491impl DnsPolicyAssociationClient {
21492    /// Returns a client of `DnsPolicyAssociationService` that sends its calls through `client`.
21493    pub fn new(client: &::origincloud_core::Client) -> Self {
21494        Self {
21495            service: client.service("network", true),
21496        }
21497    }
21498    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21499    pub fn service(&self) -> &::origincloud_core::Service {
21500        &self.service
21501    }
21502    /// Returns a DNS policy association.
21503    pub async fn get_dns_policy_association(
21504        &self,
21505        request: GetDnsPolicyAssociationRequest,
21506    ) -> ::core::result::Result<DnsPolicyAssociation, ::origincloud_core::Error> {
21507        let p0 = ::origincloud_core::path_value(
21508            "name",
21509            &request.name,
21510            "projects/*/regions/*/vpcs/*/dnsPolicyAssociations/*",
21511        )?;
21512        let query = ::origincloud_core::query(&request, &["name"])?;
21513        let call = ::origincloud_core::Request::new(
21514                ::origincloud_core::Method::GET,
21515                format!("/v1beta1/{p0}"),
21516            )
21517            .with_query(query)
21518            .idempotent();
21519        self.service.call(call).await
21520    }
21521    /// Lists a VPC's DNS policy associations: none or one.
21522    pub async fn list_dns_policy_associations(
21523        &self,
21524        request: ListDnsPolicyAssociationsRequest,
21525    ) -> ::core::result::Result<
21526        ListDnsPolicyAssociationsResponse,
21527        ::origincloud_core::Error,
21528    > {
21529        let p0 = ::origincloud_core::path_value(
21530            "parent",
21531            &request.parent,
21532            "projects/*/regions/*/vpcs/*",
21533        )?;
21534        let query = ::origincloud_core::query(&request, &["parent"])?;
21535        let call = ::origincloud_core::Request::new(
21536                ::origincloud_core::Method::GET,
21537                format!("/v1beta1/{p0}/dnsPolicyAssociations"),
21538            )
21539            .with_query(query)
21540            .idempotent();
21541        self.service.call(call).await
21542    }
21543    /// 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.
21544    pub fn all_dns_policy_associations(
21545        &self,
21546        request: ListDnsPolicyAssociationsRequest,
21547    ) -> ::origincloud_core::Pages<DnsPolicyAssociation> {
21548        let client = self.clone();
21549        ::origincloud_core::Pages::new(
21550            request,
21551            move |request: ListDnsPolicyAssociationsRequest| {
21552                let client = client.clone();
21553                async move {
21554                    let page = client.list_dns_policy_associations(request).await?;
21555                    Ok((page.dns_policy_associations, page.next_page_token))
21556                }
21557            },
21558            |
21559                request: &mut ListDnsPolicyAssociationsRequest,
21560                token: ::std::string::String|
21561            request.page_token = token,
21562        )
21563    }
21564    /// Associates a DNS policy with a VPC. Refused with `FAILED_PRECONDITION`
21565    /// when the VPC has a DNS policy association. The operation is done once
21566    /// the change is recorded; the VPC's resolver applies it within seconds.
21567    ///
21568    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`DnsPolicyAssociation`] once the change is done.
21569    pub async fn create_dns_policy_association(
21570        &self,
21571        mut request: CreateDnsPolicyAssociationRequest,
21572    ) -> ::core::result::Result<
21573        ::origincloud_core::Operation<DnsPolicyAssociation>,
21574        ::origincloud_core::Error,
21575    > {
21576        if request.request_id.is_empty() {
21577            request.request_id = ::origincloud_core::new_request_id();
21578        }
21579        let p0 = ::origincloud_core::path_value(
21580            "parent",
21581            &request.parent,
21582            "projects/*/regions/*/vpcs/*",
21583        )?;
21584        let body = ::origincloud_core::json_body(
21585            request
21586                .dns_policy_association
21587                .as_ref()
21588                .unwrap_or(&::core::default::Default::default()),
21589        )?;
21590        let query = ::origincloud_core::query(
21591            &request,
21592            &["parent", "dnsPolicyAssociation"],
21593        )?;
21594        let call = ::origincloud_core::Request::new(
21595                ::origincloud_core::Method::POST,
21596                format!("/v1beta1/{p0}/dnsPolicyAssociations"),
21597            )
21598            .with_body(body)
21599            .with_query(query)
21600            .idempotent();
21601        let operation = self.service.call(call).await?;
21602        Ok(
21603            ::origincloud_core::Operation::new(
21604                self.service.clone(),
21605                operation,
21606                "origincloud.network.v1beta1.DnsPolicyAssociation",
21607            ),
21608        )
21609    }
21610    /// Removes a VPC's DNS policy association: the VPC relays through the
21611    /// project's default DNS policy in its region again. The operation is done
21612    /// once the change is recorded; the VPC's resolver applies it within
21613    /// seconds.
21614    ///
21615    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21616    pub async fn delete_dns_policy_association(
21617        &self,
21618        mut request: DeleteDnsPolicyAssociationRequest,
21619    ) -> ::core::result::Result<
21620        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21621        ::origincloud_core::Error,
21622    > {
21623        if request.request_id.is_empty() {
21624            request.request_id = ::origincloud_core::new_request_id();
21625        }
21626        let p0 = ::origincloud_core::path_value(
21627            "name",
21628            &request.name,
21629            "projects/*/regions/*/vpcs/*/dnsPolicyAssociations/*",
21630        )?;
21631        let query = ::origincloud_core::query(&request, &["name"])?;
21632        let call = ::origincloud_core::Request::new(
21633                ::origincloud_core::Method::DELETE,
21634                format!("/v1beta1/{p0}"),
21635            )
21636            .with_query(query)
21637            .idempotent();
21638        let operation = self.service.call(call).await?;
21639        Ok(
21640            ::origincloud_core::Operation::new(
21641                self.service.clone(),
21642                operation,
21643                "google.protobuf.Empty",
21644            ),
21645        )
21646    }
21647}
21648/// Calls `FloatingIpService`.
21649///
21650/// Floating IPs: public IPv4 addresses of your own in one zone, kept until
21651/// released. Associated with a network interface
21652/// (`FloatingIpAssociationService`), the address reaches the interface's
21653/// private IPv4 address both ways (static 1:1 NAT). The interface's subnet
21654/// reaches, and is reached from, the internet over IPv4 only if its own
21655/// route table has the IPv4 default route (see the subnet's `route_table`).
21656#[derive(Clone, Debug)]
21657pub struct FloatingIpClient {
21658    service: ::origincloud_core::Service,
21659}
21660impl FloatingIpClient {
21661    /// Returns a client of `FloatingIpService` that sends its calls through `client`.
21662    pub fn new(client: &::origincloud_core::Client) -> Self {
21663        Self {
21664            service: client.service("network", true),
21665        }
21666    }
21667    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21668    pub fn service(&self) -> &::origincloud_core::Service {
21669        &self.service
21670    }
21671    /// Returns a floating IP.
21672    pub async fn get_floating_ip(
21673        &self,
21674        request: GetFloatingIpRequest,
21675    ) -> ::core::result::Result<FloatingIp, ::origincloud_core::Error> {
21676        let p0 = ::origincloud_core::path_value(
21677            "name",
21678            &request.name,
21679            "projects/*/zones/*/floatingIps/*",
21680        )?;
21681        let query = ::origincloud_core::query(&request, &["name"])?;
21682        let call = ::origincloud_core::Request::new(
21683                ::origincloud_core::Method::GET,
21684                format!("/v1beta1/{p0}"),
21685            )
21686            .with_query(query)
21687            .idempotent();
21688        self.service.call(call).await
21689    }
21690    /// Lists the floating IPs in a zone, oldest first, those the platform
21691    /// assigned at launch included.
21692    pub async fn list_floating_ips(
21693        &self,
21694        request: ListFloatingIpsRequest,
21695    ) -> ::core::result::Result<ListFloatingIpsResponse, ::origincloud_core::Error> {
21696        let p0 = ::origincloud_core::path_value(
21697            "parent",
21698            &request.parent,
21699            "projects/*/zones/*",
21700        )?;
21701        let query = ::origincloud_core::query(&request, &["parent"])?;
21702        let call = ::origincloud_core::Request::new(
21703                ::origincloud_core::Method::GET,
21704                format!("/v1beta1/{p0}/floatingIps"),
21705            )
21706            .with_query(query)
21707            .idempotent();
21708        self.service.call(call).await
21709    }
21710    /// 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.
21711    pub fn all_floating_ips(
21712        &self,
21713        request: ListFloatingIpsRequest,
21714    ) -> ::origincloud_core::Pages<FloatingIp> {
21715        let client = self.clone();
21716        ::origincloud_core::Pages::new(
21717            request,
21718            move |request: ListFloatingIpsRequest| {
21719                let client = client.clone();
21720                async move {
21721                    let page = client.list_floating_ips(request).await?;
21722                    Ok((page.floating_ips, page.next_page_token))
21723                }
21724            },
21725            |request: &mut ListFloatingIpsRequest, token: ::std::string::String| {
21726                request.page_token = token;
21727            },
21728        )
21729    }
21730    /// Allocates a floating IP from the zone's public addresses, associated
21731    /// with nothing. The operation is done once the address is recorded as
21732    /// yours.
21733    ///
21734    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIp`] once the change is done.
21735    pub async fn create_floating_ip(
21736        &self,
21737        mut request: CreateFloatingIpRequest,
21738    ) -> ::core::result::Result<
21739        ::origincloud_core::Operation<FloatingIp>,
21740        ::origincloud_core::Error,
21741    > {
21742        if request.request_id.is_empty() {
21743            request.request_id = ::origincloud_core::new_request_id();
21744        }
21745        let p0 = ::origincloud_core::path_value(
21746            "parent",
21747            &request.parent,
21748            "projects/*/zones/*",
21749        )?;
21750        let body = ::origincloud_core::json_body(
21751            request.floating_ip.as_ref().unwrap_or(&::core::default::Default::default()),
21752        )?;
21753        let query = ::origincloud_core::query(&request, &["parent", "floatingIp"])?;
21754        let call = ::origincloud_core::Request::new(
21755                ::origincloud_core::Method::POST,
21756                format!("/v1beta1/{p0}/floatingIps"),
21757            )
21758            .with_body(body)
21759            .with_query(query)
21760            .idempotent();
21761        let operation = self.service.call(call).await?;
21762        Ok(
21763            ::origincloud_core::Operation::new(
21764                self.service.clone(),
21765                operation,
21766                "origincloud.network.v1beta1.FloatingIp",
21767            ),
21768        )
21769    }
21770    /// Changes a floating IP's tags. The operation is done once the change is
21771    /// recorded.
21772    ///
21773    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIp`] once the change is done.
21774    pub async fn update_floating_ip(
21775        &self,
21776        mut request: UpdateFloatingIpRequest,
21777    ) -> ::core::result::Result<
21778        ::origincloud_core::Operation<FloatingIp>,
21779        ::origincloud_core::Error,
21780    > {
21781        if request.request_id.is_empty() {
21782            request.request_id = ::origincloud_core::new_request_id();
21783        }
21784        let p0 = ::origincloud_core::path_value(
21785            "floatingIp.name",
21786            request.floating_ip.as_ref().map_or("", |m| m.name.as_str()),
21787            "projects/*/zones/*/floatingIps/*",
21788        )?;
21789        let body = ::origincloud_core::json_body(
21790            request.floating_ip.as_ref().unwrap_or(&::core::default::Default::default()),
21791        )?;
21792        let query = ::origincloud_core::query(
21793            &request,
21794            &["floatingIp.name", "floatingIp"],
21795        )?;
21796        let call = ::origincloud_core::Request::new(
21797                ::origincloud_core::Method::PATCH,
21798                format!("/v1beta1/{p0}"),
21799            )
21800            .with_body(body)
21801            .with_query(query)
21802            .idempotent();
21803        let operation = self.service.call(call).await?;
21804        Ok(
21805            ::origincloud_core::Operation::new(
21806                self.service.clone(),
21807                operation,
21808                "origincloud.network.v1beta1.FloatingIp",
21809            ),
21810        )
21811    }
21812    /// Releases a floating IP: its address goes back to the zone. Refused
21813    /// while it is associated with a network interface or a NAT gateway uses
21814    /// it. The operation is done once the change is recorded.
21815    ///
21816    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21817    pub async fn delete_floating_ip(
21818        &self,
21819        mut request: DeleteFloatingIpRequest,
21820    ) -> ::core::result::Result<
21821        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21822        ::origincloud_core::Error,
21823    > {
21824        if request.request_id.is_empty() {
21825            request.request_id = ::origincloud_core::new_request_id();
21826        }
21827        let p0 = ::origincloud_core::path_value(
21828            "name",
21829            &request.name,
21830            "projects/*/zones/*/floatingIps/*",
21831        )?;
21832        let query = ::origincloud_core::query(&request, &["name"])?;
21833        let call = ::origincloud_core::Request::new(
21834                ::origincloud_core::Method::DELETE,
21835                format!("/v1beta1/{p0}"),
21836            )
21837            .with_query(query)
21838            .idempotent();
21839        let operation = self.service.call(call).await?;
21840        Ok(
21841            ::origincloud_core::Operation::new(
21842                self.service.clone(),
21843                operation,
21844                "google.protobuf.Empty",
21845            ),
21846        )
21847    }
21848}
21849/// Calls `FloatingIpAssociationService`.
21850///
21851/// Floating IP associations: which network interface a floating IP reaches. A
21852/// floating IP has at most one (see the floating IP's `network_interface`).
21853/// An association's id is the id of the network interface it names, so a
21854/// client that knows the floating IP and the interface names the association
21855/// without listing. To move an address to another interface, delete its
21856/// association and create another.
21857#[derive(Clone, Debug)]
21858pub struct FloatingIpAssociationClient {
21859    service: ::origincloud_core::Service,
21860}
21861impl FloatingIpAssociationClient {
21862    /// Returns a client of `FloatingIpAssociationService` that sends its calls through `client`.
21863    pub fn new(client: &::origincloud_core::Client) -> Self {
21864        Self {
21865            service: client.service("network", true),
21866        }
21867    }
21868    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
21869    pub fn service(&self) -> &::origincloud_core::Service {
21870        &self.service
21871    }
21872    /// Returns a floating IP association.
21873    pub async fn get_floating_ip_association(
21874        &self,
21875        request: GetFloatingIpAssociationRequest,
21876    ) -> ::core::result::Result<FloatingIpAssociation, ::origincloud_core::Error> {
21877        let p0 = ::origincloud_core::path_value(
21878            "name",
21879            &request.name,
21880            "projects/*/zones/*/floatingIps/*/associations/*",
21881        )?;
21882        let query = ::origincloud_core::query(&request, &["name"])?;
21883        let call = ::origincloud_core::Request::new(
21884                ::origincloud_core::Method::GET,
21885                format!("/v1beta1/{p0}"),
21886            )
21887            .with_query(query)
21888            .idempotent();
21889        self.service.call(call).await
21890    }
21891    /// Lists a floating IP's associations: none or one.
21892    pub async fn list_floating_ip_associations(
21893        &self,
21894        request: ListFloatingIpAssociationsRequest,
21895    ) -> ::core::result::Result<
21896        ListFloatingIpAssociationsResponse,
21897        ::origincloud_core::Error,
21898    > {
21899        let p0 = ::origincloud_core::path_value(
21900            "parent",
21901            &request.parent,
21902            "projects/*/zones/*/floatingIps/*",
21903        )?;
21904        let query = ::origincloud_core::query(&request, &["parent"])?;
21905        let call = ::origincloud_core::Request::new(
21906                ::origincloud_core::Method::GET,
21907                format!("/v1beta1/{p0}/associations"),
21908            )
21909            .with_query(query)
21910            .idempotent();
21911        self.service.call(call).await
21912    }
21913    /// 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.
21914    pub fn all_floating_ip_associations(
21915        &self,
21916        request: ListFloatingIpAssociationsRequest,
21917    ) -> ::origincloud_core::Pages<FloatingIpAssociation> {
21918        let client = self.clone();
21919        ::origincloud_core::Pages::new(
21920            request,
21921            move |request: ListFloatingIpAssociationsRequest| {
21922                let client = client.clone();
21923                async move {
21924                    let page = client.list_floating_ip_associations(request).await?;
21925                    Ok((page.floating_ip_associations, page.next_page_token))
21926                }
21927            },
21928            |
21929                request: &mut ListFloatingIpAssociationsRequest,
21930                token: ::std::string::String|
21931            request.page_token = token,
21932        )
21933    }
21934    /// Associates a floating IP with a network interface. Refused with
21935    /// `FAILED_PRECONDITION` when the floating IP has an association, and
21936    /// while the address backs a NAT gateway. The operation is done once the
21937    /// change is recorded; the network applies it within seconds.
21938    ///
21939    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`FloatingIpAssociation`] once the change is done.
21940    pub async fn create_floating_ip_association(
21941        &self,
21942        mut request: CreateFloatingIpAssociationRequest,
21943    ) -> ::core::result::Result<
21944        ::origincloud_core::Operation<FloatingIpAssociation>,
21945        ::origincloud_core::Error,
21946    > {
21947        if request.request_id.is_empty() {
21948            request.request_id = ::origincloud_core::new_request_id();
21949        }
21950        let p0 = ::origincloud_core::path_value(
21951            "parent",
21952            &request.parent,
21953            "projects/*/zones/*/floatingIps/*",
21954        )?;
21955        let body = ::origincloud_core::json_body(
21956            request
21957                .floating_ip_association
21958                .as_ref()
21959                .unwrap_or(&::core::default::Default::default()),
21960        )?;
21961        let query = ::origincloud_core::query(
21962            &request,
21963            &["parent", "floatingIpAssociation"],
21964        )?;
21965        let call = ::origincloud_core::Request::new(
21966                ::origincloud_core::Method::POST,
21967                format!("/v1beta1/{p0}/associations"),
21968            )
21969            .with_body(body)
21970            .with_query(query)
21971            .idempotent();
21972        let operation = self.service.call(call).await?;
21973        Ok(
21974            ::origincloud_core::Operation::new(
21975                self.service.clone(),
21976                operation,
21977                "origincloud.network.v1beta1.FloatingIpAssociation",
21978            ),
21979        )
21980    }
21981    /// Removes a floating IP's association: the address reaches nothing, and
21982    /// stays allocated. The operation is done once the change is recorded; the
21983    /// network applies it within seconds.
21984    ///
21985    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
21986    pub async fn delete_floating_ip_association(
21987        &self,
21988        mut request: DeleteFloatingIpAssociationRequest,
21989    ) -> ::core::result::Result<
21990        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
21991        ::origincloud_core::Error,
21992    > {
21993        if request.request_id.is_empty() {
21994            request.request_id = ::origincloud_core::new_request_id();
21995        }
21996        let p0 = ::origincloud_core::path_value(
21997            "name",
21998            &request.name,
21999            "projects/*/zones/*/floatingIps/*/associations/*",
22000        )?;
22001        let query = ::origincloud_core::query(&request, &["name"])?;
22002        let call = ::origincloud_core::Request::new(
22003                ::origincloud_core::Method::DELETE,
22004                format!("/v1beta1/{p0}"),
22005            )
22006            .with_query(query)
22007            .idempotent();
22008        let operation = self.service.call(call).await?;
22009        Ok(
22010            ::origincloud_core::Operation::new(
22011                self.service.clone(),
22012                operation,
22013                "google.protobuf.Empty",
22014            ),
22015        )
22016    }
22017}
22018/// Calls `InternetGatewayService`.
22019///
22020/// Internet gateways: a VPC's way to and from the internet, for its
22021/// instances' floating IPs and IPv6 addresses and for its NAT gateways. A VPC
22022/// has at most one, and a subnet reaches it through a route that targets it.
22023/// Internet access is decided per VPC and address family: while any route
22024/// table the VPC's subnets use has a family's default route to the gateway,
22025/// traffic of that family leaves the VPC and reaches its floating IPs and
22026/// IPv6 addresses.
22027#[derive(Clone, Debug)]
22028pub struct InternetGatewayClient {
22029    service: ::origincloud_core::Service,
22030}
22031impl InternetGatewayClient {
22032    /// Returns a client of `InternetGatewayService` that sends its calls through `client`.
22033    pub fn new(client: &::origincloud_core::Client) -> Self {
22034        Self {
22035            service: client.service("network", true),
22036        }
22037    }
22038    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22039    pub fn service(&self) -> &::origincloud_core::Service {
22040        &self.service
22041    }
22042    /// Returns an internet gateway.
22043    pub async fn get_internet_gateway(
22044        &self,
22045        request: GetInternetGatewayRequest,
22046    ) -> ::core::result::Result<InternetGateway, ::origincloud_core::Error> {
22047        let p0 = ::origincloud_core::path_value(
22048            "name",
22049            &request.name,
22050            "projects/*/regions/*/internetGateways/*",
22051        )?;
22052        let query = ::origincloud_core::query(&request, &["name"])?;
22053        let call = ::origincloud_core::Request::new(
22054                ::origincloud_core::Method::GET,
22055                format!("/v1beta1/{p0}"),
22056            )
22057            .with_query(query)
22058            .idempotent();
22059        self.service.call(call).await
22060    }
22061    /// Lists the internet gateways in a region, oldest first.
22062    pub async fn list_internet_gateways(
22063        &self,
22064        request: ListInternetGatewaysRequest,
22065    ) -> ::core::result::Result<
22066        ListInternetGatewaysResponse,
22067        ::origincloud_core::Error,
22068    > {
22069        let p0 = ::origincloud_core::path_value(
22070            "parent",
22071            &request.parent,
22072            "projects/*/regions/*",
22073        )?;
22074        let query = ::origincloud_core::query(&request, &["parent"])?;
22075        let call = ::origincloud_core::Request::new(
22076                ::origincloud_core::Method::GET,
22077                format!("/v1beta1/{p0}/internetGateways"),
22078            )
22079            .with_query(query)
22080            .idempotent();
22081        self.service.call(call).await
22082    }
22083    /// 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.
22084    pub fn all_internet_gateways(
22085        &self,
22086        request: ListInternetGatewaysRequest,
22087    ) -> ::origincloud_core::Pages<InternetGateway> {
22088        let client = self.clone();
22089        ::origincloud_core::Pages::new(
22090            request,
22091            move |request: ListInternetGatewaysRequest| {
22092                let client = client.clone();
22093                async move {
22094                    let page = client.list_internet_gateways(request).await?;
22095                    Ok((page.internet_gateways, page.next_page_token))
22096                }
22097            },
22098            |request: &mut ListInternetGatewaysRequest, token: ::std::string::String| {
22099                request.page_token = token;
22100            },
22101        )
22102    }
22103    /// Creates a VPC's internet gateway. Refused with `FAILED_PRECONDITION`
22104    /// when the VPC has one. The operation is done once the change is recorded;
22105    /// the network applies it within seconds.
22106    ///
22107    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`InternetGateway`] once the change is done.
22108    pub async fn create_internet_gateway(
22109        &self,
22110        mut request: CreateInternetGatewayRequest,
22111    ) -> ::core::result::Result<
22112        ::origincloud_core::Operation<InternetGateway>,
22113        ::origincloud_core::Error,
22114    > {
22115        if request.request_id.is_empty() {
22116            request.request_id = ::origincloud_core::new_request_id();
22117        }
22118        let p0 = ::origincloud_core::path_value(
22119            "parent",
22120            &request.parent,
22121            "projects/*/regions/*",
22122        )?;
22123        let body = ::origincloud_core::json_body(
22124            request
22125                .internet_gateway
22126                .as_ref()
22127                .unwrap_or(&::core::default::Default::default()),
22128        )?;
22129        let query = ::origincloud_core::query(&request, &["parent", "internetGateway"])?;
22130        let call = ::origincloud_core::Request::new(
22131                ::origincloud_core::Method::POST,
22132                format!("/v1beta1/{p0}/internetGateways"),
22133            )
22134            .with_body(body)
22135            .with_query(query)
22136            .idempotent();
22137        let operation = self.service.call(call).await?;
22138        Ok(
22139            ::origincloud_core::Operation::new(
22140                self.service.clone(),
22141                operation,
22142                "origincloud.network.v1beta1.InternetGateway",
22143            ),
22144        )
22145    }
22146    /// Changes an internet gateway's tags. The operation is done once the
22147    /// change is recorded.
22148    ///
22149    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`InternetGateway`] once the change is done.
22150    pub async fn update_internet_gateway(
22151        &self,
22152        mut request: UpdateInternetGatewayRequest,
22153    ) -> ::core::result::Result<
22154        ::origincloud_core::Operation<InternetGateway>,
22155        ::origincloud_core::Error,
22156    > {
22157        if request.request_id.is_empty() {
22158            request.request_id = ::origincloud_core::new_request_id();
22159        }
22160        let p0 = ::origincloud_core::path_value(
22161            "internetGateway.name",
22162            request.internet_gateway.as_ref().map_or("", |m| m.name.as_str()),
22163            "projects/*/regions/*/internetGateways/*",
22164        )?;
22165        let body = ::origincloud_core::json_body(
22166            request
22167                .internet_gateway
22168                .as_ref()
22169                .unwrap_or(&::core::default::Default::default()),
22170        )?;
22171        let query = ::origincloud_core::query(
22172            &request,
22173            &["internetGateway.name", "internetGateway"],
22174        )?;
22175        let call = ::origincloud_core::Request::new(
22176                ::origincloud_core::Method::PATCH,
22177                format!("/v1beta1/{p0}"),
22178            )
22179            .with_body(body)
22180            .with_query(query)
22181            .idempotent();
22182        let operation = self.service.call(call).await?;
22183        Ok(
22184            ::origincloud_core::Operation::new(
22185                self.service.clone(),
22186                operation,
22187                "origincloud.network.v1beta1.InternetGateway",
22188            ),
22189        )
22190    }
22191    /// Deletes an internet gateway, which cuts the VPC off from the internet.
22192    /// Refused while a route targets it. The operation is done once the
22193    /// change is recorded; the network applies it within seconds.
22194    ///
22195    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22196    pub async fn delete_internet_gateway(
22197        &self,
22198        mut request: DeleteInternetGatewayRequest,
22199    ) -> ::core::result::Result<
22200        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22201        ::origincloud_core::Error,
22202    > {
22203        if request.request_id.is_empty() {
22204            request.request_id = ::origincloud_core::new_request_id();
22205        }
22206        let p0 = ::origincloud_core::path_value(
22207            "name",
22208            &request.name,
22209            "projects/*/regions/*/internetGateways/*",
22210        )?;
22211        let query = ::origincloud_core::query(&request, &["name"])?;
22212        let call = ::origincloud_core::Request::new(
22213                ::origincloud_core::Method::DELETE,
22214                format!("/v1beta1/{p0}"),
22215            )
22216            .with_query(query)
22217            .idempotent();
22218        let operation = self.service.call(call).await?;
22219        Ok(
22220            ::origincloud_core::Operation::new(
22221                self.service.clone(),
22222                operation,
22223                "google.protobuf.Empty",
22224            ),
22225        )
22226    }
22227}
22228/// Calls `NatGatewayService`.
22229///
22230/// NAT gateways: shared IPv4 egress for instances without a floating IP of
22231/// their own. Instances in a subnet whose route table sends the IPv4 default
22232/// route to a NAT gateway reach the internet as the gateway's floating IP,
22233/// and can't be reached from it.
22234#[derive(Clone, Debug)]
22235pub struct NatGatewayClient {
22236    service: ::origincloud_core::Service,
22237}
22238impl NatGatewayClient {
22239    /// Returns a client of `NatGatewayService` that sends its calls through `client`.
22240    pub fn new(client: &::origincloud_core::Client) -> Self {
22241        Self {
22242            service: client.service("network", true),
22243        }
22244    }
22245    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22246    pub fn service(&self) -> &::origincloud_core::Service {
22247        &self.service
22248    }
22249    /// Returns a NAT gateway.
22250    pub async fn get_nat_gateway(
22251        &self,
22252        request: GetNatGatewayRequest,
22253    ) -> ::core::result::Result<NatGateway, ::origincloud_core::Error> {
22254        let p0 = ::origincloud_core::path_value(
22255            "name",
22256            &request.name,
22257            "projects/*/zones/*/natGateways/*",
22258        )?;
22259        let query = ::origincloud_core::query(&request, &["name"])?;
22260        let call = ::origincloud_core::Request::new(
22261                ::origincloud_core::Method::GET,
22262                format!("/v1beta1/{p0}"),
22263            )
22264            .with_query(query)
22265            .idempotent();
22266        self.service.call(call).await
22267    }
22268    /// Lists the NAT gateways in a zone, oldest first.
22269    pub async fn list_nat_gateways(
22270        &self,
22271        request: ListNatGatewaysRequest,
22272    ) -> ::core::result::Result<ListNatGatewaysResponse, ::origincloud_core::Error> {
22273        let p0 = ::origincloud_core::path_value(
22274            "parent",
22275            &request.parent,
22276            "projects/*/zones/*",
22277        )?;
22278        let query = ::origincloud_core::query(&request, &["parent"])?;
22279        let call = ::origincloud_core::Request::new(
22280                ::origincloud_core::Method::GET,
22281                format!("/v1beta1/{p0}/natGateways"),
22282            )
22283            .with_query(query)
22284            .idempotent();
22285        self.service.call(call).await
22286    }
22287    /// 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.
22288    pub fn all_nat_gateways(
22289        &self,
22290        request: ListNatGatewaysRequest,
22291    ) -> ::origincloud_core::Pages<NatGateway> {
22292        let client = self.clone();
22293        ::origincloud_core::Pages::new(
22294            request,
22295            move |request: ListNatGatewaysRequest| {
22296                let client = client.clone();
22297                async move {
22298                    let page = client.list_nat_gateways(request).await?;
22299                    Ok((page.nat_gateways, page.next_page_token))
22300                }
22301            },
22302            |request: &mut ListNatGatewaysRequest, token: ::std::string::String| {
22303                request.page_token = token;
22304            },
22305        )
22306    }
22307    /// Creates a NAT gateway in a public subnet, one whose route table sends
22308    /// the IPv4 default route to an internet gateway, with a floating IP that
22309    /// has no association and backs no other NAT gateway. The operation is
22310    /// done once the change is recorded; the network applies it within
22311    /// seconds.
22312    ///
22313    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NatGateway`] once the change is done.
22314    pub async fn create_nat_gateway(
22315        &self,
22316        mut request: CreateNatGatewayRequest,
22317    ) -> ::core::result::Result<
22318        ::origincloud_core::Operation<NatGateway>,
22319        ::origincloud_core::Error,
22320    > {
22321        if request.request_id.is_empty() {
22322            request.request_id = ::origincloud_core::new_request_id();
22323        }
22324        let p0 = ::origincloud_core::path_value(
22325            "parent",
22326            &request.parent,
22327            "projects/*/zones/*",
22328        )?;
22329        let body = ::origincloud_core::json_body(
22330            request.nat_gateway.as_ref().unwrap_or(&::core::default::Default::default()),
22331        )?;
22332        let query = ::origincloud_core::query(&request, &["parent", "natGateway"])?;
22333        let call = ::origincloud_core::Request::new(
22334                ::origincloud_core::Method::POST,
22335                format!("/v1beta1/{p0}/natGateways"),
22336            )
22337            .with_body(body)
22338            .with_query(query)
22339            .idempotent();
22340        let operation = self.service.call(call).await?;
22341        Ok(
22342            ::origincloud_core::Operation::new(
22343                self.service.clone(),
22344                operation,
22345                "origincloud.network.v1beta1.NatGateway",
22346            ),
22347        )
22348    }
22349    /// Changes a NAT gateway's tags. The operation is done once the change is
22350    /// recorded.
22351    ///
22352    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NatGateway`] once the change is done.
22353    pub async fn update_nat_gateway(
22354        &self,
22355        mut request: UpdateNatGatewayRequest,
22356    ) -> ::core::result::Result<
22357        ::origincloud_core::Operation<NatGateway>,
22358        ::origincloud_core::Error,
22359    > {
22360        if request.request_id.is_empty() {
22361            request.request_id = ::origincloud_core::new_request_id();
22362        }
22363        let p0 = ::origincloud_core::path_value(
22364            "natGateway.name",
22365            request.nat_gateway.as_ref().map_or("", |m| m.name.as_str()),
22366            "projects/*/zones/*/natGateways/*",
22367        )?;
22368        let body = ::origincloud_core::json_body(
22369            request.nat_gateway.as_ref().unwrap_or(&::core::default::Default::default()),
22370        )?;
22371        let query = ::origincloud_core::query(
22372            &request,
22373            &["natGateway.name", "natGateway"],
22374        )?;
22375        let call = ::origincloud_core::Request::new(
22376                ::origincloud_core::Method::PATCH,
22377                format!("/v1beta1/{p0}"),
22378            )
22379            .with_body(body)
22380            .with_query(query)
22381            .idempotent();
22382        let operation = self.service.call(call).await?;
22383        Ok(
22384            ::origincloud_core::Operation::new(
22385                self.service.clone(),
22386                operation,
22387                "origincloud.network.v1beta1.NatGateway",
22388            ),
22389        )
22390    }
22391    /// Deletes a NAT gateway. Its floating IP stays allocated. Refused while
22392    /// a route targets it. The operation is done once the change is recorded;
22393    /// the network applies it within seconds.
22394    ///
22395    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22396    pub async fn delete_nat_gateway(
22397        &self,
22398        mut request: DeleteNatGatewayRequest,
22399    ) -> ::core::result::Result<
22400        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22401        ::origincloud_core::Error,
22402    > {
22403        if request.request_id.is_empty() {
22404            request.request_id = ::origincloud_core::new_request_id();
22405        }
22406        let p0 = ::origincloud_core::path_value(
22407            "name",
22408            &request.name,
22409            "projects/*/zones/*/natGateways/*",
22410        )?;
22411        let query = ::origincloud_core::query(&request, &["name"])?;
22412        let call = ::origincloud_core::Request::new(
22413                ::origincloud_core::Method::DELETE,
22414                format!("/v1beta1/{p0}"),
22415            )
22416            .with_query(query)
22417            .idempotent();
22418        let operation = self.service.call(call).await?;
22419        Ok(
22420            ::origincloud_core::Operation::new(
22421                self.service.clone(),
22422                operation,
22423                "google.protobuf.Empty",
22424            ),
22425        )
22426    }
22427}
22428/// Calls `NetworkInterfaceService`.
22429///
22430/// Network interfaces: private IPv4 and IPv6 addresses in a subnet, with the
22431/// security groups that filter their traffic. Launching an instance attaches
22432/// existing interfaces, which are created here first; an interface starts
22433/// closed until security group associations open it.
22434#[derive(Clone, Debug)]
22435pub struct NetworkInterfaceClient {
22436    service: ::origincloud_core::Service,
22437}
22438impl NetworkInterfaceClient {
22439    /// Returns a client of `NetworkInterfaceService` that sends its calls through `client`.
22440    pub fn new(client: &::origincloud_core::Client) -> Self {
22441        Self {
22442            service: client.service("network", true),
22443        }
22444    }
22445    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22446    pub fn service(&self) -> &::origincloud_core::Service {
22447        &self.service
22448    }
22449    /// Returns a network interface.
22450    pub async fn get_network_interface(
22451        &self,
22452        request: GetNetworkInterfaceRequest,
22453    ) -> ::core::result::Result<NetworkInterface, ::origincloud_core::Error> {
22454        let p0 = ::origincloud_core::path_value(
22455            "name",
22456            &request.name,
22457            "projects/*/zones/*/networkInterfaces/*",
22458        )?;
22459        let query = ::origincloud_core::query(&request, &["name"])?;
22460        let call = ::origincloud_core::Request::new(
22461                ::origincloud_core::Method::GET,
22462                format!("/v1beta1/{p0}"),
22463            )
22464            .with_query(query)
22465            .idempotent();
22466        self.service.call(call).await
22467    }
22468    /// Lists the network interfaces in a zone, oldest first.
22469    pub async fn list_network_interfaces(
22470        &self,
22471        request: ListNetworkInterfacesRequest,
22472    ) -> ::core::result::Result<
22473        ListNetworkInterfacesResponse,
22474        ::origincloud_core::Error,
22475    > {
22476        let p0 = ::origincloud_core::path_value(
22477            "parent",
22478            &request.parent,
22479            "projects/*/zones/*",
22480        )?;
22481        let query = ::origincloud_core::query(&request, &["parent"])?;
22482        let call = ::origincloud_core::Request::new(
22483                ::origincloud_core::Method::GET,
22484                format!("/v1beta1/{p0}/networkInterfaces"),
22485            )
22486            .with_query(query)
22487            .idempotent();
22488        self.service.call(call).await
22489    }
22490    /// 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.
22491    pub fn all_network_interfaces(
22492        &self,
22493        request: ListNetworkInterfacesRequest,
22494    ) -> ::origincloud_core::Pages<NetworkInterface> {
22495        let client = self.clone();
22496        ::origincloud_core::Pages::new(
22497            request,
22498            move |request: ListNetworkInterfacesRequest| {
22499                let client = client.clone();
22500                async move {
22501                    let page = client.list_network_interfaces(request).await?;
22502                    Ok((page.network_interfaces, page.next_page_token))
22503                }
22504            },
22505            |request: &mut ListNetworkInterfacesRequest, token: ::std::string::String| {
22506                request.page_token = token;
22507            },
22508        )
22509    }
22510    /// Creates an unattached network interface with the next free addresses
22511    /// of its subnet and no security group: it admits and sends nothing until
22512    /// a security group association opens it. The operation is done once the
22513    /// change is recorded; the network applies it within seconds.
22514    ///
22515    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NetworkInterface`] once the change is done.
22516    pub async fn create_network_interface(
22517        &self,
22518        mut request: CreateNetworkInterfaceRequest,
22519    ) -> ::core::result::Result<
22520        ::origincloud_core::Operation<NetworkInterface>,
22521        ::origincloud_core::Error,
22522    > {
22523        if request.request_id.is_empty() {
22524            request.request_id = ::origincloud_core::new_request_id();
22525        }
22526        let p0 = ::origincloud_core::path_value(
22527            "parent",
22528            &request.parent,
22529            "projects/*/zones/*",
22530        )?;
22531        let body = ::origincloud_core::json_body(
22532            request
22533                .network_interface
22534                .as_ref()
22535                .unwrap_or(&::core::default::Default::default()),
22536        )?;
22537        let query = ::origincloud_core::query(
22538            &request,
22539            &["parent", "networkInterface"],
22540        )?;
22541        let call = ::origincloud_core::Request::new(
22542                ::origincloud_core::Method::POST,
22543                format!("/v1beta1/{p0}/networkInterfaces"),
22544            )
22545            .with_body(body)
22546            .with_query(query)
22547            .idempotent();
22548        let operation = self.service.call(call).await?;
22549        Ok(
22550            ::origincloud_core::Operation::new(
22551                self.service.clone(),
22552                operation,
22553                "origincloud.network.v1beta1.NetworkInterface",
22554            ),
22555        )
22556    }
22557    /// Changes a network interface's source-address check or tags, also while
22558    /// it is attached. The operation is done once the change is recorded; the
22559    /// network applies it within seconds.
22560    ///
22561    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`NetworkInterface`] once the change is done.
22562    pub async fn update_network_interface(
22563        &self,
22564        mut request: UpdateNetworkInterfaceRequest,
22565    ) -> ::core::result::Result<
22566        ::origincloud_core::Operation<NetworkInterface>,
22567        ::origincloud_core::Error,
22568    > {
22569        if request.request_id.is_empty() {
22570            request.request_id = ::origincloud_core::new_request_id();
22571        }
22572        let p0 = ::origincloud_core::path_value(
22573            "networkInterface.name",
22574            request.network_interface.as_ref().map_or("", |m| m.name.as_str()),
22575            "projects/*/zones/*/networkInterfaces/*",
22576        )?;
22577        let body = ::origincloud_core::json_body(
22578            request
22579                .network_interface
22580                .as_ref()
22581                .unwrap_or(&::core::default::Default::default()),
22582        )?;
22583        let query = ::origincloud_core::query(
22584            &request,
22585            &["networkInterface.name", "networkInterface"],
22586        )?;
22587        let call = ::origincloud_core::Request::new(
22588                ::origincloud_core::Method::PATCH,
22589                format!("/v1beta1/{p0}"),
22590            )
22591            .with_body(body)
22592            .with_query(query)
22593            .idempotent();
22594        let operation = self.service.call(call).await?;
22595        Ok(
22596            ::origincloud_core::Operation::new(
22597                self.service.clone(),
22598                operation,
22599                "origincloud.network.v1beta1.NetworkInterface",
22600            ),
22601        )
22602    }
22603    /// Deletes a network interface with its security group associations.
22604    /// Refused while it is attached to an instance or a floating IP is
22605    /// associated with it. The operation is done once the change is
22606    /// recorded; the network applies it within seconds.
22607    ///
22608    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22609    pub async fn delete_network_interface(
22610        &self,
22611        mut request: DeleteNetworkInterfaceRequest,
22612    ) -> ::core::result::Result<
22613        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22614        ::origincloud_core::Error,
22615    > {
22616        if request.request_id.is_empty() {
22617            request.request_id = ::origincloud_core::new_request_id();
22618        }
22619        let p0 = ::origincloud_core::path_value(
22620            "name",
22621            &request.name,
22622            "projects/*/zones/*/networkInterfaces/*",
22623        )?;
22624        let query = ::origincloud_core::query(&request, &["name"])?;
22625        let call = ::origincloud_core::Request::new(
22626                ::origincloud_core::Method::DELETE,
22627                format!("/v1beta1/{p0}"),
22628            )
22629            .with_query(query)
22630            .idempotent();
22631        let operation = self.service.call(call).await?;
22632        Ok(
22633            ::origincloud_core::Operation::new(
22634                self.service.clone(),
22635                operation,
22636                "google.protobuf.Empty",
22637            ),
22638        )
22639    }
22640}
22641/// Calls `RouteService`.
22642///
22643/// Routes: where a route table sends traffic to a destination outside the
22644/// VPC. A route is immutable: it is created and deleted, never changed, so to
22645/// change one, delete it and create its replacement. A table has at most one
22646/// route per destination, so the replacement can only be created once the old
22647/// route is deleted: between the two, the table has no route to that
22648/// destination.
22649#[derive(Clone, Debug)]
22650pub struct RouteClient {
22651    service: ::origincloud_core::Service,
22652}
22653impl RouteClient {
22654    /// Returns a client of `RouteService` that sends its calls through `client`.
22655    pub fn new(client: &::origincloud_core::Client) -> Self {
22656        Self {
22657            service: client.service("network", true),
22658        }
22659    }
22660    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22661    pub fn service(&self) -> &::origincloud_core::Service {
22662        &self.service
22663    }
22664    /// Returns a route.
22665    pub async fn get_route(
22666        &self,
22667        request: GetRouteRequest,
22668    ) -> ::core::result::Result<Route, ::origincloud_core::Error> {
22669        let p0 = ::origincloud_core::path_value(
22670            "name",
22671            &request.name,
22672            "projects/*/regions/*/routeTables/*/routes/*",
22673        )?;
22674        let query = ::origincloud_core::query(&request, &["name"])?;
22675        let call = ::origincloud_core::Request::new(
22676                ::origincloud_core::Method::GET,
22677                format!("/v1beta1/{p0}"),
22678            )
22679            .with_query(query)
22680            .idempotent();
22681        self.service.call(call).await
22682    }
22683    /// Lists a route table's routes, oldest first. Its local routes aren't
22684    /// listed: they are the table's `local_routes`.
22685    pub async fn list_routes(
22686        &self,
22687        request: ListRoutesRequest,
22688    ) -> ::core::result::Result<ListRoutesResponse, ::origincloud_core::Error> {
22689        let p0 = ::origincloud_core::path_value(
22690            "parent",
22691            &request.parent,
22692            "projects/*/regions/*/routeTables/*",
22693        )?;
22694        let query = ::origincloud_core::query(&request, &["parent"])?;
22695        let call = ::origincloud_core::Request::new(
22696                ::origincloud_core::Method::GET,
22697                format!("/v1beta1/{p0}/routes"),
22698            )
22699            .with_query(query)
22700            .idempotent();
22701        self.service.call(call).await
22702    }
22703    /// 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.
22704    pub fn all_routes(
22705        &self,
22706        request: ListRoutesRequest,
22707    ) -> ::origincloud_core::Pages<Route> {
22708        let client = self.clone();
22709        ::origincloud_core::Pages::new(
22710            request,
22711            move |request: ListRoutesRequest| {
22712                let client = client.clone();
22713                async move {
22714                    let page = client.list_routes(request).await?;
22715                    Ok((page.routes, page.next_page_token))
22716                }
22717            },
22718            |request: &mut ListRoutesRequest, token: ::std::string::String| {
22719                request.page_token = token;
22720            },
22721        )
22722    }
22723    /// Adds a route to a route table. Refused with `FAILED_PRECONDITION` when
22724    /// the table has a route to the same destination. The operation is done
22725    /// once the change is recorded; the network applies it within seconds.
22726    ///
22727    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`Route`] once the change is done.
22728    pub async fn create_route(
22729        &self,
22730        mut request: CreateRouteRequest,
22731    ) -> ::core::result::Result<
22732        ::origincloud_core::Operation<Route>,
22733        ::origincloud_core::Error,
22734    > {
22735        if request.request_id.is_empty() {
22736            request.request_id = ::origincloud_core::new_request_id();
22737        }
22738        let p0 = ::origincloud_core::path_value(
22739            "parent",
22740            &request.parent,
22741            "projects/*/regions/*/routeTables/*",
22742        )?;
22743        let body = ::origincloud_core::json_body(
22744            request.route.as_ref().unwrap_or(&::core::default::Default::default()),
22745        )?;
22746        let query = ::origincloud_core::query(&request, &["parent", "route"])?;
22747        let call = ::origincloud_core::Request::new(
22748                ::origincloud_core::Method::POST,
22749                format!("/v1beta1/{p0}/routes"),
22750            )
22751            .with_body(body)
22752            .with_query(query)
22753            .idempotent();
22754        let operation = self.service.call(call).await?;
22755        Ok(
22756            ::origincloud_core::Operation::new(
22757                self.service.clone(),
22758                operation,
22759                "origincloud.network.v1beta1.Route",
22760            ),
22761        )
22762    }
22763    /// Removes a route from its route table. The operation is done once the
22764    /// change is recorded; the network applies it within seconds.
22765    ///
22766    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22767    pub async fn delete_route(
22768        &self,
22769        mut request: DeleteRouteRequest,
22770    ) -> ::core::result::Result<
22771        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22772        ::origincloud_core::Error,
22773    > {
22774        if request.request_id.is_empty() {
22775            request.request_id = ::origincloud_core::new_request_id();
22776        }
22777        let p0 = ::origincloud_core::path_value(
22778            "name",
22779            &request.name,
22780            "projects/*/regions/*/routeTables/*/routes/*",
22781        )?;
22782        let query = ::origincloud_core::query(&request, &["name"])?;
22783        let call = ::origincloud_core::Request::new(
22784                ::origincloud_core::Method::DELETE,
22785                format!("/v1beta1/{p0}"),
22786            )
22787            .with_query(query)
22788            .idempotent();
22789        let operation = self.service.call(call).await?;
22790        Ok(
22791            ::origincloud_core::Operation::new(
22792                self.service.clone(),
22793                operation,
22794                "google.protobuf.Empty",
22795            ),
22796        )
22797    }
22798}
22799/// Calls `RouteTableService`.
22800///
22801/// Route tables: where a subnet's traffic leaves the VPC. A table holds
22802/// routes (`RouteService`), and applies to the subnets that a route table
22803/// association names it for (`RouteTableAssociationService`).
22804#[derive(Clone, Debug)]
22805pub struct RouteTableClient {
22806    service: ::origincloud_core::Service,
22807}
22808impl RouteTableClient {
22809    /// Returns a client of `RouteTableService` that sends its calls through `client`.
22810    pub fn new(client: &::origincloud_core::Client) -> Self {
22811        Self {
22812            service: client.service("network", true),
22813        }
22814    }
22815    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
22816    pub fn service(&self) -> &::origincloud_core::Service {
22817        &self.service
22818    }
22819    /// Returns a route table.
22820    pub async fn get_route_table(
22821        &self,
22822        request: GetRouteTableRequest,
22823    ) -> ::core::result::Result<RouteTable, ::origincloud_core::Error> {
22824        let p0 = ::origincloud_core::path_value(
22825            "name",
22826            &request.name,
22827            "projects/*/regions/*/routeTables/*",
22828        )?;
22829        let query = ::origincloud_core::query(&request, &["name"])?;
22830        let call = ::origincloud_core::Request::new(
22831                ::origincloud_core::Method::GET,
22832                format!("/v1beta1/{p0}"),
22833            )
22834            .with_query(query)
22835            .idempotent();
22836        self.service.call(call).await
22837    }
22838    /// Lists the route tables in a region, oldest first.
22839    pub async fn list_route_tables(
22840        &self,
22841        request: ListRouteTablesRequest,
22842    ) -> ::core::result::Result<ListRouteTablesResponse, ::origincloud_core::Error> {
22843        let p0 = ::origincloud_core::path_value(
22844            "parent",
22845            &request.parent,
22846            "projects/*/regions/*",
22847        )?;
22848        let query = ::origincloud_core::query(&request, &["parent"])?;
22849        let call = ::origincloud_core::Request::new(
22850                ::origincloud_core::Method::GET,
22851                format!("/v1beta1/{p0}/routeTables"),
22852            )
22853            .with_query(query)
22854            .idempotent();
22855        self.service.call(call).await
22856    }
22857    /// 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.
22858    pub fn all_route_tables(
22859        &self,
22860        request: ListRouteTablesRequest,
22861    ) -> ::origincloud_core::Pages<RouteTable> {
22862        let client = self.clone();
22863        ::origincloud_core::Pages::new(
22864            request,
22865            move |request: ListRouteTablesRequest| {
22866                let client = client.clone();
22867                async move {
22868                    let page = client.list_route_tables(request).await?;
22869                    Ok((page.route_tables, page.next_page_token))
22870                }
22871            },
22872            |request: &mut ListRouteTablesRequest, token: ::std::string::String| {
22873                request.page_token = token;
22874            },
22875        )
22876    }
22877    /// Creates a route table in a VPC, with the VPC's local routes and no
22878    /// other. The operation is done once the route table is recorded.
22879    ///
22880    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTable`] once the change is done.
22881    pub async fn create_route_table(
22882        &self,
22883        mut request: CreateRouteTableRequest,
22884    ) -> ::core::result::Result<
22885        ::origincloud_core::Operation<RouteTable>,
22886        ::origincloud_core::Error,
22887    > {
22888        if request.request_id.is_empty() {
22889            request.request_id = ::origincloud_core::new_request_id();
22890        }
22891        let p0 = ::origincloud_core::path_value(
22892            "parent",
22893            &request.parent,
22894            "projects/*/regions/*",
22895        )?;
22896        let body = ::origincloud_core::json_body(
22897            request.route_table.as_ref().unwrap_or(&::core::default::Default::default()),
22898        )?;
22899        let query = ::origincloud_core::query(&request, &["parent", "routeTable"])?;
22900        let call = ::origincloud_core::Request::new(
22901                ::origincloud_core::Method::POST,
22902                format!("/v1beta1/{p0}/routeTables"),
22903            )
22904            .with_body(body)
22905            .with_query(query)
22906            .idempotent();
22907        let operation = self.service.call(call).await?;
22908        Ok(
22909            ::origincloud_core::Operation::new(
22910                self.service.clone(),
22911                operation,
22912                "origincloud.network.v1beta1.RouteTable",
22913            ),
22914        )
22915    }
22916    /// Changes a route table's tags. The operation is done once the change is
22917    /// recorded.
22918    ///
22919    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTable`] once the change is done.
22920    pub async fn update_route_table(
22921        &self,
22922        mut request: UpdateRouteTableRequest,
22923    ) -> ::core::result::Result<
22924        ::origincloud_core::Operation<RouteTable>,
22925        ::origincloud_core::Error,
22926    > {
22927        if request.request_id.is_empty() {
22928            request.request_id = ::origincloud_core::new_request_id();
22929        }
22930        let p0 = ::origincloud_core::path_value(
22931            "routeTable.name",
22932            request.route_table.as_ref().map_or("", |m| m.name.as_str()),
22933            "projects/*/regions/*/routeTables/*",
22934        )?;
22935        let body = ::origincloud_core::json_body(
22936            request.route_table.as_ref().unwrap_or(&::core::default::Default::default()),
22937        )?;
22938        let query = ::origincloud_core::query(
22939            &request,
22940            &["routeTable.name", "routeTable"],
22941        )?;
22942        let call = ::origincloud_core::Request::new(
22943                ::origincloud_core::Method::PATCH,
22944                format!("/v1beta1/{p0}"),
22945            )
22946            .with_body(body)
22947            .with_query(query)
22948            .idempotent();
22949        let operation = self.service.call(call).await?;
22950        Ok(
22951            ::origincloud_core::Operation::new(
22952                self.service.clone(),
22953                operation,
22954                "origincloud.network.v1beta1.RouteTable",
22955            ),
22956        )
22957    }
22958    /// Deletes a route table with its routes. Refused for a main route table,
22959    /// which goes with its VPC, and while a route table association names
22960    /// the table. The operation is done once the change is recorded; the
22961    /// network applies it within seconds.
22962    ///
22963    /// It answers with an operation to wait on, which has no result: [`Operation::wait`](origincloud_core::Operation::wait) returns once the change is done.
22964    pub async fn delete_route_table(
22965        &self,
22966        mut request: DeleteRouteTableRequest,
22967    ) -> ::core::result::Result<
22968        ::origincloud_core::Operation<::origincloud_core::protobuf::Empty>,
22969        ::origincloud_core::Error,
22970    > {
22971        if request.request_id.is_empty() {
22972            request.request_id = ::origincloud_core::new_request_id();
22973        }
22974        let p0 = ::origincloud_core::path_value(
22975            "name",
22976            &request.name,
22977            "projects/*/regions/*/routeTables/*",
22978        )?;
22979        let query = ::origincloud_core::query(&request, &["name"])?;
22980        let call = ::origincloud_core::Request::new(
22981                ::origincloud_core::Method::DELETE,
22982                format!("/v1beta1/{p0}"),
22983            )
22984            .with_query(query)
22985            .idempotent();
22986        let operation = self.service.call(call).await?;
22987        Ok(
22988            ::origincloud_core::Operation::new(
22989                self.service.clone(),
22990                operation,
22991                "google.protobuf.Empty",
22992            ),
22993        )
22994    }
22995}
22996/// Calls `RouteTableAssociationService`.
22997///
22998/// Route table associations: which route table a subnet uses. A subnet has at
22999/// most one; with none it has no route out of its VPC and counts as a subnet
23000/// whose route table has no default route. Internet access is decided per VPC
23001/// and address family, so a subnet without a default route still reaches, and
23002/// is reached from, the internet through a floating IP or an IPv6 address
23003/// while another subnet of its VPC routes out; network ACL and security group
23004/// rules are what keep its traffic in. An
23005/// association's id is the id of the route table it names, so a client that
23006/// knows the subnet and the table names the association without listing. To
23007/// move a subnet to another table, delete its association and create
23008/// another.
23009#[derive(Clone, Debug)]
23010pub struct RouteTableAssociationClient {
23011    service: ::origincloud_core::Service,
23012}
23013impl RouteTableAssociationClient {
23014    /// Returns a client of `RouteTableAssociationService` that sends its calls through `client`.
23015    pub fn new(client: &::origincloud_core::Client) -> Self {
23016        Self {
23017            service: client.service("network", true),
23018        }
23019    }
23020    /// The endpoint the client sends its calls to, which also serves the operations its methods answer with.
23021    pub fn service(&self) -> &::origincloud_core::Service {
23022        &self.service
23023    }
23024    /// Returns a route table association.
23025    pub async fn get_route_table_association(
23026        &self,
23027        request: GetRouteTableAssociationRequest,
23028    ) -> ::core::result::Result<RouteTableAssociation, ::origincloud_core::Error> {
23029        let p0 = ::origincloud_core::path_value(
23030            "name",
23031            &request.name,
23032            "projects/*/zones/*/subnets/*/routeTableAssociations/*",
23033        )?;
23034        let query = ::origincloud_core::query(&request, &["name"])?;
23035        let call = ::origincloud_core::Request::new(
23036                ::origincloud_core::Method::GET,
23037                format!("/v1beta1/{p0}"),
23038            )
23039            .with_query(query)
23040            .idempotent();
23041        self.service.call(call).await
23042    }
23043    /// Lists a subnet's route table associations: none or one.
23044    pub async fn list_route_table_associations(
23045        &self,
23046        request: ListRouteTableAssociationsRequest,
23047    ) -> ::core::result::Result<
23048        ListRouteTableAssociationsResponse,
23049        ::origincloud_core::Error,
23050    > {
23051        let p0 = ::origincloud_core::path_value(
23052            "parent",
23053            &request.parent,
23054            "projects/*/zones/*/subnets/*",
23055        )?;
23056        let query = ::origincloud_core::query(&request, &["parent"])?;
23057        let call = ::origincloud_core::Request::new(
23058                ::origincloud_core::Method::GET,
23059                format!("/v1beta1/{p0}/routeTableAssociations"),
23060            )
23061            .with_query(query)
23062            .idempotent();
23063        self.service.call(call).await
23064    }
23065    /// 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.
23066    pub fn all_route_table_associations(
23067        &self,
23068        request: ListRouteTableAssociationsRequest,
23069    ) -> ::origincloud_core::Pages<RouteTableAssociation> {
23070        let client = self.clone();
23071        ::origincloud_core::Pages::new(
23072            request,
23073            move |request: ListRouteTableAssociationsRequest| {
23074                let client = client.clone();
23075                async move {
23076                    let page = client.list_route_table_associations(request).await?;
23077                    Ok((page.route_table_associations, page.next_page_token))
23078                }
23079            },
23080            |
23081                request: &mut ListRouteTableAssociationsRequest,
23082                token: ::std::string::String|
23083            request.page_token = token,
23084        )
23085    }
23086    /// Associates a route table with a subnet. Refused with
23087    /// `FAILED_PRECONDITION` when the subnet has a route table association. The operation is done
23088    /// once the change is recorded; the network applies it within seconds.
23089    ///
23090    /// It answers with an operation to wait on: [`Operation::wait`](origincloud_core::Operation::wait) returns the [`RouteTableAssociation`] once the change is done.
23091    pub async fn create_route_table_association(
23092        &self,
23093        mut request: CreateRouteTableAssociationRequest,
23094    ) -> ::core::result::Result<
23095        ::origincloud_core::Operation<RouteTableAssociation>,
23096        ::origincloud_core::Error,
23097    > {
23098        if request.request_id.is_empty() {
23099            request.request_id = ::origincloud_core::new_request_id();
23100        }
23101        let p0 = ::origincloud_core::path_value(
23102            "parent",
23103            &request.parent,
23104            "projects/*/zones/*/subnets/*",
23105        )?;
23106        let body = ::origincloud_core::json_body(
23107            request
23108                .route_table_association
23109                .as_ref()
23110                .unwrap_or(&::core::default::Default::default()),
23111        )?;
23112        let query = ::origincloud_core::query(
23113            &request,
23114            &["parent", "routeTableAssociation"],
23115        )?;
23116        let call = ::origincloud_core::Request::new(
23117                ::origincloud_core::Method::POST,
23118                format!("/v1beta1/{p0}/routeTableAssociations"),
23119            )
23120            .with_body(body)
23121            .with_query(query)
23122            .idempotent();
23123        let operation = self.service.call(call).await?;
23124        Ok(
23125            ::origincloud_core::Operation::new(
23126                self.service.clone(),
23127                operation,
23128                "origincloud.network.v1beta1.RouteTableAssociation",
23129            ),
23130        )
23131    }
23132    /// Removes a subnet's route table association. The subnet then has no
23133    /// route out of its VPC and counts as a subnet whose route table has no
23134    /// default route. 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 instances launched afterwards. The
23838    /// 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}